diff -Nru libgdiplus-4.0-2.10.9/aclocal.m4 libgdiplus-4.0-4.2.3+precise1/aclocal.m4 --- libgdiplus-4.0-2.10.9/aclocal.m4 2012-01-31 17:28:26.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/aclocal.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,9610 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# 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|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -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. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have 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_default([$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` - test "x$?" != "x0" && pkg_failed=yes ], - [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 - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[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])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[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 .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 10 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - diff -Nru libgdiplus-4.0-2.10.9/autogen.sh libgdiplus-4.0-4.2.3+precise1/autogen.sh --- libgdiplus-4.0-2.10.9/autogen.sh 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/autogen.sh 2016-04-15 10:11:13.000000000 +0000 @@ -0,0 +1,142 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. +# Ripped off from GNOME macros version + +DIE=0 + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +if [ -n "$MONO_PATH" ]; then + # from -> /mono/lib:/another/mono/lib + # to -> /mono /another/mono + for i in `echo ${MONO_PATH} | tr ":" " "`; do + i=`dirname ${i}` + if [ -n "{i}" -a -d "${i}/share/aclocal" ]; then + ACLOCAL_FLAGS="-I ${i}/share/aclocal $ACLOCAL_FLAGS" + fi + if [ -n "{i}" -a -d "${i}/bin" ]; then + PATH="${i}/bin:$PATH" + fi + done + export PATH +fi + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`autoconf' installed to compile Mono." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +if [ -z "$LIBTOOLIZE" ]; then + LIBTOOLIZE=`which glibtoolize 2>/dev/null` + if [ ! -x "$LIBTOOLIZE" ]; then + LIBTOOLIZE=`which libtoolize` + fi +fi + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { + ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`libtool' installed to compile Mono." + echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed to compile Mono." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`automake' installed to compile Mono." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing \`aclocal'. The version of \`automake'" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test x$NOCONFIGURE = x && test -z "$*"; then + echo "**Warning**: I am going to run \`configure' with no arguments." + echo "If you wish to pass any to it, please specify them on the" + echo \`$0\'" command line." + echo +fi + +case $CC in +xlc ) + am_opt=--include-deps;; +esac + + +if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then + if test -z "$NO_LIBTOOLIZE" ; then + echo "Running libtoolize..." + $LIBTOOLIZE --force --copy + fi +fi + +echo "Running aclocal $ACLOCAL_FLAGS ..." +aclocal $ACLOCAL_FLAGS || { + echo + echo "**Error**: aclocal failed. This may mean that you have not" + echo "installed all of the packages you need, or you may need to" + echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\"" + echo "for the prefix where you installed the packages whose" + echo "macros were not found" + exit 1 +} + +if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then + echo "Running autoheader..." + autoheader || { echo "**Error**: autoheader failed."; exit 1; } +fi + +echo "Running automake --gnu $am_opt ..." +automake --add-missing --gnu $am_opt || + { echo "**Error**: automake failed."; exit 1; } +echo "Running autoconf ..." +autoconf || { echo "**Error**: autoconf failed."; exit 1; } + +CONF_OPTIONS="" +until [ -z "$1" ] +do + CONF_OPTIONS="$CONF_OPTIONS $1" + shift +done + +conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure $conf_flags $CONF_OPTIONS ... + $srcdir/configure $conf_flags $CONF_OPTIONS \ + && echo Now type \`make\' to compile $PKG_NAME || exit 1 +else + echo Skipping configure process. +fi diff -Nru libgdiplus-4.0-2.10.9/cairo/acinclude.m4 libgdiplus-4.0-4.2.3+precise1/cairo/acinclude.m4 --- libgdiplus-4.0-2.10.9/cairo/acinclude.m4 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/acinclude.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ -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 diff -Nru libgdiplus-4.0-2.10.9/cairo/aclocal.m4 libgdiplus-4.0-4.2.3+precise1/cairo/aclocal.m4 --- libgdiplus-4.0-2.10.9/cairo/aclocal.m4 2011-12-02 17:32:02.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/aclocal.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,9559 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# 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|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -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. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have 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_default([$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` - test "x$?" != "x0" && pkg_failed=yes ], - [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 - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[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])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[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 .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 10 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([acinclude.m4]) diff -Nru libgdiplus-4.0-2.10.9/cairo/AUTHORS libgdiplus-4.0-4.2.3+precise1/cairo/AUTHORS --- libgdiplus-4.0-2.10.9/cairo/AUTHORS 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -Josh Aas Memory leak fix for quartz backend -Daniel Amelang Many (magic) floating-point optimizations -Shawn T. Amundson Build fix -Olivier Andrieu PNG backend -Peter Dennis Bartok Bug fix for clipping -Dave Beckett Build fixes, Debian packaging -Christian Biesinger BeOS backend -Billy Biggs Pixman code merge. Optimization. Fixes for subtle rendering bugs. -Hans Breuer win32 bug fixes, build fixes, and improvements -Brian Cameron Flag bug in Sun's X server -Damien Carbery Build fixes -Andrew Chant Adding const where needed -Steve Chaplin Bug fixes for PNG reading -Tomasz Cholewo Bug fixes -Manu Cornet SVG build fix -Frederic Crozat Fix test suite for OPD platforms (IA64 or PPC64) -Radek Doulík Bug report and test case -John Ehresman Build fixes for win32 -John Ellson First font/glyph extents functions -Michael Emmel DirectFB backend -Miklós Erdélyi Fix typo leading to a crash -Behdad Esfahbod Huge piles of bug fixes, improvements, and general maintenance -Brian Ewins ATSUI maintenance (first success at making it really work) -Bertram Felgenhauer Fixes for subtle arithmetic errors -Bdale Garbee Provided essential support for cairo achitecture sessions -Jens Granseuer Fixes to generate proper compiler flags -Laxmi Harikumar Build fix -J. Ali Harlow win32 backend updates -Mathias Hasselmann Significant reduction of calls to malloc -Richard Henderson "slim" macros for better shared libraries -James Henstridge Build fixes related to freetype -Graydon Hoare Support for non-render X server, first real text support -Thomas Hunger Initial version of cairo_in_stroke/fill -Kristian Høgsberg PDF backend, PS backend with meta-surfaces -Amaury Jacquot Documentation review, appplication testing -Adrian Johnson PDF backend improvement -Michael Johnson Bug fix for pre-C99 compilers -Jonathon Jongsma Fix documentation typos -Øyvind Kolås Bug fixes. Better default values. -Martin Kretzschmar Arithmetic fix for 64-bit architectures -Mathieu Lacage several bug/typo fixes -Dominic Lachowicz PDF conformance fix, fix image surface to zero out contents -Alexander Larsson Profiling and performance fixes. -Tor Lillqvist win32 build fixes, build scripts -Jinghua Luo Add bitmap glyph transformation, many freetype and glitz fixes -Luke-Jr Build fix for cross-compiling -Kjartan Maraas Several fixes for sparse, lots of debug help for multi-thread bugs -Jordi Mas Bug fix for cairo_show_text -Nicholas Miell Fixes for linking bugs on AMD64 -Eugeniy Meshcheryakov PS/PDF font subsetting improvements -Zakharov Mikhail Build fix for HP-UX -Christopher (Monty) Montgomery Performnace fix (subimage_copy), multi-thread testing -Tim Mooney Fix test suite to compile with Solaris compiler -Jeff Muizelaar Patient, painful, pixman code merge. Many fixes for intricacies of dashing. -Yevgen Muntyan win32 build fix -Declan Naughton Fix documentation typos -Peter Nilsson Glitz backend -Henning Noren Fix memory leak -Geoff Norton Build fixes -Robert O'Callahan Const-correctness fixes, several new API functions for completeness (and to help mozilla) -Ian Osgood XCB backend maintenance -Benjamin Otte Refinements to cairo/perf timing -Mike Owens Bug fixes -Emmanuel Pacaud SVG backend -Keith Packard Original concept, polygon tessellation, dashing, font metrics rewrite -Stuart Parmenter Original GDI+ backend, win32 fixes -Alfred Peng Fixes for Sun compilers and for a memory leak -Christof Petig Build fixes related to freetype -Joonas Pihlaja Huge improvements to the tessellator performance -Mart Raudsepp Build fixes -David Reveman New pattern API, glitz backend -Calum Robinson Quartz backend -Pavel Roskin Several cleanups to eliminate warnings -Tim Rowley Quartz/ATSUI fixes, X server workarounds, win32 glyph path support, test case to expose gradient regression -Soeren Sandmann Lots of MMX love for pixman compositing -Torsten Schönfeld Build fixes -Jamey Sharp Surface/font backend virtualization, XCB backend -Jason Dorje Short Build fixes and bug fixes -Jeff Smith Fixes for intricacies of stroking code -Travis Spencer XCB backend fix -Bill Spitzak Build fix to find Xrender.h without xrender.pc -Zhe Su Add support for fontconfig's embeddedbitmap option -Owen Taylor Font rewrite, documentation, win32 backend -Alp Toker Fix several code/comment typos -Malcolm Tredinnick Documentation fixes -David Turner Optimize gradient calculations -Kalle Vahlman Allow perf reports to be compared across different platforms -Sasha Vasko Build fix to compile without xlib backend -Vladimir Vukicevic Quartz backend rewrite, win32/quartz maintenance -Jonathan Watt win32 fixes -Peter Weilbacher OS/2 backend -Dan Williams Implemnt MMX function to help OLPC -Chris Wilson Large-scale robustness improvements, (warn_unsed_result and malloc failure injection) -Carl Worth Original library, support for paths, images -Richard D. Worth Build fixes for cygwin -Kent Worsnop Fix PDF dashing bug -Dave Yeo Build fix for win32 - -(please let us know if we have missed anyone) diff -Nru libgdiplus-4.0-2.10.9/cairo/BIBLIOGRAPHY libgdiplus-4.0-4.2.3+precise1/cairo/BIBLIOGRAPHY --- libgdiplus-4.0-2.10.9/cairo/BIBLIOGRAPHY 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/BIBLIOGRAPHY 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -Here's an effort to document some of the academic work that was -referenced during the implementation of cairo. It is presented in the -context of operations as they would be performed by either -cairo_stroke() or cairo_fill(): - -Given a Bézier path, approximate it with line segments: - - The deCasteljau algorithm - "Outillages methodes calcul", P de Casteljau, technical - report, - Andre Citroen Automobiles SA, Paris, 1959 - - That technical report might be "hard" to find, but fortunately - this algorithm will be described in any reasonable textbook on - computational geometry. Two that have been recommended by - cairo contributors are: - - "Computational Geometry, Algorithms and Applications", M. de - Berg, M. van Kreveld, M. Overmars, M. Schwarzkopf; - Springer-Verlag, ISBN: 3-540-65620-0. - - "Computational Geometry in C (Second Edition)", Joseph - O'Rourke, Cambridge University Press, ISBN 0521640105. - -Then, if stroking, construct a polygonal representation of the pen -approximating a circle (if filling skip three steps): - - "Good approximation of circles by curvature-continuous Bezier - curves", Tor Dokken and Morten Daehlen, Computer Aided - Geometric Design 8 (1990) 22-41. - -Add points to that pen based on the initial/final path faces and take -the convex hull: - - Convex hull algorithm - - [Again, see your favorite computational geometry - textbook. Should cite the name of the algorithm cairo uses - here, if it has a name.] - -Now, "convolve" the "tracing" of the pen with the tracing of the path: - - "A Kinetic Framework for Computational Geometry", Leonidas - J. Guibas, Lyle Ramshaw, and Jorge Stolfi, Proceedings of the - 24th IEEE Annual Symposium on Foundations of Computer Science - (FOCS), November 1983, 100-111. - -The result of the convolution is a polygon that must be filled. A fill -operations begins here. We use a very conventional Bentley-Ottmann -pass for computing the intersections, informed by some hints on robust -implementation courtesy of John Hobby: - - John D. Hobby, Practical Segment Intersection with Finite - Precision Output, Computation Geometry Theory and - Applications, 13(4), 1999. - - http://cm.bell-labs.com/who/hobby/93_2-27.pdf - -Hobby's primary contribution in that paper is his "tolerance square" -algorithm for robustness against edges being "bent" due to restricting -intersection coordinates to the grid available by finite-precision -arithmetic. This is one algorithm we have not implemented yet. - -We use a data-structure called Skiplists in the our implementation -of Bentley-Ottmann: - - W. Pugh, Skip Lists: a Probabilistic Alternative to Balanced Trees, - Communications of the ACM, vol. 33, no. 6, pp.668-676, 1990. - - http://citeseer.ist.psu.edu/pugh90skip.html - -From the result of the intersection-finding pass, we are currently -computing a tessellation of trapezoids, (the exact manner is -undergoing some work right now with some important speedup), but we -may want to rasterize directly from those edges at some point. - -Given the set of tessellated trapezoids, we currently execute a -straightforward, (and slow), point-sampled rasterization, (and -currently with a near-pessimal regular 15x17 grid). - -We've now computed a mask which gets fed along with the source and -destination into cairo's fundamental rendering equation. The most -basic form of this equation is: - - destination = (source IN mask) OP destination - -with the restriction that no part of the destination outside the -current clip region is affected. In this equation, IN refers to the -Porter-Duff "in" operation, while OP refers to a any user-selected -Porter-Duff operator: - - T. Porter & T. Duff, Compositing Digital Images Computer - Graphics Volume 18, Number 3 July 1984 pp 253-259 - - http://keithp.com/~keithp/porterduff/p253-porter.pdf diff -Nru libgdiplus-4.0-2.10.9/cairo/BUGS libgdiplus-4.0-4.2.3+precise1/cairo/BUGS --- libgdiplus-4.0-2.10.9/cairo/BUGS 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/BUGS 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -If you find a bug in cairo we would love to hear about it. We're also -trying to make cairo better, and learning about the bugs that users -encounter is an essential part of that. So we really appreciate the -extra effort users put in to providing high-quality bug reports. - -There are two acceptable ways to report cairo bugs, and you can choose -which you prefer: - -1) Bugzilla bug tracking database: - - You can use the following web interface to report new bugs, follow - up on previous bug reports, and search for existing, known - bugs. Just use the "cairo" product: - - http://bugs.freedesktop.org - - It is necessary to go through a quick account creation process, - (with email address verification), in order to be able to report - new bugs in bugzilla. We apologize for any inconvenience that might - cause, and hope it won't prevent you from reporting bugs. - -2) Cairo mailing list: - - For people who cannot stand the bugzilla interface, you can just - send an email to cairo mailing list (cairo@cairographics.org). The - mailing list only allows posting from subscribers, so use the - following page for subscription instructions: - - http://cairographics.org/lists - - Again, we apologize for any inconvenience this subscription step - might cause, but we've found it necessary to require this in order - to enjoy spam-free discussions on the list. - - If you don't actually _want_ to be a subscriber to the mailing - list, but just want to be able to send a message, the easiest thing - to do is to go through the subscription process, and then use the - preferences page to disable message delivery to your address. - -Which of the above you use to report bugs depends on your own -preferences. Some people find just typing an email message much easier -than using the web-based forms on bugzilla. Others greatly prefer the -ability to check back on a specific bug entry in bugzilla without -having to ask on the mailing list if an issue has been resolved. - -Regardless of which method you use, here are some general tips that -will help you improve the quality of your bug report, (which will help -in getting the bug fixed sooner): - -1) Check to see if the bug has been reported already. It's pretty easy - to run a search or two against the cairo product in the - http://bugs.freedesktop.org bugzilla database. Another place to - look for known bugs is the cairo ROADMAP: - - http://cairographics.org/ROADMAP - - which shows a planned schedule of releases and which bug fixes are - being planned for each release. - -2) Provide an accurate description of the bug with detailed steps for - how we can reproduce the problem. - -3) If possible provide a minimal test case demonstrating the bug. A - great test case would be a minimal self-contained function in C or - python or whatever language you are using for cairo. The function - might accept nothing more than a cairo context, (cairo_t* in C). - -4) If you feel like being particularly helpful, you could craft this - minimal test case in the form necessary for cairo's test - suite. This isn't much more work than writing a minimal - function. Just look at the cairo/test/README file and imitate the - style of existing test cases. - - If you do submit a test case, be sure to include Copyright - information, (with the standard MIT licensing blurb if you want us - to include your test in the test case). Also, including a reference - image showing the expected result will be extremely useful. - -5) Finally, the best bug report also comes attached with a patch to - cairo to fix the bug. So send this too if you have it! Otherwise, - don't worry about it and we'll try to fix cairo when we can. - -Thanks, and have fun with cairo! - --Carl diff -Nru libgdiplus-4.0-2.10.9/cairo/ChangeLog libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog --- libgdiplus-4.0-2.10.9/cairo/ChangeLog 2012-01-31 17:28:35.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,24104 +0,0 @@ -2008-11-05 Marek Habersack - - * configure.in: always call AC_PROG_CXX, fixes compilation on - OpenSuSE 11.1b4 - -commit 08a804806355d99d7968976d6afb98bbc0f2613d -Author: Carl Worth -Date: Fri Apr 11 14:33:12 2008 -0700 - - Increment version to 1.6.4 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit a96176e12fa99b293453fa0321b1dfa4fd242917 -Author: Carl Worth -Date: Fri Apr 11 14:32:37 2008 -0700 - - NEWS: Add notes for cairo 1.6.4 - - NEWS | 29 +++++++++++++++++++++++++++++ - 1 files changed, 29 insertions(+), 0 deletions(-) - -commit 32e576382bc08ffaf98ebfc11c96e1453c437bbe -Author: Carl Worth -Date: Fri Apr 11 14:13:03 2008 -0700 - - Prevent cairo from being linked unnecessarilly with g++ - - The beos backend involves a source file written in C++. - Apparently, automake sees the conditional inclusion of - that source file and insists on doing the final link of - cairo with g++ even though that file isn't being compiled - at all. - - We definitely don't want that as it makes libcairo link - and depend on libstdc++ unnecessarily, (which can break - distribution packaging when not expecting it, etc.). - - src/Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 8f1c8d4b26d6da11101c51ef388d1dcc7177cfb4 -Author: Carl Worth -Date: Fri Apr 11 13:48:38 2008 -0700 - - Revert "[xlib] Add locking around GC cache." - - This reverts commit 9cfd82e87b60c0d65e9cafda026cb9a498874575. - - The fix was broken as it introduced crashes by calling - XSetClipMask with a NULL GC, (basically a reintroduction - of the bug originally fixed here: - - 7802de6d5edaf998c98b141870dc2c6b4c0f3e91 - - Let's revert for sake of the release, and fix this correctly - on master. - - src/cairo-xlib-private.h | 1 - - src/cairo-xlib-screen.c | 31 ++++++++++--------------------- - 2 files changed, 10 insertions(+), 22 deletions(-) - -commit a5770c3335fccd1591f2cd58ab950a6eba77f271 -Author: Carl Worth -Date: Fri Apr 11 10:05:18 2008 -0700 - - Increment version to 1.6.3 after the 1.6.2 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5bc6fd71398f8aa902fcffe2da5d1e70fb94aa8a -Author: Carl Worth -Date: Fri Apr 11 09:52:28 2008 -0700 - - Increment version to 1.6.2 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0c32497c3447d6d02d45a14ff4c400b6d1ea37da -Author: Carl Worth -Date: Fri Apr 11 09:50:53 2008 -0700 - - NEWS: Add notes for 1.6.2 release - - NEWS | 35 +++++++++++++++++++++++++++++++++++ - 1 files changed, 35 insertions(+), 0 deletions(-) - -commit 9cfd82e87b60c0d65e9cafda026cb9a498874575 -Author: Chris Wilson -Date: Thu Apr 10 14:49:47 2008 +0100 - - [xlib] Add locking around GC cache. - - The per-screen cached of most-recently freed GCs lacks suitable locking - for it to be threadsafe. - (cherry picked from commit dc714106e156cb7901e376c0935922446ae9bcdf) - - src/cairo-xlib-private.h | 1 + - src/cairo-xlib-screen.c | 31 +++++++++++++++++++++---------- - 2 files changed, 22 insertions(+), 10 deletions(-) - -commit cf057c1e8603014033c079189369e91aecac2adf -Author: Adrian Johnson -Date: Fri Apr 11 21:42:19 2008 +0930 - - PS: Fix inefficient implementation of Tm/Td operators that was crashing printers - - The Td and Tm operator emulation were setting the font matrix like this: - - /some_font [xx yx xy yy x0 y0] selectfont - - where [xx yx xy yy] is the font matrix and [x0 y0] is the position of - the first glyph to be drawn. This seemed to be the easiest way to - emulate the Tm operator since the six arguments to Tm required by PDF - are xx,yx,xy,yy,x0,y0. - - Before the switch to pdf-operators the font matrix was set like this: - - /somefont [xx yx xy yy 0 0] selectfont x0 y0 moveto - - The selectfont operator is equivalent to calling findfont, makefont, - and setfont. The makefont operator creates a new font dictionary for - specified font that contains the specified font matrix. The - description of the makefont operator in the PostScript Language - Reference Manual states: - - "The interpreter keeps track of font dictionaries recently created - by makefont. Calling makefont multiple times with the same font and - matrix will usually return the same font rather than create a new - one." - - So the emulation of Tm and Td was creating a new font dictionary every - time a text string was displayed due to the change in the translation - components of the font matrix. Previously the font dictionary was - re-used as with the translation components of the matrix set to zero, - the font matrix did not change frequently. - - Some printers did not handle well the frequent creation a font - dictionary every time a few glyphs were displayed. - - Fix this by ensuring the translation components of the font matrix - used in the emulation of Tm and Td operators is always set to - zero. Use moveto instead for the translation components. - (cherry picked from commit c5814d2aa3cb68a13bc9cc8b6a47f660febcad71) - - src/cairo-ps-surface.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit eac9251d9a78e8d7bf00098b367a5176ed7dbce6 -Author: Carl Worth -Date: Thu Apr 10 18:02:59 2008 -0700 - - Increment version to 1.6.1 after 1.6.0 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d6263bec89bcd1565fb0f56a9840cd6f7761097f -Author: Carl Worth -Date: Thu Apr 10 17:34:41 2008 -0700 - - Increment cairo version to 1.6.0 - - configure.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 709805c26f567b7fa90d04e701ccbf1cccc34da7 -Author: Carl Worth -Date: Thu Apr 10 17:33:51 2008 -0700 - - NEWS: Add notes for 1.6.0 release - - NEWS | 198 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 190 insertions(+), 8 deletions(-) - -commit aadbaf7d990d0d5cd7c25cc856dbcfcc357b44f1 -Author: Carl Worth -Date: Tue Apr 8 02:45:56 2008 -0700 - - Increment version to 1.5.20 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8f123d035af0c02dc0a668a073410756edafbdd6 -Author: Carl Worth -Date: Tue Apr 8 02:45:31 2008 -0700 - - NEWS: Add notes for 1.5.20 snapshot - - NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 47 insertions(+), 0 deletions(-) - -commit f7dea9a8d3da7f57286db4b1b6300726483a0d76 -Author: Carl Worth -Date: Tue Apr 8 02:28:52 2008 -0700 - - Fix distcheck by renaming large-source-ref.c to large-source-ref.png (oops!) - - test/large-source-ref.c | Bin 137 -> 0 bytes - test/large-source-ref.png | Bin 0 -> 137 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit c26a7de9707e26d0552b0fedcd4bf2e0ba6542b2 -Author: Carl Worth -Date: Tue Apr 8 01:54:27 2008 -0700 - - Prevent potentially infinite wandering through memeory in _cairo_hull_prev_valid - - It is possible for _cairo_hull_prev_valid to be called just once - right before the calling loop is going to terminate. In this - case we really don't want to walk off the beginning of the - array and start wandering. - - Thanks to Jonathan Watt for noticing this problem: - - https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21 - - src/cairo-hull.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit c19133eb9ab31bbdc7e82573033e513e9eb867f2 -Author: Carl Worth -Date: Tue Apr 8 01:34:37 2008 -0700 - - Revert "[test] Repeat tests using cairo_push_group()." - - This reverts commit 07122e64fa9529e7ba9323988a5af1d1e7c2c55f. - - The extra testing did find a pdf bug, and that should be fixed, - but the extra maintenance burden of running another iteration - of all tests does not seem justfied at all---particularly since - it looks like dozens of new reference images would be needed - for the svg backend. - - Also, the new "failures" of the image backend with this new - testing look like a misunderstanding of exactly what the new - testing is actually drawing. - - test/cairo-test.c | 119 +++++++--------------------------------------------- - 1 files changed, 16 insertions(+), 103 deletions(-) - -commit c1f7655f2fd5373a74d3fbf5977ebbd84e401e25 -Author: Carl Worth -Date: Tue Apr 8 00:40:58 2008 -0700 - - Check surface->status and finished in cairo_surface_write_to_png - - Without these checks, a user could hit an assertion failure - by passing a finished surface to cairo_surface_write_to_png. - Now we return a nice CAIRO_STATUS_SURFACE_FINISHED error in - that case instead. - - src/cairo-png.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 33c54ed240b319acb28ef370eef5188ad42a5737 -Author: Chris Wilson -Date: Mon Apr 7 22:14:04 2008 +0100 - - [test] Add large-source to exercise handling of massive images. - - This test exercises https://bugzilla.mozilla.org/show_bug.cgi?id=424333. - - The test is expected to fail due to issues with pixman, but cairo - should fail gracefully and neither crash nor cause XErrors. - - test/.gitignore | 1 + - test/Makefile.am | 3 + - test/large-source-ref.c | Bin 0 -> 137 bytes - test/large-source.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 113 insertions(+), 0 deletions(-) - -commit 4924d4d928666981f3e64bec685e8f90e524e62e -Author: Chris Wilson -Date: Mon Apr 7 23:48:36 2008 +0100 - - [cairo-xlib] Do not create surface with mismatching Visual and PictFormat. - - As identified by Vladimir Vukicevic, - _cairo_xlib_surface_create_similar_with_format() was erroneously passing - down the source Visual when creating a surface with a different - XRenderPictFormat. - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9aac5916bcb4a3e62194315b12961d97f193a585 -Author: Chris Wilson -Date: Mon Apr 7 23:42:47 2008 +0100 - - [test/xlib-surface] Check for mismatching Visuals and XRenderPictFormats - - Vladimir Vukicevic reported that surfaces were being created with - mismatching Visuals and XRenderPictFormats - and demonstated here. - - test/xlib-surface.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 63 insertions(+), 0 deletions(-) - -commit f6afba8f5453b8e3af9101fa2cde4c05a67f6d4b -Author: Chris Wilson -Date: Mon Apr 7 23:25:57 2008 +0100 - - [cairo-xlib] Create Pixmap using depth from xrender_format. - - Use the depth as specified by the xrender_format when creating the - pixmap (as opposed to a guess based on the cairo_format_t). - - src/cairo-xlib-surface.c | 21 ++------------------- - 1 files changed, 2 insertions(+), 19 deletions(-) - -commit 922fefdde4af28f9fc1e42fcba1b315980b01dc7 -Author: Chris Wilson -Date: Mon Apr 7 23:06:18 2008 +0100 - - [cairo-xlib] Handle missing RENDER during similar surface creation - - If the xserver doesn't support the RENDER extension or simply doesn't - have the matching PictFormat then xrender_format might be NULL. Check - and fallback in this case. - - src/cairo-xlib-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 07122e64fa9529e7ba9323988a5af1d1e7c2c55f -Author: Chris Wilson -Date: Mon Apr 7 22:00:51 2008 +0100 - - [test] Repeat tests using cairo_push_group(). - - Test surfaces using similar surfaces with both CONTENT_COLOR and - CONTENT_COLOR_ALPHA, if applicable. This seems justified by the apparent - bugs in the pdf backend when going from an ARGB32 similar surface to - a destination RGB24 surface as well as isolated bugs in the image - backend. - - The original goal was to try and trick the test suite into producing - a xlib surface with mismatching Visual/XRenderPictFormat. This succeeds, - although with a little bit of brute force in the xlib backend, but the - search to reproduce a BadMatch error fruitless. - - test/cairo-test.c | 119 +++++++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 103 insertions(+), 16 deletions(-) - -commit e04e4262386b8735d2ceabbc187405cace89dc80 -Author: Chris Wilson -Date: Mon Apr 7 10:56:38 2008 +0100 - - [test/get-xrender-format] Free static data on exit. - - Free the internal caches so that valgrind reports zero leaks. - - test/get-xrender-format.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit e57ef66fab7cb05b84175b3cfb5c032150cfa682 -Author: Chris Wilson -Date: Mon Apr 7 10:51:27 2008 +0100 - - [test/xlib-surface] Zero pixel buffers before use. - - As we only use RGB24 surface data the alpha channel is undefined, so - zero it to prevent valgrind warnings. - - test/xlib-surface.c | 24 ++++++++++++++++++++---- - 1 files changed, 20 insertions(+), 4 deletions(-) - -commit d0672e85ef120a4e3cd0dfcbdb717afbf9526f17 -Author: Chris Wilson -Date: Mon Apr 7 10:42:57 2008 +0100 - - [test/surface-source] Skip tests if we cannot create the source surface. - - Check that the test environment supports the desired source and avoid - triggering asserts in the test routines. - - test/glitz-surface-source.c | 15 ++++++++++----- - test/surface-source.c | 8 ++++++++ - 2 files changed, 18 insertions(+), 5 deletions(-) - -commit 056d3c853e6660db31ee4a50d0e990a6013aa703 -Author: Chris Wilson -Date: Mon Apr 7 10:35:04 2008 +0100 - - [test/stroke-image] Fix memleak. - - Release the temporary image surface after setting it as the source. - - test/stroke-image.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit e460e586d7d093c1e03052efa3bfb45a2d5cf6ef -Author: Carl Worth -Date: Mon Apr 7 22:02:44 2008 -0700 - - Update several pdf-specific reference images - - I don't know if we made minor changes to the pdf backend, or - if this was due to a poppler change, (we recently bumped the - poppler required for testing up to 0.8.0), but any way around - it these test results look just as good as the reference images - they are replacing. - - test/Makefile.am | 2 ++ - test/clip-operator-pdf-argb32-ref.png | Bin 11429 -> 11145 bytes - test/ft-text-vertical-layout-type1-pdf-ref.png | Bin 0 -> 3604 bytes - test/ft-text-vertical-layout-type3-pdf-ref.png | Bin 0 -> 3634 bytes - test/push-group-pdf-ref.png | Bin 2694 -> 2807 bytes - test/push-group-pdf-rgb24-ref.png | Bin 2611 -> 2714 bytes - 6 files changed, 2 insertions(+), 0 deletions(-) - -commit fdcd1445846b59d2ffd1780dd0f6d70169036ad4 -Author: Carl Worth -Date: Mon Apr 7 13:30:59 2008 -0700 - - Add filter-bilinear-extents to the XFAIL list - - This test case does show a bug, and we have lots of ideas on how - to fix the bug, but we want to wait until after the 1.6 release - before we fix it. See: - - http://bugs.freedesktop.org/show_bug.cgi?id=15349 - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 36246c51ba720713ebf93573da29b098e87f0bd0 -Author: Carl Worth -Date: Mon Apr 7 12:10:24 2008 -0700 - - Revert "_cairo_pattern_get_extents: Fix to allow for expansion based on filter" - - This reverts commit 731e121c802a7b1c3429d1bde7a93bc471d70880. - - This commit introduced various problems, (some likely noticeable - in the test suite, and others perhaps not). For some details, see - the latest comments in the original bug report leading to the - fix now being reverted: - - http://bugs.freedesktop.org/show_bug.cgi?id=15349 - - src/cairo-pattern.c | 22 ---------------------- - 1 files changed, 0 insertions(+), 22 deletions(-) - -commit c88adb6aee650c8c544b212f539bd5da9ed88734 -Author: Carl Worth -Date: Mon Apr 7 16:09:03 2008 -0700 - - Add svg-specific reference images for smask and smask-mask - - The most recent change for the mask_id allocation fixes these - two test, (it fixes mask-image-mask as well, but it didn't need - a new reference image). - - test/Makefile.am | 2 ++ - test/smask-mask-svg-ref.png | Bin 0 -> 2529 bytes - test/smask-svg-ref.png | Bin 0 -> 3634 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit 164e9c195c16fbed08539b859a06cc6f042fb5d9 -Author: Carl Worth -Date: Mon Apr 7 15:50:22 2008 -0700 - - SVG: Fix generation of mask_id identifiers - - In tests such as smask-mask (and others) the cairo_mask operation - is used in the construction of a mask. In this case, the single - document->mask_id value was being incremented at inappropriate - times. - - We fix this by adding a new _cairo_svg_document_allocate_mask_id - that returns the current value and increments it. That way, - callers can hold onto this reliable value for the desired lifetime - that the code needs the identifier. - - src/cairo-svg-surface.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) - -commit 8aa306ec08dcf0ae8803cdb1bda0fb31658f9e83 -Author: Carl Worth -Date: Mon Apr 7 14:17:40 2008 -0700 - - Add svg-specific reference images for smask-fill, smask-paint, and smask-text tests - - test/Makefile.am | 3 +++ - test/smask-fill-svg-ref.png | Bin 0 -> 1166 bytes - test/smask-paint-svg-ref.png | Bin 0 -> 2612 bytes - test/smask-text-svg-ref.png | Bin 0 -> 1886 bytes - 4 files changed, 3 insertions(+), 0 deletions(-) - -commit 3d86023281d7d18ad72be85ad8b53c29f20dfc7e -Author: Carl Worth -Date: Mon Apr 7 14:09:32 2008 -0700 - - Add ps-specific reference images for smask and smask-text tests - - test/Makefile.am | 2 ++ - test/smask-ps-ref.png | Bin 0 -> 3669 bytes - test/smask-text-ps-ref.png | Bin 0 -> 2023 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit f2a94c84a160f205ee72cc0c538a556d7d611e7b -Author: Carl Worth -Date: Mon Apr 7 13:03:58 2008 -0700 - - Add underscore prefix to private _cairo_pdf_surface_set_size_internal - - src/cairo-pdf-surface.c | 48 +++++++++++++++++++++++----------------------- - 1 files changed, 24 insertions(+), 24 deletions(-) - -commit 3d22902fa37623a56dee9e4a20d0dc215deabd72 -Author: Adrian Johnson -Date: Sun Apr 6 19:29:25 2008 +0930 - - Add PDF ref images for the smask tests - - These tests render correctly in acroread 8.1. - - test/Makefile.am | 7 +++++++ - test/smask-fill-pdf-ref.png | Bin 0 -> 1075 bytes - test/smask-image-mask-pdf-ref.png | Bin 0 -> 421 bytes - test/smask-mask-pdf-ref.png | Bin 0 -> 3731 bytes - test/smask-paint-pdf-ref.png | Bin 0 -> 3800 bytes - test/smask-pdf-ref.png | Bin 0 -> 3800 bytes - test/smask-stroke-pdf-ref.png | Bin 0 -> 449 bytes - test/smask-text-pdf-ref.png | Bin 0 -> 1806 bytes - 8 files changed, 7 insertions(+), 0 deletions(-) - -commit 688fbc24c38119a505e54a8a2fd0e71e988bf969 -Author: Adrian Johnson -Date: Sun Apr 6 19:04:27 2008 +0930 - - PDF: Add a function for changing the surface size - - The smask-fill test was failing for PDF output because in some places - where the surface size is changed (eg when emitting patterns or - smasks) the cairo_to_pdf matrix was not updated. - - Fix this by adding a function to handle the surface size change and - replace all the duplicated code for changing surface size with a call - to this function. - - src/cairo-pdf-surface.c | 69 ++++++++++++++++++++++------------------------ - 1 files changed, 33 insertions(+), 36 deletions(-) - -commit 6e5e852f739b63f0325927c70e4d4456c60d0ba9 -Author: Carl Worth -Date: Sun Apr 6 03:25:58 2008 -0700 - - Increment cairo version to 1.5.19 after the 1.5.18 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6d6c8aa643603c2b5fd7baedc897d4698ba8bafb -Author: Carl Worth -Date: Sun Apr 6 03:11:04 2008 -0700 - - Increment cairo version to 1.5.18 and library versioning to 19:1:17 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 44cd51ada62f831e4fddd363797b3ad4568fb443 -Author: Carl Worth -Date: Sun Apr 6 03:10:07 2008 -0700 - - NEWS: Add notes for 1.5.18 snapshot - - NEWS | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 111 insertions(+), 0 deletions(-) - -commit 3f5ce00e99bcbb17594441301ad0845007d0aedf -Author: Carl Worth -Date: Sun Apr 6 03:09:45 2008 -0700 - - Add missing parens() to function name in gtk-doc comment - - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c08e2ba974ad7f5d9343d0d815a00a8e9ad51f81 -Author: Carl Worth -Date: Sun Apr 6 02:56:19 2008 -0700 - - Document default opaque black source pattern. - - src/cairo.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit e07e1b7bbbac59ae2ea25ed762c017b477e22cc4 -Author: Carl Worth -Date: Sun Apr 6 02:47:32 2008 -0700 - - Document many more defaults - - Including: fallback_resolution, fill_rule, line_cap, line_join, - miter_limit, font_face, font_size, and operator. - - src/cairo-surface.c | 3 +++ - src/cairo.c | 30 ++++++++++++++++++++++++++---- - src/cairo.h | 10 +++++++++- - 3 files changed, 38 insertions(+), 5 deletions(-) - -commit a55669c325c341fa6175a193cb0d6fa30b8247c9 -Author: Carl Worth -Date: Sun Apr 6 02:17:33 2008 -0700 - - Document toy nature of cairo_select_font_face - - src/cairo.c | 32 ++++++++++++++++++++++++++------ - 1 files changed, 26 insertions(+), 6 deletions(-) - -commit d1fe0084405a49f33d4ab6d80e9398e281483900 -Author: Carl Worth -Date: Sun Apr 6 02:17:09 2008 -0700 - - Document default extend modes - - src/cairo-pattern.c | 3 +++ - src/cairo.h | 9 +++++++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit abe6f9541eb1fe10c063540dbffe3499ec8a9d3e -Author: Carl Worth -Date: Sun Apr 6 02:01:04 2008 -0700 - - Document EXTEND_REFLECT and EXTEND_PAD as implemented for surfaces since 1.6 - - src/cairo.h | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 657b348e0172f3b5f2c91a406c2eca039a790ca1 -Author: Carl Worth -Date: Sun Apr 6 01:57:45 2008 -0700 - - README: Update dependencies - - README | 139 +++++++++++++++++++++++++++++++++++++++++----------------------- - 1 files changed, 89 insertions(+), 50 deletions(-) - -commit c642a401959c183de2afa3fba2c4206aa0fdbc0c -Author: Carl Worth -Date: Sun Apr 6 01:13:17 2008 -0700 - - Revert "[README] Remove the Dependencies section as it falls out of date easily" - - This reverts commit 5f38e215ed4ec930492ee373db37a767d85a6ee8. - - It's true that the dependencies can fall out of date, but it's really - unkind to not provide users with this information. I think we can - compromise by committing to update this information before major - releases. - - README | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 89 insertions(+), 0 deletions(-) - -commit b61d1b01e94b3d8daa288b8d5d183f093d989582 -Author: Carl Worth -Date: Sun Apr 6 01:07:32 2008 -0700 - - Change default filter from BEST to GOOD - - Right now the two filters are implemented identically, so there's - no real change for now. But in the future, it's conceivable that an - X server could implement some crazy, high-quality filter for BEST - without regard to performance, (since that's what BEST means). - - Meanwhile, GOOD actually captures what we want by default which is - a good mix of both quality and performance. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 14b056945cef7e016ec07c87725348f3f0649d9f -Author: Carl Worth -Date: Sun Apr 6 00:34:59 2008 -0700 - - Update smask-text reference image - - It appears the reference image wasn't generated on a gold-standard - machine, (and yes, the gold standard is, *ahem* whatever happens - to match what Carl's machine does---eventually we'll make the test- - based tests less picky about system configuration like this). - - test/smask-text-ref.png | Bin 1796 -> 1739 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 3a89bf4a1dd37852ca603c2ba472de73959dc69a -Author: Chris Wilson -Date: Sat Apr 5 22:01:24 2008 +0100 - - [test] Remove some redundant evals from the summary. - - In a couple of places we used eval to execute a simple assignment - - complete overkill. - - test/Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit fc0a2988cdcbc54292377b00fe9a82b4a7407918 -Author: Chris Wilson -Date: Sat Apr 5 21:58:10 2008 +0100 - - [test] Disable jobserver with make check. - - make -j check has the unfortunate side-effect of performing the summary - before the TESTS have completed, both hiding in the stream of test - output and making it useless. Forcibly disable the jobserver so that the - summary is always last at the expense of not compiling the tests in parallel. - - test/Makefile.am | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit ae6fbe9e6e153a917f3ae8d733e88303e2816b2b -Author: Adrian Johnson -Date: Sun Apr 6 01:08:31 2008 +1030 - - scaled-font-subsets: Special case .notdef in a new subset - - If the .notdef glyph is the first glyph in the subset to be mapped in - scaled font, we do not know if the subset will scaled or unscaled. We - can put it in the unscaled subset as Type1-fallback will embded an - empty glyph if it can not get the path. - - src/cairo-scaled-font-subsets.c | 20 +++++++++++++++----- - 1 files changed, 15 insertions(+), 5 deletions(-) - -commit 0d5902b7167f8cb4bfc96fd813003cd220441151 -Author: Adrian Johnson -Date: Sat Apr 5 23:33:29 2008 +1030 - - Type1-fallback: Use correct glyph metrics for .notdef glyph - - Bug 15348 references the following PDF that was printing incorrectly - when running through poppler and cairo to generate PostScript. - - http://launchpadlibrarian.net/12921700/UbuntuDesktop.pdf - - The PostScript output had too much space between each word causing - strings of glyphs printed with the TJ operator to overlap. - - The original PDF file contains an CFF font with CID Identity-H - encoding. The PDF file is using character code 0 (glyph 0 due to - Identity-H encoding) as a space character. The CFF specification - defines glyph 0 to be the .notdef glyph. - - The PS backend subsets CFF fonts as a Type1-fallback - font. Type1-fallback creates it's own empty .notdef glyph with an - arbitrary glyph advance of 500. The problem here is the TJ operator - used to output the glyphs depends on the glyph advance being - correct. pdf-operators.c uses the glyph advance returned by - _scaled_glyph_init(). However the PostScript interpreter sees the - glyph advance of 500 for .notdef. This problem does not occur when - generating PDF as the PDF font dictionary contains an list of glyph - advances that override the font metrics. - - Fix this by making Type1-fallback not treat .notdef as special and to - create it the path and metrics obtained from _scaled_glyph_init(). As - a special case, make it not fail if _scaled_glyph_init() is unable to - return a path for .notdef. This was probably the reason Type1-fallback - previously created it's own .notdef glyph as calling - _scaled_glyph_init(_GLYPH_INFO_PATH) for glyph 0 returns - CAIRO_INT_STATUS_UNSUPPORTED for some fonts. - - This ensures the Type1-fallback font metrics match the metrics used - by pdf-operators.c to position the glyphs. This also results in the - removal of some duplicated code. - - src/cairo-type1-fallback.c | 92 ++++++++++++++------------------------------ - 1 files changed, 29 insertions(+), 63 deletions(-) - -commit 03d2b098ff245ff6724b1d83a121f5ce9dcd0b51 -Author: Adrian Johnson -Date: Sat Apr 5 21:15:15 2008 +1030 - - Type1-fallback: Use correct glyph advance in Type 1 charstrings - - 5050c55f93af fixed type1-fallback to use the glyph advance instead of - glyph width in the stored glyph metrics in the font. However it did - not fix the same bug in Type 2 charstrings (used by CFF fallback in - PDF). This problem was not noticed since the glyph widths in the PDF - font dictionary overrides these values. - - Fix this in case any software reading cairo PDFs uses these values. - - src/cairo-type1-fallback.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 40cee8c57879d37d77c5a93de8f7bdef28851923 -Author: Adrian Johnson -Date: Sat Apr 5 20:53:39 2008 +1030 - - Add assert to scaled_glyph_lookup in scaled-font-subsets - - If _cairo_scaled_glyph_lookup() returns CAIRO_INT_STATUS_UNSUPPORTED - it will be caught by the ASSERT_NOT_REACHED in - _emit_unscaled_font_subset in PS/PDF. It is more useful to catch this - closer to the source. - - src/cairo-scaled-font-subsets.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 93536bf3ac251d17c4d8630cad93c37b0d4a8326 -Author: Chris Wilson -Date: Sat Apr 5 09:31:22 2008 +0100 - - [test] Summarise failures per backend. - - Enhance the test failure summary to list the tests that failed per - backend. - - test/Makefile.am | 12 ++++++++++-- - 1 files changed, 10 insertions(+), 2 deletions(-) - -commit 731e121c802a7b1c3429d1bde7a93bc471d70880 -Author: Carl Worth -Date: Fri Apr 4 19:00:28 2008 -0700 - - _cairo_pattern_get_extents: Fix to allow for expansion based on filter - - This fixes the filter-bilinear-extents test case and the - related bug entry: - - bad clipping with EXTEND_NONE - http://bugs.freedesktop.org/show_bug.cgi?id=15349 - - Though there are still differences in the PDF and PostScript - backends, (primarily because we can't capture cairo's filter - modes in those file formats). - - src/cairo-pattern.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) - -commit 04608952e2efb9bffaa131ab39780c3e1a7430ba -Author: Carl Worth -Date: Fri Apr 4 18:56:38 2008 -0700 - - Replace open-coded transformation with a call to _cairo_matrix_transform_bounding_box - - It's a wonderful feeiling to remove duplicate code. - - src/cairo-pattern.c | 61 ++++++++++++++++++++++---------------------------- - 1 files changed, 27 insertions(+), 34 deletions(-) - -commit 89567f9278c002ac5e4e25ddccec88b1b1eea420 -Author: Carl Worth -Date: Fri Apr 4 18:28:23 2008 -0700 - - Add new filter-bilinear-extents test - - This test exercises code that computes the extents of a surface - pattern with CAIRO_FILTER_BILINEAR, (where the filtering - effectively increases the extents of the pattern). - - The original bug was reported by Owen Taylor here: - - bad clipping with EXTEND_NONE - http://bugs.freedesktop.org/show_bug.cgi?id=15349 - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/filter-bilinear-extents-ref.png | Bin 0 -> 1340 bytes - test/filter-bilinear-extents.c | 91 ++++++++++++++++++++++++++++++++++ - 4 files changed, 94 insertions(+), 0 deletions(-) - -commit 80f7aa03b35921a96683a0442f885c4b8335f3d9 -Author: Carl Worth -Date: Fri Apr 4 11:29:47 2008 -0700 - - Enable buggy_repeat workaround for X.Org servers < 1.4 - - This covers the known-to-broken 1.3 servers such as appeared - in Fedora 8. It also leaves the workaround off, (since it's - a severe slowdown), for the known-to-be-working 1.4.99.901 - server as appears in Fedora 9 Betas. - - src/cairo-xlib-display.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 2c8ead12a64d0deff4dc9e32c60f2815fe7c4a63 -Author: Chris Wilson -Date: Fri Apr 4 17:46:54 2008 +0100 - - [xlib] Avoiding sending glyphs > XMaxRequestSize. - - XRenderAddGlyph() does not split its image data across multiple requests - and so the glyph surface must be smaller than XMaxRequestSize or else - the server will disconnect the client, causing "Fatal IO error 104". - As this will require an extension to the XRender spec, we can work - around the issue by using our fallbacks if we detect that the glyph will - be too large for a single request. - - See bugs https://bugs.freedesktop.org/show_bug.cgi?id=4339 and - http://bugs.freedesktop.org/show_bug.cgi?id=13266 for examples. - - src/cairo-xlib-surface.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit a4f94624b2f4a85bafbc2dc01b08788a7a88deba -Author: Chris Wilson -Date: Fri Apr 4 15:56:22 2008 +0100 - - [test] Add bilevel image test case. - - Add a simple test to exercise the embedding of an image with a bilevel - alpha channel into a postscript level 3 document. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/bilevel-image-ref.png | Bin 0 -> 131 bytes - test/bilevel-image.c | 68 ++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 71 insertions(+), 0 deletions(-) - -commit f72799a2520feb7ed04fd14e53db59fe697a58d1 -Author: Chris Wilson -Date: Fri Apr 4 14:15:58 2008 +0100 - - [configure.in] Add a link to the LTP homepage. - - If ./configure --enable-gcov fails due to a missing LTP package, then - include a link to LTP homepage in the error message. - - configure.in | 15 ++++++++------- - 1 files changed, 8 insertions(+), 7 deletions(-) - -commit c0593d16c7f2ca9c1ba4d05b6cbf3cf9c2f0524b -Author: Chris Wilson -Date: Fri Apr 4 12:53:13 2008 +0100 - - [pdf] Copy the glyphs for use within an smask group. - - When constructing an smask group using PDF_SHOW_GLYPHS, we need a copy - of the glyphs else they'll be freed be we use them (in _show_page()). - - src/cairo-pdf-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit a74db7e7bc092533d244123ea2ae272edf3f5d8f -Author: Chris Wilson -Date: Fri Apr 4 12:34:40 2008 +0100 - - [test] Exercise "soft" masks. - - PDF has a concept of "soft" masks, for which it is able to construct a - mask out of PDF drawing operations. These tests exercise constructing - various masks using the high level drawing operations. - - test/.gitignore | 7 ++ - test/Makefile.am | 14 +++++ - test/smask-fill-ref.png | Bin 0 -> 1223 bytes - test/smask-fill.c | 83 ++++++++++++++++++++++++++ - test/smask-image-mask-ref.png | Bin 0 -> 643 bytes - test/smask-image-mask.c | 92 +++++++++++++++++++++++++++++ - test/smask-mask-ref.png | Bin 0 -> 2523 bytes - test/smask-mask.c | 107 +++++++++++++++++++++++++++++++++ - test/smask-paint-ref.png | Bin 0 -> 2639 bytes - test/smask-paint.c | 90 ++++++++++++++++++++++++++++ - test/smask-ref.png | Bin 0 -> 3587 bytes - test/smask-stroke-ref.png | Bin 0 -> 1845 bytes - test/smask-stroke.c | 83 ++++++++++++++++++++++++++ - test/smask-text-ref.png | Bin 0 -> 1796 bytes - test/smask-text.c | 92 +++++++++++++++++++++++++++++ - test/smask.c | 130 +++++++++++++++++++++++++++++++++++++++++ - 16 files changed, 698 insertions(+), 0 deletions(-) - -commit 2d42f5ac27494f2bfd75e7bba42fd36783e053eb -Author: Adrian Johnson -Date: Fri Apr 4 20:29:12 2008 +1030 - - TrueType: Fix buffer check - - bb76eb50 added some checks to ensure we do not read past the end of - the buffer for the loaded glyph. However the checks assumed - tt_composite_glyph_t has a fixed size. tt_composite_glyph_t has a - variable size that depends on the values with the struct. - - src/cairo-truetype-subset.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit 7dbb2dec33bb91b3d89a8072283297025817d0c6 -Author: Adrian Johnson -Date: Fri Apr 4 19:48:55 2008 +1030 - - TrueType: Remove assert - - If the status is UNSUPPORTED we should let type1-fallback subset it. - - src/cairo-truetype-subset.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 6192001816053403b8e51fc2aa44cf6d0a9baece -Author: Adrian Johnson -Date: Fri Apr 4 19:26:00 2008 +1030 - - Add PS reference image for ft-show-glyphs-table - - test/Makefile.am | 1 + - test/ft-show-glyphs-table-ps-ref.png | Bin 0 -> 5687 bytes - 2 files changed, 1 insertions(+), 0 deletions(-) - -commit e50324d3cc66df83120f908845657382e0020868 -Author: Adrian Johnson -Date: Fri Apr 4 19:21:40 2008 +1030 - - PS: Fix emulation of 'Td' pdf operator - - src/cairo-ps-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 759793cad1459c2b70daa6adb3deb7af5fe705aa -Author: Chris Wilson -Date: Fri Apr 4 09:43:32 2008 +0100 - - Add links to the font specifications. - - Add links to specifications for the Type1, CFF, and TrueType font file - formats, provided by Adrian Johnson. - - src/cairo-cff-subset.c | 5 +++++ - src/cairo-truetype-subset.c | 6 ++++++ - src/cairo-type1-subset.c | 5 +++++ - 3 files changed, 16 insertions(+), 0 deletions(-) - -commit 8a78760f15c29c72e6a945b2157fd214e8045e1e -Author: Carl Worth -Date: Thu Apr 3 17:12:14 2008 -0700 - - Add new ft-show-glyphs-table test to exercise recent glyph positioning bug fix - - Interestingly, this test case does demonstrate that cairo-pdf - is fixed, (where without commit f6509933a4e0 the Y positions - of the glyphs were inverted); however, cairo-ps is failing - with this test, (all the glyphs are ending up on top of each - other). - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/ft-show-glyphs-table-ref.png | Bin 0 -> 11439 bytes - test/ft-show-glyphs-table.c | 116 +++++++++++++++++++++++++++++++++++++ - 4 files changed, 119 insertions(+), 0 deletions(-) - -commit f6509933a4e0abde3b7bca861f65e433b7e8dcf0 -Author: Adrian Johnson -Date: Fri Apr 4 08:41:08 2008 +1030 - - PDF: Fix glyph positioning bug - - src/cairo-pdf-operators.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bb76eb508b2d97a4455393a12540ceb7427bc271 -Author: Chris Wilson -Date: Thu Apr 3 18:36:16 2008 +0100 - - [cairo-truetype-subset] Check reads are within valid data. - - Check cairo_truetype_font_remap_composite_glyph() does not read beyond - the end of the buffer loaded for the glyf. - - src/cairo-truetype-subset.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit a5e2a2ad2d03c217b9b27c537ee6a945bdc98a44 -Author: Chris Wilson -Date: Thu Apr 3 18:24:00 2008 +0100 - - [cairo-truetype-subset] Prevent accesses beyond the end of the glyph array. - - Reject the font if we try to remap a composite glyph that exists outside - the known set of glyphs. - - src/cairo-truetype-subset.c | 43 ++++++++++++++++++++++++++++++------------- - 1 files changed, 30 insertions(+), 13 deletions(-) - -commit 13cdfed894d48b30e28296c3a27c8361bf5506fb -Author: Chris Wilson -Date: Thu Apr 3 17:43:37 2008 +0100 - - [cairo-truetype-subset] Perform a quick sanity check that glyf end >= begin. - - Check for a bogus glyf position and prevent an integer overflow. - - src/cairo-truetype-subset.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit cfff3c3bd04df5257176d9e43add52fc6daba329 -Author: Chris Wilson -Date: Thu Apr 3 17:23:48 2008 +0100 - - [cairo-array] Guard against integer overflow whilst growing the array. - - Sanity check the arguments to _cairo_array_grow_by() such that the - array size does not overflow, similar to the defensive checking of - parameters to malloc. - - src/cairo-array.c | 12 ++++++++---- - src/cairoint.h | 2 +- - 2 files changed, 9 insertions(+), 5 deletions(-) - -commit 6101dc3e93b20294c75734d7f29e55694ed58e74 -Author: Chris Wilson -Date: Thu Apr 3 14:53:17 2008 +0100 - - [cairo-pdf-surface] Do not bitswap big-endian A1 masks. - - Pixman stores the bits A1 surfaces in native byte order, PDF stores - A1 masks in MSb - so only perform swapping for little-endian machines. - - Note this also removes the extraneous packing as per the PDF spec 4.8.2: - "Byte boundaries are ignored, except that each row of sample data must - begin on a byte boundary. If the number of data bits per row is not a - multiple of 8, the end of the row is padded with extra bits to fill out - the last byte." - - src/cairo-pdf-surface.c | 30 +++++++----------------------- - 1 files changed, 7 insertions(+), 23 deletions(-) - -commit 7901eb29efb04e469f4bf94e2da6fd6b79b140b0 -Author: Chris Wilson -Date: Thu Apr 3 12:12:25 2008 +0100 - - [test] Add a1-mask. - - Add a variant of the a8-mask test case that exercises the FORMAT_A1 code - paths instead. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/a1-mask-ref.png | Bin 0 -> 131 bytes - test/a1-mask.c | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 201 insertions(+), 0 deletions(-) - -commit 5aa5aeb1f56493cf7a6bafd22c6921d8415db64e -Author: Chris Wilson -Date: Thu Apr 3 12:09:03 2008 +0100 - - [cairo-font-face] Cleanup up the font_face on the error path. - - A missing _cairo_toy_font_face_fini() was leaking the strdup(family). - - src/cairo-font-face.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 048160d44c564b0265b2e740b13d6ed3b367661d -Author: Chris Wilson -Date: Thu Apr 3 12:11:44 2008 +0100 - - [.gitignore] Add test/stroke-image - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 9e749d0a287b8038d8a8524ed74626b2d3071538 -Author: Vladimir Vukicevic -Date: Wed Apr 2 23:37:24 2008 -0700 - - [cgfont] typo fix - - src/cairo-quartz-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3f9b1ceac78976f34a18b551eec376c07db40775 -Author: Vladimir Vukicevic -Date: Wed Apr 2 16:13:53 2008 -0700 - - [cgfont] Implement missing scaled font metrics - - src/cairo-quartz-font.c | 74 +++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 71 insertions(+), 3 deletions(-) - -commit eb3eb0252b13b3d2a3b6acfd13306ff3c6b0506e -Author: Chris Wilson -Date: Wed Apr 2 14:53:25 2008 +0100 - - [cairo-xlib-surface] Avoid writing to the error surface. - - Insert status checks during construction of temporary glyph surfaces - to avoid potentially writing to the inert error object. - - src/cairo-xlib-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit c1062bf20ab60f6335be0814de245616a8d24bd2 -Author: Chris Wilson -Date: Wed Apr 2 10:43:39 2008 +0100 - - [cairo-xlib-surface] Preserve Visuals for non-TrueColor similar surfaces. - - Previously, given a valid XRenderFormat the Visual was discarded - when creating similar surfaces. However the original Visual is - required to support reading back from non-TrueColor surfaces. - - src/cairo-xlib-surface.c | 32 ++++++++++++++++++++------------ - 1 files changed, 20 insertions(+), 12 deletions(-) - -commit b3a70629f8d1f5d7c23f4369d3395af73318eb28 -Author: Chris Wilson -Date: Wed Apr 2 09:19:11 2008 +0100 - - [test/text-transform] Fix pattern leak. - - Add missing cairo_pattern_destroy. - - test/text-transform.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) - -commit 37c69c0d54c4b77c96497db4d6633558d4e1300d -Author: Chris Wilson -Date: Mon Mar 31 21:49:34 2008 +0100 - - [cairo-xlib] Handle malloc failures for cairo_xlib_visual_info_t. - - Tidy the error paths whilst handling visuals, in particular avoiding a - couple of potential NULL deferences, missed status checks and fresh - leaks. - - src/cairo-xlib-private.h | 15 +++++++++--- - src/cairo-xlib-screen.c | 52 +++++++++++++++++++++++++++++++-------------- - src/cairo-xlib-surface.c | 30 ++++++++++++++++++-------- - src/cairo-xlib-visual.c | 19 +++++++++++++--- - 4 files changed, 83 insertions(+), 33 deletions(-) - -commit 0cd42c25a6f4be1ff27ed3a9ba7fa9a91d076e0d -Author: Chris Wilson -Date: Mon Mar 31 19:15:48 2008 +0100 - - [cairo-svg-surface] Check surface status before extracting the svg target. - - We need to check and report the existent status, else we may try to - modify the inert error object. - - src/cairo-svg-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 013bbda6373d84d39e080c5e0b305581a2c6919c -Author: Chris Wilson -Date: Mon Mar 31 19:15:16 2008 +0100 - - [cairo-ps-surface] Check surface status before extracting the ps target. - - We need to check and report the existent status, else we may try to - modify the inert error object. - - src/cairo-ps-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit cebb1eef431a38c7c3a96ae60a5bee188f41dc0b -Author: Chris Wilson -Date: Mon Mar 31 19:09:21 2008 +0100 - - [cairo-svg-surface] Missing status check. - - Check and, if necessary, propagate the error status - do not allow the - status to be overwritten, potentially masking the original error. - - src/cairo-svg-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 94db91b65ef42228c963f2d6d82da085f9148895 -Author: Chris Wilson -Date: Mon Mar 31 15:47:45 2008 +0100 - - [cairo-pdf-surface] Do not mask error during cleanup. - - Be careful to preserve the original error status whilst on the common - cleanup path for _cairo_pdf_surface_emit_meta_surface(). - - src/cairo-pdf-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 3580b99a8f99db207b54529f5ac7d0e4325cc123 -Author: Chris Wilson -Date: Mon Mar 31 14:25:17 2008 +0100 - - [cairo-pdf-surface] Check surface status before extracting the pdf target. - - We need to check and report the existent status, else we may try to - modify the inert error object. - - src/cairo-pdf-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 34d734365bdc1c02cf1880804ab15af48c8d03e1 -Author: Chris Wilson -Date: Mon Mar 31 11:27:10 2008 +0100 - - [cairo-svg-surface] Release acquired surface on error path. - - Ensure the surface returned from _cairo_pattern_acquire_surface() is - released on the error path. - - src/cairo-svg-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit ba2e82d138eecb451c3d0bf53d9c349fb560f039 -Author: Chris Wilson -Date: Mon Mar 31 10:55:39 2008 +0100 - - [cairo-ps-surface] Check error status before potential illegal dereference. - - After acquiring the source image, check for the error status to ensure - that we do not attempt to deference an invalid surface. - - src/cairo-ps-surface.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 767add1ee356660075aaf02283f62a23ef9bcb24 -Author: Chris Wilson -Date: Fri Mar 28 11:51:13 2008 +0000 - - [cairo-pdf-operators] Destroy stream on error. - - We cannot guarantee that a newly created error stream is a static error - object, so we need to always destroy the stream on the error path. (One - day this may change with the global pool of error objects...) - - src/cairo-pdf-operators.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 2f06284ad6154d1f5fac1a195edbcbc9ed3432cb -Author: Carl Worth -Date: Tue Apr 1 16:07:22 2008 -0700 - - Increment cairo version to 1.5.17 after 1.5.16 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5366c8f483dc7bd40b5d0a184c9b16826007c032 -Author: Carl Worth -Date: Tue Apr 1 15:52:41 2008 -0700 - - Increment version to 1.5.16 and library versioning to 19:0:17 - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit eb6721f4ccc6ac861e16ec21c7b420645c4f572b -Author: Carl Worth -Date: Tue Apr 1 15:51:57 2008 -0700 - - NEWS: Add notes for the cairo 1.5.16 snapshot - - NEWS | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 109 insertions(+), 0 deletions(-) - -commit 8707892b218cb79ef544ba396d4501827b900c32 -Author: Carl Worth -Date: Tue Apr 1 15:40:54 2008 -0700 - - Doc SGML template churn - - doc/public/tmpl/cairo-ft.sgml | 7 +++++++ - doc/public/tmpl/cairo-xlib.sgml | 7 +++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -commit 5d0b2ede52eb6d05a7d5579e6bcd1d4d1850300c -Author: Carl Worth -Date: Tue Apr 1 15:24:48 2008 -0700 - - Mark cairo-quartz as officially supported - - An especial thanks to Vladimir Vukicevic and the Mozilla - Foundation for a tremendous amount of work on cairo-quartz - while it has been marked as "experimental" - - configure.in | 6 +----- - 1 files changed, 1 insertions(+), 5 deletions(-) - -commit 07130a9061b012bb5c206dc547b4cc0cc69dcbf1 -Author: Carl Worth -Date: Tue Apr 1 15:20:42 2008 -0700 - - Include cairoint.h first to satisfy the test suite - - Forgetting to include cairoint.h (or not including it first) can - cause some subtle bugs due to specific feature flags not being - set, etc. - - src/cairo-quartz-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 46ea00d829bc50ab5316d2257e0d1ed1d8e3f4b6 -Author: Carl Worth -Date: Tue Apr 1 14:53:55 2008 -0700 - - More quieting of subtle potentially-uninitialized warnings - - The compiler isn't clever enough to notice that these - variables are always initialized (in either the TrueColor - or ! TrueColor conditions corresponding to the later - identical conditions in which the variables are used). - - src/cairo-xlib-surface.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 1489e66d250c070c46cb42a1db9ea9f447f464b9 -Author: Carl Worth -Date: Tue Apr 1 14:49:03 2008 -0700 - - Quiet a more subtle potentially-uninitialized warning - - The compiler isn't clever enough to notice that these - variables are always initialized. - - src/cairo-rectangle.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit afc6e3b69dcadc63b1dd26a6d67a7da20d7397fe -Author: Carl Worth -Date: Tue Apr 1 14:40:18 2008 -0700 - - Quiet some trivial unused and potentially-uninitialized compiler warnings - - src/cairo-gstate.c | 2 +- - src/cairo-hull.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-xlib-visual.c | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -commit d09b0394d59b50ffd3ea8e58f9f57ea4717de754 -Author: Carl Worth -Date: Mon Mar 31 16:50:24 2008 -0700 - - Add some reference images that were missing from the distribution list - - test/Makefile.am | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 56800e6ea0f7153e44f0cba14c89c4239067a60e -Author: Vladimir Vukicevic -Date: Tue Apr 1 13:28:03 2008 -0700 - - [quartz] Remove cairo-atsui-font.c - - src/cairo-atsui-font.c | 1028 ------------------------------------------------ - 1 files changed, 0 insertions(+), 1028 deletions(-) - -commit 8ddae11b544c35057a96ca0bdea34b4f473ee261 -Author: Vladimir Vukicevic -Date: Tue Apr 1 13:26:00 2008 -0700 - - [quartz] Update documentation - - doc/public/tmpl/cairo-ft.sgml | 8 -------- - doc/public/tmpl/cairo-quartz-fonts.sgml | 25 +++++++++++++++++++++++++ - doc/public/tmpl/cairo-quartz.sgml | 25 +++++++------------------ - doc/public/tmpl/cairo-xlib.sgml | 8 -------- - src/cairo-quartz-font.c | 14 ++++++++++++-- - src/cairo-quartz-surface.c | 18 ++++++++---------- - 6 files changed, 52 insertions(+), 46 deletions(-) - -commit 9a7162cfdf48f47bb8ee0a7c24c55c061e4fbc90 -Author: Vladimir Vukicevic -Date: Tue Apr 1 13:17:14 2008 -0700 - - [doc] Add some Quartz/CGFont documentation templates - - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 14 ++++++++++++++ - doc/public/tmpl/cairo-quartz-fonts.sgml | 23 +++++++++++++++++++++++ - 3 files changed, 38 insertions(+), 0 deletions(-) - -commit 56cabc352e44ee7cb2989dd81688f6c37c33fc21 -Author: Vladimir Vukicevic -Date: Tue Apr 1 13:01:41 2008 -0700 - - [quartz] Update Quartz test reference images - - test/Makefile.am | 3 +++ - test/clip-operator-quartz-ref.png | Bin 9364 -> 9539 bytes - test/clip-operator-quartz-rgb24-ref.png | Bin 4359 -> 4412 bytes - test/font-matrix-translation-quartz-ref.png | Bin 1041 -> 1090 bytes - test/glyph-cache-pressure-quartz-ref.png | Bin 3491 -> 3654 bytes - test/linear-gradient-reflect-quartz-ref.png | Bin 0 -> 878 bytes - test/operator-clear-quartz-ref.png | Bin 1368 -> 1459 bytes - test/operator-clear-quartz-rgb24-ref.png | Bin 1201 -> 1293 bytes - test/operator-source-quartz-ref.png | Bin 4572 -> 4637 bytes - test/operator-source-quartz-rgb24-ref.png | Bin 3452 -> 3533 bytes - test/select-font-face-quartz-ref.png | Bin 2958 -> 2970 bytes - test/show-text-current-point-quartz-ref.png | Bin 3198 -> 3093 bytes - test/surface-pattern-scale-down-quartz-ref.png | Bin 0 -> 3188 bytes - test/text-antialias-gray-quartz-ref.png | Bin 1039 -> 1041 bytes - test/text-antialias-none-quartz-ref.png | Bin 304 -> 300 bytes - test/text-antialias-subpixel-quartz-ref.png | Bin 1100 -> 1065 bytes - test/text-pattern-quartz-ref.png | Bin 0 -> 2158 bytes - test/text-pattern-quartz-rgb24-ref.png | Bin 1867 -> 1874 bytes - test/text-rotate-quartz-ref.png | Bin 17405 -> 17820 bytes - test/unbounded-operator-quartz-ref.png | Bin 4325 -> 4066 bytes - test/unbounded-operator-quartz-rgb24-ref.png | Bin 1972 -> 1918 bytes - 21 files changed, 3 insertions(+), 0 deletions(-) - -commit 94b67d13f38d860f1a768f9a088e3b6f5d188f7b -Author: Vladimir Vukicevic -Date: Tue Apr 1 12:44:32 2008 -0700 - - [quartz] Handle further 10.4 vs. 10.5 differences; fix text AA handling - - src/cairo-quartz-surface.c | 74 +++++++++++++++++++++++++------------------ - 1 files changed, 43 insertions(+), 31 deletions(-) - -commit a1d1be4234f7787c078ff096b4101e300494e7d1 -Author: Vladimir Vukicevic -Date: Thu Mar 27 23:46:53 2008 -0700 - - [cgfont] Round surface rectangle outwards to ensure whole-pixel dimensions - - src/cairo-quartz-font.c | 60 +++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 48 insertions(+), 12 deletions(-) - -commit c064ad1b56d11950786a3fd0363e543f5aec1761 -Author: Vladimir Vukicevic -Date: Thu Mar 27 11:42:53 2008 -0700 - - [cgfont] Fix whitespace errors - - src/cairo-quartz-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2be3e67db24ac34f772b5fc1182dfb9b730dce11 -Author: Vladimir Vukicevic -Date: Tue Mar 25 22:44:39 2008 -0700 - - [cgfont] Add CGFont backend to replace deprecated ATSUI backend - - Create a new font backend that uses the CGFont API on MacOS X - 10.4 and beyond. - - src/cairo-quartz-font.c | 124 ++++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 107 insertions(+), 17 deletions(-) - -commit 30f7fae6475c36549badf1fcc11ae39d1d79b532 -Author: Vladimir Vukicevic -Date: Thu Mar 20 13:24:48 2008 -0700 - - [cgfont] Add start of CGFont font backend to replace ATSUI - - configure.in | 10 +- - src/Makefile.am | 3 +- - src/cairo-atsui-font.c | 2 +- - src/cairo-quartz-font.c | 590 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-quartz-private.h | 5 + - src/cairo-quartz-surface.c | 1 - - src/cairo-quartz.h | 5 +- - src/cairoint.h | 4 +- - 8 files changed, 611 insertions(+), 9 deletions(-) - -commit 9e6d6798700cf629abbd921cf744babeb49215a1 -Author: Emmanuel Pacaud -Date: Tue Apr 1 16:48:04 2008 +0200 - - [SVG] Fix stroke-image test failure. - - The pattern transform inherit the object transform matrix, and that was not - taken into account. - - src/cairo-svg-surface.c | 96 +++++++++++++++++++++++++++++----------------- - 1 files changed, 60 insertions(+), 36 deletions(-) - -commit a571cc56a3e708e37fe112212fbd41ae9071a16b -Author: Carl Worth -Date: Mon Mar 31 12:17:39 2008 -0700 - - Update pixman dependency to recent 0.10.0 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e9adba9a57177a1b5755734db25d08513a30c0b7 -Author: Carl Worth -Date: Mon Mar 31 12:15:06 2008 -0700 - - Update ps-specifc reference image for ft-text-vertical-layout-type1 - - Presumably this minor change happened due to a recent fix in - cairo-ps glyph positioning. - - test/ft-text-vertical-layout-type1-ps-ref.png | Bin 1911 -> 1910 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit a30ed53a1ce37f68f2ee8abf0f631bcc180e0e57 -Author: Adrian Johnson -Date: Sun Mar 30 00:13:35 2008 +1030 - - Add stroke-image PS/PDF ref images - - test/stroke-image-pdf-ref.png | Bin 0 -> 1554 bytes - test/stroke-image-ps-ref.png | Bin 0 -> 1786 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit a729f27f3c5770277d691257d2355ffb97e3172f -Author: Adrian Johnson -Date: Sun Mar 30 00:07:05 2008 +1030 - - Add clip-operator PS/PDF rgb24 ref images - - test/clip-operator-pdf-rgb24-ref.png | Bin 0 -> 6530 bytes - test/clip-operator-ps-rgb24-ref.png | Bin 0 -> 4620 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 9058b9260acce8839263fccf451a982bcb1c54f3 -Author: Adrian Johnson -Date: Sat Mar 29 23:49:51 2008 +1030 - - Add operator-source PDF ref images - - Required due to gradient rendering differences between poppler and - cairo. - - test/operator-source-pdf-argb32-ref.png | Bin 0 -> 4694 bytes - test/operator-source-pdf-rgb24-ref.png | Bin 0 -> 3848 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 47981226db1650799ddb5efba01df2564aa1a3b5 -Author: Adrian Johnson -Date: Sat Mar 29 23:45:31 2008 +1030 - - Fix PDF analysis of OPERATOR_SOURCE surface patterns - - src/cairo-pdf-surface.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 53d1a4b0dcb3a1fa62face9d2b5b086d74b6e397 -Author: Adrian Johnson -Date: Sat Mar 29 23:03:02 2008 +1030 - - Update operator-source PS ref images - - test/operator-source-ps-argb32-ref.png | Bin 3893 -> 3890 bytes - test/operator-source-ps-rgb24-ref.png | Bin 3241 -> 3181 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit b3b3e3810d6ea9e75d5accd8e0d2ad00f664b4a5 -Author: Adrian Johnson -Date: Sat Mar 29 19:14:18 2008 +1030 - - PS: Clear pattern background to when using OPERATOR_SOURCE - - Set pattern background to white if surface content is COLOR_ALPHA or - black if surface content is COLOR when operator is SOURCE. - - src/cairo-ps-surface.c | 43 +++++++++++++++++++++++++++---------------- - 1 files changed, 27 insertions(+), 16 deletions(-) - -commit 5b8b3a9765d292d554b50df0981652d3bb4ec56f -Author: Adrian Johnson -Date: Sat Mar 29 01:07:30 2008 +1030 - - PS/PDF: Save/Restore surface clip when emitting a meta-surface pattern - - src/cairo-pdf-surface.c | 6 ++++++ - src/cairo-ps-surface.c | 6 ++++++ - src/cairo-surface.c | 6 ++++++ - src/cairoint.h | 3 +++ - 4 files changed, 21 insertions(+), 0 deletions(-) - -commit e4fd9b4ea2e8cc378471c4f536236faa73467977 -Author: Adrian Johnson -Date: Thu Mar 27 09:06:11 2008 +1030 - - Bump poppler version required for testing to 0.8.0 - - The poppler specific reference images are created from the latest - version of poppler in git. The main reason has been for support for - knockout groups that had not yet been available in a stable release. - - Poppler 0.8.0 is the first stable release to include the support for - knockout groups. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit af8928fa8bb8905515f36b4ddc51e665b4b8da56 -Author: Carl Worth -Date: Wed Mar 26 14:21:58 2008 -0700 - - Add svg-specific reference image for ft-show-glyphs-positioning test - - There was no failure here, just minor rasterization differences. - - test/ft-show-glyphs-positioning-svg-ref.png | Bin 0 -> 6590 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit fbab4bbb06d875313e9cd0dc38673b79b8460edb -Author: Carl Worth -Date: Wed Mar 26 13:47:06 2008 -0700 - - Update clip-operator and operator-clear reference images - - There were legitimate bugs in the ps and pdf backends for these - tests, (particularly with the row of glyphs), but these bugs - were recently fixed with: - - commit d89edde84de9cec9ce6f76f4f2c44dd9c1220528 - Author: Vladimir Vukicevic - Date: Tue Mar 4 00:15:46 2008 -0800 - - [meta] always copy glyph array before passing to _cairo_surface_show_glyphs - - and we just failed to notice the fix at the time. - - test/clip-operator-pdf-argb32-ref.png | Bin 11005 -> 11429 bytes - test/clip-operator-ps-argb32-ref.png | Bin 9084 -> 9102 bytes - test/operator-clear-ps-argb32-ref.png | Bin 1400 -> 1435 bytes - 3 files changed, 0 insertions(+), 0 deletions(-) - -commit 75972167a277687b1434c52e791ffe9c18fa2a7a -Author: Carl Worth -Date: Wed Mar 26 11:31:04 2008 -0700 - - Use floating-point offsets for color stops - - Previously we were using the cairo_fixed_t type which meant we've - historically only been using 16 bits of precision for these offsets, - and recently only 8 bits. Meanwhile, all manipulatons of offsets - have been in floating-point anyway, so we might as well store them - that way. - - This change also prevents a rendering regression introduced with the - 24.8->16.16 change betwen snapshots 1.5.10 and 1.5.12 . - - This change affected gradient-rendering details for the clip-operator - and operator-source tests, so the corresponding reference images are - updated here. - - src/cairo-glitz-surface.c | 2 +- - src/cairo-pattern.c | 10 ++++------ - src/cairo-pdf-surface.c | 6 +++--- - src/cairo-ps-surface.c | 6 +++--- - src/cairo-quartz-surface.c | 6 +++--- - src/cairo-svg-surface.c | 31 ++++++++++++++----------------- - src/cairo-win32-printing-surface.c | 2 +- - src/cairoint.h | 2 +- - test/clip-operator-ref.png | Bin 8263 -> 8271 bytes - test/operator-source-ref.png | Bin 4422 -> 4420 bytes - 10 files changed, 30 insertions(+), 35 deletions(-) - -commit 80dc1714c87c3902e70fa94e4911945986cc7920 -Author: Carl Worth -Date: Wed Mar 26 10:31:36 2008 -0700 - - Remove unused variable - - src/cairo-image-surface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit f676f18050383ecf26c36cdbba4ac81d2d45b042 -Author: Chris Wilson -Date: Wed Mar 26 08:43:23 2008 +0000 - - [cairo] Fixup make check. - - make check demands that all function references in the docs are suffixed - with (). - - src/cairo.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 452a1de2a06b57a3ed1b149e152487505dbc04f8 -Author: Chris Wilson -Date: Tue Mar 25 16:50:33 2008 +0000 - - [cairo-gstate] Remove dead code. - - Eliminate _cairo_gstate_recursive_apply_clip_path, as its last caller - was removed over 2 years ago. - - src/cairo-gstate.c | 21 --------------------- - 1 files changed, 0 insertions(+), 21 deletions(-) - -commit ed42916028e4f51949210de6ecf4ebc5095aa45c -Author: Adrian Johnson -Date: Wed Mar 26 23:04:35 2008 +1030 - - Win32: Fix bug in cairo_win32_font_face_create_for_hfont() - - Use GetObjectW for LOGFONTW. - - src/cairo-win32-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6dc75ab0f8370154aae7719ed805c5a8bdf1c9f4 -Author: Carl Worth -Date: Tue Mar 25 10:21:50 2008 -0700 - - Quiet compiler warnings about unhandled PIXMAN_yuy2 and PIXMAN_yv12 - - We still don't handle these format codes of course, (they're meaningless - for the context in which they're used here). - - Note that we previously avoided adding these to avoid people being forced - to upgrade pixman just to get two enum values that cairo doesn't really - care about. But now we're depending on a new pixman anyway, (for the - pixman_format_code_to_masks function), so we'll go ahead and do this now. - - src/cairo-image-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 1675713aff7311461e26d7badccb9942573f2bca -Author: Carl Worth -Date: Tue Mar 25 16:45:21 2008 -0700 - - Depend on pixman 0.9.7 for new pixman_format_supported_destination function - - This allows us to do a much more general and complete implementation of - _pixman_format_from_masks and _pixman_format_to_masks so that we'll - even pick up new pixman formats as they get added. - - configure.in | 2 +- - src/cairo-image-surface.c | 200 +++++++++++++++++++-------------------------- - 2 files changed, 86 insertions(+), 116 deletions(-) - -commit d7e5f6b6a00912e22cb5ca837d0a56d30cf59124 -Author: Carl Worth -Date: Tue Mar 25 16:32:24 2008 -0700 - - Rename _popcount to _cairo_popcount and make it available for internal use - - Both cairo-image-surface.c and cairo-xlib-surface.c want to - use this function now. - - src/cairo-xlib-surface.c | 25 ++----------------------- - src/cairoint.h | 21 +++++++++++++++++++++ - 2 files changed, 23 insertions(+), 23 deletions(-) - -commit 90cf7c2faf167b4b86443eb340af23cf853b146a -Author: Carl Worth -Date: Tue Mar 25 10:40:01 2008 -0700 - - Quiet warning about signed vs. unsigned comparison - - src/cairo-surface-fallback.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 770633c05acf12b911cdbdaa94b20ccf34ce742a -Author: Carl Worth -Date: Tue Mar 25 10:27:36 2008 -0700 - - Quiet warnings about unhandled enum values in _cairo_surface_create_in_error - - src/cairo-surface.c | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit d15c7c94bdfc714845bd88f9e3ed5317afcfce72 -Author: Carl Worth -Date: Tue Mar 25 12:12:40 2008 -0700 - - Document performance advantage of cairo_path_extents - - The cairo_path_extents function can perform better than either - cairo_stroke_extents or cairo_fill_extents, so provide that - pointer from the documentation of the other two functions. - - src/cairo.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit 8aba5b802946530ef481f1461f9894529498cd8a -Author: Vladimir Vukicevic -Date: Tue Mar 25 11:53:52 2008 -0700 - - [win32] Prevent crash in create_similar if win32_surface_create fails - - src/cairo-win32-surface.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 49a140b04bda85c03f824dcf565f1fcdd70b8965 -Author: Vladimir Vukicevic -Date: Tue Mar 25 11:22:43 2008 -0700 - - [osx] additional fix to configure for multi-arch OSX builds - - configure.in | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ae143d779ba5765f55754cb89af87b065d84ef04 -Author: Vladimir Vukicevic -Date: Tue Mar 25 11:17:57 2008 -0700 - - [quartz] When stroking with an image source, use the right CTM for the image - - Since the CTM was modified for the stroke transform, we need to reset - it before calling ConcatCTM for the source transform. - - src/cairo-quartz-surface.c | 9 ++++- - test/Makefile.am | 3 + - test/stroke-image-quartz-ref.png | Bin 0 -> 1802 bytes - test/stroke-image-ref.png | Bin 0 -> 1866 bytes - test/stroke-image.c | 77 ++++++++++++++++++++++++++++++++++++++ - 5 files changed, 88 insertions(+), 1 deletions(-) - -commit e9906ae2021904c8c3d3a4083786475c102196f7 -Author: Adrian Johnson -Date: Tue Mar 25 21:56:19 2008 +1030 - - Win32-Printing: Fix fallback resolution when DC ctm is not identity - - And also move the _cairo_surface_set_resolution() into - _cairo_win32_printing_surface_start_page as the DC ctm may be changed - between pages. - - This bug was found in Inkscape now that they are using the cairo - win32-printing surface for printing on Windows. - - src/cairo-win32-printing-surface.c | 19 ++++++++++++++----- - 1 files changed, 14 insertions(+), 5 deletions(-) - -commit ee3981fb92ee5fa9b049dae32421cc0015fd4bf6 -Author: Carl Worth -Date: Mon Mar 24 16:24:36 2008 -0700 - - Add new text-transform test - - Previously, the test suite wasn't supplying any coverage of transformed - text rendering. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/README | 1 + - test/text-transform-pdf-ref.png | Bin 0 -> 3796 bytes - test/text-transform-ps-ref.png | Bin 0 -> 4154 bytes - test/text-transform-ref.png | Bin 0 -> 6200 bytes - test/text-transform.c | 113 +++++++++++++++++++++++++++++++++++++++ - 7 files changed, 116 insertions(+), 0 deletions(-) - -commit 184d9cbf9c8967b741209b9d891848c9bd37dd60 -Author: Adrian Johnson -Date: Mon Mar 24 12:36:37 2008 +1030 - - Update REFERENCE_IMAGES with PS ref images - - for finer finer-grained-fallbacks. - - test/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2ad39157975d71735da936977dd10e66d055ece7 -Author: Adrian Johnson -Date: Mon Mar 24 12:32:07 2008 +1030 - - Add PS reference images for finer-grained-fallbacks test - - test/finer-grained-fallbacks-ps-argb32-ref.png | Bin 0 -> 1047 bytes - test/finer-grained-fallbacks-ps-rgb24-ref.png | Bin 0 -> 819 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit ae9635bf33cb989f5c525800b82b81daad699e01 -Author: Adrian Johnson -Date: Mon Mar 24 12:16:20 2008 +1030 - - Fix assertion in PS/PDF/Win32-print when fallback image is off the page - - If during analysis the bounding box of an operation or the number of - traps is 0, the operation is marked as natively supported. The problem - here is if the operation is unsupported by the backend, we get an - assertion when the operation is replayed during - CAIRO_PAGINATED_MODE_RENDER. - - This bug was found in Inkscape when printing to the - win32_printing_surface a page that has been layed out as landscape but - landscape paper had not been selected in the print dialog. - - Fix this by being careful not to mark unsupported operations as - supported during analysis even they may not be visible on the page. - - src/cairo-analysis-surface.c | 73 +++++++++++++++++++++++++++++++---------- - 1 files changed, 55 insertions(+), 18 deletions(-) - -commit 179ab7d2860b8ff94fe491896c50505fde7cf6af -Author: Adrian Johnson -Date: Mon Mar 24 11:43:29 2008 +1030 - - Add finer-grained-fallbacks test - - This reproduces the bug in PS/PDF/Win32-printing where an unsupported - operation that is off the page causes an unsupported operation - assertion in the backend. - - test/.gitignore | 1 + - test/Makefile.am | 3 + - test/finer-grained-fallbacks-ref.png | Bin 0 -> 796 bytes - test/finer-grained-fallbacks-rgb24-ref.png | Bin 0 -> 590 bytes - test/finer-grained-fallbacks.c | 111 ++++++++++++++++++++++++++++ - 5 files changed, 115 insertions(+), 0 deletions(-) - -commit 9a1f7bbc357ecce351b459f883b4ebeaa6640b65 -Author: Benjamin Otte -Date: Sun Mar 23 15:31:24 2008 +0100 - - [API] unbreak CAIRO_FONT_TYPE_ATSUI - - commit 9d61f7db8082baf3a223c4ea41a53de372676e40 broke API by making the - CAIRO_FONT_TYPE_ATSUI symbol not work anymore. However, this symbol was part of - Cairo's public API and should continue working this way. - - src/cairo-deprecated.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 104c2825ea66d7d5f405cc8d690d90b45e752c46 -Author: Chris Wilson -Date: Fri Mar 21 09:11:48 2008 +0000 - - [cairo-png] Set bKGD gray value. - - For PNG_COLOR_TYPE_GRAY images the bKGD value is read from white.gray - which was uninitialized, triggering the "PNG warning = Ignoring attempt - to write bKGD chunk out-of-range for bit_depth" reported by Emmanuel - Pacaud. This patch sets the background gray value to white, the same as - for RGB images. - - src/cairo-png.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit c4599324820cfb46700bf2f059c46e9245f98ea5 -Author: Adrian Johnson -Date: Fri Mar 21 18:12:03 2008 +1030 - - Update PS reference images - - Some of the text tests require new PS specific reference images as a - result of the PS glyph positioning fix. - - test/font-matrix-translation-ps-argb32-ref.png | Bin 749 -> 748 bytes - test/font-matrix-translation-ps-rgb24-ref.png | Bin 749 -> 748 bytes - test/glyph-cache-pressure-ps-ref.png | Bin 1413 -> 1454 bytes - test/select-font-face-ps-ref.png | Bin 1079 -> 959 bytes - test/show-text-current-point-ps-ref.png | Bin 1454 -> 1356 bytes - test/text-pattern-ps-argb32-ref.png | Bin 984 -> 966 bytes - test/text-pattern-ps-rgb24-ref.png | Bin 936 -> 924 bytes - 7 files changed, 0 insertions(+), 0 deletions(-) - -commit f3a5f7570104c8d48c99a2b6bd34f4142e52f099 -Author: Adrian Johnson -Date: Fri Mar 21 16:34:01 2008 +1030 - - Add PS/PDF ref images for ft-show-glyphs-positioning - - test/Makefile.am | 2 ++ - test/ft-show-glyphs-positioning-pdf-ref.png | Bin 0 -> 3114 bytes - test/ft-show-glyphs-positioning-ps-ref.png | Bin 0 -> 2269 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit 4f56a6324f16fa58c21180cc362ee18520a59179 -Author: Adrian Johnson -Date: Fri Mar 21 16:30:53 2008 +1030 - - Finish the PDF text operator decimal reduction commit - - Commit 158b32b60bc7e0f6488383c1d4f83203ffe97c98 reduced excess - decimals emitted for the TJ operator. However it only fixed the first - of the two locations in pdf-operators where the TJ position - adjustments are emitted. - - src/cairo-pdf-operators.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 13e05bffd5cae5690fada24c7a7e2457c39e4dbf -Author: Adrian Johnson -Date: Fri Mar 21 15:41:31 2008 +1030 - - Fix PS glyph positioning bug in PDF operator emulation - - The emulation of the PDF 'TJ' operator in the PS prolog was - incorrectly updating the glyph position between strings. The glyph - position values are a negative x offset that are in 1/1000 unit of - text space. We were incorrectly multiplying the number by -0.0001 - instead of -0.001. We also need to transform this to device space - before calling rmoveto. - - src/cairo-ps-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 83486684520f3fd27d1118aa23462d013def83df -Author: Adrian Johnson -Date: Fri Mar 21 16:06:12 2008 +1030 - - Add ft-show-glyphs-positioning test - - This demonstrates the glyph positioning bug in the PS backend. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/ft-show-glyphs-positioning-ref.png | Bin 0 -> 3444 bytes - test/ft-show-glyphs-positioning.c | 167 +++++++++++++++++++++++++++++++ - 4 files changed, 170 insertions(+), 0 deletions(-) - -commit 37fedd108e3defc10f2f749a3a9971287e41706c -Author: Carl Worth -Date: Thu Mar 20 17:02:01 2008 -0700 - - Increment cairo version to 1.5.15 after the 1.5.14 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f4d4d7b3d0bd62af6ffd50ba9cd8df0b9a12be71 -Author: Carl Worth -Date: Thu Mar 20 16:13:28 2008 -0700 - - Cleanup up png-test.png file in 'make clean' - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4ad5937648b27cd7a73a6a245ed875de92fa1c07 -Author: Carl Worth -Date: Thu Mar 20 15:55:28 2008 -0700 - - Enable PLT avoidance for cairo_image_surface_get_data/stride - - src/cairo-image-surface.c | 2 ++ - src/cairoint.h | 2 ++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit 5d9eefccd6ff4d51e16caa8f3092d3acc33b5549 -Author: Carl Worth -Date: Thu Mar 20 15:37:04 2008 -0700 - - Disable enum_regexp test in check-doc-syntax.h - - It's returning false positives on non-gtk-doc comments with non-public - enum values. Ick. - - src/check-doc-syntax.sh | 29 +++++++++++++++++++---------- - 1 files changed, 19 insertions(+), 10 deletions(-) - -commit 0c17ca52aa63a9c77cff47c4ae42bc16e5220552 -Author: Carl Worth -Date: Thu Mar 20 15:33:37 2008 -0700 - - Mark new cairo_xlib_visual_info functions as private. - - src/cairo-xlib-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f32f81fa1badce15403d922002f4fc59fe8b563a -Author: Carl Worth -Date: Thu Mar 20 13:49:29 2008 -0700 - - Increment cairo version to 1.5.14 and libtool versioning to 18:1:16 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ffa50c31d38c761b4bf247d3ac27933974b819d3 -Author: Carl Worth -Date: Thu Mar 20 13:49:19 2008 -0700 - - Doc template churn - - doc/public/tmpl/cairo-font-face.sgml | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3bb0474ea7d453793199d3ce7674fbe1ee8a324d -Author: Carl Worth -Date: Thu Mar 20 13:48:29 2008 -0700 - - NEWS: Add notes for 1.5.14 snapshot - - NEWS | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 128 insertions(+), 1 deletions(-) - -commit 191440101e815fe9be23bb6fbb36114de65d8c2d -Author: Carl Worth -Date: Thu Mar 20 12:33:17 2008 -0700 - - Fix the REFERENCE_IMAGES list, (like always before a snapshot) - - test/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 46bbead898186349094ae69d2b16f88b80cb820e -Author: Carl Worth -Date: Thu Mar 20 12:18:39 2008 -0700 - - RELEASING: Clarify steps for verifying no unpushed modifications - - RELEASING | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit c91a2a2e80f2172a4174cfc3b5e821cb49633da5 -Author: Carl Worth -Date: Thu Mar 20 11:51:31 2008 -0700 - - Track minor change in pixman filtering sample location - - This change in reference image was triggered by the following commit - in the pixman library: - - commit f2d8a5caa63596739b4dc47c00daaaafd9f522e2 - Author: Søren Sandmann - Date: Mon Mar 10 23:41:52 2008 -0400 - - Add rounding epsilon for NEAREST filter after transformation, not before. - - This hasn't appeared in a pixman release yet. So for now, getting - correct results is a matter of "use latest pixman". Soon we'll - have a new pixman release and we'll make cairo depend on that. - - test/rotate-image-surface-paint-ref.png | Bin 209 -> 232 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit e96f382549eb3411d461162fdd8989f4ade8b448 -Author: Carl Worth -Date: Wed Mar 19 13:00:47 2008 -0700 - - Add support for 8-bit PseudoColor visuals - - This support involves allocating a 16-bit grayscale ramp as well - as a 5x5x5 RGB color cube. Afterwards, the 256 colors are queried - and an array is generated mapping from r3g3b3 colors to the closest - available color. Both the queried colors and the reverse mapping - are stored in a new visual-specific cairo_xlib_visual_info_t - structure which hangs off of the cairo_xlib_screen_info_t. - - Both the color-cube allocation and the distance metric could be - improved by someone sufficiently motivated, (for example, allocating - and matching in a perceptually linear color space rather than just - in RGB space). Also, making this work well in the face of a changing - color map, or in the case of GrayScale, StaticGray, or DirectColor - visuals are left entirely as exercises for the reader. StaticColor - support should be fine as is, but is entirely untested. - - src/Makefile.am | 1 + - src/cairo-xlib-private.h | 15 +++++ - src/cairo-xlib-screen.c | 49 ++++++++++++++++ - src/cairo-xlib-surface.c | 122 +++++++++++++++++++++++++--------------- - src/cairo-xlib-visual.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 278 insertions(+), 46 deletions(-) - -commit d413c5ab21efb2ccc6a4847ff387f8e39ba2f3e1 -Author: Carl Worth -Date: Wed Mar 19 14:23:35 2008 -0700 - - xlib: Add support for arbitrary TrueColor visuals - - This fixes the following bugs: - - cairo doesn't support 8-bit truecolor visuals - https://bugs.freedesktop.org/show_bug.cgi?id=7735 - - cairo doesn't support 655 xlib format - https://bugs.freedesktop.org/show_bug.cgi?id=9719 - - src/cairo-xlib-surface-private.h | 5 + - src/cairo-xlib-surface.c | 342 ++++++++++++++++++++++++++++++-------- - 2 files changed, 276 insertions(+), 71 deletions(-) - -commit aeaec94fd03b9098efce9d7455f813acf22ec026 -Author: Emmanuel Pacaud -Date: Thu Mar 20 16:05:34 2008 +0100 - - [SVG] Replace the color property by stroke. - - Color property doesn't support URL as value. This pacth fixes - http://bugs.freedesktop.org/show_bug.cgi?id=14556 . - - src/cairo-svg-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 158b32b60bc7e0f6488383c1d4f83203ffe97c98 -Author: Adrian Johnson -Date: Tue Mar 18 22:29:59 2008 +1030 - - PDF: Reduce excess decimals in text position offsets - - The numbers output in the TJ array for adjusting the horizontal - position of the next glyph are in 1/1000 of the text space - units. Rounding these numbers to an integer should still provide - sufficient precision. - - We use the rounded numbers to update the text position in - pdf-operators so subsequent numbers in the TJ array will compensate - for the rounding error. - - src/cairo-pdf-operators.c | 26 ++++++++++++++++++++++---- - 1 files changed, 22 insertions(+), 4 deletions(-) - -commit 222041530cd5d7f1ef6b41ea1738bf395ef1678a -Author: Adrian Johnson -Date: Tue Mar 18 22:28:37 2008 +1030 - - Use %g for printing path coordinates in pdf-operators - - to eliminate unnecessary decimal places in the output. - - src/cairo-pdf-operators.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit d78013470b11677df88f246d893c1f019f4ae228 -Author: Adrian Johnson -Date: Tue Mar 18 22:27:25 2008 +1030 - - Add %g conversion specifer to output-stream for limited precision - - The %g conversion specifier is for printing numbers that were at some - time stored in a cairo_fixed_t type and as a result have their - precision limited by the size of CAIRO_FIXED_FRAC_BITS. - - Using %g will limit the number of digits after the decimal point to - the minimum required to preserve the available precision. - - src/cairo-output-stream.c | 87 +++++++++++++++++++++++++++++---------------- - 1 files changed, 56 insertions(+), 31 deletions(-) - -commit f3734085a1d1d9b08004a243e28a0233f621847c -Author: Adrian Johnson -Date: Tue Mar 18 22:25:46 2008 +1030 - - Make _cairo_dtostr() static - - It is only used in cairo-output-stream.c - - src/cairo-output-stream-private.h | 3 --- - src/cairo-output-stream.c | 2 +- - 2 files changed, 1 insertions(+), 4 deletions(-) - -commit 4d9e5b51aa4164cf758c6a1f84c7f831becc098b -Author: Adrian Johnson -Date: Tue Mar 18 22:25:18 2008 +1030 - - Rescale CTM used for PS/PDF stroking to reduce rounding error - - The PS/PDF CTM is transformed to the user space CTM when emitting - paths to be stroked to ensure the correct pen shape used. However this - can result in rounding errors. - - For example the device space point (1.234, 3.142) when transformed to - a user space CTM of [100 0 0 100 0 0] will be emitted as - (0.012, 0.031). - - Fix this by rescaling the user space CTM so that the path coordinates - emitted to the PDF file stay within the range the maximizes the - precision. The line width and dashing is also rescaled to be the same - size in the rescaled CTM. - - src/cairo-pdf-operators.c | 70 ++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 63 insertions(+), 7 deletions(-) - -commit 7f4b967c020042779748021fa32fddfc3f0def28 -Author: Carl Worth -Date: Fri Mar 14 16:51:24 2008 +0100 - - Make CAIRO_FORMAT_STRIDE_FOR_WIDTH_BPP available to the cairo internals. - - src/cairo-image-surface.c | 7 ++----- - src/cairoint.h | 5 +++++ - 2 files changed, 7 insertions(+), 5 deletions(-) - -commit eb31c52febd615a92ef0c7204f9fa056ef01b536 -Author: Carl Worth -Date: Fri Mar 14 16:48:41 2008 +0100 - - Make _pixman_format_to_masks accept a cairo_format_masks_t structure - - This makes it work similarly to _pixman_format_from_masks - - src/cairo-image-surface.c | 48 ++++++++++++++++++++------------------------ - src/cairo-xlib-surface.c | 12 +++++----- - src/cairoint.h | 5 +--- - 3 files changed, 29 insertions(+), 36 deletions(-) - -commit cdb1ae97f241ec6b24d64b0fa5447d26f6bc5318 -Author: Carl Worth -Date: Sun Jan 27 10:31:58 2008 -0800 - - Move assertion failure for unsupported masks up one level - - We're moving the assertion up from inside _pixman_format_to_mask - to its callers. This will allow us to selectively eliminate the - assertion from the supported xlib backend, while leaving it in - the unsupported glitz and xcb backends for now. - - src/cairo-image-surface.c | 62 ++++++++++++++++++++++++++------------------ - src/cairo-xlib-surface.c | 20 +++++++++++++- - src/cairoint.h | 5 ++- - 3 files changed, 58 insertions(+), 29 deletions(-) - -commit b83b8c26f5d64fa07b56a747dec681c6626a0297 -Author: Adrian Johnson -Date: Mon Mar 17 23:38:34 2008 +1030 - - Optimize generated PostScript when EXTEND_PAD is used - - Allow image patterns with EXTEND_PAD to use the currentfile - optimization. - - src/cairo-ps-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 1ab804891bb71fd742ccc7a228483c53aee282a4 -Author: Vladimir Vukicevic -Date: Mon Mar 17 17:37:24 2008 -0700 - - [quartz] Additional test reference images for quartz - - test/Makefile.am | 10 ++++++++++ - test/clip-operator-quartz-ref.png | Bin 0 -> 9364 bytes - test/clip-operator-quartz-rgb24-ref.png | Bin 0 -> 4359 bytes - test/dash-curve-quartz-ref.png | Bin 0 -> 47965 bytes - test/dash-state-quartz-ref.png | Bin 0 -> 8698 bytes - test/degenerate-path-quartz-ref.png | Bin 0 -> 232 bytes - test/degenerate-path-quartz-rgb24-ref.png | Bin 0 -> 198 bytes - test/operator-source-quartz-ref.png | Bin 0 -> 4572 bytes - test/operator-source-quartz-rgb24-ref.png | Bin 0 -> 3452 bytes - test/unbounded-operator-quartz-ref.png | Bin 0 -> 4325 bytes - test/unbounded-operator-quartz-rgb24-ref.png | Bin 0 -> 1972 bytes - 11 files changed, 10 insertions(+), 0 deletions(-) - -commit df5087992be5f0f1e42d968559c47bf43de9cfb7 -Author: Vladimir Vukicevic -Date: Mon Mar 17 17:37:22 2008 -0700 - - [quartz] Fix bogus CGContextGetType warning that's printed on the console - - This is caused by 0x0 surfaces being special, and not having an - associated cgContext. - - src/cairo-quartz-surface.c | 106 +++++++++++++++++++++++++++++--------------- - 1 files changed, 70 insertions(+), 36 deletions(-) - -commit 9d61f7db8082baf3a223c4ea41a53de372676e40 -Author: Vladimir Vukicevic -Date: Mon Mar 17 17:37:19 2008 -0700 - - [quartz] Rename ATSUI font to Quartz font - - configure.in | 35 +++++++------------------- - src/Makefile.am | 17 +++++------- - src/cairo-atsui-font.c | 39 ++++++++++++----------------- - src/cairo-atsui.h | 58 -------------------------------------------- - src/cairo-deprecated.h | 2 + - src/cairo-quartz-private.h | 14 ++-------- - src/cairo-quartz-surface.c | 14 +++++----- - src/cairo-quartz.h | 15 ++++++++++- - src/cairo.h | 4 +- - src/cairoint.h | 10 ++++---- - 10 files changed, 65 insertions(+), 143 deletions(-) - -commit e4f087b8b944a26d688afeef4b9ea7a0d0a6e9ec -Author: Adrian Johnson -Date: Sun Mar 16 17:29:48 2008 +1030 - - Factor out common stroke code in pdf-operators - - src/cairo-pdf-operators.c | 68 +++++++++++++++++++++----------------------- - 1 files changed, 32 insertions(+), 36 deletions(-) - -commit 8238a9fd4fa672299fd99aa95f5fcec03647f7c8 -Author: Adrian Johnson -Date: Sat Mar 15 22:08:52 2008 +1030 - - Add stroke-ctm-caps to .gitignore - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 344af99d356203dce8cb97d3effa380cad0c9238 -Author: Adrian Johnson -Date: Sat Mar 15 22:07:01 2008 +1030 - - Improve the PDF operators word wrapping - - to correctly count the columns and avoid breaking hex strings - immediately after the '<' and before any hex digits have been written. - - src/cairo-pdf-operators.c | 34 +++++++++++++++++++++++++--------- - 1 files changed, 25 insertions(+), 9 deletions(-) - -commit 0a8478ca1aa37695e84b4875e1efb3d93c7b8434 -Author: Vladimir Vukicevic -Date: Fri Mar 14 23:23:16 2008 -0700 - - [quartz] don't say we forced subpixel AA when we didn't - - Whoops. Net result was that this was disabling subpixel AA on - contexts if CAIRO_ANTIALIAS_DEFAULT was being used. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 028d352286991f7ec1da168f7f91bed6449f64e4 -Author: Vladimir Vukicevic -Date: Fri Mar 14 23:22:08 2008 -0700 - - [quartz] compare gradient stops as doubles, not as fixed point - - We use the floating-point value later, and we can end up with weirdness - such as negative colors due to the precision mismatch of our fixed - point vs. floating point type. So just do everything in floating - point. - - src/cairo-quartz-surface.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 112bbacea3c06f844af400f34a4a2eadf25d13dd -Author: Adrian Johnson -Date: Sat Mar 15 00:28:21 2008 +1030 - - Don't use fill-stroke during analysis - - Instead ensure the fill and stroke are each analyzed separately. - - This fixes a bug in the PS output where if a fill-stroke with a - translucent fill resulted in a fallback image with the stroke clipped - to the fill path. - - src/cairo-meta-surface.c | 14 +++++--------- - 1 files changed, 5 insertions(+), 9 deletions(-) - -commit 112b43452d302eb4ac62a20bca01bdecbfdcaaf5 -Author: Adrian Johnson -Date: Sat Mar 15 00:18:59 2008 +1030 - - Fix bug in _cairo_path_fixed_is_equal - - Ensure the entire path is compared. - - src/cairo-path-fixed.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 7e83d6e6fb8c4b11d5d95acac4a35df8969e0944 -Author: Adrian Johnson -Date: Fri Mar 14 21:26:04 2008 +1030 - - Do not use PDF fill-stroke operator with transparent fill - - because the PDF rendering does not match cairo. See - PDF Reference 7.6.3. - - Bug report at - https://bugs.launchpad.net/inkscape/+bug/202096 - - src/cairo-pdf-surface.c | 15 +++++---------- - 1 files changed, 5 insertions(+), 10 deletions(-) - -commit 0aef7c1a34b2522d400b5a1a74567a79696216c9 -Author: Adrian Johnson -Date: Mon Mar 10 22:19:52 2008 +1030 - - PDF/PS: Optimize away the stroke ctm when not required - - The PDF/PS backends change the ctm to user space when emitting and - stroking a path. When the user space ctm does not alter the pen shape - we can avoid changing the ctm. - - This patch optimizes the most common case where the user ctm is - [1 0 0 -1 0 y] due to conversion from cairo to PDF coordinates. - - src/cairo-pdf-operators.c | 36 ++++++++++++++++++++++++++++-------- - 1 files changed, 28 insertions(+), 8 deletions(-) - -commit 2bd15d080c562bfcbced1f6bb586cc1e3cae4555 -Author: Adrian Johnson -Date: Fri Mar 14 19:46:15 2008 +1030 - - Add PS reference image for stroke-ctm-caps - - test/stroke-ctm-caps-ps-ref.png | Bin 0 -> 1079 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 761b4ce8dd40b8e5536a19018656c2440a61e71a -Author: Jeremy Huddleston -Date: Thu Mar 13 17:45:25 2008 -0700 - - [mac] Correctly handle endianness in multi-architecture compiles on MacOS X - - configure.in | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 4cc93881d9603c90f1318b2eb822cf2c516ecf7d -Author: Vladimir Vukicevic -Date: Thu Mar 13 17:30:59 2008 -0700 - - [test] Add testcase for previous stroker regression fix - - Add Adrian's original testcase for reproducing the stroker device - vector issue. (b4f518f917f5062537ee3c6a7a54180017b2c588) - - test/Makefile.am | 3 + - test/stroke-ctm-caps-quartz-ref.png | Bin 0 -> 1109 bytes - test/stroke-ctm-caps-ref.png | Bin 0 -> 1057 bytes - test/stroke-ctm-caps.c | 86 +++++++++++++++++++++++++++++++++++ - 4 files changed, 89 insertions(+), 0 deletions(-) - -commit a33351f9c677144437bef25a794b97f2ac4bb17a -Author: Vladimir Vukicevic -Date: Thu Mar 13 15:37:26 2008 -0700 - - [quartz] remove some compiler warnings - - src/cairo-atsui-font.c | 2 +- - src/cairo-quartz-image-surface.c | 4 ---- - 2 files changed, 1 insertions(+), 5 deletions(-) - -commit b4f518f917f5062537ee3c6a7a54180017b2c588 -Author: Vladimir Vukicevic -Date: Thu Mar 13 15:36:30 2008 -0700 - - Correctly pass the device-space vector through to stroker - - Part of the earlier optimization caused the wrong slope to be used for - some computations; this passes the correct slope vector down to - _compute_face. - - src/cairo-path-stroke.c | 37 +++++++++++++++++++++++-------------- - test/dash-scale-ref.png | Bin 8035 -> 8058 bytes - test/reflected-stroke-ref.png | Bin 4802 -> 5704 bytes - 3 files changed, 23 insertions(+), 14 deletions(-) - -commit 5050c55f93afef9b0d0651a78f2c99e06e19b55a -Author: Adrian Johnson -Date: Thu Mar 13 21:35:12 2008 +1030 - - Use the correct glyph metrics in Type1 fallback - - Now that the PS backend is using PDF operators, it uses the glyph - metrics in the font to position each glyph in a string. This exposed a - bug in Type 1 fallback where the glyph width and height was used in - the charstrings instead of x_advance/y_advance. This was causing - strings to print diagonally due to the no zero y_advance. - - src/cairo-type1-fallback.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit ed452713cfa16e5facca8f918ef4ee4fe2ec41c3 -Author: Vladimir Vukicevic -Date: Wed Mar 12 18:33:05 2008 -0700 - - [win32] Use a DIB when cloning a surface for a WIN32_PRINTING dest - - In some cases we were creating a 1bpp temporary surface, losing all - color/grayscale data while printing. - - Ref: https://bugzilla.mozilla.org/show_bug.cgi?id=399388 - - src/cairo-win32-surface.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 6ac3eb487cf0de0d28bf6b14852de91b09fecb05 -Author: Vladimir Vukicevic -Date: Wed Mar 12 18:19:59 2008 -0700 - - [quartz] correctly force subpixel AA on a context, even if defaults say otherwise - - In some cases (in my case, having an external monitor attached to my - MBP), Quartz seems to default to grayscale AA even when it should be - using subpixel AA. CGContextGetAllowsFontSmoothing returns FALSE in - this case (pretty sure this is a Quartz bug). We can force subpixel - AA in this case by setting CGContextSetAllowsFontSmoothing. - - src/cairo-quartz-surface.c | 22 +++++++++++++++++++--- - 1 files changed, 19 insertions(+), 3 deletions(-) - -commit 5d11b937f1b769355a3dc7971ded40f60b001630 -Author: Vladimir Vukicevic -Date: Wed Mar 12 18:11:57 2008 -0700 - - [quartz] Apply fixup to unbounded operators to clear area outside of mask - - src/cairo-quartz-surface.c | 249 +++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 236 insertions(+), 13 deletions(-) - -commit c86cbcdd644e043dc5ae2eabf5dd6afa020e2358 -Author: Chris Wilson -Date: Wed Mar 12 17:54:54 2008 +0000 - - [cairoint.h] Mark _cairo_image_analyze_transparency as private. - - Add the required cairo_private markup for make check. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 222eb6f1400ab7a51632cbc18b1526664e50c2e4 -Author: Chris Wilson -Date: Wed Mar 12 17:52:16 2008 +0000 - - Define _BSD_SOURCE to enable prototypes for strdup, snprintf. - - strdup() and friends require at least _BSD_SOURCE or - _XOPEN_SOURCE >= 500 to be defined for the prototypes to be included. - For the time being, add the define to each source file that requires one - of the BSD functions. - - src/cairo-cff-subset.c | 1 + - src/cairo-font-face.c | 1 + - src/cairo-ft-font.c | 1 + - src/cairo-output-stream.c | 1 + - src/cairo-pdf-surface.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-scaled-font-subsets.c | 1 + - src/cairo-svg-surface.c | 3 ++- - src/cairo-truetype-subset.c | 1 + - src/cairo-type1-fallback.c | 1 + - src/cairo-type1-subset.c | 1 + - 11 files changed, 12 insertions(+), 1 deletions(-) - -commit 2d9203c349ffba863368e85567b2e89443d51746 -Author: Adrian Johnson -Date: Mon Mar 10 22:30:16 2008 +1030 - - win32-printing: Don't scale the miter limit - - since the miter is a ratio it should not be scaled like the other - stroke parameters when the user ctm is scaled. - - src/cairo-win32-printing-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f534fe434db38c2c24605bdfc251e0186dc7cafc -Author: Adrian Johnson -Date: Mon Mar 10 17:18:07 2008 +1030 - - PDF: Use cairo_image_analyse_transparency during analysis - - OPERATOR_SOURCE is only supported for opaque images. Check if and ARGB - image really contains transparency before returing unsupported. - - src/cairo-pdf-surface.c | 38 +++++++++++++++++++++++++++++++++++++- - 1 files changed, 37 insertions(+), 1 deletions(-) - -commit 61d45c9d1f2322c7c2ee7a58e7b3d5ccfac92db2 -Author: Adrian Johnson -Date: Sat Feb 16 22:34:39 2008 +1030 - - Remember the results of _cairo_image_analyze_transparency - - As _cairo_image_analyze_transparency() is only used on images in the - meta surface, we can store the results of the image analysis and - return the saved value on second and subsequent calls to analyze the - same image. - - Previously each image was analyzed twice - once during - CAIRO_PAGINATED_MODE_ANALYZE and once during - CAIRO_PAGINATED_MODE_RENDER. - - src/cairo-image-surface.c | 21 +++++++++++++++------ - src/cairo-ps-surface.c | 3 +++ - src/cairo-types-private.h | 3 ++- - src/cairoint.h | 1 + - 4 files changed, 21 insertions(+), 7 deletions(-) - -commit 7eb8f497d8ac8ee76809f958170f1e5370744ba8 -Author: Adrian Johnson -Date: Sat Feb 16 22:13:43 2008 +1030 - - Move analyze_image_transparency in to cairo-image-surface.c - - src/cairo-image-surface.c | 29 +++++++++++++++++++++++++++++ - src/cairo-ps-surface.c | 44 ++------------------------------------------ - src/cairo-types-private.h | 6 ++++++ - src/cairoint.h | 3 +++ - 4 files changed, 40 insertions(+), 42 deletions(-) - -commit 00091d50a6187acd0fd35aef16a4fa5fab3c8aa9 -Author: Adrian Johnson -Date: Sun Mar 9 16:44:18 2008 +1030 - - Add fallback image comment to PS output - - To help better understand when fallback images are used, a comment - similiar to the following is included with each fallback image in the - PS output. - - % Fallback Image: x=101, y=478, w=50, h=10 res=300dpi size=31500 - - src/cairo-ps-surface.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit 95acec69d8ee4fd37937f5b466c2baf612e9113a -Author: Adrian Johnson -Date: Sun Mar 9 16:40:25 2008 +1030 - - Round fallback image size up instead of down - - to ensure the fallback image completely covers the fallback region. - - src/cairo-paginated-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 94e41d5565ef72a0ef6e0235545c660aaf92b825 -Author: Vladimir Vukicevic -Date: Sat Mar 8 17:45:47 2008 -0800 - - [quartz] Don't force interpolation off for images - - Creating a CGImage with interpolation set to FALSE means that - it will never be interpolated; otherwise the interoplation - is controlled by the destination context's interpolation - quality setting. - - src/cairo-quartz-image-surface.c | 4 ++-- - src/cairo-quartz-surface.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 08e38d3f204911a793d3aa24bf2636caf3e58e20 -Author: Vladimir Vukicevic -Date: Sat Mar 8 16:06:01 2008 -0800 - - [quartz] align strides to 16 bytes, as per apple docs - - The docs indicate that doing so can yield a peformance win, so we align - ARGB32/RGB24 surface strides to 16 bytes. - - src/cairo-quartz-surface.c | 21 ++++++++++++++------- - 1 files changed, 14 insertions(+), 7 deletions(-) - -commit 73444f16fa82b63a19aa938eb42001b5731326da -Author: Vladimir Vukicevic -Date: Sat Mar 8 15:31:15 2008 -0800 - - [quartz] Don't try to call CGBitmapContextCreateImage on non-bitmap contexts - - src/cairo-quartz-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 091df2c59b6dbd53a748955db359443d5d445ba4 -Author: Vladimir Vukicevic -Date: Sat Mar 8 15:16:05 2008 -0800 - - [quartz] properly honor text antialiasing modes in show_glyphs - - src/cairo-quartz-surface.c | 35 +++++++++++++++++++++++---- - test/Makefile.am | 2 + - test/text-antialias-none-quartz-ref.png | Bin 0 -> 304 bytes - test/text-antialias-subpixel-quartz-ref.png | Bin 0 -> 1100 bytes - 4 files changed, 32 insertions(+), 5 deletions(-) - -commit 4f7ac14b8fdafd9fa85e797fb6e4c974788f70fc -Author: Vladimir Vukicevic -Date: Sat Mar 8 19:22:13 2008 -0800 - - [quartz] implement REPEAT/REFLECT for gradients - - Implement REPEAT/REFLECT for gradients in Quartz: for linear gradients, - they're implemented natively (by extending the gradient region); for - radial gradients, we generate a fallback image using pixman and render - that. - - src/cairo-quartz-surface.c | 203 ++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 179 insertions(+), 24 deletions(-) - -commit 869942a97e34b09a7bd5b8cfc54832ce9dbd08b6 -Author: Vladimir Vukicevic -Date: Fri Mar 7 16:55:47 2008 -0800 - - [quartz] some more quartz ref images - - test/Makefile.am | 2 ++ - test/big-line-quartz-ref.png | Bin 0 -> 1075 bytes - test/big-line-quartz-rgb24-ref.png | Bin 0 -> 941 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit 2e33d5f57bde82b953ebc5f9c1355327a7ac4967 -Author: Vladimir Vukicevic -Date: Fri Mar 7 16:46:53 2008 -0800 - - [quartz] Update a bunch of reference images - - Generated with Bitstream Vera font family installed, using ATSUI - font backend. - - test/Makefile.am | 14 ++++++++++++++ - test/font-matrix-translation-quartz-ref.png | Bin 0 -> 1041 bytes - test/glyph-cache-pressure-quartz-ref.png | Bin 0 -> 3491 bytes - test/linear-gradient-quartz-ref.png | Bin 0 -> 1164 bytes - test/long-dashed-lines-quartz-ref.png | Bin 0 -> 2313 bytes - test/mask-quartz-ref.png | Bin 10657 -> 10682 bytes - test/operator-clear-quartz-ref.png | Bin 1195 -> 1368 bytes - test/operator-clear-quartz-rgb24-ref.png | Bin 1244 -> 1201 bytes - test/radial-gradient-quartz-ref.png | Bin 0 -> 92334 bytes - test/random-intersections-quartz-ref.png | Bin 0 -> 197778 bytes - test/reflected-stroke-quartz-ref.png | Bin 0 -> 5293 bytes - test/rotate-image-surface-paint-quartz-ref.png | Bin 257 -> 257 bytes - test/select-font-face-quartz-ref.png | Bin 0 -> 2958 bytes - test/show-text-current-point-quartz-ref.png | Bin 0 -> 3198 bytes - test/text-antialias-gray-quartz-ref.png | Bin 0 -> 1039 bytes - test/text-pattern-quartz-rgb24-ref.png | Bin 0 -> 1867 bytes - test/text-rotate-quartz-ref.png | Bin 0 -> 17405 bytes - test/trap-clip-quartz-ref.png | Bin 6171 -> 6041 bytes - test/unantialiased-shapes-quartz-ref.png | Bin 0 -> 4394 bytes - 19 files changed, 14 insertions(+), 0 deletions(-) - -commit fb1378a24b5c6cd65b73aa611bb049ebb6f2b57a -Author: Vladimir Vukicevic -Date: Fri Mar 7 16:46:15 2008 -0800 - - [quartz] Correctly handle gradients with non-identity pattern transform - - Fixes http://bugs.freedesktop.org/show_bug.cgi?id=14248 - - src/cairo-quartz-private.h | 3 +- - src/cairo-quartz-surface.c | 68 ++++++++++++++++++------------------------- - 2 files changed, 31 insertions(+), 40 deletions(-) - -commit 6c7610067f8a131a4fbba8d2b6a88c27ef229bbe -Author: Vladimir Vukicevic -Date: Fri Mar 7 15:35:31 2008 -0800 - - [quartz] handle antialiasing correctly in stroke() and clip() - - A CoreGraphics bug was fixed so strokes are no longer incorrectly - drawn with antialiasing disabled; we no longer have to ignore - antialiasing for stroke(). Also, antialiasing was not being - correctly set for clip(). This fixes both issues. - - src/cairo-quartz-surface.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 21dab3c5e9fe1ff344ff809053618c2c8f0710f3 -Author: Vladimir Vukicevic -Date: Fri Mar 7 14:49:46 2008 -0800 - - [quartz] look up the right symbol name for CGContextGetType - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e52bad5e33e0b69b868525056c95ebd473fd6b10 -Author: Vladimir Vukicevic -Date: Fri Mar 7 14:49:15 2008 -0800 - - [quartz] split out (experimental) quartz-image into separate file - - configure.in | 15 +++++++++ - src/Makefile.am | 5 +++ - src/cairo-quartz-image-surface.c | 21 +++++++++---- - src/cairo-quartz-image.h | 59 ++++++++++++++++++++++++++++++++++++++ - src/cairo-quartz-surface.c | 10 ++---- - src/cairo-quartz.h | 6 ---- - 6 files changed, 97 insertions(+), 19 deletions(-) - -commit b52f127c12fd7ee2b4f532954cb1e9e4eb8561b4 -Author: Vladimir Vukicevic -Date: Thu Mar 6 16:52:54 2008 -0800 - - [quartz] fix text rendering with gradient or image source - - A quirk in how CGContextShowGlyphsWithAdvances works was causing all - non-solid glyphs to be rendered on top of eachother. This fixes the problem. - - src/cairo-quartz-surface.c | 65 ++++++++++++++++++++++++------------------- - 1 files changed, 36 insertions(+), 29 deletions(-) - -commit de515e0f9a46162dcdef3bce81702a56ac6f29bf -Author: Chris Wilson -Date: Thu Mar 6 08:10:16 2008 +0000 - - [cairo-png] Revert accidental chunk from FORMAT_A1 support. - - Whilst splitting the patches, I left in this line which would preserve - 1-bit grayscale unexpanded, but without any of the other FORMAT_A1 - support. - - src/cairo-png.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8ba8a1192497ff89215f8a1657cbe88609083fb1 -Author: Chris Wilson -Date: Tue Mar 4 13:59:57 2008 +0000 - - [win32] make check doc fixup. - - Add the missing '%' to the macro as demanded by make check. - - src/cairo-win32-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1dd894115e03aa202941ecebe9fd3420c73645ef -Author: Chris Wilson -Date: Tue Mar 4 09:04:17 2008 +0000 - - [cairo-pattern] Raise an error for _cairo_pattern_create_solid() failure. - - Add a missing _cairo_error() for the malloc failure in - _cairo_pattern_create_solid(). - - src/cairo-pattern.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 5efc5238d548599a90a02d922d031a899424d1c1 -Author: Chris Wilson -Date: Fri Feb 29 17:06:30 2008 +0000 - - [cairo-hull] Propagate error during hull computation. - - Propagate the original error status instead of returning a new NO_MEMORY - error. - - src/cairo-hull.c | 22 ++++++++++++---------- - 1 files changed, 12 insertions(+), 10 deletions(-) - -commit 11a2444ec875aaaed12c1f1cfed5eb8e139c306d -Author: Chris Wilson -Date: Fri Jan 18 14:53:50 2008 +0000 - - [cairo-png] Support generating CAIRO_FORMAT_RGB24 from PNGs. - - If the PNG does not have an alpha channel, then create an opaque image. - - src/cairo-png.c | 69 +++++++++++++++++++------ - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/png.c | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 204 insertions(+), 17 deletions(-) - -commit 06b375aee999220ce294c22fa50a3040c19d5492 -Author: Chris Wilson -Date: Fri Feb 29 11:55:01 2008 +0000 - - [cairo-png] Use cairo_format_stride_for_width() - - Use cairo_format_stride_for_width() instead of assuming the pixel size - and manually calculating the row stride. This should make it easier to - support loading multiple image formats in future. - - src/cairo-image-surface.c | 1 + - src/cairo-png.c | 16 ++++++++++------ - src/cairoint.h | 1 + - 3 files changed, 12 insertions(+), 6 deletions(-) - -commit b181f40949a855c957dc6e7a1033981a2ed7d05a -Author: Chris Wilson -Date: Thu Feb 28 16:04:08 2008 +0000 - - [test/a8-mask] Check negative strides as well. - - Check that we also allow surfaces to be created using a negative stride. - - test/a8-mask.c | 19 ++++++++++++++++++- - 1 files changed, 18 insertions(+), 1 deletions(-) - -commit b6eb1c5c92321849661198facd53510366050d45 -Author: Chris Wilson -Date: Fri Feb 29 11:49:14 2008 +0000 - - [cairo-image-surface] Harden cairo_format_stride_for_width(). - - Check the user supplied values for validity and potential overflow, - returning -1 in such cases, and update the documentation to warn of the - new error return. - - src/cairo-image-surface.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit c06d929325710c1a2cbecb8a64803ca8e1ffbec0 -Author: Chris Wilson -Date: Thu Feb 28 16:07:57 2008 +0000 - - [cairo-png] Further hardening against malloc failures. - - On some OOM paths, libpng raises a warning as opposed to an error, - these were not being propagated back to the caller. We were also not - checking that we did not overwrite a pre-existing error status when - raising an error whilst performing I/O. - - src/cairo-png.c | 38 +++++++++++++++++++++++++++++--------- - 1 files changed, 29 insertions(+), 9 deletions(-) - -commit c985096e6d7c04a780c055387e17ec4bb9334db3 -Author: Chris Wilson -Date: Fri Feb 29 11:16:39 2008 +0000 - - [cairo-xlib] Tidy usage of _cairo_error(). - - Avoid a duplicate call to _cairo_error() and add a missing one. - - src/cairo-xlib-display.c | 1 + - src/cairo-xlib-surface.c | 12 ++++++------ - 2 files changed, 7 insertions(+), 6 deletions(-) - -commit 914f4a3ec5a310c823558c27e500a23be808b9fe -Author: Chris Wilson -Date: Fri Feb 29 11:15:26 2008 +0000 - - [cairo-pattern] Tidy usage of _cairo_error(). - - Remove the duplicate calls to _cairo_error() along the constructor - error paths and a missing call to _cairo_error(). - - src/cairo-pattern.c | 20 +++++--------------- - 1 files changed, 5 insertions(+), 15 deletions(-) - -commit d9fb4d4bc55eae42f6348b142e667be454064e2c -Author: Chris Wilson -Date: Fri Feb 29 11:12:57 2008 +0000 - - [cairo-ft-font] Simplify return of the nil font face during construction. - - Simply return the nil font face from the internal constructor rather - than returning NULL and repeating the same fixup in the callers. - - src/cairo-ft-font.c | 12 +++--------- - 1 files changed, 3 insertions(+), 9 deletions(-) - -commit fd7d5d6e1dbad6c44a607d91ee59361ee19d32f9 -Author: Chris Wilson -Date: Fri Feb 29 11:11:47 2008 +0000 - - [cairo-clip] Raise _cairo_error() at original error site. - - In a couple of places where we detect an error and return an error - object to the user, we did not throw a _cairo_error(). - - src/cairo-clip.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 1654510a349d99167247d1004a481a95388cf0be -Author: Chris Wilson -Date: Fri Feb 29 11:10:34 2008 +0000 - - [cairo-cff-subset] Propagate error status. - - Remove duplicate _cairo_error() by ensuring that the error status is - always propagated from the original error site. Note that in one case - this eliminates a potential _cairo_error(CAIRO_INT_STATUS_UNSUPPORTED)! - - src/cairo-cff-subset.c | 47 +++++++++++++++++++++++++---------------------- - 1 files changed, 25 insertions(+), 22 deletions(-) - -commit 3b93d90edde7c065c6484e03e056b8605af85c4d -Author: Chris Wilson -Date: Fri Feb 29 10:16:05 2008 +0000 - - [cairo-type1-fallback] Propagate original error status. - - _cairo_error() has already been called at the originating error site, so - remove the duplicate (hard-coded!) call at the return statement. - - src/cairo-type1-fallback.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit 141c54cd276ae86f6677fa8f66a118264d4287bf -Author: Chris Wilson -Date: Fri Feb 29 08:54:33 2008 +0000 - - [cairo-truetype-subset] Remove duplicate _cairo_error(). - - _cairo_error() has already been called at the originating error site, so - remove the duplicate call at the return statement. - - src/cairo-truetype-subset.c | 7 ++----- - 1 files changed, 2 insertions(+), 5 deletions(-) - -commit d89edde84de9cec9ce6f76f4f2c44dd9c1220528 -Author: Vladimir Vukicevic -Date: Tue Mar 4 00:15:46 2008 -0800 - - [meta] always copy glyph array before passing to _cairo_surface_show_glyphs - - _cairo_surface_show_glyphs is allowed to mutate the glyph array; if it's - handed the internal array that the meta surface holds, then any subsequent - playback (such as for fine-grained fallbacks) will result in incorrect - glyph rendering. - - Ref: https://bugzilla.mozilla.org/show_bug.cgi?id=419917 - (I was unable to create a simple cairo testcase to demonstrate the problem.) - - src/cairo-meta-surface.c | 24 +++++++++++++++--------- - 1 files changed, 15 insertions(+), 9 deletions(-) - -commit 4a1f65b63e891436f5896b1ccb0af26dd4b9cfe1 -Author: Vladimir Vukicevic -Date: Mon Mar 3 21:16:12 2008 -0800 - - Fix msvc compilation issue in cairo-compiler-private.h - - __WIN32__ is not a standard define set by MSVC; we have to check for - __WIN32__ (for mingw/gcc) and for _MSC_VER, for MSVC. - - src/cairo-compiler-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4588b016d389bb678ab55f7dbbf2bf8cdf597bc1 -Author: Vladimir Vukicevic -Date: Mon Mar 3 20:00:08 2008 -0800 - - [quartz] compilation fix - - I'm an idiot and forgot to stg refresh, apparently. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2f9350424fd7eb03ecbdbdee2831944d4e9c35af -Author: Vladimir Vukicevic -Date: Mon Mar 3 17:43:41 2008 -0800 - - [win32] Treat all incoming HDCs as RGB24, regardless of depth - - Assuming A8/A1 doesn't really make sense in any case, and doing - this allows for rendering to 8bpp displays. - - src/cairo-win32-surface.c | 28 ++++++---------------------- - 1 files changed, 6 insertions(+), 22 deletions(-) - -commit 9dd55f6fe854ec2365a5c1d264e39ca03f6eceb5 -Author: Vladimir Vukicevic -Date: Mon Mar 3 17:40:21 2008 -0800 - - [quartz] use CGContextGetType API if available - - We need to have a way to figure out if a context is a bitmap context; - the current method works, but it prints a warning to the system console - if called on a non-bitmap context. There's a private CGContextGetType - API that seems to let us get this information. - - src/cairo-quartz-surface.c | 17 ++++++++++++++++- - 1 files changed, 16 insertions(+), 1 deletions(-) - -commit 5b334b274778f588c997d674c111a8bbf91be1df -Author: Antoine Azar -Date: Fri Feb 29 03:49:55 2008 -0500 - - fixed compilation typo on win32 - - src/cairo-win32-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 39d18ecbfda6b3c1234c5ef4a4723099990b3502 -Author: Claudio Ciccani -Date: Sat Mar 1 11:07:47 2008 +0100 - - [cairo-directfb] Fixed bug in clone_similar() (src_x added twice). - - src/cairo-directfb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6295c46569de13a96816ed8e30dcefd73af1eb18 -Author: Carl Worth -Date: Thu Feb 28 17:08:40 2008 -0800 - - INSTALL: Add notes on running autogen.sh if there is no configure script - - INSTALL | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 65 insertions(+), 6 deletions(-) - -commit e7e4a03dd387d264226105dc29c8541f0528fd2c -Author: Carl Worth -Date: Thu Feb 28 16:39:42 2008 -0800 - - get-path-extents: Fix APPROX_EQUALS to round values on both sides of the comparison - - test/get-path-extents.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 602489b150e879bc5cab6b1ad37c107799bf05ae -Author: Carl Worth -Date: Thu Feb 28 16:33:51 2008 -0800 - - get-path-extents: Use APPROX_EQUALS instead of EQUALS for text path tests - - This is done grudgingly due to freetype rounding the coordinates - of the extents when hinting is enabled. - - test/get-path-extents.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 50a6fe1a2aa88e1f5ba40eda21142319f98f3d0d -Author: Carl Worth -Date: Thu Feb 28 16:32:55 2008 -0800 - - Remove unnecessary cairo_set_tolerance call from get-path-extents test - - test/get-path-extents.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 4a73471087f42baf07988e0f2de323ed3b18dac9 -Merge: 54a6191... 523c7db... -Author: Carl Worth -Date: Thu Feb 28 16:21:11 2008 -0800 - - Merge branch 'master' of git.cairographics.org:/git/cairo - -commit 54a61911f26b46b6d9b7335ac7dda746081261d9 -Author: Carl Worth -Date: Thu Feb 28 16:20:56 2008 -0800 - - Increment version to 1.5.13 after the 1.5.12 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 523c7dbf6db85e75624ae111179dedb570212bb2 -Author: Behdad Esfahbod -Date: Thu Feb 28 18:53:08 2008 -0500 - - [cairo-scaled-font] Pedantic check for zero-area glyphs - - src/cairo-scaled-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3ec4b9a4fc96572f099d0e9679fec9e5eb97a32e -Author: Carl Worth -Date: Thu Feb 28 15:46:22 2008 -0800 - - Increment cairo version to 1.5.12 and libtool versioning to 18:0:16 - - configure.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit bf99e355d9d24a4820dc93b49321b15318501b61 -Author: Carl Worth -Date: Thu Feb 28 15:45:11 2008 -0800 - - Clarify that 16-bit limit still exists in pixman - - NEWS | 19 ++++++++++--------- - 1 files changed, 10 insertions(+), 9 deletions(-) - -commit 4cc174f72f635e885b5f5fdc3d67789d3952cd2e -Author: Carl Worth -Date: Thu Feb 28 15:41:36 2008 -0800 - - Mark the big-line test as XFAIL - - test/Makefile.am | 1 + - test/big-line.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit 5d0bc97b2000a7b7e40a7a3918f09d90bdf5376a -Author: Carl Worth -Date: Thu Feb 28 15:35:46 2008 -0800 - - Fix incorrect reference images for big-line test - - I mistakenly generated the original reference images with - a 16.16 version of cairo, (which manifests a different - buggy behavior than does the current 24.8 cairo). - - test/big-line-ps-ref.png | Bin 1161 -> 1148 bytes - test/big-line-ps-rgb24-ref.png | Bin 809 -> 830 bytes - test/big-line-ref.png | Bin 1421 -> 1486 bytes - test/big-line-rgb24-ref.png | Bin 1231 -> 1308 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit 4c7784e91eb953b905f187dda2a76dc102d73d01 -Author: Jody Goldberg -Date: Thu Feb 28 15:23:53 2008 -0800 - - Fix PDF ouput when cross-compiling with mingw - - Need to use __WIN32__ instead of _MSC_VER to select _snprintf in - place of snprintf when cross compiling. Otherwise all all %ld - arguments get misprinted resulting in broken PDF output. - - src/cairo-compiler-private.h | 5 ++++- - src/cairo-output-stream.c | 5 +---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 3d9db511c6990481add24f14225e36ea4d3f62d5 -Author: Carl Worth -Date: Thu Feb 28 15:07:50 2008 -0800 - - Remove references to PIXMAN_yuy2 and PIXMAN_yv12 enum values - - These were added in cb5ea8abfdf2c92241d4dea8bb827648697fd8e9 to - quiet a compiler warning. We're reverting them now to avoid - gratuitously requiring a new pixman version just to pick up two - enum values that we aren't actually using. - - src/cairo-image-surface.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit a8e5c6b924447bb1303589cc31792a6c4bcc27ec -Author: Carl Worth -Date: Thu Feb 28 15:05:12 2008 -0800 - - Fix typo in comment - - src/cairo-fixed-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 307a7448ea89c5cf2805bc3a8da31c5ea77e4542 -Author: Larry Ewing -Date: Thu Feb 28 15:02:23 2008 -0800 - - Add big-line test showing a 24.8 failure - - test/.gitignore | 1 + - test/Makefile.am | 5 +++ - test/big-line-ps-ref.png | Bin 0 -> 1161 bytes - test/big-line-ps-rgb24-ref.png | Bin 0 -> 809 bytes - test/big-line-ref.png | Bin 0 -> 1421 bytes - test/big-line-rgb24-ref.png | Bin 0 -> 1231 bytes - test/big-line.c | 69 ++++++++++++++++++++++++++++++++++++++++ - 7 files changed, 75 insertions(+), 0 deletions(-) - -commit 81175110ab44e74fe04f2bc8ed3c9983e23a82c6 -Author: Carl Worth -Date: Thu Feb 28 14:36:47 2008 -0800 - - NEWS: Add notes for cairo 1.5.12 - - NEWS | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 94 insertions(+), 0 deletions(-) - -commit fbd29a4025fc3bca3812d205230151e8c6e80f49 -Author: Carl Worth -Date: Thu Feb 28 14:36:32 2008 -0800 - - Fix 'make doc-publish' for when run twice on the same day - - Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8d515344c4ecded58566b704a740766f85359876 -Author: Carl Worth -Date: Thu Feb 28 14:35:57 2008 -0800 - - Add cairo-quartz to the manual - - doc/public/Makefile.am | 1 - - doc/public/cairo-docs.xml | 2 +- - doc/public/cairo-sections.txt | 11 ++++++++ - doc/public/tmpl/cairo-quartz.sgml | 49 ++++++++++++++++++++++++++++++++++++ - doc/public/tmpl/cairo-surface.sgml | 1 + - 5 files changed, 62 insertions(+), 2 deletions(-) - -commit c8c77f01f7429b43dba4840698497187ff4d5779 -Author: Carl Worth -Date: Thu Feb 28 13:02:27 2008 -0800 - - Fix typo in documentation - - src/cairo-quartz-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fa4b91fcac9b83cb66ac98dbcb395bd7b75c7560 -Author: Carl Worth -Date: Thu Feb 28 12:56:31 2008 -0800 - - Add missing reference images to make distcheck happily - - test/Makefile.am | 28 ++++++++++++++++++++++------ - 1 files changed, 22 insertions(+), 6 deletions(-) - -commit a95b22858fa5d65600faf5163966e18760a3cf35 -Merge: c84ec58... 67d5437... -Author: Carl Worth -Date: Thu Feb 28 12:30:13 2008 -0800 - - Merge branch '24.8' - -commit 67d543716e294f4af330c52dcc9597e16267425e -Author: Carl Worth -Date: Wed Feb 27 20:39:53 2008 -0800 - - PS: Fix to never break the final ~> that terminates a base85 stream. - - This was recently broken in commit 40d5082c24819968a5ee5a8f72e3b9cd61cb6105 - which uses a base85-stream but without strings for encapsulating image - data. The bug was that the protection for ~> was only being applied - to the string encodings rather than all base85 streams. - - We got lucky recently that the 24.8 change just happened to put the ~> - sequence on the line-wrap boundary so the test suite tripped up the - bug. Otherwise, we could have missed this for quite some time. - - src/cairo-ps-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit c84ec585123be1802b50665e192b80daf14fdd2b -Author: Carl Worth -Date: Wed Feb 27 16:24:10 2008 -0800 - - Add some missing .gitignore entries - - test/.gitignore | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 1df0b001b5b3e1062fa3c3a9070391105fe3d4ba -Author: Carl Worth -Date: Wed Feb 27 15:08:18 2008 -0800 - - Change cairo's fixed-point format from 16.16 to 24.8 - - The additional 8 bits of integer allows device space to be 256 - times larger before applications need to start worrying about - any issues with overflow. So this should help in many cases. - And the loss of 8 bits of sub-pixel precision shouldn't cause - any harm at all---16 was really much more than necessary. - - With this change the details of rasterization for several tests - are changed slightly, (particularly on arcs, for example), so - many reference images are updated here. - - NOTE: This change is currently breaking get-path-extents for - ps/pdf/svg as well as push-group for ps. We do not yet know - the reasons for these new failures. - - src/cairo-fixed-type-private.h | 2 +- - test/clip-operator-ref.png | Bin 8262 -> 8263 bytes - test/clip-twice-ref.png | Bin 1191 -> 1362 bytes - test/clip-twice-rgb24-ref.png | Bin 1120 -> 1198 bytes - test/copy-path-ps-argb32-ref.png | Bin 442 -> 0 bytes - test/copy-path-ps-ref.png | Bin 0 -> 474 bytes - test/copy-path-ps-rgb24-ref.png | Bin 440 -> 0 bytes - test/linear-gradient-ps-ref.png | Bin 718 -> 779 bytes - test/mask-ref.png | Bin 8381 -> 8476 bytes - test/mask-svg-argb32-ref.png | Bin 8389 -> 8527 bytes - test/meta-surface-pattern-svg-argb32-ref.png | Bin 3896 -> 3924 bytes - test/operator-clear-ps-argb32-ref.png | Bin 1437 -> 1400 bytes - test/operator-source-ref.png | Bin 4422 -> 4422 bytes - test/push-group-ref.png | Bin 3005 -> 3126 bytes - test/push-group-rgb24-ref.png | Bin 2849 -> 2961 bytes - test/random-intersections-ps-ref.png | Bin 89253 -> 89253 bytes - test/random-intersections-ref.png | Bin 132210 -> 148722 bytes - test/text-pattern-svg-argb32-ref.png | Bin 1749 -> 1733 bytes - test/text-rotate-ps-ref.png | Bin 6859 -> 6878 bytes - test/trap-clip-ref.png | Bin 5723 -> 5772 bytes - test/unantialiased-shapes-ref.png | Bin 3968 -> 4459 bytes - 21 files changed, 1 insertions(+), 1 deletions(-) - -commit 0532cb5c03bac394e22ac4200e8bebc3d959b21c -Author: Carl Worth -Date: Wed Feb 27 13:18:39 2008 -0800 - - Remove reference images for text-zero-len - - This test isn't generating any image output, so it's silly to - have a 60x60 reference image for that. Not only that, but the - rgb24 cases have always been failing due to a missing rgb24- - specific reference image, (but pdiff had been hiding that). - - test/Makefile.am | 1 + - test/text-zero-len-ref.png | Bin 130 -> 0 bytes - test/text-zero-len.c | 4 +--- - 3 files changed, 2 insertions(+), 3 deletions(-) - -commit 427a73ab31e2dce9d98820ba921b216176cde182 -Author: Carl Worth -Date: Wed Feb 27 12:43:37 2008 -0800 - - Add ps-specific reference images for two recently-added tests - - test/Makefile.am | 2 ++ - test/long-dashed-lines-ps-ref.png | Bin 0 -> 1516 bytes - test/reflected-stroke-ps-ref.png | Bin 0 -> 3898 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit 676c869d794f824b6e624d0b9b5c960870102406 -Author: Carl Worth -Date: Wed Feb 27 11:24:59 2008 -0800 - - Add some new ps-specific reference images - - These are necessary now due to the recent change to use pdiff - only when the differences are less than a particular threshold. - - test/Makefile.am | 8 ++++++++ - test/caps-joins-ps-ref.png | Bin 0 -> 1459 bytes - test/close-path-ps-ref.png | Bin 0 -> 309 bytes - test/infinite-join-ps-ref.png | Bin 0 -> 218 bytes - test/leaky-polygon-ps-ref.png | Bin 0 -> 354 bytes - test/rectilinear-miter-limit-ps-ref.png | Bin 0 -> 221 bytes - test/self-copy-ps-ref.png | Bin 0 -> 335 bytes - test/skew-extreme-ps-ref.png | Bin 0 -> 1048 bytes - test/text-rotate-ps-ref.png | Bin 0 -> 6859 bytes - test/transforms-ps-ref.png | Bin 0 -> 418 bytes - 10 files changed, 8 insertions(+), 0 deletions(-) - -commit 1889427e78f2501df78a42c5e75c696745b517a7 -Author: Vladimir Vukicevic -Date: Wed Feb 27 12:35:56 2008 -0500 - - Fix usage of rectangle_int16_t in ps surface, and rename types - - The rectangle_int16_t usage was causing failures on 24.8 (due to a wrong - pointer used to get_extents); I removed all the specific int16/int32 typedefs - to avoid this situation in the future. - - src/cairo-ps-surface.c | 2 +- - src/cairo-types-private.h | 47 ++++++++++++++++++++------------------------ - 2 files changed, 22 insertions(+), 27 deletions(-) - -commit 4f7d3063520b987d3df3bcebfaeed9489b16b12d -Author: Chris Wilson -Date: Wed Feb 27 10:11:08 2008 +0000 - - [cairo-paginated-surface] Fix enum compiler warning. - - Add a CAIRO_SURFACE_TYPE_QUARTZ_IMAGE to the switch to suppress a - compiler warning. - - src/cairo-paginated-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit cb5ea8abfdf2c92241d4dea8bb827648697fd8e9 -Author: Chris Wilson -Date: Thu Feb 21 16:03:42 2008 +0000 - - [cairo-image-surface] Compiler warnings and whitespace. - - Silence a couple of enum compiler warnings and tweak the whitespace. - - src/cairo-image-surface.c | 45 ++++++++++++++++++++++++--------------------- - 1 files changed, 24 insertions(+), 21 deletions(-) - -commit 22600e2393f2ec5ebe40213c49599167523ddf20 -Author: Chris Wilson -Date: Fri Feb 22 17:07:45 2008 +0000 - - [cairo-gstate] Remove a couple of impossible guards. - - Delete a couple of superfluous gstate != NULL guards. - - src/cairo-gstate.c | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit 37e597f1e553a98d06c5334aa95b918ed303e89e -Author: Chris Wilson -Date: Fri Feb 22 17:03:51 2008 +0000 - - [cairo-gstate] Propagate the error from _cairo_gstate_clone(). - - Propagate the true status value back from the _cairo_gstate_init_copy() - instead of assuming that is a NO_MEMORY and re-raising the error in the - caller. - - src/cairo-gstate.c | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -commit 127d7f43ea7043bba1d276d9721e80a702d9fd46 -Author: Chris Wilson -Date: Thu Feb 21 15:56:34 2008 +0000 - - [cairo-path-bounds] _cairo_path_fixed_bounds() can fail... - - I was wrong in my assertion that the call to - _cairo_path_fixed_interpret_flat() could not possibly fail with the - given _cairo_path_bounder_* callbacks - as I had missed the implicit - spline decomposition. (An interesting exercise would be to avoid the - spline allocation...) As a result we do have to check and propagate the - status return through the call stack. - - src/cairo-analysis-surface.c | 8 ++++++-- - src/cairo-gstate.c | 12 +++++++++--- - src/cairo-path-bounds.c | 10 +++++----- - src/cairo.c | 10 +++++++--- - src/cairoint.h | 4 ++-- - 5 files changed, 29 insertions(+), 15 deletions(-) - -commit 65a8a279430a08e6f28b1e0354e9f18fda1a0ad7 -Author: Chris Wilson -Date: Tue Feb 26 14:14:38 2008 +0000 - - [test] Add reflected-stroke to exercise stroking with a reflected ctm. - - Parts of the stroker depend upon whether we have in effect a reflection - matrix (one whose determinant < 0). This test incopororates the same - drawing under the a couple of reflections to exercise stroking under - matrices with both positive and negative determinants. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/reflected-stroke-ref.png | Bin 0 -> 4802 bytes - test/reflected-stroke.c | 100 +++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 103 insertions(+), 0 deletions(-) - -commit 76f0613e5f1244557eab31945d7e7c757d987304 -Author: Chris Wilson -Date: Tue Feb 26 09:50:51 2008 +0000 - - [test] Add long-dashed-lines to exercise _cairo_box_intersects_line_segment(). - - Draw a few rectangles whose vertices are outside the bounds of the - surface, but whose segments cross the surface. This exercises the new - dashed stroker optimisation which tries to determine whether the line - segment is visible. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/long-dashed-lines-ref.png | Bin 0 -> 2116 bytes - test/long-dashed-lines.c | 75 ++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 78 insertions(+), 0 deletions(-) - -commit cdeffc69d9daa931c3c4ffcbb9e093180da45fe5 -Author: Chris Wilson -Date: Tue Feb 26 13:04:33 2008 +0000 - - [cairo-quartz-surface] Make check fixup. - - A couple of minor corrections to satisfy make check. - - src/cairo-quartz-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 40f4750f5ec53ca9ca6e3d621fefb2bd1687909e -Author: Adrian Johnson -Date: Tue Feb 26 23:17:04 2008 +1030 - - Use PDF 're' operator for rectangle paths - - Modify cairo-pdf-operators.c to emit to 're' path operator when the - path contains only a rectangle. This can only be done when the path is - logically equivilent to the the path drawn by the 're' - operator. Otherwise dashed strokes may start on the wrong line. - - ie the path must be equivalent to: - - cairo_move_to (cr, x, y); - cairo_rel_line_to (cr, width, 0); - cairo_rel_line_to (cr, 0, height); - cairo_rel_line_to (cr, -width, 0); - cairo_close_path (cr); - - which is also equivilent to cairo_rectangle(). - - src/cairo-path-fixed.c | 24 ++++++++++++++++++++++++ - src/cairo-pdf-operators.c | 36 +++++++++++++++++++++++++++++------- - src/cairo-ps-surface.c | 2 ++ - src/cairoint.h | 4 ++++ - 4 files changed, 59 insertions(+), 7 deletions(-) - -commit 7acfee38b1ac6ef2292d754c7103bd65d58f72d8 -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:44:04 2008 -0500 - - [atsui] Make default font 'Helvetica' - - The previous default font was Monaco, which is a fixed-pitch font; Helvetica - is more inline with the other platform defaults. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9979f786acaf0ebba1bf97e40aeba66287a3c743 -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:27:33 2008 -0500 - - [test] update degenerate-pen test - - pdiff was hiding a rgb24 failure here, as the test was drawing using - black ink on the default black background. Instead, explicitly fill - the surface with white first. - - test/degenerate-pen-ps-argb32-ref.png | Bin 795 -> 0 bytes - test/degenerate-pen-ps-ref.png | Bin 0 -> 865 bytes - test/degenerate-pen-quartz-ref.png | Bin 0 -> 1144 bytes - test/degenerate-pen-ref.png | Bin 788 -> 1139 bytes - test/degenerate-pen.c | 4 ++++ - 5 files changed, 4 insertions(+), 0 deletions(-) - -commit baec928a69b5b763b30766cddfb1473e4e05fc3c -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:06:36 2008 -0500 - - [quartz] More mask fixes -- handle all types via fallback mask image - - src/cairo-quartz-surface.c | 79 +++++++++++++++++++++++++++++++--------- - test/mask-quartz-ref.png | Bin 0 -> 10657 bytes - test/mask-quartz-rgb24-ref.png | Bin 0 -> 8418 bytes - 3 files changed, 62 insertions(+), 17 deletions(-) - -commit 3fcd0be52215e1d8a59560d6b0919fb3f53b7a28 -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:06:35 2008 -0500 - - Use pdiff only if the pixel difference is less than a limit - - test/buffer-diff.c | 24 +++++++++++++++++------- - 1 files changed, 17 insertions(+), 7 deletions(-) - -commit 1dfb1bd45fbe08392e233af67f464b2776de9f19 -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:06:28 2008 -0500 - - [quartz] update test suite images for quartz - - test/dash-scale-quartz-ref.png | Bin 0 -> 8079 bytes - test/leaky-dash-quartz-ref.png | Bin 0 -> 241 bytes - test/line-width-scale-quartz-ref.png | Bin 0 -> 6434 bytes - test/mask-alpha-quartz-argb32-ref.png | Bin 0 -> 641 bytes - test/meta-surface-pattern-quartz-ref.png | Bin 0 -> 4572 bytes - test/meta-surface-pattern-quartz-rgb24-ref.png | Bin 0 -> 4063 bytes - test/new-sub-path-quartz-ref.png | Bin 386 -> 383 bytes - test/over-above-source-quartz-ref.png | Bin 0 -> 530 bytes - test/over-above-source-quartz-rgb24-ref.png | Bin 0 -> 456 bytes - test/over-around-source-quartz-ref.png | Bin 0 -> 612 bytes - test/over-around-source-quartz-rgb24-ref.png | Bin 0 -> 491 bytes - test/over-between-source-quartz-ref.png | Bin 0 -> 570 bytes - test/over-between-source-quartz-rgb24-ref.png | Bin 0 -> 467 bytes - test/rotate-image-surface-paint-quartz-ref.png | Bin 0 -> 257 bytes - test/trap-clip-quartz-ref.png | Bin 5814 -> 6171 bytes - 15 files changed, 0 insertions(+), 0 deletions(-) - -commit b439e638087d6e76d14ca42cd59dba3915dcc8e8 -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:06:25 2008 -0500 - - [quartz] fix mask to correctly take CTM into account - - src/cairo-quartz-surface.c | 40 ++++++++-------------------------------- - 1 files changed, 8 insertions(+), 32 deletions(-) - -commit a4975ab1173957a293aad8ccac51d1e43cab86da -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:06:23 2008 -0500 - - [quartz] Optimize path handling where possible - - src/cairo-path-fill.c | 66 +---------------------------------- - src/cairo-path-fixed.c | 81 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-quartz-surface.c | 11 ++++++ - src/cairoint.h | 7 ++++ - 4 files changed, 101 insertions(+), 64 deletions(-) - -commit 63711b1d4a61f21db070f30b9c153d0923cc24bb -Author: Vladimir Vukicevic -Date: Mon Feb 25 21:06:21 2008 -0500 - - [quartz] Add quartz-image-surface type - - src/Makefile.am | 2 +- - src/cairo-quartz-image-surface.c | 370 +++++++++++++++++++++++++++++ - src/cairo-quartz-private.h | 31 +++- - src/cairo-quartz-surface.c | 476 ++++++++++++++++++-------------------- - src/cairo-quartz.h | 6 + - src/cairo.h | 4 +- - 6 files changed, 634 insertions(+), 255 deletions(-) - -commit ecb54b96967ae0d1b5ec3a4d0955f46dd68f2b8b -Author: Behdad Esfahbod -Date: Mon Feb 25 19:48:58 2008 -0500 - - [test/get-path-extents] Don't use short-circuit && operators - - That causes some tests to be skipped if the preceding test failed. - - test/get-path-extents.c | 143 ++++++++++++++++++++-------------------------- - 1 files changed, 62 insertions(+), 81 deletions(-) - -commit be316b7cfae90878d05869329c85c9617019bbec -Author: Behdad Esfahbod -Date: Mon Feb 25 19:36:22 2008 -0500 - - [test]/get-path-extents] Use %g instead of %f to print doubles - - test/get-path-extents.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7c8c9cf334b8687ffe2d6f614e234bd1662689e6 -Author: Adrian Johnson -Date: Mon Feb 25 21:50:37 2008 +1030 - - PDF: Support OPERATOR_SOURCE when pattern is opaque - - src/cairo-pdf-surface.c | 12 ++++++++---- - 1 files changed, 8 insertions(+), 4 deletions(-) - -commit 35295546ef63821c5eee5336ec73eef2e03a035d -Author: Adrian Johnson -Date: Fri Feb 22 22:06:25 2008 +1030 - - Add mask pdf ref images - - The mask test pdf output is now correct. Poppler ref images - are required due to minor gradient rendering differences. - - test/mask-pdf-argb32-ref.png | Bin 0 -> 7834 bytes - test/mask-pdf-rgb24-ref.png | Bin 0 -> 7383 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 1df969158c83b31acbcf0963913bc4d4a9d20730 -Author: Adrian Johnson -Date: Fri Feb 22 21:59:47 2008 +1030 - - Refresh clip-operator ps/pdf ref images - - Because the meta surface analysis fix increased the size of some of - the fallback images. - - test/clip-operator-pdf-argb32-ref.png | Bin 9096 -> 11005 bytes - test/clip-operator-ps-argb32-ref.png | Bin 9062 -> 9084 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit eae259168fc4318f2a67f3107f953648e7ab925e -Author: Adrian Johnson -Date: Fri Feb 22 21:07:31 2008 +1030 - - Using correct surface size and clip when analyzing meta surface patterns - - The surface size and clip needs to be saved before and restored after - replaying meta surface patterns back to the analysis surface. The clip - is reset and the correct surface size is set before replaying the meta - surface. - - src/cairo-analysis-surface.c | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit 0db2c67cc5b29623070465f2cf6eafbff174ed30 -Author: Adrian Johnson -Date: Thu Feb 21 20:51:20 2008 +1030 - - PS: Replace gsave/grestore with q/Q - - src/cairo-ps-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 187ace8024ffadc3ee0b69bbd99c52d189cb7be2 -Author: Adrian Johnson -Date: Fri Feb 22 19:36:11 2008 +1030 - - PS: Make debug code compile - - src/cairo-ps-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 8f0ec1174ad3c7a59ecdcf7724b8e8b96801b3e0 -Author: Carl Worth -Date: Thu Feb 21 08:05:27 2008 -0800 - - Patch hole in fabric of time-space continuum - - NEWS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 70bb2abed04ed25abccbb2d6a5bdc58136701b0a -Author: Behdad Esfahbod -Date: Wed Feb 20 20:54:01 2008 -0500 - - [cairo-ft] Handle font sizes smaller than 1px correctly - - The FT_Set_Char_Size() docs say it replaces sizes smaller than 1.0 with 1.0. - So, we can't use x_scale and y_scale values less than one. The fix is easy thouh, - cap them to 1.0 and let the FT transform do the scaling down. - - src/cairo-ft-font.c | 36 ++++++++++++++++++++++-------------- - 1 files changed, 22 insertions(+), 14 deletions(-) - -commit dcab5019d5d9cb70aed0f473642ee840b785c4af -Author: Carl Worth -Date: Wed Feb 20 17:35:48 2008 -0800 - - Add poppler-specific reference image for radial-gradient - - This is justified by the previously mentioned bug on poppler - gradients. Note that this test only passes with a patch - to fix a bug in poppler (not yet upstream). Here it is: - - PATCH: Keep 'cairo_shape' and 'cairo' consistent - https://bugs.freedesktop.org/show_bug.cgi?id=14593 - - test/Makefile.am | 1 + - test/README | 1 + - test/radial-gradient-pdf-ref.png | Bin 0 -> 79490 bytes - 3 files changed, 2 insertions(+), 0 deletions(-) - -commit 70b683363f6e37d8952c8f857dd687022a02ada5 -Author: Emmanuel Pacaud -Date: Wed Feb 20 23:46:27 2008 +0100 - - [SVG] Fix a8-mask test failure. - - For A8 and A1 masks, the embedded mask image doesn't have an alpha channel. - In this case, the feColorMatrix should not be used, since it's goal is to - discard the color channels and to only keep the alpha one (which is what - we want when we have an ARGB32 mask image, since SVG uses all the channels - for the mask operation, where cairo only use the alpha channel). - - src/cairo-svg-surface.c | 21 ++++++++++++++++----- - 1 files changed, 16 insertions(+), 5 deletions(-) - -commit c5d056aaebe51d2c3430807de559b0d8ab3431d5 -Author: Emmanuel Pacaud -Date: Wed Feb 20 21:42:24 2008 +0100 - - [SVG] Fix the extend-reflect-similar test failure. - - SVG doesn't support extend reflect for image pattern, and there isn't - any trivial way to emulate this feature. So we use the image fallback - for now. This fix also forces an image fallback for extend-reflect, but - in the end, it generates more or less the same file (one big image for - the pattern). No other test is forced to use an image fallback by this - patch. - - src/cairo-svg-surface.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 1d236521a527d8b07962d1d671daff35134f4d31 -Author: Carl Worth -Date: Wed Feb 20 10:00:41 2008 -0800 - - Increment cairo version to 1.5.11 after the 1.5.10 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 83489f623f1239a731c5377d634ea8e9b782d448 -Author: Carl Worth -Date: Wed Feb 20 10:00:31 2008 -0800 - - SGML churn - - doc/public/tmpl/cairo-paths.sgml | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 0f2ecb5ec65ff13c3aafbe57600c1906f3fe7978 -Author: Carl Worth -Date: Wed Feb 20 08:24:32 2008 -0800 - - Update REFERENCE_IMAGES for distcheck - - test/Makefile.am | 64 +++++++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 47 insertions(+), 17 deletions(-) - -commit ee62a5fad6a32a6997600caac8b292aef4e2fe54 -Author: Carl Worth -Date: Wed Feb 20 08:08:52 2008 -0800 - - Mention that cairo_get_current_point is void again - - NEWS | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 118657136d3323f4769bee28ec2435a61540f0eb -Author: Carl Worth -Date: Wed Feb 20 08:06:39 2008 -0800 - - Increment cairo version to 1.5.10 and libtool versioning to 17:0:15 - - configure.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 5aacc54c430a982b51992d6fac186b955e478045 -Author: Carl Worth -Date: Wed Feb 20 08:02:45 2008 -0800 - - NEWS: Add notes for cairo 1.5.10 - - NEWS | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 94 insertions(+), 5 deletions(-) - -commit f954db72dd33de837296ede353ad9823b0e32fcd -Author: Carl Worth -Date: Wed Feb 20 06:24:48 2008 -0800 - - Add svg-specific reference image for mask-alpha - - There's no apparent bug here. - - test/mask-alpha-svg-argb32-ref.png | Bin 0 -> 615 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit c197c684a6b002ad8549d92f15d7f68b7c0068bd -Author: Carl Worth -Date: Wed Feb 20 05:58:42 2008 -0800 - - Update ps-specific reference images for ghostscript 8.61 - - I was wrong in the previous message where I said I had ghostscript 8.61 - installed. I do now, (and "gs --version" says the same thing), and - here are the new reference images. - - test/clip-fill-rule-ps-argb32-ref.png | Bin 322 -> 310 bytes - test/clip-fill-rule-ps-rgb24-ref.png | Bin 309 -> 302 bytes - test/dash-caps-joins-ps-argb32-ref.png | Bin 3854 -> 3870 bytes - test/dash-caps-joins-ps-rgb24-ref.png | Bin 3852 -> 3870 bytes - test/dash-curve-ps-ref.png | Bin 27206 -> 27293 bytes - test/dash-state-ps-argb32-ref.png | Bin 8652 -> 0 bytes - test/dash-state-ps-ref.png | Bin 0 -> 10219 bytes - test/dash-state-ps-rgb24-ref.png | Bin 8650 -> 0 bytes - test/dash-zero-length-ps-argb32-ref.png | Bin 319 -> 0 bytes - test/dash-zero-length-ps-ref.png | Bin 0 -> 319 bytes - test/dash-zero-length-ps-rgb24-ref.png | Bin 0 -> 304 bytes - test/degenerate-pen-ps-argb32-ref.png | Bin 771 -> 795 bytes - test/font-matrix-translation-ps-argb32-ref.png | Bin 785 -> 749 bytes - test/font-matrix-translation-ps-rgb24-ref.png | Bin 783 -> 749 bytes - test/ft-text-vertical-layout-type1-ps-ref.png | Bin 1894 -> 1911 bytes - test/ft-text-vertical-layout-type3-ps-ref.png | Bin 1879 -> 1867 bytes - test/glyph-cache-pressure-ps-ref.png | Bin 1667 -> 1413 bytes - test/gradient-alpha-ps-argb32-ref.png | Bin 179 -> 189 bytes - test/line-width-scale-ps-argb32-ref.png | Bin 3903 -> 0 bytes - test/line-width-scale-ps-ref.png | Bin 0 -> 3911 bytes - test/line-width-scale-ps-rgb24-ref.png | Bin 3901 -> 0 bytes - test/linear-gradient-ps-argb32-ref.png | Bin 613 -> 0 bytes - test/linear-gradient-ps-ref.png | Bin 0 -> 718 bytes - test/linear-gradient-ps-rgb24-ref.png | Bin 613 -> 0 bytes - test/linear-gradient-reflect-ps-ref.png | Bin 315 -> 314 bytes - test/meta-surface-pattern-ps-argb32-ref.png | Bin 3246 -> 3257 bytes - test/meta-surface-pattern-ps-rgb24-ref.png | Bin 3823 -> 3873 bytes - test/new-sub-path-ps-argb32-ref.png | Bin 559 -> 556 bytes - test/operator-clear-ps-argb32-ref.png | Bin 1409 -> 1437 bytes - test/operator-source-ps-argb32-ref.png | Bin 4026 -> 3893 bytes - test/operator-source-ps-rgb24-ref.png | Bin 3366 -> 3241 bytes - test/pixman-rotate-ps-argb32-ref.png | Bin 411 -> 0 bytes - test/pixman-rotate-ps-rgb24-ref.png | Bin 392 -> 0 bytes - test/random-intersections-ps-argb32-ref.png | Bin 89733 -> 0 bytes - test/random-intersections-ps-ref.png | Bin 0 -> 89253 bytes - test/random-intersections-ps-rgb24-ref.png | Bin 89733 -> 0 bytes - test/select-font-face-ps-ref.png | Bin 1352 -> 1079 bytes - test/show-text-current-point-ps-ref.png | Bin 1475 -> 1454 bytes - test/text-pattern-ps-argb32-ref.png | Bin 998 -> 984 bytes - test/text-pattern-ps-rgb24-ref.png | Bin 969 -> 936 bytes - test/text-rotate-ps-argb32-ref.png | Bin 7156 -> 0 bytes - test/text-rotate-ps-rgb24-ref.png | Bin 7156 -> 0 bytes - test/trap-clip-ps-argb32-ref.png | Bin 5715 -> 5591 bytes - test/trap-clip-ps-rgb24-ref.png | Bin 5630 -> 5512 bytes - 44 files changed, 0 insertions(+), 0 deletions(-) - -commit 8d2d4130146d16676c9ed6cf7d82d6aeaadf1c56 -Author: Carl Worth -Date: Wed Feb 20 05:11:53 2008 -0800 - - Expand the documentation of cairo/test/README - - Add notes on CAIRO_REF_DIR and the version requirements of - poppler and ghostscript necessary for getting no failures. - - test/README | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 87 insertions(+), 12 deletions(-) - -commit 4d42f569007f23e4cf9713c14f8c3dc640cf0f2c -Author: Carl Worth -Date: Wed Feb 20 04:22:58 2008 -0800 - - Update ps-specific reference images - - Presumably these are due to ghostscript version churn. I don't - know what version was used in the past, but we're going to be - more careful about documenting versions now. - - The ghostscript package I used here advertises itself as "8.61" - and "gs --version" reports 8.15.3. - - ...ft-text-vertical-layout-type1-ps-argb32-ref.png | Bin 1879 -> 0 bytes - test/ft-text-vertical-layout-type1-ps-ref.png | Bin 0 -> 1894 bytes - ...ft-text-vertical-layout-type3-ps-argb32-ref.png | Bin 1882 -> 0 bytes - test/ft-text-vertical-layout-type3-ps-ref.png | Bin 0 -> 1879 bytes - test/text-pattern-ps-rgb24-ref.png | Bin 969 -> 969 bytes - 5 files changed, 0 insertions(+), 0 deletions(-) - -commit 78b270601ce54545a0c68075a60a3b85a2f37adb -Author: Carl Worth -Date: Wed Feb 20 03:49:16 2008 -0800 - - Add poppler-specific reference image for source-clip-scale - - This one doesn't have any associated poppler bug report. The - rendering by poppler is totally reasonable, and not problematic - at all with respect to what the test is actually testing for. - - test/source-clip-scale-pdf-ref.png | Bin 0 -> 113 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 64b7489a50808bd660a47615d0775842c77dd0f2 -Author: Carl Worth -Date: Wed Feb 20 03:47:34 2008 -0800 - - Add poppler-specific reference image for push-group - - This is justified by the following new bug report: - - Incorrect clipping of group object (regression?) - https://bugs.freedesktop.org/show_bug.cgi?id=14580 - - test/README | 5 +++++ - test/push-group-pdf-ref.png | Bin 0 -> 2694 bytes - test/push-group-pdf-rgb24-ref.png | Bin 0 -> 2611 bytes - 3 files changed, 5 insertions(+), 0 deletions(-) - -commit 7aaa3e67c5016357e28476b10d768101e1e5bd41 -Author: Carl Worth -Date: Wed Feb 20 03:38:07 2008 -0800 - - Add poppler-specific reference images for tests needing EXTEND_PAD - - This is justified by the following new bug report: - - Poppler should paint images with CAIRO_EXTEND_PAD - https://bugs.freedesktop.org/show_bug.cgi?id=14578 - - The four affected tests are: - - paint-source-alpha - paint-with-alpha - rotate-image-surface-paint - scale-source-surface-paint - - test/README | 9 +++++++-- - test/paint-source-alpha-pdf-ref.png | Bin 0 -> 473 bytes - test/paint-with-alpha-pdf-ref.png | Bin 0 -> 466 bytes - test/rotate-image-surface-paint-pdf-rgb24-ref.png | Bin 0 -> 207 bytes - test/scale-source-surface-paint-pdf-rgb24-ref.png | Bin 0 -> 198 bytes - 5 files changed, 7 insertions(+), 2 deletions(-) - -commit fdd046edccf283bfedb59733516f6110cc96ea82 -Author: Carl Worth -Date: Wed Feb 20 03:23:38 2008 -0800 - - Add poppler-specific reference image for text-pattern - - This is justified with the following new bug report: - - Poppler renders patterned text as black - https://bugs.freedesktop.org/show_bug.cgi?id=14577 - - test/README | 6 ++++++ - test/text-pattern-pdf-argb32-ref.png | Bin 0 -> 1823 bytes - test/text-pattern-pdf-rgb24-ref.png | Bin 0 -> 508 bytes - 3 files changed, 6 insertions(+), 0 deletions(-) - -commit 43302f0408d92138ac12afcd855d44c430074859 -Author: Carl Worth -Date: Wed Feb 20 03:15:17 2008 -0800 - - Re-enable pdf tests with gradients and add poppler-based reference images - - This freezes the current (buggy) poppler result in the test suite - so that we will notice any future regressions. - - boilerplate/cairo-boilerplate-pdf.c | 42 -------------------- - test/README | 47 +++++++++++++++++++++++ - test/gradient-alpha-pdf-argb32-ref.png | Bin 0 -> 126 bytes - test/gradient-alpha-pdf-rgb24-ref.png | Bin 0 -> 121 bytes - test/gradient-alpha.c | 3 +- - test/linear-gradient-pdf-ref.png | Bin 0 -> 935 bytes - test/linear-gradient-reflect-pdf-argb32-ref.png | Bin 0 -> 248 bytes - test/linear-gradient-reflect-pdf-rgb24-ref.png | Bin 0 -> 248 bytes - test/linear-gradient.c | 3 +- - test/text-pattern.c | 3 +- - test/trap-clip-pdf-argb32-ref.png | Bin 0 -> 5809 bytes - test/trap-clip-pdf-rgb24-ref.png | Bin 0 -> 5768 bytes - test/trap-clip.c | 3 +- - 13 files changed, 51 insertions(+), 50 deletions(-) - -commit 635fed77676f2446cbedfcf52a85f96e32c3a241 -Author: Carl Worth -Date: Wed Feb 20 02:24:28 2008 -0800 - - Re-enable some pdf tests now that poppler has knockout support - - We had several pdf tests disabled waiting for this bug fix: - - Poppler does not correctly handle knockout groups - https://bugs.freedesktop.org/show_bug.cgi?id=12185 - - That's in place for poppler now, so we're turning the tests - back on. Some of the affected tests now pass perfectly: - - over-above-source - over-around-source - over-below-source - over-between-source - - Some just needed new reference images: - - operator-clear - clip-operator-pdf-argb32 - - The remaining tests still fail, but none of the failures can - obviously be ascribed to just poppler problems: - - clip-operator-pdf-rgb24 - operator-source - unbounded-operator - - The first two have some serious problems, while in the case - of unbounded-operator the problem is extremely minor (a white - grid appears in the background where the reference image is - all black). - - boilerplate/cairo-boilerplate-pdf.c | 13 ------------- - test/clip-operator-pdf-argb32-ref.png | Bin 0 -> 9096 bytes - test/operator-clear-pdf-argb32-ref.png | Bin 0 -> 1438 bytes - test/operator-clear-pdf-rgb24-ref.png | Bin 0 -> 1170 bytes - 4 files changed, 0 insertions(+), 13 deletions(-) - -commit 98189d860e2c4219f994dd19fb199fcf4b457852 -Author: Carl Worth -Date: Wed Feb 20 01:43:51 2008 -0800 - - svg: Add support for flattening SOURCE painting when there's nothing beneath it - - This avoids unnecessary rasterization in many cases when using - cairo_surface_create_similar with an SVG surface. Because of that - it eliminates test-suite failures for the -similar cases where we - have svg-specific reference images. Namely: - - font-matrix-translation, ft-text-vertical-layout-type1, - ft-text-vertical-layout-type3, mask, meta-surface-pattern, - paint-source-alpha, paint-with-alpha, rotate-image-surface-paint, - scale-source-surface-paint, source-clip-scale, text-pattern, - text-rotate - - In all of these cases the test suite was kindly noticing that we - weren't getting the same 'native' SVG output that was desired. - - src/cairo-svg-surface.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) - -commit e7c6e291a64391004ae7bafc4d69830af5b0c8b1 -Author: Carl Worth -Date: Wed Feb 20 01:43:22 2008 -0800 - - Add svg-specific reference images for meta-surface-pattern test - - test/meta-surface-pattern-svg-argb32-ref.png | Bin 0 -> 3896 bytes - test/meta-surface-pattern-svg-rgb24-ref.png | Bin 0 -> 4593 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit a1867412210db667a02e7b656729e2cf6a64a2d7 -Author: Carl Worth -Date: Wed Feb 20 01:38:59 2008 -0800 - - cairo-svg: Make operation_supported depend on analyze_operation instead of the other way around. - - This prepares for analyze_operation to be able to return more than - just two values, (which will allow the svg backend to take advantage - of CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY). - - src/cairo-svg-surface.c | 27 +++++++++++++++------------ - 1 files changed, 15 insertions(+), 12 deletions(-) - -commit 8f11c4583f58f97c348aafcd71db059ac7791fe7 -Author: Carl Worth -Date: Mon Feb 18 17:32:35 2008 -0800 - - Revert "[meta-surface] Adjust tolerance when replaying to surfaces with device scale" - - This reverts commit 7f21bfb0a8265095d68bb5ff6afae7553683a776. - - We don't yet have consensus on whether this is a good change or not. - So for now, we're favoring the existing behavior until we can work - that out. - - src/cairo-meta-surface.c | 11 +++++------ - 1 files changed, 5 insertions(+), 6 deletions(-) - -commit 1747718406b3450bc8869f0e050f9a18b3036030 -Author: Carl Worth -Date: Thu Feb 14 12:27:47 2008 -0800 - - Add a spline to the degenerate-pen test case - - This was triggering an infinite loop (with 24.8 fixed-point) just before - the previous fix. - - NOTE: I usually put bug demonstrations just before the fixes, but this - one was quite harsh---not only was cairo looping infinitely, but it - was appending to an array on each iteration---so not kind at all. - - test/degenerate-pen-ps-argb32-ref.png | Bin 374 -> 771 bytes - test/degenerate-pen-ref.png | Bin 278 -> 788 bytes - test/degenerate-pen.c | 3 +++ - 3 files changed, 3 insertions(+), 0 deletions(-) - -commit d6d81c92b501b32be6c48d134683ebd51f63c134 -Author: Carl Worth -Date: Sat Feb 16 13:27:02 2008 -0800 - - Eliminate a potential infinite loop in spline stroking - - Sometimes > rather than >= can make a bug difference. The infinite loop - was noticed here: - - Infinite loop when scaling very small values using 24.8 - http://bugs.freedesktop.org/show_bug.cgi?id=14280 - - Note that that particular test case only exposes the infinite - loop when using 24.8 instead of 16.16 fixed-point values by - setting CAIRO_FIXED_FRAC_BITS to 8. - - src/cairo-pen.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit 770b058c9e53c6d0e3a3f600cd5a9631eee39dff -Author: Carl Worth -Date: Sat Feb 16 13:17:49 2008 -0800 - - Remove _cairo_slope_[counter_]clockwise - - These two functions were hiding away some important details - about strictness of inequalities. Also, the callers differ - on the strictness they need. Everything is cleaner and more - flexible by making the callers just call _cairo_slope_compare - directly. - - src/cairo-path-stroke.c | 2 +- - src/cairo-pen.c | 30 ++++++++++++++++-------------- - src/cairo-slope.c | 23 ----------------------- - src/cairoint.h | 6 ------ - 4 files changed, 17 insertions(+), 44 deletions(-) - -commit 2d22d698d32575fd883d2be072c041709254c86d -Author: Carl Worth -Date: Thu Feb 14 11:50:26 2008 -0800 - - Make _cairo_slope_compare return a non-zero result for slopes that differ by pi - - This was an initial attempt to fix the infinite loop bug - described here: - - Infinite loop when scaling very small values using 24.8 - http://bugs.freedesktop.org/show_bug.cgi?id=14280 - - This doesn't actually fix that bug, but having a more robust - comparison function can only be a good thing. - - src/cairo-slope.c | 30 ++++++++++++++++++++++++++++-- - 1 files changed, 28 insertions(+), 2 deletions(-) - -commit 9292c0a1b509ecea8415cdbc21415d9ce7615e04 -Author: Chris Wilson -Date: Wed Feb 20 10:54:14 2008 +0000 - - [gitignore] Ignore cairo-no-features.h - - Add the autogenerated header to the ignore list. - - src/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e6a8768a0446b9e537bb77bd309ad5719fe74451 -Author: Chris Wilson -Date: Wed Feb 20 10:53:15 2008 +0000 - - [cairo-scaled-font-subsets] Fix memleak on failure to reserve .notdef glyph. - - Remember to destroy the sub_font if we fail to reserve the .notdef glyph - during construction. - - Whilst in the vicinity, adjust the function prototype to remove - duplicated calls to _cairo_error(). - - src/cairo-scaled-font-subsets.c | 57 ++++++++++++++++++++------------------ - 1 files changed, 30 insertions(+), 27 deletions(-) - -commit e208f31236af6b2012d725696485f96fe4acd863 -Author: Chris Wilson -Date: Tue Feb 19 15:14:37 2008 +0000 - - [cairo-surface] Check surface status on internal paths as well. - - Return any error status on the surface to the caller. - - src/cairo-surface.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 49 insertions(+), 1 deletions(-) - -commit 1d59daecfe1078ba2ad56f80b35c934312dc4f6b -Author: Chris Wilson -Date: Tue Feb 19 15:13:53 2008 +0000 - - [cairo-pdf-operators] Cleanup word_wrap_stream - - Ensure that the stream is destroyed on the error paths. - - src/cairo-pdf-operators.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit aac5650beebb40068767a7d3ffedf634a3da5002 -Author: Chris Wilson -Date: Tue Feb 19 14:39:13 2008 +0000 - - [pdf-operators] Missing private markup. - - Fixup make check by adding the required cairo_private markup. - - src/cairo-pdf-operators-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit eaaa1415a9becb8f11ddde4094fcf0aec6d1458f -Author: Adrian Johnson -Date: Wed Feb 20 21:05:23 2008 +1030 - - Change PDF newline characters from \r\n to \n - - The PDF backend has always used "\r\n" for the newline character. - There was no particular reason for this choice. PDF allows "\n", "\r", - or "\r\n" as the end of line marker. - - Since the PS backend (which uses "\n") has started sharing - cairo-pdf-operators.c with the PDF backend, the PS output has been - getting mixed "\n" and "\r\n" newlines. - - Fix this by changing the PDF backend to use "\n". - - src/cairo-pdf-operators.c | 40 +- - src/cairo-pdf-surface.c | 878 ++++++++++++++++++++++---------------------- - 2 files changed, 459 insertions(+), 459 deletions(-) - -commit 24c319fbae9ea4a43bf4e1fdf94d069b4ad78904 -Author: Bertram Felgenhauer -Date: Sat Feb 16 09:22:01 2008 +0100 - - [perf] add tests for magnified and minified image sources. - With this change, cairo's performance testsuite will catch performance - regressions in pixman's fbFetchTransformed path. - - perf/cairo-perf-cover.c | 34 ++++++++++++++++++++++++++++++++++ - 1 files changed, 34 insertions(+), 0 deletions(-) - -commit 21049a9a5eb7ba0873771428bde0db8f8b1ece08 -Author: Antoine Azar -Date: Mon Feb 18 23:57:38 2008 -0500 - - Added cairo-misc.c to makefile - - src/Makefile.win32 | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f2d21e73827d81da559ee4cd046bfb02dfd66a83 -Author: Vladimir Vukicevic -Date: Mon Feb 18 17:18:51 2008 -0800 - - [stroker] fix _compute_normalized_device_slope to return correct sign - - The optimization to avoid sqrt() for horizontal/vertical lines in - _compute_normalized_device_slope was causing us to return a negative - magnitude with a positive slope for left-to-right and bottom-to-top - lines, instead of always returning a positive magnitude and a slope - with an appropriate sign. - - src/cairo-path-stroke.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) - -commit 8fb624dbf2c660fbbf6d6964f7876656e1b62e41 -Author: Adrian Johnson -Date: Sun Feb 17 19:49:39 2008 +1030 - - Use correct prefix for _cairo_pdf_operators_stroke - - s/operator/operators/ - - src/cairo-pdf-operators-private.h | 10 +++++----- - src/cairo-pdf-operators.c | 10 +++++----- - src/cairo-pdf-surface.c | 20 ++++++++++---------- - src/cairo-ps-surface.c | 10 +++++----- - 4 files changed, 25 insertions(+), 25 deletions(-) - -commit d2a1576941e46fb71eda8b27bd3df4de691df6ff -Author: Adrian Johnson -Date: Sun Feb 17 19:48:01 2008 +1030 - - PDF/PS: Fix mismatched save restore when using fill-stroke - - src/cairo-pdf-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 3a05b5d2d5989386e1500ffcf8738ca89ef8457d -Author: Adrian Johnson -Date: Sun Feb 17 19:45:45 2008 +1030 - - PDF/PS: No need to use save/restore for solid colors - - src/cairo-pdf-surface-private.h | 1 + - src/cairo-pdf-surface.c | 7 +++++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit c7204adcf3ff6614aae75c4c1c5ef0fc5269d834 -Author: Behdad Esfahbod -Date: Sun Feb 17 02:32:00 2008 -0500 - - [cairo-misc.c] Add misc functions to this file - - Anything functions that doesn't group with other functions enough to - justify its own file should go here now. - - src/Makefile.am | 1 + - src/cairo-gstate.c | 79 ---------- - src/cairo-misc.c | 407 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.c | 287 ------------------------------------ - 4 files changed, 408 insertions(+), 366 deletions(-) - -commit a1360322c4e2867d7060a7f65bf0d96d9af36174 -Author: Adrian Johnson -Date: Sun Feb 17 17:16:53 2008 +1030 - - PS: Remove unused code - - src/cairo-ps-surface.c | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -commit 2dfe32a0ff9272ade481796f0f25fd83863c7600 -Author: Adrian Johnson -Date: Sun Feb 17 16:45:15 2008 +1030 - - Implement PDF fill-stroke - - src/cairo-meta-surface.c | 15 ++++++- - src/cairo-pdf-operators-private.h | 8 +++ - src/cairo-pdf-operators.c | 51 ++++++++++++++++++++- - src/cairo-pdf-surface.c | 92 +++++++++++++++++++++++++++++++++++++ - 4 files changed, 164 insertions(+), 2 deletions(-) - -commit 1e7fa4b9f5c478bcb7c49667192f239c2bd1d03e -Author: Behdad Esfahbod -Date: Sat Feb 16 22:47:31 2008 -0500 - - [cairo-pdf-operators] Pass matrix by reference, not by value - - src/cairo-pdf-operators-private.h | 4 ++-- - src/cairo-pdf-operators.c | 8 ++++---- - src/cairo-pdf-surface.c | 12 ++++++------ - src/cairo-ps-surface.c | 9 +++++---- - 4 files changed, 17 insertions(+), 16 deletions(-) - -commit 357f2334f0bd518815c80905e451b6ac1ba43553 -Author: Adrian Johnson -Date: Sat Feb 16 20:37:16 2008 +1030 - - PDF: Allow word_wrap_stream to split hex strings - - src/cairo-pdf-operators.c | 50 +++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 44 insertions(+), 6 deletions(-) - -commit 204a27aadb2390b62bd75857d8736b34870f79b1 -Author: Adrian Johnson -Date: Sat Feb 16 20:35:42 2008 +1030 - - PDF: Word wrap _cairo_pdf_operators_show_glyphs output - - src/cairo-pdf-operators.c | 38 ++++++++++++++++++++++++-------------- - 1 files changed, 24 insertions(+), 14 deletions(-) - -commit bcb0395288128da7dd8f24c503b8badacc806720 -Author: Behdad Esfahbod -Date: Fri Feb 15 15:56:29 2008 -0500 - - [docs] Fix typo - - src/cairo-font-options.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 536e1963b774038d9afc7fbf63303e118b0250a2 -Author: Shailendra Jain -Date: Fri Feb 15 13:21:29 2008 +0000 - - Compile fix for AIX. - - Minor correction for a build failure on AIX: - "mozilla/gfx/cairo/cairo/src/cairo-gstate.c", line 45.43: 1506-294 (S) - Syntax error in expression on #if directive. - - (Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=415867.) - - src/cairo-gstate.c | 2 +- - src/cairo-matrix.c | 2 +- - test/invalid-matrix.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -commit 31a67c5f22eb2cbb94878d47be19b32ff319c5b3 -Author: Chris Wilson -Date: Fri Feb 15 13:16:58 2008 +0000 - - [pdf] Minor make check fix. - - Add a missing '%' in the documentation. - - src/cairo-pdf-operators.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9e9fda047879f0336c2627483c78499af8ef5458 -Author: Chris Wilson -Date: Tue Feb 12 11:16:37 2008 +0000 - - [test/bitmap-font] Destroy the font options after use. - - Fix the leak of the font options. - - test/bitmap-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 92970ec83687435e75e60110cb7434670515ae57 -Author: Chris Wilson -Date: Mon Feb 11 17:00:30 2008 +0000 - - [test/invalid-matrix] Test detection of infinities. - - Feed infinities into the API and check that we correctly return - INVALID_MATRIX. - - test/invalid-matrix.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 122 insertions(+), 1 deletions(-) - -commit 012f68e043d3594fa6cb5235eafb1ca1bfe2d099 -Author: Chris Wilson -Date: Mon Feb 11 16:48:24 2008 +0000 - - [test/invalid-matrix] Check scale(0,0) - - Test that INVALID_MATRIX is returned if the user calls cairo_scale(0,0) - or a variant thereof. - - test/invalid-matrix.c | 16 ++++++++++++++++ - 1 files changed, 16 insertions(+), 0 deletions(-) - -commit eb7488e1e67b872d29d1bd459bb7994ad3789576 -Author: Chris Wilson -Date: Mon Feb 11 16:45:18 2008 +0000 - - [test/invalid-matrix] Promote incorrect status warning to an error. - - As the last warning for an incorrect status has been resolved, throw an - error if we regress and no longer report an INVALID_MATRIX under testing. - - test/invalid-matrix.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit fc732c3aaa53d8abcea46ad28da696ad08d09b63 -Author: Chris Wilson -Date: Mon Feb 11 16:17:34 2008 +0000 - - [cairo-scaled-font] Create error objects on demand. - - In order to correctly report the error back to the user during the - creation of a scaled font, we need to support a nil object per error. - Instead of statically allocating all possible errors, lazily allocate - the nil object the first time we need to report a particular error. - - This fixes the misreporting of an INVALID_MATRIX or NULL_POINTER that - are common user errors during the construction of a scaled font. - - src/cairo-debug.c | 2 + - src/cairo-mutex-list-private.h | 1 + - src/cairo-scaled-font.c | 65 +++++++++++++++++++++++++++++++++++---- - src/cairo.c | 10 +----- - src/cairo.h | 2 +- - src/cairoint.h | 15 ++++++++- - test/font-options.c | 2 +- - 7 files changed, 79 insertions(+), 18 deletions(-) - -commit 38fcc015a5106e5007035c22355da863b3bc9def -Author: Chris Wilson -Date: Mon Feb 11 16:14:40 2008 +0000 - - [cairo-ft-font] Propagate error detected during determination of scale factors. - - Ensure that if an invalid matrix is detected when creating the toy font, - the error is propagated to the caller. - - src/cairo-ft-font.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit ad265cc9f26a20f2336747d69b28bc6ca0d91f4b -Author: Chris Wilson -Date: Mon Feb 11 14:58:21 2008 +0000 - - [cairo-font-options] Disallow use of NULL font-options. - - Partial revert of commit 0086db893cba90dc73824d77c661d2965ad48112. - - This is a follow to the earlier commit that allowed creation of scaled - fonts using a NULL font options (by interpreting the NULL as meaning - use the default options) to reflect the comments made by Behdad - (http://lists.cairographics.org/archives/cairo/2008-January/012714.html). - - The intent is that the public font options getter/setter API has similar - defensive behaviour to that of the core objects - i.e. do not overwrite - the nil object and if the object is in error then return the default - value. For the indirect use of a NULL/nil font options (e.g. creation of - scaled fonts), then an error should be returned rather than crashing. - - src/cairo-font-face.c | 8 ++---- - src/cairo-font-options.c | 36 ++++++++++++------------------- - src/cairo-ft-font.c | 8 ++---- - src/cairo-scaled-font.c | 13 +++-------- - src/cairo-win32-font.c | 4 +- - src/cairo.c | 10 +++----- - test/font-options.c | 51 ++++++++++++++++++++++++++------------------- - 7 files changed, 59 insertions(+), 71 deletions(-) - -commit 790eaef71cbd30e1994c9499ab553f2ef5e5d620 -Author: Chris Wilson -Date: Mon Feb 11 10:31:33 2008 +0000 - - [boilerplage] Add getopts to the boilerplate library. - - Remember to compile the _cairo_getopts() function into the boilerplate - convenience library for cairo-perf. - - boilerplate/Makefile.am | 14 ++++++++------ - 1 files changed, 8 insertions(+), 6 deletions(-) - -commit fe93038ef343c769b38b9e7f15c1be415e6bcdd9 -Author: Chris Wilson -Date: Fri Feb 8 08:36:34 2008 +0000 - - [test/font-options] Check for HAVE_FCFINI - - Only pull in the fontconfig headers if we actually use FcFini(). - - test/font-options.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2eb03b8cf2b2c0520d018127b377071a8a63799d -Author: Chris Wilson -Date: Thu Feb 7 17:07:43 2008 +0000 - - [cairo-ps-surface] Tidy return from _analyze_image_transparency(). - - _analyze_image_transparency() only returned SUCCESS, so use the return - parameter to pass back the transparency type instead of using an out - parameter. - - src/cairo-ps-surface.c | 37 +++++++++++++------------------------ - 1 files changed, 13 insertions(+), 24 deletions(-) - -commit bc83e028b8d12223164263a9f9cfc822ed40f8c8 -Author: Chris Wilson -Date: Thu Feb 7 11:47:11 2008 +0000 - - [cairo-output-stream] Add format(printf) markup. - - Add CAIRO_PRINTF_FORMAT attribute to the printf-esque output stream - functions, and fixup the one warning caught by the compiler. - - src/cairo-output-stream-private.h | 6 ++++-- - src/cairo-pdf-surface.c | 4 ++-- - 2 files changed, 6 insertions(+), 4 deletions(-) - -commit 4430157841d4b55061c6af58576cfe6ec66fcfe5 -Author: Chris Wilson -Date: Wed Feb 6 11:37:13 2008 +0000 - - [test] Summarise the tests failures per backend. - - After the summary, show the total number of failures per backend. - - test/Makefile.am | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit af88d4d9ae66152ac885531bfc73a47eb78d1d03 -Author: Chris Wilson -Date: Wed Jan 30 15:20:50 2008 +0000 - - [test/a8-mask] Fix memleak. - - Destroy the auxiallary surfaces and contexts. - - test/a8-mask.c | 14 ++++++++------ - 1 files changed, 8 insertions(+), 6 deletions(-) - -commit a3f071aee707e66e637587f1e9ae327b21243a60 -Author: Chris Wilson -Date: Wed Jan 30 15:19:49 2008 +0000 - - [cairo-ft-font] Tidy usage of cairo_error(). - - Remove a redundant use of cairo_error(NO_MEMORY). - - src/cairo-ft-font.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit a4c960a93cf5f37819b933d19f92e17e6c047c66 -Author: Chris Wilson -Date: Fri Jan 18 17:14:17 2008 +0000 - - [test] Add tests using each backend as a source. - - Inspired by bug 7362 (painting a glitz surface onto an xlib surface - crashes cairo) and the lack of coverage for - _cairo_paginated_surface_acquire_source_image(), these tests attempt - to use each backend as a source surface for all the other backends. - For example, this checks that one can construct a PS file ready for - printing and then copy that surface to an image/xlib for previewing. - - test/.gitignore | 6 + - test/Makefile.am | 19 +++- - test/glitz-surface-source-ref.png | Bin 0 -> 268 bytes - test/glitz-surface-source.c | 196 +++++++++++++++++++++++++++++++++++++ - test/image-surface-source-ref.png | Bin 0 -> 268 bytes - test/image-surface-source.c | 35 +++++++ - test/pdf-surface-source-ref.png | Bin 0 -> 268 bytes - test/pdf-surface-source.c | 41 ++++++++ - test/ps-surface-source-ref.png | Bin 0 -> 268 bytes - test/ps-surface-source.c | 41 ++++++++ - test/surface-source.c | 93 +++++++++++++++++ - test/svg-surface-source-ref.png | Bin 0 -> 268 bytes - test/svg-surface-source.c | 41 ++++++++ - test/xlib-surface-source-ref.png | Bin 0 -> 268 bytes - test/xlib-surface-source.c | 76 ++++++++++++++ - 15 files changed, 544 insertions(+), 4 deletions(-) - -commit f59f22eecba7cbf2151e01533ba936ca94d25056 -Author: Chris Wilson -Date: Tue Jan 29 09:29:10 2008 +0000 - - [check] Only build documents during make check if we have GTK_DOC - - Check that gtk-doc has been enabled before running attempting to build - the docs during make check. - - doc/public/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit e5f0253b67801ad79eb881e189b9835aea0fcf57 -Author: Chris Wilson -Date: Tue Jan 29 09:07:14 2008 +0000 - - [cairo-surface] Hide the compiler warnings. - - Assign the return value from _cairo_surface_set_error() to hide the - compiler warnings. - - src/cairo-surface.c | 18 ++++++++++++------ - 1 files changed, 12 insertions(+), 6 deletions(-) - -commit 53c1ed25abb7e8e22b24aa64fcd29d210c6b7903 -Author: Chris Wilson -Date: Tue Jan 29 08:52:28 2008 +0000 - - [test/a1-sample-image] Fix the memleak. - - Destroy the surface after use. - - test/a1-image-sample.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 5efc88e9108df2331772cc22dc52ef0a9cc93869 -Author: Chris Wilson -Date: Tue Jan 29 08:50:25 2008 +0000 - - [xmalloc] Hide valgrind warning. - - Allocate the string to the next integer boundary to hide a valgrind - warning. - - boilerplate/xmalloc.c | 27 +++++++++++++++++++-------- - 1 files changed, 19 insertions(+), 8 deletions(-) - -commit 1faf208093a8cce77d2f7d6b248bc1eb1bd19a8a -Author: Chris Wilson -Date: Fri Jan 18 14:41:03 2008 +0000 - - [cairo-png] Improve error return for invalid parameters. - - Only translate an UNSUPPORTED error into a SURFACE_TYPE_MISMATCH, all - others can be returned to the user unadulterated. - - PNG doesn't support width==0 or height==0 and generates an error - whilst writing - which without further information is assumed to be - a NO_MEMORY error. So check the image size at the start and return a - WRITE_ERROR for a zero sized image. - - src/cairo-png.c | 24 +++++++++++++----------- - 1 files changed, 13 insertions(+), 11 deletions(-) - -commit d0cc1d929119d2e05578a60af3b873af1d7f6b13 -Author: Chris Wilson -Date: Fri Jan 18 14:34:41 2008 +0000 - - [cairo-pdf-surface] Minor code tidy. - - Remove code duplication. - - src/cairo-pdf-surface.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit d7ce0582f1eb86b2af5964820378b75297822dd1 -Author: Chris Wilson -Date: Thu Jan 17 23:18:46 2008 +0000 - - [test/font-options] Check the defaults values. - - Exercise the getters by checking that a fresh cairo_font_options_t has - the default values. - - test/font-options.c | 24 ++++++++++++++++++++---- - 1 files changed, 20 insertions(+), 4 deletions(-) - -commit f40f24e272cf05a7a727217ae7a35844bf95f5d2 -Author: Chris Wilson -Date: Thu Jan 17 23:05:53 2008 +0000 - - [test/invalid] Test cairo_translate() and friends for NaN safety. - - Pass NaNs to cairo_translate() and friends and check that they raise - an INVALID_MATRIX error. - - test/invalid-matrix.c | 37 +++++++++++++++++++++++++++++++++++++ - 1 files changed, 37 insertions(+), 0 deletions(-) - -commit 896da0305a09e53518d6d1af6f58bbfaf3ddc89c -Author: Adrian Johnson -Date: Fri Feb 15 23:54:55 2008 +1030 - - Win32-printing: Fix meta surface patterns - - Ensure the win32-printing surface has the same fixes for meta surface - patterns with more than one level of push/pop group that PS/PDF - received in 060f384310e887f7f431a98e847b8a36fc303a0c - - src/cairo-win32-printing-surface.c | 28 ++++++++++++++++------------ - 1 files changed, 16 insertions(+), 12 deletions(-) - -commit fbde0fb872a3af78236f4cbc8024d4df245de9c8 -Author: Adrian Johnson -Date: Fri Feb 15 08:17:25 2008 +1030 - - Update PS ref images - - test/degenerate-pen-ps-argb32-ref.png | Bin 390 -> 374 bytes - test/extend-reflect-ps-ref.png | Bin 0 -> 153322 bytes - test/extend-reflect-similar-ps-ref.png | Bin 0 -> 153322 bytes - test/glyph-cache-pressure-ps-ref.png | Bin 0 -> 1667 bytes - test/meta-surface-pattern-ps-argb32-ref.png | Bin 0 -> 3246 bytes - test/meta-surface-pattern-ps-rgb24-ref.png | Bin 0 -> 3823 bytes - test/random-intersections-ps-argb32-ref.png | Bin 89416 -> 89733 bytes - test/random-intersections-ps-rgb24-ref.png | Bin 89414 -> 89733 bytes - test/select-font-face-ps-ref.png | Bin 0 -> 1352 bytes - test/show-text-current-point-ps-ref.png | Bin 0 -> 1475 bytes - test/text-pattern-ps-argb32-ref.png | Bin 997 -> 998 bytes - test/text-rotate-ps-argb32-ref.png | Bin 7198 -> 7156 bytes - test/text-rotate-ps-rgb24-ref.png | Bin 7196 -> 7156 bytes - test/trap-clip-ps-argb32-ref.png | Bin 5700 -> 5715 bytes - test/trap-clip-ps-rgb24-ref.png | Bin 5616 -> 5630 bytes - 15 files changed, 0 insertions(+), 0 deletions(-) - -commit 40d5082c24819968a5ee5a8f72e3b9cd61cb6105 -Author: Adrian Johnson -Date: Sun Feb 10 14:53:17 2008 +1030 - - PS: Use currentfile as the image data source - - When the emitted image is not inside a PS procedure we can use the - currentfile operator as the datasource instead of an array of strings. - This avoids having to read to entire image data into printer memory - before the image can be decoded. This improves the performance and - reduces the chance of running out of memory on printers with limited - memory. - - src/cairo-ps-surface-private.h | 1 + - src/cairo-ps-surface.c | 268 +++++++++++++++++++++++++--------------- - 2 files changed, 168 insertions(+), 101 deletions(-) - -commit fe334bb476bb1d7496b197b47ac60167e3fb10bd -Author: Adrian Johnson -Date: Sun Feb 10 14:52:39 2008 +1030 - - PS: Use InterleaveType 2 for image and mask - - To be able to use the currentfile operator we need to combine the - image data and mask data into the one data source. InterleaveType 2 - scan line interleaves the image and data. - - src/cairo-ps-surface.c | 129 +++++++++++++++++------------------------------ - 1 files changed, 47 insertions(+), 82 deletions(-) - -commit b053aaba80e1118ddd7f9c695f6491458f4f5794 -Author: Adrian Johnson -Date: Tue Feb 5 22:46:01 2008 +1030 - - PS: Don't use patterns for fill surface extend none - - _ps_surface_fill() can also avoid using PS patterns for EXTEND_NONE - surface patterns. A clip path is set around the fill path then the - surface is painted. - - src/cairo-ps-surface.c | 38 ++++++++++++++++++++++++++++++-------- - 1 files changed, 30 insertions(+), 8 deletions(-) - -commit 2324a48c95d88ae0b6a066bfc9b6722f42945efa -Author: Adrian Johnson -Date: Tue Feb 5 22:35:06 2008 +1030 - - Update rotate-image-surface-paint ps ref image - - test/rotate-image-surface-paint-ps-argb32-ref.png | Bin 276 -> 0 bytes - test/rotate-image-surface-paint-ps-ref.png | Bin 0 -> 275 bytes - test/rotate-image-surface-paint-ps-rgb24-ref.png | Bin 274 -> 0 bytes - 3 files changed, 0 insertions(+), 0 deletions(-) - -commit 67374af22fe60c27517dd3bef2c8f3cc2f683b12 -Author: Adrian Johnson -Date: Tue Feb 5 22:31:58 2008 +1030 - - PS: Don't use patterns for paint surface extend none - - This is the first of four patches intended to fix the bug reported in - - http://lists.cairographics.org/archives/cairo/2007-December/012226.html - - Previously the PS backend would draw all cairo patterns (except solid - colors) by emitting a PS pattern. As PS does not support non repeating - patterns, the PS backend would set a large repeat step to ensure that - only one copy of the pattern is on the page. - - Some printers with limited memory are unable to print large images - inside a pattern. This was probably because when using patterns the - printer tries to keep the uncompressed image in memory so it can tile - the pattern. - - When painting surface patterns with the extend mode EXTEND_NONE we do - not need to use PS patterns. The image or meta surface commands can be - emitted directly. - - src/cairo-ps-surface-private.h | 2 + - src/cairo-ps-surface.c | 234 +++++++++++++++++++++++++++------------- - 2 files changed, 162 insertions(+), 74 deletions(-) - -commit 6f9d71c10bf3e38c88378950037d1c81a2413617 -Author: Adrian Johnson -Date: Thu Feb 7 00:28:19 2008 +1030 - - Make PS backend use cairo-pdf-operators.c - - Changes include: - - Replace PS prolog with new prolog that emulates PDF operators - - Remove the [1 0 0 -1 0 height] ctm on each page. PS and PDF surfaces - now both transform all output to PS/PDF coordinates. - - Invert images to match PDF images where (0,0) is top left - - emit_surface_pattern now uses the same transform as PDF - - move the special dash handling into cairo-pdf-operators.c - - src/cairo-pdf-operators.c | 82 ++++- - src/cairo-ps-surface-private.h | 4 + - src/cairo-ps-surface.c | 767 +++++++-------------------------------- - 3 files changed, 219 insertions(+), 634 deletions(-) - -commit 49f755ed2d517adabcdbe9f3834ff18b220dfa7f -Author: Adrian Johnson -Date: Wed Jan 30 20:42:28 2008 +1100 - - PS: Remove the Type 3 outline glyph code - - This code is never used because outline glyphs that go through the - fallback path are always embedded with Type 1 fallback. The only fonts - that are embedded as Type 3 are bitmap fonts. - - src/cairo-ps-surface.c | 54 ++++------------------------------------------- - 1 files changed, 5 insertions(+), 49 deletions(-) - -commit 0c6a362122657d5c9804fa7f45c3404aef052688 -Author: Adrian Johnson -Date: Wed Jan 30 20:38:17 2008 +1100 - - pdf-operators: only one path matrix is required - - The PDF emit path orginally had two matrix transforms in the path - struct. One for strokes and one for fill/clip. As only one transform - at a time is ever used this can be simplified. - - src/cairo-pdf-operators.c | 41 ++++++++--------------------------------- - 1 files changed, 8 insertions(+), 33 deletions(-) - -commit 5639643efe12bee4252e8cb433d343999e34ec32 -Author: Adrian Johnson -Date: Wed Jan 30 20:16:08 2008 +1100 - - Add PS linecap path workarounds to pdf_operators - - So that pdf_operators can be used by the PS backend. PDF also needs - this workaround. - - src/cairo-pdf-operators.c | 123 +++++++++++++++++++++++++++++++------------- - 1 files changed, 86 insertions(+), 37 deletions(-) - -commit 0987fdee24d60573249a7fa3acc15e67454bd8b3 -Author: Adrian Johnson -Date: Wed Jan 30 17:22:52 2008 +1100 - - Add word_wrap stream to pdf-operators - - The word_wrap stream in ps-surface will be removed in a later commit. - - src/cairo-pdf-operators.c | 114 +++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 114 insertions(+), 0 deletions(-) - -commit d05f08bceebe832844ab97a5660af4fa1452697d -Author: Behdad Esfahbod -Date: Tue Feb 12 15:44:21 2008 -0500 - - [configure.in] Make PS/PDF/SVG default enabled - - Previously they were default auto-detected. We really want people - have to go out of their way to not build them, hence the change. - - configure.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit fd3181c7bfdb468557d8c845a016b19c5a897955 -Author: Adrian Johnson -Date: Tue Feb 12 20:22:38 2008 +1030 - - PDF: Remove stale comments - - src/cairo-pdf-surface.c | 23 ----------------------- - 1 files changed, 0 insertions(+), 23 deletions(-) - -commit bdb857a78b41d926b1c239cf988539842a72130b -Author: Adrian Johnson -Date: Tue Feb 12 20:19:03 2008 +1030 - - PDF: Fix uninitialized variable in previous commit - - src/cairo-pdf-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ba6788fc968477cfae6ed76414dd91b21671d028 -Author: Kristian Høgsberg -Date: Mon Feb 11 13:44:48 2008 -0500 - - [pdf] Use compressed PDF stream instead of compress_dup() - - The deflate stream has bounded (constant) memory overhead, whereas - compress_dup() allocates memory proportional to the uncompressed data. - - This replaces compress_dup() usage with a compressed PDF stream for - emitting images, alpha masks and font subsets, and eliminates the - compress_dup() function. - - src/cairo-pdf-surface.c | 204 +++++++++++++---------------------------------- - 1 files changed, 55 insertions(+), 149 deletions(-) - -commit e68584d3a16da7db30bc53a42fa8367c8356bd7e -Author: Behdad Esfahbod -Date: Fri Feb 8 17:36:59 2008 -0500 - - [xlib] Move multiple CAIRO_MUTEX_INITIALIZE into one place they all end up anyway - - src/cairo-xlib-surface.c | 8 ++------ - 1 files changed, 2 insertions(+), 6 deletions(-) - -commit 0626cac6dba91d0ee20458858275745b7c6a1bfd -Author: Peter Weilbacher -Date: Fri Feb 8 15:09:19 2008 +0100 - - [os2] fix typo in comment - - src/cairo-os2-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b4fe25d9afff5d5b0ebaa315ad0e42f36853d5d1 -Author: Peter Weilbacher -Date: Fri Feb 8 15:04:49 2008 +0100 - - [os2] only call FcInit/Fini when compiled with FT font backend - - src/cairo-os2-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 5e9cdcca00a490f3a36b4229f5353d795ca53a5d -Author: Antoine Azar -Date: Thu Feb 7 17:09:41 2008 -0500 - - Fixed rounding function call - - test/get-path-extents.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 80e11a85a95c5f2c814eef90a8e6ab60c8835104 -Author: Vladimir Vukicevic -Date: Thu Feb 7 14:36:39 2008 -0800 - - [pdf] restore alpha_size back to correct bit size - - src/cairo-pdf-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 95db215cc15d228fcb38bc43d2d918fccec0a9cd -Author: Azar@.(none) -Date: Fri Feb 1 18:45:59 2008 -0800 - - Some fixes and improvements to the Win32 build - - Makefile.win32 | 32 ++++- - boilerplate/Makefile.win32 | 25 +++- - boilerplate/cairo-boilerplate-getopt.c | 250 ++++++++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate-getopt.h | 63 ++++++++ - boilerplate/cairo-boilerplate.h | 4 + - perf/Makefile.win32 | 54 ++++++- - perf/cairo-perf.c | 7 +- - perf/cairo-perf.h | 2 +- - perf/world-map.c | 2 + - src/Makefile.win32 | 36 ++++- - test/Makefile.win32 | 25 +++- - test/font-matrix-translation.c | 2 +- - test/pdiff/Makefile.win32 | 3 + - 13 files changed, 470 insertions(+), 35 deletions(-) - -commit 7800cfd7de347bb8c54fc36ed886018a2d9ec503 -Author: Carl Worth -Date: Wed Feb 6 17:00:29 2008 -0800 - - Add several Makefile.win32 files to EXTRA_DIST - - Otherwise, these files were being omitted from the tar files. - - Makefile.am | 2 ++ - boilerplate/Makefile.am | 2 ++ - perf/Makefile.am | 2 ++ - src/Makefile.am | 2 ++ - test/Makefile.am | 2 ++ - 5 files changed, 10 insertions(+), 0 deletions(-) - -commit ac743e25fa7f8bd720219a5c909fe8bbd20b11b2 -Author: Carl Worth -Date: Thu Jan 31 16:13:44 2008 +1100 - - cairo_xlib_surface_create_similar: Pass the original drawable to XCreatePixmap - - Previously we were passing the root window of the same screen. - Letting the X server know the actual Drawable for which we're - trying to be similar allows the X server to be more efficient. - - src/cairo-xlib-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit cb9f9086a1c8ad312cfc5314fc8e352a6046d75e -Merge: c11b036... a9b0e54... -Author: Peter Weilbacher -Date: Thu Feb 7 00:07:20 2008 +0100 - - Merge branch 'master' of ssh://pmw@git.freedesktop.org/git/cairo - -commit c11b036b75f3c71ff57ff4578b388bf5e35b2057 -Author: Peter Weilbacher -Date: Thu Feb 7 00:03:33 2008 +0100 - - [os2] Improve documentation - - Move the API documentation for the OS/2 backend from the .h file to the .c file and use the correct format. - - src/cairo-os2-surface.c | 139 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-os2.h | 115 --------------------------------------- - 2 files changed, 139 insertions(+), 115 deletions(-) - -commit a9b0e54d386811dc750b5e676a0dfd84c32f4625 -Author: Vladimir Vukicevic -Date: Wed Feb 6 13:52:33 2008 -0800 - - Avoid buffer overflow in ps/pdf surface - - A few places weren't using _cairo_malloc_*; fixed. - - src/cairo-pdf-surface.c | 22 ++++++++++++++++------ - src/cairo-ps-surface.c | 4 ++-- - 2 files changed, 18 insertions(+), 8 deletions(-) - -commit bf1f7f70b61b5bb657b2531dab63c541ac8fb59d -Author: Vladimir Vukicevic -Date: Wed Feb 6 13:01:52 2008 -0800 - - Do correct calculation of pen dimensions for stroke optimization - - src/cairo-path-stroke.c | 33 +++++++++++++-------------------- - src/cairo-rectangle.c | 2 +- - src/cairo-stroke-style.c | 17 +++++++++++++++++ - src/cairoint.h | 11 ++++++++++- - 4 files changed, 41 insertions(+), 22 deletions(-) - -commit e104fcab1c8c8d9a7a7962a1dbea0c87867c8f9a -Author: Alp Toker -Date: Thu Jan 31 01:33:50 2008 +0000 - - Introduce cairo_has_current_point() - - cairo_has_current_point() can be used to determine whether a current - point is defined. We introduce this new symbol with a boolean return - value to avoid the versioning ambiguity of modifying - cairo_get_current_point(). This way we also don't have to map what - should be a routine operation to an error condition as was previously - proposed. - - doc/public/cairo-sections.txt | 1 + - src/cairo.c | 25 +++++++++++++++++++++++-- - src/cairo.h | 3 +++ - 3 files changed, 27 insertions(+), 2 deletions(-) - -commit 1f0c3d06895ebcbfbae252e6b7298da0b64b37a9 -Author: Alp Toker -Date: Thu Jan 31 00:54:52 2008 +0000 - - Revert "Change cairo_get_current_point() to return cairo_status_t instead of void" - - This reverts commit b3eea75d1f7b56c2046b5387a5eb186d8f154184. - - Reverted in favour of an alternative approach. - - Conflicts: - - src/cairo.c - - src/cairo.c | 22 ++++------------------ - src/cairo.h | 2 +- - 2 files changed, 5 insertions(+), 19 deletions(-) - -commit 4c005f7ce385f3f8b161cffac11bb9766f4ef9a9 -Author: Azar@.(none) -Date: Fri Feb 1 14:29:24 2008 -0800 - - replaced round with _cairo_lround. Round doesn't compile on Win32 - - test/get-path-extents.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1d93e148766ded8f3105277f944849f6297974fb -Author: Vladimir Vukicevic -Date: Tue Feb 5 16:14:51 2008 -0800 - - Followup patch to dashed stroke optimization - - Make sure that we don't test lines that start or end inside the box, - since our algorithm will find intersections on the wrong ends on the - line, and not count them. - - src/cairo-rectangle.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 7b788ce7cace4fd24c568248c22b4ec6c88b563b -Author: Vladimir Vukicevic -Date: Tue Feb 5 15:04:38 2008 -0800 - - Update test ref images that changed with stroking changes - - test/dash-scale-ref.png | Bin 7908 -> 8035 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 4471e58c12c20723f1ddac3d0284239be6eb27a8 -Author: Vladimir Vukicevic -Date: Mon Feb 4 03:55:55 2008 -0800 - - Optimize dashed strokes, part 2 - - Pass down the bounding box to the stroker, and avoid doing expensive - calculations for dash segments that are outside the box. - - src/cairo-path-stroke.c | 122 ++++++++++++++++++++++++++++++++--------------- - src/cairo-rectangle.c | 94 ++++++++++++++++++++++++++++++++++++ - src/cairo-traps.c | 8 +++ - src/cairoint.h | 10 ++++ - 4 files changed, 195 insertions(+), 39 deletions(-) - -commit afbd82671fe5ebebe5d58bef3d372312be1c5aeb -Author: Vladimir Vukicevic -Date: Sat Feb 2 23:48:16 2008 -0800 - - Optimize stroker by hoisting some calculations out of loops - - sqrt and a few other floating-point operations were being done - repeatedly within a loop; those are now precalculated and passed - down where needed. - - src/cairo-path-stroke.c | 142 +++++++++++++++++++++++++++++------------------ - 1 files changed, 87 insertions(+), 55 deletions(-) - -commit bda0baa255801dbc21b63b364eff32de98dd6c7f -Author: Vladimir Vukicevic -Date: Tue Feb 5 15:04:15 2008 -0800 - - Fix text-zero-len on ATSUI to not infinite loop - - src/cairo-atsui-font.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 03256d0f2be15e7ba57bc041f8cdfc1c3e718660 -Author: Vladimir Vukicevic -Date: Tue Feb 5 15:04:11 2008 -0800 - - Remove get-xrender-format from list of tests to be run on all platforms - - test/Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 6140776b4e7d5787467606fbe8a961dbee6bd9fb -Author: Adrian Johnson -Date: Tue Feb 5 00:22:26 2008 +1030 - - Update operator-source ps ref images - - test/operator-source-ps-argb32-ref.png | Bin 4053 -> 4026 bytes - test/operator-source-ps-rgb24-ref.png | Bin 2567 -> 3366 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit dee6e27537a26e93266c0a2d2071ad8d4ed2c9ee -Author: Adrian Johnson -Date: Tue Feb 5 00:12:48 2008 +1030 - - Add dash-curve ps ref image - - test/dash-curve-ps-ref.png | Bin 0 -> 27206 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 2b0da0503baba111085a23e5e5e5feb8788d6650 -Author: Adrian Johnson -Date: Tue Feb 5 00:02:17 2008 +1030 - - Ensure PS/PDF miter is >= 1.0 - - The PS Language Reference requires the PS miter to be >= 1. - - The PDF Reference does not specify miter limits however acroread fails - to display pages when the miter is < 1. Older versions of ghostscript - crash when the PDF miter is < 1. - - src/cairo-pdf-operators.c | 2 +- - src/cairo-ps-surface.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 381fcf01d71d6c83183f9764507ebbafd783d18a -Author: Adrian Johnson -Date: Sun Feb 3 20:05:41 2008 +1030 - - Update over-around-source ps ref image - - test/over-around-source-ps-argb32-ref.png | Bin 637 -> 632 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 9dda017af9bffeda59756cb3b15028ae83ed19ef -Author: Adrian Johnson -Date: Sun Feb 3 19:53:35 2008 +1030 - - Update gradient-alpha ps ref images - - test/gradient-alpha-ps-argb32-ref.png | Bin 187 -> 179 bytes - test/gradient-alpha-ps-rgb24-ref.png | Bin 184 -> 179 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 3f943a98f69b90b066217b19c47851ce03e50551 -Author: Adrian Johnson -Date: Sun Feb 3 19:49:23 2008 +1030 - - Add linear-gradient-reflect ps ref image - - test/linear-gradient-reflect-ps-ref.png | Bin 0 -> 315 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit a74e6692341daeff9ab266b3b29fcc8b8e917d88 -Author: Adrian Johnson -Date: Sun Feb 3 19:34:53 2008 +1030 - - PS: Implement reflected surface patterns - - The image/meta-pattern is written once. A PS pattern twice the size of - the cairo pattern is created and the surface drawn four times in a - reflect pattern inside the PS pattern. - - This fixes the extend-reflect and extend-reflect-similar PS test - failures. - - src/cairo-ps-surface.c | 41 +++++++++++++++++++++++++++++++++-------- - 1 files changed, 33 insertions(+), 8 deletions(-) - -commit 7c5bc5fde819014f62ebb9bac86d4529f056956d -Author: Adrian Johnson -Date: Sun Feb 3 18:58:02 2008 +1030 - - Add operator-clear ps ref image - - test/operator-clear-ps-argb32-ref.png | Bin 0 -> 1409 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 06b2d009ba50a2908fd9c93ff3e467f511b233cf -Author: Adrian Johnson -Date: Sun Feb 3 18:50:14 2008 +1030 - - Update clip-operator ps ref image - - test/clip-operator-ps-argb32-ref.png | Bin 8594 -> 9062 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 13663d1d500a6c2254097011e66199d6dd81c62d -Author: Adrian Johnson -Date: Sun Feb 3 17:10:56 2008 +1030 - - PS: Implement linear gradient repeat and reflect - - src/cairo-ps-surface.c | 250 +++++++++++++++++++++++++++++++++++++----------- - 1 files changed, 196 insertions(+), 54 deletions(-) - -commit 92a2e851df6668f60c63165466d2ee85dd600f47 -Author: Adrian Johnson -Date: Sat Feb 2 23:00:30 2008 +1030 - - Update operator-source PS ref images - - test/operator-source-ps-argb32-ref.png | Bin 3885 -> 4053 bytes - test/operator-source-ps-rgb24-ref.png | Bin 3548 -> 2567 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 367e50137eb1b2b3952a87c580eed08a79fd211f -Author: Adrian Johnson -Date: Sat Feb 2 20:59:56 2008 +1030 - - PDF: Use correct surface size when emitting patterns - - Store the surface size in each pattern and smask group and use this - size when the pattern/group is emitted. This is required as a pattern - or group may be used from a meta surface with a different size to the - PDF surface. However the pattern or group is emitted after the the meta - surface content has been emitted and the surface size has been - restored to the the page size. - - This fixes the following pdf test failures: - extend-reflect-similar - extend-repeat-similar - mask - - src/cairo-pdf-surface-private.h | 4 +++ - src/cairo-pdf-surface.c | 53 ++++++++++++++++++++++++++++++++++---- - 2 files changed, 51 insertions(+), 6 deletions(-) - -commit d08d5c421a45c4e5f30b308823e90a86f1ec2052 -Author: Carl Worth -Date: Wed Jan 30 05:35:50 2008 -0800 - - Increment cairo version to 1.5.9 after the 1.5.8 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4ccb8cb29546432858e778e1b88cada1327f6f45 -Author: Carl Worth -Date: Wed Jan 30 05:16:26 2008 -0800 - - Add some more reference images to REFERENCE_IMAGES - - test/Makefile.am | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit b31a7a904f8413c34970beabce6fecf6e1fdc925 -Author: Carl Worth -Date: Wed Jan 30 05:13:53 2008 -0800 - - Increment cairo version to 1.5.8 and libtool version to 16:0:14 - - configure.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit ca10920cc9f3a673e2199112541d5a1472423c47 -Author: Carl Worth -Date: Wed Jan 30 05:07:20 2008 -0800 - - Add a1-image-sample and a1-traps-sample reference images to the dist list - - test/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2fee01e2d40715defe9143456101533c1f1aafcf -Author: Carl Worth -Date: Wed Jan 30 04:54:39 2008 -0800 - - check-doc-syntax.sh: Fix for non-srcdir builds (such as make distcheck) - - src/check-doc-syntax.sh | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 78022f3aa16cf8a629aec4595c5a542ca68a78cc -Author: Carl Worth -Date: Wed Jan 30 04:54:05 2008 -0800 - - Add doc/public test scripts to EXTRA_DIST - - This prevents failures of make distcheck - - doc/public/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit d49b1220b2feeca82050de05c9c01012e8420acb -Author: Carl Worth -Date: Wed Jan 30 04:52:23 2008 -0800 - - Remove extend-pad-similar test case - - This seems redundant with the recent testing of all test cases - against similar surfaces. Plus, it hasn't had a reference image - anyway which was causing problems with the recent extra checks - for missing reference images. - - test/Makefile.am | 3 - - test/extend-pad-similar.c | 105 --------------------------------------------- - 2 files changed, 0 insertions(+), 108 deletions(-) - -commit 7d2fda54f9bf6ae48cf8048b4836dea7f20cccee -Author: Carl Worth -Date: Wed Jan 30 04:23:19 2008 -0800 - - NEWS: Add notes for the 1.5.8 snapshot - - NEWS | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 103 insertions(+), 0 deletions(-) - -commit 3b0adf4f5ac78e3f19b4e19267da2aa1b3c7d57b -Author: Jeff Muizelaar -Date: Tue Jan 29 09:07:54 2008 -0800 - - Use ADD instead of IN for clipping. - - ADD is already special-cased by pixman, so using it instead avoids hitting - the slower general path. - - src/cairo-clip.c | 34 ++++++++++++++++++++++++++++++++-- - 1 files changed, 32 insertions(+), 2 deletions(-) - -commit fa6aedf2d68941bf8532bf487d5412cfc508e0a9 -Author: Carl Worth -Date: Tue Jan 29 09:01:47 2008 -0800 - - Fix typo in printf arguments in error message - - test/font-matrix-translation.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e2bb36fe08546e6461fcbd40f5f3f81e5efc7686 -Author: Carl Worth -Date: Tue Jan 29 08:41:21 2008 -0800 - - wAdd proper error propagation to _cairo_matrix_compute_scale_factors - - Before there was just an assert statement here that the - determinant of the matrix was not infinite. That was bogus - since a user-provided can end up here. So instead, do the - correct error propagation of any CAIRO_STATUS_INVALID_MATRIX - error as necessary. - - This eliminates the current failure of the invalid-matrix - test case. - - src/cairo-atsui-font.c | 56 ++++++++++++++++++++++++++++++++++------------ - src/cairo-ft-font.c | 20 +++++++++++----- - src/cairo-matrix.c | 7 ++++- - src/cairo-scaled-font.c | 13 +++++++--- - src/cairo-win32-font.c | 20 ++++++++++------ - src/cairoint.h | 4 +- - 6 files changed, 83 insertions(+), 37 deletions(-) - -commit 849322235764f570a4a3a1217960d096d16165cf -Author: Carl Worth -Date: Tue Jan 29 05:40:39 2008 -0800 - - Initialize return values for cairo_*_extents in case of error - - Previously we left the return values alone, which set the - user up for a nasty trap, (using potentially uninitialized - values with no indication that there was an error). So now - we initialize these values to 0.0 if the cairo_t is in error. - - The fixed functions include: - - cairo_path_extents - cairo_stroke_extents - cairo_fill_extents - cairo_clip_extents - cairo_font_extents - - src/cairo.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 50 insertions(+), 4 deletions(-) - -commit 6bdba4b4be5e66ffa61e164f8098b76d848e8f32 -Author: Carl Worth -Date: Tue Jan 29 05:27:10 2008 -0800 - - Add missing libcairo_font_subset_sources to fix the build - - src/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 3d82056cee0ba960ebb61877fec8aa646e60e990 -Author: Nis Martensen -Date: Tue Jan 29 05:32:24 2008 -0500 - - Fix typos - - src/cairo.h | 4 ++-- - src/check-doc-syntax.sh | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit b28f4f57f21ac4091c9457873abe1465ec3f7fed -Author: Behdad Esfahbod -Date: Tue Jan 29 04:32:39 2008 -0500 - - [src/Makefile.am] Reorganize - - Main goal was to be able to pass list of all cairo sources, enabled or - not, to check-doc-syntax.sh such that it doesn't check *.h, *.c, *.cpp - because that can be annoying when bisecting. - - src/Makefile.am | 352 +++++++++++++++++++++++++--------------------- - src/check-doc-syntax.sh | 5 +- - 2 files changed, 195 insertions(+), 162 deletions(-) - -commit 41a57007939a3e206647fda1b6e5a554ca125c5f -Author: Adrian Johnson -Date: Tue Jan 29 20:27:06 2008 +1100 - - Fix undefined macro that was preventing the tests from compiling - - test/pattern-getters.c | 28 ++++++++++++++-------------- - 1 files changed, 14 insertions(+), 14 deletions(-) - -commit cfce362375963502c4d29089b369d8e5ce2b7dcb -Author: Behdad Esfahbod -Date: Tue Jan 29 01:27:47 2008 -0500 - - [cairo_operator_t] Mark DestAtop unbounded and document boundedness - - src/cairo.h | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit f9b90e475ed6009e58e5f11ac713f9ea639a6900 -Author: Behdad Esfahbod -Date: Tue Jan 29 01:20:03 2008 -0500 - - [doc] Fix cairo_operator_t docs to make Carl (and Keith) happy - - src/cairo.h | 17 ++++++++++++----- - 1 files changed, 12 insertions(+), 5 deletions(-) - -commit 9ee7a48b33f11a42b0ffd12a9192a328e35233f3 -Author: Behdad Esfahbod -Date: Tue Jan 29 00:50:48 2008 -0500 - - [Makefile.am] Minor wording change - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 013781137ff4940d0b9e04b656c20af37bbd5333 -Author: Behdad Esfahbod -Date: Tue Jan 29 00:42:51 2008 -0500 - - [cairo-image-surface.c] Cleanup stride checking and improve docs - - src/cairo-image-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit 8e3250b8564a346c61e926a6aa61f18ae3f60c93 -Author: Behdad Esfahbod -Date: Tue Jan 29 00:36:38 2008 -0500 - - [Makefile.am] Remove ROADMAP and TODO from dist files - - Makefile.am | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 81e4cc3bd7d1fec659a19f8b37253aaebe12c99b -Author: Behdad Esfahbod -Date: Tue Jan 29 00:36:16 2008 -0500 - - [cairo_image_surface_create_for_data] Document stride error status - - src/cairo-image-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 6153a3b620641b1fb7b64a050a168482d2a42f2c -Author: Behdad Esfahbod -Date: Tue Jan 29 00:34:00 2008 -0500 - - [doc] Run check-doc-syntax.sh for SGML docs too - - doc/public/Makefile.am | 4 ++-- - doc/public/check-doc-syntax.sh | 11 +++++++++++ - src/check-doc-syntax.sh | 33 ++++++++++++++++++++++++--------- - 3 files changed, 37 insertions(+), 11 deletions(-) - -commit 3f7d301786ce345cc4221f434bda6751e9b97ad1 -Author: Behdad Esfahbod -Date: Mon Jan 28 23:56:23 2008 -0500 - - [src/check-doc-syntax.sh] Skip test if GNU grep is not available - - src/check-doc-syntax.sh | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 247e1011995b0241526262cc36eb34c7e5edd47c -Author: Carl Worth -Date: Mon Jan 28 21:24:56 2008 -0800 - - Fix bitmap-font test by using near-equality for double comparison - - test/bitmap-font.c | 11 ++++++----- - test/cairo-test.h | 2 ++ - test/pattern-getters.c | 4 +--- - 3 files changed, 9 insertions(+), 8 deletions(-) - -commit 468caac068d3d25507d901f069e3e55731a27ae9 -Author: Behdad Esfahbod -Date: Mon Jan 28 23:30:09 2008 -0500 - - [configure.in] Minor change to cairo-features.h comments to make tests pass - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b4c7a0dc6e996e47390ae544f82024afbb7859ed -Author: Behdad Esfahbod -Date: Mon Jan 28 23:27:10 2008 -0500 - - [doc] Document CAIRO_HAS_* macros. We now finally have real 100% coverage. - - doc/public/Makefile.am | 2 ++ - doc/public/cairo-sections.txt | 9 +++++++++ - doc/public/tmpl/cairo-ft.sgml | 8 ++++++++ - doc/public/tmpl/cairo-pdf.sgml | 8 ++++++++ - doc/public/tmpl/cairo-png.sgml | 9 +++++++++ - doc/public/tmpl/cairo-ps.sgml | 8 ++++++++ - doc/public/tmpl/cairo-svg.sgml | 8 ++++++++ - doc/public/tmpl/cairo-win32-fonts.sgml | 8 ++++++++ - doc/public/tmpl/cairo-win32.sgml | 8 ++++++++ - doc/public/tmpl/cairo-xlib-xrender.sgml | 8 ++++++++ - doc/public/tmpl/cairo-xlib.sgml | 8 ++++++++ - 11 files changed, 84 insertions(+), 0 deletions(-) - -commit 47e0ecbea51cae73a85db277972b80eff0c4b9f6 -Author: Behdad Esfahbod -Date: Mon Jan 28 23:26:35 2008 -0500 - - [configure.in] Generate a cairo-no-features.h with macros for disabled supported backends - to trick gtk-doc with it. - - configure.in | 33 ++++++++++++++++++++++++++++++++- - src/Makefile.am | 6 +++--- - src/check-headers.sh | 2 +- - 3 files changed, 36 insertions(+), 5 deletions(-) - -commit 9d8990b6bdec8e574e37346c363b3a850a246452 -Author: Behdad Esfahbod -Date: Mon Jan 28 23:23:00 2008 -0500 - - [doc] Remove excess paranthesis - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6e495e94886dfa80f11f675a4b7fa3a767671cc0 -Author: Behdad Esfahbod -Date: Mon Jan 28 23:10:28 2008 -0500 - - [doc] More syntax fixes - - doc/public/tmpl/cairo-version.sgml | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit a00d71968285fc8c49903c1c84835a8be32cfbd3 -Author: Behdad Esfahbod -Date: Mon Jan 28 23:05:00 2008 -0500 - - [configure.in] Add commented-out #undef's for disable stable backends in cairo-features.h - - configure.in | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 6a089247a180cbc85e222520d2d93914434027be -Author: Behdad Esfahbod -Date: Mon Jan 28 22:45:06 2008 -0500 - - [doc] Rename cairo-font.sgml to cairo-font-face.sgml - - doc/public/cairo-docs.xml | 2 +- - doc/public/cairo-sections.txt | 2 +- - doc/public/tmpl/cairo-font-face.sgml | 112 ++++++++++++++++++++++++++++++++++ - doc/public/tmpl/cairo-font.sgml | 112 ---------------------------------- - 4 files changed, 114 insertions(+), 114 deletions(-) - -commit 1d17a7f7811b15c72a4091663e01a448f538bc68 -Author: Behdad Esfahbod -Date: Mon Jan 28 22:42:46 2008 -0500 - - [doc] Document the surface type of win32-printing surface being different - - doc/public/tmpl/cairo-win32.sgml | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit a55f65b5d29060a7f8033ceea211252431d20b77 -Author: Behdad Esfahbod -Date: Mon Jan 28 22:25:37 2008 -0500 - - [doc] Fix typo - - src/cairo-pattern.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 52cc603db1a805a0b3a8d7eba3171cd2785f10a7 -Author: Behdad Esfahbod -Date: Mon Jan 28 22:10:20 2008 -0500 - - [doc] Stricter syntax check for type names, update test - - src/cairo-array.c | 2 +- - src/cairo-cache-private.h | 2 +- - src/cairo-font-face.c | 4 ++-- - src/cairo-ft-font.c | 4 ++-- - src/cairo-image-surface.c | 2 +- - src/cairo-paginated-private.h | 8 ++++---- - src/cairo-ps-surface.c | 2 +- - src/cairo-ps.h | 2 +- - src/cairo-region-private.h | 2 +- - src/cairo-scaled-font-subsets-private.h | 16 ++++++++-------- - src/cairo-scaled-font.c | 2 +- - src/cairo-svg.h | 2 +- - src/cairo-types-private.h | 2 +- - src/cairo-win32-font.c | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 24 ++++++++++++------------ - src/cairoint.h | 2 +- - src/check-doc-syntax.sh | 9 +++++---- - 18 files changed, 45 insertions(+), 44 deletions(-) - -commit b790c5a6bcdd890c16d21753407188ed200ce445 -Author: Behdad Esfahbod -Date: Mon Jan 28 21:53:44 2008 -0500 - - [doc] Replace 'NOTE' by 'Note' and add it to test - - src/cairo-bentley-ottmann.c | 2 +- - src/cairo-cache.c | 4 ++-- - src/cairo-ft-font.c | 4 ++-- - src/cairo-lzw.c | 4 ++-- - src/cairo-output-stream-private.h | 2 +- - src/cairo-paginated-private.h | 4 ++-- - src/cairo-path.c | 2 +- - src/cairo-pen.c | 4 ++-- - src/cairo-scaled-font.c | 4 ++-- - src/cairo-slope.c | 2 +- - src/cairo-surface.c | 4 ++-- - src/cairo-win32-surface.c | 4 ++-- - src/cairo-xcb-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 4 ++-- - src/cairo.c | 4 ++-- - src/check-doc-syntax.sh | 7 +++++++ - 16 files changed, 33 insertions(+), 26 deletions(-) - -commit f0633f4449c39a8f78c582790fb5dc85899b5d82 -Author: Behdad Esfahbod -Date: Mon Jan 28 21:49:57 2008 -0500 - - [doc] Make sure all function names in docs are followed by () - - src/cairo-array.c | 2 +- - src/cairo-base85-stream.c | 3 +-- - src/cairo-beos-surface.cpp | 2 +- - src/cairo-cache-private.h | 4 ++-- - src/cairo-debug.c | 4 ++-- - src/cairo-deflate-stream.c | 3 +-- - src/cairo-ft-font.c | 4 ++-- - src/cairo-image-surface.c | 4 ++-- - src/cairo-output-stream-private.h | 3 +-- - src/cairo-output-stream.c | 3 +-- - src/cairo-paginated-private.h | 2 +- - src/cairo-path-fixed-private.h | 2 +- - src/cairo-path.c | 6 +++--- - src/cairo-pdf-surface.c | 4 ++-- - src/cairo-ps-surface.c | 6 +++--- - src/cairo-quartz-surface.c | 2 +- - src/cairo-scaled-font-subsets-private.h | 2 +- - src/cairo-scaled-font.c | 8 ++++---- - src/cairo-surface.c | 6 +++--- - src/cairo-svg-surface.c | 4 ++-- - src/cairo-traps.c | 2 +- - src/cairo-types-private.h | 4 ++-- - src/cairo-unicode.c | 3 +-- - src/cairo.c | 30 ++++++++++++++---------------- - src/cairo.h | 22 +++++++++++----------- - src/cairoint.h | 8 ++++---- - 26 files changed, 68 insertions(+), 75 deletions(-) - -commit 9ba8f6b1b0a4fbf2407e0dbd767f043c6920344c -Author: Behdad Esfahbod -Date: Mon Jan 28 21:49:26 2008 -0500 - - [src/check-doc-syntax.sh] Check for various doc syntax consistency rules - - src/Makefile.am | 2 +- - src/check-doc-syntax.sh | 36 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 37 insertions(+), 1 deletions(-) - -commit e15fcdd74734e922183afd4732ec4ba090f313c9 -Author: Behdad Esfahbod -Date: Mon Jan 28 21:48:23 2008 -0500 - - [doc] Improve syntax - - doc/public/tmpl/cairo-font.sgml | 7 +++++-- - doc/public/tmpl/cairo-matrix.sgml | 2 +- - doc/public/tmpl/cairo-pattern.sgml | 12 +++++++++--- - doc/public/tmpl/cairo-status.sgml | 5 +++-- - doc/public/tmpl/cairo-surface.sgml | 8 +++++++- - doc/public/tmpl/cairo-xcb-xrender.sgml | 3 ++- - doc/public/tmpl/cairo-xcb.sgml | 3 ++- - doc/public/tmpl/cairo-xlib-xrender.sgml | 3 ++- - doc/public/tmpl/cairo-xlib.sgml | 3 ++- - 9 files changed, 33 insertions(+), 13 deletions(-) - -commit 587508528c4a318649ecb347b96fbc89a40175ea -Author: Behdad Esfahbod -Date: Mon Jan 28 21:12:16 2008 -0500 - - [doc] Minor improvement - - doc/public/tmpl/cairo-beos.sgml | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit fd5dfedbb75593539eeda92013042ce5423a65c4 -Author: Behdad Esfahbod -Date: Mon Jan 28 21:02:44 2008 -0500 - - [doc/public/check-doc-coverage.sh] Test that doc coverage is 100% - - Yay! - - doc/public/Makefile.am | 2 + - doc/public/check-doc-coverage.sh | 43 ++++++++++++++++++++++++++++++++++++++ - 2 files changed, 45 insertions(+), 0 deletions(-) - -commit c133ee5acc7c97fcd43d61f5aad160ca96c47941 -Author: Behdad Esfahbod -Date: Mon Jan 28 21:00:21 2008 -0500 - - [doc] Improve docs for new API - - src/cairo-image-surface.c | 8 ++++---- - src/cairo-xlib-surface.c | 20 +++++++++++++------- - 2 files changed, 17 insertions(+), 11 deletions(-) - -commit 0d898f2badf41d3b0ae5ee88943c44cf49690f5d -Author: Behdad Esfahbod -Date: Mon Jan 28 20:49:44 2008 -0500 - - [doc] Make sure all type names in docs are prefixed by # - - src/cairo-array.c | 2 +- - src/cairo-bentley-ottmann.c | 4 ++-- - src/cairo-cache-private.h | 4 ++-- - src/cairo-cache.c | 2 +- - src/cairo-fixed-type-private.h | 2 +- - src/cairo-font-face.c | 12 ++++++------ - src/cairo-font-options.c | 2 +- - src/cairo-ft-font.c | 12 ++++++------ - src/cairo-gstate.c | 8 ++++---- - src/cairo-hash.c | 2 +- - src/cairo-image-surface.c | 4 ++-- - src/cairo-matrix.c | 10 +++++----- - src/cairo-mutex-type-private.h | 6 +++--- - src/cairo-pattern.c | 10 +++++----- - src/cairo-pdf-surface.c | 2 +- - src/cairo-png.c | 2 +- - src/cairo-ps-surface.c | 12 ++++++------ - src/cairo-quartz-surface.c | 2 +- - src/cairo-rectangle.c | 8 ++++---- - src/cairo-region.c | 2 +- - src/cairo-scaled-font-subsets-private.h | 8 ++++---- - src/cairo-scaled-font.c | 8 ++++---- - src/cairo-traps.c | 2 +- - src/cairo-types-private.h | 2 +- - src/cairo-win32-surface.c | 2 +- - src/cairo-xlib-surface.c | 4 ++-- - src/cairo.c | 4 ++-- - src/cairo.h | 16 ++++++++-------- - src/cairoint.h | 4 ++-- - 29 files changed, 79 insertions(+), 79 deletions(-) - -commit 9ecde82d35ead4975ce110bb2012264e3ca9d2e1 -Author: Behdad Esfahbod -Date: Mon Jan 28 20:48:48 2008 -0500 - - [doc] Make sure all macro names in docs are prefixed by % - - src/cairo-array.c | 6 ++-- - src/cairo-bentley-ottmann.c | 8 +++--- - src/cairo-cache.c | 6 ++-- - src/cairo-deprecated.h | 2 +- - src/cairo-directfb.h | 4 +- - src/cairo-fixed-type-private.h | 2 +- - src/cairo-freelist-private.h | 4 +- - src/cairo-ft-font.c | 6 ++-- - src/cairo-gstate.c | 14 +++++----- - src/cairo-hash.c | 36 +++++++++++++------------- - src/cairo-image-surface.c | 4 +- - src/cairo-lzw.c | 14 +++++----- - src/cairo-meta-surface.c | 6 ++-- - src/cairo-mutex-private.h | 4 +- - src/cairo-mutex-type-private.h | 24 +++++++++--------- - src/cairo-os2.h | 6 ++-- - src/cairo-output-stream-private.h | 6 ++-- - src/cairo-paginated-private.h | 4 +- - src/cairo-path-fill.c | 2 +- - src/cairo-path.c | 12 ++++---- - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 2 +- - src/cairo-png.c | 10 +++--- - src/cairo-ps-surface.c | 12 ++++---- - src/cairo-scaled-font-subsets-private.h | 42 +++++++++++++++--------------- - src/cairo-scaled-font.c | 4 +- - src/cairo-surface-fallback.c | 6 ++-- - src/cairo-surface.c | 10 +++--- - src/cairo-svg-surface.c | 4 +- - src/cairo-types-private.h | 4 +- - src/cairo-win32-font.c | 4 +- - src/cairo-win32-surface.c | 10 +++--- - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 4 +- - src/cairo.c | 26 +++++++++--------- - src/cairo.h | 10 +++--- - src/cairoint.h | 6 ++-- - src/test-fallback-surface.c | 4 +- - 38 files changed, 166 insertions(+), 166 deletions(-) - -commit 099c3c2602b59fbf9424044caa1fec7eb92f71df -Author: Behdad Esfahbod -Date: Mon Jan 28 20:32:35 2008 -0500 - - [doc] Another enum nick expansion - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 72feed5b54e1aa725c3c5238b21946b6250503fe -Author: Behdad Esfahbod -Date: Mon Jan 28 20:16:01 2008 -0500 - - [doc] Update templates for recently added APIs - - doc/public/cairo-sections.txt | 2 ++ - doc/public/tmpl/cairo-image.sgml | 10 ++++++++++ - doc/public/tmpl/cairo-paths.sgml | 2 +- - doc/public/tmpl/cairo-status.sgml | 1 + - doc/public/tmpl/cairo-xlib-xrender.sgml | 9 +++++++++ - 5 files changed, 23 insertions(+), 1 deletions(-) - -commit b7d43d235c01480b5a5a34db6fea8a3d86161d91 -Author: Behdad Esfahbod -Date: Mon Jan 28 20:14:52 2008 -0500 - - [src/check-*] Shut make up - - src/check-def.sh | 4 ++-- - src/check-plt.sh | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit dd7ce762946ec03fc115310c7e295b3327d7e805 -Author: Behdad Esfahbod -Date: Mon Jan 28 19:54:27 2008 -0500 - - [doc] Expand a couple nicks to full enum names - - src/cairo.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit c624ff46541b311c226ad7a026db3495b59dee41 -Author: Behdad Esfahbod -Date: Mon Jan 28 19:45:10 2008 -0500 - - [cairo_operator_t] Improve docs - - src/cairo.h | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit f1271babcd4df1140019b258ca0af0d7da0d1328 -Author: Behdad Esfahbod -Date: Mon Jan 28 19:37:46 2008 -0500 - - [doc] Add Long_Description and some See_Also for all chapters - - doc/public/tmpl/cairo-atsui.sgml | 6 +++- - doc/public/tmpl/cairo-beos.sgml | 7 ++++- - doc/public/tmpl/cairo-font-options.sgml | 11 +++++++-- - doc/public/tmpl/cairo-font.sgml | 12 +++++++++- - doc/public/tmpl/cairo-ft.sgml | 7 ++++- - doc/public/tmpl/cairo-glitz.sgml | 7 ++++- - doc/public/tmpl/cairo-image.sgml | 15 +++++++------ - doc/public/tmpl/cairo-matrix.sgml | 5 ++- - doc/public/tmpl/cairo-paths.sgml | 4 ++- - doc/public/tmpl/cairo-pattern.sgml | 13 ++++++++--- - doc/public/tmpl/cairo-pdf.sgml | 7 ++++- - doc/public/tmpl/cairo-png.sgml | 7 ++++- - doc/public/tmpl/cairo-ps.sgml | 7 ++++- - doc/public/tmpl/cairo-quartz.sgml | 7 ++++- - doc/public/tmpl/cairo-scaled-font.sgml | 13 ++++++++--- - doc/public/tmpl/cairo-status.sgml | 17 ++++++++++++++- - doc/public/tmpl/cairo-surface.sgml | 8 +++++- - doc/public/tmpl/cairo-svg.sgml | 7 ++++- - doc/public/tmpl/cairo-text.sgml | 34 ++++++++++++++++++++++++++++-- - doc/public/tmpl/cairo-transforms.sgml | 10 +++++++- - doc/public/tmpl/cairo-types.sgml | 4 +- - doc/public/tmpl/cairo-win32-fonts.sgml | 7 ++++- - doc/public/tmpl/cairo-win32.sgml | 7 ++++- - doc/public/tmpl/cairo-xcb-xrender.sgml | 10 +++++++- - doc/public/tmpl/cairo-xcb.sgml | 8 ++++++- - doc/public/tmpl/cairo-xlib-xrender.sgml | 12 ++++++++-- - doc/public/tmpl/cairo-xlib.sgml | 8 ++++++- - doc/public/tmpl/cairo.sgml | 4 ++- - 28 files changed, 201 insertions(+), 63 deletions(-) - -commit 73b184fb9c41f26365c99dbb5f81aa5166632722 -Author: Behdad Esfahbod -Date: Mon Jan 28 19:19:27 2008 -0500 - - [src] Fix gtk-doc warnings - - src/cairo-scaled-font.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo.c | 6 +++--- - 3 files changed, 5 insertions(+), 5 deletions(-) - -commit 8709b943c6f0025c65081b23ea24ce606150cf49 -Author: Carl Worth -Date: Mon Jan 28 16:15:28 2008 -0800 - - Fix some documentation typos - - src/cairo.h | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit e48d7ca802acba300aee99def0eb01727fe2f58a -Author: Carl Worth -Date: Mon Jan 28 16:11:39 2008 -0800 - - Add example to documentation of cairo_pattern_set_filter - - It's helpful to let the reade know about cairo_get_source here. - - src/cairo-pattern.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit cd26fa266b51ffd91aa9f2c60dd353c53729291e -Author: Carl Worth -Date: Mon Jan 28 16:10:10 2008 -0800 - - Add documentation for cairo_filter_t - - src/cairo.h | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 7c00269e00332974c3a2843272f84960a90b9fb7 -Author: Carl Worth -Date: Sun Jan 27 12:36:19 2008 -0800 - - Add pdf-specific reference images for meta-surface-pattern - - This test has been "failing" ever since we had native - replay of metasurfaces to pdf. But looking at the results, - they are actually superior to the image-backend reference - images. - - test/meta-surface-pattern-pdf-ref.png | Bin 0 -> 4111 bytes - test/meta-surface-pattern-pdf-rgb24-ref.png | Bin 0 -> 4009 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 9cd198d200e4470d3451581b9e672a87d5d91719 -Author: Carl Worth -Date: Mon Jan 28 15:37:22 2008 -0800 - - Test the no-Render-extension-available case in get-xrender-format - - test/get-xrender-format.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit d7fd3bd536465881446686305622d31fdc6fd48f -Author: Carl Worth -Date: Sun Jan 27 12:14:51 2008 -0800 - - Add get-xrender-format test to test cairo_xlib_surface_get_xrender_format - - test/.gitignore | 1 + - test/Makefile.am | 5 ++ - test/get-xrender-format.c | 104 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 110 insertions(+), 0 deletions(-) - -commit cc94dce25085fef936b7cb36cf9fc41569668eba -Author: Carl Worth -Date: Mon Jan 28 15:26:15 2008 -0800 - - Return NULL from cairo_xlib_surface_get_xrender_format without an error - - The NULL return value will only happen if the X Render extension - is not available. We've already got that NULL return value - documented, so it's not an error if the user asks for it. In - particular, it's definitely not a surface-type mismatch. - - src/cairo-xlib-surface.c | 6 +----- - 1 files changed, 1 insertions(+), 5 deletions(-) - -commit 3c018a6e5abe099fa916f45ecf0c8e9dd5771fae -Author: Carl Worth -Date: Sun Jan 27 12:13:13 2008 -0800 - - Add new API cairo_xlib_surface_get_render_format - - src/cairo-xlib-surface.c | 27 +++++++++++++++++++++++++++ - src/cairo-xlib-xrender.h | 3 +++ - 2 files changed, 30 insertions(+), 0 deletions(-) - -commit 88811540722d891b987efa6fa8edcbab7e10feeb -Author: Carl Worth -Date: Sun Jan 27 11:12:14 2008 -0800 - - Add missing cairo_private (for _pixman_format_to_masks) - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3841cc0932ac77540c306c1c70a6171d7d00cf3e -Author: Carl Worth -Date: Mon Jan 28 15:12:38 2008 -0800 - - Clarify the documentation of stride within cairo_image_surface_create_for_data - - src/cairo-image-surface.c | 23 +++++++++++++++-------- - 1 files changed, 15 insertions(+), 8 deletions(-) - -commit 13a5624277adf7e87f66d674ce8073013b53bece -Author: Carl Worth -Date: Mon Jan 28 14:29:36 2008 -0800 - - Rename cairo_image_surface_stride_for_width to cairo_format_stride_for_width - - Thanks for Behdad for the suggested name improvement. Also, make - it more clear that the stride passed to cairo_image_surface_create_for_data - should come from calling cairo_format_stride_for_width with the - same width. - - src/cairo-image-surface.c | 21 +++++++++++---------- - src/cairo.h | 4 ++-- - test/a8-mask.c | 11 ++++++----- - 3 files changed, 19 insertions(+), 17 deletions(-) - -commit dc67de3d8b6154b74a243cd7b63e45f343520256 -Author: Carl Worth -Date: Sat Jan 26 23:12:14 2008 -0800 - - Add cairo_image_surface_stride_for_width - - Document this function as a required call to get the correct - stride value before calling cairo_image_surface_create_for_data. - This means that previously-failing calls with non-multiple-of-4 - stride values are now documented as errors. Also, we now have - the possibility of moving to more stringent alignment constraints, - (one can imagine doing 64-bit or 128-bit boundaries for example). - - src/cairo-image-surface.c | 60 +++++++++++++++++---- - src/cairo-surface.c | 3 + - src/cairo.c | 4 +- - src/cairo.h | 8 +++- - test/Makefile.am | 4 -- - test/a8-mask.c | 132 +++++++++++++++++++++++++++++++++++++++------ - 6 files changed, 179 insertions(+), 32 deletions(-) - -commit b151cb0709364bed03e4918b79f26ef3243948ca -Author: Carl Worth -Date: Sat Jan 26 16:42:26 2008 -0800 - - Rename cairo_format_width to cairo_format_bits_per_pixel and correct its logic - - src/cairo-image-surface.c | 6 +++--- - src/cairo-scaled-font.c | 3 ++- - src/cairoint.h | 4 ++-- - 3 files changed, 7 insertions(+), 6 deletions(-) - -commit 538ace5b51c968a81ea1d4c8d7538f0a227661c6 -Author: Nis Martensen -Date: Sat Jan 26 19:11:26 2008 +0100 - - re-indent xml after removal of structuring level - - doc/public/cairo-docs.xml | 76 ++++++++++++++++++++++---------------------- - 1 files changed, 38 insertions(+), 38 deletions(-) - -commit 642e1af892353d55edd6ebe71720fb541c9deb22 -Author: Nis Martensen -Date: Sat Jan 26 19:05:16 2008 +0100 - - remove empty tutorial stub and one level of structuring - - doc/public/cairo-docs.xml | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit be93e61d70f4e32069448b79cca7eacab6035c6c -Author: Nis Martensen -Date: Sat Jan 26 18:44:32 2008 +0100 - - Add index of new symbols in 1.6 - - doc/public/cairo-docs.xml | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 0874834ec4606c5ff960588077d5310927d560ba -Author: Nis Martensen -Date: Sat Jan 26 16:59:21 2008 +0100 - - Describe cairo_operator_t, add link to operators/ wiki page - - src/cairo.h | 28 ++++++++++++++++++++++++++++ - 1 files changed, 28 insertions(+), 0 deletions(-) - -commit b18bc660c6d5d5018b4cfaf0eaf0278669cac1ac -Author: Behdad Esfahbod -Date: Mon Jan 28 02:33:58 2008 -0500 - - [test/font-matrix-translation] Fix function signature - - test/font-matrix-translation.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit 936edecb35b94213997fdb172f0256c658f416aa -Author: Vladimir Vukicevic -Date: Sun Jan 27 16:52:39 2008 -0800 - - [quartz] only use DrawTiledImage if transformed image is integer aligned - - This Quartz API seems to only tile at integer coordinates; if the source image is - scaled to anything less than integer-aligned, seams appear between tiles. Detect - this and fall back to slower but more general CGPattern path. - - src/cairo-quartz-surface.c | 144 +++++++++++++++++++++++-------------------- - 1 files changed, 77 insertions(+), 67 deletions(-) - -commit 182b02240192c03b1fae5367573962d527f8aad4 -Author: Vladimir Vukicevic -Date: Sat Jan 26 10:57:20 2008 -0800 - - [win32] Fix initial clip region test - - I misread the docs; GetClipBox's return value doesn't necessarily correspond to - GetClipRgn's region type. - - src/cairo-win32-surface.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 0e737632905e61f4d76b6b2c4e5908d75a5cddda -Author: Behdad Esfahbod -Date: Sun Jan 27 02:19:47 2008 -0500 - - [src] Fix make check - - src/cairo-quartz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b3eea75d1f7b56c2046b5387a5eb186d8f154184 -Author: Behdad Esfahbod -Date: Sat Jan 26 13:56:08 2008 -0500 - - Change cairo_get_current_point() to return cairo_status_t instead of void - - So we can return CAIRO_STATUS_NO_CURRENT_POINT. Previously it wasn't easy - to fetch that information. - - src/cairo.c | 22 ++++++++++++++++++---- - src/cairo.h | 2 +- - 2 files changed, 19 insertions(+), 5 deletions(-) - -commit 79383841520af3a7de3018befca37be6a037f9ba -Author: Behdad Esfahbod -Date: Fri Jan 25 19:48:36 2008 -0500 - - [doc] Update list of private header files - - doc/public/Headers.mk | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 58f6aed93d137b77a2550bcace16f8d5573d45ef -Author: Behdad Esfahbod -Date: Fri Jan 25 19:47:07 2008 -0500 - - [doc] Update for recent API changes - - doc/public/tmpl/cairo-paths.sgml | 2 ++ - doc/public/tmpl/cairo-status.sgml | 1 + - doc/public/tmpl/cairo-surface.sgml | 2 -- - 3 files changed, 3 insertions(+), 2 deletions(-) - -commit 45e7ba356d308f67f674a20484a55d41fe922d13 -Author: Behdad Esfahbod -Date: Fri Jan 25 19:46:43 2008 -0500 - - [cairo-pdf-operators] Reformat typedef to not confuse gtk-doc - - src/cairo-pdf-operators-private.h | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 756420a780e870bed6f174ca7f3f14421d1ff7d2 -Author: Behdad Esfahbod -Date: Fri Jan 25 19:38:27 2008 -0500 - - [cairo_surface_show/copy_page()] Make them return void, like cairo_show/copy_page() do - - src/cairo-gstate.c | 6 ++++-- - src/cairo-paginated-surface.c | 12 ++++++++---- - src/cairo-surface.c | 33 ++++++++++++++++++--------------- - src/cairo-svg-surface.c | 5 +++-- - src/cairo.h | 4 ++-- - 5 files changed, 35 insertions(+), 25 deletions(-) - -commit c4ec5539ca7380dccf1a2f797e536c7273b5c2b5 -Author: Nis Martensen -Date: Fri Jan 25 19:13:13 2008 -0500 - - [cairo-surface] Fix doc typo - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ab188f2e90b49fc4e07f04dc512f9fb9864efa0b -Author: Behdad Esfahbod -Date: Fri Jan 25 17:44:26 2008 -0500 - - [cairo-ft] Disable embedded bitmaps if hinting style NONE is requested - - src/cairo-ft-font.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 2df9944a8ac48cb43845e56c5483bf77dafda584 -Author: Behdad Esfahbod -Date: Fri Jan 25 17:12:34 2008 -0500 - - [.gitignore] Add check-has-hidden-symbols.i - - src/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 3d2144b6af07ca44b6fbf1c96080b7e2b7c0285c -Author: Behdad Esfahbod -Date: Fri Jan 25 17:06:11 2008 -0500 - - [cairo-ft] Fix font metrics computation for bitmap fonts and no metrics-hinting - - Preivously we were returning NAN font metrics. Fixed now. Makes bitmap-font - test pass again. - - src/cairo-ft-font.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit c621d8d7191bfa8c1bca533bf9d53d514d01f529 -Author: Vladimir Vukicevic -Date: Fri Jan 25 15:01:44 2008 -0800 - - [ps] Pad image mask lines out to full lines - - The PostScript backend was generating image masks with packed mask - bits, when PS seems to expect each line of the mask to be padded out - to 8 bytes. - - Ref: https://bugzilla.mozilla.org/show_bug.cgi?id=407360 - - src/cairo-ps-surface.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit bae496df11247a1e4aff8b0df3356701f8a11792 -Author: Behdad Esfahbod -Date: Fri Jan 25 08:03:32 2008 -0500 - - [test/bitmap-font] Test under all combinations of hinting, test font metrics too - - This is now failing as we compute NAN font metrics for bitmap-only fonts under - disabled metrics hinting. A very infamous bug excercised with PangoCairo's PDF - output. - - test/bitmap-font.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 94 insertions(+), 8 deletions(-) - -commit 20c8531243c2f2ee220bd1f234cdba6fc3d6d4c7 -Author: Behdad Esfahbod -Date: Fri Jan 25 07:14:07 2008 -0500 - - [test/text-zero-len] Test text and font extents for font size 0 - - test/text-zero-len.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 50 insertions(+), 2 deletions(-) - -commit 83bd590760629b61898ed403e273046545f26767 -Author: Behdad Esfahbod -Date: Fri Jan 25 07:02:25 2008 -0500 - - [test] Test that cairo_text_extents() and cairo_scaled_font_text_extents() match - in results. - - test/font-matrix-translation.c | 31 ++++++++++++++++++++++++++++++- - 1 files changed, 30 insertions(+), 1 deletions(-) - -commit 4c432b09557f52fa35be981743272b33baca6232 -Author: Behdad Esfahbod -Date: Fri Jan 25 04:16:44 2008 -0500 - - [cairo-scaled-font] Fix bug in glyphs bounding box computation - - In 02970ac8cf27bc9d42cf27848a97019d9dd13b6d Vlad introduced the following - innocent-looking change: - - - short min_x = INT16_MAX, max_x = INT16_MIN; - - short min_y = INT16_MAX, max_y = INT16_MIN; - + cairo_point_int_t min = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN }; - + cairo_point_int_t max = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX }; - - Well, read it carefully... yeah. That caused each show glyph operation - upload a mask the size of the surface. With evince/poppler and certain - PDF files that each glyph is rendered in its own cairo_show_glyphs() - call, that meant a 20x slowdown in rendering a page of PDF. - - If still wondering what's wrong with that change, here is the answer: - - - cairo_point_int_t min = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN }; - - cairo_point_int_t max = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX }; - + cairo_point_int_t min = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX }; - + cairo_point_int_t max = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN }; - - Yay for git-bisect. - - src/cairo-scaled-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8983208f456c6f570698df46174faa0208d6de5f -Author: Behdad Esfahbod -Date: Fri Jan 25 01:00:21 2008 -0500 - - [configure.in] Require pixman >= 0.9.6 - - I was experiencing very weird rendering problems and crashes in evince with - pixman 0.9.4. Upgrading to pixman 0.9.6 fixed the all. Lets just require it. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5dfe47a3f14ee8597395dc53ff57fd429e9804cd -Author: Behdad Esfahbod -Date: Fri Jan 25 00:35:11 2008 -0500 - - [cairo-scaled-font] Unbreak it after my recent commit - - Sigh. - - src/cairo-scaled-font.c | 41 +++++++++++++++++++---------------------- - 1 files changed, 19 insertions(+), 22 deletions(-) - -commit efd3a965244305a069ec231b7ec28cff8d6c67c8 -Author: Behdad Esfahbod -Date: Thu Jan 24 23:35:06 2008 -0500 - - [cairo-scaled-font] Don't err on font size 0, really - - First, seems like we were rejecting degenerate font matrix right away - at the constructor. Don't do that. - - Next, PS/PDF were inverting the font scale matrix, assuming that it's - invertible. We now keep the inverse too, so they can use it. For the - case of a size 0 font, both the scale matrix and its invert are set to - 0,0,0,0. That's safe, even if slightly inconsistent. - - src/cairo-pdf-surface.c | 5 +---- - src/cairo-ps-surface.c | 5 +---- - src/cairo-scaled-font-private.h | 1 + - src/cairo-scaled-font.c | 19 ++++++++----------- - 4 files changed, 11 insertions(+), 19 deletions(-) - -commit 45f269e33020d8d7cf247926712b9c64c1fb8959 -Author: Behdad Esfahbod -Date: Thu Jan 24 22:39:28 2008 -0500 - - [cairo-scaled-font] Oops, return err if not handling it - - src/cairo-scaled-font.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 6d0dc3e0760e6bc6b0eceab48674410b4e865287 -Author: Behdad Esfahbod -Date: Thu Jan 24 22:24:23 2008 -0500 - - [cairo-scaled-font] Don't err on font size 0 - - src/cairo-scaled-font.c | 18 ++++++++++++++++-- - 1 files changed, 16 insertions(+), 2 deletions(-) - -commit ea9afecc9aaa87c2df14dc9126c75ac0e3e5b13f -Author: Vladimir Vukicevic -Date: Thu Jan 24 11:48:02 2008 -0800 - - [quartz] Do dynamic symbol lookups for 10.4/10.5 optimization symbols - - The gcc-__attribute-__ based weak linking was causing all sorts of problems; - do dlsym lookups at runtime instead. - - src/cairo-quartz-surface.c | 39 ++++++++++++++++++++++++++++----------- - 1 files changed, 28 insertions(+), 11 deletions(-) - -commit 287de2ce5883daa4238c534e0d4890cb640d7fb7 -Author: Vladimir Vukicevic -Date: Wed Jan 23 21:30:42 2008 -0800 - - [quartz] Clean up unused APIs a bit - - The data parameter from get_image was never really used; get rid of it and clean up - callers. Also get rid of a chunk of dead code in release_dest_image. - - src/cairo-quartz-surface.c | 76 +++++++------------------------------------ - 1 files changed, 13 insertions(+), 63 deletions(-) - -commit b96c6c26c2d6b0b5f79ee569ece602338c4146b2 -Author: Vladimir Vukicevic -Date: Thu Jan 24 11:04:26 2008 -0800 - - [win32] Print non-black/white text correctly in show_glyphs - - src/cairo-win32-printing-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 8e7c0db8018b258fc367da1e5502e9e13bad098c -Author: Vladimir Vukicevic -Date: Thu Jan 24 11:01:55 2008 -0800 - - [win32] Better tracking of initial clip - - There were a few corner cases that the win32 surface was failing - at when there was an initial clip set; the win32-printing surface - had more serious problems when painting meta surface patterns. - This cleans up the initial DC clip tracking for both surfaces. - - src/cairo-win32-printing-surface.c | 69 +++++------- - src/cairo-win32-private.h | 23 +++- - src/cairo-win32-surface.c | 221 +++++++++++++++++++++++++----------- - 3 files changed, 197 insertions(+), 116 deletions(-) - -commit c05e3b08b4cfa820a18e33b5012a6138b931788f -Author: Carl Worth -Date: Thu Jan 24 09:51:58 2008 -0800 - - Remove ROADMAP and TODO, mentioning their URLs in README - - We're maintaining these as part of cairo's website now, - rather than as part of the source code. - - README | 18 +++---- - ROADMAP | 149 --------------------------------------------------------------- - TODO | 111 ----------------------------------------------- - 3 files changed, 8 insertions(+), 270 deletions(-) - -commit 21823842775988c0b58e3868dce053544ed246e2 -Author: Behdad Esfahbod -Date: Wed Jan 23 15:06:52 2008 -0500 - - [test] Minor fix for check-ref-dups rule - - test/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit e7c0a69dcb627abb677f84473a9e3857b2d89a69 -Author: Behdad Esfahbod -Date: Wed Jan 23 14:57:42 2008 -0500 - - [test] Also check for reference images listed in Makefile.am but missing - in git, and if this is not a git checkout, in source directory. - - test/Makefile.am | 36 +++++++++++++++++++++++++++--------- - 1 files changed, 27 insertions(+), 9 deletions(-) - -commit 188765c8e857c88a66656a454a3dbd27c32170f7 -Author: Bertram Felgenhauer -Date: Wed Jan 23 19:22:18 2008 +0100 - - improve comments for the pixman transformation anchoring math. - - src/cairo-matrix.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit b6c723644302c43b7aae098338092e578fe2f007 -Author: Bertram Felgenhauer -Date: Wed Jan 23 18:09:20 2008 +0100 - - update reference images for some non-aa testcases - - test/rectangle-rounding-error-ref.png | Bin 298 -> 231 bytes - test/rotate-image-surface-paint-ref.png | Bin 232 -> 209 bytes - test/unantialiased-shapes-ref.png | Bin 4449 -> 3968 bytes - 3 files changed, 0 insertions(+), 0 deletions(-) - -commit 5a0b15d2c9b5e9ef3aed1f01e8ea28a3f2c36216 -Author: Bertram Felgenhauer -Date: Wed Jan 23 18:02:02 2008 +0100 - - anchor pattern transformations at the pattern origin - This keeps the rounding errors due to the conversion to 16.16 fixed point - numbers small and improves cairo's translation invariance. - - src/cairo-matrix.c | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit 431e846c03b39495ac57834a8b65b7499472ef1b -Author: Vladimir Vukicevic -Date: Tue Jan 22 16:30:37 2008 -0800 - - cairo_point_int32_t is really int32_t, not int16_t - - Oops. - - src/cairo-types-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 02970ac8cf27bc9d42cf27848a97019d9dd13b6d -Author: Vladimir Vukicevic -Date: Tue Jan 22 15:32:11 2008 -0800 - - Fix usage of cairo_rectangle_int16_t leading to memory corruption - - cairo_rectangle_int16_t was being used in a number of places instead - of cairo_rectangle_int_t, which led to memory corruption when cairo was - using a fixed point format with a bigger space than 16.16 (such as 24.8). - - src/cairo-analysis-surface.c | 3 +++ - src/cairo-pdf-surface.c | 6 +++--- - src/cairo-scaled-font.c | 24 ++++++++++++------------ - src/cairo-surface-fallback.c | 9 ++------- - src/cairo-win32-private.h | 2 +- - src/cairo-xcb-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 4 ++-- - src/cairoint.h | 2 +- - 8 files changed, 26 insertions(+), 28 deletions(-) - -commit 1109ccfb4e5b078581a3b4a7e2d152681fa863ec -Author: Behdad Esfahbod -Date: Tue Jan 22 17:44:47 2008 -0500 - - [ROADMAP] Add item: Make cairo-ft respect FC_FT_FACE pattern element - - ROADMAP | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 5024650d4d8d4fa890a531d9e54fed7beef8e2c1 -Author: Behdad Esfahbod -Date: Tue Jan 22 12:45:50 2008 -0500 - - [test] Only summarize check results for the tests tested! - - test/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 18181f12ae6c412fea984484355ff8bc1dfccb54 -Author: Carl Worth -Date: Tue Jan 22 06:25:19 2008 -0800 - - Make Carl return from his time-traveling expedition - - test/rectilinear-miter-limit.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 95f3b425e6fb31b364b08e53e072fac4f5ed0733 -Author: Behdad Esfahbod -Date: Tue Jan 22 01:03:02 2008 -0500 - - [cairo-path-stroke] Use M_SQRT2 for constant value - - src/cairo-path-stroke.c | 8 ++++---- - src/cairoint.h | 4 ++++ - 2 files changed, 8 insertions(+), 4 deletions(-) - -commit 1931ce1b3d491afe4f23670c82e428f95eb25e6d -Author: Behdad Esfahbod -Date: Tue Jan 22 00:36:25 2008 -0500 - - [cairo-operator] Remove unused cairo-operator.c - - src/Makefile.am | 1 - - src/cairo-operator.c | 119 -------------------------------------------------- - src/cairoint.h | 7 --- - 3 files changed, 0 insertions(+), 127 deletions(-) - -commit 47cf7ed769891b00abf96d14de6e79c0fa893cf9 -Author: Carl Worth -Date: Mon Jan 21 16:45:41 2008 -0800 - - Test and document that fill rule has no effect on cairo_path_extents - - src/cairo.c | 4 +- - test/get-path-extents.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 51 insertions(+), 2 deletions(-) - -commit 1ca186f51134e7d5969937760b068caba0070d31 -Author: Carl Worth -Date: Mon Jan 21 16:34:24 2008 -0800 - - Disable rectilinear stroke optimization for small miter limit values - - This fixes the bug that was causing the recently added - rectilinear-miter-limit test case to fail. It passes - quite happily now. - - src/cairo-path-stroke.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 32efcc94627e8890969c4b36a78c831ced6f8d62 -Author: Carl Worth -Date: Mon Jan 21 16:32:48 2008 -0800 - - Add new rectilinear-miter-limit test to demonstrate bug - - We're failing to respect the miter limit in the rectilinear - stroke optimization code. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/rectilinear-miter-limit-ref.png | Bin 0 -> 177 bytes - test/rectilinear-miter-limit.c | 80 ++++++++++++++++++++++++++++++++++ - 4 files changed, 83 insertions(+), 0 deletions(-) - -commit 326342962daa694d876c03194e8a6c1b13f9a8d2 -Author: Carl Worth -Date: Mon Jan 21 15:20:07 2008 -0800 - - Rename trailing_move_to_point to move_to_point - - And prefer TRUE and FALSE literals over 1 and 0. - - src/cairo-path-bounds.c | 24 +++++++++++++----------- - 1 files changed, 13 insertions(+), 11 deletions(-) - -commit c480eedbb58dd03dd4b9b87b3985758ffbce7113 -Author: Carl Worth -Date: Mon Jan 21 14:56:21 2008 -0800 - - Test and document extents of degenerate "dots" - - It's a common idiom to stroke degenerate sub-paths made with - cairo_move_to(x,y);cairo_rel_line_to(0,0) to draw dots. Test - that we get the desired extents from cairo_fill_extents, - cairo_stroke_extents, and cairo_path_extents for these cases. - - Also document that the cairo_path_extents result is equivalent - to the limit of stroking with CAIRO_LINE_CAP_ROUND, (so that - these "dot" points are included), as the line width - approaches 0.0 . - - src/cairo.c | 6 +++--- - test/get-path-extents.c | 28 ++++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+), 3 deletions(-) - -commit 55e0dddf0408046ea0ded419ebe45099a4eb563e -Author: Carl Worth -Date: Mon Jan 21 14:45:06 2008 -0800 - - Add cairo_path_extents testing to several cases missing it - - With these degenerate shapes, cairo_path_extents still returns - a zero-area rectangle, but with a non-zero offset. - - test/get-path-extents.c | 12 ++++++++---- - 1 files changed, 8 insertions(+), 4 deletions(-) - -commit 63df3a82a3a4a035edf89152995a324449616059 -Author: Carl Worth -Date: Mon Jan 21 13:47:05 2008 -0800 - - Fix cairo_path_extents to ignore lone cairo_move_to points. - - Update the documentation as well. - - src/cairo-path-bounds.c | 11 ++++++++++- - src/cairo.c | 40 +++++++++++++++++++++++++--------------- - 2 files changed, 35 insertions(+), 16 deletions(-) - -commit c15cab8b6855540436e457465c4766812c6def55 -Author: Carl Worth -Date: Mon Jan 21 13:34:53 2008 -0800 - - Correct near-pangram to be an actual pangram - - This wasn't affecting the test quality at all, but it did annoy - me to see this mistake. - - test/get-path-extents.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ed695bdb9b1e4500f796c7f07a7cc2f3832b2a39 -Author: Carl Worth -Date: Mon Jan 21 13:33:46 2008 -0800 - - Define repeated string literal once - - test/get-path-extents.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit 80df194b77a4caac1d58132341f034596e500bda -Author: Carl Worth -Date: Mon Jan 21 12:14:49 2008 -0800 - - Clarify documentation of cairo_{fill,stroke,path}_extents - - Mostly just adding more cross-references between the documentation - of these three similar functions. - - src/cairo.c | 36 +++++++++++++++++++++++++----------- - 1 files changed, 25 insertions(+), 11 deletions(-) - -commit eba04b7fbcc7fdbf075ad1372208908634459178 -Author: Brian Ewins -Date: Sun Jan 20 03:22:12 2008 +0000 - - [path] use new interpret_flat infrastructure for path_populate - - refactor to reduce duplication of flattening code. - - src/cairo-path.c | 50 +++++++++++++------------------------------------- - 1 files changed, 13 insertions(+), 37 deletions(-) - -commit 3270ae6a65105787942da8309fa874ee65bc79fe -Author: Brian Ewins -Date: Sun Jan 20 03:21:41 2008 +0000 - - [path] Use new interpret_flat infrastructure for path_count. - - Refactor to reduce duplication of path flattening code. - - src/cairo-path-bounds.c | 6 ---- - src/cairo-path.c | 62 +++++++++++++--------------------------------- - 2 files changed, 18 insertions(+), 50 deletions(-) - -commit 4177208be63caa3128eaf07428f3d4617fcd18e0 -Author: Brian Ewins -Date: Fri Nov 16 22:43:43 2007 +0000 - - [cairo] Add cairo_path_extents() - - This new function gets the extents of the current path, whether - or not they would be inked by a 'fill'. It differs from - cairo_fill_extents() when the area enclosed by the path is 0. - - Includes documentation and updated test. - - doc/public/cairo-sections.txt | 1 + - doc/public/tmpl/cairo-paths.sgml | 10 ++++++++++ - src/cairo-gstate.c | 11 +++++++++++ - src/cairo.c | 30 ++++++++++++++++++++++++++++++ - src/cairo.h | 5 +++++ - src/cairoint.h | 7 +++++++ - test/get-path-extents.c | 33 +++++++++++++++++++++++---------- - 7 files changed, 87 insertions(+), 10 deletions(-) - -commit d923457c0f40c9b34ee75d4d47b9bd0c3edfe669 -Author: Brian Ewins -Date: Sat Jan 19 22:31:49 2008 +0000 - - [path-fixed] make _cairo_path_fixed_bounds use _cairo_path_fixed_interpret_flat - - _cairo_path_fixed_bounds can use the new _interpret_flat mechanism; this - results in tighter bounds; previously the bounds followed the control - points of the beziers, whereas now they are the bounds of the curve. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-path-bounds.c | 39 ++++++++++++++------------------------- - src/cairoint.h | 3 ++- - 3 files changed, 17 insertions(+), 27 deletions(-) - -commit 1471b3f00acddecdfc2617a62ab0e584f319dc1c -Author: Brian Ewins -Date: Sat Jan 19 22:31:10 2008 +0000 - - [path-fixed] add _cairo_path_fixed_interpret_flat - - _cairo_path_fixed_interpret_flat flattens the path as it - interprets it, meaning that a curve_to callback is not - required. - - src/cairo-path-fixed.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 9 ++++ - 2 files changed, 108 insertions(+), 0 deletions(-) - -commit 3339c32b0aa44c4bae6e534f90d26aa342e3d717 -Author: Behdad Esfahbod -Date: Sun Jan 20 02:56:26 2008 -0500 - - [cairoint.h] Move MSC inline macros into cairo-compiler-private.h - where they belong - - src/cairo-compiler-private.h | 10 ++++++++++ - src/cairoint.h | 11 ----------- - 2 files changed, 10 insertions(+), 11 deletions(-) - -commit ac17ce0f89b494a404756c8d24b21a7fb354218e -Author: Behdad Esfahbod -Date: Sun Jan 20 02:54:16 2008 -0500 - - [cairo-fixed/wideint-private.h] Split out typedefs from prototypes - such that the type definitions can be used from boilerplate without exposing - the prototypes. - - src/Makefile.am | 2 + - src/cairo-fixed-private.h | 34 +--------- - src/cairo-fixed-type-private.h | 70 ++++++++++++++++++++ - src/cairo-types-private.h | 2 +- - src/cairo-wideint-private.h | 71 +-------------------- - src/cairo-wideint-type-private.h | 130 ++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 1 + - 7 files changed, 208 insertions(+), 102 deletions(-) - -commit f072d815d40e6fd44369424b68d54cea22da3a26 -Author: Peter Weilbacher -Date: Sat Jan 19 20:48:39 2008 -0500 - - [cairo-ft] Fix typo in comment - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0fb800ff2258d4642a2188a7f219db9620450bc2 -Author: Peter Weilbacher -Date: Sat Jan 19 20:47:59 2008 -0500 - - [cairo-ft] Add FC_PIXEL_SIZE as double, not int - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8887fb35936bb48acadc19a0c71d1b81ec8b481d -Author: Adrian Johnson -Date: Sun Jan 20 01:14:19 2008 +1030 - - Fix PS/PDF Type 1 font embedding when glyph 0 is used - - cairo-scaled-fonts-subsets.c reserves position 0 in each subset for - glyph 0 (.notdef) as the font embedding of each font type requires - .notdef as the first glyph. For some reason this was done by reserving - the position then inserting glyph 0 in the collect function instead of - just adding the glyph to the hash table when the subset is - created. The problem this caused was that when an application called - show_glyphs() with glyph 0, the glyph was added to the hash table - (because it was not already there) resulting in two .notdef glyphs in - the subset. This resulted in breakage in the Type 1 subsetting where - the second .notdef was not emitted and all subsequent glyphs were - moved up one place resulting in incorrect font encoding in the PS/PDF - output. - - Fix this by adding .notdef to the subset hash table when the subset is - created. - - This fixes #13841. - - src/cairo-scaled-font-subsets.c | 36 +++++++++++++++++++----------------- - 1 files changed, 19 insertions(+), 17 deletions(-) - -commit 574bdd01fd5df8f378c901de5cd9b24bd720ad37 -Author: Adrian Johnson -Date: Sun Jan 20 00:26:09 2008 +1030 - - Type1-subset: Add newline to the end of the font - - as some fonts do not have a newline at the end of the last line - - src/cairo-type1-subset.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit ec272fbd0980e8124d87ff5c17a5b751876fc9e2 -Author: Adrian Johnson -Date: Sat Jan 19 12:46:24 2008 +1030 - - Fix PDF extend-reflect test failure - - Previously, when emitting image patterns the PDF backend used - _cairo_pattern_acquire_surface to get the image. For reflected images - this would return an image containing four images in a reflect - pattern. When drawn in a PDF pattern (which only does repeating - patterns) this would create the reflected pattern in PDF. - - For some reason _cairo_pattern_acquire_surface is no longer returning - a reflected image pattern. - - This is fixed by only using _cairo_surface_acquire_source_image to get - the image and using the same code as is used for reflected - meta-surface patterns to created a reflected pattern by drawing four - transformed copies of the image inside the PDF patten. - - This is the better way to implement reflected images as we are no - longer embedding an image four times larger than the original. - - src/cairo-pdf-surface.c | 67 ++++++++++++++++++++++------------------------ - 1 files changed, 32 insertions(+), 35 deletions(-) - -commit 50d0767c8bf4c738b86e10be09d5c4fd7e14a05f -Author: Carl Worth -Date: Fri Jan 18 12:41:57 2008 -0800 - - Add a1-image-sample and a1-traps-sample tests - - Both of these currently fail due to bugs in the way pixman does - its sampling. - - test/.gitignore | 2 + - test/Makefile.am | 2 + - test/a1-image-sample-ref.png | Bin 0 -> 148 bytes - test/a1-image-sample.c | 83 ++++++++++++++++++++++++++++++++++++++++++ - test/a1-traps-sample-ref.png | Bin 0 -> 148 bytes - test/a1-traps-sample.c | 72 ++++++++++++++++++++++++++++++++++++ - test/cairo-test.c | 2 + - 7 files changed, 161 insertions(+), 0 deletions(-) - -commit c11790fded69ed476e7740ed86e4a66bf878d2d3 -Author: Carl Worth -Date: Wed Jan 16 16:32:36 2008 -0800 - - Quiet a warning about switch without some cairo_surface_type_t enum values - - src/cairo-paginated-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 1d6c2d578fa717906ba8fd0a897c52033179e938 -Author: Carl Worth -Date: Wed Jan 16 16:19:40 2008 -0800 - - Remove some gratuitous assert statements - - Calling assert immediately after assigning a literal value is - very bad form. - - src/cairo-image-surface.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit eabd28a655f8ddc73ff71583bb658db796e932cd -Author: Adrian Johnson -Date: Fri Jan 18 21:53:04 2008 +1030 - - win32-printing: define GRADIENT_FILL_RECT_H bug #14107 - - Older versions of mingw do not define this. - - src/cairo-win32-printing-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 0086db893cba90dc73824d77c661d2965ad48112 -Author: Chris Wilson -Date: Thu Jan 17 22:31:05 2008 +0000 - - [cairo-font-options] Treat NULL as a default cairo_font_options_t - - Interpret a NULL cairo_font_options_t as the default values - i.e - as if it were a fresh pointer returned by cairo_font_options_create(). - - src/cairo-font-face.c | 8 +++-- - src/cairo-font-options.c | 51 +++++++++++++++++++++----- - src/cairo-ft-font.c | 16 +++++--- - src/cairo-gstate.c | 2 +- - src/cairo-scaled-font.c | 18 ++++++--- - src/cairo-win32-font.c | 4 +- - src/cairo.c | 10 +++-- - test/.gitignore | 1 + - test/Makefile.am | 12 ++++--- - test/font-options.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++ - 10 files changed, 177 insertions(+), 36 deletions(-) - -commit 02d0e070638f668bf50a8ce2174c21e5614dd6c4 -Author: Chris Wilson -Date: Thu Jan 17 21:39:31 2008 +0000 - - [cairo-font-options] Use cairo_font_options_status() rather open-coding. - - By switching to cairo_font_options_status() instead of checking against - the _cairo_font_options_nil error object, the API is protected from NULL - dereferences. - - src/cairo-font-options.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit b15e91d2b6c229dfe3da4a354306915cc42f75bd -Author: Chris Wilson -Date: Thu Jan 17 21:11:00 2008 +0000 - - [cairo-font-options] Check for a NULL cairo_font_options_t - - On IRC Drakou reported a user error whereby cairo_scaled_font_create() - was called with a NULL cairo_font_options_t. However, instead of - reporting the error back to the user, cairo instead segfaulted trying - to dereference the NULL pointer! - - Add a guard to check that the options is not NULL. - - src/cairo-font-options.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 630536f17681b083db658414d68db2c0eb167af3 -Author: Chris Wilson -Date: Thu Jan 17 17:44:57 2008 +0000 - - [test/extend-*] Add various cairo_pattern_set_extend() test cases. - - Add various test cases to exercise - _cairo_pattern_acquire_surface_for_surface(), most notably using similar - source surfaces to provide coverage of the non-image surface branch. - - test/.gitignore | 4 + - test/Makefile.am | 11 +++- - test/cairo-test.c | 2 - - test/extend-pad-similar.c | 105 +++++++++++++++++++++++++++++++++++ - test/extend-reflect-similar-ref.png | Bin 0 -> 153571 bytes - test/extend-reflect-similar.c | 56 ++++++++++++++++++ - test/extend-reflect.c | 2 + - test/extend-repeat-ref.png | Bin 0 -> 108622 bytes - test/extend-repeat-similar-ref.png | Bin 0 -> 108622 bytes - test/extend-repeat-similar.c | 56 ++++++++++++++++++ - test/extend-repeat.c | 34 +++++++++++ - 11 files changed, 267 insertions(+), 3 deletions(-) - -commit dec2daeaf396be9dc6e8952417cc615d3a607926 -Author: Chris Wilson -Date: Thu Jan 17 15:34:51 2008 +0000 - - [cairo-{ps,pdf}-surface] Assert the font is supported during emission. - - Add an ASSERT_NOT_REACHED to the tail of the font subset emission - functions - as they should always, at least, be supported by the - fallbacks. - - src/cairo-pdf-surface.c | 2 ++ - src/cairo-ps-surface.c | 2 ++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit bde68fd4d6271daf8ca374e472deab95a9a7acff -Author: Chris Wilson -Date: Thu Jan 17 15:06:13 2008 +0000 - - [cairo-scaled-font] Propagate the error to the font. - - If we encounter an error whilst using the font backend to convert the - text to the glyphs, flag the scaled font with that error. - - src/cairo-scaled-font.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit d664e3253e3c310c34264eb0070c2c3c309e071b -Author: Chris Wilson -Date: Thu Jan 17 15:05:10 2008 +0000 - - [cairo-scaled-font] Typo. - - s/ZERO_EXENTS/ZERO_EXTENTS/ - - src/cairo-scaled-font.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit fcdc525dde52c3bf7124d00a98b6be64ca522cb9 -Author: Chris Wilson -Date: Thu Jan 17 14:47:43 2008 +0000 - - [cairo-xlib] Remove the NULL safeguards. - - No need to guarding against the pointer being NULL on internal functions - as no path can call the function will a NULL pointer and no path should - ever try, which in any case it would be better to crash immediately. - - src/cairo-xlib-display.c | 7 +------ - src/cairo-xlib-screen.c | 6 ------ - 2 files changed, 1 insertions(+), 12 deletions(-) - -commit 7b1a0eddacb290ae0d67fa974da1697b2c9ce38c -Author: Chris Wilson -Date: Thu Jan 17 13:51:21 2008 +0000 - - [test/get-path-extents] Exercise cairo_scaled_font_text_extents() - - Compare cairo_scaled_font_text_extents() to cairo_text_extents() in - order to provide test coverage of cairo_scaled_font_text_extents(). - - test/get-path-extents.c | 19 ++++++++++++++++++- - 1 files changed, 18 insertions(+), 1 deletions(-) - -commit dbc97c2576320126e0cddd833ac88320af995d77 -Author: Chris Wilson -Date: Thu Jan 17 13:41:19 2008 +0000 - - [text] Set the extents on the error paths. - - Ensure the text extents are initialized (zeroed) if we encounter an - error along for any of the text extents functions. - - src/cairo-scaled-font.c | 19 ++++++++++++++++--- - src/cairo.c | 35 +++++++++++++++++++---------------- - 2 files changed, 35 insertions(+), 19 deletions(-) - -commit aec7ae67aa72f3105232fa7a66c1ea013c840da1 -Author: Chris Wilson -Date: Thu Jan 17 13:28:55 2008 +0000 - - [test/text-zero-len] Test the public cairo_scaled_font_* with NULLs. - - Pass NULL to cairo_scaled_font_(text|glyph)_extents() to test the - consistency of the extents API. - - test/text-zero-len.c | 33 +++++++++++++++++++++++++++++++++ - 1 files changed, 33 insertions(+), 0 deletions(-) - -commit 390e22894b093184e489ea762ffc29eeb1c81d2b -Author: Chris Wilson -Date: Thu Jan 17 13:13:40 2008 +0000 - - [test/in-fill-trapezoid] Add a few holes. - - Complete the coverage of _cairo_trap_contains() by cutting holes out of - the simple shapes. - - test/in-fill-trapezoid.c | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit da9c43329ad09ccf48f8a71d28848f111af7ecb5 -Author: Chris Wilson -Date: Thu Jan 17 11:22:19 2008 +0000 - - [test/in-fill-trapezoid] Add test to exercise _cairo_trap_contains(). - - A simple test to provide coverage of _cairo_trap_contains(), though - not yet seeking boundary conditions. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/in-fill-trapezoid.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 68 insertions(+), 0 deletions(-) - -commit f638e5ea355cf0268a4b099ce7b8b98c69df6b67 -Author: Chris Wilson -Date: Thu Jan 17 11:03:50 2008 +0000 - - [cairo-region] Review status propagation. - - Check that the error status is propagated from _cairo_region_*. - - src/cairo-clip.c | 2 +- - src/cairo-glitz-surface.c | 50 ++++++++++++++++++++++++-------------------- - src/cairo-surface.c | 7 +---- - 3 files changed, 30 insertions(+), 29 deletions(-) - -commit 248f0060e5317f53a688ea0e0aea2997824fa996 -Author: Chris Wilson -Date: Thu Jan 17 10:10:55 2008 +0000 - - [cairo-analysis-surface] Return the nil surface rather than NULL. - - On error return a nil surface that represents the error rather than - making the assumption of a NO_MEMORY error in the caller. - - src/cairo-analysis-surface.c | 5 +---- - src/cairo-paginated-surface.c | 5 ++--- - 2 files changed, 3 insertions(+), 7 deletions(-) - -commit dd13a00541ebd85bb7687add8b76fa3fb1d82b95 -Author: Chris Wilson -Date: Thu Jan 17 10:09:22 2008 +0000 - - [test/get-path-extents] Check extents of degenerate paths. - - Ensure that degenerate paths have zero extents. - - test/get-path-extents.c | 35 +++++++++++++++++++++++++++++++++++ - 1 files changed, 35 insertions(+), 0 deletions(-) - -commit 3f202c081d211d5ac6c28ce96cd0f57f8bb26aac -Author: Chris Wilson -Date: Wed Jan 16 23:42:24 2008 +0000 - - [Makefile.am] Another path massage for lcov. - - Beware the inline functions in the headers that are now being pulled - into the boilerplate code. - - Makefile.am | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 9ebfa8b5fb82596341b9ca0f19c362f24a7ff782 -Author: Chris Wilson -Date: Wed Jan 16 20:35:41 2008 +0000 - - [Makefile.am] Couple check-ref-missing into release-check - - Verify that all the reference images checked into git will be included - within the distribution tarball as early as possible in the release - process. - - Makefile.am | 6 +++++- - test/Makefile.am | 16 ++++++++++++---- - 2 files changed, 17 insertions(+), 5 deletions(-) - -commit f9a80c06b40634ffef00770731d3b433e465a1b9 -Author: Chris Wilson -Date: Wed Jan 16 23:28:27 2008 +0000 - - [cairo-path-stroke] Convert degenerate splines into lines. - - This fixes a discrepancy in the stoker between splines and lines, - whereby the stroker failed to add a dash for a zero length spline. - - src/cairo-path-stroke.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2621a323a0ccfe33ff42ed17536db0dc89473a9f -Author: Chris Wilson -Date: Wed Jan 16 23:24:41 2008 +0000 - - [test/dash-curve] Add a new test case for dashes along splines. - - Modify the dash-state test case and use curves instead of lines - - exercises _cairo_stroker_curve_to_dashed() and degenerate splines. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/dash-curve-ref.png | Bin 0 -> 39642 bytes - test/dash-curve.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 77 insertions(+), 0 deletions(-) - -commit bb41fa22e3d3b1fe4b3e802ecf7d8041eacda3fd -Author: Chris Wilson -Date: Wed Jan 16 23:21:53 2008 +0000 - - [Makefile.am] Further massage lcov paths for srcdir != builddir. - - The lcov scripts generate incorrect absolute paths to the builddir for - source files - so convert them to srcdir using sed. - - Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0a4ced5a2659b168fe8d1a6e3917f79fd5c66ae5 -Author: Carl Worth -Date: Wed Jan 16 10:47:46 2008 -0800 - - Increment version to 1.5.7 after the 1.5.6 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d2a02d4f5ccb1c6dc7f8cca0c322b72f1638d25b -Author: Carl Worth -Date: Wed Jan 16 10:34:17 2008 -0800 - - Remove check-has-hidden-symbols.i on 'make distclean' - - Without this, 'make distcheck' fails so releases don't happen. - - src/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 5c3a0b5c0044bff1262d583e38f84d48d407f0d9 -Author: Carl Worth -Date: Wed Jan 16 10:22:44 2008 -0800 - - Add miter-precision-ref.png tothe distribution. - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit cb1ddc4e475ff783960925139e85f6fada56213a -Author: Carl Worth -Date: Wed Jan 16 10:10:39 2008 -0800 - - Replace -I($builddir) with -I. to avoid breaking non-srcdir builds. - - This variable was expanding to an empty string, so the next -I flag - was getting completely swallowed. Let's avoid being clever and just - use . which is what we want in the expansion anyway. - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ad8d03967a2b68ab88a428df6b9d68e76002a88f -Author: Carl Worth -Date: Tue Jan 15 15:50:54 2008 -0800 - - Increment version to 1.5.6 and to 15:0:13 - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit fe27f4b9a34946b121b4259f057fdf3c52d1371b -Author: Carl Worth -Date: Tue Jan 15 15:47:48 2008 -0800 - - NEWS: Add notes for cairo 1.5.6 - - NEWS | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 95 insertions(+), 5 deletions(-) - -commit 1bccbd88c38c4438e94cf8936228c75e47be0af4 -Author: Chris Wilson -Date: Wed Jan 16 16:33:22 2008 +0000 - - [cairo-pdf-surface] Review error propagation from output stream. - - Ensure that errors encountered whilst processing the output stream are - propagated back to the surface (and the user). - - src/cairo-pdf-surface.c | 291 ++++++++++++++++++++++++----------------------- - 1 files changed, 147 insertions(+), 144 deletions(-) - -commit 20151fc53401dcc53ef3ab6a78c91a0a02afe497 -Author: Chris Wilson -Date: Wed Jan 16 16:33:22 2008 +0000 - - [cairo-ps-surface] Review error propagation during surface creation. - - Track the error during surface creation so that it can be returned to - the user via _cairo_surface_create_in_error(). - - src/cairo-ps-surface.c | 36 +++++++++++++++++------------------- - 1 files changed, 17 insertions(+), 19 deletions(-) - -commit 3daa63693c2f8f9cc3c7fa41ef1e4d69bd67b3cc -Author: Chris Wilson -Date: Wed Jan 16 16:33:22 2008 +0000 - - [cairo-svg-surface] Review error propagation during surface creation. - - Track the error during surface creation so that it can be returned to - the user via _cairo_surface_create_in_error(). - - src/cairo-svg-surface.c | 124 +++++++++++++++++++++++++---------------------- - 1 files changed, 66 insertions(+), 58 deletions(-) - -commit 7111b18c27d7ee0439339a6aa72f0e4244f883f9 -Author: Chris Wilson -Date: Wed Jan 16 16:23:23 2008 +0000 - - [cairo-surface] Introduce _cairo_surface_create_in_error(). - - Unexport all the static error surfaces and use a function to select - the appropriate error surface for the status. - - src/cairo-array.c | 3 +- - src/cairo-glitz-surface.c | 20 ++---- - src/cairo-image-surface.c | 136 ++++-------------------------------- - src/cairo-meta-surface.c | 12 +-- - src/cairo-os2-surface.c | 22 +++---- - src/cairo-paginated-surface.c | 8 ++- - src/cairo-pdf-surface.c | 11 +-- - src/cairo-png.c | 38 ++++++---- - src/cairo-ps-surface.c | 9 +-- - src/cairo-quartz-surface.c | 32 +++----- - src/cairo-surface-fallback.c | 6 +- - src/cairo-surface.c | 62 +++++++++++----- - src/cairo-svg-surface.c | 20 ++---- - src/cairo-win32-printing-surface.c | 10 +-- - src/cairo-win32-surface.c | 37 ++++------ - src/cairo-xcb-surface.c | 18 ++--- - src/cairo-xlib-surface.c | 26 +++----- - src/cairo.c | 4 +- - src/cairoint.h | 6 +- - src/test-fallback-surface.c | 5 +- - src/test-meta-surface.c | 18 +++-- - src/test-paginated-surface.c | 5 +- - 22 files changed, 185 insertions(+), 323 deletions(-) - -commit 5cbc45488e276cb6e6ecfa7bc7dd4fae342de85e -Author: Chris Wilson -Date: Wed Jan 16 16:29:19 2008 +0000 - - [cairo-output-stream] Introduce _cairo_output_stream_create_in_error() - - Use a utility function to wrap an incoming error status into a new - error stream. As a side-effect, all error streams must be destroyed as - in the general case the caller can not distinguish between a static - error object and one allocated to hold an unusual error status. - - src/cairo-base85-stream.c | 3 +++ - src/cairo-deflate-stream.c | 7 ++----- - src/cairo-output-stream-private.h | 3 +++ - src/cairo-output-stream.c | 26 ++++++++++++++++++++++++-- - src/cairo-ps-surface.c | 10 +++++++--- - src/cairo-type1-fallback.c | 8 ++++---- - src/cairo-type1-subset.c | 5 +++-- - 7 files changed, 46 insertions(+), 16 deletions(-) - -commit 2c10c7559db11ccf511e119f4d4fb2da97508786 -Author: Chris Wilson -Date: Wed Jan 16 13:37:48 2008 +0000 - - [Makefile.am] Add -I$(builddir) for .c.i target - - Updated the CPP command so that it can find in the - local build directory. - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e49db8ed3ea5727e00e2734a8877af860371be69 -Author: Carl Worth -Date: Wed Jan 16 08:11:51 2008 -0800 - - Fix create-for-stream test to log its failure properly - - Without this, a failure of this test won't be nicely reported - in the post-make-check summary. (Also fix a silly little typo - in the svg-clip test.) - - test/Makefile.am | 1 - - test/create-for-stream.c | 13 +++++++++++-- - test/svg-clip.c | 2 +- - 3 files changed, 12 insertions(+), 4 deletions(-) - -commit 57c2b75c229ac7811c573548ae50e6b0e4ecf862 -Author: Vladimir Vukicevic -Date: Tue Jan 15 14:27:14 2008 -0800 - - [quartz] Store the CGFontRef and reuse it for rendering - - Previously the CGFontRef was recreated each time in show_glyphs; this - caused the font to get re-embedded in any PDF files that were being - generated through Quartz. - - src/cairo-atsui-font.c | 18 ++++++++++++++++++ - src/cairo-quartz-private.h | 3 +++ - src/cairo-quartz-surface.c | 10 ++-------- - 3 files changed, 23 insertions(+), 8 deletions(-) - -commit 968eaf3c44f37ada9c1d7005fc84ead797e11b58 -Author: Chris Wilson -Date: Mon Jan 14 18:09:32 2008 +0000 - - [cairo-xlib] Fixup --disable-xlib-xrender - - Fixup the headers and boilerplate to compile and run correctly when - configured with --disable-xlib-xrender. - - boilerplate/Makefile.am | 2 +- - boilerplate/cairo-boilerplate-xlib-private.h | 2 + - boilerplate/cairo-boilerplate-xlib.c | 29 +++++++++++++++---------- - boilerplate/cairo-boilerplate.c | 2 +- - src/Makefile.am | 2 +- - src/cairo-freelist-private.h | 3 +- - src/cairo-xlib-display.c | 1 + - src/cairo-xlib-private.h | 6 +---- - src/cairo-xlib-screen.c | 1 + - src/cairo-xlib-surface-private.h | 2 + - src/cairo-xlib-surface.c | 6 +++++ - src/cairo-xlib-xrender-private.h | 3 -- - src/cairo-xlib-xrender.h | 8 +++--- - test/xlib-surface.c | 1 - - 14 files changed, 38 insertions(+), 30 deletions(-) - -commit 22d7f311f7733a57ece5d91708b2b5da9b71de86 -Author: Behdad Esfahbod -Date: Mon Jan 14 16:14:02 2008 -0500 - - [scaled-font] Upgrade glyph mask as needed in case of mixed-format glyphs - - In ecb895803b9d2a3fd142f4a2c694ca08c5581f0e Carl made fallback show_glyphs - always use a A8 mask in case of mixed-format glyphs. That's suboptimal if - there are ARGB32 glyphs. Using masks smartly we can implement the desired - behavior. Done now. - - src/cairo-image-surface.c | 18 +++++++++++++++ - src/cairo-scaled-font.c | 54 +++++++++++++++++++++++++-------------------- - src/cairoint.h | 3 ++ - 3 files changed, 51 insertions(+), 24 deletions(-) - -commit a5e5c1b5b04dd1d1138e96b7f4c097f14a1cd2cd -Author: Chris Wilson -Date: Sun Jan 13 15:00:58 2008 +0000 - - [test] Add a custom hook to summarise the failures. - - Add a check-local hook that scans the log fails and displays a list - of failed tests (and the failing targets). - - test/Makefile.am | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 8d6249b2c1200dfaf3e98c40e82ab2796e9ef28c -Author: Chris Wilson -Date: Sun Jan 13 11:40:53 2008 +0000 - - [cairo-scaled-font] Add missing matrix guard to cairo_scaled_font_create(). - - cairo_scaled_font_create() did not check the user supplied ctm was valid, - triggering an assertion later when computing the scale factors. - - src/cairo-scaled-font.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 3f59ef95482db478230bb7634209bb826b6a06d0 -Author: Chris Wilson -Date: Sun Jan 13 11:21:39 2008 +0000 - - [cairo-matrix] Tidy usage of HAVE_ISFINITE. - - Use a macro to switch between isfinite() and its fallback in order to - avoid using an #ifdef from within a function. - - src/cairo-gstate.c | 25 ++++++------------------- - src/cairo-matrix.c | 25 ++++++------------------- - 2 files changed, 12 insertions(+), 38 deletions(-) - -commit 5e32dcf863cc8f40e2679c8c8c42e3ac927ab3c9 -Author: Chris Wilson -Date: Sun Jan 13 11:10:28 2008 +0000 - - [cairo-gstate] Check that the matrix remains invertible. - - Ensure that the ctm remains invertible after multiplying the user - supplied matrices. Although the arguments are checked so that they are - valid per se, we double check that the result after multiplication is - still a valid invertible matrix. This should catch pathological cases - where the user concatenates a long series of matrix operations, which - either exceed our numerical limits or become degenerate through rounding - errors. - - src/cairo-gstate.c | 16 ++++++++++++++++ - 1 files changed, 16 insertions(+), 0 deletions(-) - -commit 2f600affaa9ac3537013c69643878731a2f4389e -Author: Chris Wilson -Date: Sun Jan 13 11:02:55 2008 +0000 - - [cairo-gstate] Add isfinite guards to the transformation ops. - - If we have isfinite() available use it to check that the user supplied - arguments are valid. - - src/cairo-gstate.c | 21 +++++++++++++++++++++ - 1 files changed, 21 insertions(+), 0 deletions(-) - -commit 3fed79d1c24f07618243bb197b44a9fd106aebbc -Author: Chris Wilson -Date: Sun Jan 13 10:28:11 2008 +0000 - - [cairo-paginated-surface] Set error on surface for operations done its behalf. - - Ensure that the error is propagated to the target surface if we fail - whilst performing an operation on its behalf, for example set the size - of the paginated surface. - - src/cairo-paginated-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 481b88dd6b19c267feaf05652974225e86aa8007 -Author: Chris Wilson -Date: Sat Jan 12 20:35:56 2008 +0000 - - [cairo-pattern] Add an ASSERT_NOT_REACHED - - On the default case for an unknown pattern type, add an assert that the - code is never reached, and just in case upgrade the error to a fatal - PATTERN_TYPE_MISMATCH. - - src/cairo-pattern.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 973d5fa8a50fbb0fb760f2e32a227a6238d074da -Author: Chris Wilson -Date: Sat Jan 12 11:04:03 2008 +0000 - - [test] Sort TESTS - - A couple of tests were out of order, causing a bit of confusion in the - user. - - test/.gitignore | 2 +- - test/Makefile.am | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit ac98c9e572135f5f46303ce49e6a04f86efe2676 -Author: Chris Wilson -Date: Sat Jan 12 10:49:48 2008 +0000 - - [test/rel-path] Check that invalid relative paths raise an error. - - Check that NO_CURRENT_PATH is raised if a relative path op is used - on a new path. - - test/rel-path.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 66 insertions(+), 0 deletions(-) - -commit 6cc75cfe5b962566938189b5a7dd63135e981300 -Author: Chris Wilson -Date: Sat Jan 12 10:30:15 2008 +0000 - - [cairo] Harden the text API against NULL strings. - - Handle NULL strings in cairo_show_(text|glyph), - cairo_(text|glyph)_(extents|path) without crashing. - - src/cairo.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 864dab828b4c860668adb48ff9361e9969b5259f -Author: Chris Wilson -Date: Sat Jan 12 10:01:36 2008 +0000 - - [test/text-zero-len] Test passing NULLs to the API. - - Check that the public API handles NULL - at the moment the code - is a little inconsistent and crashes! - - test/text-zero-len.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 44 insertions(+), 1 deletions(-) - -commit ae1e044e328deec7a430de3724a7ae0ad958d22d -Author: Chris Wilson -Date: Sat Jan 12 00:31:42 2008 +0000 - - [cairo-matrix] Use isfinite() to check matrix determinant. - - The current NaN check is insufficient as it classifies inf as a valid - determinant. We can improve the test by using isfinite() - but only - when it is available. We use the feature test macros as being the - simplest way of determining the presence of isfinite() as it may be - implemented as a macro, making checking for its usability troublesome - during configure. - - src/cairo-matrix.c | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit 3610841910714f0bca07caeb606be9c69fd9d4c8 -Author: Kouhei Sutou -Date: Fri Jan 11 14:36:05 2008 -0800 - - Fix typo in comment. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0b9124069271593be390d9835fcd1527b20770e3 -Author: Chris Wilson -Date: Fri Jan 11 21:55:52 2008 +0000 - - [check-plt.sh] Ensure that $MAKE is defined. - - Copy the check from check-def.sh now that $MAKE is also used in - check-plt.sh - - src/check-plt.sh | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 92c744978f0c08456cf0ec8dca87abebf6a6d150 -Author: Chris Wilson -Date: Fri Jan 11 21:54:58 2008 +0000 - - [Makefile.am] Tweak the flags passed to CPP. - - Adjust the flags passed to $(CPP) to match those used in the - surrounding targets (splint and sparse), which should improve their - reliability. - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 36f5d69a1165f81e97b50c64dde33fa19db36326 -Author: Behdad Esfahbod -Date: Fri Jan 11 16:48:55 2008 -0500 - - [src/Makefile.am] Tweak includes a bit - - src/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ed113ef4229e23d137b2673f233a23064f51ff24 -Author: Chris Wilson -Date: Fri Jan 11 21:13:05 2008 +0000 - - [check] Move the hidden symbol check into check-{def,plt}.sh - - Behdad, once again the arbiter of good taste, objected to the use of - the dotfile within the Makefile, and suggested that one calls $MAKE to - pre-process the source file from within the check scripts. - - Doing so removes the ugly wart added to Makefile.am... - - src/Makefile.am | 14 +++++--------- - src/check-def.sh | 4 ++-- - src/check-has-hidden-symbols.c | 11 +---------- - src/check-plt.sh | 4 ++-- - 4 files changed, 10 insertions(+), 23 deletions(-) - -commit bcf0c442b91b553b226c78d254906f7127013391 -Merge: ecb8958... 8a6a0b4... -Author: Carl Worth -Date: Fri Jan 11 12:30:15 2008 -0800 - - Merge branch 'master' of git.cairographics.org:/git/cairo into cairo - -commit ecb895803b9d2a3fd142f4a2c694ca08c5581f0e -Author: Carl Worth -Date: Fri Jan 11 12:28:49 2008 -0800 - - Migrate glyph mask to A8 in case of mixed-format glyphs. - - This fixes the remaining image-backend problems with bug 13479: - - Ugly Courier New font with cairo 1.4.12 - https://bugs.freedesktop.org/show_bug.cgi?id=13479 - - although the xlib-backend had been fixed previously. - - Specifically, if an A1 glyph is first encountered, then subsequent - glyphs will still be rendered with antialiasing, (previously they - would be rendered very poorly without antialiasing). - - Similarly, if the first glyph encountered has component-alpha - sub-pixel antialiasing and then an A1 or A8 glyph is encountered - then all glyphs will rendered in A8 (grayscale antialiasing). - Previously, the non-subpixel-antialiased glyphs would not appear - at all. - - src/cairo-scaled-font.c | 50 ++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 47 insertions(+), 3 deletions(-) - -commit 8a6a0b43dc249acb0ad8cb9c6f16360294bcfdc3 -Author: Chris Wilson -Date: Fri Jan 11 18:47:19 2008 +0000 - - [check] Replace compiled symbol visibility checker with shell script. - - Behdad Esfahbod objected to the execution of a compiled program to check - symbol visibility as it makes cross-compilation more difficult. - - Instead of executing the program, this method conditionally exports - a variable if cairo uses symbol hiding and scans the executable for - that symbol in a similar manner to check-def.sh. This has the slight - advantage of using the Makefile for performing the compilation, rather - than attempting to invoke $(CPP) from a shell script within the test - environment. - - src/Makefile.am | 12 ++++++++---- - src/cairo-compiler-private.h | 5 ++--- - src/check-def.sh | 11 ++++++----- - src/check-has-hidden-symbols.c | 12 ++++++++++++ - src/check-plt.sh | 14 ++++++++------ - src/compiler-supports-visibility.c | 6 ------ - 6 files changed, 36 insertions(+), 24 deletions(-) - -commit 982f65081f987e2c44f05942411c031bd32fd968 -Author: Chris Wilson -Date: Fri Jan 11 17:25:33 2008 +0000 - - [cairoint.h] Compile time check for a font backend. - - Add a paranoid check that at least one font backend is available - this - should have been already caught by configure, but it should help if a new - font backend is ever added. - - src/cairoint.h | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 6d3ed950ea075ff2a5a569365b46c3cfc4152787 -Author: Chris Wilson -Date: Fri Jan 11 16:16:20 2008 +0000 - - [check] Skip def/plt tests if the compiler doesn't support symbol hiding. - - Compile a trivial program such that it reports whether cairo is hiding - its internal symbols and skip the tests that depend upon it. - - This prevents false errors, such as bug 12726, where the user is - presented with a scary make check failure. - - src/Makefile.am | 5 +++++ - src/cairo-compiler-private.h | 3 +++ - src/check-def.sh | 5 +++++ - src/check-plt.sh | 5 +++++ - src/compiler-supports-visibility.c | 6 ++++++ - 5 files changed, 24 insertions(+), 0 deletions(-) - -commit be146f02e0e220aa70217bf348beef301a56f898 -Author: Chris Wilson -Date: Fri Jan 11 15:28:52 2008 +0000 - - [Makefile.am] Update cairo.def after the set of enabled features is modified. - - Bug 13342 corresponds with a rebuild of cairo after removing - --enable-glitz from the configure line. Under these circumstances, - the remaining installable headers are not modified and therefore - cairo.def is not rebuilt and still expects to find a reference to - cairo_glitz_surface_create. The solution is to rebuild cairo.def after - any modification to the 'public' headers (installable or otherwise). - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c26784dbb6d3c90f9e3fa722efa0f9f4fd59bd4c -Author: Chris Wilson -Date: Fri Jan 11 14:04:56 2008 +0000 - - [configure] Version bump for $(EXEEXT) - - Adrian Johnson found that adding $(EXEEXT) to TESTS broke the build - under mingw. After a bit of investigation, the issue was tracked down - to being caused by automake-1.7. Bump the autotools version - requirements to avoid the breakage. - - configure.in | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 2574cc35b3478e7333bd4953e90a3edc5f7c4f16 -Author: Adrian Johnson -Date: Fri Jan 11 22:07:26 2008 +1030 - - win32-printing: Do not clip and paint with an empty path - - For non solid patterns _fill and _show_glyphs sets a clip - path then paints the pattern. Previously if the path is empty - SelectClipPath did not set clip. This was probably the cause - of bug 13657 where the entire page was black. - - Fix this by not painting anything if the path is empty. - - src/cairo-win32-printing-surface.c | 8 ++++++-- - src/cairo-win32-private.h | 1 + - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 7ef4caaf11379cb50a08520f729552553de60660 -Author: Adrian Johnson -Date: Fri Jan 11 22:06:51 2008 +1030 - - win32-printing: use fill instead of clip for non win32 fonts - - Non Windows fonts are drawn by getting the outline path, setting - this is the clip path, and painting the source pattern. For - solid colors this can avoid the clip and just do a fill. - - src/cairo-win32-printing-surface.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit ef56a6fd93d6192ee1f1948d11c75878aea40f4e -Author: Adrian Johnson -Date: Fri Jan 11 22:05:54 2008 +1030 - - PS: Don't use language level check in EPS - - As 'showpage' and 'quit' can not be used in EPS. - - src/cairo-ps-surface.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit b703199525ca02274ef5a8474cdae0cb70705964 -Author: Adrian Johnson -Date: Fri Jan 11 22:05:13 2008 +1030 - - Type1-subset: Font name may be NULL - - If the FreeType face->family_name is NULL use a CairoFont-x-y name. - - src/cairo-type1-subset.c | 37 ++++++++++++++++++++++++------------- - 1 files changed, 24 insertions(+), 13 deletions(-) - -commit 6418a8be8719c9a969d9ec1f8624c841db9d2b90 -Author: Chris Wilson -Date: Thu Jan 10 21:35:05 2008 +0000 - - [test/.valgrind-suppressions] Update for amd64/sid - - Update the valgrind suppressions for the libz and Xrm spam. - - test/.valgrind-suppressions | 20 +++++++++++++++++--- - 1 files changed, 17 insertions(+), 3 deletions(-) - -commit 2e5f278da11369073eefeeedff7211bacb31ace1 -Author: Chris Wilson -Date: Thu Jan 10 22:11:42 2008 +0000 - - [cairo-pattern] Free the copied pattern on error. - - Free the locally allocated pattern if the copy fails. - - src/cairo-pattern.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit db246f2fa22920a996a32f11233228e9af1d1abb -Author: Chris Wilson -Date: Thu Jan 10 21:32:47 2008 +0000 - - [cairo-traps] Typo caught by valgrind. - - ==3429== Conditional jump or move depends on uninitialised value(s) - ==3429== at 0x4E3FB0F: _cairo_box_round_to_rectangle (cairo-fixed-private.h:196) - ==3429== by 0x4E34B29: _cairo_clip_intersect_to_rectangle (cairo-clip.c:162) - ==3429== by 0x4E31943: cairo_push_group_with_content (cairo.c:495) - ==3429== by 0x403044: draw (clip-zero.c:48) - ==3429== by 0x404221: cairo_test_expecting (cairo-test.c:377) - ==3429== by 0x64701C3: (below main) (libc-start.c:222) - - Caused by setting extents->p2.y to zero twice. - - src/cairo-traps.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 10f6ef98f645d9f9f54d88fcf18683771258d36f -Author: Chris Wilson -Date: Thu Jan 10 17:50:45 2008 +0000 - - [gitignore] Add mkinstalldirs. - - Ignore another autoconf utility script. - - .gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit da769b53e89b1f1ff91886a12a388e5fadec47bb -Author: Chris Wilson -Date: Thu Jan 10 17:23:56 2008 +0000 - - [configure.in] Fixup usage of _CHECK_FUNCS_WITH_FLAGS within PKG_CHECK_MODULE. - - An unwanted side-effect of the recent fix for the paranoid extra check - for a usable library was that it broke the logic for the absence of the - module. - - configure.in | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit 409e91b576ad992b41c66c952931c4a3e652dbf9 -Author: Chris Wilson -Date: Thu Jan 10 15:53:54 2008 +0000 - - [cairo-pdf-surface] Review error handling. - - Ensure all errors are propagated back to the caller with locally - allocated resources destroy as required. - - src/cairo-pdf-surface.c | 261 ++++++++++++++++++++++++++++++++--------------- - 1 files changed, 177 insertions(+), 84 deletions(-) - -commit 6134600988a6b5fcbc72f7897bfc83b37949b677 -Author: Chris Wilson -Date: Tue Jan 8 14:14:33 2008 +0000 - - [cairo-pdf-surface] Skip emitting the font subset if not among resources. - - Do not emit the font_subset if we did not successfully add it to the list - of font resources - can only happen after an error - - src/cairo-pdf-surface.c | 35 +++++++++++++++++++++++------------ - 1 files changed, 23 insertions(+), 12 deletions(-) - -commit 755a4bb51b458fbc059b6306e371d9dc1c906b04 -Author: Chris Wilson -Date: Thu Jan 10 15:30:42 2008 +0000 - - [test] Win32 printing backend testing depends upon ghostscript - - Using the Win32 printing backend requires ghostscript, so only enable - those tests if we detect 'gs' during configure. - - boilerplate/cairo-boilerplate.c | 2 ++ - configure.in | 17 +++++++++++++++++ - 2 files changed, 19 insertions(+), 0 deletions(-) - -commit 02b0743458655f44ffc4d429b4ac355df42071f1 -Author: Chris Wilson -Date: Thu Jan 10 15:22:16 2008 +0000 - - [cairo-pattern] Rearrange CAIRO_MUTEX_INITIALIZE. - - test/pattern-get-type exposes a bug whereby we try to acquire the - _cairo_pattern_solid_pattern_cache_lock before initializing the - mutexes. To fix this move the CAIRO_MUTEX_INITIALIZE() from the - depths of _cairo_pattern_init() and perform it at the public entry - points. - - src/cairo-pattern.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit cbe8d3855efd1254089c1c855c337df326ea52d7 -Author: Chris Wilson -Date: Thu Jan 10 15:14:15 2008 +0000 - - [test] Fixup make check for mingw - - Add EXEEXT to TESTS so that mingw builds the correct target. - - perf/Makefile.am | 8 +- - test/Makefile.am | 313 +++++++++++++++++++++++++++--------------------------- - 2 files changed, 161 insertions(+), 160 deletions(-) - -commit 9ae4b219e1c5b7a8c139b004a97d86a1ce1d408c -Author: Chris Wilson -Date: Thu Jan 10 14:47:16 2008 +0000 - - [test/solid-pattern-cache-stress] Check for drand48(). - - Apply an alternative rand() function if drand48() is not available for - the platform. - - configure.in | 2 +- - test/solid-pattern-cache-stress.c | 12 ++++++++++-- - 2 files changed, 11 insertions(+), 3 deletions(-) - -commit 648289c639618cc31394f889f6e329ddcaca41ee -Author: Chris Wilson -Date: Thu Jan 10 14:36:57 2008 +0000 - - [configure.in] Add paranoid double checking for (svg|pdf)2png - - Due to my incomplete cross-build environment, configure detects the - presence of rsvg and poppler, but they cannot be used. To make my life - easier, add a check similar to that used for fontconfig to ensure the - libraries are usable before compiling the optional test utilites. - - configure.in | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 909c57ce158e41bf2761f82b2678dc1f390051d2 -Author: Chris Wilson -Date: Thu Jan 10 12:45:58 2008 +0000 - - [cairo-pdf-operators] Be consistent in error checks. - - Consistently check the output status at the end of each function - - helps with early error detection and even improves test code coverage! - - src/cairo-pdf-operators.c | 39 ++++++++++++++++++++------------------- - 1 files changed, 20 insertions(+), 19 deletions(-) - -commit 4ffb0a80b3aa9e54804082a24c58db0d2527073d -Author: Chris Wilson -Date: Thu Jan 10 12:51:07 2008 +0000 - - [cairo-paginated-surface] Call the abstract cairo_surface_show_page (). - - Use the generic surface layer cairo_surface_show_page() instead of - directly calling cairo_paginated_surface_show_page(), as the higher - level performs more error checking. - - src/cairo-paginated-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9d49c4b10e636c0868d15c50cb1d2a724000fc07 -Author: Chris Wilson -Date: Thu Jan 10 14:18:25 2008 +0000 - - [configure] Print version info in summary. - - Add the cairo version to the configure summary. - - configure.in | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ea4dec08f7c62ad3c3e81aa06ce0dd5a08936c45 -Author: Chris Wilson -Date: Thu Jan 10 13:50:42 2008 +0000 - - [configure.in] Fixup fontconfig check. - - Correct the check for FcFini() so that the result is actually used. - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f4e7e7d6b4bb8e96dc8aef1ac673b8d64f65634c -Author: Chris Wilson -Date: Thu Jan 10 13:08:23 2008 +0000 - - [cairo-path-bounds] _cairo_path_fixed_bounds() should never fail. - - _cairo_path_fixed_bounds() should never fail so change return type - to void and update caller. - - src/cairo-analysis-surface.c | 12 ++++-------- - src/cairo-path-bounds.c | 8 ++++---- - 2 files changed, 8 insertions(+), 12 deletions(-) - -commit 5fad969317186520ebbe09f3767907fb3bfd6164 -Author: Chris Wilson -Date: Mon Jan 7 10:03:51 2008 +0000 - - [cairo-ft-font] Destroy unscaled font ref on error. - - Destroy the local reference taken to the unscaled font if we encounter - an error whilst creating the derived scaled font. - - src/cairo-ft-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 3b1411167c7d9fd94536c69de54dacfaf820e916 -Author: Chris Wilson -Date: Thu Jan 10 12:55:08 2008 +0000 - - [headers] Brute force fixup of including cairoint.h from boilerplate. - - More the majority of the typedefs from cairoint.h to - cairo-types-private.h and fixup cairo-pdf-operators-private.h to - avoid including cairoint.h. - - A better approach would seem to be to rationalise cairoint.h so that it - only provides the symbol aliasing, moving the types and functions to - more appropriate private headers. However, this fixes the immediate - problem of running make check! - - src/cairo-pdf-operators-private.h | 3 +- - src/cairo-types-private.h | 169 ++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 170 +------------------------------------ - 3 files changed, 172 insertions(+), 170 deletions(-) - -commit 40142d4bf4184dcae21c85d909d33ddaa4822636 -Author: Adrian Johnson -Date: Thu Jan 10 02:57:30 2008 +1030 - - Set the PS level to to minimum required - - A problem with the previous commit for checking the PS level is that - with the default PS level of 3 it prevents PS files from printing on - Level 2 printers even if no Level 3 operators are used. - - As the PS header is created after the page content has been generated, - it is easy to check the PS Level actually required and set this in the - header and PS level check code. - - src/cairo-ps-surface-private.h | 1 + - src/cairo-ps-surface.c | 10 +++++++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -commit 9bccc968466e6b83ceccb76680d5f54912424e8e -Author: Adrian Johnson -Date: Thu Jan 10 02:34:02 2008 +1030 - - Add PS Level check to PS output - - http://bugzilla.mozilla.org/show_bug.cgi?id=406376 - - reported problems with cairo PostScipt output printing black boxes - instead of images. This was found to caused by printing Level 3 - PostScript to a Level 2 printer. - - Add some PostScript code to to the cairo PS prolog to check the - language level of the printer. If the printer can not print the job, a - message stating the required language level is printed and the job is - aborted. - - src/cairo-ps-surface.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit f20a1a40c3f6d95b4dc89ae4198ad81b7092450c -Author: Adrian Johnson -Date: Wed Jan 9 01:20:34 2008 +1030 - - Fix MSVC 2008 compiler warnings - bug 13698 - - src/cairo-win32-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 47bebc8f1d0b6524f8d1eff1fa3f981f1e4c4c33 -Author: Adrian Johnson -Date: Wed Jan 9 01:18:44 2008 +1030 - - Fix win32-font problems with Type 1 fonts - - This should fix the problems reported in - - http://lists.cairographics.org/archives/cairo/2007-November/012172.html - - The problem is that GetCharacterPlacement() used in - _win32_scaled_font_text_to_glyphs returns utf16 instead of glyph - indices when Type 1 fonts are used. - - This has been fixed by using GetGlyphIndices instead of - GetCharacterPlacement if the font is a Type 1. - - _win32_scaled_font_map_glyphs_to_unicode has been fixed work with Type 1 - glyph indices. It now uses GetFontUnicodeRanges and GetGlyphIndices - to do the reverse lookup. - - src/cairo-win32-font.c | 261 ++++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 218 insertions(+), 43 deletions(-) - -commit 25f24e79f84e0c04a8c6944cc6e018e9eb2df997 -Author: Adrian Johnson -Date: Mon Jan 7 21:19:35 2008 +1030 - - PDF: Update the PDF page structure comment - - src/cairo-pdf-surface.c | 68 +++++----------------------------------------- - 1 files changed, 8 insertions(+), 60 deletions(-) - -commit 21f842f0dfd5dd3cc1fd3b56db034fc4e209adaa -Author: Adrian Johnson -Date: Mon Jan 7 21:17:26 2008 +1030 - - PDF: Remove copy_page - - Now that the content stream is no longer split into multiple streams - it is not possible to implement a copy_page function that shares the - common content between pages. - - Remove this function so the paginated surface will rewrite the - content from the meta surface. - - src/cairo-pdf-surface.c | 15 +-------------- - 1 files changed, 1 insertions(+), 14 deletions(-) - -commit e2adb921f8b7619410db971d1524cbeab2dd6102 -Author: Adrian Johnson -Date: Mon Jan 7 21:15:18 2008 +1030 - - PDF: Put each fallback image in a separate group - - Each fallback image needs to be in a separate group in the knockout - group. Otherwise transparent edges of adjacent fallback images will - composite with each other creating visible seams between the images. - - src/cairo-pdf-surface-private.h | 2 +- - src/cairo-pdf-surface.c | 26 ++++++++++++++++++++------ - 2 files changed, 21 insertions(+), 7 deletions(-) - -commit d6a84302a07d2b7e67584029fdb7a882ad246a09 -Author: Adrian Johnson -Date: Mon Jan 7 21:11:46 2008 +1030 - - Fix analysis of transformed meta surfaces - - src/cairo-analysis-surface.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 3c725d50db43b848b4ad8f35bcabd5b1d0395924 -Author: Adrian Johnson -Date: Mon Jan 7 21:09:04 2008 +1030 - - PDF: Make _SOURCE operator work inside meta surface patterns - - src/cairo-pdf-surface.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 6d6b74ac4ce3a9bcab45c338fc31e5a83823cde6 -Author: Adrian Johnson -Date: Mon Jan 7 21:08:09 2008 +1030 - - PDF: Support _OPERATOR_SOURCE when nothing under the operation - - CAIRO_OPERATOR_SOURCE operations on the PDF backend are now natively - supported when there is nothing already underneath the operation. - - src/cairo-pdf-surface.c | 64 +++++++++++++++++++++------------------------- - 1 files changed, 29 insertions(+), 35 deletions(-) - -commit e195cb551caa40f309127ac7a39e4a17653966c8 -Author: Adrian Johnson -Date: Mon Jan 7 21:05:36 2008 +1030 - - Add FALLBACK mode to paginated surface - - The PDF surface needs to know when the fallback images start so it can - close off the content stream and create a knockout transparency group - for the fallback images. Currently it does this by looking for - operations with CAIRO_OPERATOR_SOURCE. PDF returns unsupported for - _SOURCE during the analysis phase so _SOURCE will never appear during - native operations. However this prevents the PDF surface from - supporting _SOURCE operations that can be natively supported. For - example a _SOURCE operation with nothing painting under it can be - converted to _OVER and natively supported. - - A third mode, CAIRO_PAGINATED_MODE_FALLBACK, has been added. The - paginated surface will set this mode before it paints finer-grained - fallback images. - - src/cairo-paginated-private.h | 22 +++++++++++++--------- - src/cairo-paginated-surface.c | 4 +++- - src/cairo-pdf-surface.c | 2 +- - src/cairo-types-private.h | 3 ++- - 4 files changed, 19 insertions(+), 12 deletions(-) - -commit d2a5d1ace64cb9efabcb065e7fc28667dd8f779d -Author: Adrian Johnson -Date: Mon Jan 7 21:04:06 2008 +1030 - - PDF: Remove the remaining code for splitting the content - - across multiple streams. This fixes the problem reported here - - http://lists.cairographics.org/archives/cairo/2007-December/012197.html - - src/cairo-pdf-surface-private.h | 20 +-- - src/cairo-pdf-surface.c | 429 +++++++++++---------------------------- - 2 files changed, 123 insertions(+), 326 deletions(-) - -commit 099810b6c39cc6b5529f740282b64185cf56c8d7 -Author: Adrian Johnson -Date: Mon Jan 7 20:59:22 2008 +1030 - - PDF: Perform all clipping in the content stream - - Previously this was done in a separate group. Now that the PDF backend - has been re-organized to not interrupt the content stream the clipping - can be done in the same stream. - - src/cairo-pdf-surface.c | 104 +++++----------------------------------------- - 1 files changed, 12 insertions(+), 92 deletions(-) - -commit 83630b1c70b24035b333ccfbbda8b67bd5fdd32e -Author: Adrian Johnson -Date: Mon Jan 7 20:55:56 2008 +1030 - - PDF: Emit all patterns after content stream - - To fix this performance issue - - http://lists.cairographics.org/archives/cairo/2007-December/012197.html - - the PDF surface needs to avoid starting and stopping the content - stream every time it emits a pattern. This patch makes the PDF surface - store a list of all patterns used while the content stream is written - out then write out all the patterns after the content stream is - closed. - - src/cairo-pdf-surface-private.h | 48 ++- - src/cairo-pdf-surface.c | 1128 ++++++++++++++++++++++----------------- - 2 files changed, 687 insertions(+), 489 deletions(-) - -commit b4e0864b960887fd71de85d514cb3e855c276080 -Author: Adrian Johnson -Date: Mon Jan 7 20:42:15 2008 +1030 - - Use _cairo_pattern_create_copy() in cairo-surface.c - - Use _cairo_pattern_create_copy()/cairo_pattern_destroy() instead of - _cairo_pattern_init_copy()/_cairo_pattern_fini() so the PDF backend - can reference the patterns and destroy them later. - - src/cairo-surface.c | 84 +++++++++++++++++++++++++------------------------- - 1 files changed, 42 insertions(+), 42 deletions(-) - -commit 6ead8feaf3f87e12e686092386dddcc2faa62b7f -Author: Adrian Johnson -Date: Mon Jan 7 20:41:43 2008 +1030 - - Add _cairo_pattern_create_copy() - - src/cairo-pattern.c | 28 ++++++++++++++++++++++++++++ - src/cairoint.h | 4 ++++ - 2 files changed, 32 insertions(+), 0 deletions(-) - -commit 26c6159b1e2f5481fb18f5f06f01063002dd6c98 -Author: Adrian Johnson -Date: Mon Jan 7 20:36:32 2008 +1030 - - Move the PDF drawing operators into cairo-pdf-operators.c - - By defining PostScript functions the same as the PDF drawing - operators, this code can be shared by both the PDF and PS backends. - - src/Makefile.am | 1 + - src/cairo-pdf-operators-private.h | 106 ++++++++ - src/cairo-pdf-operators.c | 531 +++++++++++++++++++++++++++++++++++++ - src/cairo-pdf-surface-private.h | 3 +- - src/cairo-pdf-surface.c | 442 ++++--------------------------- - 5 files changed, 687 insertions(+), 396 deletions(-) - -commit a0e0aae32dfe44cca088736d10d208f328d50a34 -Author: Adrian Johnson -Date: Mon Jan 7 20:34:55 2008 +1030 - - PDF: Remove the Type 3 outline glyph code - - This code is never used because outline glyphs that go through the - fallback path are always embedded with Type 1 fallback. The only fonts - that are embedded as Type 3 are bitmap fonts. - - src/cairo-pdf-surface.c | 90 +++------------------------------------------- - 1 files changed, 6 insertions(+), 84 deletions(-) - -commit 5b3f6405d8045d73d31d7e2e30db08e81e9e2360 -Author: Adrian Johnson -Date: Sun Jan 6 16:15:32 2008 +1030 - - PDF: Fix gradient-zero-stops test failure - - src/cairo-pdf-surface.c | 24 ++++++++++++++++++++++++ - 1 files changed, 24 insertions(+), 0 deletions(-) - -commit fb7407c9c4548fc033164790759c4e480b9d8fa0 -Author: Adrian Johnson -Date: Sun Jan 6 15:58:46 2008 +1030 - - PS: Fix gradient-zero-stops test failure - - src/cairo-ps-surface.c | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit f440d894e668994721248dc6c95a936a839870db -Author: Chris Wilson -Date: Sat Jan 5 21:20:45 2008 +0000 - - Check errno for appropriate error return. - - After using fopen() and friends check the global errno to determine the - most appropriate error return - especially important when running - memfault, where correct reporting of NO_MEMORY errors is required. - - src/cairo-output-stream.c | 12 ++++++++++-- - src/cairo-png.c | 10 ++++++++-- - src/cairo-ps-surface.c | 11 ++++++++++- - 3 files changed, 28 insertions(+), 5 deletions(-) - -commit 68a441e582c6c887e65800302906ddd35cb0291e -Author: Chris Wilson -Date: Sat Jan 5 19:34:42 2008 +0000 - - [cairo-analysis-surface] Return early if the traps is empty. - - If the mask is empty, there is nothing to do, so return an early SUCCESS. - - src/cairo-analysis-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 481fd3b4c8d3972ce21399f81b2021a57ed58f00 -Author: Chris Wilson -Date: Sat Jan 5 19:33:21 2008 +0000 - - [cairo-traps] Return zero extents if it contains no traps. - - Previously, _cairo_traps_extents () returned the extents - p1={INT_MAX, INT_MAX} p2={INT_MIN, INT_MIN} for an empty traps leading - to integer overflow when computing the width using p2-p1 and causing - further overflows within libpixman. [For example this caused the - allocation of massive regions with test/mask and the PS backend.] - - src/cairo-gstate.c | 6 +++--- - src/cairo-traps.c | 6 +++++- - 2 files changed, 8 insertions(+), 4 deletions(-) - -commit be126b6842e979dbcb306b2f9f41a2114a149b9a -Author: Chris Wilson -Date: Sat Jan 5 19:22:57 2008 +0000 - - [cairo-analysis-surface] Check for an empty transformed bbox. - - After transforming the bbox, check that it has not been projected into - an empty box. - - src/cairo-analysis-surface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit d9461733af36f2960525a9b33accf500447f5c64 -Author: Chris Wilson -Date: Fri Jan 4 16:43:54 2008 +0000 - - [cairo-ps-surface] Use ctime_r when available. - - Use the thread-safe (and non-allocating) ctime_r() instead of ctime() - if supported by the platform. - - configure.in | 2 +- - src/cairo-ps-surface.c | 7 ++++++- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 7cf9a6e4e39b18f4967afdb7c3c71eca5f4ba8c7 -Author: Keith Packard -Date: Thu Jan 3 18:37:53 2008 -0800 - - Directly check the miter corner to detect wild miters. - - The original test for wild miters would only work with a square transform - (and, in fact, the original code required an identity transform). Instead of - fixing that, I replaced it with a more obvious test which makes sure the - miter corner lies between the two faces and not out in space somewhere. - - src/cairo-path-stroke.c | 139 +++++++++++++++++++---------------------------- - 1 files changed, 57 insertions(+), 82 deletions(-) - -commit 552cf1dbd32eb5933bc93bb3c1ef0fca9d4066aa -Author: Vladimir Vukicevic -Date: Fri Jan 4 16:19:14 2008 -0800 - - Fix cairo_surface_fallback_snapshot's use of release_source_image - - &image_extra was being passed instead of image_extra to release; the - bug only manifested itself when the particular backend did something - with image_extra. - - src/cairo-surface-fallback.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 81e029edda8c0404c6f0bd1b618e77fb55777c64 -Author: Keith Packard -Date: Thu Jan 3 18:17:24 2008 -0800 - - Add new miter-precision test. Checks miter joins at many scales. - - This demonstrates an error in cairo where miter joins are replaced with - bevels at high scale factors due to a test added to eliminate wild miters - drawn when the line faces are nearly parallel. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/miter-precision-ref.png | Bin 0 -> 931 bytes - test/miter-precision.c | 80 ++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 82 insertions(+), 0 deletions(-) - -commit b796a2f69d043f6884f42befdc156cb1c527d217 -Author: Chris Wilson -Date: Thu Jan 3 23:00:27 2008 +0000 - - [cairo] Update CAIRO_STATUS_LAST_STATUS - - A couple of new errors have been added without updating the LAST_STATUS - value... - - src/cairo.c | 2 +- - src/cairo.h | 1 + - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit c67d99787cb75cd4d773871675b4201b3bf3d5bf -Author: Chris Wilson -Date: Thu Jan 3 17:33:33 2008 +0000 - - [test/surface-pattern-big-scaled-down] Kill the surface leaks. - - Destroy the surface and pattern after use. - - test/Makefile.am | 1 + - test/surface-pattern-big-scale-down-ref.png | Bin 0 -> 226 bytes - test/surface-pattern-big-scale-down.c | 11 ++++++++--- - 3 files changed, 9 insertions(+), 3 deletions(-) - -commit 6a7a07adf98729fc054ea9e7727c5b3c099ae7ee -Author: Chris Wilson -Date: Thu Jan 3 16:37:17 2008 +0000 - - [test] Update distribution list of ref images. - - Add missing *-ps-rgb24-ref.png images, and a couple of tests to .gitignore. - - test/.gitignore | 3 +++ - test/Makefile.am | 34 ++++++++++++++++++++++++++++++++++ - 2 files changed, 37 insertions(+), 0 deletions(-) - -commit 399f7c24e31a802e623cf9d63311f3ed7f3a3659 -Author: Chris Wilson -Date: Tue Oct 9 23:24:35 2007 +0100 - - [cairo-pdf-surface] Continue to close streams even after error. - - Do not return after encountering the first error whilst closing streams, - but continue to close any auxiliary streams before finally reporting the - error. Also during finalize check that we have closed any streams that - may have been left open after encountering an error. - - src/cairo-pdf-surface.c | 54 ++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 44 insertions(+), 10 deletions(-) - -commit 42e77c1077f389357faab214d7ad8bc18709cb31 -Author: Chris Wilson -Date: Tue Oct 9 16:59:45 2007 +0100 - - [cairo-pdf-surface] Destroy closed streams. - - Destroy the streams when closing groups in order to free the associated - resources. - - src/cairo-pdf-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 42bfe370f8df800419c1c7acbec1a7e51077d462 -Author: Chris Wilson -Date: Thu Jan 3 14:46:40 2008 +0000 - - [cairo-pdf-surface] Propagate error from emit_glyph(). - - Propagate the error and return early rather than setting the error on - the surface and continuing. - - src/cairo-pdf-surface.c | 31 ++++++++++++++++++++----------- - 1 files changed, 20 insertions(+), 11 deletions(-) - -commit 2a8e80f59ef61cff30d643bdd6ad2306d6068c5c -Author: Chris Wilson -Date: Thu Jan 3 10:34:37 2008 +0000 - - [cairo-gstate] Rearrange invalid-matrix guards. - - Test for an invalid matrix before use. Whilst this has no effect on the - result, an INVALID_MATRIX error will be raised on the context, placing - the guards first makes the code obviously safe and avoids manipulation - of invalid matrices. - - src/cairo-gstate.c | 15 ++++++++------- - 1 files changed, 8 insertions(+), 7 deletions(-) - -commit e89cc8fa15ac418175e58ee41359a923bbc26f73 -Author: Chris Wilson -Date: Tue Dec 18 09:23:29 2007 +0000 - - [cairo-scaled-fonts-subsets] Memleak and error reporting. - - Fix leaks of strings and hash table from - _cairo_scaled_font_subset_create_glyph_names(). - - Whilst we are in the vicinity, review the error handling. - - src/cairo-ft-font.c | 8 ++- - src/cairo-pdf-surface.c | 12 ++++- - src/cairo-scaled-font-subsets.c | 94 ++++++++++++++++++++------------------- - src/cairo-win32-font.c | 6 ++- - src/cairoint.h | 2 +- - 5 files changed, 68 insertions(+), 54 deletions(-) - -commit 51f37995c9cb5efa22a36a0199e24a684fa61279 -Author: Chris Wilson -Date: Wed Jan 2 11:06:03 2008 +0000 - - Remove cairo_private from *.c files. - - The cairo_private markup is only required in the headers, so cleanup the - couple of remaining occurrences in the source files. - - src/cairo-clip.c | 2 +- - src/cairo-scaled-font-subsets.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 48fd65cdb50cd1fa0a6ada5edf7ef307586eb5fd -Author: Chris Wilson -Date: Wed Jan 2 10:59:44 2008 +0000 - - [cairo-svg-surface] Propagate the original error status. - - Return the error status from the paginated surface instead of - hard-coding a bare CAIRO_STATUS_NO_MEMORY. - - src/cairo-svg-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ba392488cb926c2697b8ccfa7337da1e66d78baa -Author: Chris Wilson -Date: Wed Jan 2 10:58:13 2008 +0000 - - [cairo-ps-surface] Wrap error site with _cairo_error(). - - Wrap the original allocation error site with _cairo_error(). - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4442acc96601db21a788e088040cb1f2fccdf400 -Author: Chris Wilson -Date: Wed Jan 2 10:54:30 2008 +0000 - - [cairo-atsui-font] Minor _cairo_error() tidy. - - Inline the use of _cairo_error() for slightly improved readability. - - src/cairo-atsui-font.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 2a0267639a39cacada89c59451faa8051041e436 -Author: Chris Wilson -Date: Wed Jan 2 10:52:28 2008 +0000 - - [cairo-ps-surface] Wrap error site with _cairo_error(). - - Markup the original error site for CAIRO_STATUS_TEMP_FILE_ERROR with - _cairo_error(). - - src/cairo-ps-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit cc5bd4725564d0add79c764b35acff78e43d0c00 -Author: Chris Wilson -Date: Wed Jan 2 10:50:55 2008 +0000 - - [cairo-svg-surface] Wrap a couple of error sites with _cairo_error(). - - Wrap a couple of bare CAIRO_STATUS_NO_MEMORY with a call to - _cairo_error(). - - src/cairo-svg-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit daf77ed3cb0d24f35ebb43760d6ba6de639d4636 -Author: Chris Wilson -Date: Wed Jan 2 10:41:06 2008 +0000 - - [cairo-type1-subset] Remove the unused return value. - - Nobody actually used the index returned by - cairo_type1_font_subset_use_glyph(), so remove it. - - src/cairo-type1-subset.c | 9 +++------ - 1 files changed, 3 insertions(+), 6 deletions(-) - -commit fd8bf678536877d9b016264d40a101a1fd2d9e25 -Author: Chris Wilson -Date: Wed Jan 2 10:37:58 2008 +0000 - - [cairo-truetype-subset] Propagate error from failing to allocate padding. - - Before filling the padding, check that we have successfully allocated - the buffer - otherwise propagate the failure. - - src/cairo-truetype-subset.c | 51 +++++++++++++++++++++++++++---------------- - 1 files changed, 32 insertions(+), 19 deletions(-) - -commit ad0a2524ffdc9cc949d11de3aa51c429f13e12b7 -Author: Claudio Ciccani -Date: Wed Jan 2 15:09:58 2008 +0100 - - [cairo-directfb] Optimize blend functions in fill_rectangles(), too. - - src/cairo-directfb-surface.c | 25 ++++++++++++++++++++++++- - 1 files changed, 24 insertions(+), 1 deletions(-) - -commit 060f384310e887f7f431a98e847b8a36fc303a0c -Author: Adrian Johnson -Date: Sat Dec 29 00:26:11 2007 +1030 - - Fix PS/PDF meta surface patterns - - This was failing with more than one level of push/pop group. The - problem was that the meta surface replay in PS/PDF emit_meta_surface - was replaying all the meta surface commands insteads of only the - natively supported commands. The analysis surface has also been - changed to replay meta surface patterns back to the one analysis - surface instead of creating a separate analysis surface for each - pattern. The analysis surface now transforms bounding boxes with the - meta surface pattern matrix so that fallback regions are correctly - tracked. - - src/cairo-analysis-surface.c | 44 +++++++++++++++++++++++++++++++--------- - src/cairo-meta-surface.c | 18 +--------------- - src/cairo-paginated-surface.c | 1 + - src/cairo-pdf-surface.c | 4 ++- - src/cairo-ps-surface.c | 20 ++++++++++++------ - 5 files changed, 52 insertions(+), 35 deletions(-) - -commit 4fa46e3caaffb54f4419887418d8d0ea39816092 -Author: Adrian Johnson -Date: Sat Dec 29 00:15:03 2007 +1030 - - Implement a win32 tmpfile() function - - Bug report and proposed patch at: - http://lists.cairographics.org/archives/cairo/2007-December/012529.html - - On Windows the tmpfile() function creates the file in the root - directory. This will fail if the user does not have write access to the - root directory. - - Implement _cairo_win32_tmpfile() that is #defined as tmpfile() on - Windows. This function uses GetTempPath() and GetTempFileName() to - create the temporary file. CreateFile() is used to open the file so - the DELETE_ON_CLOSE flag can be set. - - src/Makefile.am | 3 +- - src/cairo-win32.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 6 +++ - 3 files changed, 106 insertions(+), 1 deletions(-) - -commit dcacad932334bbcc3cf6b1df3b37412db5017116 -Author: Adrian Johnson -Date: Sat Dec 29 00:13:24 2007 +1030 - - PS: Use _TEMP_FILE_ERROR for temp file errors - - src/cairo-ps-surface.c | 18 +++++++++++++++--- - 1 files changed, 15 insertions(+), 3 deletions(-) - -commit bd44d114a6d4271a4a15cf7d70a996e73a86751c -Author: Adrian Johnson -Date: Sat Dec 29 00:12:44 2007 +1030 - - Add CAIRO_STATUS_TEMP_FILE_ERROR - - src/cairo.c | 2 ++ - src/cairo.h | 4 +++- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit e82b0f46b2ea6ebcee5ea5cc09e9ab5c6cc383fb -Author: Chris Wilson -Date: Wed Nov 14 00:45:24 2007 +0000 - - [cairo-path-fixed] Consolidate cairo_path_buf_t when copying. - - When copying the cairo_path_fixed_t, consolidate the list of - dynamically allocated cairo_path_buf_t into a single buffer. - - src/cairo-path-fixed.c | 33 +++++++++++++++++++++++++-------- - 1 files changed, 25 insertions(+), 8 deletions(-) - -commit e0187ad49b754c4024f1999155ed248616028582 -Author: Chris Wilson -Date: Thu Dec 27 12:46:13 2007 +0000 - - [cairo-path-fixed] Ensure the points array is naturally aligned, take 2. - - By enlarging buf_size to ensure the correct alignment of the points - array with the cairo_path_buf_t block, we can efficiently use the - padding bytes to store more ops. - - src/cairo-path-fixed.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit d8169b8cef041b4dbcea44e050df28659f4846aa -Author: Chris Wilson -Date: Thu Dec 27 10:45:25 2007 +0000 - - [cairo-path-fixed] Ensure the array of points is correctly aligned. - - In http://bugs.gentoo.org/show_bug.cgi?id=203282, it was identified that - the cairo_path_buf was causing unaligned accesses (thus generating SIGBUS - on architectures like the SPARC) to its array of points. As we manually - allocate a single block of memory for the cairo_path_buf_t and its - arrays, we must also manually ensure correct alignment - as opposed to - cairo_path_buf_fixed_t for which the compiler automatically aligns the - embedded arrays. - - src/cairo-path-fixed.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 7f69c2588b33d415f544c2ee24d85c83a8d7cd69 -Author: Chris Wilson -Date: Thu Dec 20 21:15:41 2007 +0000 - - [cairo-ps-surface] Missing status checks. - - Check and propagate the error status. - - src/cairo-ps-surface.c | 53 +++++++++++++++++++++++++++++------------------ - 1 files changed, 33 insertions(+), 20 deletions(-) - -commit 51523aec8177224d3f64f55ca2e61c64fe801a56 -Author: Chris Wilson -Date: Thu Dec 20 21:15:08 2007 +0000 - - [cairo-meta-surface] Remove redundant _cairo_error(). - - Remove the _cairo_error() from the return, as it has already been called - immediately after the error was first detected. - - src/cairo-meta-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 146484e3122958212d4a69fff97d392451dcbeaa -Author: Chris Wilson -Date: Thu Dec 20 21:13:31 2007 +0000 - - [valgrind] Update zlib suppressions. - - Match the zlib library as found on hardy+dbgsym. - - test/.valgrind-suppressions | 37 +++++++++++++++++++++++++++++++++++++ - 1 files changed, 37 insertions(+), 0 deletions(-) - -commit d4d3873bccea82bb3ae20bfcbab3158fa5df41b3 -Author: Chris Wilson -Date: Thu Dec 20 18:21:46 2007 +0000 - - [cairo] Correct the documentation for cairo_get_group_target(). - - cairo_get_group_target() can never return NULL, but will always - return the current destination surface. - - src/cairo.c | 20 +++++++++++--------- - 1 files changed, 11 insertions(+), 9 deletions(-) - -commit 3bf06c336629d9a485fdb150058897e5a6a30b45 -Author: Chris Wilson -Date: Thu Dec 20 18:15:48 2007 +0000 - - [test/*] Create new surfaces using the group target. - - cairo_get_target() returns the original surface passed to - cairo_create(), and not the current destination as required when - testing drawing to the same surface using multiple contexts. - - For completeness we also use the group target when creating similar - surfaces within the tests (to check that similar surfaces of similar - surfaces also work). - - perf/cairo-perf-cover.c | 4 ++-- - test/cairo-test.c | 2 +- - test/clip-nesting.c | 2 +- - test/clip-operator.c | 2 +- - test/clip-zero.c | 2 +- - test/device-offset-positive.c | 2 +- - test/device-offset.c | 2 +- - test/get-clip.c | 2 +- - test/get-path-extents.c | 2 +- - test/invalid-matrix.c | 2 +- - test/mask.c | 4 ++-- - test/meta-surface-pattern.c | 2 +- - test/operator-clear.c | 2 +- - test/operator-source.c | 4 ++-- - test/pixman-rotate.c | 2 +- - test/self-copy.c | 2 +- - test/source-clip-scale.c | 2 +- - test/source-clip.c | 2 +- - test/svg-clip.c | 2 +- - test/unbounded-operator.c | 2 +- - 20 files changed, 23 insertions(+), 23 deletions(-) - -commit 643834e7aa3e90678276453439017359ef942c9e -Author: Chris Wilson -Date: Thu Dec 20 17:51:48 2007 +0000 - - [cairo-surface] Return UNSUPPORTED for acquire_(dest|source)_image. - - If the backend does not support fallbacks ie backend->acquire_dest_image - or backend->acquire_source_image is NULL, then return - CAIRO_INT_STATUS_UNSUPPORTED rather than attempt to jump to the NULL - hooks. - - src/cairo-surface.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 14454e12d8df606ed4b79c6e7cda4071b00ee581 -Author: Chris Wilson -Date: Thu Dec 20 17:49:06 2007 +0000 - - [cairo-test] Wrap test function with cairo_save/restore(). - - Restore the context to the original state before blitting the - group surface in order to remove any residual state such as a clip path. - - test/cairo-test.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit d0119a5aa24a8b426ec64bb2eaa205b7f08ae58a -Author: Behdad Esfahbod -Date: Thu Dec 20 12:30:35 2007 -0500 - - [cairo-unicode] Don't compile _cairo_utf8_to_utf16 on Linux - - The _cairo_utf8_to_utf16() is only used in win32 and atsui font backends. - Don't build it if none of those two are available. - - src/cairo-unicode.c | 2 ++ - src/cairoint.h | 5 +++++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit 281b11aef14f04b12639028e2a76bbdc7a1a32bf -Author: Chris Wilson -Date: Thu Dec 20 17:11:03 2007 +0000 - - [cairo-test] Use CAIRO_OPERATOR_SOURCE when painting the group surface. - - To correctly copy a surface onto the destination irrespective of its - content requires the SOURCE operator. Forgetting to do so here causes - uninitialized pixels to be mixed into the result and the failure of - many tests for the similar surface. Oops... - - test/cairo-test.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ed3fccec01257a7c52694150cda9ea1059c33585 -Author: Chris Wilson -Date: Mon Dec 17 22:37:31 2007 +0000 - - [pdiff] Avoid the memleak for small surfaces. - - Allocate the arrays after the guard against small surfaces to avoid - leaking them. - - test/pdiff/pdiff.c | 40 +++++++++++++++++++++++++++------------- - 1 files changed, 27 insertions(+), 13 deletions(-) - -commit df938a515bd59138421b6ab4419966805d027b52 -Author: Chris Wilson -Date: Mon Dec 17 21:39:25 2007 +0000 - - [cairo-path-bounds] Check for the empty path. - - Avoid returning uninitialized variables if we're asked to find the - bounds of an empty path - in which case we just return a rectangle - of zero width and height similar to the empty clip region. - - src/cairo-path-bounds.c | 18 ++++++++---------- - 1 files changed, 8 insertions(+), 10 deletions(-) - -commit c2adfb4052f72e1e6e6d283de3428b5453dac537 -Author: Jim Meyering -Date: Sat Dec 15 16:42:25 2007 +0100 - - Don't leak memory upon failed realloc. - - * cairo-glitz-surface.c (_cairo_glitz_surface_composite_trapezoids): - - Signed-off-by: Jim Meyering - - src/cairo-glitz-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 45951345983f100e935af2fe2f5397d64c195f98 -Author: Behdad Esfahbod -Date: Tue Dec 18 16:00:21 2007 -0500 - - [directfb] Fix header include order to include cairoint.h first - - src/cairo-directfb-surface.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 18f4f02f723cd005c159c8a0044dd385d551f022 -Author: Nis Martensen -Date: Tue Dec 18 15:59:19 2007 -0500 - - [src/check-cairoint.sh] Fix typo in shell script - - src/check-cairoint.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8343d6cc2a5e9198e1205e431de018f74107d9d8 -Author: Chris Wilson -Date: Mon Dec 17 13:42:07 2007 +0000 - - Replace various uses of CAIRO_STACK_BUF_SIZE with a single macro. - - In http://bugs.freedesktop.org/show_bug.cgi?id=13699, Pavel Vozenilek - reports a duplicate define for computing the appropriate length for an - on-stack array. The macro in question, and a few other places, was - performing CAIRO_STACK_BUF_SIZE/sizeof(stack[0]) so we can simplify - them slightly by using a common macro. - - src/cairo-bentley-ottmann.c | 2 +- - src/cairo-gstate.c | 10 ++++------ - src/cairo-image-surface.c | 12 ++---------- - src/cairo-region.c | 4 +--- - src/cairo-surface.c | 2 +- - src/cairo-traps.c | 4 +--- - src/cairo-xlib-surface.c | 7 ++----- - src/cairoint.h | 2 ++ - 8 files changed, 14 insertions(+), 29 deletions(-) - -commit 627a8b4a2f2824f156893382561f563d0aa9e90d -Author: Benjamin Otte -Date: Mon Dec 17 12:42:14 2007 +0100 - - [directfb] replace u32 with uint32_t - - This fix makes it compile for me again - - src/cairo-directfb-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 9637ffc62fab1b42ceb764d1b42e70654e0cbe2b -Author: Behdad Esfahbod -Date: Mon Dec 17 01:55:15 2007 -0500 - - [cairo-xlib] Minor cleanup and add comment - - src/cairo-xlib-surface.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 83963d2a9ec445e23cfbe692b877177a9d9d135e -Author: Behdad Esfahbod -Date: Mon Dec 17 01:19:53 2007 -0500 - - [cairo-ft] Revert "Force non-AA text when using a bitmap strike with only scaling transform." (#13479) - - The reasoning for that commit was that fonts with bitmap strikes should be - rendered with antialiasing off for those (hopefully) few glyphs that don't - have a bitmap. - - However, it turns out, there are fonts that have some, but very few, bitmaps, - and this changed forces non-AA rendering on them. We now support multiple - glyph formats per font in the Xlib backend, so backing this out to let every - glyph render as is. Fontconfig rules can be used to force AA off on a per-font - basis. - - This reverts commit 06af5c2891b89da28581c30afcde06c5442884db. - - src/cairo-ft-font.c | 24 ------------------------ - 1 files changed, 0 insertions(+), 24 deletions(-) - -commit 805b668260c47e6d3d854361fcc53f12bd2a57e1 -Author: Behdad Esfahbod -Date: Mon Dec 17 01:14:27 2007 -0500 - - [cairo-xlib] Support scale fonts with glyphs of multiple formats (#13479) - - We maintain three Xrender glyphsets per scaled font, one for each of A1, A8, - and ARGB32. This is required to correctly support fonts with bitmaps for - some glyphs but not all. - - src/cairo-xlib-surface.c | 179 +++++++++++++++++++++++++++++++++++----------- - 1 files changed, 136 insertions(+), 43 deletions(-) - -commit f6dd037cf3231c2dd0550b0f2e6f3179202c299f -Author: Carl Worth -Date: Fri Dec 14 14:02:43 2007 -0800 - - Remove rasterization when a paginated surace is used as a source - - This was an old workaround for a bug that seems to no longer - exist. Thanks to Donn Ingle for pointing out the problem. - - src/cairo-paginated-surface.c | 34 ---------------------------------- - 1 files changed, 0 insertions(+), 34 deletions(-) - -commit 9b3ce8b17ab8179131ae45a227d76241916f42e8 -Author: Adrian Johnson -Date: Wed Dec 12 23:41:53 2007 +1030 - - PS: Use the correct bounding box in Type 3 fonts - - Previously this was a fixed size. - - src/cairo-ps-surface.c | 44 +++++++++++++++++++++++++++++++++++++------- - 1 files changed, 37 insertions(+), 7 deletions(-) - -commit afdd53d35f53cfe3440c38531c112a586d3d7486 -Author: Adrian Johnson -Date: Wed Dec 12 23:35:56 2007 +1030 - - PS: Return the status for emit_image and gradients - - src/cairo-ps-surface.c | 21 +++++++++++++++------ - 1 files changed, 15 insertions(+), 6 deletions(-) - -commit 55f5c4ffda5df9064bd0a5a6a2cf1a09b058afbb -Author: Boying Lu -Date: Wed Dec 12 21:05:57 2007 +1030 - - Remove cairo_private from static declaration - - src/cairo-paginated-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 942e3d53088a4d2b05c86d3f82b76cfbe707b3b5 -Author: Claudio Ciccani -Date: Tue Dec 11 15:50:05 2007 +0100 - - [cairo-directfb] Support some environment variables - - Added a couple of (boolean) env. vars affecting the backend: - CAIRO_DIRECTFB_NO_ACCEL, disables acceleration - CAIRO_DIRECTFB_ARGB_FONT, enables using ARGB fonts instead of A8 - - src/cairo-directfb-surface.c | 99 ++++++++++++++++++++++++++++++++--------- - src/cairo-directfb.h | 12 +++++- - 2 files changed, 88 insertions(+), 23 deletions(-) - -commit f3cec9d1c2a4d43cd734aae4bc7f8e7410a5e89a -Merge: 08516d9... c26084a... -Author: Claudio Ciccani -Date: Mon Dec 10 22:58:06 2007 +0100 - - Merge branch 'master' of git+ssh://klan@git.freedesktop.org/git/cairo - -commit c26084a45fcb6ac467cad8bdcedfb2f524b857fc -Author: Behdad Esfahbod -Date: Mon Dec 10 14:38:09 2007 -0500 - - Pass $(MAKE) to test shell scripts (#13591) - - src/Makefile.am | 2 +- - src/check-def.sh | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) - -commit 78dac47399038cc9a05b82b01c4e4b35132f0784 -Author: Behdad Esfahbod -Date: Mon Dec 3 02:31:40 2007 -0500 - - [util/malloc-stats.c] Add a public function malloc_stats() - - Apparently glibc already provides the function: - - void malloc_stats (void); - - So, like we do for backtrace_symbols(), override the public symbol. - It still is defined as __destructor__ and runs at program finalization. - - util/malloc-stats.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 08516d97a1b34cbb119d6d842ae31e4cb4e08740 -Author: Claudio Ciccani -Date: Mon Dec 10 18:54:01 2007 +0100 - - [cairo-directfb] Merging from directfb.org - - - Improved performance in case of surface conversion: allocate a shadow buffer that can only grow - - Fixed support for small surfaces (less than 8x8) - - Optimize the blending function according to the surface format - - Added _directfb_categorize_operation(): selects the blitting function according to the transform matrix - - Avoid inverting the matrix when doing a simple StretchBlit() - - Use TextureTriangles() instead of StretchBlit() when scale factors are negative - - Added support for ARGB32 fonts (converted to A8 internally) - - Removed unused functions (flush() and mark_dirty_rectangle()) - - Code cosmetics - - src/cairo-directfb-surface.c | 847 +++++++++++++++++++++++------------------- - 1 files changed, 466 insertions(+), 381 deletions(-) - -commit dd71ac910c3c176687fe4da582876bf46becf6d5 -Author: Benjamin Otte -Date: Mon Dec 10 13:17:09 2007 +0100 - - typo - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1f1f96d6459014a236611edf811a60225a652044 -Author: Emmanuel Pacaud -Date: Sat Dec 8 22:32:16 2007 +0100 - - [SVG] Fix a minor issue when emitting a radial gradient with r1 == r2. - - Minor because I don't know how the output is supposed to look in this case. - - src/cairo-svg-surface.c | 15 ++++++++------- - 1 files changed, 8 insertions(+), 7 deletions(-) - -commit 19680f545a1620d944322775c1b85b0e5f93fa0f -Author: Brian Ewins -Date: Thu Dec 6 21:31:15 2007 +0000 - - [quartz] fix gradient-zero-stops crash (moz#407104) - - Fixes failure in gradient-zero-stops test, reported - by Boris Zbarsky (thanks!) as Mozill a bug#407104. - - src/cairo-quartz-surface.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit e6c34bb6912d2801ee6c0d56ec0e98739c786e9f -Author: Brian Ewins -Date: Thu Dec 6 21:31:14 2007 +0000 - - [quartz] refactor gradient handling - - Avoid checking the gradient type twice. This refactor - also makes it easier to check when the gradient has no stops, - and will make it easier to separate out the different - implementations of EXTEND_REPEAT, REFLECT for linear and - radial gradients. - - src/cairo-quartz-surface.c | 206 +++++++++++++++++++++++--------------------- - 1 files changed, 107 insertions(+), 99 deletions(-) - -commit b81c8473bd0b8b829dc7eba9a105890f0c2f1158 -Author: Brian Ewins -Date: Thu Dec 6 21:31:10 2007 +0000 - - [test] add test for gradient with no stops - - Boris Zbarsky reported a bug where having zero stops in a - gradient pattern would crash in the quartz surface. This - test checks for that case. Mozilla bug#407104. - - This also crashes testing pdf; and the ps, svg surfaces - look suspicious (they reference stops[0]) but I havent - been able to test them yet. - - test/Makefile.am | 3 + - test/gradient-zero-stops-ref.png | Bin 0 -> 105 bytes - test/gradient-zero-stops-rgb24-ref.png | Bin 0 -> 105 bytes - test/gradient-zero-stops.c | 66 ++++++++++++++++++++++++++++++++ - 4 files changed, 69 insertions(+), 0 deletions(-) - -commit a7ae9c45d924effdd61390267eb216302a270d8e -Author: Peter Weilbacher -Date: Thu Dec 6 16:46:28 2007 +0100 - - [os2] add memory allocation wrappers for pixel buffers - - Add ability to use OS/2 APIs instead of C library functions to manage - pixel buffer allocations. This is to work around heap fragmentation. - This implements two wrapper functions which replace _cairo_alloc_abc and - free and when compiled with OS2_USE_PLATFORM_ALLOC the OS/2 functions - DosAllocMem and DosFreeMem will be used for allocation/deallocation. - - Also try to minimize the heap when shutting down the cairo library. - - src/cairo-os2-surface.c | 108 +++++++++++++++++++++++++++++++++++------------ - 1 files changed, 81 insertions(+), 27 deletions(-) - -commit be79779331ee29c0bfb74b728227719bb5dead6e -Author: Carl Worth -Date: Wed Dec 5 09:24:17 2007 -0800 - - Restrict initial buggy version to X.Org 6.7 rather than 6.0 - - Also add some comments describing the test. - - src/cairo-xlib-display.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit d4138d1161c6b683fd0ef62a8d49ccf4ec4674bc -Author: Bernardo Innocenti -Date: Wed Dec 5 07:04:09 2007 -0500 - - Fix version check for buggy_repeat on modular Xserver 1.x - - The versioning of the X server has restarted from 1.0 in the - modular build. So we adjust the text to avoid considering - the new servers buggy. - - src/cairo-xlib-display.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 946b8fedb57fc0c70e4f82b2151433768479a11c -Author: Carl Worth -Date: Wed Dec 5 02:30:58 2007 -0800 - - Fix misspellings - - NEWS | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 94a35c7b71b2219d68e81272ce6328e46ae0e91e -Author: Carl Worth -Date: Wed Dec 5 02:28:20 2007 -0800 - - Fix version number typo - - NEWS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6f2ec12b882e49b425b22145592243b8ce75b6a4 -Author: Carl Worth -Date: Wed Dec 5 02:26:05 2007 -0800 - - Increment version to 1.5.5 after the 1.5.4 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e0c0275e1764502cfd1d0e93e374b4ed396f0073 -Author: Carl Worth -Date: Wed Dec 5 02:06:33 2007 -0800 - - Increment version to 1.5.4 and to 14:1:12 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 11aaf992fb5d3d86f261ba48306adfaace9f96ea -Author: Carl Worth -Date: Wed Dec 5 01:52:03 2007 -0800 - - NEWS: Add notes for 1.5.4 - - NEWS | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 57 insertions(+), 0 deletions(-) - -commit 150564c7f8792fa2217fc2574e9e1925c9cd500f -Author: Vladimir Vukicevic -Date: Tue Dec 4 14:05:47 2007 -0800 - - [quartz] use rectangle_int_t, not rectangle_int16_t - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e8574022f949559c069da30f11dee8680fc59586 -Author: Vladimir Vukicevic -Date: Tue Dec 4 13:54:32 2007 -0800 - - [quartz] cleanup: remove trailing whitespace - - src/cairo-quartz-surface.c | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -commit ee01a94726b3c0782fa182c9e874b2ed57e71aca -Author: Vladimir Vukicevic -Date: Tue Dec 4 13:53:03 2007 -0800 - - [quartz] Use CGContextDrawTiledImage if available - - Use this 10.5-only method if available, as it greatly speeds up - tiled image rendering (EXTEND_REPEAT). - - src/cairo-quartz-surface.c | 96 +++++++++++++++++++++++++++++--------------- - 1 files changed, 64 insertions(+), 32 deletions(-) - -commit 2c25033e14d7d9f705c27683dfb093318d67910b -Author: Vladimir Vukicevic -Date: Tue Dec 4 13:49:59 2007 -0800 - - [quartz] Handle creating 0x0 surfaces - - Make all 0x0 surfaces be no-ops when used in a rendering operation. - - src/cairo-quartz-surface.c | 109 ++++++++++++++++++++++++++++++++++--------- - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/clip-zero.c | 80 ++++++++++++++++++++++++++++++++ - 4 files changed, 168 insertions(+), 23 deletions(-) - -commit 407ed0a6e7183c4fc6da1e988fada19c82ccef8a -Author: Chris Wilson -Date: Mon Dec 3 09:59:52 2007 +0000 - - [Makefile.am] Add lcov-clean to distclean. - - Clean the gcov temporary files when doing a full clean - spotted in a - patch by Patrick Hulin to adapt cairo's lcov targets to glib. - - Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 9c732594039b164a1e08125c35ec9d04278f0cbf -Author: Chris Wilson -Date: Sun Dec 2 17:55:35 2007 +0000 - - [Makefile.am] Wrap lcov make targets within an AM_CONDITIONAL. - - Hide 'make lcov' and friends unless the user has actually enabled lcov - supported during configure. - - Makefile.am | 17 ++++++++++++----- - configure.in | 4 ++++ - 2 files changed, 16 insertions(+), 5 deletions(-) - -commit 5f38e215ed4ec930492ee373db37a767d85a6ee8 -Author: Behdad Esfahbod -Date: Sat Dec 1 22:44:54 2007 -0500 - - [README] Remove the Dependencies section as it falls out of date easily - - README | 89 ---------------------------------------------------------------- - 1 files changed, 0 insertions(+), 89 deletions(-) - -commit b46bb58e11f9d7b7fa68a64ca887c9b996b8f6f2 -Author: Behdad Esfahbod -Date: Sat Dec 1 20:41:55 2007 -0500 - - [configure.in] Bump freetype required version to 2.1.9 (#13482) - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit b701b4263048c3641f77796b9ea7bdc60b9815f7 -Author: Adrian Johnson -Date: Sun Dec 2 01:36:43 2007 +1030 - - win32: Implement _cairo_win32_scaled_font_init_glyph_surface() - - This is required when using win32 bitmap fonts with PS/PDF surfaces. - - src/cairo-win32-font.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 61 insertions(+), 2 deletions(-) - -commit 1441e165f2338bc6a8e2945baca77611ff417b2f -Author: Adrian Johnson -Date: Sun Dec 2 00:50:28 2007 +1030 - - Fix regression in Type1 Fallback - - As a result of the changes to improve the status checking, - _cairo_type2_charstrings_init() was failing due to the failure - status returned when the font->output stream is destroyed. - This is because _cairo_type2_charstrings_init() does not - create an output stream. - - Fix this by initializing font->output to NULL and only - destroy it if not NULL. - - src/cairo-type1-fallback.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit e6166f7b442ae55128b417559e48250c287e49b6 -Author: Behdad Esfahbod -Date: Sat Dec 1 04:19:39 2007 -0500 - - Convert bash scripts to regular sh ones for greater portability - - perf/cairo-perf-diff | 31 ++++++++++++++++--------------- - src/check-def.sh | 12 ++++++------ - src/check-plt.sh | 6 +++--- - 3 files changed, 25 insertions(+), 24 deletions(-) - -commit 0d932f43fe17b2b65d9e52ff8f9c16122b525223 -Author: Carl Worth -Date: Fri Nov 30 16:19:45 2007 -0800 - - Explicitly call bash for bash-specific scripts - - Thanks to Solaris-using Brian Cameron for pointing out that our - shell scripts are bash-specific. We'd be glad if someone cared to - rewrite them to not require bash, but for now let's have truth in - advertising at least. - - perf/cairo-perf-diff | 2 +- - src/check-def.sh | 2 +- - src/check-plt.sh | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -commit f4b93cceb7fb83de558ed058915f92d4f75c1a6a -Author: Adrian Johnson -Date: Thu Nov 29 23:18:45 2007 +1030 - - PS: Use correct glyphs widths for Type 3 fonts - - Previously the widths were set to 0. - - src/cairo-ps-surface.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 2729af6c123983c1599fae9f7a0fac88ad320d7c -Author: Adrian Johnson -Date: Thu Nov 29 23:07:47 2007 +1030 - - PS: Fix the Type 3 FontBBox - - This was previously a fixed size. Make it [0 0 0 0] the same as the - other fonts. - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 77aab8fdbb62e4e0ec0260651db7255d168cb25e -Author: Adrian Johnson -Date: Thu Nov 29 23:03:40 2007 +1030 - - PS: Don't emit an image for Type 3 .notdef glyph - - Make the .notdef procedure an empty procedure instead - of creating an empty image mask. This reduced the size - of the PS file. - - src/cairo-ps-surface.c | 18 ++++++++++-------- - 1 files changed, 10 insertions(+), 8 deletions(-) - -commit 78e8d3d9bd2d4652f636a668a3fa53ef9edfd9ae -Author: Adrian Johnson -Date: Thu Nov 29 22:54:54 2007 +1030 - - PS: Fix the bounding boxes of Type 3 glyphs - - When viewing with ghostscript the glyphs were clipped - - src/cairo-ps-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 97b0d8b3c376f7848514debbe0697a2159a26eb9 -Author: Adrian Johnson -Date: Thu Nov 29 22:36:07 2007 +1030 - - PS: Make Type 3 fonts text selectable - - Put the glyph names in the Encoding array the same as is done for - Type 1 and Type42 fonts. - - Acroread and Evince are still unable to correctly extract the text - after conversion with ps2pdf. However examining the pdf file shows - the glyph names are correct so this is probably a limitation of - Acroread and Evince. - - src/cairo-ps-surface.c | 46 ++++++++++++++++++++++++++++++---------------- - 1 files changed, 30 insertions(+), 16 deletions(-) - -commit 5e8f60531a09f357db38c4b646b1bbd29b97a891 -Author: Adrian Johnson -Date: Thu Nov 29 09:20:01 2007 +1030 - - PS: Ensure that xyshow operator has a pair of offsets for each glyph - - The last entry should have been "0 0" instead of "0". - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ba239a474a5cab36098b8f4a98f36aa6281f7da9 -Author: Brian Ewins -Date: Sun Nov 18 20:30:49 2007 +0000 - - [quartz] zero memory on bitmap creation - - 7 quartz/argb32/similar tests were showing failures due to - random bits being set. The problem turned out to be that the - initial test surface was not cleared before the similar surface - was created by push_group. The problem behaviour is more obvious - if you run the tests with MallocScribble=1. - - Fix this by calling memset after bitmap allocation; the multiplication - here cannot overflow since we already checked that in malloc_ab. - - src/cairo-quartz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 58e828a9a31b91c80336fc4ce323b061226dde2b -Author: Brian Ewins -Date: Sun Jul 1 16:11:07 2007 +0100 - - [quartz] fill with alpha for EXTEND_NONE - - The implementation of EXTEND_NONE was not filling areas outside - the image with rgba(0,0,0,0). This showed up on the operator-source - test, the fix makes the quartz and image renderings identical. - - src/cairo-quartz-surface.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) - -commit 39b8ddf07994747c039ee74c64a0cc97a4c7776a -Author: Vladimir Vukicevic -Date: Thu Nov 15 11:57:40 2007 -0800 - - [win32] Remove double-free in win32 font code in init_glyph_path - - Fixes bug #13243. - - src/cairo-win32-font.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 50d5f5a4e6d7424694b0b27fc0c3a00c9eb203bb -Author: Vladimir Vukicevic -Date: Thu Nov 15 11:56:56 2007 -0800 - - [quartz] Fix gradients; the wrong color field was being used - - The wrong color field was being used, effectively making gradients always - have transparent black as their color stops. - - src/cairo-quartz-surface.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit bcb0f57e5eca58480e24251777f0b967e1aadefe -Author: Brian Ewins -Date: Wed Nov 14 01:50:34 2007 +0000 - - [quartz] remove double malloc in dashing code. - - fdash is reallocated without being released, and is - allocated at the wrong size too. - - src/cairo-quartz-surface.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit e6bc049465730a9640a1038104210d14aad4b3cb -Author: Brian Ewins -Date: Tue Nov 13 00:43:59 2007 +0000 - - [quartz] typo checking for malloc failure - - The check after the malloc of cg_advances looked at the wrong - variable. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bb2674207cf01386c6338511d2462694187fff36 -Author: Brian Ewins -Date: Mon Nov 12 23:56:01 2007 +0000 - - [quartz] fix leak in show_glyphs - - In cairo_quartz_show_glyphs we may leak the source if - there is a failure to malloc the glyph arrays. Fix this. - - src/cairo-quartz-surface.c | 30 ++++++++++++++++++------------ - 1 files changed, 18 insertions(+), 12 deletions(-) - -commit 7ad34c1bdc6417ca0e2e1075b67ca09c5318db75 -Author: Brian Ewins -Date: Mon Nov 12 23:52:52 2007 +0000 - - [quartz] fix for cairo_reset_clip() - - src/cairo-quartz-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 717ccbcf0c12fcfa840396378812919c9e151d57 -Author: Brian Ewins -Date: Mon Nov 12 23:51:39 2007 +0000 - - Revert "[quartz] handle 0x0 surfaces." - - This reverts commit 2fd50a7897efaed4dabaf75a6ed8828f16c14d36. - Spoke too soon, quartz doesn't like creating those 0x0 - images; while the tests pass, its putting warnings in the logs. - Reverting to make a better fix. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2fd50a7897efaed4dabaf75a6ed8828f16c14d36 -Author: Brian Ewins -Date: Sun Nov 11 01:29:00 2007 +0000 - - [quartz] handle 0x0 surfaces. - - Some tests, like invalid-matrix, generate a 0x0 bitmap; in - the quartz backend this caused a nil surface to be returned, - whereas the tests expect a quartz surface. Other surfaces - return a backend-specific surface with a zero-sized bitmap, - quartz should do the same. - - Fixes the tests ft-font-create-for-ft-face, get-and-set, - get-clip, invalid-matrix, line-width-zero, - select-font-no-show-text, solid-pattern-cache-stress, - surface-finish-twice, and text-cache-crash. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0359ad6c8da56a44697498bd8b74fbc029cbe930 -Author: Emmanuel Pacaud -Date: Sun Nov 11 00:18:19 2007 +0100 - - Compilation warning suppression (char as array subscript). - - cairo_path_op_t is a char, and can't be directly used as array subscript. - - src/cairo-path-fixed.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 1b71af7e61bd6c55b78e1a9a4c56b93d0b1134ed -Author: Emmanuel Pacaud -Date: Sun Nov 11 00:14:34 2007 +0100 - - Fix _cairo_path_fixed_init_copy. - - All the copied data buffers except the first one weren't completely - initialized (num_ops and num_points). That was the cause of the failure - of some vector surface tests, like random-intersections. - - src/cairo-path-fixed.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 3554c31e3d28ad5aad35c8fe4c6bb8ce7d297dde -Author: Emmanuel Pacaud -Date: Sat Nov 10 10:43:43 2007 +0100 - - [SVG] Add missing image to REFERENCE_IMAGES list. - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 916d82586ec196bfb3124850e68ef66a63464e72 -Author: Emmanuel Pacaud -Date: Sat Nov 10 10:24:21 2007 +0100 - - [SVG] Indentation fixes. - - src/cairo-svg-surface.c | 130 +++++++++++++++++++++++----------------------- - 1 files changed, 65 insertions(+), 65 deletions(-) - -commit 8edc3ed4857795387007e7c4997f30d7ceec57ac -Merge: 3bc8a8d... 77e9b05... -Author: Emmanuel Pacaud -Date: Sat Nov 10 10:10:50 2007 +0100 - - Merge branch 'master' of git+ssh://emmanuel@git.cairographics.org/git/cairo - -commit 3bc8a8d1d0e07e857b203a7872862437b8333b25 -Author: Emmanuel Pacaud -Date: Sat Nov 10 10:10:03 2007 +0100 - - [SVG] Remove spurious semicolon when emitting mask url. - - src/cairo-svg-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b68968ffd1864d591e4fc08fed55c12ece95ec55 -Author: Emmanuel Pacaud -Date: Sat Nov 10 10:07:12 2007 +0100 - - [SVG] Fix opacity of combined stroke and fill. - - When emitting combined stroke and fill, cairo SVG backend was using the opacity - two times, instead of using fill-opacity and stroke-opacity, leading to - incorrect output. - - I've updated the mask test reference images for the SVG output, since it seems - there's a bug in librsvg when fill-opacity is used in the mask image. - I've checked the SVG output with batik, and it looks fine. - - src/cairo-svg-surface.c | 25 +++++++++++++------------ - test/mask-svg-argb32-ref.png | Bin 8405 -> 8389 bytes - test/mask-svg-rgb24-ref.png | Bin 0 -> 7935 bytes - 3 files changed, 13 insertions(+), 12 deletions(-) - -commit 77e9b05b2b011ce964287ff493c2b421977107ee -Author: Brian Ewins -Date: Sat Nov 10 01:34:03 2007 +0000 - - [test] support using a previous build as a reference - - Allow using a previous test output directory as a source of - reference images. To make use of this, set the environment - variable 'CAIRO_REF_DIR' to point at an old test directory, - relative to the current test directory. - - This is useful for testing backends when reference images haven't - been created yet, or which the current reference image structure - can't accomodate, like multiple font backends. - - test/README | 8 ++++++++ - test/cairo-test.c | 17 ++++++++++++++++- - 2 files changed, 24 insertions(+), 1 deletions(-) - -commit f8ee0cdf186bfb30bdeb487b63d42f274c1073ce -Author: Brian Ewins -Date: Sat Nov 10 01:34:01 2007 +0000 - - [test] Link to the correct reference image. - - The generated test html guesses the names of the reference - images used in the tests. This is quite often wrong, and - makes it harder to change policy in cairo-test. Teach - make-html.pl to parse the log for the path to the reference image. - - test/make-html.pl | 102 +++++++++++++++++++++++----------------------------- - 1 files changed, 45 insertions(+), 57 deletions(-) - -commit 15fc1bbefb49fefedca53c47ccfc7edace0acbfe -Author: Brian Ewins -Date: Sat Nov 10 01:33:47 2007 +0000 - - [test] log tested paths so that they can be parsed. - - The test logs currently do not record the paths of - image output, the reference images tested against, and - the diffs created. This means that make-html.pl has to - duplicate the policy in cairo-test.c. Fix this by teaching - cairo-test.c to log the paths. - - test/cairo-test.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 28412f780ebf52914aa374bb2bdd3d539bd29241 -Author: Vladimir Vukicevic -Date: Tue Nov 6 16:11:06 2007 -0800 - - [win32-printing] bail out early if we don't have anything to do in paint_surf - - src/cairo-win32-printing-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit d72bb8c12efcffe7c576afe63212b2fe47e8154c -Author: Vladimir Vukicevic -Date: Tue Nov 6 16:08:59 2007 -0800 - - [win32] Fix FIXED_to_fixed when cairo's fixed format isn't 16.16 - - src/cairo-win32-font.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) - -commit 0901b83ca56e197d5c96d71ab8cfe53f21b4c8bb -Author: Vladimir Vukicevic -Date: Tue Nov 6 15:49:57 2007 -0800 - - [win32] Don't use GetGlyphOutline on non-TrueType fonts - - win32-glyph-metrics.patch: GetGlyphOutline only works on Truetype fonts, - so for non-Truetype fonts, assume no left or right bearing and use the - font ascent and descent for the glyph extents. - - src/cairo-win32-font.c | 44 +++++++++++++++++++++++++++++++------------- - 1 files changed, 31 insertions(+), 13 deletions(-) - -commit f11f7524b62df29aa377382f5ceeda8c3beb2d54 -Author: Vladimir Vukicevic -Date: Tue Nov 6 15:40:30 2007 -0800 - - [quartz] work around Quartz bugs with images bigger than a certain size - - Quartz has a bug with images greater than (signed) 16 bits in height; avoid - creating or working with those. Also fixes some memory leaks. - - Patch from John Daggett. - - src/cairo-quartz-surface.c | 61 ++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 59 insertions(+), 2 deletions(-) - -commit 95ede9ea59eb1e2d7fe10fbc698f3f9fff192e79 -Author: Vladimir Vukicevic -Date: Tue Nov 6 15:06:06 2007 -0800 - - Use correct surface resolution when creating paginated fallback image - - If a surface resolution is set via _cairo_surface_set_resolution, it - needs to be used when the fallback image is created. The user sets - the fallback resolution on the paginated surface, so we need - to divide that by the resolution of the actual (target) surface, not - the paginated surface. - - src/cairo-paginated-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 9b8d9f2859ce66b742c887eb673407a84095f488 -Author: Vladimir Vukicevic -Date: Tue Nov 6 14:54:59 2007 -0800 - - [win32] Skip doing some work if we can't call StretchDIBits - - src/cairo-win32-printing-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit fa7e36669ae24fdbb5bd89a9fc1b6906408a5823 -Author: Vladimir Vukicevic -Date: Tue Nov 6 14:53:09 2007 -0800 - - [quartz] Fix for 10.5 SDK; the FloatToFixed macro started doing strange things - - src/cairo-quartz-surface.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 236c52b095661be395021d511d2dca0b532f83e9 -Author: Vladimir Vukicevic -Date: Tue Nov 6 14:52:24 2007 -0800 - - Handle overflow/underflow gracefully when converting to 16.16 fixed - - src/cairo-fixed-private.h | 22 +++++++++++++++++++--- - 1 files changed, 19 insertions(+), 3 deletions(-) - -commit 5b0a0fe7a230f99a43916a16bfd2d26882bad46b -Author: Carl Worth -Date: Wed Nov 7 11:17:59 2007 -0800 - - Mention cairo_new_sub_path in documentation of cairo_arc - - src/cairo.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 62d64e12aa9264a17c9bb7d6ae154a1778f0c7e1 -Author: Chris Wilson -Date: Tue Nov 6 14:24:52 2007 +0000 - - [cairo-pdf-surface] Create a new path for an empty clip. - - If the clip path is empty, then we need to start a new path otherwise - the clip is ineffective. - - src/cairo-pdf-surface.c | 36 ++++++++++++++++++++++-------------- - 1 files changed, 22 insertions(+), 14 deletions(-) - -commit b4057b8643cf02439b6033d7443d0d4c42220a62 -Author: Chris Wilson -Date: Tue Nov 6 09:45:54 2007 +0000 - - [cairo-clip] Special case using an empty clip path. - - Detect when the user calls cairo_clip() with an empty clip path and - mark the clip as all_clipped. - - src/cairo-clip.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 2f0867b43fbc9a385a32a2a39895f4c3559f6ddf -Author: Chris Wilson -Date: Tue Nov 6 09:44:03 2007 +0000 - - [cairo-surface] Handle the all clipped out case. - - Explicitly handle a clip which represents that the entire surface is - clipped out. - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=13084. - - src/cairo-surface.c | 61 +++++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 52 insertions(+), 9 deletions(-) - -commit 641215b2b018e98b298db5042360e2e22ab5a0aa -Author: Chris Wilson -Date: Mon Nov 5 22:22:42 2007 +0000 - - [test/clip-all] Combine text and everything clipped out. - - https://bugs.freedesktop.org/show_bug.cgi?id=13084 demonstrates a - regression where the clip is ignored by the xlib backend whilst - rendering text. Therefore we extend the current test cases to combine - a clip that represents everything clipped out with the rendering of - text. For completeness, we add a new test case that exactly mimics the - sequence of cairo operations that lead to the discovery of this bug - - namely the rendering of text with an empty clip path. - - test/Makefile.am | 2 + - test/clip-all.c | 10 ++++++ - test/clip-empty-ref.png | Bin 0 -> 118 bytes - test/clip-empty.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 84 insertions(+), 0 deletions(-) - -commit 55b530ffef2bce96d57919563c6c9b58f02f8fb8 -Author: Behdad Esfahbod -Date: Mon Nov 5 14:47:27 2007 -0500 - - [PS] Fix compiler warnings - - src/cairo-ps-surface.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 570714b2b4e0b7aea58142bcba37a9eb7945cf09 -Author: Behdad Esfahbod -Date: Mon Aug 14 21:34:40 2006 -0400 - - [test/fallback-resolution] set tolerance to a large value to see how it performs - in different fallback resolutions. - - test/fallback-resolution.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 5acbef20213ad354cc835f6d15811e333ee38e74 -Author: Behdad Esfahbod -Date: Mon Aug 14 21:34:03 2006 -0400 - - [test] fallback-resolution: center text - - test/fallback-resolution.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 7f21bfb0a8265095d68bb5ff6afae7553683a776 -Author: Behdad Esfahbod -Date: Mon Aug 14 21:33:13 2006 -0400 - - [meta-surface] Adjust tolerance when replaying to surfaces with device scale - - such that we get a consistent look with different fallback resolutions. - - src/cairo-meta-surface.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit 4270cd3358fabf0d3e6ac4e866099b172082b592 -Author: Richard Hult -Date: Mon Nov 5 10:05:07 2007 +0000 - - [atsui] Use ascent+descent+leading to get the distance between baselines - - The height is currently mapped to the atsui metrics property capHeight, which - is documented as "The height of a capital letter in the font from the baseline - to the top of the letter". - - That doesn't match what height is in cairo, it should be the disctance between - baselines. This patch that fixes that (and makes webkit on GTK+ OS X - layout nicely). - - src/cairo-atsui-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3141b21c0c581dabc09a6ec9cdf0a071701b0e42 -Author: Brian Ewins -Date: Mon Nov 5 10:05:04 2007 +0000 - - [configure.in] fix atsui experimental warning - - The 'experimental' warning for atsui was appearing - for --enable-quartz not --enable-atsui as it should. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b3ef306f84944a45b389c1f4bfeae910baf5bcb0 -Author: Chris Wilson -Date: Mon Nov 5 09:09:14 2007 +0000 - - [cairo-atomic] Add a few more cpus that are known to have atomic access. - - Add x86_64 and arm to the list of cpus which do not require memory - barriers for reading and writing integers/pointers atomically. - - configure.in | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit bd5ed9a3988910a41748b7d78a265a2968a48f23 -Author: Chris Wilson -Date: Mon Nov 5 09:05:25 2007 +0000 - - [cairo-atomic] Declare the mutex for NEEDS_MEMORY_BARRIER. - - Whilst NEED_MEMORY_BARRIER should be a subset of ! HAS_ATOMIC_OPS, - until we have accurate configure tests NEED_MEMORY_BARRIER may be - invoked independently. - - src/cairo-mutex-list-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 901b0c97523a2da00ccf91cf4cee3bf55ce989b5 -Author: Chris Wilson -Date: Sun Nov 4 11:55:25 2007 +0000 - - [cairo-path-fixed] Exponentially enlarge cairo_path_buf_t. - - Allocate subsequent path bufs twice as large as the previous buf, - whilst still embedding a small initial buf into cairo_path_fixed_t - that handles the most frequent usage. - - src/cairo-path-fill.c | 2 +- - src/cairo-path-fixed-private.h | 20 ++++++--- - src/cairo-path-fixed.c | 89 ++++++++++++++++++++++++---------------- - 3 files changed, 68 insertions(+), 43 deletions(-) - -commit 92a18464bae40b19a26402eb2aa4950cac04c3a0 -Author: Chris Wilson -Date: Sat Nov 3 10:41:55 2007 +0000 - - [cairo-surface] Avoid allocation for common case of 1 box. - - _cairo_surface_fill_region(): avoid allocating the array of boxes if we - know that the region only contains one box and is therefore defined by its - extents. - - src/cairo-surface.c | 48 ++++++++++++++++++++++++++++-------------------- - 1 files changed, 28 insertions(+), 20 deletions(-) - -commit e60a7c39cdcdfd474c4f6cc3b4612870726f55dc -Author: Chris Wilson -Date: Thu Oct 25 10:24:01 2007 +0100 - - [cairo-atomic] Check whether we can access int/pointers atomically. - - Add a configure check to determine whether the host cpu can read/write - cairo_atomic_t without an explicit memory barrier, and update the macros - within cairo-atomic-private.h to reflect this knowledge. - - configure.in | 15 +++++++++++++++ - src/cairo-atomic-private.h | 20 +++++++++++++++----- - 2 files changed, 30 insertions(+), 5 deletions(-) - -commit 76667b4c2a4243a52ab0dbe372151a9ca7dfe931 -Author: Adrian Johnson -Date: Sat Nov 3 16:53:54 2007 +1030 - - ROADMAP: Mark set PS level complete - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6d2615d449a9df6a8a7e3b5e5370b06dc14912f5 -Author: Chris Wilson -Date: Fri Nov 2 09:17:59 2007 +0000 - - [test/degenerate-pen] Add missing return value. - - Carl - he likes to test us occasionally to make sure we're paying - attention. Well, that's the excuse I use... - - test/degenerate-pen.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit eb0b16837b7cbf63e4b49fb5c22cd392658033d8 -Author: Chris Wilson -Date: Thu Nov 1 22:11:01 2007 +0000 - - [cairo-spline] Eliminate redundant _cairo_fixed_to_double(). - - Inline and unroll PointDistanceSquaredToSegment() and eliminate the - multiple conversions between fixed point and doubles. This simple - transformation both shrinks the code and wins a few percent in path - intensive benchmarks such as fuckhergently.swf - - src/cairo-spline.c | 107 +++++++++++++++++++++++++-------------------------- - 1 files changed, 52 insertions(+), 55 deletions(-) - -commit 2a25e226588404da2970f473bdeb0d2ce106ce58 -Author: Chris Wilson -Date: Thu Nov 1 19:49:19 2007 +0000 - - [cairo-spline] Reduce stack requirements during recursive refinement. - - By splitting out the knot vectors into a smaller, separate structure, we - can dramatically reduce the stack allocation for each level of recursion. - Secondly we can have the storage requirements by modifying the first set - of knots in-place, thus we need only allocate stack space for the knots - covering the deferred half of the spline. - - src/cairo-spline.c | 94 ++++++++++++++++++++++++++-------------------------- - src/cairoint.h | 13 ++++--- - 2 files changed, 55 insertions(+), 52 deletions(-) - -commit b311c414a27b7374540671b3ef7153b30def0451 -Author: Chris Wilson -Date: Thu Nov 1 19:40:25 2007 +0000 - - [cairo] Use NULL instead of a bare 0. - - Silence a sparse warning. - - src/cairo.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit fd5c5178189d2035f3e25919c7453fa4e1c5a76a -Author: Chris Wilson -Date: Thu Nov 1 19:39:02 2007 +0000 - - [cairo-scaled-font] Zero extents on early error. - - Ensure that the output extents of cairo_scaled_font_glyph_extents(), - are zeroed if we return early due to being passed by the user a - cairo_scaled_font_t with an error set. - - src/cairo-scaled-font.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit cee6aa016b9d96d3430187d44397df2b311de8bc -Author: Chris Wilson -Date: Thu Nov 1 19:30:19 2007 +0000 - - [cairo-paginated-surface] Mark the backend static. - - Only used within the file, so do not expose outside the library. - - src/cairo-paginated-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6e0151df469b67ea56c36f7b0050b5d5c959c67d -Author: Chris Wilson -Date: Thu Nov 1 19:29:00 2007 +0000 - - [cairo-atomic] Rearrange code under the correct ifdefs. - - The atomic get/set depend upon NEED_MEMORY_BARRIER which is separate - from HAVE_ATOMIC_OPS. - - src/cairo-atomic.c | 24 +++++++++++++----------- - 1 files changed, 13 insertions(+), 11 deletions(-) - -commit a26118cf5bf4063a4bdac2bece1bba0be776c801 -Author: Chris Wilson -Date: Wed Oct 31 16:37:09 2007 +0000 - - [cairo-png] Check for feof whilst reading. - - We need to check for both ferror() and feof() when handling short reads. - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 61143e5b21ea4c2687c1cef012eb0758a7cb378a -Author: Chris Wilson -Date: Wed Oct 31 16:34:51 2007 +0000 - - [cairo-png] Handle missing PNG_SETJMP_SUPPORTED - - If libpng has not been compiled with jmpbuf support, then we cannot - atempt to use it - in which case we fall back to png's default error - handler and abort. - - src/cairo-png.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit c37a8ace818770ce3f07c2a7147088231d559e44 -Author: Adrian Johnson -Date: Thu Nov 1 00:01:16 2007 +1030 - - Round floats in output-stream to 6 significant digits after decimal - - The previous commit increased the precision of floats from 6 digits - after the decimal point to 18 digits to correct rounding errors with - very small numbers. However most of the time this extra precision is - not required and results in increased PS/PDF output. - - This commit makes the precision after the decimal point 6 significant - digits. For example: - - 1.234567 - 0.123456 - 0.00123456 - 0.00000000123456 - - src/cairo-output-stream.c | 41 +++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 39 insertions(+), 2 deletions(-) - -commit 8297daff896ca9d803959edb3c1955977594fab9 -Author: Behdad Esfahbod -Date: Wed Oct 31 02:41:33 2007 -0400 - - [cairo-output-stream] Write out floats to 18 digits after decimal point - - We write floats using %f as the scientific format used by smarter %g is - invalid in PS/PDF. %f however by default rounds to five digits after - decimal point. This was causing precision loss and making the newly - added degenerate-pen test fail for PDF. We now print up to 18 digits - which is as many bits doubles can accomodate. We can be smarter, but - that's for another commit. - - src/cairo-output-stream.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 04793175ace1312ac88570407ee28db4dde9a93c -Author: Carl Worth -Date: Tue Oct 30 22:49:10 2007 -0700 - - Increment cairo version to 1.5.3 after the 1.5.2 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ee5dc04aaf81d6ce9c496c7966ceebfbd6ab12fb -Author: Carl Worth -Date: Tue Oct 30 22:33:24 2007 -0700 - - Add missing images to REFERENCE_IMAGES list - - Otherwise, these don't get included in the generated tar file - and the test suite doesn't pass when run from that tar file, - (like 'make distcheck' tests). - - test/Makefile.am | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 194029b63afa24eff8264f10a1c5a79d90e7fdd9 -Author: Carl Worth -Date: Tue Oct 30 22:15:55 2007 -0700 - - Increment cairo version to 1.5.2 and libtool versioning to 14:0:12 - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 06af5c2891b89da28581c30afcde06c5442884db -Author: Keith Packard -Date: Tue Oct 30 22:00:59 2007 -0700 - - Force non-AA text when using a bitmap strike with only scaling transform. - - When the current font size matches one of the available fixed sizes, and - the overall transform has only scaling components, FreeType will use the - fixed size bitmaps by default. For glyphs which do not have bitmaps, - force them to be rendered in monochrome instead of anti-aliased so - that they all match nicely. - - src/cairo-ft-font.c | 24 ++++++++++++++++++++++++ - 1 files changed, 24 insertions(+), 0 deletions(-) - -commit f09f02a6e82df0efb66696fca857a412e7d12672 -Author: Carl Worth -Date: Tue Oct 30 21:57:47 2007 -0700 - - Add notes for 1.5.2 snapshot - - NEWS | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 252 insertions(+), 0 deletions(-) - -commit 448c9314252bba779194d2b01950b8738b26fd13 -Author: Carl Worth -Date: Tue Oct 30 17:09:56 2007 -0700 - - Fix degenerate-pen test case by removing the triggering assertion - - Instead we choose either the first or last pen vertex as - appropriate. - - This makes the degenerate-pen pass stop failing on an - assertion, and passes for most backends. It's still failing - for the PDF backend, but that looks like a new, PDF-specific - bug. - - src/cairo-pen.c | 16 +++++++++++++++- - 1 files changed, 15 insertions(+), 1 deletions(-) - -commit 5e76f652842d36086f500735f67cfd1d2f3e3edf -Author: Carl Worth -Date: Tue Oct 30 17:00:33 2007 -0700 - - Add degenerate-pen test case. - - This demonstrates the assertion failure pointed out by - Benjamin Otte here: - - [cairo] Assertion 'i < pen->num_vertices' failed in 1.4.10 - http://lists.cairographics.org/archives/cairo/2007-August/011282.html - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/degenerate-pen-ps-argb32-ref.png | Bin 0 -> 390 bytes - test/degenerate-pen-ref.png | Bin 0 -> 278 bytes - test/degenerate-pen.c | 104 +++++++++++++++++++++++++++++++++ - 5 files changed, 106 insertions(+), 0 deletions(-) - -commit 53378301d42eabc1ebedca983092f522299bd18e -Author: Carl Worth -Date: Tue Oct 30 13:13:29 2007 -0700 - - Update URLs for pixman to point to cairographics.org - - README | 7 ++++--- - configure.in | 2 +- - 2 files changed, 5 insertions(+), 4 deletions(-) - -commit 6957aa27e8df55ed3ef1e0cfc62c714ad9b644ee -Merge: 00d701f... 8d8724e... -Author: Carl Worth -Date: Tue Oct 30 09:45:59 2007 -0700 - - Merge in fix for get-path-extents test case. - - With independent fixes on both branches, the test case now - passes completely. Hurrah! - -commit 8d8724e80462593f6fee434cf972a67cb4ded282 -Author: Carl Worth -Date: Tue Oct 30 09:45:45 2007 -0700 - - Improve brace readability for multi-line conditional - - src/cairo.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit f43f0c104045a88de87c5ebf28309a5ba728203e -Author: Carl Worth -Date: Tue Oct 30 09:44:42 2007 -0700 - - Fix remaining two calls to _cairo_path_fixed_get_current_point - - The previous commit failed to fix up two callers to the - _cairo_path_fixed_get_current_point function, (and since - C doesn't distinguish between an enum and our integer-as- - Boolean, the compiler didn't complain). - - Fortunately, though, the test suite did complain, as the - bug introduced a new failure into the get-path-extents - test, and git-bisect helpfully pointed to the previous - commit. - - With this fix, the new failure of get-path-extents is - eliminated, (though, in this branch the arc-based failure - of that test still exists). - - src/cairo-ft-font.c | 3 +-- - src/cairo-win32-font.c | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) - -commit 00d701ff7de68609aa8cec7871d93b27a108fd14 -Author: Carl Worth -Date: Mon Oct 29 17:55:28 2007 -0700 - - Limit miters for small angles - - This fixes the current failure get-path-extents, which is a - demonstration of the following bug: - - cairo_stroke_extents() gives wrong result for arcs in some cases - https://bugs.freedesktop.org/show_bug.cgi?id=7245 - - Many thanks to Michael Urman whose review of early versions of - this work found a fatal mistake in my algebra. - - src/cairo-path-stroke.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 75 insertions(+), 1 deletions(-) - -commit 9bf0a640d203a880cae5c6a8bf3602344d03cb68 -Author: Carl Worth -Date: Mon Oct 29 16:24:13 2007 -0700 - - Add figure illustrating derivation of miter limit - - And use sin in the first place rather than the more awkward - secant. - - src/cairo-path-stroke.c | 43 ++++++++++++++++++++++++++++++++++++------- - 1 files changed, 36 insertions(+), 7 deletions(-) - -commit abeba1e69be3d4500107f10e50e1f0e7cae8c78f -Author: Carl Worth -Date: Mon Oct 29 16:22:15 2007 -0700 - - Annoying churn of sgml templates - - doc/public/tmpl/cairo-ps.sgml | 53 ++++++++++++++++++++++++++++++++ - doc/public/tmpl/cairo-surface.sgml | 19 +++++++++++ - doc/public/tmpl/cairo-win32-fonts.sgml | 10 ++++++ - doc/public/tmpl/cairo-win32.sgml | 9 +++++ - 4 files changed, 91 insertions(+), 0 deletions(-) - -commit 0d42af2427d1de27845cb8a6b3d290a562c28fc6 -Author: Chris Wilson -Date: Tue Oct 30 11:13:44 2007 +0000 - - [cairo-surface] Fix typo in doc. - - s/INVALUE_FORMAT/INVALID_FORMAT/ - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 39664b7cac7244ac901cb361442ca2967d74a542 -Author: Chris Wilson -Date: Tue Oct 30 11:01:40 2007 +0000 - - [cairo-path] Return CAIRO_STATUS_SUCCESS. - - If we have already returned the error status, then it is cleaner (and - the common idiom) to use 'return CAIRO_STATUS_SUCCESS' rather than - 'return status'. - - src/cairo-path.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e57df319633f8ebd0249096d76c9058f31f9835b -Author: Chris Wilson -Date: Tue Oct 30 10:58:16 2007 +0000 - - [cairo-path] Make _cairo_path_nil static. - - _cairo_path_nil is only used within cairo-path.c, so there is no reason - to expose it to the rest of the libary. - - src/cairo-path-private.h | 2 -- - src/cairo-path.c | 2 +- - 2 files changed, 1 insertions(+), 3 deletions(-) - -commit 6fdb7f129c8154e288ee40765fa63ffaeebaf8fd -Author: Chris Wilson -Date: Tue Oct 30 10:42:22 2007 +0000 - - Simplify return value from cairo_path_fixed_get_current_point(). - - The only caller of cairo_path_fixed_get_current_point(), used the status - return to determine whether or not the path had a current point (and did - not propagate the error) - for which we had already removed the - _cairo_error() markup. Now we reduce the boolean status return to a - cairo_bool_t, with a net reduction in code. - - src/cairo-path-fixed.c | 11 ++++------- - src/cairo.c | 13 +++++-------- - src/cairoint.h | 2 +- - 3 files changed, 10 insertions(+), 16 deletions(-) - -commit 4a2ab87e1a19921e2ae496f375c1144d2710d0c4 -Author: Chris Wilson -Date: Mon Oct 29 12:04:33 2007 +0000 - - [cairo-surface] Add the usual guards to _cairo_surface_set_font_options(). - - Adrian Johnson hit a SEGV after - _cairo_paginaged_surface_create_image_surface() tried to set the font - options on an error surface after running out of memory. So add the - usual checks that the surface is not a snapshot, or in an error state or - finished before modifying its font options. - - src/cairo-surface.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit bb6d36561c5f50d869236b2bb4d10afd627f9a1d -Author: Chris Wilson -Date: Sat Oct 27 17:29:54 2007 +0100 - - [test/get-path-extents] Add link to bug report. - - Add a link to the original bug report for the broken extents with arcs. - [http://bugs.freedesktop.org/show_bug.cgi?id=7245] - - test/get-path-extents.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit a69d4731300b430b802222d317698c313c75a31a -Author: Carl Worth -Date: Fri Oct 26 22:58:57 2007 -0700 - - Fix typo in _cairo_gstate_fini - - Obrigado a Luiz Americo Pereira Camara - - src/cairo-gstate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0c02b998f9e8589a90b2e744392995903b94414f -Author: Chris Wilson -Date: Fri Oct 26 18:06:36 2007 +0100 - - [cairo-gstate] Allow angle==0 whilst rotating. - - Cut'n'paste error whilst copying the NaN check from - _cairo_gstate_scale() flagged the no rotation case as an error. - - src/cairo-gstate.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit ce44cd65238d38dd6958bf1f7b8ffb9d0e8723c3 -Author: Chris Wilson -Date: Thu Oct 25 00:01:21 2007 +0100 - - [cairo-gstate] Add a missing _cairo_error() markup. - - Missed calling _cairo_error() for the CAIRO_STATUS_NULL_POINTER - returned by _cairo_gstate_init(). Rearrange the code to avoid the - overly complicated return statement. We note that _cairo_gstate_init() - is special as _cairo_gstate_fini() will always be called, even if an - error is thrown, and so do not do the usual cleanup in the case of an - aborted initialization. - - src/cairo-gstate.c | 28 +++++++++++++++++++--------- - 1 files changed, 19 insertions(+), 9 deletions(-) - -commit 4ce785e6a9433e7c862efaa6ef9c113412bf51a5 -Author: Chris Wilson -Date: Wed Oct 24 21:58:08 2007 +0100 - - [cairo-gstate] Add NaN check to rotate. - - Check the user input to _cairo_gstate_rotate() for invalid numbers. - - src/cairo-gstate.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 6295a296b0064f0959ca7f39e1d8d00fa51b6251 -Author: Chris Wilson -Date: Wed Oct 24 21:29:54 2007 +0100 - - [cairo-gstate] Check scale sx * sy != 0. - - Bill Spitzak said - "If you really want to match when the determinant is non-zero in the - resulting matrix, use sx*sy != 0. This appears the same as sx&&sy but - may also catch when underflow makes the determinant zero." - - Return CAIRO_STATUS_INVALID_MATRIX if we know the user input will - generate a degenerate matrix. For additional paranoia we could recompute - and validate the inverse each time as well. - - src/cairo-gstate.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 483ebe866df539460861a05f5d5e8e56ab2f5430 -Author: Chris Wilson -Date: Wed Oct 24 19:32:00 2007 +0100 - - [cairo-test] Remove executable flag from source files. - - chmod a-x test/cairo-test.[ch] - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit 1651359ffbda4c14eaf4e79b6deced4f2c247686 -Author: Chris Wilson -Date: Wed Oct 24 18:35:41 2007 +0100 - - [cairo-perf-diff-files] Only use a valid initializer for min_test. - - Do not assume that the tests[0] is a valid test, but instead scan for - the first test that has a name (i.e. is not a terminator). - - perf/cairo-perf-diff-files.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit 38c779e7d672151d25cd596149485fcc9f21c298 -Author: Chris Wilson -Date: Tue Oct 23 12:57:26 2007 +0100 - - [cairo-perf-diff-files] Check for terminator before comparing tests. - - Only the name of the terminating test is set so check that the current - test is not the terminator before comparing. - - perf/cairo-perf-diff-files.c | 23 ++++++++++++++++------- - 1 files changed, 16 insertions(+), 7 deletions(-) - -commit e3248a21841cfcbc285d76e2299485f9822857f1 -Author: Chris Wilson -Date: Mon Oct 22 09:34:55 2007 +0100 - - [cairo-matrix] Check user input for invalid numbers. - - Supplement the guards for scale==0 with checks that the user does not - attempt to translate or scale by invalid numbers. - - src/cairo-gstate.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 8888afe9a4269e2d740d309186159fe946e57eaf -Author: Adrian Johnson -Date: Mon Oct 22 23:05:25 2007 +0930 - - PDF: Fix meta surface patterns with EXTEND_REFLECT - - src/cairo-pdf-surface.c | 34 +++++++++++++++++++++++++++++----- - 1 files changed, 29 insertions(+), 5 deletions(-) - -commit f073a83251e56f641a522764c5cab1d71a786a60 -Author: Adrian Johnson -Date: Mon Oct 22 00:02:23 2007 +0930 - - win32-printing: fix error in comment - - boilerplate/cairo-boilerplate-win32-printing.c | 21 +++++++++++---------- - 1 files changed, 11 insertions(+), 10 deletions(-) - -commit fb2bf3e250b39078476d3df4bdbb81201ef00a96 -Author: Adrian Johnson -Date: Sun Oct 21 23:50:57 2007 +0930 - - win32-printing: remove unused code - - src/cairo-win32-printing-surface.c | 17 ----------------- - 1 files changed, 0 insertions(+), 17 deletions(-) - -commit b854d1e1b57680f244939b90b03911a5300f34d6 -Author: Adrian Johnson -Date: Sun Oct 21 23:50:28 2007 +0930 - - win32-printing: fix typo in comment - - src/cairo-win32-printing-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2d68c46b779909b5cc493a62db1228ea504ff52a -Author: Adrian Johnson -Date: Sun Oct 21 23:49:58 2007 +0930 - - win32-printing: fix dash-caps-joins test failure - - src/cairo-win32-printing-surface.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit 5fa62250456745907dd97fdb9030481bdc91a8dd -Author: Adrian Johnson -Date: Sun Oct 21 23:49:33 2007 +0930 - - win32-printing: Add test boilerplate - - Testing win32-printing requires setting the default printer to - a PostScript level 3 color printer. The PostScript output is - saved to a file and converted to png using ghostscript. - - boilerplate/Makefile.am | 2 + - boilerplate/cairo-boilerplate-win32-printing.c | 308 ++++++++++++++++++++++++ - boilerplate/cairo-boilerplate-win32-private.h | 15 ++ - boilerplate/cairo-boilerplate.c | 11 + - 4 files changed, 336 insertions(+), 0 deletions(-) - -commit e63b5e5201a79a8af4bd1d5acb524f067b5f2794 -Author: Adrian Johnson -Date: Sun Oct 21 23:47:35 2007 +0930 - - win32-printing: Use the surface ctm in show_glyphs - - show_glyphs needs to scale the font by the current CTM. - - src/cairo-win32-printing-surface.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit ac9831ea55bd62f0ed427230ad80348768415852 -Author: Adrian Johnson -Date: Sun Oct 21 23:46:52 2007 +0930 - - win32-printing: fix stroke rounding problems - - The win32 CTM is changed to user space to set the stroke parameters. - As win32 uses integers for stroke parameters this will cause rounding - problems depending on the CTM used. - - This is fixed by factoring out a scale from the user space CTM so that - xx, xy, yx, and yy in the CTM are all < 1. This preserves the shape - of the transformation while ensuring that the CTM does not cause - rounding problems. The stroke parameters are multiplied by the scale - value. - - src/cairo-win32-printing-surface.c | 35 +++++++++++++++++++++++++++++------ - 1 files changed, 29 insertions(+), 6 deletions(-) - -commit 89fe7b2ff09d19d3bdc84a8ee871e15716ff3539 -Author: Adrian Johnson -Date: Sun Oct 21 23:45:40 2007 +0930 - - win32-printing: fix rounding problems when using pattern matrix - - When using meta surface patterns, the win32 CTM is changed to the - inverted pattern matrix then the meta surface is replayed to the - surface. The problem with this is that win32 uses integer coordinates - for GDI functions. A pattern matrix that scale the CTM up will cause - rounding errors in the position of each path in the pattern. - - This is fixed by always keeping the win32 CTM set to the identity - matrix. The CTM is stored in the surface and all coordinates are - transformed by the CTM before calling GDI functions. - - src/cairo-win32-printing-surface.c | 167 +++++++++++++++++++++++++++++------- - src/cairo-win32-private.h | 2 + - 2 files changed, 138 insertions(+), 31 deletions(-) - -commit af01d9b8fabc2422eb7db144171d52fab95c4387 -Author: Adrian Johnson -Date: Sun Oct 21 23:43:27 2007 +0930 - - win32-printing: add meta surface pattern support - - src/cairo-win32-printing-surface.c | 251 ++++++++++++++++++++++++++++-------- - src/cairo-win32-private.h | 1 + - 2 files changed, 200 insertions(+), 52 deletions(-) - -commit dae1b352c60e6a63ec2131f788fec230fd583d3d -Author: Adrian Johnson -Date: Sun Oct 21 23:42:54 2007 +0930 - - update cairo-sections.txt - - doc/public/cairo-sections.txt | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c8da2a7dedb8352bb623954c3ac40244b86eeb24 -Author: Adrian Johnson -Date: Sun Oct 21 23:42:22 2007 +0930 - - win32-printing: check if images are opaque - - Don't use fallback for argb32 images with all alpha == 255. - - src/cairo-win32-printing-surface.c | 57 ++++++++++++++++++++++++++++++++++++ - 1 files changed, 57 insertions(+), 0 deletions(-) - -commit 9eb5747755f8c57bd6ba04925e193503fe194462 -Author: Adrian Johnson -Date: Sun Oct 21 23:41:31 2007 +0930 - - win32-printing: Add missing struct initializers - - src/cairo-win32-printing-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8f6abdbc26ee15451b5a386610f7d5a7a9114d63 -Author: Brian Ewins -Date: Sat Oct 20 23:41:46 2007 +0100 - - [quartz] return status instead of CGPatternRef - - Returning status improves error handling, since - returning NULL doesn't let us distinguish different - types of error. - - src/cairo-quartz-surface.c | 20 +++++++++++--------- - 1 files changed, 11 insertions(+), 9 deletions(-) - -commit cfb26fdf0f490b4902106b50d02628cffd53a0eb -Author: Brian Ewins -Date: Sat Oct 20 23:41:32 2007 +0100 - - [quartz] return status instead of cairo_quartz_surface_t - - Returning status improves error handling, since - returning NULL doesn't let us distinguish different - types of error. - - src/cairo-quartz-surface.c | 32 ++++++++++++++++++-------------- - 1 files changed, 18 insertions(+), 14 deletions(-) - -commit dec3099585eeb184ed51b5c720eb891314d7ea51 -Author: Brian Ewins -Date: Sat Oct 20 22:45:30 2007 +0100 - - [quartz] return status instead of CGShadingRef - - Returning status improves error handling, since - returning NULL doesn't let us distinguish different - types of error. Suggested by Chris Wilson. - - src/cairo-quartz-surface.c | 30 ++++++++++++++++-------------- - 1 files changed, 16 insertions(+), 14 deletions(-) - -commit 481ce2b8cb2dc376419e7d6cbdd73bd4ebcd5b5b -Author: Brian Ewins -Date: Sun Jul 1 14:37:57 2007 +0100 - - implement clipping with surface masks. - - This implements clipping using CGContextClipToMask, which - means that it will only have an effect on OS X 10.4+. - No additional tests pass with this fix - mainly due to - text effects and problems with the IN, OUT, DEST_IN, DEST_ATOP - operators. - - src/cairo-quartz-surface.c | 43 +++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 43 insertions(+), 0 deletions(-) - -commit b9c065df74027b06e15e105fee5e4a4d350e0abf -Author: Brian Ewins -Date: Sun Jun 24 23:53:47 2007 +0100 - - fix dash-zero-length test - - Quartz was failing the dash-zero-length test for odd numbers - of dashes; it seems cairo wants 3 dashes to be on-off-on, - off-on-off, wheras quartz uses on-off-on, on-off-on. Fixed - by doubling the number of dashes used. - - src/cairo-quartz-surface.c | 16 +++++++++++----- - 1 files changed, 11 insertions(+), 5 deletions(-) - -commit f334ee0397963e12c9efcb2690792aac83734661 -Author: Brian Ewins -Date: Sun Jun 24 01:17:58 2007 +0100 - - Implement EXTEND_NONE for gradients. - - Fixes linear and radial gradients, which were displaying with - extend_pad when extend_none was requested. Makes the - radial-gradient test pass. - - src/cairo-quartz-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 0eeec372c0e7849d81bde8c8c5bf491919f51a6e -Author: Brian Ewins -Date: Sat Jun 23 23:36:32 2007 +0100 - - call _cairo_error on failure - - Call _cairo_error to enable setting a breakpoint on quartz errors. - - src/cairo-quartz-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8c8ec63903f8ad67a88394eff1359607bb93cf88 -Author: Brian Ewins -Date: Sat Jun 23 12:34:24 2007 +0100 - - do not return a cairo_status_t of UNSUPPORTED - - We had a bug which converted cairo_int_status_t to cairo_status_t, - causing an assertion; reported at http://developer.imendio.com/node/128. - Return the generic out of memory error instead. - - src/cairo-quartz-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit 6fec51990e90901ebafbb872a9e618cb70d17911 -Author: Brian Ewins -Date: Mon Jun 18 00:07:33 2007 +0100 - - do not ignore errors, return NULL instead (moz#874315) - - In the quartz backend there are occasional errors where returning NULL - can be used to signal that an error has occured. - - Mozilla bug #874315. - - src/cairo-quartz-surface.c | 37 ++++++++++++++++++++++++++++--------- - 1 files changed, 28 insertions(+), 9 deletions(-) - -commit 07fd091e3e6b925c588b9a16f6f10efcd46615c2 -Author: Brian Ewins -Date: Mon Jun 18 00:07:33 2007 +0100 - - do not ignore errors in setup_source - - In setup_source we were ignoring a return value, but we can't relay - it to the caller. This patch treats the error as an unsupported - operation. - - src/cairo-quartz-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit b6b9cef7136453f97543173bcb2ade46b1c46b77 -Author: Brian Ewins -Date: Tue Jun 19 21:13:39 2007 +0100 - - do not ignore errors when creating styles. - - This fixes statuses being ignored when calling - CreateSizedCopyOfStyle. As a side effect, it cleans up - two other bugs - the font object was sometimes not - freed, and a the scaled font mutex was aquired recursively, - causing a hang in the invalid-matrix test. - - src/cairo-atsui-font.c | 37 ++++++++++++++++++++++++++----------- - 1 files changed, 26 insertions(+), 11 deletions(-) - -commit 4885a12c6863321a566e7103bf6dccdd5d13a986 -Author: Brian Ewins -Date: Mon Jun 18 00:07:33 2007 +0100 - - do not ignore ATSUI errors. - - This fixes multiple instances where the return value of an ATSUI - call was ignored and converts them into CAIRO_STATUS_NO_MEMORY. - As a side effect it fixes a utf8 array not being freed. - - src/cairo-atsui-font.c | 74 ++++++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 65 insertions(+), 9 deletions(-) - -commit b498c928be73635614596243d17a922e9d5ff008 -Author: Brian Ewins -Date: Mon Jun 18 00:07:33 2007 +0100 - - do not ignore errors in glyph paths - - When interpreting glyph paths in ATSUI callbacks we were ignoring - the cairo status. We need to return this to the caller. In order - to do this we introduce a custom OSStatus code in the range that - Apple reccommend. - - src/cairo-atsui-font.c | 30 ++++++++++++++++++++++++------ - 1 files changed, 24 insertions(+), 6 deletions(-) - -commit 95c708c717a367205845cefc81ae0afd9bd3d18f -Author: Brian Ewins -Date: Mon Jun 18 00:07:33 2007 +0100 - - propagate cairo_status_t return values - - There are several places in the quartz surface where we ignored - the returned status. This fixes the simple cases where the error - can just be returned to the caller. - - src/cairo-quartz-surface.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 7072959e3da0e8814cfd5193f8915aeb1341cc37 -Author: Brian Ewins -Date: Sat Oct 20 11:46:54 2007 +0100 - - Fix to support new similar tests. - - The patch to repeat tests for similar surfaces changed the - format of the test log files, which were parsed to produce - index.html. This fixes the parser to understand those changes. - - test/make-html.pl | 136 +++++++++++++++++++++++++++++------------------------ - 1 files changed, 75 insertions(+), 61 deletions(-) - -commit ae2535e4cb7c09eda1be13079d7a23b262aaef7b -Author: Chris Wilson -Date: Fri Oct 19 23:25:57 2007 +0100 - - [cairo-perf] Run performance tests over similar surfaces as well. - - Immediately repeat the performance test against a similar surface to - ensure that they introduce no regressions. Primarily introduced to - sanity check the change to use XShmPixmaps instead of XPixmaps in the - xlib backend, but it should be generally useful. - - perf/cairo-perf.c | 121 +++++++++++++++++++++++++++++++++-------------------- - 1 files changed, 75 insertions(+), 46 deletions(-) - -commit 081507a09e61e1e4a048e40f8ba67a76aa76bbef -Author: Chris Wilson -Date: Fri Oct 19 22:26:28 2007 +0100 - - [cairo-test] Repeat tests for similar surfaces. - - Having noticed strange discrepancies creeping into similar surfaces - whilst working on the xlib backend, I thought it wise to also run - the test harness against similar targets. For consistency, only - targets whose similar surface use the same backend are included. - - This can be disabled by exporting CAIRO_TEST_IGNORE_SIMILAR=1. - - test/cairo-test.c | 173 ++++++++++++++++++++++++++++++++++------------------ - 1 files changed, 113 insertions(+), 60 deletions(-) - -commit 3211d810d31a6607c8d78a50f577a8ca8eb705e6 -Author: Chris Wilson -Date: Fri Oct 19 22:45:15 2007 +0100 - - [cairo-xlib] Check source for XRender support. - - Do not rely on the assumption that if the destination has render support - then the source has it as well - breaks when the boilerplate disables - render support for a surface. - - Similarly do not set the XRender attributes on the source surface - unless it actually has a xrender_format. - - src/cairo-xlib-surface.c | 17 +++++++++-------- - 1 files changed, 9 insertions(+), 8 deletions(-) - -commit 5c08226a0f7bc373a96fe75d15ad854910eb3265 -Author: Chris Wilson -Date: Fri Oct 19 16:04:33 2007 +0100 - - [cairo-clip] Avoid work when all clipped out. - - When the clip mask is empty we perform actions like composite 0x0 - surfaces, which results in a lot of unnecessary work and allocations. - Avoid doing work when we know everything is clip out and take the - liberty of freeing any memory associated with the clop state. - - src/cairo-clip-private.h | 2 + - src/cairo-clip.c | 86 +++++++++++++++++++++++++++++++++++++++++----- - 2 files changed, 79 insertions(+), 9 deletions(-) - -commit c70c2cf6d6a71df54515175af0cb1651b67bdb86 -Author: Chris Wilson -Date: Fri Oct 19 23:31:36 2007 +0100 - - [Makefile.am] Fix ${top_srcdir}/libtool - - libtool exists in the top level build directory, but in a couple of - places we refer to the top level source directory. - - perf/Makefile.am | 4 ++-- - test/Makefile.am | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 76e3b3cdc3dda986d420637cfc2445aca481a863 -Author: Behdad Esfahbod -Date: Fri Oct 19 15:02:03 2007 -0400 - - [cairo-xlib] Release glyph surfaces if we made them to be generated - - The reasoning is that right now, applications render glyphs to images, - upload it to the X server, and keep a local copy in the cache. The X - server works hard to reuse glyph renderings, by hashing glyph images and - reusing them. So we are wasting memory in cairo apps that don't use the - glyph surface after uploading to the server, which is the case if you - don't use the glyph in an image surface. The patch does not release the - glyph surface if it already existed in the cache, so, worst case - scenario is that we render the glyph twice, if you first use it with - xlib, then with image surface. That effect should be negligible. - - src/cairo-xlib-surface.c | 83 +++++++++++++++++++++++++++++++++++----------- - 1 files changed, 63 insertions(+), 20 deletions(-) - -commit 8ae778273799ee9f6d3c13e9c41730daeda2c743 -Author: Chris Wilson -Date: Thu Oct 18 20:07:12 2007 +0100 - - [cairo-xlib-surface] Match content to xrender_format using the channel masks. - - _xrender_format_to_content() was using the channel offset to determine - whether the format supported a content type. - For example, the XRenderPictFormat for the A8 format looks like: - direct.alpha = 0; direct.alphaMask = 0xff; - direct.red = 0; direct.redMask = 0x00; - direct.green = 0; direct.greenMask = 0x00; - direct.blue = 0; direct.blueMask = 0x00; - which _xrender_format_to_content() matched as CAIRO_CONTENT_COLOR. - - Switch to using the channel masks for deducing content type. - - src/cairo-xlib-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit b7d8763c58165817f3238def4d1771ce8575139e -Author: Chris Wilson -Date: Thu Oct 18 19:42:21 2007 +0100 - - [check-plt] Use -W flag to readelf. - - Pass -W to readelf so that the output (in particular the function name) - is not clipped to fit within 80 characters. - - src/check-plt.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 01eb16977359c7953dbabb52e1f6a132d93839f3 -Author: Chris Wilson -Date: Thu Oct 18 19:28:00 2007 +0100 - - [test/.gitignore] Add *.exe.so - - Ignore these winegcc output files. - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c64335a9a846ba18411a720f6e69e511b15e2c6b -Author: Chris Wilson -Date: Wed Oct 17 23:12:49 2007 +0100 - - [cairo-scaled-font-subsets] Simplify boolean return code. - - _cairo_sub_font_lookup_glyph() was returning either a NULL_POINTER - error or success whereas its only caller was using it as a simple - predicate and handled the 'error' rather than propagate it upwards. - - src/cairo-scaled-font-subsets.c | 20 +++++++++----------- - 1 files changed, 9 insertions(+), 11 deletions(-) - -commit 379b9b79fa77be1bf9b5e0581b2363e80b0a8c88 -Author: Chris Wilson -Date: Wed Oct 17 20:41:57 2007 +0100 - - [cairo-xlib] Move the buggy_repeat discovery to the display_t. - - The VendorString parsing (to detect broken Xserver versions) was being - performed for each surface creation, but as it is a display invariant - we can save a small amount of work by storing the result on the - cairo_xlib_display_t. - - src/cairo-xlib-display.c | 9 +++++++++ - src/cairo-xlib-private.h | 1 + - src/cairo-xlib-surface.c | 9 +-------- - 3 files changed, 11 insertions(+), 8 deletions(-) - -commit 5e09653e5dca60902423938737195e38ccde1b95 -Author: Chris Wilson -Date: Tue Oct 16 15:30:50 2007 +0100 - - [test/rgb24-ignore-alpha] Destroy the surface after use. - - Destroy the surface so that valgrind doesn't complain about the memory - leak. - - test/rgb24-ignore-alpha.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit bd3dd72262772f1b2dfd8335630163f2e3bfacac -Author: Chris Wilson -Date: Tue Oct 16 15:29:59 2007 +0100 - - [pdiff] Reorganise the inner loops of the convolution. - - Reorder the indices and introduce a couple of temporary accumulators to - improve cache access. - - test/pdiff/lpyramid.c | 27 +++++++++++++++------------ - 1 files changed, 15 insertions(+), 12 deletions(-) - -commit fa9201b9c98b18ea18fbee1e5608f20335a02131 -Author: Chris Wilson -Date: Tue Oct 16 15:27:33 2007 +0100 - - [pdiff] Check for too small images. - - The Laplacian pyramid can only work on images larger than 3x3 due to the - size of its convolution kernel. So if the image is too small return an - error (-1) before attempting to construction the pyramid. - - test/pdiff/pdiff.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 3b1cc128dc4223ac88f7824dca223ed0f84df5d9 -Author: Chris Wilson -Date: Tue Oct 16 10:55:04 2007 +0100 - - [cairo-ft-font] Add paranoid error checking to Fc* operations. - - Check the return status when using Fc*() functions to modify the pattern - and propagate the failure (if necessary). - - src/cairo-ft-font.c | 178 +++++++++++++++++++++++++++++------------------- - src/cairo-ft-private.h | 1 - - 2 files changed, 108 insertions(+), 71 deletions(-) - -commit a55f1abf7cdc0276fe1eb85db969f33d0df4fe75 -Author: Chris Wilson -Date: Tue Oct 16 10:29:45 2007 +0100 - - [cairo-clip] Pass the local pattern to create_similar_solid(). - - Avoid the short-lived pattern allocation within - _cairo_surface_create_similar_solid() by providing the local solid - pattern to use as the source. - - src/cairo-clip.c | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit 7ff80234e3823547395819f96d7f7673df9ce9df -Author: Chris Wilson -Date: Tue Oct 16 10:37:45 2007 +0100 - - [cairo-path-fixed] Drop the _cairo_error() markup. - - Do not use _cairo_error(CAIRO_STATUS_NO_CURRENT_POINT) within - _cairo_path_fixed_get_current_point() as the only caller, - cairo_get_current_point(), expects and handles that status. - - src/cairo-path-fixed.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 189feaf352f59b0a049202552024578715ef8cc7 -Author: Chris Heath -Date: Mon Oct 15 17:31:50 2007 -0400 - - [autogen.sh] Tolerate tput failure (#12757) - - autogen.sh | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4660561cb548ab8d1eca724fda4d3658c95d4c04 -Author: Adrian Johnson -Date: Sun Oct 14 19:05:06 2007 +0930 - - PDF: Add support for CAIRO_FORMAT_A1 images - - src/cairo-pdf-surface.c | 43 ++++++++++++++++++++++++++++++++++++------- - 1 files changed, 36 insertions(+), 7 deletions(-) - -commit 39044157da03d598b816a459979f3d0e6285e023 -Author: Adrian Johnson -Date: Sun Oct 14 19:04:33 2007 +0930 - - PDF: Add support for linear gradients with REPEAT and REFLECT - - src/cairo-pdf-surface.c | 226 +++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 188 insertions(+), 38 deletions(-) - -commit 5af1b2280b2cf952624d587496158a98df0ee504 -Author: Adrian Johnson -Date: Sun Oct 14 00:04:21 2007 +0930 - - Make PostScript output text selectable - - The glyph names used in the Type42 and Type1 fallback fonts are now of - the form "/uniXXXX" where XXXX is the unicode character for each - glyph. When converted to pdf (eg using ps2pdf), pdf viewers are now - able to correctly extract the text. - - src/cairo-ps-surface.c | 36 ++++++-- - src/cairo-scaled-font-subsets-private.h | 15 +++ - src/cairo-scaled-font-subsets.c | 159 +++++++++++++++++++++++++++++++ - src/cairo-type1-fallback.c | 18 +++- - src/cairoint.h | 1 + - 5 files changed, 219 insertions(+), 10 deletions(-) - -commit e347a7a7c394fc2638faa2ff52e4b96545ac1ee3 -Author: Adrian Johnson -Date: Sat Oct 13 22:59:20 2007 +0930 - - PS: Add support for images with bilevel alpha - - This patch eliminates two sources of fallback images. The alpha value - of each pixel in argb32 images are checked. If all alpha values are - 255 the image is treated the same as rgb24 images. If all alpha values - are either 0 or 255 and the PS level is 3, a Type 3 image (image + - mask) is emitted. - - src/cairo-ps-surface.c | 519 ++++++++++++++++++++++++++++++++++++------------ - 1 files changed, 388 insertions(+), 131 deletions(-) - -commit af5cdde34d003b7d5943b169c160b91b8f7d10f3 -Author: Adrian Johnson -Date: Sat Oct 13 22:15:48 2007 +0930 - - PS/Win32-printing: remove redundant checks from _analyze_operation - - The check for supported operators is performed earlier in this - functions so these two checks in not required. - - src/cairo-ps-surface.c | 6 ------ - src/cairo-win32-printing-surface.c | 6 ------ - 2 files changed, 0 insertions(+), 12 deletions(-) - -commit ff35ffd2a7baa775e2ef73b844e783434c149057 -Author: Adrian Johnson -Date: Sat Oct 13 22:09:04 2007 +0930 - - Add meta-surface-pattern test - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/meta-surface-pattern-ref.png | Bin 0 -> 3072 bytes - test/meta-surface-pattern-rgb24-ref.png | Bin 0 -> 3162 bytes - test/meta-surface-pattern.c | 131 +++++++++++++++++++++++++++++++ - 5 files changed, 133 insertions(+), 0 deletions(-) - -commit 0b3f530973049737f942219452d991d76b65b724 -Author: Adrian Johnson -Date: Sat Oct 13 21:49:50 2007 +0930 - - Add PS reference images for tests using gradients - - test/clip-operator-ps-argb32-ref.png | Bin 0 -> 8594 bytes - test/gradient-alpha-ps-argb32-ref.png | Bin 0 -> 187 bytes - test/gradient-alpha-ps-rgb24-ref.png | Bin 0 -> 184 bytes - test/linear-gradient-ps-argb32-ref.png | Bin 0 -> 613 bytes - test/linear-gradient-ps-rgb24-ref.png | Bin 0 -> 613 bytes - test/operator-source-ps-argb32-ref.png | Bin 0 -> 3885 bytes - test/operator-source-ps-rgb24-ref.png | Bin 0 -> 3548 bytes - test/text-pattern-ps-argb32-ref.png | Bin 0 -> 997 bytes - test/text-pattern-ps-rgb24-ref.png | Bin 0 -> 969 bytes - test/trap-clip-ps-argb32-ref.png | Bin 5810 -> 5700 bytes - test/trap-clip-ps-rgb24-ref.png | Bin 0 -> 5616 bytes - 11 files changed, 0 insertions(+), 0 deletions(-) - -commit e66ce8cbc6e53b4b07a9af6bb7d2294ada0782c0 -Author: Adrian Johnson -Date: Sat Oct 13 21:28:19 2007 +0930 - - PS: Add linear and radial gradient support - - src/cairo-ps-surface.c | 321 +++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 291 insertions(+), 30 deletions(-) - -commit 583059e4a3e86c937de13c07a50486f7ca77b335 -Author: Adrian Johnson -Date: Sat Oct 13 21:16:49 2007 +0930 - - Fix bug in _gradient_is_opaque() - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b5c36010edc92ca129a0498cf04592f8f692f800 -Author: Adrian Johnson -Date: Sat Oct 13 21:14:28 2007 +0930 - - Add cairo_ps_surface_restrict_to_level() API - - doc/public/cairo-sections.txt | 4 ++ - src/cairo-ps-surface-private.h | 2 + - src/cairo-ps-surface.c | 99 +++++++++++++++++++++++++++++++++++++++- - src/cairo-ps.h | 25 ++++++++++ - 4 files changed, 129 insertions(+), 1 deletions(-) - -commit b5fa273c9a4f730882c6edade785236e72b2b4db -Author: Adrian Johnson -Date: Sat Oct 13 21:04:51 2007 +0930 - - Add PS reference images for tests using create_similar - - before the PS meta surface pattern patch these tests - had image fallacks in the PS output and did not require - a PS reference image. - - test/clip-fill-rule-ps-rgb24-ref.png | Bin 0 -> 309 bytes - test/clip-nesting-ps-rgb24-ref.png | Bin 0 -> 636 bytes - test/clip-push-group-ps-argb32-ref.png | Bin 0 -> 179 bytes - test/clip-push-group-ps-rgb24-ref.png | Bin 0 -> 179 bytes - test/clip-twice-ps-rgb24-ref.png | Bin 0 -> 541 bytes - test/copy-path-ps-rgb24-ref.png | Bin 0 -> 440 bytes - test/dash-caps-joins-ps-rgb24-ref.png | Bin 0 -> 3852 bytes - test/dash-scale-ps-rgb24-ref.png | Bin 0 -> 6316 bytes - test/dash-state-ps-rgb24-ref.png | Bin 0 -> 8650 bytes - test/degenerate-path-ps-rgb24-ref.png | Bin 0 -> 358 bytes - test/fill-and-stroke-ps-rgb24-ref.png | Bin 0 -> 319 bytes - test/fill-missed-stop-ps-rgb24-ref.png | Bin 0 -> 531 bytes - test/fill-rule-ps-rgb24-ref.png | Bin 0 -> 2031 bytes - test/font-matrix-translation-ps-rgb24-ref.png | Bin 0 -> 783 bytes - test/leaky-dash-ps-rgb24-ref.png | Bin 0 -> 284 bytes - test/line-width-scale-ps-rgb24-ref.png | Bin 0 -> 3901 bytes - test/new-sub-path-ps-rgb24-ref.png | Bin 0 -> 423 bytes - test/pixman-rotate-ps-argb32-ref.png | Bin 0 -> 411 bytes - test/pixman-rotate-ps-rgb24-ref.png | Bin 0 -> 392 bytes - test/random-intersections-ps-rgb24-ref.png | Bin 0 -> 89414 bytes - test/rel-path-ps-rgb24-ref.png | Bin 0 -> 243 bytes - test/rotate-image-surface-paint-ps-rgb24-ref.png | Bin 0 -> 274 bytes - test/source-clip-scale-ps-argb32-ref.png | Bin 0 -> 183 bytes - test/source-clip-scale-ps-rgb24-ref.png | Bin 0 -> 183 bytes - test/text-rotate-ps-rgb24-ref.png | Bin 0 -> 7196 bytes - 25 files changed, 0 insertions(+), 0 deletions(-) - -commit 8520ce31be13bc939357cd45bd1b4c1967d7ff53 -Author: Adrian Johnson -Date: Sat Oct 13 20:17:43 2007 +0930 - - PS: Add meta surface pattern support - - boilerplate/cairo-boilerplate.c | 11 +-- - src/cairo-ps-surface-private.h | 2 +- - src/cairo-ps-surface.c | 257 ++++++++++++++++++++++++++------------- - 3 files changed, 177 insertions(+), 93 deletions(-) - -commit e5b01e67975578797b4f7875a9ba02121ff935b5 -Author: Chris Wilson -Date: Thu Oct 11 17:54:55 2007 +0100 - - [Makefile.am] Add missing headers and reference images. - - Andrew Jorgensen spotted that make dist was missing a few headers needed - for compilation and running make distcheck had spurious failures. Add - the missing files to the distribution and a silly one-liner to check for - missing reference images. - - src/Makefile.am | 2 ++ - test/Makefile.am | 25 ++++++++++++++++++++++++- - 2 files changed, 26 insertions(+), 1 deletions(-) - -commit b7adcf67f8c640c146bada1fbeaa1cda1cfa825a -Author: Chris Wilson -Date: Thu Oct 11 14:11:06 2007 +0100 - - [cairo-path-stroke] Jump to cleanup after error. - - Incorrect early return in _cairo_stroker_curve_to() after - _cairo_stroker_join() resulted in leaking the local spline and pen. - - src/cairo-path-stroke.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0222c02d9525dc8ff1ad5a2bea46e623d9db1e43 -Author: Chris Wilson -Date: Thu Oct 11 14:01:20 2007 +0100 - - [cairo-pdf-surface] Return UNSUPPORTED from _to_unicode_stream(). - - Distinguish the UNSUPPORTED case where the font backend does not - support conversion to unicode from other fatal errors by returning a - status value rather than using stream.id == 0 to indicate any error. - - src/cairo-pdf-surface.c | 71 +++++++++++++++++++++++++--------------------- - 1 files changed, 39 insertions(+), 32 deletions(-) - -commit 981bc12e5b9b91ce1c5abe343ace837561059658 -Author: Chris Wilson -Date: Wed Oct 10 23:58:43 2007 +0100 - - [cairo-ps-surface] Close a couple of memory leaks. - - Adjust error paths to free local resources. - - src/cairo-ps-surface.c | 18 +++++++++++------- - 1 files changed, 11 insertions(+), 7 deletions(-) - -commit c1db44b26501cd905fb9ca858f41632c148b6b07 -Author: Chris Wilson -Date: Wed Oct 10 15:15:55 2007 +0100 - - [cairo-png] Clean up volatile warning. - - gcc warns that 'rows' is missing a volatile qualifier - so add it. - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 05702b8b6ea73fecd04dc5cc4b26ad1d46fa8850 -Author: Chris Wilson -Date: Tue Oct 9 23:37:34 2007 +0100 - - [cairo-pdf-surface] Free the clip path on error. - - If we fail to add the clip path to the current group, destroy it. - - src/cairo-pdf-surface.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit 8fa5f638a5f8eee4f9efe267ede20344fc7bd4e2 -Author: Chris Wilson -Date: Tue Oct 9 23:36:52 2007 +0100 - - [cairo-pdf-surface] Restore old_group for failed emit_meta_surface(). - - Ensure we restore the surface->current_group if we encounter an error - during _cairo_pdf_surface_emit_meta_surface() lest we leak the - current_group array. - - src/cairo-pdf-surface.c | 27 ++++++++++++++++----------- - 1 files changed, 16 insertions(+), 11 deletions(-) - -commit 8eb9fcf67336a8e4f95366956ae6f1880af4a93e -Author: Vladimir Vukicevic -Date: Wed Oct 10 14:05:22 2007 -0700 - - [win32] mask win32 printing vertex colors with 0xff00 per docs - - The range for the vertex color structures is 0x0000 .. 0xff00; I - think that this is an error in the docs, but strip out the low bits - just in case. - - src/cairo-win32-printing-surface.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 3545ebc1357969616e2f4fa6b36565f211ea36b3 -Author: Vladimir Vukicevic -Date: Wed Oct 10 14:01:30 2007 -0700 - - Fix win32 printing surface copyright notice - - Bad copy-and-paste of license. - - src/cairo-win32-printing-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0b65c301a72836f46cdcda8b8fa1e995100c7727 -Author: Chris Wilson -Date: Tue Oct 9 23:17:42 2007 +0100 - - [Makefile.am] Change lcov-clean to use more portable constructs. - - Replace xargs and rm with the binaries found by configure and drop the - passing of NUL-terminated strings as that is a GNU extension. - - Makefile.am | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit b8d7d62b08576364c8c402490b6f5e4a1472d5d8 -Author: Chris Wilson -Date: Tue Oct 9 23:12:52 2007 +0100 - - Fix some trivial syntax warnings for -ansi. - - gcc -ansi -pedantic gives a few syntax warnings, principally for use of - '//' comments and a comma at the end of enumerators. Apply these - corrections as they are trivial. - - configure.in | 2 +- - src/cairo-directfb-surface.c | 16 ++++++++-------- - src/cairo-meta-surface-private.h | 2 +- - src/cairo-type1-fallback.c | 2 +- - src/cairo-types-private.h | 7 +++---- - src/cairoint.h | 5 +++++ - 6 files changed, 19 insertions(+), 15 deletions(-) - -commit 7e6ac74de17cf82f224d9f5fad3ad60e92d7690b -Author: Chris Wilson -Date: Wed Oct 10 14:00:56 2007 +0100 - - [win32] Clean up compiler warnings. - - Fix up a few instances of unused status returns. - - src/cairo-win32-font.c | 89 ++++++++++++++++++++---------------- - src/cairo-win32-printing-surface.c | 26 +++++++---- - src/cairo-win32-surface.c | 24 ++++------ - 3 files changed, 76 insertions(+), 63 deletions(-) - -commit bee05467a5f398eaaaa8d79b3ff0a8b119856143 -Author: Chris Wilson -Date: Wed Oct 10 12:32:16 2007 +0100 - - [configure.in] Initialise test_svg. - - Set test_svg to no prior for checking for SVG availability so that the - printed summary is correct if the user explicitly disables the SVG - surface on the configure command line. - - configure.in | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 785cb5b7e11a2786b60a995c43e9ee411ec5ec2d -Author: Chris Wilson -Date: Tue Oct 9 16:58:46 2007 +0100 - - [cairo-image-surface] Dead code elimination. - - Remove an unreachable return and unused variable - tidy up after - a bad merge. - - src/cairo-image-surface.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 2268c5907ce80fe40d54ccfac8435ee5e22d36de -Author: Chris Wilson -Date: Tue Oct 9 13:23:34 2007 +0100 - - [cairo-glitz-surface] Propagate errors from set_image(). - - Propagate errors from _cairo_glitz_surface_set_image(). - - src/cairo-glitz-surface.c | 28 ++++++++++++++++++++-------- - 1 files changed, 20 insertions(+), 8 deletions(-) - -commit 4958789b9e8bf531259b3d1ea27887a8319f7696 -Author: Chris Wilson -Date: Tue Oct 9 12:49:08 2007 +0100 - - [cairo-xlib-surface] Propagate error from _draw_image_surface() to surface. - - Instead of simply ignoring the error that may occur when we upload the - destination image to the xlib surface (via XPutImage) record the error - on the xlib surface. - - src/cairo-xlib-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 9c65efeeb108c39e6f55c9247e7d11bfea35cb66 -Author: Chris Wilson -Date: Tue Oct 9 11:51:48 2007 +0100 - - [boilerplate-test-surfaces] Check show page for errors. - - Check that cairo_surface_show_page() did not generate any errors before - reading back the image buffer and saving it as a png. - - boilerplate/cairo-boilerplate-test-surfaces.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit caf04b1bb89c1a7668e36d5f334765a2323bd564 -Author: Chris Wilson -Date: Tue Oct 9 11:22:46 2007 +0100 - - [cairo-cff-subset] Propagate error status from failed append_copy(). - - Add a couple of missing status checks for the result of - cff_index_append_copy(). - - src/cairo-cff-subset.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit ef275cd65a9f20a8a3b1fb3883aff0cc8a3bf401 -Author: Chris Wilson -Date: Tue Oct 9 11:19:45 2007 +0100 - - [test-meta-surface] Propagate error from show_page(). - - Add a missing error propagation for _test_meta_surface_show_page(). - - src/test-meta-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 7758e56d0c96fd113a12b2adc92c783e962feebf -Author: Chris Wilson -Date: Tue Oct 9 11:16:40 2007 +0100 - - [cairo-hull] Remove a couple of redundant status returns. - - Those two functions unconditionally returned success, so change the - return to void. - - src/cairo-hull.c | 10 +++------- - 1 files changed, 3 insertions(+), 7 deletions(-) - -commit 1dabfc2b271a57b4eaa13922a031ccd38a586dd1 -Author: Chris Wilson -Date: Tue Oct 9 11:15:27 2007 +0100 - - [cairo-clip] Propagate error status from clip_intersect_path(). - - Propagate the error status (filtering out UNSUPPORTED) from - intersect_path() when reapplying the clip path during a deep copy. - - src/cairo-clip.c | 51 +++++++++++++++++++++++++++++++-------------------- - 1 files changed, 31 insertions(+), 20 deletions(-) - -commit 32b78fffc3b8441029ee6b48762a7d0c06bb44a8 -Author: Chris Wilson -Date: Tue Oct 9 11:08:58 2007 +0100 - - [cairo-traps] Simplify the status interaction of traps_grow(). - - Simply return the error status from the traps_grow() function rather - than having an assignment in the return function and then immediately - another assignment of the error to the status member at its callsite. - - src/cairo-traps.c | 11 +++-------- - 1 files changed, 3 insertions(+), 8 deletions(-) - -commit 66563eddd8ba2610fa59341b9337a30533e70d56 -Author: Chris Wilson -Date: Tue Oct 9 09:28:35 2007 +0100 - - [cairo-pdf-surface] Check status return after emit_meta_pattern(). - - Add the missing status propagation. - - src/cairo-pdf-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit be7d1f0f8f84ddac9e8c7dda4aa39f88806a5e39 -Author: Vladimir Vukicevic -Date: Tue Oct 9 14:27:53 2007 -0700 - - Simplify CAIRO_REFERENCE_COUNT_INVALID macro - - MSVC doesn't like the previous anonymous structure/cast, so simplify - to just a bare {} structure for use as an initializer. - - src/cairo-reference-count-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 712c3cda44d7023316b93a1241e66aabde15d668 -Author: Vladimir Vukicevic -Date: Tue Oct 9 13:56:51 2007 -0700 - - [win32] reduce GDI object usage - - Only create region objects if they're necessary; this significantly reduces - the number of GDI objects in use by cairo surfaces. - - src/cairo-win32-surface.c | 159 +++++++++++++++++++++++++-------------------- - 1 files changed, 89 insertions(+), 70 deletions(-) - -commit c99d33b10e84883ade1402c3c1d1efdb4b46f66e -Author: Vladimir Vukicevic -Date: Tue Oct 2 10:54:44 2007 -0700 - - [win32] return a nil surface, not NULL - - Missed an error return - - src/cairo-win32-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4dbf495515d6de933de7f567b935c5fdceed5f6f -Author: Vladimir Vukicevic -Date: Tue Oct 2 10:48:59 2007 -0700 - - [win32] report error correctly if CreateCompatibleBitmap fails - - These errors were being dropped on the floor, leading to - rendering errors in out of video memory conditions. - - src/cairo-win32-surface.c | 20 +++++++++++++++++++- - 1 files changed, 19 insertions(+), 1 deletions(-) - -commit 61ba63f3a0947bc89310f04e9bc1694fb6451c11 -Author: Vladimir Vukicevic -Date: Fri Sep 21 11:18:17 2007 -0700 - - [win32] remove ignore_operators flag from win32 printing surface - - Remove the ignore_operators fallback-avoiding workaround; if apps - want that same behaviour, they'll have to implement it themselves - by taking care when calling cairo_set_operator(). - - src/cairo-win32-printing-surface.c | 16 ++++------------ - src/cairo-win32-private.h | 5 ----- - src/cairo-win32.h | 3 ++- - 3 files changed, 6 insertions(+), 18 deletions(-) - -commit b12ed375cf7ad02a30324616e121a1e9ab8998cb -Author: Behdad Esfahbod -Date: Tue Oct 9 15:54:58 2007 -0400 - - [ChangeLog.mk] Fix changelog generation rules - - Previously it was trying to get logs of 1.2.0..1.4 while I really meant - was 1.2.0..1.4.0. It was a simple typo. - - ChangeLog.mk | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cbc4087a40aa7c6039ddadfca2a9876cb14e1bc6 -Author: Adrian Johnson -Date: Sat Oct 6 19:18:31 2007 +0930 - - Type1 subset: Add check for CFF fonts - - src/cairo-type1-subset.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit a1633df6eebd9b1252d832c7a70cea6150c818d3 -Author: Chris Wilson -Date: Fri Oct 5 17:21:00 2007 +0100 - - [cairo-scaled-font-subsets] Increment the sub_font counter after insertion. - - Do not modify the parent subsets->num_sub_font until after we have - successfully created the sub_font and inserted it into the hash table. - - src/cairo-scaled-font-subsets.c | 24 +++++++++++++++--------- - 1 files changed, 15 insertions(+), 9 deletions(-) - -commit cf2f994a319da1230c5d53f3dd81e7715e44a162 -Author: Chris Wilson -Date: Fri Oct 5 17:15:29 2007 +0100 - - [cairo-paginated-surface] Propagate backend errors to the surface. - - If we call a srface backend function directly, then it our - responsibility to propagate any fatal errors to the surface. - - src/cairo-paginated-surface.c | 57 ++++++++++++++++++++++++---------------- - 1 files changed, 34 insertions(+), 23 deletions(-) - -commit 3da62fdd2848bd9d06b83534adfee2afa17828ba -Author: Chris Wilson -Date: Fri Oct 5 13:41:39 2007 +0100 - - [cairo-xlib-display] Rescan the displays list during shutdown. - - As we drop the list mutex whilst calling the hooks during the - XCloseDisplay callback, we must rescan the list when we reacquire the - mutex in order to remove the display from the list. - - src/cairo-xlib-display.c | 48 +++++++++++++++++++++++++-------------------- - 1 files changed, 27 insertions(+), 21 deletions(-) - -commit 737cbd25a6cb0bec87563926ad644da019fc9800 -Author: Chris Wilson -Date: Fri Oct 5 13:03:47 2007 +0100 - - [cairo-ps-surface] Cleanup ps surface after creation failure. - - If we fail to create the paginated wrapper for the ps surface, cleanup - the resources allocated for the surface. - - src/cairo-ps-surface.c | 17 +++++++++++------ - 1 files changed, 11 insertions(+), 6 deletions(-) - -commit 31b52779bad4122d101cdffdb03153baf6cd011e -Author: Chris Wilson -Date: Fri Oct 5 12:55:13 2007 +0100 - - [cairo-boilerplate-xlib] Cleanup fallback after creation failure. - - Cleanup the local resource if we fail to create the X window and - surface for the xlib fallback test target. - - boilerplate/cairo-boilerplate-xlib.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit b210bea6c1867ef9d5c344747d17ca216f6071bd -Author: Chris Wilson -Date: Fri Oct 5 12:45:36 2007 +0100 - - [cairo-pdf-surface] Check for pdf_resource_t allocation failure. - - Check that the resources are actually allocated or propagate the error. - - src/cairo-pdf-surface.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit 5ac7ba9821cba076d7f53f6b8836a8619661018c -Author: Chris Wilson -Date: Fri Oct 5 12:16:23 2007 +0100 - - [cairo-pdf-surface] Destroy local resources on failed surface creation. - - During _cairo_pdf_surface_create_for_stream_internal() destroy all - locally allocated resources and the output stream if we fail to create - the pdf surface or its paginated wrapper. - - src/cairo-pdf-surface.c | 29 ++++++++++++++++++++--------- - 1 files changed, 20 insertions(+), 9 deletions(-) - -commit 63ddfa077c498780d46f752ec7f255b143c9f692 -Author: Chris Wilson -Date: Fri Oct 5 12:08:40 2007 +0100 - - [cairo-pdf-surface] Propagate error status. - - Add a few missing propagations of error status. - - src/cairo-pdf-surface.c | 45 ++++++++++++++++++++++++++++++++++----------- - 1 files changed, 34 insertions(+), 11 deletions(-) - -commit f1b6e2735c48d5a54190068c038047942f40f1d1 -Author: Chris Wilson -Date: Fri Oct 5 11:59:13 2007 +0100 - - [cairo-ps-surface] Propagate errors from emit_pattern(). - - Do not discard the error status from _cairo_ps_surface_emit_pattern(), - but propagate it back to the caller. - - src/cairo-ps-surface.c | 21 ++++++++++++++++----- - 1 files changed, 16 insertions(+), 5 deletions(-) - -commit 709f3160368417d9a9a78974b16d93ec3e5e3c14 -Author: Chris Wilson -Date: Fri Oct 5 17:37:05 2007 +0100 - - Cleanup a couple of warnings for use of uninitialized statuses. - - The compiler spotted a couple of potential uses of an uninitialized - status variable - apply the obvious fixes. - - src/cairo-svg-surface.c | 2 +- - src/cairo-type1-subset.c | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -commit 2f22510e22237283869fb2e23585504077566adf -Author: Chris Wilson -Date: Fri Oct 5 16:23:12 2007 +0100 - - [cairo-xlib] Initialize the global mutexes. - - The xlib surface creation routines will eventually attempt to lock the - global _cairo_xlib_display_mutex. Under the default environment this is - a non-issue as the CAIRO_MUTEX_INITIALIZE/FINALIZE become no-ops under - pthreads. However, for the sake of correctness (i.e. to silence the - lockdep debugger!) insert a call to initialize the global mutexes at the - start of the public entry points. - - src/cairo-xlib-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit d2557cd5eec7e51496d6b1b57899b2a028898a7c -Author: Chris Wilson -Date: Fri Oct 5 00:57:38 2007 +0100 - - [test-paginated] Free resources if fail to create the test surface. - - Ensure that all the locally allocated resources are freed if we fail - to allocate the paginated test surface. - - src/test-paginated-surface.c | 12 ++++++++++-- - 1 files changed, 10 insertions(+), 2 deletions(-) - -commit 60ffeecd4888fdf824b4095c945e1b27e05c0e1d -Author: Chris Wilson -Date: Fri Oct 5 00:56:11 2007 +0100 - - [test-surfaces] Mark the test backend as static. - - There is no need to export the test surface backends, so mark them - static. - - src/test-fallback-surface.c | 4 ++-- - src/test-meta-surface.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 6598973661490ce90b9f42155d8397af491b90c9 -Author: Chris Wilson -Date: Fri Oct 5 10:23:13 2007 +0100 - - [cairo-scaled-font-subset] Propagate errors during collection. - - Propagate the errors encountered whilst iterating over the scaled font - subsets ie _cairo_scaled_font_subsets_foreach_scaled() and co. - - src/cairo-pdf-surface.c | 20 ++++++++++++-------- - src/cairo-ps-surface.c | 27 +++++++++++++++++++-------- - src/cairo-scaled-font-subsets-private.h | 2 +- - src/cairo-scaled-font-subsets.c | 20 ++++++++++++++++---- - src/cairo-svg-surface.c | 4 +++- - 5 files changed, 51 insertions(+), 22 deletions(-) - -commit 3a2dd9d33686d6a6d1549965cacf48a7f401c086 -Author: Chris Wilson -Date: Fri Oct 5 10:10:16 2007 +0100 - - [cairo-png] Markup a couple of original error sites with _cairo_error(). - - Add the _cairo_error() markup to the original error sites within the png - read/write functions. - - src/cairo-png.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 81243ee7ef1c3fdf3d571778c414adb64e05fa9d -Author: Chris Wilson -Date: Fri Oct 5 09:57:56 2007 +0100 - - [cairo-scaled-font] Mask cannot be NULL so remove redundant check. - - We either generate a mask for the glyphs or throw an error and bypass - the check, so at that point mask can never be NULL and we do not need - the test. - - src/cairo-scaled-font.c | 21 +++++++++------------ - 1 files changed, 9 insertions(+), 12 deletions(-) - -commit f3d921baca02af4db5f8f1743f32e800d2f492bc -Author: Chris Wilson -Date: Fri Oct 5 09:53:36 2007 +0100 - - [cairo-scaled-font] Destroy the zombie font. - - If we do not transfer the font to the holdovers array (because it has - been removed from the cache and left in a zombie state), destroy it. - - src/cairo-scaled-font.c | 48 ++++++++++++++++++++++++---------------------- - 1 files changed, 25 insertions(+), 23 deletions(-) - -commit 41aab58f3ae044f1baf668363376532381270ff4 -Author: Chris Wilson -Date: Fri Oct 5 09:44:29 2007 +0100 - - [cairo-surface] Add the usual guards to the API entry point. - - Add the checks for unmodifiable surfaces (snapshots, finished and error) to - cairo_surface_set_fallback_resolution. - - src/cairo-surface.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit f3ae783c9c81106bdb3aa2d15b848d131c39cd93 -Author: Chris Wilson -Date: Fri Oct 5 09:42:23 2007 +0100 - - [cairo-surface-fallback] Release the acquired image on error. - - Add _cairo_surface_release_source_image() to the error paths. - - src/cairo-surface-fallback.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 29a5aae958fd9c6a8ec71326c7dad679c0bf5938 -Author: Chris Wilson -Date: Fri Oct 5 09:39:20 2007 +0100 - - [cairo-type1-fallback] Propagate error from closing the stream. - - Propagate the error from destroying the font and closing the output stream. - - src/cairo-type1-fallback.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit dd0f2d851cd4c4b2bab05668800e5379712f8ac6 -Author: Chris Wilson -Date: Fri Oct 5 15:22:13 2007 +0100 - - [cairo-atomic] Hide compiler warnings for _cairo_status_set_error(). - - gcc treats cairo_status_t as an unsigned integer and so generates a - warning when passing it address as signed integer pointer to - _cairo_atomic_int_cmpxchg(). Use an ugly cast to hide the warning and - similarly to hide the warning about the unused result. - - src/cairo-atomic-private.h | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 91d18eefe7be6ad3d1fa951c7424d5843e4718f9 -Author: Chris Wilson -Date: Fri Oct 5 15:16:28 2007 +0100 - - [cairo-type1-subset] Propagate error status (correctly!) - - Adrian Johnson pointed out a couple of mistakes in my previous attempt, - 535e7c161b907292eac098b6b4305373558948df, to ensure propagation of errors - throughout the generation of the type1 subset. - - This time the status member of the cairo_type1_font_subset_t is removed - in favour of simply return the error status from each function. This - completely avoids the issue of whether we overwrite a pre-existing error - status and confustion of status returns and the status member. The - removal of the status from the structure is possible due to its - short-lived nature - it is not exposed outside of the - _cairo_type1_subset_init() function, and is not shared by any other - piece of code. - - src/cairo-type1-subset.c | 293 +++++++++++++++++++++++----------------------- - 1 files changed, 146 insertions(+), 147 deletions(-) - -commit bd2245f8b87d85f5ea61200838c10de70e776cf5 -Author: Chris Wilson -Date: Fri Oct 5 00:45:00 2007 +0100 - - [cairo-svg-surface] Review error propagation. - - Ensure that the error status is propagated and all local resources - are freed on the error path. - - src/cairo-svg-surface.c | 374 ++++++++++++++++++++++++++++++++++------------- - 1 files changed, 271 insertions(+), 103 deletions(-) - -commit 853b29c56fdb50c627b27fc3a767300c7551dba0 -Author: Chris Wilson -Date: Thu Oct 4 23:30:21 2007 +0100 - - [cairo-pdf-surface] Add some missing error propagation. - - Add a couple of returns where the status was being assigned but not - checked. - - src/cairo-pdf-surface.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) - -commit 323511088d0c9057c1b0fa5e7aacda5e44e2e139 -Author: Chris Wilson -Date: Thu Oct 4 23:22:49 2007 +0100 - - [cairo-pdf-surface] Propagate errors from close_stream. - - Propagate the status return from _cairo_pdf_surface_close_stream(). - - src/cairo-pdf-surface.c | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit 0e3f5caf9f0bbdb5acf34ae1b92eab32bf08acbf -Author: Chris Wilson -Date: Thu Oct 4 23:18:33 2007 +0100 - - [cairo-pdf-surface] Propagate errors during pattern selection. - - Propagate error from _cairo_pdf_surface_select_pattern (). - - src/cairo-pdf-surface.c | 34 ++++++++++++++++++++++++++-------- - 1 files changed, 26 insertions(+), 8 deletions(-) - -commit 7940e39c1820b87c5b96dec6bc59eab97be4a793 -Author: Chris Wilson -Date: Thu Oct 4 23:15:21 2007 +0100 - - [cairo-pdf-surface] Propagate errors from opening/closing groups. - - Propagate the any error encountered during _cairo_pdf_surface_open_group - and friends. - - src/cairo-pdf-surface.c | 193 +++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 152 insertions(+), 41 deletions(-) - -commit 7601939a6524ad97a333fef910f3b5e69c46776c -Author: Chris Wilson -Date: Thu Oct 4 23:07:36 2007 +0100 - - [cairo-deflate-stream] Return the nil stream if creating from an error stream. - - If _cairo_deflate_stream_create() is passed a stream in the error state, - return a stream also in the error state, namely the _cairo_output_stream_nil. - - src/cairo-deflate-stream.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit dbbcb5c26fba77d2a828b253c97e4770b81cf90b -Author: Chris Wilson -Date: Thu Oct 4 21:18:47 2007 +0100 - - [Makefile] Correct parameters to lcov reset. - - lcov uses -z to zero its counters, not --reset. - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 717dcd1a2c109f48f0a419a5178fc58d5d4f9a2d -Author: Chris Wilson -Date: Thu Oct 4 21:17:31 2007 +0100 - - [cairo-pdf-surface] Propagate resource allocation failure. - - Propagate failure of _cairo_pdf_surface_new_object(). - - src/cairo-pdf-surface.c | 163 +++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 159 insertions(+), 4 deletions(-) - -commit 8fb40aee97fdb3ae2cbbfa5c6a350c7b8b030005 -Author: Chris Wilson -Date: Thu Oct 4 19:20:35 2007 +0100 - - [cairo-image-surface] Check for errors whilst cloning. - - After attempting to clone an image, check the context status and return - the nil surface if there was an error. - - src/cairo-image-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit b61931640d384707a6fc48f9ba4a4f2ddf675c32 -Author: Chris Wilson -Date: Thu Oct 4 19:12:10 2007 +0100 - - [cairo-ps-surface] Check the creation of output streams. - - Check for allocation errors during the creation of the output streams. - - src/cairo-ps-surface.c | 18 ++++++++++++++++-- - 1 files changed, 16 insertions(+), 2 deletions(-) - -commit 353c2ab5c0e10f267a1adf3957b5d6af4e6a2e29 -Author: Chris Wilson -Date: Thu Oct 4 19:10:42 2007 +0100 - - [cairo-output-stream] Guard against destroying the nil streams. - - Add a guard to return early if we attempt to call - _cairo_output_stream_destroy() on the nil cairo_output_stream_t streams. - - src/cairo-output-stream.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 7cc7bf09c1a61f407fdb054640ebf24039f985db -Author: Chris Wilson -Date: Thu Oct 4 18:52:50 2007 +0100 - - [cairo-meta-surface] Propagate errors during replay to the surface. - - Store any fatal errors raised during the replay on the surface object. - - src/cairo-meta-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 042821b566daf4aa17d662e7422d1b98858954d7 -Author: Chris Wilson -Date: Thu Oct 4 20:05:58 2007 +0100 - - [cairo-surface] Propagate fatal errors to the surface. - - Store errors raised by the backend on the surface. - - src/cairo-surface.c | 131 ++++++++++++++++++++++++++++----------------------- - 1 files changed, 72 insertions(+), 59 deletions(-) - -commit 535e7c161b907292eac098b6b4305373558948df -Author: Chris Wilson -Date: Thu Oct 4 18:45:17 2007 +0100 - - [cairo-type1-subset] Do not mask error returns. - - When propagating errors, check that we do not overwrite a pre-existing - error. - - src/cairo-type1-subset.c | 123 ++++++++++++++++++++++++++++++---------------- - 1 files changed, 81 insertions(+), 42 deletions(-) - -commit bb8d4c0b14ec175637f57a3b51c4997c0be12a0f -Author: Chris Wilson -Date: Thu Oct 4 18:33:24 2007 +0100 - - [cairo-truetype-subset] Do mask error status returns. - - Be careful not to overwrite existing the error status when propagating - errors and to not blindly return INT_STATUS_UNSUPPORTED from - load_truetype_table() as this will mask fatal errors. - - src/cairo-truetype-subset.c | 363 ++++++++++++++++++++++++++----------------- - 1 files changed, 219 insertions(+), 144 deletions(-) - -commit 37fd0d8967df21695d6536af1d7aedbeef2d2449 -Author: Chris Wilson -Date: Thu Oct 4 17:12:26 2007 +0100 - - [cairo-cff-subset] Propagate errors and review error paths. - - Ensure that errors get duly propagated back to the caller and all - locally allocated resources are freed along error paths. - - src/cairo-cff-subset.c | 291 ++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 209 insertions(+), 82 deletions(-) - -commit add0959328117e2023db0ba2432ed29ecb93275e -Author: Chris Wilson -Date: Thu Oct 4 17:00:26 2007 +0100 - - [cairo-debug] Finalize mutexes along with other static data. - - Initialize (so repeated calls of cairo_debug_reset_static_data() is - safe) and finalize the mutexes with the reset of the static data. - - src/cairo-debug.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit a4f20610afd18d58a964dbe84cc90c5723b2996d -Author: Chris Wilson -Date: Thu Oct 4 16:37:44 2007 +0100 - - [cairo] Protect the getters when operating on the nil object. - - Put a guard that checks the context's status at the start of each - getter that prevents the function from trying to dereference NULL state. - Use the status, as opposed to the invalid reference count, for - consistency with the existing guards on some of the getters. - - src/cairo.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 49 insertions(+), 2 deletions(-) - -commit 80c06f4539962231df771b38e64834a238f410dd -Author: Chris Wilson -Date: Thu Oct 4 16:16:41 2007 +0100 - - [cairo-scaled-font] Don't hold onto to a dropped font. - - Mark fonts that have been removed from the cache due to an error on a - shared object and do not put them into the holdovers array. - - src/cairo-scaled-font.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 6e93941a7605a3958269de195dc16f255dda7bfd -Author: Chris Wilson -Date: Thu Oct 4 16:04:49 2007 +0100 - - [cairo-scaled-font] Acquire mutex around _cairo_scaled_font_glyph_path(). - - All calls that manipulate the scaled_font->cache must hold its mutex. - - src/cairo-gstate.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 261971a3fb9c10c267cced53a440161f1acb4b5d -Author: Chris Wilson -Date: Thu Oct 4 16:03:12 2007 +0100 - - [cairo-gstate] Fix resource leaks on error paths. - - Ensure that all locally allocated (or referenced) resources are freed - if we later encounter an error. - - src/cairo-gstate.c | 22 ++++++++++++++-------- - 1 files changed, 14 insertions(+), 8 deletions(-) - -commit 4e44d54f3e99b65f5e80485b22d31890ea3d6561 -Author: Chris Wilson -Date: Thu Oct 4 15:58:21 2007 +0100 - - [cairo-matrix] Check whether a matrix is invertible before use. - - Provide an early check as to whether the font matrix is invertible. - - src/cairo-gstate.c | 3 +++ - src/cairo-matrix.c | 10 ++++++++++ - src/cairo-scaled-font.c | 3 +++ - src/cairoint.h | 3 +++ - 4 files changed, 19 insertions(+), 0 deletions(-) - -commit 528da4e5e131fe385a60431eb6656a542b27c70f -Author: Chris Wilson -Date: Thu Oct 4 15:50:40 2007 +0100 - - [cairo-scaled-font] Freeze the font cache whilst iterating over glyphs. - - Prevent glyph cache removal whilst iterating over a glyph string. - - src/cairo-scaled-font.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 4b81eeb20ebe070692ef8099c00de3829da8bf69 -Author: Chris Wilson -Date: Thu Oct 4 15:46:13 2007 +0100 - - [cairo-scaled-font] Destroy the mask on the error path. - - Do not leak the mask if we encounter an error whilst tracing. - - src/cairo-scaled-font.c | 17 ++++++++++------- - 1 files changed, 10 insertions(+), 7 deletions(-) - -commit d0b1308cd73a6b3602e5414abf03a3bdf8d2d001 -Author: Chris Wilson -Date: Thu Oct 4 15:43:09 2007 +0100 - - [cairo-scaled-font] Store fatal errors on the cairo_scaled_font_t. - - Ensure that all fatal errors raised whilst using the font are stored on - the font. - - src/cairo-scaled-font.c | 35 +++++++++++++++++++++++------------ - 1 files changed, 23 insertions(+), 12 deletions(-) - -commit 4c32e6bfde5d613e0eeef407b9b50c557b1878e3 -Author: Chris Wilson -Date: Thu Oct 4 15:31:25 2007 +0100 - - [cairo-scaled-font] Return the error status from _cairo_scaled_font_set_error() - - Similar to the other _cairo_*_set_error() return the error status. - - src/cairo-ft-font.c | 4 ++-- - src/cairo-scaled-font.c | 18 +++++++++--------- - src/cairoint.h | 2 +- - 3 files changed, 12 insertions(+), 12 deletions(-) - -commit 06ae5f1ba3bb679c145d2f7e9ed8c244abf7ff17 -Author: Chris Wilson -Date: Thu Oct 4 15:26:09 2007 +0100 - - [cairo-font-face] Set the error on the font. - - Similar to the other shared objects, store fatal errors on the shared - font_face. And do not return a cached reference to an object in an - error state. - - src/cairo-font-face.c | 46 +++++++++++++++++++++++++++++++++++++--------- - src/cairo-scaled-font.c | 1 + - src/cairoint.h | 4 ++++ - 3 files changed, 42 insertions(+), 9 deletions(-) - -commit 4cffdf2681ba254587bd774ea49718e71535b067 -Author: Chris Wilson -Date: Thu Oct 4 14:59:55 2007 +0100 - - [cairo-ft-font] Always call _cairo_ft_unscaled_font_fini (). - - The _cairo_ft_unscaled_font_fini() was skipped during the destroy for - fonts generated by cairo_ft_font_face_create_for_ft_face(). However - this causes a mutex to be 'leaked' for each font. - - src/cairo-ft-font.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit de1f92ae14bfc4d74d8df88ae81d7b90dd6739f0 -Author: Chris Wilson -Date: Thu Oct 4 14:51:16 2007 +0100 - - [cairo-output-stream] Propagate error status when copying streams. - - During _cairo_memory_stream_copy(), if set, copy the incoming error over - to the destination stream and return early. - - src/cairo-output-stream.c | 12 ++++++++++-- - 1 files changed, 10 insertions(+), 2 deletions(-) - -commit 2c256f292fc4a9fd8414e29c4df32d347e360900 -Author: Chris Wilson -Date: Thu Oct 4 14:35:08 2007 +0100 - - [cairo-error] Another _cairo_error (CAIRO_STATUS_SUCCESS)! - - Despite double checking, I still ended up converting one too many - status values. - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bed8239f03773ad1584c8ba48ceb0b34bbe69453 -Author: Chris Wilson -Date: Thu Oct 4 13:15:46 2007 +0100 - - [cairo-error] Clean up all the warnings and missing _cairo_error() calls. - - Every time we assign or return a hard-coded error status wrap that value - with a call to _cairo_error(). So the idiom becomes: - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - or - return _cairo_error (CAIRO_STATUS_INVALID_DASH); - - This ensures that a breakpoint placed on _cairo_error() will trigger - immediately cairo detects the error. - - src/cairo-analysis-surface.c | 4 +- - src/cairo-array.c | 9 +-- - src/cairo-atsui-font.c | 18 +++--- - src/cairo-base85-stream.c | 2 +- - src/cairo-bentley-ottmann.c | 22 +++----- - src/cairo-cache.c | 4 +- - src/cairo-cff-subset.c | 122 +++++++++++++++------------------------ - src/cairo-clip.c | 18 +++--- - src/cairo-deflate-stream.c | 2 +- - src/cairo-directfb-surface.c | 49 +++++++--------- - src/cairo-font-face.c | 6 +- - src/cairo-font-options.c | 4 +- - src/cairo-ft-font.c | 111 ++++++++++++++--------------------- - src/cairo-glitz-surface.c | 89 ++++++++++++---------------- - src/cairo-gstate.c | 37 +++++------- - src/cairo-hash.c | 10 +-- - src/cairo-hull.c | 2 +- - src/cairo-image-surface.c | 47 ++++++--------- - src/cairo-lzw.c | 6 +- - src/cairo-matrix.c | 4 +- - src/cairo-meta-surface.c | 48 ++++++---------- - src/cairo-os2-surface.c | 24 ++++---- - src/cairo-output-stream.c | 18 +++--- - src/cairo-paginated-surface.c | 8 +-- - src/cairo-path-fixed.c | 14 ++-- - src/cairo-path-stroke.c | 6 +- - src/cairo-path.c | 16 +++--- - src/cairo-pattern.c | 65 +++++++++----------- - src/cairo-pdf-surface.c | 62 ++++++++----------- - src/cairo-pen.c | 19 ++---- - src/cairo-png.c | 24 ++++---- - src/cairo-polygon.c | 6 +- - src/cairo-ps-surface.c | 63 +++++++++----------- - src/cairo-quartz-surface.c | 15 ++--- - src/cairo-region.c | 22 +++---- - src/cairo-scaled-font-subsets.c | 20 +++---- - src/cairo-scaled-font.c | 16 ++--- - src/cairo-skiplist.c | 2 +- - src/cairo-spline.c | 6 +- - src/cairo-stroke-style.c | 6 +- - src/cairo-surface-fallback.c | 10 +-- - src/cairo-surface.c | 82 ++++++++++++++------------ - src/cairo-svg-surface.c | 24 +++----- - src/cairo-traps.c | 9 +-- - src/cairo-truetype-subset.c | 43 ++++++-------- - src/cairo-type1-fallback.c | 27 ++++----- - src/cairo-type1-subset.c | 30 +++++----- - src/cairo-unicode.c | 20 +++---- - src/cairo-win32-font.c | 40 ++++++------ - src/cairo-win32-surface.c | 23 ++++---- - src/cairo-xcb-surface.c | 50 +++++++--------- - src/cairo-xlib-display.c | 2 +- - src/cairo-xlib-surface.c | 88 +++++++++++++--------------- - src/cairo.c | 8 +- - src/cairoint.h | 8 ++- - src/test-fallback-surface.c | 2 +- - src/test-meta-surface.c | 6 +- - src/test-paginated-surface.c | 6 +- - 58 files changed, 648 insertions(+), 856 deletions(-) - -commit d90d4bb6b99e0a912650234e28d097ea76c1cecc -Author: Chris Wilson -Date: Thu Oct 4 11:30:13 2007 +0100 - - [cairo-error] Make _cairo_error() return the error status. - - As pointed out by Jeff Muizelaar, this allows for more concise code, as - _cairo_error(CAIRO_STATUS_NO_MEMORY) - return CAIRO_STATUS_NO_MEMORY - can become - return _cairo_error(CAIRO_STATUS_NO_MEMORY); - - src/cairo.c | 6 +++++- - src/cairoint.h | 2 +- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit 71120727e190dfaf3ccbe63b3d91d90e36cff6f6 -Author: Chris Wilson -Date: Thu Oct 4 11:13:33 2007 +0100 - - [cairo-atomic] Use an atomic operation to set the status on a shared resource. - - Since the objects can be shared and may be in use simultaneously across - multiple threads, setting the status needs to be atomic. We use a - locked compare and exchange in order to avoid overwriting an existing - error - that is we use an atomic operation that only sets the new status - value if the current value is CAIRO_STATUS_SUCCESS. - - src/cairo-atomic-private.h | 8 ++++++++ - src/cairo-atomic.c | 15 +++++++++++++++ - src/cairo-pattern.c | 17 ++++++++--------- - src/cairo-scaled-font.c | 13 ++++++------- - src/cairo-surface.c | 13 ++++++------- - src/cairo.c | 12 +++++------- - 6 files changed, 48 insertions(+), 30 deletions(-) - -commit f4356efb64a043e7a459fe77616f3b7c92b25c49 -Author: Chris Wilson -Date: Thu Oct 4 09:30:32 2007 +0100 - - [malloc/error] Fixup _cairo_error (CAIRO_STATUS_SUCCESS)! - - At some point during the blitz, I accidentally wrote - _cairo_error (CAIRO_STATUS_SUCCESS) and then proceeded to paste it into - the next 30 error sites! s/CAIRO_STATUS_SUCCESS/CAIRO_STATUS_NO_MEMORY/ - - src/cairo-glitz-surface.c | 24 ++++++++++++------------ - src/cairo-gstate.c | 8 ++++---- - src/cairo-hash.c | 6 +++--- - src/cairo-hull.c | 2 +- - src/cairo-image-surface.c | 12 +++++++----- - src/cairo-lzw.c | 4 ++-- - src/cairo-meta-surface.c | 10 +++++----- - 7 files changed, 34 insertions(+), 32 deletions(-) - -commit ef5f460eb1f86a73e016c1150723ae1e70b3b037 -Author: Chris Wilson -Date: Thu Oct 4 09:08:46 2007 +0100 - - [cairo-path] Check for an empty path in cairo_append_path(). - - As we now generate empty paths, we must be able to handle empty paths - in the user facing API. cairo_append_path() has an explicit check, and - raises an error, for a NULL path->data, so we need to check the - path->num_data first for empty paths. - - src/cairo.c | 3 +++ - test/copy-path.c | 15 +++++++++++++++ - 2 files changed, 18 insertions(+), 0 deletions(-) - -commit 8ad56b308ae8bbecfe9873c21551a6d4b2302420 -Author: Chris Wilson -Date: Thu Oct 4 00:38:12 2007 +0100 - - [malloc/error] Add call to _cairo_error() after a failed malloc. - - Blitz all allocations to ensure that they raise a - _cairo_error(CAIRO_STATUS_NO_MEMORY) on failure. - - src/cairo-array.c | 6 +++- - src/cairo-atsui-font.c | 1 + - src/cairo-base85-stream.c | 4 ++- - src/cairo-bentley-ottmann.c | 12 +++++-- - src/cairo-cache.c | 4 ++- - src/cairo-cff-subset.c | 72 +++++++++++++++++++++++++++++--------- - src/cairo-clip.c | 4 ++- - src/cairo-deflate-stream.c | 4 ++- - src/cairo-directfb-surface.c | 32 ++++++++++++----- - src/cairo-font-face.c | 4 ++- - src/cairo-font-options.c | 11 ++++-- - src/cairo-ft-font.c | 13 +++++-- - src/cairo-glitz-surface.c | 33 ++++++++++++++---- - src/cairo-gstate.c | 13 +++++-- - src/cairo-hash.c | 9 ++++- - src/cairo-hull.c | 4 ++- - src/cairo-image-surface.c | 10 ++++- - src/cairo-lzw.c | 2 + - src/cairo-meta-surface.c | 26 +++++++++++--- - src/cairo-output-stream.c | 21 +++++++++--- - src/cairo-paginated-surface.c | 4 ++- - src/cairo-path-fixed.c | 8 +++- - src/cairo-path-stroke.c | 5 ++- - src/cairo-pattern.c | 5 ++- - src/cairo-pdf-surface.c | 10 ++++- - src/cairo-ps-surface.c | 19 +++++++--- - src/cairo-quartz-surface.c | 14 +++++++ - src/cairo-region.c | 4 ++- - src/cairo-scaled-font-subsets.c | 18 +++++++--- - src/cairo-scaled-font.c | 3 ++ - src/cairo-skiplist.c | 5 ++- - src/cairo-spline.c | 1 + - src/cairo-stroke-style.c | 4 ++- - src/cairo-surface-fallback.c | 2 + - src/cairo-surface.c | 1 + - src/cairo-traps.c | 5 ++- - src/cairo-truetype-subset.c | 13 ++++++- - src/cairo-type1-fallback.c | 7 +++- - src/cairo-type1-subset.c | 26 +++++++++++--- - src/cairo-unicode.c | 8 +++- - src/cairo-win32-font.c | 9 ++++- - src/cairo-win32-surface.c | 5 ++- - src/cairo-xcb-surface.c | 23 ++++++++++--- - src/cairo-xlib-display.c | 4 ++- - src/cairo-xlib-surface.c | 19 ++++++++-- - src/cairo.c | 9 ++++- - src/test-meta-surface.c | 4 ++- - 47 files changed, 404 insertions(+), 116 deletions(-) - -commit 66664596559c55913fb0b9c8784fe8ab862c217b -Author: Chris Wilson -Date: Wed Oct 3 23:25:10 2007 +0100 - - [malloc] Take advantage of calloc() argument checking. - - calloc() will check its arguments for integer overflows so it is safer - not to pre-multiply them. - - src/cairo-ft-font.c | 4 ++-- - src/cairo-glitz-surface.c | 2 +- - src/cairo-image-surface.c | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -commit e49bcde27f88e21d5b8037a0089a226096f6514b -Author: Chris Wilson -Date: Wed Oct 3 23:19:10 2007 +0100 - - [malloc] Check for integer overflow when realloc'ing. - - Perform similar sanity checks to Vlad's _cairo_malloc_ab() but on the - arguments to realloc instead. - - src/cairo-array.c | 4 ++-- - src/cairo-lzw.c | 6 +++++- - src/cairo-malloc-private.h | 30 ++++++++++++++++++++++++++---- - src/cairo-path-stroke.c | 3 ++- - src/cairo-pattern.c | 4 +++- - src/cairo-pen.c | 3 ++- - src/cairo-polygon.c | 3 ++- - src/cairo-spline.c | 3 ++- - src/cairo-traps.c | 3 ++- - 9 files changed, 46 insertions(+), 13 deletions(-) - -commit 8cba73a36c4ec42601388bb9374f3182651bfe60 -Author: Chris Wilson -Date: Wed Oct 3 22:27:09 2007 +0100 - - [cairo-polygon] Add a _cairo_error(). - - Add a _cairo_error() to an originating error site. - - src/cairo-polygon.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e767c8b50af578209f1dac3b8f2ae22835e1fee7 -Author: Chris Wilson -Date: Wed Oct 3 22:26:03 2007 +0100 - - [cairo-pen] Add _cairo_error(). - - Markup a couple of originating error sites with _cairo_error(). - - src/cairo-pen.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 7047a091748577754845a6ed7f35837e41e7d5fb -Author: Adrian Johnson -Date: Wed Oct 3 23:10:15 2007 +0930 - - TODO: Remove PDF encoding issues - - All PDF font encoding issues are fixed now that TrueType fonts are - embedded in PDF as CIDFontType2. - - TODO | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 3e70b0a388c04c61816078de058c323774edeb96 -Author: Adrian Johnson -Date: Wed Oct 3 23:01:59 2007 +0930 - - ROADMAP: Mark EPS support done - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a4627177663beacd3d15699fee072f7ad2eff4a9 -Author: Adrian Johnson -Date: Wed Oct 3 19:55:05 2007 +0930 - - PDF: Fix bug in font resources - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c9a9f1299c2bd5b6a8e53fdb264c233a43e0c44a -Author: Chris Wilson -Date: Mon Oct 1 17:00:38 2007 +0100 - - [cairo-image-surface] Avoid trying to create surfaces with invalid strides. - - pixman does not (yet?) support arbitrary strides and will fail to - generate an image for the data. We misinterpret that failure as a - CAIRO_STATUS_NO_MEMORY, so instead return CAIRO_STATUS_INVALID_FORMAT - before attempting to create the pixman image. - - src/cairo-image-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit e241205f0c6d823150cf018c0deb6652dd8b8d02 -Author: Chris Wilson -Date: Mon Oct 1 16:54:16 2007 +0100 - - [cairo-image-surface] Return correct error surfaces. - - Avoid returning the "generic" _cairo_surface_nil (which corresponds to - CAIRO_STATUS_NO_MEMORY) when the user asks us to create a surface with - an invalid format or content. - - src/cairo-image-surface.c | 65 ++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 59 insertions(+), 6 deletions(-) - -commit b4f86638cc4b87bfaf10568ae9beb89626e26613 -Author: Chris Wilson -Date: Mon Oct 1 17:59:57 2007 +0100 - - [cairo-path] Don't raise an error when attempting to create an empty path. - - Generate a real empty path structure instead of returning - _cairo_path_nil, if we have been asked to create an empty path. - - (Also add a couple of missing _cairo_error()s and an appropriate test - case.) - - Spotted by Fred Kiefer. - - src/cairo-path.c | 36 ++++++++++++++++++++++++------------ - test/copy-path.c | 17 +++++++++++++++++ - 2 files changed, 41 insertions(+), 12 deletions(-) - -commit 042c382c094d1ea6f9a5a162d4d1d9ac83413233 -Author: Adrian Johnson -Date: Sat Sep 29 07:55:48 2007 +0930 - - CFF Subetting: Fix for #10849 - - This fixes the problem Apple Preview has with viewing PDFs with CFF - font subsets. - - src/cairo-cff-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d837a458b95c0e1866eecaf3688dfa36e7dafe8e -Author: Chris Wilson -Date: Thu Sep 27 17:45:51 2007 +0100 - - [configure] Work-around bad interaction of libtool and lcov - - libtool causes the .gcda files to be generated in the .libs/ directory, - separate from the .c source file. lcov expects them to be in the same - directory - so massage the lcov.info file to remove the reference to the - .libs/. - - Also separate the target for generating the lcov output, so that it can - be run independently from triggering the tests. And improve convenience - of using the other lcov targets. - - Makefile.am | 29 ++++++++++++++++++++--------- - 1 files changed, 20 insertions(+), 9 deletions(-) - -commit abe1b89da4a2aa255a218103c7a05711d0f73b1c -Author: Chris Wilson -Date: Thu Sep 27 14:49:30 2007 +0100 - - [test/get-path-extents] Test extents of cairo_text_path(). - - Check that the text path extents match the computed metrics. - - test/get-path-extents.c | 38 ++++++++++++++++++++++++++++---------- - 1 files changed, 28 insertions(+), 10 deletions(-) - -commit 0618818f7a4a323d2c2d0dd122e08aeaa025b3f3 -Author: Chris Wilson -Date: Wed Sep 26 14:40:36 2007 +0100 - - [test/get-path-extents] Test extents of an arc. - - Add the test case from bug 7245, - https://bugs.freedesktop.org/show_bug.cgi?id=7245. - - test/get-path-extents.c | 24 +++++++++++++++++++----- - 1 files changed, 19 insertions(+), 5 deletions(-) - -commit 54d5dccffa402835db57231f7a6cd98d71688359 -Author: Adrian Johnson -Date: Wed Sep 26 22:21:26 2007 +0930 - - PDF: Compress pattern and group streams - - src/cairo-pdf-surface.c | 16 +++++++++++----- - 1 files changed, 11 insertions(+), 5 deletions(-) - -commit a0a51977f48cc14c442357f472ed20e43c42829c -Author: Adrian Johnson -Date: Wed Sep 26 22:21:07 2007 +0930 - - PDF: Fix bug in font resources when same font is in multiple groups - - src/cairo-pdf-surface.c | 16 +++++++++++----- - 1 files changed, 11 insertions(+), 5 deletions(-) - -commit 76b9b1819251c8f3df0a5ada92a501ad83baa5a1 -Author: Chris Wilson -Date: Wed Sep 26 00:41:31 2007 +0100 - - [test/create-for-stream] Add the missing cairo_surface_finish(). - - Moments after pushing the new test case did I realise the issue... - We do not attempt to write out the surface to the user stream until - we perform the cairo_surface_destroy() by which point we have lost - the ability to interrogate the error status. We can avoid this by - explicitly calling cairo_surface_finish() and then checking the - error status - and we see that the error is indeed reported - correctly. - - No bug. Nothing to see here. Please move along. (Apart from the - request for the status to be return from cairo_surface_destroy!) - - test/create-for-stream.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 1e7f0bd4d5148940fe963eb20782bffe5ee735bd -Author: Chris Wilson -Date: Wed Sep 26 00:28:47 2007 +0100 - - [test/create-for-stream] Add test case for user error propagation. - - From bug https://bugs.freedesktop.org/show_bug.cgi?id=7049, we find - that the error status from the user supplied write function to - cairo_*_surface_create_for_stream is ignored and not propagated back - to the surface/context - leading to silent data loss. Incorporate - the suggested test case, a write function that simply returns - CAIRO_STATUS_WRITE_ERROR, into create-for-stream.c. - - test/create-for-stream.c | 57 +++++++++++++++++++++++++++++++++++---------- - 1 files changed, 44 insertions(+), 13 deletions(-) - -commit 1469de5211e84e40490fa612538986768748bd55 -Author: Chris Wilson -Date: Tue Sep 25 23:35:25 2007 +0100 - - [cairo-png] Propagate error from read and write funcs. - - Use the png_struct->error_ptr to propagate the error status from the - user/stdio read and write functions through the png_error() to the - cairo_surface_write_to_png*() and cairo_surface_read_from_png*() - functions. From there the error is returned back to the user either - directly or as the most appropriate error surface. - - (Fixes https://bugs.freedesktop.org/show_bug.cgi?id=6909) - - src/cairo-png.c | 57 +++++++++++++++++++++----------- - test/create-from-png.c | 84 ++++++++++++++++++++++++++++++++++++++++++----- - 2 files changed, 113 insertions(+), 28 deletions(-) - -commit f1d84271d363cc80cdef92ec9cac2cf29783bfe0 -Author: Chris Wilson -Date: Tue Sep 25 21:58:24 2007 +0100 - - [cairo-atomic] Do not use Intel atomic primitives on i386. - - When limiting the target instruction set for compatibility with older - processors, e.g. -march=i386, the Intel atomic primitives generate a - call to a non-existent function, __sync_fetch_and_add_4(). To detect - this scenario change the configure test from AC_TRY_COMPILE to - AC_TRY_LINK which will then cause Cairo to fall back to using mutexes - for its atomic operations. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 03be41151d06d48d55bc1e172535829ec45a10cf -Author: Chris Wilson -Date: Sun Sep 23 21:08:09 2007 +0100 - - [cairo-atomic] Rewrite reference counting using atomic ops. - - Introduce an opaque cairo_reference_count_t and define operations on it - in terms of atomic ops. Update all users of reference counters to use - the new opaque type. - - src/Makefile.am | 1 + - src/cairo-clip-private.h | 12 +++--- - src/cairo-clip.c | 11 +++-- - src/cairo-font-face.c | 49 ++++++++++----------- - src/cairo-ft-font.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-pattern.c | 50 +++++++++++---------- - src/cairo-private.h | 3 +- - src/cairo-reference-count-private.h | 66 ++++++++++++++++++++++++++++ - src/cairo-scaled-font-private.h | 3 +- - src/cairo-scaled-font.c | 81 +++++++++++++++++------------------ - src/cairo-surface-private.h | 3 +- - src/cairo-surface.c | 33 ++++++++------ - src/cairo-xlib-display.c | 42 ++++++++---------- - src/cairo-xlib-private.h | 5 +- - src/cairo-xlib-screen.c | 12 +++-- - src/cairo.c | 23 +++++----- - src/cairoint.h | 27 ++++++------ - 18 files changed, 246 insertions(+), 179 deletions(-) - -commit 8b6c871c9084739460f1320cd36560a09477a83e -Author: Chris Wilson -Date: Fri Sep 21 10:45:55 2007 +0100 - - [cairo-atomic] Introduce atomic ops. - - Test for the availability of the Intel __sync_* atomic primitives and - use them to define a few operations useful for reference counting - - providing a generic interface that may be targeted at more architectures - in the future. If no atomic primitives are available, use a mutex based - variant. If the contention on that mutex is too high, we can consider - using an array of mutexes using the address of the atomic variable as - the hash. - - configure.in | 16 ++++++++ - src/Makefile.am | 2 + - src/cairo-atomic-private.h | 81 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-atomic.c | 79 +++++++++++++++++++++++++++++++++++++++ - src/cairo-mutex-list-private.h | 3 + - 5 files changed, 181 insertions(+), 0 deletions(-) - -commit 42de1a0a7f5cc10c2bad98ef69da302ed2a1ca84 -Author: Chris Wilson -Date: Sun Sep 23 21:00:23 2007 +0100 - - Move GCC attributes wrapping into a separate header. - - The wrapping of GCC attributes (such as cairo_private) needs to be - visible to any header file, including those that avoid cairoint.h such - as cairo-boilerplate. To achieve this we move the pre-processor magic to - its own header file and include it as required. - - src/Makefile.am | 1 + - src/cairo-cache-private.h | 1 + - src/cairo-clip-private.h | 1 + - src/cairo-compiler-private.h | 115 +++++++++++++++++++++++++++++++++++++ - src/cairo-hash-private.h | 1 + - src/cairo-mutex-private.h | 1 + - src/cairo-output-stream-private.h | 1 + - src/cairo-region-private.h | 2 + - src/cairo-wideint-private.h | 2 + - src/cairo-xlib-private.h | 5 +- - src/cairoint.h | 71 +---------------------- - 11 files changed, 131 insertions(+), 70 deletions(-) - -commit be327a7b49a62c684e133aad5d5d6adec30b60e6 -Author: Adrian Johnson -Date: Tue Sep 25 23:04:03 2007 +0930 - - PDF: Compress the content stream - - The content stream compression that was previously implemented was - inadvertently bypassed when the new stream handling for meta surface - patterns was implemented. - - src/cairo-pdf-surface-private.h | 4 ++ - src/cairo-pdf-surface.c | 65 ++++++++++++++++++++++++++++++++------ - 2 files changed, 58 insertions(+), 11 deletions(-) - -commit 99fd9449c24055fd7b3623157397fe61282e2de0 -Author: Adrian Johnson -Date: Tue Sep 25 21:57:46 2007 +0930 - - PDF: Remove duplication from the resource dictionary - - The same font identifer was being added the resources every time it - was referenced. - - src/cairo-pdf-surface.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit dc23ecb6198f1e28b6096cbef931e15407cc20a8 -Author: Chris Wilson -Date: Sun Sep 23 21:02:31 2007 +0100 - - [cairo-boilerplate] Do not throw an error if an exclude target is not found. - - If we fail to exclude a target because it was not in the list of - targets - job done and no need to throw a tantrum. - - boilerplate/cairo-boilerplate.c | 5 ----- - 1 files changed, 0 insertions(+), 5 deletions(-) - -commit 4f7c5a5033f41de94a7ea284a64f4afa0900fff1 -Author: Chris Wilson -Date: Sun Sep 23 21:04:36 2007 +0100 - - [cairo-region] Call _cairo_error() at original error site. - - Before returning a fresh CAIRO_STATUS_NO_MEMORY, remember to call - cairo_error(). - - src/cairo-region.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 45feb13c2689a8f5813e60fb0c2d17e9e02fd4b5 -Author: Chris Wilson -Date: Sun Sep 23 21:34:50 2007 +0100 - - [cairo-clip] Avoid a malloc(0). - - Avoid a potential allocation of 0 bytes, and a potential NULL leading to an - incorrect CAIRO_STATUS_NO_MEMORY, when copying an empty clip region. - - src/cairo-clip.c | 36 +++++++++++++++++++++--------------- - 1 files changed, 21 insertions(+), 15 deletions(-) - -commit 77f1aa78872aa108199afd41247cf21827f7e33a -Author: Adrian Johnson -Date: Sun Sep 23 17:43:44 2007 +0930 - - Add Encapsulated PostScript support - - The analysis surface will calculated the tight bounding box for each - page. A new paginated-surface backend function set_bounding_box() has - been added for passing the page bounding box to the target surface at - the end of the analysis phase. - - The changes to the PS file when EPS is enabled are: - - Add EPS header - - Use tight bounding box instead of page size - - Use save/restore to ensure PS interpreter is left in the same state - - src/cairo-analysis-surface-private.h | 10 ++- - src/cairo-analysis-surface.c | 32 +++++++ - src/cairo-paginated-private.h | 19 ++++- - src/cairo-paginated-surface.c | 15 +++- - src/cairo-ps-surface-private.h | 3 +- - src/cairo-ps-surface.c | 151 +++++++++++++++++++++++----------- - 6 files changed, 171 insertions(+), 59 deletions(-) - -commit beefbdd63864d10924360f41b244de7edf7b5f5b -Author: Adrian Johnson -Date: Sun Sep 23 14:23:33 2007 +0930 - - Add Encapsulated PostScript API - - doc/public/cairo-sections.txt | 2 + - src/cairo-ps-surface-private.h | 2 + - src/cairo-ps-surface.c | 57 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-ps.h | 7 +++++ - 4 files changed, 68 insertions(+), 0 deletions(-) - -commit b20e08999e2f6e7a72ee75a7c3fd865bf0368794 -Author: Adrian Johnson -Date: Sun Sep 23 11:37:02 2007 +0930 - - Truetype Subsetting: Avoid failing when fonts are missing optional tables - - Previously, the TrueType subsetting would fail if any of the "cvt", - "fpgm", or "prep" tables were missing from the source font. However - these tables are optional and not required in the subsetted font if - they do not appear in the source font. - - The "name" table has been removed from the subsetted font as the - Type42 specification does not require this table. - - src/cairo-truetype-subset.c | 153 +++++++++++++++++++++++++++++++------------ - 1 files changed, 110 insertions(+), 43 deletions(-) - -commit 8132b8b417c75388ce4c4671fffddaa44a5d1be0 -Author: Brian Ewins -Date: Sun Sep 23 02:52:01 2007 +0100 - - [type1-subset] only subset ft fonts - - If atsui and ft were both enabled, the code crashed trying to subset - type-1 fonts; fixed by checking if fonts really are ft before using - them as ft fonts. This is a temporary fix until we support subsetting - across all font backends. - - src/cairo-type1-subset.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6020f67f1a49cfe3844c4938d4af24c63c8424cc -Author: Vladimir Vukicevic -Date: Fri Sep 21 11:02:42 2007 -0700 - - Avoid divide-by-zero when trying to allocate a 0-sized array - - Fix up the _cairo_malloc_* wrappers to avoid blindly dividing by zero; - any attempt to allocate a zero-sized chunk of memory will result in - NULL. - - src/cairo-malloc-private.h | 35 +++++++++++++++++++++++++---------- - 1 files changed, 25 insertions(+), 10 deletions(-) - -commit c79fc9af334fd6f2d1078071d64178125561b187 -Author: Carl Worth -Date: Thu Sep 20 16:01:43 2007 -0700 - - Add rgb24-specific reference imag for mask-alpha test - - test/mask-alpha-rgb24-ref.png | Bin 0 -> 599 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 59dd59ce8d4c2a35788f3f0baf3409d3a8555744 -Author: Adrian Johnson -Date: Sun Sep 9 22:32:36 2007 +0930 - - Add mask-alpha test - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/mask-alpha-ref.png | Bin 0 -> 640 bytes - test/mask-alpha.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 92 insertions(+), 0 deletions(-) - -commit 12b2ab630c2343c7bd7d885cc0e773023e3d8fa8 -Author: Adrian Johnson -Date: Thu Sep 20 22:51:39 2007 +0930 - - PDF: Add support for CAIRO_FORMAT_A8 images - - src/cairo-pdf-surface.c | 44 ++++++++++++++++++++++++++++++++------------ - 1 files changed, 32 insertions(+), 12 deletions(-) - -commit 8a4adcf5f3c893505a53882a0532a220f79f4409 -Author: Adrian Johnson -Date: Thu Sep 20 08:57:19 2007 +0930 - - ROADMAP: Add metadata API - - ROADMAP | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 6e78c6589d4af6291158b7cd9d94e3a80139e279 -Author: Behdad Esfahbod -Date: Tue Sep 18 19:50:16 2007 -0400 - - [ROADMAP] Mark xlib IncludeInferior support done - - ROADMAP | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit d8b0de01d67cdf73d8266a73f54ba1ac42fee3c9 -Author: Vladimir Vukicevic -Date: Tue Sep 18 09:26:05 2007 -0700 - - fix trailing whitespace - - src/cairo-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4fd9acc1b321d75623a66d37c0ff299ae06fb98b -Author: Vladimir Vukicevic -Date: Tue Sep 4 10:30:08 2007 -0700 - - [win32] add new win32 printing surface - - src/Makefile.win32 | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit e3c16e15e39d98f96e2ce20e397d88214f5a821e -Author: Vladimir Vukicevic -Date: Wed Aug 29 16:30:49 2007 -0700 - - Make NO_MUTEX really mean no mutexes - - src/cairo-mutex-type-private.h | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit ffc16c4be2fb5a0d214cb186dee52e74dbd584cf -Author: Vladimir Vukicevic -Date: Wed Aug 29 16:25:58 2007 -0700 - - [win32] Add win32 printing surface - - Add win32 surface intended for use with printer DCs; GDI will be used - as much as possible, and the surface will be a paginated surface - that supports fine-grained fallback. - - (Original work from Adrian Johnson; additional fixes by me.) - - src/Makefile.am | 2 +- - src/cairo-paginated-surface.c | 37 +- - src/cairo-win32-font.c | 7 +- - src/cairo-win32-printing-surface.c | 1220 ++++++++++++++++++++++++++++++++++++ - src/cairo-win32-private.h | 66 ++- - src/cairo-win32-surface.c | 78 ++- - src/cairo-win32.h | 3 + - src/cairo.h | 4 +- - 8 files changed, 1376 insertions(+), 41 deletions(-) - -commit 284ed91ee4418baf6dd1a437a904980a2156fa48 -Author: Vladimir Vukicevic -Date: Wed Aug 29 15:34:04 2007 -0700 - - Let surfaces specify their native resolution, for fallback purposes - - src/cairo-image-surface.c | 2 ++ - src/cairo-paginated-surface.c | 4 ++-- - src/cairo-surface-private.h | 8 ++++++++ - src/cairo-surface.c | 24 ++++++++++++++++++++++++ - src/cairoint.h | 6 ++++++ - 5 files changed, 42 insertions(+), 2 deletions(-) - -commit 79d975f84bcc32e91db517d71a7312e2e1d653d4 -Author: Behdad Esfahbod -Date: Wed Sep 12 17:45:11 2007 -0400 - - [cairo-ft-font] Ignore FT_Load_Glyph errors other than out-of-memory - Same for FT_Render_Glyph. - - When the user asks us to render a glyph that is not available in the font, - it's mostly an unavoidable kind of error for them, as in, they can't - avoid such a call. So it's not nice to put cairo_t in an error state and - refuse any further drawying. - - Many PDF files are created using buggy software and cause such glpyh-not-found - errors for CID 0 for example. - - Eventually we should propagate these kind of errors up and return it from - the function call causing it, but that needs API change to add return value - to all text functions, so for now we just ignore these errors. - - src/cairo-ft-font.c | 14 +++++++++----- - 1 files changed, 9 insertions(+), 5 deletions(-) - -commit 21ab44f11d3d20eead5d988c7a6cf48eebff08c7 -Author: Behdad Esfahbod -Date: Mon Sep 17 16:41:52 2007 -0400 - - [ChangeLog.mk] Make make rule depend on .git/HEAD, not .git - That is exactly what we want. Kristian Høgsberg suggested it. - - ChangeLog.mk | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3f4875dbe20e1d093d70f49c32f7ddf6a6e6ef61 -Author: Adrian Johnson -Date: Sun Sep 16 20:26:33 2007 +0930 - - Analysis-surface: Use pattern extents to limit show_glyphs extents - - src/cairo-analysis-surface.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) - -commit 14786385b40aa0ae83e3b077a82e3f34aba63f22 -Author: Adrian Johnson -Date: Sun Sep 16 19:43:28 2007 +0930 - - Change paginated surface size when PS/PDF _set_size() called - - The finer-grained fallbacks would not work correctly if the page - was set to a larger size. - - Add _cairo_paginated_surface_set_size() function that is called - from cairo_ps_surface_set_size() and cairo_pdf_surface_set_size(). - - src/cairo-paginated-private.h | 5 +++++ - src/cairo-paginated-surface.c | 23 +++++++++++++++++++++++ - src/cairo-pdf-surface-private.h | 2 ++ - src/cairo-pdf-surface.c | 14 ++++++++++---- - src/cairo-ps-surface-private.h | 2 ++ - src/cairo-ps-surface.c | 14 ++++++++++---- - 6 files changed, 52 insertions(+), 8 deletions(-) - -commit 46cb7e69526e8b5663077e7409dc232a0f56800b -Author: Adrian Johnson -Date: Sun Sep 16 16:32:54 2007 +0930 - - PS: Remove initclip operator - - The DSC and EPS specifications do not allow the use of initclip. - Instead each page is wrapped in a gsave/restore pair and a - "grestore gsave" is emitted when the clip path is reset. - - src/cairo-ps-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit e9d85235f9cceed92af428e0ab43503fe0850636 -Author: Adrian Johnson -Date: Sun Sep 16 16:21:10 2007 +0930 - - PDF: Fix copy_page() bug - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit a5cb48fcf269c16dd138c0ee31b138b1f13e623d -Author: Adrian Johnson -Date: Sun Sep 16 16:15:10 2007 +0930 - - PS: Remove copy_page() - - The DSC specification recommends not using the copypage operator as it - breaks page independence. - - src/cairo-paginated-surface.c | 3 +-- - src/cairo-ps-surface.c | 14 +------------- - 2 files changed, 2 insertions(+), 15 deletions(-) - -commit 03f7a51f47717af45afbc439ce2178789449ab32 -Author: Ken Herron -Date: Sun Sep 16 15:56:16 2007 +0930 - - PS output optimizations (#11442) - - This patches cairo-ps-surface.c to use the aliases for moveto, lineto, curveto, - and closepath. It also uses selectfont to select fonts. - - src/cairo-ps-surface.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) - -commit 1274147ce3ec855488fe4e437838b1134c494413 -Author: Behdad Esfahbod -Date: Sat Sep 15 04:03:08 2007 -0400 - - [cairo-gstate] Fix comment about font_matrix having zero translation - - src/cairo-gstate.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 6fbe2432c6072522b9003a1e46180392010a7aad -Author: Behdad Esfahbod -Date: Sat Sep 15 04:02:39 2007 -0400 - - [PDF] Fix typo in comments - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit dca93eb76d64194f1325d7b941fa523da7801634 -Author: Jeff Muizelaar -Date: Wed Sep 12 23:12:59 2007 -0400 - - Fix theoretical NULL return from cairo_pop_group() - - This also makes the code more consistent as group_pattern always holds a valid - pattern. - - src/cairo.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 5eae45c55b3cd240945cd225631c9c782f69b50f -Author: Jonathan Gramain -Date: Wed Sep 12 17:43:55 2007 -0400 - - [cairo-gstate] Fix order of matrices in _cairo_gstate_backend_to_user_rectangle() - - The cairo_matrix_multiply(out,a,b) docs say that it is equivalent to applying - matrix a first, followed by b. Looking at _cairo_gstate_backend_to_user() we should - apply device_transform_inverse followed by ctm_inverse. That's what we do now. - - src/cairo-gstate.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit f2910ad3e9bfd279af7f9f43013489a32b5c1747 -Author: Vladimir Vukicevic -Date: Tue Sep 11 13:32:26 2007 -0700 - - Update cairo-sections.txt - - doc/public/cairo-sections.txt | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 9e975757a2820303d67e8497ab6cef9368237eb5 -Author: Vladimir Vukicevic -Date: Tue Sep 11 13:30:35 2007 -0700 - - Export cairo_surface_{copy,show}_page - - This patch adds cairo_surface_copy_page and cairo_surface_show_page - as public methods, leaving the previous cairo_show_page variants as - shorthands. copy_page/show_page are specific to the surface, not - to the context, so they need to be surface methods. - - TODO | 5 ---- - boilerplate/Makefile.win32 | 4 +++ - boilerplate/cairo-boilerplate-test-surfaces.c | 5 +--- - src/cairo-gstate.c | 4 +- - src/cairo-paginated-surface.c | 6 ++-- - src/cairo-surface.c | 27 +++++++++++++++++++++++- - src/cairo-svg-surface.c | 2 +- - src/cairo.c | 6 +++++ - src/cairo.h | 6 +++++ - src/cairoint.h | 8 +----- - 10 files changed, 50 insertions(+), 23 deletions(-) - -commit 7dd05b7f86da6a465bb979c2ba955655ddcf66ed -Author: Vladimir Vukicevic -Date: Tue Sep 11 11:27:35 2007 -0700 - - [mlk] Free boxes in copy_rectangle_list on success - - Fix memory leak when copy_rectangle_list is used. - - src/cairo-clip.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 897350c6c5cba29b8bd7890a33ecc4d7fa9b7795 -Author: Adrian Johnson -Date: Sun Sep 9 19:11:12 2007 +0930 - - PDF: Remove BC entry from Smask dictionary - - The BC (background color) in the smask of the recently added - cairo_mask() support was causing Ghostscript to crash due to the wrong - number of BC values. The BC entry has been removed as BC default color - is already what we want. - - src/cairo-pdf-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 909e0be2416aa6833639439279583d1ae61777fc -Author: Adrian Johnson -Date: Sun Sep 9 11:20:02 2007 +0930 - - Add PDF support for cairo_mask() - - src/cairo-pdf-surface.c | 129 +++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 125 insertions(+), 4 deletions(-) - -commit d62f8861689d8b9a9a837043fb78813f0407abd4 -Author: Chris Wilson -Date: Wed Sep 5 08:07:41 2007 +0100 - - [cairo-ft-font] Early detection of a zero sized bitmap. - - Under rare circumstances we may need to extract a surface that - represents a bitmap with width==0 and rows==0. Detect this case at the - start and simply return a zero-sized surface. - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=12284. - - src/cairo-ft-font.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit d635e0103346f22e578d17c59153d292820e00d2 -Author: Vladimir Vukicevic -Date: Thu Sep 6 12:56:59 2007 -0700 - - Add b8g8r8 formats to cairo-image-surface - - Add recognition code for x8b8g8r8 and a8b8g8r8 to cairo-image-surface. - (Used as the default for 24bpp by some older VNC servers.) - - src/cairo-image-surface.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) - -commit 3c01efb0ee0c8911fba7627d056ec3b53dfab6e3 -Merge: 0682b9a... 1e21220... -Author: Carl Worth -Date: Wed Sep 5 14:38:40 2007 -0700 - - Merge branch adrianj/pdf-meta-surface-pattern into cairo - - This does introduce some reported failures from the cairo-pdf backend - into the test suite. However, in all cases the output PDF files look - fine when viewed with acroread. It looks like all of the problems - could be fixed by using cairo_rectangle;cairo_fill along with - CAIRO_EXTEND_PAD when drawing images with cairo inside poppler. - - However, I'm not yet filing a bug against poppler and disabling these - tests because we need to _implement_ CAIRO_EXTEND_PAD before we can - tell poppler to start using it. - -commit 0682b9a9c18640c284c7cc8ba8792a329414998e -Author: Carl Worth -Date: Tue Sep 4 16:47:49 2007 -0700 - - Add rgb24-ignore-alpha test - - This test demonstrates a bug when compositing an rgb24 image over an argb32 - image, (the implementation appears to be examining the alpha channel - rather than ignoring it). - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/rgb24-ignore-alpha-ref.png | Bin 0 -> 116 bytes - test/rgb24-ignore-alpha.c | 65 +++++++++++++++++++++++++++++++++++++++ - 4 files changed, 67 insertions(+), 0 deletions(-) - -commit 84a2c8968a57ed7593db1515718115218072bc0d -Author: Behdad Esfahbod -Date: Wed Sep 5 12:38:27 2007 -0400 - - [test,perf] Support TARGETS_EXCLUDE make variable - - perf/Makefile.am | 6 ++++-- - test/Makefile.am | 5 +++-- - 2 files changed, 7 insertions(+), 4 deletions(-) - -commit 1e21220f0e2540e3befa66e4764f75589d0eef82 -Author: Adrian Johnson -Date: Wed Sep 5 22:53:43 2007 +0930 - - Create meta-surface source image with same content type as the - meta-surface - - src/cairo-meta-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 875e32178e5d990a09f3c41262d890888035f04f -Author: Adrian Johnson -Date: Wed Sep 5 22:51:13 2007 +0930 - - Eliminate unclipped CLEAR from meta-surface playback - - The optimization that avoids replaying commands prior to an unclipped - CLEAR operation now starts playback from the first command after the - CLEAR. This avoids the need to handle the unclipped CLEAR in the PDF - surface. - - src/cairo-meta-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit d24f019101dd014983aeb0bf186fe2011694e2ed -Author: Adrian Johnson -Date: Wed Sep 5 22:26:16 2007 +0930 - - Add support for PDF meta-surface patterns - - boilerplate/cairo-boilerplate.c | 11 +-- - src/cairo-analysis-surface.c | 66 +++++++++ - src/cairo-meta-surface-private.h | 4 + - src/cairo-meta-surface.c | 43 +++++- - src/cairo-pdf-surface.c | 282 ++++++++++++++++++++++++++++---------- - src/cairo-types-private.h | 3 +- - 6 files changed, 317 insertions(+), 92 deletions(-) - -commit b85032584b32af968dc8d8a0fcfc9f3e1d2770a0 -Author: Behdad Esfahbod -Date: Wed Sep 5 00:26:56 2007 -0400 - - [configure.in] Fix non-pkgconfig Xrender detection path (#4724) - - configure.in | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 1d788da5175dac34ed0298204753bf1b40dfc2b0 -Merge: 49ae376... e1819a2... -Author: Behdad Esfahbod -Date: Tue Sep 4 19:12:48 2007 -0400 - - Merge branch 'no-xrender.h' into cairo - -commit e1819a24fb0196218c4045616c2ba458819b7d31 -Author: Behdad Esfahbod -Date: Tue Sep 4 19:12:14 2007 -0400 - - [cairo-xlib-xrender-private] Remove some protocol-specific macros - - src/cairo-xlib-xrender-private.h | 48 -------------------------------------- - 1 files changed, 0 insertions(+), 48 deletions(-) - -commit 5e09126ce13c72222719b73ed3a8f504cf352583 -Author: Behdad Esfahbod -Date: Tue Sep 4 18:40:54 2007 -0400 - - [cairo-xlib-xrender-private] Add copyright/license info for copied files - - src/cairo-xlib-xrender-private.h | 163 ++++++++++++++++++++++---------------- - 1 files changed, 95 insertions(+), 68 deletions(-) - -commit 49ae376840a5851bf4cc281a0562acdfe03337df -Author: Carl Worth -Date: Tue Sep 4 11:35:40 2007 -0700 - - Fix error in description of cairo version numbers - - And eliminate a bit of redundant text. - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit b60c0a672f1711c20f898ac76c15b6b65a63d46e -Author: Chris Wilson -Date: Mon Sep 3 14:33:11 2007 +0100 - - [cairo-boilerplate] Introduce CAIRO_TEST_TARGET_EXCLUDE. - - As opposed to the CAIRO_TEST_TARGET env var which lists the exact - targets to test, CAIRO_TEST_TARGET_EXCLUDE instead supplies a list of - targets to filter from the testing set. This is useful under - circumstances where the build environment prevents testing of a target, - for example no DirectFB support or the glitz library is broken, but where - you still want to perform the minimal check that the code compiles. - - boilerplate/cairo-boilerplate.c | 39 ++++++++++++++++++++++++++++++++++++++- - 1 files changed, 38 insertions(+), 1 deletions(-) - -commit 740fed62d236224fdfbfccf8c49a199851189107 -Author: Behdad Esfahbod -Date: Fri Aug 31 20:52:43 2007 -0400 - - [xlib] Make it compile without Xrender available at compile time (#12210) - - src/Makefile.am | 3 +- - src/cairo-xlib-display.c | 1 - - src/cairo-xlib-private.h | 10 +- - src/cairo-xlib-screen.c | 2 - - src/cairo-xlib-surface.c | 7 +- - src/cairo-xlib-xrender-private.h | 1102 ++++++++++++++++++++++++++++++++++++++ - 6 files changed, 1110 insertions(+), 15 deletions(-) - -commit c8ed3e1827dd1e6e85f2a40de67c4013432ba3bf -Author: Jody Goldberg -Date: Fri Aug 31 17:00:36 2007 -0400 - - [PDF] The symbol 'GROUP' is already used on some win32 systems; add a prefix - - src/cairo-pdf-surface.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit c14cf02f61105b755b380bd0a5d5b9e83a97d2c9 -Author: Chris Wilson -Date: Fri Aug 31 17:20:54 2007 +0100 - - [cairo-surface] Add a comment about why the glyph array is not const. - - As penance for attempting to make the glyph array constant, add a - comment block to explain that the backends rely on being able to modify - the array. - - src/cairo-surface.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit e8e3bfc1308aa30ea08ec530b6a5ddf532fd3088 -Author: Chris Wilson -Date: Fri Aug 31 16:53:21 2007 +0100 - - Revert "[cairo-gstate] Avoid copying untransformed glyphs." - - This reverts commit 919bea6dbb32746f11781cd3a94eb44f5c4a32e6. - - Sadly as Behdad points out some backends do modify the glyph array and, - for example cairo-xlib-surface, hide this from the compiler with some - evil casts. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-directfb-surface.c | 2 +- - src/cairo-glitz-surface.c | 2 +- - src/cairo-gstate.c | 41 ++++++++------------------------- - src/cairo-meta-surface.c | 2 +- - src/cairo-paginated-surface.c | 2 +- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-quartz-surface.c | 2 +- - src/cairo-scaled-font.c | 2 +- - src/cairo-surface-fallback-private.h | 2 +- - src/cairo-surface-fallback.c | 4 +- - src/cairo-surface.c | 4 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 2 +- - src/cairo-xcb-surface.c | 20 ++++++++-------- - src/cairo-xlib-surface.c | 4 +- - src/cairoint.h | 12 +++++----- - src/test-meta-surface.c | 2 +- - src/test-paginated-surface.c | 2 +- - 21 files changed, 47 insertions(+), 68 deletions(-) - -commit 919bea6dbb32746f11781cd3a94eb44f5c4a32e6 -Author: Chris Wilson -Date: Fri Aug 31 11:24:06 2007 +0100 - - [cairo-gstate] Avoid copying untransformed glyphs. - - Skip the memory duplication of the incoming glyphs if we do not need - to transform them into the backend coordinate system. - - As a consequence we need to constify the glyphs passed to the backend - functions. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-directfb-surface.c | 2 +- - src/cairo-glitz-surface.c | 2 +- - src/cairo-gstate.c | 41 +++++++++++++++++++++++++-------- - src/cairo-meta-surface.c | 2 +- - src/cairo-paginated-surface.c | 2 +- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-quartz-surface.c | 2 +- - src/cairo-scaled-font.c | 2 +- - src/cairo-surface-fallback-private.h | 2 +- - src/cairo-surface-fallback.c | 4 +- - src/cairo-surface.c | 4 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 2 +- - src/cairo-xcb-surface.c | 20 ++++++++-------- - src/cairo-xlib-surface.c | 4 +- - src/cairoint.h | 12 +++++----- - src/test-meta-surface.c | 2 +- - src/test-paginated-surface.c | 2 +- - 21 files changed, 68 insertions(+), 47 deletions(-) - -commit 62377cbac17779fd51ec108e9704be8d3eed4935 -Author: Behdad Esfahbod -Date: Thu Aug 30 19:45:44 2007 -0400 - - [cairo-path-fixed] Remove leftover typedef keyword - - Oops! - - src/cairo-path-fixed-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit dd406b1ffa411b100950c0156d842e3022e4029d -Author: Behdad Esfahbod -Date: Thu Aug 30 18:45:26 2007 -0400 - - [cairo-path-fixed] typedef char cairo_path_fixed_op_t - - So it consumes one byte only, instead of the previous enum with - the __attribute__((packed)) that didn't do anything on non-gcc systems. - - src/cairo-path-fixed-private.h | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit e7324454a06e1f090d4e654c9cdcb774f9fb39ab -Author: Carl Worth -Date: Wed Aug 29 15:26:41 2007 -0700 - - Disable radial-gradient and unbounded-operator tests for pdf - - These are failing due to (already reported) poppler bugs. - - There were also problems with the gradients in the PDF - files previously, but these have recently been fixed. - - boilerplate/cairo-boilerplate-pdf.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit f72078fb7660b3c8a369e7bca19628416176a55e -Author: Adrian Johnson -Date: Wed Aug 29 20:18:09 2007 +0930 - - Fix unbounded operator bug in analysis surface - - src/cairo-analysis-surface.c | 117 +++++++++++++++++++++++------------------- - 1 files changed, 65 insertions(+), 52 deletions(-) - -commit 3216275fd9a9cd8d51b1c3a8671393912d50d899 -Author: Adrian Johnson -Date: Tue Aug 28 23:40:18 2007 +0930 - - Fix PDF gradients bug - - The PDF surface was adding extra stops at the 0.0 and 1.0 offset when - there was not already stops at these offsets. This has been replaced - with code to move the coordinates of the linear gradient line in to - the position of the first and last offset. - - src/cairo-pdf-surface.c | 63 ++++++++++++++++++++++++++++++---------------- - 1 files changed, 41 insertions(+), 22 deletions(-) - -commit bdc70d1fc2a31aa829571244c54f98210e97a2cf -Author: Vladimir Vukicevic -Date: Wed Aug 29 12:52:00 2007 -0700 - - [win32] call scaled_font_fini in create before returning NULL - - src/cairo-win32-font.c | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit 114b07881e8b09f97394dd4fe8f2900ee9f4c348 -Author: Behdad Esfahbod -Date: Wed Aug 29 12:18:16 2007 -0400 - - [configure.in] Make PS backend require zlib too (#12210) - - The PS backend uses zlib these days. Make it depend on zlib being available - like PDF has been doing. - - configure.in | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 7f726e57546dba4cdd96086515a372d18c1ee2a9 -Author: Behdad Esfahbod -Date: Wed Aug 29 12:15:36 2007 -0400 - - [configure.in] Document version scheme - - configure.in | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 93aee43690c329f43be9e7b840851267ceb17956 -Author: Vladimir Vukicevic -Date: Tue Aug 28 16:47:24 2007 -0700 - - Fix previous create_similar fallback patch - - We can't use composite, as some backends don't implement it. - Use paint() instead. - - src/cairo-pattern.c | 32 ----------------------- - src/cairo-surface-fallback.c | 28 +++++++++++--------- - src/cairo-surface.c | 57 ++++++++++++++++++++++-------------------- - 3 files changed, 46 insertions(+), 71 deletions(-) - -commit 6525d4debb6df67126b04609bb04d23d9c9bd7a6 -Author: Vladimir Vukicevic -Date: Tue Aug 28 10:47:52 2007 -0700 - - [win32] call free() and not scaled_font_destroy() if scaled init fails - - If scaled_font_destroy() is called, a deadlock can result; there's no - reason to call destroy since the initialization failed (and, indeed, - it might not be valid to do so anyway). - - src/cairo-win32-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ae19b1c9911f95f64657f6ddaa0c924ca7a34b88 -Author: Vladimir Vukicevic -Date: Tue Aug 28 10:40:33 2007 -0700 - - [win32] Add cairo_win32_font_face_create_for_logfontw_hfont - - Patch from: Robert O'Callahan - - Add cairo_win32_font_face_create_for_logfontw_hfont, allow win32 - scaled_fonts to rescale themselves properly to the required CTM and - only use the font_face's hfont if we're sure it's appropriate. - - src/cairo-win32-font.c | 107 ++++++++++++++++++++++++++++++++++++++---------- - src/cairo-win32.h | 3 + - 2 files changed, 88 insertions(+), 22 deletions(-) - -commit 69dae7ee4ace8a92226140ce5ccb690e7f62e35c -Author: Vladimir Vukicevic -Date: Mon Aug 27 16:30:52 2007 -0700 - - Implement fallback for clone_similar - - src/cairo-surface-fallback-private.h | 10 ++++++++ - src/cairo-surface-fallback.c | 41 ++++++++++++++++++++++++++++++++++ - src/cairo-surface.c | 6 ++++- - 3 files changed, 56 insertions(+), 1 deletions(-) - -commit 19fa097f515e72c195d10ddd64920ec71fa903ec -Author: Vladimir Vukicevic -Date: Mon Aug 27 15:29:24 2007 -0700 - - [win32] Update win32 Makefiles - - Happy building with msys, one location for CFLAGS/etc changes (toplevel), - new pdiff makefile. - - Makefile.win32 | 45 ++++++++++++++++++++++++++++++++++++++----- - boilerplate/Makefile.win32 | 13 ++++++----- - src/Makefile.win32 | 18 +++++----------- - test/Makefile.win32 | 18 ++++++++++++---- - test/pdiff/Makefile.win32 | 18 +++++++++++++++++ - 5 files changed, 83 insertions(+), 29 deletions(-) - -commit f4a8633fce5262c09b323eef212fd6efe57d8f10 -Author: Vladimir Vukicevic -Date: Mon Aug 27 14:26:19 2007 -0700 - - [win32] check correct surface for BitBlt support in get_subimage - - src/cairo-win32-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 9aad6efd2b2ee14b0a8960a8e4de91b330ad0c4c -Author: Vladimir Vukicevic -Date: Mon Aug 27 14:17:50 2007 -0700 - - Fix image_extra arg in call to _cairo_release_source_image - - src/cairo-surface-fallback.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7ccae2de6d859fcac93cedbd3ecd1121e0d0a72b -Author: Behdad Esfahbod -Date: Tue Aug 28 13:45:02 2007 -0400 - - [perf] Make cairo-perf-diff build cairo-perf-diff-files - - perf/cairo-perf-diff | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 766346aa5cffb699206cc17114221ba7a0323565 -Author: Adrian Johnson -Date: Tue Aug 28 20:35:49 2007 +0930 - - PDF: Remove unused code - - src/cairo-pdf-surface-private.h | 1 - - src/cairo-pdf-surface.c | 18 ------------------ - 2 files changed, 0 insertions(+), 19 deletions(-) - -commit ad43b7fe6bba3ba597b28b6f6668ee98cdc04a88 -Author: Adrian Johnson -Date: Tue Aug 28 20:35:23 2007 +0930 - - PDF: Clean up comments - - src/cairo-pdf-surface.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit a60beb2eef46b03bcb81f5204dcde49cbc090928 -Author: Adrian Johnson -Date: Tue Aug 28 20:34:55 2007 +0930 - - Fix PDF regression with multipage documents - - src/cairo-pdf-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 1a6b62e5995aac27527c37fd5cb6ec5e36a3f890 -Author: Carl Worth -Date: Mon Aug 27 14:45:51 2007 -0700 - - Disable 7 cairo-pdf tests due to poppler knockout-group bug - - The following 7 tests currently fail with poppler due to: - - Poppler does not correctly handle knockout groups - https://bugs.freedesktop.org/show_bug.cgi?id=12185 - - and we've verified with acroread that the cairo-pdf output - does render as intended there. The disabled tests are - clip-operator, operator-clear, operator-source, over-above-source, - over-around-source, over-below-source, and over-between-source. - - boilerplate/cairo-boilerplate-pdf.c | 25 ++++++++++++++++++------- - 1 files changed, 18 insertions(+), 7 deletions(-) - -commit 1cdd11873b18ec55521ffd744ad12c619cf9b227 -Author: Adrian Johnson -Date: Sat Aug 25 06:44:08 2007 +0930 - - Add finer-grained fallback support to the PDF surface - - The stream handling has been changed to support writing the content to - one or more group objects. Each page has a top level knockout - group. The first operation in the knockout group paints another group - containing the content. Fallback images are painted from the knockout - group. This ensures that fallback images do not composite with any - content under the image. - - src/cairo-paginated-surface.c | 6 +- - src/cairo-pdf-surface-private.h | 55 ++- - src/cairo-pdf-surface.c | 1406 ++++++++++++++++++++++++++------------- - 3 files changed, 982 insertions(+), 485 deletions(-) - -commit 1e8446609b01a3a60c3cc5b69d95d26cc9df460b -Author: Carl Worth -Date: Mon Aug 27 14:02:55 2007 -0700 - - Add explanation of pdf_ignored_tests with links to upstream poppler bug reports - - boilerplate/cairo-boilerplate-pdf.c | 29 +++++++++++++++++++++++++++++ - 1 files changed, 29 insertions(+), 0 deletions(-) - -commit 463493af73a644c7031df0e396c722cf2cb227b1 -Author: Carl Worth -Date: Mon Aug 27 10:39:14 2007 -0700 - - Remove svg2pdf and pdf2svg programs from test directory - - These are useful programs, but they don't belong in test/. - They are never used in the test suite at all. Instead, these - should exist in some demo package, or as applications in their - own right. - - (The motivation for the removal is that someone just encountered - a build error with one of these. And I'm not interested in debugging - build errors for unused components.) - - test/.gitignore | 1 - - test/Makefile.am | 12 ------ - test/pdf2svg.c | 101 ------------------------------------------------------ - test/svg2pdf.c | 85 --------------------------------------------- - 4 files changed, 0 insertions(+), 199 deletions(-) - -commit 495c9d19bf27150783b563ed8a7a9b2e6e8c2115 -Author: Carl Worth -Date: Sat Aug 25 23:39:28 2007 -0700 - - One more PS-specific reference image (for over-between-source) - - A pixman bug had kept this from being correct earlier. It - works now as long as pixman includes the following fix: - - 8ff7213f39edc1b2b8b60d6b0cc5d5f14ca1928d - rasterize traps that extend outside of the image bounds correctly - - test/over-between-source-ps-argb32-ref.png | Bin 0 -> 678 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit a3c3fe2296a7e8f1fdffc9f922fb647237504818 -Author: Carl Worth -Date: Sat Aug 25 19:23:13 2007 -0700 - - Modify ps-specific reference images for ft-text-vertical tests - - I've been seeing failures with the PS backend for these tests - for a while. This is in spite of the face that we've had a PS- - specific reference image for each of these tests. I'm not sure - what the difference is between my current system and the - system used to generate the original ps-specific reference - images. - - One thing we definitely need to do is to bundle fonts with the - test suite to avoid problems like this. Another is to start - documenting the systems used to generate reference images. - I get very confused with ghostscript versioning, but I can - at least say that "gs --version" reports 8.15.3 here, (though - the package appears to have an 8.56 version). - - ...ft-text-vertical-layout-type1-ps-argb32-ref.png | Bin 1877 -> 1879 bytes - ...ft-text-vertical-layout-type3-ps-argb32-ref.png | Bin 1879 -> 1882 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 71cc245d5a99eb6593e104b5e6727a7db13a4503 -Author: Carl Worth -Date: Sat Aug 25 19:18:44 2007 -0700 - - Add PS-specific reference images for 4 tests - - The following 4 tests recently started drawing with native operations - in the place of image fallbacks, so we need ps-specific reference images - to account for minor rasterization differences: over-above-source, - over-around-source, over-below-source, and trap-clip. - - test/over-above-source-ps-argb32-ref.png | Bin 0 -> 636 bytes - test/over-around-source-ps-argb32-ref.png | Bin 0 -> 637 bytes - test/over-below-source-ps-argb32-ref.png | Bin 0 -> 503 bytes - test/trap-clip-ps-argb32-ref.png | Bin 0 -> 5810 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit ae185f803a95248bcb6a8232cabedbc992b66502 -Author: Carl Worth -Date: Sat Aug 25 18:57:46 2007 -0700 - - Add four new test to exercise interactions of native and fallback objects - - The new tests are: over-above-source, over-around-source, over-below-source, - and over-between-source - - test/.gitignore | 4 ++ - test/Makefile.am | 4 ++ - test/over-above-source-ref.png | Bin 0 -> 538 bytes - test/over-above-source-rgb24-ref.png | Bin 0 -> 461 bytes - test/over-above-source.c | 80 ++++++++++++++++++++++++++++ - test/over-around-source-ref.png | Bin 0 -> 614 bytes - test/over-around-source-rgb24-ref.png | Bin 0 -> 503 bytes - test/over-around-source.c | 91 ++++++++++++++++++++++++++++++++ - test/over-below-source-ref.png | Bin 0 -> 434 bytes - test/over-below-source-rgb24-ref.png | Bin 0 -> 392 bytes - test/over-below-source.c | 80 ++++++++++++++++++++++++++++ - test/over-between-source-ref.png | Bin 0 -> 575 bytes - test/over-between-source-rgb24-ref.png | Bin 0 -> 473 bytes - test/over-between-source.c | 91 ++++++++++++++++++++++++++++++++ - 14 files changed, 350 insertions(+), 0 deletions(-) - -commit 5929a1defbc9816a6faa6dca94ae6dc3a2dbf3df -Author: Emmanuel Pacaud -Date: Sat Aug 25 21:28:33 2007 +0200 - - [SVG] Suppress code duplication by using _cairo_svg_surface_emit_stroke_style - from _cairo_svg_surface_stroke. - - src/cairo-svg-surface.c | 65 ++-------------------------------------------- - 1 files changed, 3 insertions(+), 62 deletions(-) - -commit 726ed304018915815d232822cd9efb83ee1339bc -Author: Emmanuel Pacaud -Date: Sun Jul 29 16:46:21 2007 +0200 - - [SVG] Don't emit transform property when matrix is identity. - - src/cairo-svg-surface.c | 44 +++++++++++++++++++++++++------------------- - 1 files changed, 25 insertions(+), 19 deletions(-) - -commit 89881187f22b40b4afd15eed0b2c19edcba2ca09 -Author: Emmanuel Pacaud -Date: Sun Jul 29 13:33:50 2007 +0200 - - [SVG] Implement fill_stroke method. - - src/cairo-svg-surface.c | 132 ++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 124 insertions(+), 8 deletions(-) - -commit ac51fff0db73c5917a38af3f610d4751b8fec626 -Author: Emmanuel Pacaud -Date: Sat Aug 25 20:49:50 2007 +0200 - - Add a new fill_stroke surface backend method. - - This method is for use in vector backends, where fill immediatly followed by - stroke command with the same path can be emited in the same backend command. - This commit also factorize the detection of such cases in the meta surface - backend and automatically call the fill_stroke method on replay. - - src/cairo-meta-surface.c | 54 ++++++++++++++++++++++++++++++++++++----- - src/cairo-path-fixed.c | 27 +++++++++++++++++++++ - src/cairo-surface.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 36 ++++++++++++++++++++++++++++ - 4 files changed, 169 insertions(+), 7 deletions(-) - -commit 43d35e01106659ac689846a8d5875d235b0d3c9f -Author: Emmanuel Pacaud -Date: Sat Jul 28 17:37:24 2007 +0200 - - [SVG] fix modeline for vim. - - src/cairo-svg-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3ceaa6e74e4bd3f5935016c3639411b26d7f576f -Merge: e3b5a65... 24075f1... -Author: Carl Worth -Date: Fri Aug 24 08:03:44 2007 -0700 - - Merge branch 'cairo-origin' into cairo - -commit e3b5a650213b98c3514a850cdb86f1178fe06833 -Author: Carl Worth -Date: Fri Aug 24 08:03:03 2007 -0700 - - Remove build-breaking debugging helper. - - Sorry! Totally my fault on this one. - - src/cairoint.h | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 24075f1bddbda1d90dfd6f041b8d6bdaf9c786dc -Author: Chris Wilson -Date: Fri Aug 24 14:16:43 2007 +0100 - - [cairo-perf] Blacklist xlib-fallback. - - Do not try and create non-Render xlib surfaces as they explicitly do - not support performance testing. - - perf/cairo-perf.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 8894894d9d34d169efa39d6d86ebefcb2ba69fe1 -Author: Chris Wilson -Date: Fri Aug 24 13:40:26 2007 +0100 - - [cairo-boilerplate-xlib] Check that the surface will fit in the screen. - - Whilst testing the fallback surface, the resultant image was being - clipped to the screen size. Be conservative and refuse to create - windows (for CAIRO_CONTENT_COLOR surfaces) that are larger than the - screen. - - boilerplate/cairo-boilerplate-xlib.c | 25 +++++++++++++++++++++++++ - 1 files changed, 25 insertions(+), 0 deletions(-) - -commit a29544a0b6f150384fd652aad950d1cae9809c42 -Author: Chris Wilson -Date: Fri Aug 24 12:24:20 2007 +0100 - - [cairo-boilerplate-xlib] Clear Render data for the non-Render fallback. - - As well as marking the XRender extension unavailable in - _cairo_boiler_player_xlib_disable_render(), we need to clear any - XRender derived information stored during the surface creation. - - boilerplate/cairo-boilerplate-xlib.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 177a3b8a32f13ce92d45899367fb7758600f7b93 -Author: Carl Worth -Date: Thu Aug 23 16:13:04 2007 -0700 - - Remove include of cairoint.h from *-private.h header files. - - These were recently added, (as part of sparse integration?), but they - break boilerplate which reaches into at least cairo-types-private.h - and cairo-scaled-font-private.h. But boilerplate cannot see cairoint.h - or else it gets the internal sybol renaming, (with the INT_ prefix), - and then all the test suite tests refuse to link. - - If this change reverts some recently-added functionality, (or - cleanliness), then we'll just need to find some other way to add that - back again without the breakage. - - src/cairo-cache-private.h | 1 - - src/cairo-clip-private.h | 1 - - src/cairo-fixed-private.h | 1 - - src/cairo-ft-private.h | 1 - - src/cairo-gstate-private.h | 1 - - src/cairo-hash-private.h | 1 - - src/cairo-malloc-private.h | 1 - - src/cairo-mutex-private.h | 4 +++- - src/cairo-mutex-type-private.h | 4 +++- - src/cairo-os2-private.h | 3 +-- - src/cairo-output-stream-private.h | 1 - - src/cairo-paginated-surface-private.h | 2 +- - src/cairo-path-fixed-private.h | 2 -- - src/cairo-pdf-surface-private.h | 2 -- - src/cairo-private.h | 1 - - src/cairo-ps-surface-private.h | 2 -- - src/cairo-region-private.h | 2 -- - src/cairo-scaled-font-private.h | 2 +- - src/cairo-surface-private.h | 2 +- - src/cairo-svg-surface-private.h | 2 -- - src/cairo-type1-private.h | 2 -- - src/cairo-wideint-private.h | 2 -- - src/cairo-xlib-surface-private.h | 2 -- - src/cairoint.h | 2 ++ - 24 files changed, 12 insertions(+), 32 deletions(-) - -commit fa41ebfb7c074a6ffa6a8fe7c43207e594c6534c -Author: Behdad Esfahbod -Date: Thu Aug 23 13:55:19 2007 -0400 - - Fix header inclusion order - - Enough for now, until I figure out the right way to break cairoint.h. - - src/cairo-types-private.h | 105 +++++++++++++++++++++++++++------------------ - src/cairoint.h | 23 +--------- - 2 files changed, 64 insertions(+), 64 deletions(-) - -commit d66f1ee82a10de325ee4e7579bbbaa1d301292e4 -Author: Behdad Esfahbod -Date: Thu Aug 23 13:54:37 2007 -0400 - - [boilerplate] Build libcairoboilerplate.la in make check and make test - - boilerplate/Makefile.am | 2 ++ - boilerplate/cairo-boilerplate.c | 15 --------------- - 2 files changed, 2 insertions(+), 15 deletions(-) - -commit 5594f8b0356fc209749d01e2043559fccd3966d0 -Author: Behdad Esfahbod -Date: Thu Aug 23 00:38:00 2007 -0400 - - [Makefile.am] Run sparse and splint once per source file - - Also skip .h files for splint as it causes lots of unused-function warnings. - - src/Makefile.am | 13 +++++++++++-- - 1 files changed, 11 insertions(+), 2 deletions(-) - -commit 503ab85e44bfa02ef8391f7849826cbe07ff15d2 -Author: Chris Wilson -Date: Thu Aug 23 15:01:02 2007 +0100 - - Fix inadvertent executable mode flip. - - Clear the executable bit for cairo-scaled-font.c - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit 735757a17a7c72f8598c8958b600daad941a0431 -Author: Behdad Esfahbod -Date: Wed Aug 22 02:58:37 2007 -0400 - - [Makefile.am] Add target sparse to run sparse static source code analyzer - - There are still some bits not quite working. - - src/Makefile.am | 23 ++++++++++++++++++----- - src/cairo-cache-private.h | 1 + - src/cairo-clip-private.h | 1 + - src/cairo-fixed-private.h | 1 + - src/cairo-ft-private.h | 1 + - src/cairo-gstate-private.h | 1 + - src/cairo-hash-private.h | 1 + - src/cairo-malloc-private.h | 1 + - src/cairo-mutex-private.h | 4 +--- - src/cairo-mutex-type-private.h | 4 +--- - src/cairo-os2-private.h | 3 ++- - src/cairo-output-stream-private.h | 1 + - src/cairo-paginated-surface-private.h | 2 +- - src/cairo-path-fixed-private.h | 2 ++ - src/cairo-pdf-surface-private.h | 2 ++ - src/cairo-private.h | 1 + - src/cairo-ps-surface-private.h | 2 ++ - src/cairo-quartz-private.h | 2 +- - src/cairo-region-private.h | 2 ++ - src/cairo-scaled-font-private.h | 2 +- - src/cairo-surface-private.h | 2 +- - src/cairo-svg-surface-private.h | 2 ++ - src/cairo-type1-private.h | 2 ++ - src/cairo-types-private.h | 2 ++ - src/cairo-wideint-private.h | 2 ++ - src/cairo-xlib-surface-private.h | 2 ++ - src/cairoint.h | 12 ++++++------ - 27 files changed, 59 insertions(+), 22 deletions(-) - -commit bfdc3b6642a36a7728f82ae87de83244d86ba29e -Author: Behdad Esfahbod -Date: Wed Aug 22 01:16:50 2007 -0400 - - [Makefile.am] Move -DHAVE_CONFIG_H to the right place - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit af6a123e95b359234d70f7a766457ff3a427c3cc -Author: Behdad Esfahbod -Date: Wed Aug 22 01:09:21 2007 -0400 - - [Makefile.am] Inhibit unrecognized options to splint - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e9d709b5caf4bc3c48259d6b40e6b95f730aa348 -Author: Behdad Esfahbod -Date: Wed Aug 22 01:07:59 2007 -0400 - - [cairo-image-surface] Fix comment syntax - Found by splint. - - src/cairo-image-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit ef878345c87c57a79eda079fa5e765aba5ddf163 -Author: Behdad Esfahbod -Date: Wed Aug 22 01:07:38 2007 -0400 - - [Makefile.am] Add target splint to run splint static source code analyzer - - src/Makefile.am | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit f015091bb5361552eebfafc007bcf9e77ba5bfbf -Author: Behdad Esfahbod -Date: Wed Aug 22 01:03:50 2007 -0400 - - [Makefile.am] Use libcairo_la_CFLAGS instead of INCLUDES - for clarity. - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3e5859c58f8749eaae16149577d52399a2fcf952 -Author: Behdad Esfahbod -Date: Tue Aug 21 23:02:03 2007 -0400 - - [ROADMAP] Mark fine-grained fallbacks done - - ROADMAP | 7 +++++++ - TODO | 7 ------- - 2 files changed, 7 insertions(+), 7 deletions(-) - -commit 333b96f0e0a7d775b96014b91c6887cdcda3e93a -Author: Carl Worth -Date: Fri Aug 17 10:41:03 2007 -0700 - - Add support for image fallbacks for X servers with 555 visuals - - This fixes bugzilla #9993: - - Cairo fails with 555 X server visual - https://bugs.freedesktop.org/show_bug.cgi?id=9993 - - ROADMAP | 2 +- - src/cairo-image-surface.c | 14 ++++++++++++++ - 2 files changed, 15 insertions(+), 1 deletions(-) - -commit f00fb10f87d1341b91f025bb068d935355c68c70 -Author: Carl Worth -Date: Fri Aug 17 10:36:14 2007 -0700 - - Add support for image fallbacks for X servers with 565 visuals - - This fixes bugzilla #10461: - - Cairo doesn't support 565 xlib visual - https://bugs.freedesktop.org/show_bug.cgi?id=1046 - - ROADMAP | 2 +- - src/cairo-image-surface.c | 16 ++++++++++++++++ - 2 files changed, 17 insertions(+), 1 deletions(-) - -commit ddb78df4c92fc8e51ca18202b59bcef7d1e1d66d -Author: Carl Worth -Date: Fri Aug 17 10:33:25 2007 -0700 - - Restore the error message for unsupported X server visuals - - Apparently, our much-beloved error message, (just look at how many people - love to quote it in bugzilla entries), was removed during the switch to - the new pixman. It was replaced with an obscure failure of a nil surface - being returned, (leading to obscure failures or false "out of memory" - errors). - - So we're putting this back now, (even though we _really_ want to ensure - that this message never gets printed in practice). - - src/cairo-image-surface.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit 72fab3675c46a773dac315fffff72cd7f887f79f -Author: Carl Worth -Date: Fri Aug 17 10:29:37 2007 -0700 - - Use a pixman_format_code to describe the image surface used for xlib fallbacks - - Previously, the code was just using cairo_format_t which is much more limited - than the formats supported by pixman, (so many "odd" X server visuals would - just fall over). - - src/cairo-image-surface.c | 87 ++++++++++++++++++++++----------- - src/cairo-xlib-surface.c | 117 ++++---------------------------------------- - src/cairoint.h | 19 +++++++- - 3 files changed, 87 insertions(+), 136 deletions(-) - -commit a9662d0aaed8685292ffe13c458182046a644fa7 -Author: Carl Worth -Date: Fri Aug 17 08:15:50 2007 -0700 - - Eliminate fragile cairo_internal_format_t - - Instead we take advantage of the pixman_format_code_t - that now exists in the public interface of the new, external - pixman library. - - src/cairo-image-surface.c | 152 ++++++++++++++++++++++++++++++++------------- - src/cairo-pattern.c | 2 +- - src/cairoint.h | 44 +------------ - 3 files changed, 113 insertions(+), 85 deletions(-) - -commit 9f4e6436496fe561aa124bb2b89e1c6711684d98 -Author: Carl Worth -Date: Tue Aug 21 10:03:00 2007 -0700 - - Ensure the Render extension is initialized before calling XESetCloseDisplay - - This avoids a potential crash from the Render extension being cleaned - up during XCloseDisplay before the cairo CloseDisplay hook goes on to - call into XRenderFreePicture. - - src/cairo-xlib-display.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit d05593a5fb9fef586171cb9973a9942a105d50d7 -Author: Carl Worth -Date: Mon Aug 20 14:50:02 2007 -0700 - - Add a new xlib-fallback target to test xlib using image fallbacks instead of the Render extension - - boilerplate/cairo-boilerplate-xlib-private.h | 8 +++ - boilerplate/cairo-boilerplate-xlib.c | 72 ++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 9 +++ - test/fill-rule.c | 2 +- - 4 files changed, 90 insertions(+), 1 deletions(-) - -commit 590717f03b4a396600734c4dac1dd0a9f140283c -Author: Adrian Johnson -Date: Wed Aug 22 07:58:14 2007 +0930 - - PS: Remove debug info from PS output - - The debug code is now conditionally compiled. - - src/cairo-ps-surface.c | 22 ++++++++++++++++++++++ - 1 files changed, 22 insertions(+), 0 deletions(-) - -commit e66b2b68ab456d779524d9b4ab34acf5d38362b5 -Author: Carl Worth -Date: Tue Aug 21 14:52:54 2007 -0700 - - Use 8-bit math to flatten color when emitting a solid pattern to PostScript - - This isn't necessarily more correct than the old code using the doubles, - but it does result in bit-for-bit color equivalence when comparing the - results against the image backend. So that's both good consistency, and - more ease is using the test suite to verify things. - - src/cairo-ps-surface.c | 26 +++++++++++++++----------- - 1 files changed, 15 insertions(+), 11 deletions(-) - -commit bf92255edd20595a6eb220c6ee9d6aa40b244eef -Author: Adrian Johnson -Date: Tue Aug 21 22:27:57 2007 +0930 - - PS: Add finer-grained image fallback support - - The analysis surface now keeps track of two regions: supported - operations, and unsupported operations. If the target surface returns - CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY, the analysis surface will check - if any previous operation intersects with this operation. If there is - nothing previously drawn under the operation, the status is changed to - supported. - - The meta surface has two new functions: - _cairo_meta_surface_replay_region() - _cairo_meta_surface_replay_and_create_regions() - - During the analysis stage, the paginated surface replays the meta - surface using _cairo_meta_surface_replay_and_create_regions(). The - return status from each analyzed operation is saved in the meta - surface. The _cairo_meta_surface_replay_region() function allows only - operations from either the supported or unsupported region to be - replayed. This allows the paginated surface to replay only the - supported operations before emitting a fallback image for each - rectangle in the unsupported region. - - src/cairo-analysis-surface-private.h | 3 + - src/cairo-analysis-surface.c | 358 +++++++++++++++++++++++++++++----- - src/cairo-meta-surface-private.h | 34 +++- - src/cairo-meta-surface.c | 78 ++++++-- - src/cairo-paginated-surface.c | 131 ++++++++++--- - src/cairo-ps-surface.c | 93 ++++++---- - src/cairo-region-private.h | 4 + - src/cairo-region.c | 13 ++ - src/cairoint.h | 4 +- - 9 files changed, 585 insertions(+), 133 deletions(-) - -commit bf4bdbb6076dbe3b74534bc4308dbc9213bf628d -Author: Behdad Esfahbod -Date: Mon Aug 20 20:29:51 2007 -0400 - - [cairo-scaled-font] Document how glyph surfaces use device offsets - - src/cairo-scaled-font.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 106 insertions(+), 0 deletions(-) - -commit 31f5aafa36015ee6ea8ff769c2e1d5841f62642f -Author: Behdad Esfahbod -Date: Mon Feb 5 20:46:48 2007 -0500 - - Fix device_offset misuse in all glyph surface uses - - Seems like all over the code, we have been using negated device_offset - values for glyph surfaces. Here is all the math(!): - - A device_transform converts from device space (a conceptual space) to - surface space. For simple cases of translation only, it's called a - device_offset and is public API (cairo_surface_[gs]et_device_offset). - A possibly better name for those functions could have been - cairo_surface_[gs]et_origing. So, that's what they do: they set where - the device-space origin (0,0) is in the surface. If the origin is inside - the surface, device_offset values are positive. It may look like this: - - Device space: - (-x,-y) <-- negative numbers - +----------------+ - | . | - | . | - |......(0,0) <---|-- device-space origin - | | - | | - +----------------+ - (width-x,height-y) - - Surface space: - (0,0) <-- surface-space origin - +---------------+ - | . | - | . | - |......(x,y) <--|-- device_offset - | | - | | - +---------------+ - (width,height) - - In other words: device_offset is the coordinates of the device-space - origin relative to the top-left of the surface. - - We use device offsets in a couple of places: - - - Public API: To let toolkits like Gtk+ give user a surface that - only represents part of the final destination (say, the expose - area), but has the same device space as the destination. In these - cases device_offset is typically negative. Example: - - application window - +---------------+ - | . | - | (x,y). | - |......+---+ | - | | | <--|-- expose area - | +---+ | - +---------------+ - - In this case, the user of cairo API can set the device_space on - the expose area to (-x,-y) to move the device space origin to that - of the application window, such that drawing in the expose area - surface and painting it in the application window has the same - effect as drawing in the application window directly. Gtk+ has - been using this feature. - - - Glyph surfaces: In most font rendering systems, glyph surfaces - have an origin at (0,0) and a bounding box that is typically - represented as (x_bearing,y_bearing,width,height). Depending on - which way y progresses in the system, y_bearing may typically be - negative (for systems similar to cairo, with origin at top left), - or be positive (in systems like PDF with origin at bottom left). - No matter which is the case, it is important to note that - (x_bearing,y_bearing) is the coordinates of top-left of the glyph - relative to the glyph origin. That is, for example: - - Scaled-glyph space: - - (x_bearing,y_bearing) <-- negative numbers - +----------------+ - | . | - | . | - |......(0,0) <---|-- glyph origin - | | - | | - +----------------+ - (width+x_bearing,height+y_bearing) - - Note the similarity of the origin to the device space. That is - exactly how we use the device_offset to represent scaled glyphs: - to use the device-space origin as the glyph origin. - - Now compare the scaled-glyph space to device-space and surface-space - and convince yourself that: - - (x_bearing,y_bearing) = (-x,-y) = - device_offset - - That's right. If you are not convinced yet, contrast the definition - of the two: - - "(x_bearing,y_bearing) is the coordinates of top-left of the - glyph relative to the glyph origin." - - "In other words: device_offset is the coordinates of the - device-space origin relative to the top-left of the surface." - - and note that glyph origin = device-space origin. - - So, that was the bug. Fixing it removed lots of wonders and magic - negation signs. - - The way I discovered the bug was that in the user-font API, to make - rendering the glyph from meta-surface to an image-surface work I had - to do: - - cairo_surface_set_device_offset (surface, -x_bearing, -y_bearing); - _cairo_meta_surface_replay (meta_surface, surface); - cairo_surface_set_device_offset (surface, x_bearing, y_bearing); - - This suggested that the use of device_offset for glyph origin is - different from its use for rendering with meta-surface. This reminded - me of the large comment in the xlib backend blaming XRender for having - weird glyph space, and of a similar problem I had in the PS backend - for bitmap glyph positioning (see d47388ad759b0a1a0869655a87d9b5eb6ae2445d) - - ...those are all fixed now. - - src/cairo-atsui-font.c | 4 +- - src/cairo-directfb-surface.c | 4 +- - src/cairo-ft-font.c | 46 +++++++++++++++++++++-------------------- - src/cairo-glitz-surface.c | 8 +++--- - src/cairo-ps-surface.c | 12 +++++----- - src/cairo-scaled-font.c | 8 ++---- - src/cairo-svg-surface.c | 2 +- - src/cairo-xcb-surface.c | 40 +---------------------------------- - src/cairo-xlib-surface.c | 40 +---------------------------------- - 9 files changed, 46 insertions(+), 118 deletions(-) - -commit d55da1aa621d76b1411300932be5d37883b25dfa -Author: Behdad Esfahbod -Date: Wed Feb 7 00:20:29 2007 -0800 - - [scaled-font] Really ignore ctm translation - - Previously we were ignoring ctm translation in scaled fonts when hashing, but - still storing it into the scaled font. Now we zero the translation components - when storing. - - src/cairo-scaled-font.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit a394e5870e2c5ccedfd9d116b4a42c58b459334d -Author: Behdad Esfahbod -Date: Mon Feb 5 16:53:18 2007 -0500 - - [cairo-image-surface] Simplify device-offset usage - - src/cairo-image-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 61f736d0d1166b050ee948ce2738feab0327ece9 -Author: Behdad Esfahbod -Date: Mon Feb 5 15:51:30 2007 -0500 - - [cairo-paginated-surface] Add XXX mark to integer width,height arguments - - src/cairo-paginated-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f97bb5613a7fb3d92f2d730460f9c721ee13a41a -Author: Vladimir Vukicevic -Date: Mon Aug 20 17:32:05 2007 -0700 - - Fix path_fixed_offset_and_scale to apply scale and offset in right order - - src/cairo-path-fixed.c | 24 +++++++++--------------- - 1 files changed, 9 insertions(+), 15 deletions(-) - -commit 51b6cca8de3181d7b42b612ff491451c765d5811 -Author: Chris Wilson -Date: Sat Aug 18 00:54:30 2007 +0100 - - [cairo-perf-diff] Remove reference to pixman. - - Remove the use of pixman as part of the perf id as pixman is no longer - an integral component of cairo. - - perf/cairo-perf-diff | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 39367b26120b6e1ad0f556911a49f28ef370115b -Author: Martin Ejdestig -Date: Fri Aug 17 02:28:35 2007 +0200 - - Plug possible leak of pixman_traps in _cairo_image_surface_composite_trapezoids. - - If width and height are 0 and pixman_traps is allocated on the heap, - it would leak. Fix by simply checking width and height prior to - allocating pixman_traps. - - src/cairo-image-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 507d7ee09951a35df8b80f0e1507ba17dbd9bfa9 -Author: Chris Wilson -Date: Wed Jun 27 12:34:35 2007 +0100 - - [cairo-xlib-surface] Avoid a malloc(0). - - Avoid a zero byte allocation (potentially returning NULL) for an array - of 0 trapezoids. - - src/cairo-xlib-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit 85d911d86c9f1dd55d79b7c429ad2b617ec345d1 -Author: Chris Wilson -Date: Wed Jun 27 08:05:35 2007 +0100 - - [cairo-image-surface] Avoid malloc(0) - - Special case width==0, height==0 to avoid allocating a 0 byte image. - - src/cairo-image-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 7332a5e9949ca19869b003fe5a0a777adac41307 -Author: Chris Wilson -Date: Wed Jun 27 11:32:50 2007 +0100 - - [boilerplate/xmalloc] Special case malloc(0) and friends. - - malloc(0) can return NULL so double check the requested size before - exiting with an out-of-memory error. - - boilerplate/xmalloc.c | 6 +++--- - src/cairo-image-surface.c | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 56e505298c0f5de360380ca7e968baa0e60ac828 -Author: Chris Wilson -Date: Wed Jun 27 23:01:44 2007 +0100 - - [cairo-truetype-subset] Avoid malloc(0). - - Avoid attempting to allocate a zero length subset as malloc(0) may return - NULL. - - src/cairo-truetype-subset.c | 15 +++++++++------ - 1 files changed, 9 insertions(+), 6 deletions(-) - -commit 7bd1d5ba3d081ae188fe7f8bc346071d0b8d2278 -Author: Chris Wilson -Date: Tue Jul 3 14:14:56 2007 +0100 - - [cairo-png] Protect against malloc(0). - - Avoid calling malloc(0) for an empty image. - - src/cairo-png.c | 21 ++++++++++++--------- - 1 files changed, 12 insertions(+), 9 deletions(-) - -commit 06134df0d0670a7d00d58ebd7a20ba7174f56d16 -Author: Chris Wilson -Date: Wed Jul 4 19:11:29 2007 +0100 - - [cairo-pdf-surface] Check for errors during compression. - - Check status return from zlib's compress(). - - src/cairo-pdf-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 76b871d710cd81bee5fe7c2f6175f8d678ebeea5 -Author: Chris Wilson -Date: Thu Aug 16 15:29:11 2007 +0100 - - [cairo-image-surface] Remove status return for hard-coded CAIRO_STATUS_SUCCESS. - - Remove the status return if the function can only return - CAIRO_STATUS_SUCCESS, and remove the then surplus conditionals. - - src/cairo-image-surface.c | 13 +++++-------- - 1 files changed, 5 insertions(+), 8 deletions(-) - -commit 4e39e30d83fc1866a44f0b746c406ee2efb3bf6a -Author: Chris Wilson -Date: Mon Jul 16 09:25:38 2007 +0100 - - [cairo-pen] Remove status from _cairo_pen_find_active_vertex_*() - - This pair of functions unconditionally return SUCCESS, so remove the - status return and supporting tests from their callers. - - src/cairo-path-stroke.c | 24 ++++++------------------ - src/cairo-pen.c | 16 +++++----------- - src/cairoint.h | 4 ++-- - 3 files changed, 13 insertions(+), 31 deletions(-) - -commit b72b06cc222d88015ce78a5cddf061e903d032b5 -Author: Chris Wilson -Date: Mon Jul 16 09:40:47 2007 +0100 - - [cairo-pen] Remove hard-coded CAIRO_STATUS_SUCCESS from _stroke_spline_half() - - Remove the status return and update callers as - _cairo_pen_stroke_spline_half() unconditionally returned SUCCESS. - - src/cairo-pen.c | 15 ++++----------- - 1 files changed, 4 insertions(+), 11 deletions(-) - -commit e24969a94ac5670a13c2737db435ac7b5bebb19c -Author: Chris Wilson -Date: Mon Jul 16 09:36:54 2007 +0100 - - [cairo-pdf-surface] cairo_pattern_set_matrix guarantees invertibility. - - Be consistent in asserting that the pattern matrix is inverted - successfully and remove a couple of redundant checks. - - src/cairo-pdf-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 50ebdda3a97334e5411749cd0c309843ba8cdf44 -Author: Chris Wilson -Date: Thu Jul 19 10:26:37 2007 +0100 - - [cairo-pattern] Assert that the pattern->matrix is invertible. - - We guarantee when setting the pattern->matrix that it is invertible, so - merely assert that it is so when we attempt to use its inverse. - - src/cairo-pattern.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 7d853bcabcc1c55b79a05280a0eb35828b93163d -Author: Chris Wilson -Date: Thu Aug 16 14:34:07 2007 +0100 - - [cairo-boilerplate-xlib] Check for NULL xrender_format before use. - - Testing for XRender support (xrender_format != NULL) after - dereferencing said format doesn't work as intended. - - boilerplate/cairo-boilerplate-xlib.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit bc635da45a32eb9b7aff6fa5f7f560ebf99092a8 -Author: Chris Wilson -Date: Thu Aug 16 12:21:49 2007 +0100 - - [cairo-ft-font] Decrement lock count on error. - - As noted in http://bugs.freedesktop.org/show_bug.cgi?id=12026 the error - path of _cairo_ft_unscaled_font_lock_face() failed to reset the - unscaled->lock_count before releasing the mutex and returning NULL. - - src/cairo-ft-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8881265cca73790a49068b3bab5362cb73f8deb6 -Author: Adrian Johnson -Date: Fri Aug 10 20:10:29 2007 +0930 - - PDF: Fix regression in pdf_surface_set_size() - - src/cairo-pdf-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4ca0ca153a847337452bbb237d42f6d7b0a163d0 -Author: Søren Sandmann Pedersen -Date: Mon Aug 6 19:24:31 2007 -0400 - - Bump pixman dependency to 0.9.4 - - Also print the download location if the library wasn't found. - - configure.in | 11 +++++++---- - src/cairo-region-private.h | 2 +- - src/cairoint.h | 2 +- - test/buffer-diff.c | 2 +- - 4 files changed, 10 insertions(+), 7 deletions(-) - -commit 13cae8b5e6d3fc93c4eb1853b91ba356b572b551 -Author: Carl Worth -Date: Mon Aug 6 11:06:47 2007 -0700 - - Ensure that a copied pattern gets its own user_data array - - This fixes the bug reported here: - - Segfault with cairo_pattern_set_user_data - https://bugs.freedesktop.org/show_bug.cgi?id=11855 - - src/cairo-pattern.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 027915717df6e203826d10da7bfdf8e26af13ee1 -Author: Nis Martensen -Date: Wed Jul 4 07:09:00 2007 -0700 - - Typo fixes in README files - - README | 4 ++-- - perf/README | 6 +++--- - test/README | 6 +++--- - 3 files changed, 8 insertions(+), 8 deletions(-) - -commit 72c1f5d802c32f97ae5c0cbf899dc3a12fc28222 -Author: Adrian Johnson -Date: Sun Aug 5 00:50:23 2007 +0930 - - PDF: Fix gradients regression - - src/cairo-pdf-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 9bcedd3d6f0de8c380e7ab4981d32377e3c5a778 -Author: Vladimir Vukicevic -Date: Fri Aug 3 14:18:40 2007 -0700 - - [win32] compilation fix for win32 - - src/cairo-win32-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit f52aa4c13e91339e575ca2c52c9e3a1f4d95b106 -Author: Adrian Johnson -Date: Thu Aug 2 21:25:46 2007 +0930 - - CFF Subsetting: fix integer encoding bug - - Bug report at https://bugzilla.mozilla.org/show_bug.cgi?id=368668 - - src/cairo-cff-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ef93f1897c0703c3284c85206cb1c70e23ff3fe5 -Author: Behdad Esfahbod -Date: Tue Jul 31 17:52:13 2007 -0400 - - [configure.in] Cleanup after pixman removal and correctly check for pixman - - configure.in | 24 ++++-------------------- - 1 files changed, 4 insertions(+), 20 deletions(-) - -commit 4cce3135e0e50d5edb3a7cc54cf413fc2242a521 -Author: Behdad Esfahbod -Date: Thu Jul 26 18:04:39 2007 -0400 - - Clear executable flag off .c file - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit 5b0e2e3e2b6823580bbc40dd1be415b7461bcbf0 -Author: Chris Wilson -Date: Mon Jul 23 13:05:13 2007 +0100 - - [cairo-glitz-surface] Compile fix. - - Minor corrections to reflect updated structures. - - src/cairo-glitz-surface.c | 19 +++++++++---------- - 1 files changed, 9 insertions(+), 10 deletions(-) - -commit c0a7d33ac6c81dd74ee2a9daaa3749a346ef4897 -Author: Vladimir Vukicevic -Date: Wed Jul 4 13:54:03 2007 +0200 - - [fixpt] Fixup malloc usage to use _cairo_malloc_* - - Fix some introduced mallocs as a result of the fixed point patches. - - src/cairo-clip.c | 2 +- - src/cairo-glitz-surface.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-xcb-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 4 ++-- - 6 files changed, 8 insertions(+), 8 deletions(-) - -commit b719592428907d2010645303fb65d38dcb8b30c0 -Author: Vladimir Vukicevic -Date: Wed Jul 4 12:16:27 2007 +0200 - - [fixpt] Fix up compilation post pixman merge - - src/cairo-pattern.c | 1 - - src/cairo-region-private.h | 2 +- - src/cairo-region.c | 9 +++++---- - src/cairo-svg-surface.c | 6 +++--- - 4 files changed, 9 insertions(+), 9 deletions(-) - -commit 866b485314bfd5d8bbf865d19f6a589d08292e2a -Author: Vladimir Vukicevic -Date: Mon Jun 18 18:38:54 2007 -0700 - - [fixpt] Let the compiler calculate the magic double-to-fixed value - - src/cairo-fixed-private.h | 14 ++------------ - 1 files changed, 2 insertions(+), 12 deletions(-) - -commit 0abe5324a5b03149630a5b6496c980f83be4fd75 -Author: Vladimir Vukicevic -Date: Mon Jun 18 18:33:29 2007 -0700 - - [fixpt] Create cairo_region wrapper around pixman_region16_t - - Insulate region-using code from implementation details; - at some point we'll want to switch to using 32-bit regions. - - src/cairo-analysis-surface-private.h | 4 +- - src/cairo-analysis-surface.c | 4 +- - src/cairo-clip-private.h | 4 +- - src/cairo-clip.c | 182 +++++++++++++++++---------------- - src/cairo-directfb-surface.c | 25 +++-- - src/cairo-glitz-surface.c | 65 ++++++++++-- - src/cairo-image-surface.c | 4 +- - src/cairo-pattern.c | 16 ++-- - src/cairo-region-private.h | 105 +++++++++++++++++++ - src/cairo-region.c | 173 ++++++++++++++++++++++++++++++-- - src/cairo-surface-fallback.c | 29 +++--- - src/cairo-surface.c | 63 +++++++------ - src/cairo-traps.c | 50 +++++----- - src/cairo-win32-surface.c | 28 ++++-- - src/cairo-xcb-surface.c | 26 +++-- - src/cairo-xlib-surface.c | 28 +++--- - src/cairoint.h | 38 ++++++-- - src/test-paginated-surface.c | 2 +- - 18 files changed, 598 insertions(+), 248 deletions(-) - -commit dc035fecda0070e18a68e06f567f268fc39483f1 -Author: Vladimir Vukicevic -Date: Mon Jun 18 17:34:36 2007 -0700 - - [fixpt] Fix xcb surface to handle conversion to 16.16 - - src/cairo-xcb-surface.c | 87 +++++++++++++++++++++++++++++++++++----------- - 1 files changed, 66 insertions(+), 21 deletions(-) - -commit 58d9664702308639ead888c7167e71ca605a8fe3 -Author: Vladimir Vukicevic -Date: Mon Jun 18 17:33:44 2007 -0700 - - [fixpt] Fix xlib surface to handle conversion to 16.16 - - src/cairo-xlib-surface.c | 87 +++++++++++++++++++++++++++++++++++----------- - 1 files changed, 66 insertions(+), 21 deletions(-) - -commit aaf94ef6c4656d7e836e52c2a71db214a1c01b57 -Author: Vladimir Vukicevic -Date: Mon Jun 18 17:29:04 2007 -0700 - - [fixpt] remove dependency on some pixman types - - Introduce cairo_gradient_stop_t, and remove pixman dependency - for core pattern types. Perform conversion from cairo types - to pixman types as necessary in fallback code. - - src/cairo-matrix.c | 12 +++--- - src/cairo-pattern.c | 97 ++++++++++++++++++++++++++++++----------- - src/cairo-pdf-surface.c | 8 ++-- - src/cairo-scaled-font.c | 6 +- - src/cairo-surface-fallback.c | 10 +++- - src/cairo-svg-surface.c | 87 +++++++++++++++++++------------------ - src/cairoint.h | 27 ++++++------ - 7 files changed, 150 insertions(+), 97 deletions(-) - -commit e5fdacae1c5b7005b95db8f9065cce51ef19bf20 -Author: Vladimir Vukicevic -Date: Mon Jun 18 17:05:34 2007 -0700 - - [fixpt] fix up image surface to translate to 16.16 for pixman - - src/cairo-image-surface.c | 76 ++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 65 insertions(+), 11 deletions(-) - -commit be3516335cda8587d9baf5bd0097d3ce1cb64ab1 -Author: Vladimir Vukicevic -Date: Mon Jun 18 16:56:24 2007 -0700 - - [fixpt] Replace cairo_rectangle_int16_t with cairo_rectangle_int_t - - Mostly s/cairo_rectangle_int16_t/cairo_rectangle_int_t/, - as well as definitions to pick cairo_rectangle_int_t. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-clip-private.h | 6 ++-- - src/cairo-clip.c | 12 ++++---- - src/cairo-directfb-surface.c | 16 +++++----- - src/cairo-glitz-surface.c | 20 ++++++------ - src/cairo-gstate.c | 2 +- - src/cairo-image-surface.c | 12 ++++---- - src/cairo-meta-surface.c | 2 +- - src/cairo-os2-surface.c | 10 +++--- - src/cairo-paginated-surface.c | 6 ++-- - src/cairo-pattern.c | 12 ++++---- - src/cairo-pdf-surface.c | 4 +- - src/cairo-ps-surface.c | 4 +- - src/cairo-quartz-private.h | 2 +- - src/cairo-quartz-surface.c | 24 ++++++++-------- - src/cairo-rectangle.c | 10 +++--- - src/cairo-region.c | 2 +- - src/cairo-scaled-font.c | 2 +- - src/cairo-surface-fallback-private.h | 2 +- - src/cairo-surface-fallback.c | 52 +++++++++++++++++----------------- - src/cairo-surface.c | 40 +++++++++++++------------- - src/cairo-svg-surface.c | 4 +- - src/cairo-win32-private.h | 4 +- - src/cairo-win32-surface.c | 16 +++++----- - src/cairo-xcb-surface.c | 18 ++++++------ - src/cairo-xlib-surface.c | 18 ++++++------ - src/cairo.c | 2 +- - src/cairoint.h | 48 +++++++++++++++++++------------ - src/test-fallback-surface.c | 12 ++++---- - src/test-meta-surface.c | 4 +- - src/test-paginated-surface.c | 2 +- - 31 files changed, 191 insertions(+), 179 deletions(-) - -commit 9c38aa3b96a1e926ef422837fc3102e902a796fc -Author: Vladimir Vukicevic -Date: Mon Jun 18 16:30:09 2007 -0700 - - [fixpt] Use _cairo_fixed_mul insted of manual multiplication - - src/cairo-fixed-private.h | 1 - - src/cairo-path-fixed.c | 11 +++-------- - src/cairo-traps.c | 26 +++++++++++--------------- - 3 files changed, 14 insertions(+), 24 deletions(-) - -commit 0048a26a4477d3acb5dd0231756cfaae92d240a9 -Author: Vladimir Vukicevic -Date: Mon Jun 18 16:26:14 2007 -0700 - - [fixpt] Make fixed point methods static inline and generic - - Move the fixed point methods to static inline versions in - cairo-fixed-private.h, and don't hardcode fixed to be 16.16. - - src/cairo-fixed-private.h | 256 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-fixed.c | 100 +----------------- - src/cairo-quartz-surface.c | 2 +- - src/cairoint.h | 37 +------ - 4 files changed, 259 insertions(+), 136 deletions(-) - -commit 76c32f899af63649bf911533a2ed6b42e617da41 -Author: Vladimir Vukicevic -Date: Mon Jul 2 15:09:21 2007 +0200 - - [fixpt] Update quartz surface for new types - - src/cairo-quartz-surface.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 290daee4ce26a931a15425f380ed4f495a4bd3c1 -Author: Søren Sandmann -Date: Tue Jul 10 10:31:23 2007 -0400 - - Add note about pixman dependency in README - - README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1fac791537d2333b084e3fbabc1a6a890433e9ed -Author: Jinghua Luo -Date: Tue Jul 10 15:09:04 2007 +0800 - - [Glitz] fix compilation. - - Separating pixman broke the compilation if glitz backend is enabled, - fix it and all compiler warning as well. - - src/cairo-glitz-surface.c | 104 +++++++++++++++++++++++++++----------------- - 1 files changed, 64 insertions(+), 40 deletions(-) - -commit 5819be398c4eada9a6cfc8e37a532991751b4a51 -Author: Chris Wilson -Date: Thu Jul 5 18:59:31 2007 +0100 - - [check-plt] Ignore entries for pixman. - - pixman is now an external library, so we now expect PLT entries. - - src/check-plt.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 35ef8419a981929b65157407485ec001b69b3391 -Author: Chris Wilson -Date: Thu Jul 5 18:52:21 2007 +0100 - - [cairo-matrix] Check determinant for invalid numbers. - - By checking matrices for invalid determinants, we can prevent the - setting and application of invalid matrices. - - The trick used here is that NaNs, as specified by IEE754, always - return FALSE in comparisons. Since we know that the square of the - determinant must be positive definite, then if the comparison is - FALSE the computation must have resulted in a NaN. - - src/cairo-matrix.c | 4 ++ - test/invalid-matrix.c | 94 ++++++++++++++++++++++++++++++++++++++++++------ - 2 files changed, 86 insertions(+), 12 deletions(-) - -commit 7eaba5d5fbf83f66b39db42a89db3e7a892c2ea0 -Author: Chris Wilson -Date: Thu Jul 5 15:24:11 2007 +0100 - - [configure] Only run PostScript tests if we have ghostscript. - - During configure check for the ghostscript command line tool (gs) before - enabling the PostScript surface tests for make check. - - boilerplate/cairo-boilerplate.c | 2 +- - configure.in | 14 ++++++++++++++ - 2 files changed, 15 insertions(+), 1 deletions(-) - -commit ef967be630dd8d0bf81ad5889d6264bebe7631d4 -Merge: 0c42dbb... 5c7d2d1... -Author: Søren Sandmann Pedersen -Date: Mon Jul 2 08:33:29 2007 -0700 - - Merge branch 'master' of git+ssh://sandmann@git.freedesktop.org/git/cairo - - Conflicts: - - pixman/src/fbcompose.c - pixman/src/icimage.c - pixman/src/pixmanint.h - pixman/src/pixregionint.h - src/cairo-clip.c - -commit 5c7d2d14d78e4dfb1ef6d2c40f0910f177e07360 -Author: Vladimir Vukicevic -Date: Tue Jun 19 13:15:21 2007 -0700 - - [fix] Avoid int overflow when allocating large buffers - - This patch introduces three macros: _cairo_malloc_ab, - _cairo_malloc_abc, _cairo_malloc_ab_plus_c and replaces various calls - to malloc(a*b), malloc(a*b*c), and malloc(a*b+c) with them. The macros - return NULL if int overflow would occur during the allocation. See - CODING_STYLE for more information. - - CODING_STYLE | 25 +++++++++ - pixman/src/fbcompose.c | 4 +- - pixman/src/icimage.c | 8 ++-- - pixman/src/pixman.h | 7 +++ - pixman/src/pixmanint.h | 17 ++++++ - pixman/src/pixregion.c | 59 ++++++++++++++++++---- - pixman/src/pixregionint.h | 1 - - src/cairo-atsui-font.c | 2 +- - src/cairo-bentley-ottmann.c | 6 +- - src/cairo-beos-surface.cpp | 4 +- - src/cairo-clip.c | 10 +++- - src/cairo-directfb-surface.c | 2 +- - src/cairo-ft-font.c | 4 +- - src/cairo-glitz-surface.c | 34 +++++++++++-- - src/cairo-gstate.c | 6 +- - src/cairo-hull.c | 2 +- - src/cairo-malloc-private.h | 104 +++++++++++++++++++++++++++++++++++++++ - src/cairo-meta-surface.c | 4 +- - src/cairo-os2-surface.c | 9 ++-- - src/cairo-path.c | 2 +- - src/cairo-pattern.c | 6 +- - src/cairo-pdf-surface.c | 6 +- - src/cairo-pen.c | 4 +- - src/cairo-png.c | 6 +- - src/cairo-polygon.c | 2 +- - src/cairo-ps-surface.c | 4 +- - src/cairo-quartz-surface.c | 8 ++-- - src/cairo-scaled-font-subsets.c | 4 +- - src/cairo-scaled-font.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-stroke-style.c | 2 +- - src/cairo-surface-fallback.c | 4 +- - src/cairo-surface.c | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-traps.c | 2 +- - src/cairo-unicode.c | 4 +- - src/cairo-win32-font.c | 6 +- - src/cairo-win32-surface.c | 6 +- - src/cairo-xcb-surface.c | 8 ++-- - src/cairo-xlib-surface.c | 6 +- - src/cairoint.h | 1 + - 41 files changed, 308 insertions(+), 89 deletions(-) - -commit fc34073464c487405b6e2e0a5fa269a1ae15a02a -Author: Carl Worth -Date: Wed Jun 27 14:38:41 2007 -0700 - - Increment version to 1.5.1 after the 1.4.10 release - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 107a74885a25e585b467c7841c6929a12aa62565 -Author: Carl Worth -Date: Wed Jun 27 14:05:56 2007 -0700 - - Increment cairo version to 1.4.10 (and libtool versioning to 13:5:11) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f595ad2348dbd97b57d22471fdec7664f8ca7bf6 -Author: Carl Worth -Date: Wed Jun 27 14:04:27 2007 -0700 - - Add notes to NEWS for 1.4.10 - - NEWS | 45 +++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 45 insertions(+), 0 deletions(-) - -commit 2bf3e31da99f34328973a0866346af40748097f6 -Author: Carl Worth -Date: Wed Jun 27 11:11:36 2007 -0700 - - Prefer local dpy variable instead of display->display - - This was a tiny piece of cleanup that had been erroneously included - with some earlier functional changes, (so it went through a cycle - of being applied and reverted). It's back now in its own commit. - - src/cairo-xlib-display.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit eebb0df512da50f883a417bb5e8e368dc81e35a9 -Author: Carl Worth -Date: Wed Jun 27 11:08:53 2007 -0700 - - Revert "[cairo-xlib-display] Hide XErrors during processing of the work queue." - - This reverts commit 285b702ef6f73e7eb4ca0da235a287ad1e1f412f. - - The recent commit of 0791f342b93225849d9171aac8b738014b18bdf5 fixes - the same bug that 285b702e was fixing, but without introducing any - performance-killing calls to XSync. So we can drop those now. - - src/cairo-xlib-display.c | 17 +++-------------- - 1 files changed, 3 insertions(+), 14 deletions(-) - -commit b019cb8a7a910879c7af304edbd06fd105c9d89e -Author: Carl Worth -Date: Wed Jun 27 11:07:07 2007 -0700 - - Revert "[cairo-xlib-surface] Check for errors before installing a NOOP error handler." - - This reverts commit 7016614dd90798247524f0c118f462aa2e7ef673. - - We want to avoid any negative performance impacts due to extra calls - to XSync. The fact that X errors can be missed with this appraoch is - undesirable of course---a proper fix will likely involve moving to - XCB which will hopefully allow us to do the error-checking the way - we want without any performance penalty. - - src/cairo-xlib-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 6d021eb4b6e319dd2bb3e5e126de07c6844d5c07 -Merge: 9109946... 0791f34... -Author: Carl Worth -Date: Wed Jun 27 11:01:00 2007 -0700 - - Merge branch 'ooo-fix' into cairo - -commit 0791f342b93225849d9171aac8b738014b18bdf5 -Author: Chris Wilson -Date: Wed Jun 27 10:53:29 2007 -0700 - - Avoid deferring resource cleanup for application drawables - - This eliminates X errors propagated from cairo due to cleaning up - Render Pictures after the application had already destroyed the - Drawable they reference. (It would be nice if the X server wouldn't - complain that some cleanup work is already done, but there you - have it.) - - This fix has been verified to fix the bug causing OpenOffice.org to - crash as described here: - - XError on right click menus in OOo. - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811 - - And unlike other proposed fixes for this bug, this fix does not - introduce any new calls to XSync, (and thereby avoids performance - concerns from those). - - src/cairo-xlib-surface.c | 47 +++++++++++++++++++++++++-------------------- - 1 files changed, 26 insertions(+), 21 deletions(-) - -commit 0c42dbb1925efb8228fb5246e0715bee0a5ded28 -Author: Søren Sandmann -Date: Fri Jun 15 00:39:27 2007 -0400 - - pixman_image_set_transform() returns FALSE on failure - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e0cff78b34558f0eed29aff5d818d1591c7bf966 -Author: Søren Sandmann -Date: Thu Jun 14 13:42:08 2007 -0400 - - Fix bug where _cairo_image_surface_composite_trapezoids() computed the wrong stride for aliased masks - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ca5760a289f287a7fafe36e69c6bdf47710c17e7 -Author: Søren Sandmann -Date: Thu Jun 14 13:12:01 2007 -0400 - - Fix initialization of radial patterns - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 12cc32b674d3f1b705ef1a66bbce1ef8c4488daf -Author: Søren Sandmann -Date: Wed Jun 13 00:15:34 2007 -0400 - - [pixman] Initial port to standalone pixman library. - - Makefile.am | 4 +- - configure.in | 14 +- - pixman/.gitignore | 20 - - pixman/AUTHORS | 19 - - pixman/COPYING | 92 - - pixman/ChangeLog | 1534 ------------- - pixman/ChangeLog.libic | 300 --- - pixman/ChangeLog.libpixregion | 47 - - pixman/ChangeLog.slim | 39 - - pixman/INSTALL | 9 - - pixman/Makefile.am | 7 - - pixman/NEWS | 135 -- - pixman/README | 47 - - pixman/RELEASING | 81 - - pixman/TODO | 10 - - pixman/autogen.sh | 53 - - pixman/configure.in | 92 - - pixman/libpixman.pc.in | 10 - - pixman/src/.gitignore | 13 - - pixman/src/Makefile.am | 46 - - pixman/src/Makefile.win32 | 37 - - pixman/src/check-config.sh | 17 - - pixman/src/check-pixmanint.sh | 17 - - pixman/src/fbcompose.c | 4354 ------------------------------------ - pixman/src/fbedge.c | 303 --- - pixman/src/fbedgeimp.h | 136 -- - pixman/src/fbmmx.c | 2821 ----------------------- - pixman/src/fbmmx.h | 298 --- - pixman/src/fbpict.c | 2181 ------------------ - pixman/src/fbpict.h | 355 --- - pixman/src/fbtrap.c | 236 -- - pixman/src/icblt.c | 951 -------- - pixman/src/icbltone.c | 743 ------ - pixman/src/iccolor.c | 83 - - pixman/src/icformat.c | 220 -- - pixman/src/icimage.c | 744 ------ - pixman/src/icimage.h | 384 ---- - pixman/src/icint.h | 1070 --------- - pixman/src/icpixels.c | 116 - - pixman/src/icrect.c | 404 ---- - pixman/src/icrop.h | 137 -- - pixman/src/icstipple.c | 81 - - pixman/src/ictransform.c | 63 - - pixman/src/ictrap.c | 200 -- - pixman/src/ictri.c | 293 --- - pixman/src/icutil.c | 287 --- - pixman/src/pixman-xserver-compat.h | 125 - - pixman/src/pixmanint.h | 1076 --------- - pixman/src/pixregionint.h | 75 - - pixman/src/renderedge.c | 196 -- - pixman/src/renderedge.h | 157 -- - pixman/update.pl | 159 -- - src/Makefile.am | 6 +- - src/cairo-clip.c | 36 +- - src/cairo-glitz-surface.c | 126 +- - src/cairo-image-surface.c | 314 ++-- - src/cairo-pattern.c | 82 +- - src/cairo-pdf-surface.c | 40 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-surface-fallback.c | 5 +- - src/cairo-surface.c | 9 +- - src/cairo-svg-surface.c | 31 +- - src/cairo-traps.c | 4 +- - src/cairo-xlib-surface.c | 43 +- - src/cairoint.h | 14 +- - test/buffer-diff.c | 16 +- - 66 files changed, 398 insertions(+), 21221 deletions(-) - -commit 9109946a1a7f9341e60da7358da6535c5fac52db -Author: Chris Wilson -Date: Thu Jun 21 15:40:23 2007 +0100 - - [cairo-directfb] Correct minor typo. - - Correct the reference to _cairo_directfb_surface_is_similar. - - src/cairo-directfb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1e76aa66b23aa7b3fd7b9f7de2b563b4db814517 -Author: Nis Martensen -Date: Tue Jun 19 17:04:48 2007 +0200 - - Update INSTALL about status of backends - - INSTALL | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 02f753c23ad0db7d677ae41f8d69dc566c8aaa0b -Author: Carl Worth -Date: Mon Jun 18 18:23:06 2007 -0700 - - Fix cairo-perf-diff to compile cairo-perf explicitly - - perf/cairo-perf-diff | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2477e57de532fb3ebd1f6113cf51619b84b303d9 -Author: Vladimir Vukicevic -Date: Mon Jun 18 13:58:15 2007 -0700 - - [perf] Add pixman_region_init_rects and use in extract_region - - Avoid O(N*N) loop in traps_extract_region by letting us hand pixman - an array of rects all at once. - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/long-dashed-lines.c | 67 +++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/pixman-remap.h | 1 + - pixman/src/pixman.h | 2 + - pixman/src/pixregion.c | 29 +++++++++++++++++++ - src/cairo-traps.c | 58 +++++++++++++++++++++++++++----------- - 8 files changed, 144 insertions(+), 18 deletions(-) - -commit 285b702ef6f73e7eb4ca0da235a287ad1e1f412f -Author: Chris Wilson -Date: Fri Jun 15 20:38:01 2007 +0100 - - [cairo-xlib-display] Hide XErrors during processing of the work queue. - - It is possible for the resources that we defer freeing to be already - destroyed and trigger an XError whilst processing the work queue. For - example, the application renders to a Window and then destroys the - Drawable before proceeding with more rendering. This will trigger an - invalid Picture from RenderFreePicture whilst attempting to free the - resources. - - By ignoring the possibility that the application could allocate a fresh - resource with the same ID, we can simply hide the XErrors... - - Fixes: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811 - - src/cairo-xlib-display.c | 17 ++++++++++++++--- - 1 files changed, 14 insertions(+), 3 deletions(-) - -commit 7016614dd90798247524f0c118f462aa2e7ef673 -Author: Chris Wilson -Date: Fri Jun 15 20:45:53 2007 +0100 - - [cairo-xlib-surface] Check for errors before installing a NOOP error handler. - - Call XSync before ignoring errors from XGetImage to avoid hiding - unassociated errors. Similarly, call XSync before reinstalling the old - error handler to ensure no errors creep out of the ignored section. - - src/cairo-xlib-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 0c5d28a4e5ce5e4dd72c0f416ce5e960e92b808b -Author: Ryan Lortie -Date: Wed Jun 13 18:59:22 2007 -0400 - - [xlib] Create source xrender Picture with IncludeInferiors - - When an xlib surface is used as the source of a draw operation this - will cause the contents of child windows to be included in the source - data. The semantics of drawing to xlib surfaces are unchanged (ie: - draws are still clipped by child windows overlapping the destination - window). - - src/cairo-xlib-surface.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit 817d4b0c9a354526389290c6d5a7662713d67cd8 -Author: Brian Ewins -Date: Sat Jun 9 19:14:05 2007 +0100 - - [atsui] Document ATSUI - - Add cairo_atsui_font_face_create_for_atsu_font_id - and ATSUI to the documentation. Don't enable it yet, - since this is still unsupported. - - doc/public/tmpl/cairo-atsui.sgml | 2 +- - src/cairo-atsui-font.c | 13 +++++++++++++ - 2 files changed, 14 insertions(+), 1 deletions(-) - -commit fd1edaa5d386f15edacfd5596b550593ed45d627 -Author: Brian Ewins -Date: Wed Jun 13 01:27:36 2007 +0100 - - [quartz] remove unused code - - clean up warnings about unused code: removing - _cairo_quartz_cairo_path_to_quartz_path and the functions - it calls. - - src/cairo-quartz-surface.c | 47 -------------------------------------------- - 1 files changed, 0 insertions(+), 47 deletions(-) - -commit d7a0816ec3d750939dd935f34b217980ee27af3f -Author: Brian Ewins -Date: Wed Jun 13 01:27:36 2007 +0100 - - [quartz] move glyph array declarations - - Move declarations causing a warning. A separate patch from - the other warning cleanups because it moves where the allocation - happens. - - src/cairo-quartz-surface.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit bf39b28b77a83160e5aa037031d82f8c0843f387 -Author: Brian Ewins -Date: Wed Jun 13 01:04:54 2007 +0100 - - commit 75be87b4093aaa7f477d587d5a68308cade1b29c - - [quartz] move glyph array declarations - - Move declarations causing a warning. A separate patch from - the other warning cleanups because it moves where the allocation - happens. - - src/cairo-quartz-surface.c | 27 +++++++++++++++------------ - 1 files changed, 15 insertions(+), 12 deletions(-) - -commit 2034d1dbd5888c393c57f0feeb707b0411fa4480 -Author: Brian Ewins -Date: Wed Jun 13 01:27:36 2007 +0100 - - [quartz] pass quartz_stroke_t not CGContextRef - - Fix a typo where an incompatible pointer was being passed. - - src/cairo-quartz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 54bbe44b08b37041c8982634837dbc79b19e6c18 -Author: Behdad Esfahbod -Date: Mon Jun 11 17:51:37 2007 -0400 - - [TODO] Add link to Adrian's finer-grain fallback thread - - TODO | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ef3c64fd13d66648f4e00affb304e8b404249f92 -Author: Vladimir Vukicevic -Date: Mon Jun 11 09:27:11 2007 -0700 - - [misc] Blow away last remaining $Id$ directives in sources - - pixman/src/fbtrap.c | 2 -- - src/cairo-analysis-surface-private.h | 3 +-- - test/rel-path.c | 2 -- - 3 files changed, 1 insertions(+), 6 deletions(-) - -commit 853f23e18c28548bce4647d4e54a5cfb317ac3dc -Author: Behdad Esfahbod -Date: Mon Jun 11 02:42:04 2007 -0400 - - [test] Use check_PROGRAMS instead of custom made SUPPORT_PROGS - - It better handles $(EXEEXT) and is exactly made for this purpose. - - test/Makefile.am | 14 ++++++-------- - 1 files changed, 6 insertions(+), 8 deletions(-) - -commit 1d86c7fa888918c32eb13adb084de78883e17c84 -Author: Behdad Esfahbod -Date: Sat Jun 9 13:48:13 2007 -0400 - - [perf] Link to librt if available - - This is needed on Solaris, but also works on Linux. - - configure.in | 4 ++++ - perf/Makefile.am | 3 ++- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 85d045f2675cf191ea1d1af66ad4cd9e57d58e67 -Author: Carl Worth -Date: Fri Jun 8 16:08:44 2007 -0700 - - Update version to 1.4.9 after the 1.4.8 release. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fea4f344c46cf5f85c6af3102333008768c55063 -Author: Carl Worth -Date: Fri Jun 8 15:49:12 2007 -0700 - - Update version to 1.4.8 (and libtool info to 13:4:11) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0b19ff1d3f493067fa5484151e71dfcedcd14fd1 -Author: Carl Worth -Date: Fri Jun 8 15:34:35 2007 -0700 - - Add include of X11/Xlib.h to cairo-xlib-xrender.h - - This makes this header file self-sufficient. Thanks to - Sam Sirlin for pointing - this out. - - src/cairo-xlib-xrender.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8223c976d54319b58906de03fcb8fb1967105e53 -Author: Brian Ewins -Date: Fri Jun 8 01:56:10 2007 +0100 - - [NEWS] add note about quartz fixes - - We've got 11 less failures in the quartz tests this time around, - worth a mention. - - NEWS | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 00063a65f758265f3ad5c0caa374d9c7d5e89932 -Author: Vladimir Vukicevic -Date: Fri Jun 8 01:17:09 2007 +0100 - - [quartz] fix DO_IMAGE - - The implementation of DO_IMAGE leaks memory via a referenced surface, - and wasn't applied for strokes and glyphs. This patch corrects those - issues. - - src/cairo-quartz-private.h | 5 ++- - src/cairo-quartz-surface.c | 83 +++++++++++++++++++++++++++----------------- - 2 files changed, 55 insertions(+), 33 deletions(-) - -commit 39e6a0090faa4e73a658c1ca0ead3040309b84a2 -Author: Brian Ewins -Date: Fri Jun 8 01:12:24 2007 +0100 - - [quartz] fall back on extended gradients - - A temporary fix for mozilla bug 379321, use an image fallback for - gradients that use EXTEND_REPEAT or EXTEND_REFLECT. - - src/cairo-quartz-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 7c1afdcd597331c14f256f406a3e95743f7fdad6 -Author: Brian Ewins -Date: Mon Mar 26 00:06:23 2007 +0100 - - [quartz] fixes the offsets in the font-matrix test - - Apply the font matrix offset to text on the quartz surface, if necessary. - - src/cairo-quartz-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 55f1dbd0fbcbc587823ef8fa291a0af08441c775 -Author: Brian Ewins -Date: Sun Apr 1 00:04:24 2007 +0100 - - [quartz] ensure that line widths are scaled. - - cairo-gstate applies the ctm to the coordinates used in paths, - but not to the line width. In quartz this ends up drawing unscaled - lines. This is a minimal fix - it undoes the scaling applied to the - points and then draws the path scaled correctly. - - src/cairo-quartz-surface.c | 72 ++++++++++++++++++++++++++++++++++--------- - 1 files changed, 57 insertions(+), 15 deletions(-) - -commit 5a9de1b5c9f6cc445f9f6230937c2254ee49e7cb -Author: Brian Ewins -Date: Thu Jun 7 23:22:30 2007 +0100 - - [atsui] remove unused code - - Remove CGAffineTransformMakeWithCairoFontScale. - - src/cairo-atsui-font.c | 8 -------- - 1 files changed, 0 insertions(+), 8 deletions(-) - -commit 807c5ab613e7df60be452d6683c4f9f045ef62a0 -Author: Brian Ewins -Date: Thu Jun 7 23:22:29 2007 +0100 - - [atsui] clean up warnings - - Refactor code to get rid of compiler warnings. - - src/cairo-atsui-font.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit b210b09e2de2f048debad6e8881f0226b6b17060 -Author: Brian Ewins -Date: Thu Jun 7 23:22:27 2007 +0100 - - [quartz] implement CAIRO_EXTEND_REFLECT - - Implement extend-reflect by tiling a larger 2x2 grid of reflected - images. - - src/cairo-quartz-surface.c | 64 ++++++++++++++++++++----------------------- - 1 files changed, 30 insertions(+), 34 deletions(-) - -commit fa5dd548b0dd2dfe523501bd40cafe7916240be1 -Author: Brian Ewins -Date: Tue May 29 23:11:49 2007 +0100 - - [quartz] implement CAIRO_EXTEND_NONE - - Implement extend-none for surface patterns, by using a single - DrawImage where possible. There is some code duplication in this - patch, to make it easier to edit this patch series without conflicts. - A patch to remove duplicate code will be required later.. - - src/cairo-quartz-surface.c | 61 ++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 59 insertions(+), 2 deletions(-) - -commit 147288864c8c512f3ae17c8117d3c36dbbc6d5f8 -Author: Brian Ewins -Date: Thu Jun 7 23:22:05 2007 +0100 - - [quartz] Refactor code to create a CGImageRef from a pattern - - In order to implement CAIRO_EXTEND_NONE we will need to create - a CGImageRef without also creating a CGPattern. Separate the two - pieces of code. - - src/cairo-quartz-surface.c | 40 +++++++++++++++++++++------------------- - 1 files changed, 21 insertions(+), 19 deletions(-) - -commit a5ee983e1cb97aff63b0c9c3a57125b37d0e3f74 -Author: Carl Worth -Date: Thu Jun 7 15:03:43 2007 -0700 - - Update release notes for 1.4.8 - - NEWS | 75 ++++++++++++++++++++++++++++++++++++++++++----------------------- - 1 files changed, 48 insertions(+), 27 deletions(-) - -commit e19c49269d0b236de91a5a9b5230bed7d76282ed -Author: Carl Worth -Date: Thu Jun 7 12:19:46 2007 -0700 - - Remove stale reference to cairo-xlib-test.h - - src/Makefile.am | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 5ded4479d6ddbbe16c631144ef987c4c02e706a6 -Author: Carl Worth -Date: Thu May 31 15:35:14 2007 -0700 - - Fix return value of cairo_surface_write_to_png for unsupported formats - - For some reason this was returning CAIRO_STATUS_NULL_POINTER. - Now fixed to return CAIRO_STATUS_INVALID_FORMAT. - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ec63a7839457e2d14c7b1a5b64d1a79daf044222 -Author: Carl Worth -Date: Thu May 31 14:28:50 2007 -0700 - - Add CAIRO_INTERNAL_FORMAT_RGB16_565 and prefer it over deprecated CAIRO_FORMAT_RGB16_565 - - Also clarify the documentation for cairo_internal_format_t - - src/cairo-image-surface.c | 6 ++-- - src/cairoint.h | 52 ++++++++++++++++++++++++++------------------ - 2 files changed, 34 insertions(+), 24 deletions(-) - -commit b6ee6c531c41adb57512fe0eaf21558e5d03f04b -Author: Behdad Esfahbod -Date: Thu Jun 7 12:22:20 2007 -0400 - - [NEWS] Add par about Chris 'ickle' Wilson's error-handling improvements work - - NEWS | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit 2399f923d504fba6b3dcbd0a185cd3d4b29b4dcf -Author: Chris Wilson -Date: Mon Jun 4 19:55:23 2007 +0100 - - [cairo-bentley-ottmann] Malloc reduction. - - Attempt to allocate the edges during tessellate_polygon() from the stack, - if the polygon size is sufficiently small and amalgamate the separate - allocations for the list of events and their sorted index into a single - block. - - src/cairo-bentley-ottmann.c | 28 +++++++++++++++------------- - 1 files changed, 15 insertions(+), 13 deletions(-) - -commit ecf6f7f5147195276b3b479879cbd3db402df688 -Author: Chris Wilson -Date: Mon Jun 4 16:35:15 2007 +0100 - - [cairo-scaled-font] Skip the mask composition onto the surface on error. - - If we fail to composite the glyph onto the mask, skip compositing the - mask onto the surface. - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2e60029392bca904f7035a8f403de0593193b6b9 -Author: Chris Wilson -Date: Tue Jun 5 09:08:51 2007 +0100 - - [cairo-ft-font] Markup error paths with _cairo_error(). - - Behdad Esfahbod noted that in ff5af0f540ec4 I had introduce new error - paths without the appropriate _cairo_error(). So review cairo-ft-font - to ensure that _cairo_error() is called at the start of every error path, - as close to the originating error as possible. - - src/cairo-ft-font.c | 58 ++++++++++++++++++++++++++++++++++++--------------- - 1 files changed, 41 insertions(+), 17 deletions(-) - -commit a5e12cd9f212b12a32230263188be38c175dc0a1 -Author: Behdad Esfahbod -Date: Thu May 31 19:21:30 2007 -0400 - - [ROADMAP] Add link for a8mask patch - - ROADMAP | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit ff5af0f540ec407beb3d2a105b22f041cd770ce4 -Author: Chris Wilson -Date: Wed May 30 15:44:59 2007 +0100 - - [cairo-ft-font] Propagate error rather than asserting. - - FT_Set_Char_Size can fail due to an out-of-memory condition, so - propagate the error status instead of asserting that it never fails. - - src/cairo-ft-font.c | 41 ++++++++++++++++++++++++++++++----------- - 1 files changed, 30 insertions(+), 11 deletions(-) - -commit de4dd4263cb5183b128a8fc80576ed7ddb239319 -Author: Chris Wilson -Date: Fri May 11 15:15:11 2007 +0100 - - [cairo] Propagate surface->status on cairo_t creation. - - Set the cairo_t status to be the surface->status when the context is - created, and special case the NO_MEMORY status in order to avoid a - redundant allocation. - - src/cairo-gstate.c | 2 +- - src/cairo.c | 12 +++++------- - 2 files changed, 6 insertions(+), 8 deletions(-) - -commit 9f4efa8a3ae6cbc194d89012286990582a6c8f5d -Author: Chris Wilson -Date: Fri May 11 09:48:47 2007 +0100 - - [cairo-ps-surface] Check status of glyph_lookup. - - Check for failure of _cairo_scaled_glyph_lookup() before preceeding to - access the glyph and propagate the failure up the callstack as far as - possible. - - src/cairo-ps-surface.c | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit 8010d46de4056e6c15b6891a06ef3d784c641b82 -Author: Chris Wilson -Date: Sun May 27 11:40:47 2007 +0100 - - [cairo-gstate] Check scaled font status. - - After using the public API to access the scaled font, which only sets - the status field in the font, check the scaled font status. This will - then correctly propagate errors during glyph loading to the context. - - src/cairo-gstate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit faf986bb25eab34eee16415f4dab6f7d5d3460d3 -Author: Chris Wilson -Date: Tue May 29 12:39:16 2007 +0100 - - [cairo-gstate] Check status on existing fonts. - - Add an initial guard in _cairo_gstate_ensure_scaled_font() and - _cairo_gstate_ensure_font_face() to check that there is no prior - error status on the objects. - - src/cairo-gstate.c | 41 +++++++++++++++++++++++------------------ - 1 files changed, 23 insertions(+), 18 deletions(-) - -commit ac4b20082dd6b2e2b280d3615eebf5387da87e2f -Author: Vladimir Vukicevic -Date: Tue May 29 20:50:02 2007 -0700 - - [misc] make _cairo_image_surface_nil_invalid static const - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0b34e958f18f0bcfb8bc9b054fb3bbb2343d2c32 -Author: Vladimir Vukicevic -Date: Tue May 29 17:14:41 2007 -0700 - - [test] add XFAIL test surface-pattern-big-scale down - - Add test for image downscaling with large images severely limiting - the destination coordinate space. See the test for more information. - - test/Makefile.am | 2 + - test/surface-pattern-big-scale-down.c | 121 +++++++++++++++++++++++++++++++++ - 2 files changed, 123 insertions(+), 0 deletions(-) - -commit 0898411d0abdfa6a02c2fb959b3a668e728fd87c -Author: Kouhei Sutou -Date: Mon May 28 17:05:40 2007 -0400 - - [doc] Minor documentation fixes - - src/cairo-matrix.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-scaled-font.c | 2 +- - src/cairo.c | 22 +++++++++++++++------- - src/cairo.h | 2 +- - 5 files changed, 19 insertions(+), 11 deletions(-) - -commit 4da50dfa02d7c03c32ee20c15f8304eafa0844e0 -Author: Luo jinghua -Date: Sun May 27 17:09:49 2007 +0800 - - [cairo-xlib-surface]: flush work queue before sending glyphs to X server. - - After introducing a work queue for deferred destruction of X resource - my firefox crashes over and over again because XRenderFreeGlyphs is trying - to free a non-exist glyph (already freed). The problematic call sequence is - something like below: - XRenderAddGlyphs (20990204, 20069) - XRenderAddGlyphs (20990204, 20069) - XRenderFreeGlyphs (20990204, 20069) - XRenderFreeGlyphs (20990204, 20069) - You can see the two add/free glyphs is interlaced. And obviously, we'll crash - at the last one. To fix this bug, we must be ensure here's no pending work - to free the glyph that we want to sent. - - src/cairo-xlib-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 69bf823db1b256f19487d2f002e7b0811859e58e -Author: Brian Ewins -Date: Fri May 25 01:35:37 2007 +0100 - - [atsui] use ATSGlyphGetScreenMetrics to measure glyphs. - - I don't know how I managed to get glyph measurement so badly wrong - before, but tracing paths was not necessary, and 6x slower. The fix - switches to using ATSGlyphGetScreenMetrics for all metrics, and remove - the old measuring code. - - src/cairo-atsui-font.c | 88 +++-------------------------------------------- - 1 files changed, 6 insertions(+), 82 deletions(-) - -commit 5b2b008048d2bcbb0b558a6c02aee1093311db39 -Author: Chris Wilson -Date: Fri May 11 10:14:57 2007 +0100 - - [cairo-scaled-font-subsets] Shortcut empty subset. - - If the font_subset if empty, avoid allocating zero bytes and iterating - over the empty hash table. - - src/cairo-scaled-font-subsets.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit c175cf7b833b03c38c8ddea183333ce84c6fdfec -Author: Chris Wilson -Date: Thu May 17 17:04:14 2007 +0100 - - [cairo-ft-font] Remove erroneous cached font faces. - - Only return a font face from the cache if it is not in an error condition. - Otherwise unlink the bad font face from the cache and construct a new one. - - src/cairo-ft-font.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) - -commit f382c3e110f8078e83cbb9d73cfbb43b1506a11b -Author: Chris Wilson -Date: Fri May 11 15:31:33 2007 +0100 - - [cairo-pattern] Fully initialise the error pattern. - - _cairo_pattern_fini depends on the pattern being correctly initialised, - for example when calling _cairo_user_data_array_fini(), so we need to - initialize the whole pattern and not just set the type to SOLID when - creating a pattern for a surface in error. - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fcdfda83655faf0eecbb2b5af09a05340fe422e6 -Author: Boris Zbarsky -Date: Mon May 14 23:46:14 2007 -0500 - - [quartz] implementing release_source_image (#11059) - - The image surface that _cairo_quartz_surface_acquire_source_image creates never - seems to be released, probably because there is no release_source_image callback - in the quartz code. - - The attached patch fixes that problem, at least insofar as the image surface - itself is no longer leaking. I'm not sure whether any other cleanup needs to - happen here. - - -Boris - - src/cairo-quartz-surface.c | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit 2c8598aafb4a8779ce94940ce91033a8c5a62ea4 -Author: Carl Worth -Date: Fri May 18 13:23:04 2007 -0700 - - Fix typo in comment. - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3cb67435f805a8ea39f38194379f216ea4a69ed6 -Author: Carl Worth -Date: Fri May 18 13:22:36 2007 -0700 - - Document behavior of color stops added with identical offsets. - - src/cairo-pattern.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit 1cf4ed989473e2468ea2d64bb7759084c9f6a1e4 -Author: Carl Worth -Date: Fri May 18 13:16:23 2007 -0700 - - ROADMAP: Add bugs for 565 and 655 Visuals to the list - - ROADMAP | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 7260ee23ecb08e72a938a194e70dfb5e7a48c599 -Author: Behdad Esfahbod -Date: Fri May 18 11:55:37 2007 -0400 - - [Type1] #include (#10989) - - src/cairo-type1-subset.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6a42ddf0f9e9e4b8dc5fa6a98ef4448f1c149789 -Author: Adrian Johnson -Date: Thu May 17 12:45:22 2007 +0930 - - TrueType Subsetting: Remove post table - - The post table is not used now that TrueType fonts are embedded - in PDF as CID fonts. - - src/cairo-truetype-subset.c | 34 +--------------------------------- - 1 files changed, 1 insertions(+), 33 deletions(-) - -commit 67e752f75fdc561aca419f798a1650feb22e59a4 -Author: Adrian Johnson -Date: Thu May 17 11:48:25 2007 +0930 - - CFF Subsetting: Filter out Unique ID from subset - - The subsetted font is not the same as the original font so it should not - have the same XUID and UniqueID. - - src/cairo-cff-subset.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 99a6983017e1cd27f8a598487f8a72cfa6d411f1 -Author: Adrian Johnson -Date: Thu May 17 10:17:09 2007 +0930 - - Ensure surface backend finish() is never called more than once. - - Previously if the backend finish() function returned an error status, - surface->finished was not set true. This would result in the backend - finish() function being called twice which in the case of the PostScript - backend caused a seg fault. - - src/cairo-surface.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit c5ae0f1232e8cef860bc1fc0b449ddf9d9063d22 -Author: Chris Wilson -Date: Fri May 11 16:11:02 2007 +0100 - - [cairo-truetype-subset] Avoid a potential 0 byte allocation. - - During _cairo_truetype_subset_init skip copying the string_offsets if - the vector is empty. - - src/cairo-truetype-subset.c | 21 +++++++++++++-------- - 1 files changed, 13 insertions(+), 8 deletions(-) - -commit e37bee3f52282a042251f2dfc8e051943fd8f1d7 -Author: Chris Wilson -Date: Wed May 16 14:47:33 2007 +0100 - - [cairo-pdf-surface] emit_pattern_stops() array overrun. - - _cairo_pdf_surface_emit_pattern_stops() tried to set the last element - to have an offset of exactly 1.0, but missed and set the next element - after the end of the array. - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 27de1869f5a837b79812cd4b04e17621ec0f848c -Author: Chris Wilson -Date: Wed May 16 13:10:58 2007 +0100 - - [cairo-pdf-surface] Free allstops on error. - - Ensure the locally allocated resources are freed on the error paths. - - src/cairo-pdf-surface.c | 18 +++++++++--------- - 1 files changed, 9 insertions(+), 9 deletions(-) - -commit 79e6c0207cb65b6bc1f38537f42632d623a1bc9a -Author: Chris Wilson -Date: Sat May 12 18:27:58 2007 +0100 - - [cairo-pattern] Check for the nil surface. - - cairo_surface_create_similar() does not return NULL as was being checked - for, but the nil surface on error. Also ensure that the returned surface - is destroyed if we encounter an error whilst compositing. - - src/cairo-pattern.c | 26 ++++++++++++++++++++++---- - 1 files changed, 22 insertions(+), 4 deletions(-) - -commit 32c0ef9f145cec8b997c011b13208362eaf03004 -Author: Chris Wilson -Date: Sat May 12 16:20:00 2007 +0100 - - [cairo-gstate] Remove a redundant conditional. - - Simplify _cairo_gstate_text_to_glyphs() with a tail call. - - src/cairo-gstate.c | 9 ++------- - 1 files changed, 2 insertions(+), 7 deletions(-) - -commit 37d8c18b3fc489d6336131bae6ec219cafc35718 -Author: Chris Wilson -Date: Sat May 12 15:42:59 2007 +0100 - - [cairo-scaled-font-subsets] Destroy the glyph if we fail to cache it. - - If we fail to insert the glyph into the sub_font glyph cache then we - must destroy it before propagating the error. - - src/cairo-scaled-font-subsets.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 76e758df5b99fd4dee64481b9039b0d44dd01587 -Author: Chris Wilson -Date: Sat May 12 15:40:39 2007 +0100 - - [cairo-truetype-subset] Destroy the arrays on error. - - Growing the arrays may successfully allocate the indirect pointer, but - fail whilst allocating the actual array - so always call - _cairo_array_fini after _cairo_array_grow_by(). - - src/cairo-truetype-subset.c | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -commit b63b32958e690409448ddc14e19b1856b9ef555a -Author: Chris Wilson -Date: Sat May 12 15:32:34 2007 +0100 - - [cairo-scaled-font-subsets] Destroy the parent and subfont on error. - - If we fail to create the sub font destroy the local reference to the - parent font and if we fail to insert the sub font into the hash table, - destroy the newly create sub font. - - src/cairo-scaled-font-subsets.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit fcd1076bcffa20b7770a1b447a46232760972e2f -Author: Chris Wilson -Date: Sat May 12 14:36:11 2007 +0100 - - [cairo-ft-font] Destroy the path on error. - - During _decompose_glyph_outline() destroy the fixed path if we - encounter an error. - - src/cairo-ft-font.c | 22 ++++++++++++---------- - 1 files changed, 12 insertions(+), 10 deletions(-) - -commit abb19e61cf076c62c7626094c70de0530bd9fd00 -Author: Chris Wilson -Date: Sat May 12 14:32:52 2007 +0100 - - [cairo-ft-font] Destroy the unscaled reference on error. - - Release the reference to the unscaled font if we encounter an error - whilst initialising the cairo_ft_scaled_font_t. - - src/cairo-ft-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e4055f02a1f5a3d7942c7c2bb4f460ce0a8b5481 -Author: Chris Wilson -Date: Sat May 12 14:29:28 2007 +0100 - - [cairo-ft-font] Race between unscaled removal from hash table and creation - - Small window of opportunity for the unscaled font to be destroyed and - removed from the hash table before - _cairo_ft_unscaled_font_create_for_pattern() takes a reference on behalf - of its cairo. Close the window by taking the reference with the font - map lock held. - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f239308ef1014174d554ccaeab1fe7c2d84e26dc -Author: Chris Wilson -Date: Sat May 12 13:27:09 2007 +0100 - - [cairo-deflate-stream] Free the stream on error. - - Before returning the nil output stream, free the locally allocated - stream when encountering an error during _cairo_deflate_stream_Create(). - - src/cairo-deflate-stream.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 35a2ed03352a1abc42e441ce5f52f2704de9be85 -Author: Chris Wilson -Date: Sat May 12 12:36:47 2007 +0100 - - [cairo-ft-font] Destroy surface if glyph transformation fails. - - As we allocated the surface we need to destroy it if we encounter an - error. - - src/cairo-ft-font.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 6a43c027238d2302f9e01ee7a780370d330def6c -Author: Chris Wilson -Date: Sat May 12 09:43:30 2007 +0100 - - [cairo-xlib-screen] Increase number of GC depths. - - Add support for depths 12 and 30, and a separate unknown. - - src/cairo-xlib-private.h | 2 +- - src/cairo-xlib-screen.c | 14 ++++++++------ - 2 files changed, 9 insertions(+), 7 deletions(-) - -commit 70611846ded98ffa0f085f5a704979384b37e84c -Author: Chris Wilson -Date: Sat May 12 09:40:13 2007 +0100 - - [cairo-xlib-surface] Always nullify GC after pushing to screen. - - The status return from _cairo_xlib_screen_put_gc() indicates the failure - to queue a job to free an old GC - the current GC is always transferred - away from the caller, so always nullify it in the surface. - - src/cairo-xlib-surface.c | 11 +++++------ - 1 files changed, 5 insertions(+), 6 deletions(-) - -commit 58c35e6d7b2e153dc9cd6ff89fa91497c507afaf -Author: Chris Wilson -Date: Sat May 12 00:10:26 2007 +0100 - - [cairo-paginated-surface] Check surface status during finish. - - Propagate children status during finish. - - src/cairo-paginated-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 9ffd8154e2ec2ccbeeefd3e4a34b2aa16844c1ce -Author: Chris Wilson -Date: Fri May 11 23:43:53 2007 +0100 - - [cairo-scaled-font-subsets] Correctly destroy the hash table. - - After an allocation failure in - _cairo_scaled_font_subsets_create_internal() call - _cairo_hash_table_destroy() instead of a mere free(). - - src/cairo-scaled-font-subsets.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bcfc5f0bdbd4c1eedc22bde5eed464a8bd18211e -Author: Chris Wilson -Date: Fri May 11 20:57:12 2007 +0100 - - [pixman] Propagate allocation failure. - - pixman_op() failed to propagate the failure from - pixman_region_appendNonO() and the generic op. - - pixman/src/pixregion.c | 24 +++++++++++++++++------- - 1 files changed, 17 insertions(+), 7 deletions(-) - -commit 9e99f0611c834f80903e3554663f71682ef59ef3 -Author: Chris Wilson -Date: Fri May 11 20:38:24 2007 +0100 - - [cairo-traps] Initialize traps to use embedded buffer. - - Set the traps to use the embedded buffer during initialization which will - save one redundant _cairo_traps_grow() - - src/cairo-traps.c | 26 ++++++-------------------- - 1 files changed, 6 insertions(+), 20 deletions(-) - -commit 35eb65b7772459266e2f954fb370bfdca12b5b64 -Author: Chris Wilson -Date: Fri May 11 18:25:13 2007 +0100 - - [cairo-path] Check for errors during the count. - - Return the nil object if we encounter any error whilst trying to - generate the path. - - Also special case the NO_MEMORY error object to return the nil object. - - src/cairo-path.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit a60afb0e78ab42498158ef852fcea35c8f71e8ec -Author: Chris Wilson -Date: Fri May 11 16:01:26 2007 +0100 - - [cairo-scaled-font] Return status of _cairo_scaled_font_glyph_path() - - The status return of _cairo_path_fixed_interpret() was being ignored, - propagate it. - - src/cairo-scaled-font.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit d46f6872a5fe601862e2f63455c97a15c4667cf2 -Author: Behdad Esfahbod -Date: Sun May 13 21:52:52 2007 -0400 - - [docs] Update to latest source changes and kill warnings - - doc/public/Headers.mk | 1 + - doc/public/Makefile.am | 2 -- - doc/public/cairo-docs.xml | 6 +++--- - 3 files changed, 4 insertions(+), 5 deletions(-) - -commit 40558cb15e5f7276a29847b00c9dae08b9d9380e -Author: Chris Wilson -Date: Sat May 12 10:10:49 2007 +0100 - - [cairo-xlib-screen] Clear the gc_needs_clip_reset after use. - - After consuming the GC we need to unset the clip reset flag, so that - if we try and get a new GC without first putting a fresh one we do not - try to call XSetClipMask on a NULL GC. - - (Fixes http://bugs.freedesktop.org/show_bug.cgi?id=10921) - - src/cairo-xlib-screen.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit abba3f2375c58401b7722837b3be37c3de9beca4 -Author: Chris Wilson -Date: Thu May 10 23:05:46 2007 +0100 - - [valgrind-suppressions] Update to cover XrmGetStringDatabase - - By dropping the top frame from suppression, the XrmGetFileDatabase - suppressions will also match XrmGetStringDatabase leaks which are - starting to occur. - - test/.valgrind-suppressions | 42 ++++++++++++++---------------------------- - 1 files changed, 14 insertions(+), 28 deletions(-) - -commit c4abc3a0e3ebb27bc0aa178651e496c514eb1fae -Author: Chris Wilson -Date: Thu May 10 21:28:48 2007 +0100 - - [cairo-truetype-subset] Set CAIRO_STATUS_NO_MEMORY on malloc failure. - - _cairo_truetype_font_create() failed to update the status before - returning after detecting an allocation failure, leaving its callers - none the wishing - and eventually triggering a segmentation fault when - the font was used in anger. - - src/cairo-truetype-subset.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit ebababc0cf83f828d48200b8e316f57912fb0128 -Author: Chris Wilson -Date: Thu May 10 19:24:54 2007 +0100 - - [cairo-pattern] Return the nil cairo_pattern_t for CAIRO_STATUS_NO_MEMORY. - - If we asked to create a pattern after encountering an allocation failure, - we can avoid another allocation by returning the nil pattern object. - - src/cairo-pattern.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit e8e5f93ffec8321c029c0b95abcb3cd8cadcff31 -Author: Chris Wilson -Date: Thu May 10 20:50:58 2007 +0100 - - [cairo-meta-surface] Add a surface->status guard to meta_surface_replay() - - Before attempting to access the cairo_meta_surface_t specific members, - we need to ensure that _cairo_meta_surface_replay() has received a true - meta surface rather than an error surface (e.g. _cairo_surface_nil). - - src/cairo-meta-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 195112697fac77e70ef36e00a2d557eda1e0e145 -Author: elaine -Date: Thu May 10 13:58:44 2007 -0400 - - [xlib] The buggy_repeat path should be removed for Xsun now - - Sun never released a version of Solaris with Xorg with the buggy repeat - problem. This patch was only needed for development versions of Solaris - Nevada (roughly builds 25-30). The latest S10U release and Nevada releases - have a fixed Xorg. So no users should ever encounter this bug. - - We need to remove this test because Xsun has the same VendorString and a lower - VendorRelease number so it falsely triggers buggy_repeat to be turned on. - They just added Xrender support recently to Xsun, so this wasn't an issue - before recently. - - src/cairo-xlib-surface.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit ab6a767cf476c98b466c62dd410d0f61f8dd6bbb -Author: Chris Wilson -Date: Thu May 10 17:17:30 2007 +0100 - - [cairo-scaled-font] Check for allocation failure. - - cairo_scaled_font_create() returns a nil object on failure whereas a few - callers were checking for NULL. - - Secondly review the public entry points for cairo_scaled_font_*() to - ensure that all check that they will not attempt to overwrite the - read-only nil object. - - src/cairo-gstate.c | 7 +++---- - src/cairo-scaled-font-subsets.c | 2 ++ - src/cairo-scaled-font.c | 10 ++++++++-- - src/cairo-type1-fallback.c | 2 +- - 4 files changed, 14 insertions(+), 7 deletions(-) - -commit aec92188f1cf4ca34e890b0a4266425532f669d4 -Author: Chris Wilson -Date: Thu May 10 09:29:24 2007 +0100 - - [cairo-clip] Correctly report allocation failure - - Distinguish between the unrepresentable clip and the failure to allocate - the clip extents. - - src/cairo-clip.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 1a719d1189243a76120b98371f84e074c8cd611e -Author: Chris Wilson -Date: Thu May 10 09:28:20 2007 +0100 - - [cairo] Use _cairo_clip_nil for CAIRO_STATUS_NO_MEMORY - - When creating a error clip list for CAIRO_STATUS_NO_MEMORY, simply - reuse the nil object rather than allocate a fresh list. - - src/cairo.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 3fbc4bb5ae27809f417ec2627fa515375e63a0e7 -Author: Chris Wilson -Date: Wed May 9 21:41:17 2007 +0100 - - [cairo-clip] Add missing error status for _cairo__clip_intersect_region() - - An out-of-memory error path missed setting CAIRO_STATUS_NO_MEMORY. - - src/cairo-clip.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b5d25068796d572b4b0c6e33eecc5f0736fb8f78 -Author: Chris Wilson -Date: Wed May 9 16:27:42 2007 +0100 - - [cairo] cairo_pop_group() returns a NULL pattern - - cairo_pop_group() checks for a NULL return from - cairo_pattern_create_for_surface() instead of the nil cairo_pattern_t, - and then returns a NULL pattern instead of the nil object. - - src/cairo.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 6f09e93ad7ac4c941ba6c72b21ea4536d248f8d5 -Author: Chris Wilson -Date: Wed May 9 13:39:08 2007 +0100 - - [ciro-surface-fallback] Propagate status for _clip_and_composite_trapezoids - - The result of _clip_and_composite_trapezoids() was ignored by 2/3 of - its callers - simply propagate the status. - - src/cairo-surface-fallback.c | 28 ++++++++++++++-------------- - 1 files changed, 14 insertions(+), 14 deletions(-) - -commit ae5d4a1c17a46c0a6ea2e4c825ecce7a5cbbe28b -Author: Chris Wilson -Date: Wed May 9 13:19:54 2007 +0100 - - [cairo] Return after detecting the invalid font-options. - - Do not continue to copy the contents of the nil cairo_font_options_t, - but set the error on the context and return. - - src/cairo.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit dfd4d41ac99dbe5d8ea16aa4ce4809b66308c803 -Author: Chris Wilson -Date: Wed May 9 12:30:40 2007 +0100 - - [cairo-xlib-surface] Free the allocation if we fail to queue the work. - - Avoid the leak of the allocated argument if we fail to queue the work to - free the glyph. - - src/cairo-xlib-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 8ddfc1b2e4aeefb704e05e64661b5c9985788e99 -Author: Chris Wilson -Date: Tue May 8 16:13:08 2007 +0100 - - [cairo-pattern] Return status from _cairo_pattern_init_copy() - - During the copy, allocation of the gradient may fail and so the callers - need to check for a pattern that returned in an error state. No callers - did so and in order to force all callers to check the error status, - the status return was added to _cairo_pattern_init_copy(). The early - error checking may appear redundant for an object with an embedded - structure, however it does fix an error where an uninitialised pattern - was being used: - - ==1922== Process terminating with default action of signal 11 (SIGSEGV) - ==1922== Access not within mapped region at address 0x55555555 - ==1922== at 0x402CF6F: _cairo_array_index (cairo-array.c:208) - ==1922== by 0x402D4F3: _cairo_user_data_array_fini (cairo-array.c:370) - ==1922== by 0x4046464: _cairo_pattern_fini (cairo-pattern.c:188) - ==1922== by 0x404992A: _cairo_meta_surface_paint (cairo-meta-surface.c:266) - ==1922== by 0x403FCE0: _cairo_surface_paint (cairo-surface.c:1331) - ==1922== by 0x405CB5E: _test_meta_surface_paint (test-meta-surface.c:195) - ==1922== by 0x403FCE0: _cairo_surface_paint (cairo-surface.c:1331) - ==1922== by 0x4032A60: _cairo_gstate_paint (cairo-gstate.c:822) - ==1922== by 0x402B2D1: cairo_paint (cairo.c:1879) - ==1922== by 0x804A4F7: draw (radial-gradient.c:73) - ==1922== by 0x804AFA4: cairo_test_expecting (cairo-test.c:326) - ==1922== by 0x804A57C: main (radial-gradient.c:109) - ==1922== Injected fault at: - ==1922== at 0x4020EA5: malloc (vg_replace_malloc.c:207) - ==1922== by 0x404475C: _cairo_pattern_init_copy (cairo-pattern.c:136) - ==1922== by 0x403F779: _cairo_surface_copy_pattern_for_destination (cairo-surface.c:2153) - ==1922== by 0x403FCC1: _cairo_surface_paint (cairo-surface.c:1328) - ==1922== by 0x405CB5E: _test_meta_surface_paint (test-meta-surface.c:195) - ==1922== by 0x403FCE0: _cairo_surface_paint (cairo-surface.c:1331) - ==1922== by 0x4032A60: _cairo_gstate_paint (cairo-gstate.c:822) - ==1922== by 0x402B2D1: cairo_paint (cairo.c:1879) - ==1922== by 0x804A4F7: draw (radial-gradient.c:73) - ==1922== by 0x804AFA4: cairo_test_expecting (cairo-test.c:326) - ==1922== by 0x804A57C: main (radial-gradient.c:109) - - src/cairo-glitz-surface.c | 12 +++++++-- - src/cairo-gstate.c | 55 ++++++++++++++++++++++++++++++------------- - src/cairo-meta-surface.c | 6 ++++- - src/cairo-pattern.c | 30 +++++++++++++++++------ - src/cairo-quartz-surface.c | 6 ++++- - src/cairo-surface.c | 47 ++++++++++++++++++++++++++----------- - src/cairoint.h | 2 +- - 7 files changed, 113 insertions(+), 45 deletions(-) - -commit dbdaf0690e1121d0f810dfb035e7a9f0dae17248 -Author: Chris Wilson -Date: Wed May 9 09:22:31 2007 +0100 - - [cairo-scaled-font] Check _cairo_scaled_glyph_loop() status - - In _cairo_scaled_font_glyph_path() we forgot to check the status return - of _cairo_scaled_glyph_loop() - propagate any failures. - - src/cairo-scaled-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b744c2705184c24845423d661258b39bbb17749b -Author: James Cloos -Date: Wed May 9 02:50:59 2007 -0400 - - [cairo-directfb-surface] Fix typo from commit a8c8e17d - Fix typo in name of _cairo_directfb_surface_is_similar(). - - src/cairo-directfb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cbc9218cd3f664682bcb5095c602adf9615535d0 -Author: Chris Wilson -Date: Wed May 9 09:03:04 2007 +0100 - - [cairo-xcb-surface] Fix compilation - - As spotted by James Cloos , I broke the compilation... - This is a minimal fix with no claims of completeness. - - src/cairo-xcb-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 069514a10ff2ca9ac86cc3dc1703aa19caa538e2 -Author: Chris Wilson -Date: Tue May 8 18:19:56 2007 +0100 - - [test/in-fill-empty-trapezoid] Cleanup after test failure. - - Ensure that the failure path also calls cairo_test_fini(). - - test/in-fill-empty-trapezoid.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 43645eb486da1af91b3264af6c84ac18a1eddcaa -Author: Chris Wilson -Date: Tue May 8 20:25:21 2007 +0100 - - [test/fallback-resolution] Cleanup after test failure - - Be valgrind clean even for test failures. - - test/fallback-resolution.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 21c6643b09c771454f913b444b6b040aaaacd3a8 -Author: Chris Wilson -Date: Tue May 8 21:28:48 2007 +0100 - - [cairo-surface] Check for errors when generating the scaled font. - - cairo_surface_show_glyphs() attempts to generate a device specific - scaled font and so needs to check for failure before attempting to use - it. - - src/cairo-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit ede76a97ea5b68c3bd042dc6a93ecb1aa7c9761c -Author: Chris Wilson -Date: Tue May 8 17:26:22 2007 +0100 - - [cairo-font-options] Check for the nil-object. - - The design is for the user to create a cairo_font_options_t object with - cairo_font_options_create() and then is free to use it with any Cairo - operation. This requires us to check when we may be about to overwrite - the read-only nil object. - - src/cairo-font-face.c | 5 +++++ - src/cairo-font-options.c | 7 ++++++- - src/cairo-gstate.c | 4 +--- - src/cairo-scaled-font.c | 10 ++++++++++ - src/cairo-surface.c | 3 +++ - src/cairo.c | 12 ++++++++---- - src/cairoint.h | 3 ++- - 7 files changed, 35 insertions(+), 9 deletions(-) - -commit c441938569ed78123a57662a70ef5a74dcf73851 -Author: Chris Wilson -Date: Tue May 8 21:40:26 2007 +0100 - - [cairo-pattern] Cleanly handle an invalid pattern in cairo_pattern_transform() - - Simply return without writing to potentially read-only members of an - invalid pattern rather than assert. This is cleaner than tracking down - all the error paths that may call into cairo_pattern_transform()... - - src/cairo-pattern.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 409f9734297be250de5e462e2d52e653bd893125 -Author: Behdad Esfahbod -Date: Tue May 8 14:18:42 2007 -0400 - - [test] If a test target fails, end the test - otherwise cairo is left in a dirty state and further tests are - unreliable. - - test/cairo-test.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit aad66d05fd0f310564e80c9ff59526028871751c -Author: Chris Wilson -Date: Tue May 8 16:40:24 2007 +0100 - - [test/nil-surface] Destroy the auxiliary context on failure paths. - - Just to be tidy, and aim to be valgrind-clean. - - test/nil-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit e3acacc096d7db947e7c8f2167a6d97f04c403b1 -Author: Chris Wilson -Date: Tue May 8 16:35:14 2007 +0100 - - [cairo-boilerplate-ps] Destroy the target on creation failure - - Remember to destroy the ptc->target as well as the ordinary surface, if - we need to. - - boilerplate/cairo-boilerplate-ps.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit efd212bfa25cb44b9499b89f93aa7167a9544ccb -Author: Chris Wilson -Date: Tue May 8 16:23:07 2007 +0100 - - [cairo-boilerplate] Protect against the nil cairo_scaled_font_t - - Beware the NULL pointer deference when trying to adjust the max glyph - cache size... - - boilerplate/cairo-boilerplate.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit b85920684f8feaba8d2d5b0262c60b4960c223b8 -Author: Chris Wilson -Date: Tue May 8 14:01:00 2007 +0100 - - [cairo-test] Destroy the check image on failure - - If drawing the checker pattern should fail, we need to free the - resources allocated locally. - - test/cairo-test.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 0bf3ffacda5dbfc4fd8a5a0d5fd37d9630f5bcdb -Author: Chris Wilson -Date: Tue May 8 13:55:04 2007 +0100 - - [test-fallback-surface] Destroy the backing image on malloc failure. - - Ensure we free all local resource should we encounter an allocation - failure during _cairo_test_fallback_surface_create(). - - src/test-fallback-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit eac18d44c7559fe393abf6706b52e5a8edbfd5e9 -Author: Chris Wilson -Date: Tue May 8 12:46:42 2007 +0100 - - [cairo-paginated-surface] Propagate malloc failure - - Check for an allocation failure during _cairo_analysis_surface_create() - and propagate to caller - where we discover that the callers themselves - missed the status checks... - - src/cairo-paginated-surface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 0d8a1540ec53ecc309a10e77ea7788fcd16d8345 -Author: Emmanuel Pacaud -Date: Tue May 8 09:11:57 2007 +0200 - - SVG: Don't clip SVG element, as clipping region is implicit. - - That makes editing of produced SVG easier. - - src/cairo-svg-surface-private.h | 1 + - src/cairo-svg-surface.c | 53 +++++++++++++++++++-------------------- - 2 files changed, 27 insertions(+), 27 deletions(-) - -commit 936c965777c867bd4de7fd2278335837cc24eb22 -Author: Jinghua Luo -Date: Tue May 8 13:24:40 2007 +0800 - - glitz: kill some compiler warnings. - - src/cairo-glitz-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 413705872e321288bff1368c62eacad11805c2fc -Author: Jinghua Luo -Date: Tue May 8 13:19:35 2007 +0800 - - glitz: fix a typo preventing build glitz backend from succeeding. - - src/cairo-glitz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d81907734e18fb9302e78eccb1e25a838223b726 -Author: Chris Wilson -Date: Sat May 5 12:33:29 2007 +0100 - - [cairo-color] Only compare the shorts for equality. - - By only checking the premultiplied shorts inside the cairo_color_t we - only have to compare at most 8 bytes instead of the full 24 bytes. - - src/cairo-color.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 966a39396eb75d9d4ecc9997bb21d62fba176f78 -Author: Chris Wilson -Date: Fri May 4 15:25:18 2007 +0100 - - [NEWS] Surface cache for solid patterns - - Add an entry describing the surface cache to NEWS. - - NEWS | 21 +++++++++++++++++++++ - 1 files changed, 21 insertions(+), 0 deletions(-) - -commit 056d149212ce4999f8984db62b880ff2eb998ab3 -Author: Chris Wilson -Date: Wed May 2 12:54:49 2007 +0100 - - [cairo-pattern] Don't cache fallback surfaces - - _cairo_surface_create_similar_solid() may return an image surface, - should the backend not support the required content or should it - encounter an error whilst creating the surface. In those circumstances - we choose not to cache the fallback surface. - - src/cairo-pattern.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit a8c8e17d845c7060286dac58b553fb717b270788 -Author: Chris Wilson -Date: Wed May 2 10:00:22 2007 +0100 - - [cairo-pattern] Cache surface for solid patterns - - Original work by Jorn Baayen , - 2715f2098127d04d2f9e304580a26cd0842c0e64 - - We use a small cache of size 16 for surfaces created for solid patterns. - This mainly helps with the X backends where we don't have to create a - pattern for every operation, so we save a lot on X traffic. Xft uses a - similar cache, so cairo's text rendering traffic with the xlib backend - now completely matches that of Xft. - - The cache uses an static index variable, which itself acts like a cache of - size 1, remembering the most recently used solid pattern. So repeated - lookups for the same pattern hit immediately. If that fails, the cache is - searched linearly, and if that fails too, a new surface is created and a - random member of the cache is evicted. - - A cached surface can only be reused if it is similar to the destination. - In order to check for similar surfaces a new test is introduced for the - backends to determine that the cached surface is as would be returned by - a _create_similar() call for the destination and content. - - As surfaces are in general complex encapsulation of graphics state we - only return unshared cached surfaces and reset them (to clear any error - conditions and graphics state). In practice this makes little difference - to the efficacy of the cache during various benchmarks. However, in order - to transparently share solid surfaces it would be possible to implement a - COW scheme. - - Cache hit rates: (hit same index + hit in cache) / lookups - cairo-perf: (42346 + 28480) / 159600 = 44.38% - gtk-theme-torturer: (3023 + 3502) / 6528 = 99.95% - gtk-perf: (8270 + 3190) / 21504 = 53.29% - - This translates into a reduction of about 25% of the XRENDER traffic during - cairo-perf. - - src/cairo-directfb-surface.c | 15 ++++- - src/cairo-glitz-surface.c | 40 ++++++++++++- - src/cairo-image-surface.c | 29 ++++++++- - src/cairo-mutex-list-private.h | 3 +- - src/cairo-pattern.c | 135 +++++++++++++++++++++++++++++++++++----- - src/cairo-pdf-surface.c | 3 + - src/cairo-surface.c | 57 +++++++++++++++++ - src/cairo-win32-surface.c | 29 ++++++++- - src/cairo-xcb-surface.c | 39 +++++++++++- - src/cairo-xlib-surface.c | 45 +++++++++++++- - src/cairoint.h | 16 +++++ - 11 files changed, 388 insertions(+), 23 deletions(-) - -commit 52472b740e821dee444ede1fff041a99d344daab -Author: Chris Wilson -Date: Tue May 1 18:34:47 2007 +0100 - - [cairo-xlib-surface] Defer application of clip mask until required. - - By deferring the issuing of the X requests to set the clip mask we can - theoretically avoid some redundant requests, but primarily we remove - another path where X requests are emitted. - - src/cairo-xlib-surface-private.h | 7 ++++ - src/cairo-xlib-surface.c | 72 ++++++++++++++++++-------------------- - 2 files changed, 41 insertions(+), 38 deletions(-) - -commit a81823cdf9a147d02bb2365558ba667ab52fb3c9 -Author: Chris Wilson -Date: Fri Apr 20 17:32:25 2007 +0100 - - [cairo-xlib-display] Allocate the close_display hooks from a freelist. - - Similar to job allocation, but only useful for toolkits like GTK+ which - recreate a new xlib surface for each expose. - - src/cairo-xlib-display.c | 105 ++++++++++++++++++++++++--------------------- - src/cairo-xlib-private.h | 1 + - 2 files changed, 57 insertions(+), 49 deletions(-) - -commit c29ffc64ca341623d21a7861f1b5f131b420d20f -Author: Chris Wilson -Date: Fri Apr 20 16:33:56 2007 +0100 - - [cairo-xlib-display] Cache the screen_info for the lifetime of the display. - - Hold an extra reference to the screen_info and explicitly destroy the - list of screens on CloseDisplay. - - src/cairo-xlib-display.c | 19 +++++++++++++++++++ - src/cairo-xlib-screen.c | 3 +-- - 2 files changed, 20 insertions(+), 2 deletions(-) - -commit 1d6f7b7a0282d1b24bec82d9ad113b0d0a0cde98 -Author: Chris Wilson -Date: Thu Apr 19 13:01:52 2007 +0100 - - [cairo-xlib] Cache freed GCs - - Maintain a cache of freed GCs, one for each used depth. - - src/cairo-xlib-display.c | 6 +++- - src/cairo-xlib-private.h | 10 ++++++ - src/cairo-xlib-screen.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-xlib-surface.c | 22 ++++++++------ - 4 files changed, 98 insertions(+), 10 deletions(-) - -commit 88c6d25d4e53ddad6f3d465b2f5249c76a421b82 -Author: Chris Wilson -Date: Tue Apr 17 12:03:07 2007 +0100 - - [cairo-xlib-surface] Defer xlib resource cleanup. - - Due to caching, destruction of X11 resources may occur outside of a - usable X11 context. To avoid this, we defer the destruction onto a work - queue which will be run the next time we try to use the X11 connection - on behalf of the user (at which point we must have a usable X11 context!) - or we are closing the Display. - - src/cairo-xlib-surface.c | 180 +++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 156 insertions(+), 24 deletions(-) - -commit 8ad30ccdb0a00701b15003edb2fe0cd4a8a9dfb7 -Author: Chris Wilson -Date: Thu Apr 19 12:15:04 2007 +0100 - - [cairo-xlib] Introduce a workqueue for deferred destruction of X resources. - - Due to the nature of the reference counting, an X resource may be - destroyed later than anticipated and possibly from a different thread - than the original context. This becomes an issue for applications that - carefully manage their single X connection from a single thread and do - not use locking and are then suprised when cairo triggers X traffic when - performing work for a different part of the application in another thread. - - src/cairo-xlib-display.c | 171 +++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-xlib-private.h | 18 +++++ - src/cairo-xlib-screen.c | 1 - - src/cairo-xlib-surface.c | 21 +++++- - 4 files changed, 205 insertions(+), 6 deletions(-) - -commit dd8681b76b088bab45c99510258920f027490f70 -Author: Chris Wilson -Date: Mon Apr 16 15:04:08 2007 +0100 - - [cairo-xlib] Split per-display attributes from per-screen. - - Previously, we stored the per-display attributes inside a special - screen=NULL _cairo_xlib_screen_info_t. Now we keep track of known X - displays and store the screen information beneath the display structure - alongside the per-display hooks. - - src/Makefile.am | 8 +- - src/cairo-debug.c | 4 - - src/cairo-mutex-list-private.h | 2 +- - src/cairo-xlib-display.c | 258 +++++++++++++++++++++++++++++++++ - src/cairo-xlib-private.h | 37 ++++- - src/cairo-xlib-screen.c | 309 ++++++++------------------------------- - src/cairo-xlib-surface.c | 2 +- - src/cairoint.h | 6 - - 8 files changed, 359 insertions(+), 267 deletions(-) - -commit 9919f1ed9ccbec637252e06dd1de5f4665c873b4 -Author: Behdad Esfahbod -Date: Thu May 3 19:54:31 2007 -0400 - - [TODO] Add link to cairo_copy_clip() proposal - - TODO | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e5d9d51e55eb45704de6d98ac9265743af56711f -Author: Behdad Esfahbod -Date: Thu May 3 19:04:21 2007 -0400 - - [cairo-mutex] Fix typo. - - src/cairo-mutex.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 5ec27eef9566faa22fb1cbaf1a103a57ba5296c8 -Author: Chris Wilson -Date: Thu May 3 13:46:25 2007 +0100 - - [pixman] Free the old rects if we fail to allocate new. - - During the pixman_op, a complicated dance is performed to handle - enlarging the rectangle array to accommodate the op. One consequence - of this is to, under certain circumstances, replace the current - rectangle array with emptyData and track the old array with oldData. - Hence if we fail to realloc the enlarged array we need to free oldData. - - pixman/src/pixregion.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit ef3070821713c33fab78abb191e27a62e165f6c6 -Author: Behdad Esfahbod -Date: Wed May 2 16:22:13 2007 -0400 - - [boilerplate] Fix typo - - boilerplate/xmalloc.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c412e42c72c0ff53c678119638357ed95897ed78 -Author: Chris Wilson -Date: Wed May 2 21:17:39 2007 +0100 - - [cairo-xlib-surface] Check that the acquire surfaces are xlib surfaces - - _cairo_pattern_acquire_surfaces() may substitute an image surface for - either the source or the mask should the backend not support creation - of similar scratch surfaces or an error occurs during creation. For - composition we require xlib surfaces and so we must trigger the - fallback path if this happens. - - src/cairo-xlib-surface.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit f3153091b742daffa853f2c31b76aa9689c5165a -Author: Behdad Esfahbod -Date: Tue May 1 20:10:39 2007 -0400 - - [cairo-mutex] Document the API for adding cairo_mutex_t implementations - - src/cairo-mutex-type-private.h | 83 ++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 83 insertions(+), 0 deletions(-) - -commit 5bfd6553fd028f1429d72c60d04788de4a3c0d58 -Author: Behdad Esfahbod -Date: Tue May 1 19:48:33 2007 -0400 - - [cairo-mutex] Define a NOOP CAIRO_MUTEX_FINALIZE() for pthread - as now the mutex layer will define a generic CAIRO_MUTEX_FINALIZE() - whenever the implementation defines CAIRO_MUTEX_FINI(). In the - case of pthread however we don't need finalization as we don't - have any place to call it, and pthread_mutex_destroy() doesn't - do much anyway. - - src/cairo-mutex-type-private.h | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c4e0a059feb9c2e0c32966dcb168861e75a244b7 -Author: Behdad Esfahbod -Date: Tue May 1 19:46:51 2007 -0400 - - [cairo-mutex] Remove NOOP definition of CAIRO_MUTEX_INITIALIZE - as now the mutex layer will use a NOOP CAIRO_MUTEX_INITIALIZE - by default if the implementation does not define CAIRO_MUTEX_INIT. - - src/cairo-mutex-type-private.h | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 06cc74d974a99526829df558606174b41b0ee6e1 -Author: Behdad Esfahbod -Date: Tue May 1 19:45:29 2007 -0400 - - [cairo-mutex] Rewrite defaults for CAIRO_MUTEX macros not defined by the implementation - to make them better match the design I have in mind, that I will - document in a minute. They are a lot more readable and understandable - now. - - src/cairo-mutex-private.h | 93 ++++++++++++++++++++++++++++++++------------ - src/cairo-mutex.c | 18 +++++++- - 2 files changed, 82 insertions(+), 29 deletions(-) - -commit e87a25dc7c73a44b0cdfc4ef368736e7f77fb522 -Author: Behdad Esfahbod -Date: Tue May 1 19:24:26 2007 -0400 - - [cairo-mutex] Fix usage of CAIRO_MUTEX_DECLARE() - - Previously cairo-mutex.c was abusing cairo-mutex-private.h by - defining CAIRO_MUTEX_DECLARE before including it, and - cairo-mutex-private.h was simply not overriding any available - CAIRO_MUTEX_DECLARE. This is not the way it should be. - cairo-mutex.c should instead define CAIRO_MUTEX_DECLARE and - include cairo-mutex-list-private.h for itself. - - src/cairo-mutex-private.h | 4 +--- - src/cairo-mutex.c | 9 +++++---- - 2 files changed, 6 insertions(+), 7 deletions(-) - -commit 1a33e44aa5d73f568c4164c41f9595964e9f1bbb -Author: Behdad Esfahbod -Date: Tue May 1 18:13:19 2007 -0400 - - [RELEASING] Update GNOME URL to point to 2.19 planning page - - RELEASING | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4764e6222bf4d5223fc2fbb139bb31a24819b2b5 -Author: Behdad Esfahbod -Date: Tue May 1 00:50:03 2007 -0400 - - [cairo-mutex] Improve error message if no thread implementation found - - to put back Carl's "acknowledge and accept" clause (!) before suggesting - use of CAIRO_NO_MUTEX. - - src/cairo-mutex-type-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b5f015f21f3c800919a85f03a081a3ec1648a794 -Author: Behdad Esfahbod -Date: Tue May 1 00:48:33 2007 -0400 - - [cairo-mutex] Make sure mutex implementation declares enough macros - - We have defaults for the rest. - - src/cairo-mutex-private.h | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit b0a0a1779dc5cc16423473b6d80ee5099793a47f -Author: Behdad Esfahbod -Date: Tue May 1 00:47:02 2007 -0400 - - [cairo-mutex] Make CAIRO_MUTEX_INIT/FINI take mutex object, not pointer to it - - This is more consistent with CAIRO_MUTEX_LOCK/UNLOCK. - - src/cairo-ft-font.c | 4 ++-- - src/cairo-mutex-private.h | 2 +- - src/cairo-mutex-type-private.h | 19 +++++++------------ - src/cairo-mutex.c | 4 ++-- - src/cairo-scaled-font.c | 4 ++-- - 5 files changed, 14 insertions(+), 19 deletions(-) - -commit f9154f7eda4272ff99cc8a894082cc5aa1b008ef -Author: Behdad Esfahbod -Date: Tue May 1 00:44:42 2007 -0400 - - [cairo-mutex] Make sure CAIRO_MUTEX_FINI() evaluates its argument once - - src/cairo-mutex-private.h | 2 +- - src/cairo-mutex-type-private.h | 3 ++- - 2 files changed, 3 insertions(+), 2 deletions(-) - -commit a8d47d0c001a36ddd6c9f09247e6eada408edb24 -Author: Behdad Esfahbod -Date: Tue May 1 00:43:15 2007 -0400 - - [cairo-mutex] Rename macro arguments from "name" to "mutex" - - src/cairo-mutex-private.h | 6 +++--- - src/cairo-mutex-type-private.h | 20 ++++++++++---------- - src/cairo-mutex.c | 4 ++-- - 3 files changed, 15 insertions(+), 15 deletions(-) - -commit f57a536fceec73435bb13c44275717792b9b3a8c -Author: Carl Worth -Date: Tue May 1 13:45:58 2007 -0700 - - Increment version to 1.4.7 after the 1.4.6 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ddca8fec07ff95caeda6e4ce9efc3239b146bd2d -Author: Carl Worth -Date: Tue May 1 13:37:16 2007 -0700 - - perf: Add $(EXTRA_PROGRAMS) to CLEANFILES - - Otherwise these programs stick around and break distclean, - distcheck, and hence release-publish targets. - - perf/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 0390ed4f189365d595b40a45b0cf9eef5aa0c6ba -Author: Carl Worth -Date: Tue May 1 13:24:43 2007 -0700 - - Increment version to 1.4.6 (and library versioning to 13:3:11) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit c9e0bb5c79abfc50ae6a24f603c5493c3ac68e40 -Author: Carl Worth -Date: Tue May 1 13:20:56 2007 -0700 - - NEWS: Add notes for cairo 1.4.6 - - NEWS | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 116 insertions(+), 0 deletions(-) - -commit 7f7f4d4f35cd640733b990fcff924a090b43d360 -Author: Chris Wilson -Date: Tue May 1 12:37:38 2007 +0100 - - [cairo-xlib-surface.c] Free the Pixmap on surface construction failure. - - If we create the Pixmap whilst constructing a similar xlib surface, then - it our responsibility to free the Pixmap should we fail to allocate the - surface. - - src/cairo-xlib-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 3e3bd4df7e810a9acd14cd6f3717633f71691b9e -Author: Chris Wilson -Date: Tue May 1 11:28:45 2007 +0100 - - Minor typo in cairo_surface_destroy() documentation. - - The type of @surface is #cairo_surface_t, not #cairo_t. - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f7cdbd385a02d023e35357cd27dcc165ada667f2 -Author: Behdad Esfahbod -Date: Tue May 1 00:41:07 2007 -0400 - - [cairo-mutex-private.h] Move implementation-specific parts to cairo-mutex-type-private.h - - This fixes the problem reported by Dave Yeo that boilerplate wasn't building: - - In file included from ../src/cairo-scaled-font-private.h:44, - from cairo-boilerplate.c:65: - ../src/cairo-mutex-private.h:183: error: syntax error before "extern" - ../src/cairo-mutex-private.h:184: error: syntax error before "void" - ../src/cairo-mutex-private.h:185: error: syntax error before "void" - make[3]: *** [cairo-boilerplate.lo] Error 1 - - src/Makefile.am | 1 + - src/cairo-mutex-private.h | 81 +----------------------- - src/cairo-mutex-type-private.h | 131 +++++++++++++++++++++++++++++++++++++++ - src/cairo-scaled-font-private.h | 2 +- - 4 files changed, 135 insertions(+), 80 deletions(-) - -commit 6de0f2d15775a451ead2cc3e80530b7dc6b321a3 -Author: Behdad Esfahbod -Date: Mon Apr 30 22:38:00 2007 -0400 - - [cairo-mutex] Fix CAIRO_MUTEX_FINALIZE definition to take parantheses - This was breaking build on some systems as reported by Adrian Johnson - on the list. - - src/cairo-mutex-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3f297a0fccb01f4e10a093ddc44a25a937364447 -Author: Behdad Esfahbod -Date: Mon Apr 30 22:00:31 2007 -0400 - - [TODO] Add various items discussed recently - - TODO | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit 51440ad9027bd9ccf7d987c234995470f7699043 -Author: Behdad Esfahbod -Date: Mon Apr 30 21:57:29 2007 -0400 - - [ROADMAP] Mark clipping trapezoids done - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8ea48710dc933cd5dd52fb7d0c29eb8994a5d160 -Author: Behdad Esfahbod -Date: Mon Apr 30 19:20:56 2007 -0400 - - [perf] Check availability before including nonstandard headers - - configure.in | 4 ++++ - perf/cairo-perf-diff-files.c | 2 ++ - perf/cairo-perf.c | 6 +++++- - 3 files changed, 11 insertions(+), 1 deletions(-) - -commit fbc8bf05033a652d26c1defa56d12183e4009870 -Author: Behdad Esfahbod -Date: Mon Apr 30 19:11:31 2007 -0400 - - [perf] Don't build cairo-perf in "make all" - - perf/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4be608399f0d196a792f84fe4ddfce9acd2ea943 -Author: Adrian Johnson -Date: Sun Apr 29 19:29:24 2007 +0930 - - Fix cygwin compile error - - The WINVER macros need to be defined before including . - As a result of some recent include file rearranging, - was included indirectly before WINVER was defined. - - src/cairo-mutex-private.h | 12 ------------ - src/cairo-win32-surface.c | 11 ++++++----- - 2 files changed, 6 insertions(+), 17 deletions(-) - -commit a5d1fc923fdef354ceed8478c93e8b7cb734158a -Author: Chris Wilson -Date: Mon Apr 30 16:05:36 2007 +0100 - - Free all memory when cairo-perf exits. - - Similar to cairo-test, we free any global memory used by cairo for its - caches through the debug interfaces. We do this so that valgrind does - not unnecessary warn about memory leaks for the cached data and any true - leak is then not lost in the noise. - - perf/cairo-perf.c | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit 7e6ab5461c2eb75c948bcb4725613ebe826c697a -Author: Carl Worth -Date: Sat Apr 28 07:46:56 2007 -0700 - - Add missing prototypes for getline and strndup - - This is needed to prevent breaking the build for non-GNU systems. - - perf/cairo-perf-diff-files.c | 12 ++++++++++-- - 1 files changed, 10 insertions(+), 2 deletions(-) - -commit 422798db1d73c1a8ecc5877133b0325023f38e61 -Author: Carl Worth -Date: Sat Apr 28 07:46:15 2007 -0700 - - cairo-perf-diff-files: Add missing include of libgen.h for basename - - perf/cairo-perf-diff-files.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit d89d8e6b45b7c13b77aa7c2f1c480f58429b08af -Author: Carl Worth -Date: Sat Apr 28 07:45:26 2007 -0700 - - pixman.h: Add missing definition of WARN_UNUSED_RESULT - - This was breaking the build on systems without support for the - __warn_unused_result__ attribute. - - pixman/src/pixman.h | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit cb6fcdae92503964448144413e48ac388861d95f -Author: Carl Worth -Date: Sat Apr 28 07:38:56 2007 -0700 - - Fix typo in Makefile preventing builds from succeeding - - The cairo-ps-surface-private.h file was not getting included in the - distribution. - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a392cc85081dd1e0fa3342c313af94a1e0c289b1 -Author: Carl Worth -Date: Fri Apr 27 22:46:47 2007 -0700 - - Clarify documentation of cairo_in_stroke and cairo_in_fill - - Like cairo_stroke_extents and cairo_fill_extents, these functions - work without regard to the surface dimensions or the current clip - region. - - src/cairo.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 8286b8741675ae163fc40187cd04e84395954c6e -Author: Carl Worth -Date: Fri Apr 27 17:23:08 2007 -0700 - - Clip trapezoids that are partially (or wholly) outside the clip region. - - It's quite simple to add a new _cairo_traps_limit call which installs - a box into the cairo_traps_t structure. Then at the time of - _cairo_traps_add we can discard any trapezoid that is wholly outside - the box and also clip any trapezoid that is partially outside the box. - - We take advantage of this for both cairo_stroke and cairo_fill, (when - cairo is computing the trapezoids in cairo-surface-fallback.c). Note - that we explicitly do not do any clipping for cairo_stroke_extents, - cairo_fill_extents, cairo_in_stroke, or cairo_in_fill which are - defined to ignore clipping. - - As seen by the long-lines perf case, this fix successfully works - around the bug in the X server where it creates overly large masks for - partially-outside-the-destination-surface trapezoids: - - xlib-rgba long-lines-uncropped-100 545.84 -> 5.83: 93.09x speedup - ██████████████████████████████████████████████ - xlib-rgb long-lines-uncropped-100 554.74 -> 8.10: 69.04x speedup - ██████████████████████████████████ - - src/cairo-surface-fallback.c | 52 ++++++++++++++++++++++++++++++++ - src/cairo-traps.c | 68 +++++++++++++++++++++++++++++++++++++++++- - src/cairoint.h | 7 ++++ - 3 files changed, 126 insertions(+), 1 deletions(-) - -commit 2dcfb944b044172640a3784246d6b3129b686b60 -Author: Carl Worth -Date: Fri Apr 27 16:41:17 2007 -0700 - - Don't test PDF tests known to fail due to poppler limitations - - The following four tests are disabled: - - gradient-alpha, linear-gradient, text-pattern, trap-clip - - We don't use XFAIL as that would disable all backends, (but - we can still usefully use these tests on backends other than - PDF). - - boilerplate/cairo-boilerplate-pdf.c | 15 +++++++++++++++ - test/gradient-alpha.c | 3 ++- - test/linear-gradient.c | 3 ++- - test/text-pattern.c | 3 ++- - test/trap-clip.c | 3 ++- - 5 files changed, 23 insertions(+), 4 deletions(-) - -commit 179e3399101b5a0daa907dcfe1f9f11ae8fe691e -Author: Adrian Johnson -Date: Fri Apr 27 16:01:56 2007 -0700 - - PDF: Change CTM to identity - - Some PDF viewers forget the CTM when drawing gradient patterns - with SMasks. This patch works around these bugs by using the default - identity matrix for the CTM. All paths are transformed from - cairo to pdf coordinates before writing to the pdf file. - - src/cairo-pdf-surface-private.h | 1 + - src/cairo-pdf-surface.c | 135 +++++++++++++++++++-------------------- - 2 files changed, 67 insertions(+), 69 deletions(-) - -commit 1816d7c590ae4d423f9314a8a7794e2cae854da3 -Author: Adrian Johnson -Date: Fri Apr 27 09:49:45 2007 -0700 - - Add support for transparent gradients - - This is based on the gradient patch written by Miklós Erdélyi at - http://lists.freedesktop.org/archives/cairo/2006-August/007648.html - - Currently only EXTEND_NONE and EXTEND_PAD are supported. Other extend - types will go through the image fallback path. - - src/cairo-pdf-surface-private.h | 13 + - src/cairo-pdf-surface.c | 950 ++++++++++++++++++++++++++++++--------- - 2 files changed, 752 insertions(+), 211 deletions(-) - -commit 050dad71734739f1eaf8976ca5bb88e47c76409c -Author: Carl Worth -Date: Thu Apr 26 11:30:27 2007 -0700 - - cairo-perf-diff-files: Always print old and new configuration names - - Previously, if the change in the first test case was small enough - to be considered insignificant, then the header lines showing the - names of the old and new configurations would be omitted. This - commit fixes that bug. - - perf/cairo-perf-diff-files.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 6035d3b47e635f53b361dc7924e161a214e038b3 -Author: Carl Worth -Date: Wed Apr 25 16:28:14 2007 -0700 - - cairo-perf-diff: Repair command-line option parsing. - - Apparently --force and --html have been broken since the attempt - to address --help in ef5611df6c6bc8d9c6877af3a59c66fa6fc5c13a . - - perf/cairo-perf-diff | 14 +++++++++----- - 1 files changed, 9 insertions(+), 5 deletions(-) - -commit 0a1d2070e252921e097fec89537537675f8b7161 -Author: Jeff Muizelaar -Date: Wed Apr 25 16:01:29 2007 -0700 - - Fix bugs in fbCompositeSrc_8888x8x8888mmx and fbCompositeSrc_x888x8x8888mmx - - And re-enable fbCompositeSrc_8888x8x8888mmx now that it should work. - - This gives another little boost to the paint-with-alpha perf test: - - image-rgba paint-with-alpha_image_rgba_over-512 11.76 -> 5.20: 1.85x speedup - ▉ - image-rgb paint-with-alpha_image_rgba_over-512 11.76 -> 5.26: 1.84x speedup - ▉ - - pixman/src/fbmmx.c | 20 +++++++++----------- - pixman/src/fbpict.c | 8 +++----- - 2 files changed, 12 insertions(+), 16 deletions(-) - -commit 342de46eb4033e1cccfec8b905c0002cc880c9fb -Author: Carl Worth -Date: Wed Apr 25 10:25:57 2007 -0700 - - Make the traditional speedup vs. slowdown report style available again - - Now, if you pass exactly two performance reports on the command line - you'll get the traditional report style again, (so the tool remains - backwards compatible). If you really want the new style with two - reports you can get it by adding /dev/null as a third argument. - - perf/cairo-perf-diff-files.c | 112 ++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 103 insertions(+), 9 deletions(-) - -commit db2a761ae7055a61d3705a76526cbd0b71fcc95d -Author: Carl Worth -Date: Wed Apr 25 08:53:46 2007 -0700 - - Implement support for generating a report from more than two files - - This support is intended to compare the identical backends across multiple - reports from several different configurations, (of one sort or another). - The configuration names used in the report are taken from the filenames - of the report files, (which will format most nicely if 8 characters or - less). - - The traditional two-input report mode, (showing one line perdiff with - all speedups before all slowdowns), is removed with this commit, but - is intended to return again shortly. - - perf/cairo-perf-diff-files.c | 270 ++++++++++++++++++++++++------------------ - 1 files changed, 157 insertions(+), 113 deletions(-) - -commit 5030cfce5df507a0338e1070a5dab3851ed9df7c -Author: Carl Worth -Date: Thu Apr 19 16:32:57 2007 -0700 - - cairo-perf-diff-files: Use pointers instead of indexing to iterate over reports - - We terminate the iteration by adding a final report with a NULL - name. This will simplify future code that iterates over more than - two reports simultaneously. - - perf/cairo-perf-diff-files.c | 31 ++++++++++++++++++------------- - 1 files changed, 18 insertions(+), 13 deletions(-) - -commit 6121f4fccfe8d98fb09c096402da05d29d10b9e8 -Author: Carl Worth -Date: Thu Apr 19 16:21:39 2007 -0700 - - cairo-perf-diff-files: Simplify code to grow report->tests - - perf/cairo-perf-diff-files.c | 14 +++++--------- - 1 files changed, 5 insertions(+), 9 deletions(-) - -commit cc03f0499e7b133a2e5c14e55207259ea000b8c2 -Author: Carl Worth -Date: Thu Apr 19 16:09:06 2007 -0700 - - cairo-perf-diff-files: Sort and compute stats at the time of loading a report - - perf/cairo-perf-diff-files.c | 150 +++++++++++++++++++++--------------------- - 1 files changed, 75 insertions(+), 75 deletions(-) - -commit 228c83c9d2d1fdb6fa3af8a650640a47c8e21e36 -Author: Carl Worth -Date: Thu Apr 19 14:35:51 2007 -0700 - - cairo-perf-diff: Separate command-line options within the args structure - - A function like cairo_perf_report_diff wants the options, but really - doesn't want/need to see the filenames for example, - - perf/cairo-perf-diff-files.c | 44 +++++++++++++++++++++++------------------ - 1 files changed, 25 insertions(+), 19 deletions(-) - -commit 876786b3f7316b99a51ba8225e34581be13a883d -Author: Carl Worth -Date: Thu Apr 19 13:54:50 2007 -0700 - - Move implementation of getline and strndup - - These kept getting in my way as I looked for structure declarations - at the top of the file. - - perf/cairo-perf-diff-files.c | 108 ++++++++++++++++++++--------------------- - 1 files changed, 53 insertions(+), 55 deletions(-) - -commit 90d532e08f25644c4e621b0b7e592f4531a39d88 -Author: Carl Worth -Date: Thu Apr 19 13:52:03 2007 -0700 - - Replace old and new reports with reports array - - Another baby step toward allowing comparison of more than two reports. - - perf/cairo-perf-diff-files.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit c6c17633e40f549ede5761095a0652c08adeee08 -Author: Carl Worth -Date: Thu Apr 19 13:31:37 2007 -0700 - - Replace old_filename and new_filename with a filenames array - - More preparation for comparing more than two perf reports. - - perf/cairo-perf-diff-files.c | 30 +++++++++++++----------------- - 1 files changed, 13 insertions(+), 17 deletions(-) - -commit 1849a7a8bededb281fbb07ec0939f8d1f4954771 -Author: Carl Worth -Date: Thu Apr 19 12:55:04 2007 -0700 - - cairo-perf-diff-files: Add new --min-change option, (replacing third positional argument) - - An upcoming change will allow cairo-perf-diff-files to generate - a report based on more than two files. This prepares for that by - moving the minimum-change support from the 3rd positional argument - to a new --min-change option. - - perf/cairo-perf-diff-files.c | 39 +++++++++++++++++++++++---------------- - 1 files changed, 23 insertions(+), 16 deletions(-) - -commit ef5611df6c6bc8d9c6877af3a59c66fa6fc5c13a -Author: Carl Worth -Date: Thu Apr 19 11:26:47 2007 -0700 - - cairo-perf-diff: Fix implementation of --help - - Previously only "--" would givethe usage, and not "--help" - as intended. The new approach has been tested with ash, bash, - and dash, (hopefully that's good enough). - - perf/cairo-perf-diff | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a8d4fed67a32c6040c27615e063466d654b55a3a -Author: Carl Worth -Date: Thu Apr 19 10:02:22 2007 -0700 - - cairo-perf-diff-files: Remove some overzealous option parsing. - - The code was complicated and confusing, and only existed to implement - undocumented and unneeded command-line options. - - perf/cairo-perf-diff-files.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) - -commit fe9dd719561048af1f2c3c8c43e46f7d97575053 -Author: Carl Worth -Date: Wed Apr 18 17:01:36 2007 -0700 - - Correct misattribution of Mathias' work to Chris - - NEWS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 29670d37665d184d78d568070cb409acf98ee797 -Author: Carl Worth -Date: Mon Apr 23 10:24:03 2007 -0700 - - Add a content value to solid patterns - - This allows for the surface acquired from the pattern to have the - same content. In particular, in a case such as cairo_paint_with_alpha - we can now acquire an A8 mask surface instead of an ARGB32 mask - surface which can be rendered much more efficiently. This results - in a 4x speedup when using the OVER operator with the recently - added paint-with-alpha test: - - Speedups - ======== - image-rgb paint-with-alpha_image_rgb_over-256 2.25 -> 0.60: 4.45x speedup - ███▌ - - It does slowdown the same test when using the SOURCE operator, but - I don't think we care. Performing SOURCE with a mask is already a very - slow operation, (hitting compositeGeneral), so the slowdown here is - likely from having to convert from A8 back to ARGB32 before the - generalized compositing. So if someone cares about this slowdown, - (though SOURCE with cairo_paint_with_alpha doesn't seem extremely - useful), they will probably be motivated enough to contribute a - customized compositing function to replace compositeGeneral in which - case this slowdown should go away: - - image-rgba paint-with-alpha_image_rgb_source-256 3.84 -> 8.86%: 1.94x slowdown - █ - - src/cairo-clip.c | 3 ++- - src/cairo-glitz-surface.c | 5 ++++- - src/cairo-gstate.c | 3 ++- - src/cairo-pattern.c | 41 ++++++++++++++++++++++++++--------------- - src/cairo-surface-fallback.c | 12 ++++++++---- - src/cairo-surface.c | 2 +- - src/cairo-xcb-surface.c | 3 ++- - src/cairo-xlib-surface.c | 3 ++- - src/cairo.c | 2 +- - src/cairoint.h | 9 ++++++--- - 10 files changed, 54 insertions(+), 29 deletions(-) - -commit fea5336e2db201be69256ef1bafd418fee98a21e -Author: Carl Worth -Date: Wed Apr 25 10:36:12 2007 -0700 - - Allow fbCompositeSrc_x888x8x8888mmx when destination has alpha - - Previously the check for this optimized function would only allow - the function to be called if the source and destination had - identical formats. But the function doesn't read the destination - alpha (if any) so can be used when it exists as well. - - (Thanks to Jeff Muizelaar for pointing out this problem.) - - pixman/src/fbpict.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 72b812be8c69108c46334841823a2e9103b69516 -Author: Carl Worth -Date: Mon Apr 23 09:35:35 2007 -0700 - - perf: Add new paint-with-alpha test - - MacSlow noticed that cairo_paint_with_alpha is much slower than - it should be, (and jrmuizel has a nice plan for fixing the - performance bug). - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/paint-with-alpha.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 48 insertions(+), 0 deletions(-) - -commit 302f1146da5b179e5016e2d523e891437c1a256b -Author: Carl Worth -Date: Mon Apr 23 09:26:32 2007 -0700 - - Fix two bugs in documentation code sample of cairo_arc - - The sample code for drawing an ellipse had width and height - reversed in the call to cairo_scale, and also had both - incorrectly inverted. - - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e37c9edac02ccd9fbcbc4622a2f421f4be0d597e -Author: Behdad Esfahbod -Date: Tue Apr 24 17:33:37 2007 -0400 - - [ROADMAP] Add cairo_xlib_surface_get_xrender_format() - - ROADMAP | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit ac0ef0302e68ba17ec5a59c689579f1854c7386c -Merge: d3cf214... 260dcb3... -Author: Peter Weilbacher -Date: Mon Apr 23 23:18:05 2007 +0200 - - Merge branch 'master' of git+ssh://pmw@git.freedesktop.org/git/cairo - -commit 260dcb316e14945e7600406954e4876e8827a777 -Author: Chris Wilson -Date: Mon Apr 23 13:54:37 2007 +0100 - - Add a _cairo_error() to png_simple_error_callback() - - With the introduction of the error callbacks for PNG, we have the - opportunity for the user to set a breakpoint (via _cairo_error) at the - point the error is first rasied. - - src/cairo-png.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 0fce7e85a1c853216866ddf6a40725e7ce57fe93 -Author: Chris Wilson -Date: Mon Apr 23 13:00:40 2007 +0100 - - Do not print out libpng error messages to stderr. - - We wish to avoid writing to file descriptors (and streams) that are - outside cairo's control. In this case, the messages are superfluous as - the errors are propagated via the cairo_status_t returns. - - src/cairo-png.c | 31 +++++++++++++++++++++++++------ - 1 files changed, 25 insertions(+), 6 deletions(-) - -commit 59670dd5d3854af1f7cbdef984df7802c338330b -Author: Behdad Esfahbod -Date: Mon Apr 23 05:19:56 2007 -0400 - - [ROADMAP] Add URL to David Turner's patchset - - ROADMAP | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ce91a176489f4cb8f40c5ec29f23881d1e013a9f -Author: Behdad Esfahbod -Date: Sun Apr 22 16:13:22 2007 -0400 - - [cairo-mutex] Add a poor man's mutex implementation in case of CAIRO_NO_MUTEX - just for fun. - - src/cairo-mutex-private.h | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -commit 97b50e99bfa785d77b4900d3070f22a22827db22 -Author: Behdad Esfahbod -Date: Sun Apr 22 16:05:25 2007 -0400 - - [BeOS] Remove old-style mutex initialization cruft - - src/cairo-beos-surface.cpp | 34 ---------------------------------- - 1 files changed, 0 insertions(+), 34 deletions(-) - -commit 0fd13a3db00e7e11915b5a7bbe81bf8f43f1941f -Author: Behdad Esfahbod -Date: Sun Apr 22 16:04:49 2007 -0400 - - [BeOS] Add mutex implementation - - src/cairo-mutex-private.h | 17 ++++++----------- - 1 files changed, 6 insertions(+), 11 deletions(-) - -commit fc83784525d3f2bb3e09d931cc9c83261c0b73ae -Author: Behdad Esfahbod -Date: Sun Apr 22 15:56:18 2007 -0400 - - [cairo-mutex] Properly paranthesize macro arguments - - src/cairo-mutex-private.h | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 406fc63b68203e86c9236d06448e2ffa2c259669 -Author: Behdad Esfahbod -Date: Sun Apr 22 07:11:47 2007 -0400 - - [util] Change make target from "tools" to "util" - to match targets like "test", "perf", and "doc", that match - their directory names. - - util/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5bc1f3365d0002f2864bc30638df85c392a495f5 -Author: Peter Weilbacher -Date: Sun Apr 22 07:11:00 2007 -0400 - - [perf] Add OS/2 implementation for timer routines - - perf/Makefile.am | 4 ++ - perf/cairo-perf-os2.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 99 insertions(+), 0 deletions(-) - -commit 3b46e105bd781d7a4081068a14668334a7c82986 -Author: Behdad Esfahbod -Date: Sat Apr 21 08:21:01 2007 -0400 - - [util] Import my malloc wrapper that prints simple statistics - - To build, do: - - make malloc-stats.so - - inside util/, and to use, run: - - LD_PRELOAD=malloc-stats.so some-program - - For binaries managed by libtool, eg, cairo-perf, do: - - ../libtool --mode=execute /bin/true ./cairo-perf - LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf - - The code also includes Jeff Muizelaar's libbacktracesymbols that - is a much better implementation of backtrace_symbols() than what - is provided by glibc. That can be built by: - - make backtrace-symbols.so - - util/.gitignore | 17 +++ - util/Makefile.am | 22 +++ - util/backtrace-symbols.c | 361 ++++++++++++++++++++++++++++++++++++++++++++++ - util/malloc-stats.c | 301 ++++++++++++++++++++++++++++++++++++++ - 4 files changed, 701 insertions(+), 0 deletions(-) - -commit d3cf2144dbd42737d5e2c45908fbca082dd54022 -Merge: 6c12961... abdcbf8... -Author: Peter Weilbacher -Date: Sat Apr 21 13:50:30 2007 +0200 - - Merge branch 'master' of git+ssh://pmw@git.freedesktop.org/git/cairo - -commit 6c129611408ddb5cf0a9a821b30bbb8148af08d9 -Author: Peter Weilbacher -Date: Sat Apr 21 13:49:04 2007 +0200 - - Use deprecated png symbol only when compiling against old version - - png_set_gray_1_2_4_to_8 is deprecated in libpng >= 1.2.9, the identical - substitute for it is png_set_expand_gray_1_2_4_to_8 - - src/cairo-png.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 515491334cc32d8be856f25b7d2e36e63cb72246 -Author: Behdad Esfahbod -Date: Sat Apr 21 07:48:10 2007 -0400 - - Add util/ to distribution - We already reference an script in util/ in PORTING_GUIDE, but was - not shipping it! - - Makefile.am | 2 +- - configure.in | 1 + - util/Makefile.am | 4 ++++ - 3 files changed, 6 insertions(+), 1 deletions(-) - -commit abdcbf896af69677058490d1d08ba58672c429ec -Author: Behdad Esfahbod -Date: Sat Apr 21 07:23:30 2007 -0400 - - [boilerplate] Add missing headers. Oops! - I blame git for it... - - boilerplate/cairo-boilerplate-pdf.h | 33 +++++++++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate-xlib.h | 33 +++++++++++++++++++++++++++++++++ - 2 files changed, 66 insertions(+), 0 deletions(-) - -commit 781f2533a32d84ca43a1bdf646bb69b7adab7a77 -Author: Behdad Esfahbod -Date: Sat Apr 21 07:21:38 2007 -0400 - - [.gitignore] Add cairo-*.*.* - - .gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit febcd689e7a4b277bbebffd8ebdc0970a04f68eb -Author: Behdad Esfahbod -Date: Sat Apr 21 07:19:47 2007 -0400 - - Update .gitignore to ignore .perf - - .gitignore | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit de425ada871c71277a53687dcd8a93a607d4faab -Author: Behdad Esfahbod -Date: Sat Apr 21 03:46:18 2007 -0400 - - [doc/public/Headers.mk] Update. - - doc/public/Headers.mk | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -commit 519b722747d606170741ccc520d6ec7332b2481f -Author: Behdad Esfahbod -Date: Sat Apr 21 03:45:51 2007 -0400 - - [RELEASING] Remove *-test.h from instructions - as they are all removed now. - - RELEASING | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0108f9c69f2f5391ff6b1066ae6b58fe3f71255a -Author: Behdad Esfahbod -Date: Sat Apr 21 03:44:53 2007 -0400 - - [check-def.sh] Do not allow _cairo_.*_test_ symbols anymore - as all are removed now. - - src/check-def.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 79098c037043f45df0a18265417e96d6214d68e1 -Author: Behdad Esfahbod -Date: Sat Apr 21 03:43:04 2007 -0400 - - [scaled-font] Get rid of _cairo_scaled_font_test_set_max_glyphs_cached_per_font - in favor of cairo_boilerplate_scaled_font_set_max_glyphs_cached. - - boilerplate/Makefile.am | 1 + - boilerplate/cairo-boilerplate-scaled-font.h | 34 ++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 11 ++++++ - src/Makefile.am | 1 - - src/cairo-scaled-font-private.h | 1 + - src/cairo-scaled-font-test.h | 49 --------------------------- - src/cairo-scaled-font.c | 14 ++------ - test/glyph-cache-pressure.c | 6 ++-- - 8 files changed, 53 insertions(+), 64 deletions(-) - -commit 44563161de82a5ee7bbf8f100213ea1a3af6d5db -Author: Behdad Esfahbod -Date: Sat Apr 21 03:38:24 2007 -0400 - - Move a couple typedefs to cairo-types-private.h - - src/cairo-types-private.h | 2 ++ - src/cairoint.h | 2 -- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 737d20a5702a18a1480c3b45f876e886b82b065c -Author: Behdad Esfahbod -Date: Sat Apr 21 03:35:07 2007 -0400 - - Move cairo_hash_entry_t to cairo-types-private.h - - src/cairo-hash-private.h | 38 -------------------------------------- - src/cairo-scaled-font-private.h | 2 ++ - src/cairo-types-private.h | 38 ++++++++++++++++++++++++++++++++++++++ - 3 files changed, 40 insertions(+), 38 deletions(-) - -commit 51ce92c3db093c8d26c8002ddbc105b11e7607bf -Author: Behdad Esfahbod -Date: Sat Apr 21 03:24:31 2007 -0400 - - [scaled-font] Move cairo_scaled_font_t to cairo-scaled-font-private.h - - src/Makefile.am | 1 + - src/cairo-scaled-font-private.h | 109 +++++++++++++++++++++++++++++++++++++++ - src/cairo-scaled-font.c | 1 + - src/cairoint.h | 66 +----------------------- - 4 files changed, 112 insertions(+), 65 deletions(-) - -commit 91f1056caf46d71c99eb044afbc943b92fb5550c -Author: Behdad Esfahbod -Date: Sat Apr 21 03:18:30 2007 -0400 - - Move cairo_cache_t to cairo-types-private.h - - src/cairo-cache-private.h | 2 +- - src/cairo-cache.c | 11 ----------- - src/cairo-hash-private.h | 4 ++-- - src/cairo-types-private.h | 14 ++++++++++++++ - 4 files changed, 17 insertions(+), 14 deletions(-) - -commit d2bb5f30079badf1029fa71faab9d6781092a271 -Author: Behdad Esfahbod -Date: Sat Apr 21 03:08:26 2007 -0400 - - [svg] Get rid of _cairo_svg_test_force_fallbacks - in favor of cairo_boilerplate_svg_surface_force_fallbacks. - - boilerplate/Makefile.am | 1 + - boilerplate/cairo-boilerplate-svg.c | 19 ++++++++++++ - boilerplate/cairo-boilerplate-svg.h | 33 +++++++++++++++++++++ - src/Makefile.am | 4 +- - src/cairo-svg-surface-private.h | 2 + - src/cairo-svg-surface.c | 20 +------------ - src/cairo-svg-test.h | 54 ----------------------------------- - test/fallback-resolution.c | 4 +- - 8 files changed, 60 insertions(+), 77 deletions(-) - -commit ea1b7c2d8a55d694d575c0bb711e60f70a33ff77 -Author: Behdad Esfahbod -Date: Sat Apr 21 03:04:03 2007 -0400 - - [paginated] Include cairo-surface-private.h - - src/cairo-paginated-surface-private.h | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7e0ae8bd43dfd8b052d021601912b46956b2921e -Author: Behdad Esfahbod -Date: Sat Apr 21 02:57:55 2007 -0400 - - [svg] Move cairo_svg_surface_t to cairo-svg-surface-private.h - - boilerplate/cairo-boilerplate-ps.c | 6 +++- - src/Makefile.am | 2 +- - src/cairo-svg-surface-private.h | 71 ++++++++++++++++++++++++++++++++++++ - src/cairo-svg-surface.c | 24 +------------ - 4 files changed, 78 insertions(+), 25 deletions(-) - -commit 3885fff3e6215023e801dd2c72fc39560a4e22fd -Author: Behdad Esfahbod -Date: Fri Apr 20 03:33:58 2007 -0400 - - [ps] Get rid of _cairo_ps_test_force_fallbacks - - in favor of cairo_boilerplate_ps_surface_force_fallbacks. - - boilerplate/Makefile.am | 1 + - boilerplate/cairo-boilerplate-ps.c | 15 ++++++++++ - boilerplate/cairo-boilerplate-ps.h | 33 ++++++++++++++++++++++ - src/Makefile.am | 2 +- - src/cairo-ps-surface-private.h | 3 +- - src/cairo-ps-surface.c | 24 +-------------- - src/cairo-ps-test.h | 54 ------------------------------------ - test/fallback-resolution.c | 4 +- - 8 files changed, 56 insertions(+), 80 deletions(-) - -commit 57dc972d6e5fe715a83cbcaad9c6cc3d38bf8129 -Author: Behdad Esfahbod -Date: Fri Apr 20 03:02:48 2007 -0400 - - [ps] Move cairo_ps_surface_t to cairo-ps-surface-private.h - - src/Makefile.am | 2 +- - src/cairo-ps-surface-private.h | 79 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-ps-surface.c | 33 +---------------- - 3 files changed, 81 insertions(+), 33 deletions(-) - -commit 3e69fbca6233e9f568935dbb69bf14bc34812d77 -Author: Behdad Esfahbod -Date: Fri Apr 20 03:00:21 2007 -0400 - - [pdf] Fix header file header! - - src/cairo-pdf-surface-private.h | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 29247e5010632f0453367b64a38c865076605681 -Author: Behdad Esfahbod -Date: Fri Apr 20 02:57:12 2007 -0400 - - [ps/pdf/svg] Fix minor coding style issue - - src/cairo-pdf-surface.c | 12 ++++++------ - src/cairo-ps-surface.c | 2 +- - src/cairo-svg-surface.c | 14 +++++++------- - 3 files changed, 14 insertions(+), 14 deletions(-) - -commit 20ce190e71f838dea598cbd5267f047b75945cee -Author: Behdad Esfahbod -Date: Sat Apr 21 02:50:53 2007 -0400 - - [pdf] Get rid of _cairo_pdf_test_force_fallbacks - in favor of cairo_boilerplate_pdf_surface_force_fallbacks. - - boilerplate/Makefile.am | 1 + - boilerplate/cairo-boilerplate-pdf.c | 19 ++++++++++++ - src/cairo-pdf-surface-private.h | 2 + - src/cairo-pdf-surface.c | 25 ++-------------- - src/cairo-pdf-test.h | 54 ----------------------------------- - test/fallback-resolution.c | 4 +- - 6 files changed, 27 insertions(+), 78 deletions(-) - -commit 03477064fa639ab1c735467d1889bde7c99313c4 -Author: Behdad Esfahbod -Date: Sat Apr 21 02:25:51 2007 -0400 - - [paginated] Move cairo_paginated_surface_t to cairo-paginated-surface-private.h - The old cairo-paginated-surface-private.h is cairo-paginated-private.h now. - - src/Makefile.am | 1 + - src/cairo-analysis-surface.c | 2 +- - src/cairo-paginated-private.h | 136 +++++++++++++++++++++++++++++++++ - src/cairo-paginated-surface-private.h | 116 ++++++---------------------- - src/cairo-paginated-surface.c | 32 +------- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-types-private.h | 1 + - src/test-paginated-surface.c | 2 +- - 10 files changed, 170 insertions(+), 126 deletions(-) - -commit 21a7de61c26faaaa1ce96cddab6d777dbb37d0bb -Author: Behdad Esfahbod -Date: Fri Apr 20 02:52:53 2007 -0400 - - [boilerplate] Add cairo-boilerplate-xlib.h to Makefile.am - - boilerplate/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 68e2158aaeacefcff8e6df11c25bb61ab0e89606 -Author: Behdad Esfahbod -Date: Fri Apr 20 02:37:15 2007 -0400 - - [pdf] Move cairo_pdf_surface_t to cairo-pdf-surface-private.h - - src/Makefile.am | 3 +- - src/cairo-output-stream-private.h | 2 +- - src/cairo-pdf-surface-private.h | 83 +++++++++++++++++++++++++++++++ - src/cairo-pdf-surface.c | 42 +--------------- - src/cairo-scaled-font-subsets-private.h | 2 - - src/cairo-types-private.h | 3 + - 6 files changed, 90 insertions(+), 45 deletions(-) - -commit 183c6af4f1730861a604a912a0609e315da65ecc -Author: Behdad Esfahbod -Date: Fri Apr 20 02:30:46 2007 -0400 - - [paginated] Move cairo_paginated_mode_t to cairo-types-private.h - - as it is used in surface structs for PS/PDF/SVG and we will need - it. - - src/cairo-paginated-surface-private.h | 5 ----- - src/cairo-types-private.h | 5 +++++ - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit cd72167ede50b44aa3559ee63b95e12e4b51d80f -Author: Behdad Esfahbod -Date: Fri Apr 20 02:27:19 2007 -0400 - - [xlib] Get rid of _cairo_xlib_test_disable_render - - in favor of cairo_boilerplate_xlib_surface_disable_render. - - boilerplate/cairo-boilerplate-xlib.c | 15 +++++++++ - src/Makefile.am | 2 +- - src/cairo-xlib-surface.c | 23 +-------------- - src/cairo-xlib-test.h | 54 ---------------------------------- - test/xlib-surface.c | 8 +++-- - 5 files changed, 22 insertions(+), 80 deletions(-) - -commit 908418cb4d43e387d06698a43626ac9a663d6c2a -Author: Behdad Esfahbod -Date: Fri Apr 20 02:25:55 2007 -0400 - - [cairo-surface] Move cairo_surface_t struct in cairo-surface-private.h - - src/Makefile.am | 2 + - src/cairo-surface-private.h | 96 ++++++++++++++++++++++++++++++++++++++ - src/cairo-types-private.h | 65 +++++++++++++++++++++++++ - src/cairo-xlib-private.h | 1 - - src/cairo-xlib-surface-private.h | 2 + - src/cairoint.h | 74 +---------------------------- - 6 files changed, 167 insertions(+), 73 deletions(-) - -commit 8ae02fa470eace1b449c09b6cd0f86cc09b81ec2 -Author: Behdad Esfahbod -Date: Fri Apr 20 01:54:35 2007 -0400 - - [boilerplate] Minor indentation fix - - boilerplate/cairo-boilerplate-xlib-private.h | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 1345552ac24099900acdb968f905d6e75cc20593 -Author: Behdad Esfahbod -Date: Fri Apr 20 01:46:23 2007 -0400 - - [xlib] Move cairo_xlib_surface_t definition into cairo-xlib-surface-private.h - - src/Makefile.am | 3 +- - src/cairo-xlib-surface-private.h | 91 ++++++++++++++++++++++++++++++++++++++ - src/cairo-xlib-surface.c | 54 +---------------------- - 3 files changed, 94 insertions(+), 54 deletions(-) - -commit 735be3f09d1d150909305ff3232fda42efcb87bd -Author: Peter Weilbacher -Date: Fri Apr 20 20:46:55 2007 +0200 - - Fix build break related to mutexes on OS/2 - - cairo_mutex_t is HTMX which is ULONG on OS/2, so we have to set the - mutex itself to 0 and not the address... - - src/cairo-mutex-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5135bcf414abc91e7777e2c024c9b6e10bf6115c -Author: Chris Wilson -Date: Fri Apr 20 19:08:07 2007 +0100 - - cairo-boilerplate - use xmalloc and friends - - Prefer to abort gracefully if we run out of memory (or simply to protect - them from memfault). - - boilerplate/cairo-boilerplate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b6be361d0ef3b81ef5cbc28852f323a671e3d030 -Author: Chris Wilson -Date: Fri Apr 20 17:49:10 2007 +0100 - - Clean up compiler warnings from cairo-png - - I introduced some compiler warnings into read_png() with the superfluous - introduction of a couple of volatile qualifiers. I'm sure at the time, - the reason was that gcc suggested adding them - however, ATM gcc issues - no warnings without them. - - src/cairo-png.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit fc455c53ecb0aa496915b1eae68dc0275af78e09 -Author: Adrian Johnson -Date: Sat Apr 21 00:26:25 2007 +0930 - - Ensure _cairo_scaled_font_subsets_map_glyph() returns correct values - - The CID font subsetting exposed a bug where the subset_glyph->is_scaled - return argument of _cairo_scaled_font_subsets_map_glyph() is sometimes - not assigned a value. - - src/cairo-scaled-font-subsets.c | 55 +++++++++++++++------------------------ - 1 files changed, 21 insertions(+), 34 deletions(-) - -commit 9d8eb42c013d197b3365af88e372d1c2c1617173 -Author: Adrian Johnson -Date: Fri Apr 20 22:45:12 2007 +0930 - - Exclude Type1 fonts from CID subsets - - Make cairo-scaled-font-subsets.c limit Type1 font subsets to - 256 glyphs. This allows Type1 subsetting to be enabled again - with type1-fallback as the fallback option for Type1 fonts. - - src/cairo-pdf-surface.c | 42 ++++++++++++++---------------- - src/cairo-scaled-font-subsets-private.h | 11 +++++++- - src/cairo-scaled-font-subsets.c | 36 +++++++++++++++++--------- - src/cairo-type1-subset.c | 27 ++++++++++++++++++++ - src/cairoint.h | 1 + - 5 files changed, 82 insertions(+), 35 deletions(-) - -commit 56ad56263b86a9678387fe8dd994e77c183c6328 -Author: Adrian Johnson -Date: Fri Apr 20 22:44:04 2007 +0930 - - Enable embedding of CID fonts in PDF - - Update cairo-pdf-surface.c to embed CFF and TrueType fonts - as CID fonts. Update the ToUnicode CMap to handle CID fonts. - - src/cairo-pdf-surface.c | 285 +++++++++++++++++++++++++++++------------------ - 1 files changed, 177 insertions(+), 108 deletions(-) - -commit ca3662d6fc630e5390b3a8f8dbaa1d65aebc3fe8 -Author: Adrian Johnson -Date: Fri Apr 20 22:43:37 2007 +0930 - - Make cairo-output-stream.c accept variable width printf fields - - src/cairo-output-stream.c | 27 +++++++++++++++++++++++---- - 1 files changed, 23 insertions(+), 4 deletions(-) - -commit 0c2a653033e0b631a1cb6591263cbd6125ccc00c -Author: Adrian Johnson -Date: Fri Apr 20 22:30:55 2007 +0930 - - Add CFF CID Fallback - - Switching to CID font embedding requires a fallback font for - the case where CFF CID or TrueType CID subsetting fails. - - The new function _cairo_type2_charstrings_init() added to - cairo-type1-fallback.c creates Type2 charstrings from glyph - paths. _cairo_cff_fallback_init() in cairo-cff-subset.c - wraps these charstrings in a CFF CID font. - - src/cairo-cff-subset.c | 212 +++++++++++++++++++++++++++++++ - src/cairo-scaled-font-subsets-private.h | 68 ++++++++++ - src/cairo-type1-fallback.c | 211 ++++++++++++++++++++++--------- - 3 files changed, 432 insertions(+), 59 deletions(-) - -commit c68a2389f51880b0fa9df6750abdd840258666fc -Author: Adrian Johnson -Date: Fri Apr 20 22:30:05 2007 +0930 - - Make CFF Subsetting create CID subsets - - OpenType/CFF fonts come in two types: CID and non CID. - CFF CID font subsetting was previously disabled in cairo - due 1) to the need to embed CFF CID fonts in PDF as a CID fonts - and 2) there is no easy way to convert CFF CID to CFF non CID. - - With the switch to CID fonts cairo-cff-subset.c has been - updated to subset CID fonts and to covert non CID fonts to - CID. A further advantage of converting non CID CFF fonts - to CID is the reduction in size due to not embedding the - name of each glyph in the font subset. - - src/cairo-cff-subset.c | 858 ++++++++++++++++++++++++++++++---------------- - src/cairo-pdf-surface.c | 2 + - 2 files changed, 561 insertions(+), 299 deletions(-) - -commit 073fce5a85ab90b1bc6915e41d6a420a47e540e6 -Author: Adrian Johnson -Date: Fri Apr 20 22:29:41 2007 +0930 - - Add support for creating CID/composite font subsets - - cairo-scaled-font-subsets.c now provides three functions for creating subsets: - - _cairo_scaled_font_subsets_create_scaled() - Create a subset for each scaled font with maximum size INT_MAX. - - _cairo_scaled_font_subsets_create_simple() - Create subsets suitable for embedding as simple fonts in PS/PDF. - - _cairo_scaled_font_subsets_create_composite() - Create subsets suitable for embedding as composite fonts in PS/PDF. - - The _create_simple() and _create_composite() functions both merge - scaled fonts with the same face and an outline path available into - the same subset. _create_composite() has a maximum subset size of - 65536 for outline fonts. Bitmap fonts have a separate subset for - each scale with a maximum subset size of 256. - - The _create_simple() and _create_composite() functions both reserve - the first glyph in the subset for the .notdef glyph. CID fonts require - CID 0 to be .notdef. - - Update Type1, TrueType and CFF subsetting to expect glyph 0 of each - subset to be the .notdef. - - src/cairo-cff-subset.c | 9 +-- - src/cairo-pdf-surface.c | 5 +- - src/cairo-ps-surface.c | 13 +-- - src/cairo-scaled-font-subsets-private.h | 61 +++++++++++---- - src/cairo-scaled-font-subsets.c | 127 ++++++++++++++++++++++--------- - src/cairo-svg-surface.c | 2 +- - src/cairo-truetype-subset.c | 21 ++--- - src/cairo-type1-fallback.c | 2 +- - src/cairo-type1-subset.c | 3 - - 9 files changed, 156 insertions(+), 87 deletions(-) - -commit bf957ee0f29ff49970b4791718eccdb92f3d6886 -Author: Chris Wilson -Date: Fri Mar 23 12:59:38 2007 +0000 - - cairo-png - handle short reads - - During MT cairo testing we get the error "libpng: Read Error" which is - emitted should the fread return fewer bytes than asked. However, this is - not necessarily an error, so double-check the ferror() status before - raising a png_error(). - - src/cairo-png.c | 24 +++++++++++++++++------- - 1 files changed, 17 insertions(+), 7 deletions(-) - -commit d00aa44206f474e11c66c585d09bfd55e747cc5b -Author: Behdad Esfahbod -Date: Fri Apr 20 01:28:56 2007 -0400 - - [Makefile.am] Add a "make snapshot" target - that creates a tarball named with version, date, and git hash of - the tree. Like cairo-1.4.5-20070420-2a0389.tar.gz. - - Makefile.am | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit 2a038956635e27f61fb2147527d2262eebf9bb26 -Author: Behdad Esfahbod -Date: Fri Apr 20 00:55:03 2007 -0400 - - [pixman] Fix typo in Makefile.am - - pixman/src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit abcd929c57459f95e93504e0ef07b012b497a363 -Author: Behdad Esfahbod -Date: Fri Apr 20 00:50:48 2007 -0400 - - [boilerplate] Add cairo_boilerplate_format_from_content - - boilerplate/cairo-boilerplate-quartz.c | 9 +-------- - boilerplate/cairo-boilerplate-test-surfaces.c | 13 +------------ - boilerplate/cairo-boilerplate-win32.c | 8 ++------ - boilerplate/cairo-boilerplate.c | 18 ++++++++++++++++++ - boilerplate/cairo-boilerplate.h | 3 +++ - 5 files changed, 25 insertions(+), 26 deletions(-) - -commit 97624dc488b41eb83d70b2c44a595daa5d833e7f -Author: Behdad Esfahbod -Date: Fri Apr 20 00:45:42 2007 -0400 - - [boilerplate] Strip test-surfaces boilerplate into cairo-boilerplate-test-surfaces* - - boilerplate/Makefile.am | 5 + - .../cairo-boilerplate-test-surfaces-private.h | 63 +++++++ - boilerplate/cairo-boilerplate-test-surfaces.c | 170 ++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 146 +---------------- - 4 files changed, 241 insertions(+), 143 deletions(-) - -commit 2e709321d858a048731eeaaca4a13a96de739e3f -Author: Behdad Esfahbod -Date: Fri Apr 20 00:34:51 2007 -0400 - - [boilerplate] Move xasprintf to xmalloc.c - - boilerplate/cairo-boilerplate.c | 45 ----------------------------------- - boilerplate/cairo-boilerplate.h | 32 +++++++++++------------- - boilerplate/xmalloc.c | 50 ++++++++++++++++++++++++++++++++++++-- - boilerplate/xmalloc.h | 9 ++++++- - test/cairo-test.h | 2 +- - 5 files changed, 71 insertions(+), 67 deletions(-) - -commit 5331445c12756293a915420a26ab5553fc7db3fc -Author: Behdad Esfahbod -Date: Fri Apr 20 00:26:17 2007 -0400 - - [boilerplate] Cleanup includes in cairo-boilerplate-beos.cpp - - boilerplate/cairo-boilerplate-beos.cpp | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 56e916d40cf2a5f061347254657592f7bfc90d02 -Author: Behdad Esfahbod -Date: Fri Apr 20 00:25:44 2007 -0400 - - [boilerplate] Fix typos in cairo-boilerplate-glitz.c - - boilerplate/cairo-boilerplate-glitz.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 06718b0da642d39b7b4dbfc009f08acb24e5e802 -Author: Behdad Esfahbod -Date: Fri Apr 20 00:15:19 2007 -0400 - - [boilerplate] Remove leftover call to cairo_test_log - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 99737a60cb8cae1643b84782768e8c6d50ac7d0a -Author: Behdad Esfahbod -Date: Fri Apr 20 00:13:25 2007 -0400 - - [boilerplate] Clean up includes and remove unnecessary ones - - boilerplate/cairo-boilerplate-directfb.c | 9 +++++---- - boilerplate/cairo-boilerplate-pdf.c | 2 +- - boilerplate/cairo-boilerplate-svg.c | 2 +- - boilerplate/cairo-boilerplate-xcb.c | 2 +- - boilerplate/cairo-boilerplate.c | 30 +++++++++--------------------- - 5 files changed, 17 insertions(+), 28 deletions(-) - -commit 4b569f13d758015f33ad258a70ad4f472da771ed -Author: Behdad Esfahbod -Date: Fri Apr 20 00:08:44 2007 -0400 - - [boilerplate] Strip win32 boilerplate into cairo-boilerplate-win32* - - boilerplate/Makefile.am | 5 ++ - boilerplate/cairo-boilerplate-win32-private.h | 38 ++++++++++++++++++ - boilerplate/cairo-boilerplate-win32.c | 51 +++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 31 ++------------- - 4 files changed, 99 insertions(+), 26 deletions(-) - -commit 0a03d66fffe7388d8fb4ffdb7bb5501a214c6342 -Author: Behdad Esfahbod -Date: Thu Apr 19 23:58:51 2007 -0400 - - [boilerplate] Rename create_win32_surface to _cairo_boilerplate_win32_create_surface - - boilerplate/cairo-boilerplate.c | 22 +++++++++++----------- - 1 files changed, 11 insertions(+), 11 deletions(-) - -commit 5ee882d3941a9df61d539e056933564a758a6bbc -Author: Behdad Esfahbod -Date: Thu Apr 19 23:53:34 2007 -0400 - - [boilerplate] Remove empty cleanup_win32 - - boilerplate/cairo-boilerplate.c | 11 ++--------- - 1 files changed, 2 insertions(+), 9 deletions(-) - -commit a684fd80e750bea5661262e29a59c4f8c4d9cee3 -Author: Behdad Esfahbod -Date: Thu Apr 19 23:36:00 2007 -0400 - - [directfb] Silence compiler warning - - src/cairo-directfb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 23e6abc3fc01e3d722adfc48cd1df9c8db73adc1 -Author: Behdad Esfahbod -Date: Thu Apr 19 22:40:52 2007 -0400 - - [boilerplate] Strip glitz boilerplate into cairo-boilerplate-glitz* - - boilerplate/Makefile.am | 30 +- - boilerplate/cairo-boilerplate-glitz-private.h | 73 ++++ - boilerplate/cairo-boilerplate-glitz.c | 477 ++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 480 +------------------------ - 4 files changed, 582 insertions(+), 478 deletions(-) - -commit 7d576a376706aad427915b4872429f5605104886 -Author: Behdad Esfahbod -Date: Thu Apr 19 22:25:28 2007 -0400 - - [boilerplate] Minor indentation fix - - boilerplate/cairo-boilerplate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 06b657ccf129f6f154c0db7886e5cca6191f93ca -Author: Behdad Esfahbod -Date: Thu Apr 19 22:20:38 2007 -0400 - - [boilerplate] Strip xcb boilerplate into cairo-boilerplate-xcb* - - boilerplate/Makefile.am | 5 + - boilerplate/cairo-boilerplate-xcb-private.h | 44 ++++++++++ - boilerplate/cairo-boilerplate-xcb.c | 115 +++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 90 +-------------------- - 4 files changed, 167 insertions(+), 87 deletions(-) - -commit 65f636649d54348722354b2400c3a191309da0e1 -Author: Behdad Esfahbod -Date: Thu Apr 19 22:13:08 2007 -0400 - - [boilerplate] Strip svg boilerplate into cairo-boilerplate-svg* - - boilerplate/Makefile.am | 5 + - boilerplate/cairo-boilerplate-svg-private.h | 44 +++++++++ - boilerplate/cairo-boilerplate-svg.c | 129 +++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 106 +--------------------- - 4 files changed, 181 insertions(+), 103 deletions(-) - -commit 8c9960675b82978acbd5a85ef358c674c3407ee3 -Author: Behdad Esfahbod -Date: Thu Apr 19 22:10:09 2007 -0400 - - [boilerplate] Strip pdf boilerplate into cairo-boilerplate-pdf* - - boilerplate/Makefile.am | 5 + - boilerplate/cairo-boilerplate-pdf-private.h | 44 +++++++++ - boilerplate/cairo-boilerplate-pdf.c | 134 +++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 111 +--------------------- - 4 files changed, 186 insertions(+), 108 deletions(-) - -commit d9ce7de57514710f425bdee613edc4ea79ac0f0a -Author: Behdad Esfahbod -Date: Thu Apr 19 22:08:24 2007 -0400 - - [boilerplate] Rename xcairo_surface_set_user_data to cairo_boilerplate_surface_set_user_data - - and make it public. - - boilerplate/cairo-boilerplate.c | 48 +++++++++++++++++++++----------------- - boilerplate/cairo-boilerplate.h | 6 +++++ - 2 files changed, 32 insertions(+), 22 deletions(-) - -commit df6b8ecc8963518c897648d82aab1aa090b4721a -Author: Behdad Esfahbod -Date: Thu Apr 19 21:46:51 2007 -0400 - - [boilerplate] Strip ps boilerplate into cairo-boilerplate-ps* - - boilerplate/Makefile.am | 5 + - boilerplate/cairo-boilerplate-ps-private.h | 44 +++++++++ - boilerplate/cairo-boilerplate-ps.c | 138 ++++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 115 +---------------------- - 4 files changed, 190 insertions(+), 112 deletions(-) - -commit 6461f0d120bf5fabd08b7621233229b223b3de89 -Author: Behdad Esfahbod -Date: Thu Apr 19 20:45:10 2007 -0400 - - [boilerplate] Remove unused variables - - boilerplate/cairo-boilerplate.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit f2d6275352142df631e00e27456d7e6ceb83804c -Author: Behdad Esfahbod -Date: Thu Apr 19 20:41:34 2007 -0400 - - [boilerplate] Fix renaming typo - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d5535c993b5cde5df29a7a29339aa500992128bf -Author: Behdad Esfahbod -Date: Thu Apr 19 20:36:14 2007 -0400 - - [boilerplate/test] Move vector_ignored_tests from boilerplate/ to test/ - - boilerplate/cairo-boilerplate.c | 28 ----------------- - test/cairo-test.c | 62 ++++++++++++++++++++++++++++---------- - 2 files changed, 45 insertions(+), 45 deletions(-) - -commit d6dc4f978364d287367d239e5594c7ffe50a2571 -Author: Behdad Esfahbod -Date: Thu Apr 19 20:28:22 2007 -0400 - - [boilerplate] Add a boolean is_vector to boilerplate target type - - This is used to move the skip-these-tests-for-vector code into - cairo-test which it belongs. - - boilerplate/cairo-boilerplate.c | 18 ++++++++++++------ - boilerplate/cairo-boilerplate.h | 1 + - 2 files changed, 13 insertions(+), 6 deletions(-) - -commit 0b5e2dbaa84225452a0935f61d2348bce88a3e69 -Author: Behdad Esfahbod -Date: Thu Apr 19 20:23:55 2007 -0400 - - [boilerplate] Sort backend entries in Makefile.am alphabetically - - boilerplate/Makefile.am | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit be0320c4f8082a9274899959dc82297a04aa7800 -Author: Behdad Esfahbod -Date: Thu Apr 19 20:17:26 2007 -0400 - - [boilerplate] Properly namespace boilerplate methods - - in preparation for ripping them into per-backend files. - - boilerplate/cairo-boilerplate-beos.cpp | 24 +- - boilerplate/cairo-boilerplate-directfb.c | 33 ++-- - boilerplate/cairo-boilerplate-quartz.c | 12 +- - boilerplate/cairo-boilerplate-xlib.c | 24 +- - boilerplate/cairo-boilerplate.c | 328 +++++++++++++++++------------- - 5 files changed, 236 insertions(+), 185 deletions(-) - -commit 9b660a3d54940c68eb48f2afeca7e87e1d2bffa6 -Author: Behdad Esfahbod -Date: Thu Apr 19 19:56:05 2007 -0400 - - [boilerplate] Strip xlib boilerplate into cairo-boilerplate-xlib* - - boilerplate/Makefile.am | 5 + - boilerplate/cairo-boilerplate-xlib-private.h | 44 ++++++ - boilerplate/cairo-boilerplate-xlib.c | 196 ++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 183 ++----------------------- - 4 files changed, 254 insertions(+), 174 deletions(-) - -commit d945f6434643ac35f0e86352cfe3ccf021f568de -Author: Behdad Esfahbod -Date: Thu Apr 19 19:44:57 2007 -0400 - - [boilerplate] Move includes around - - boilerplate/cairo-boilerplate.c | 23 ++++++++++------------- - 1 files changed, 10 insertions(+), 13 deletions(-) - -commit 0130cca6924f5c0969ca285585c68a458301a882 -Author: Behdad Esfahbod -Date: Thu Apr 19 19:39:58 2007 -0400 - - [boilerplate] Rename test-directfb to boilerplate-directfb - - boilerplate/Makefile.am | 3 +- - boilerplate/cairo-boilerplate-directfb-private.h | 23 ++++ - boilerplate/cairo-boilerplate-directfb.c | 143 ++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 6 +- - boilerplate/cairo-test-directfb.c | 143 ---------------------- - boilerplate/cairo-test-directfb.h | 23 ---- - 6 files changed, 171 insertions(+), 170 deletions(-) - -commit fb2c0daa09af083278024c3da6f7e9e3f851984f -Author: Behdad Esfahbod -Date: Thu Apr 19 19:38:20 2007 -0400 - - [boilerplate] Rename test-beos to boilerplate-beos - - boilerplate/Makefile.am | 3 +- - boilerplate/cairo-boilerplate-beos-private.h | 34 ++++ - boilerplate/cairo-boilerplate-beos.cpp | 258 ++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 8 +- - boilerplate/cairo-test-beos.cpp | 258 -------------------------- - boilerplate/cairo-test-beos.h | 34 ---- - 6 files changed, 298 insertions(+), 297 deletions(-) - -commit 01760286b388870e5bebf3851b4bef1350d89852 -Author: Behdad Esfahbod -Date: Thu Apr 19 19:32:52 2007 -0400 - - [boilerplate] Rename quartz-boilerplate to boilerplate-quartz - - boilerplate/Makefile.am | 4 +- - boilerplate/cairo-boilerplate-quartz-private.h | 41 ++++++++++++++++ - boilerplate/cairo-boilerplate-quartz.c | 60 ++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 10 ++-- - boilerplate/cairo-quartz-boilerplate-private.h | 41 ---------------- - boilerplate/cairo-quartz-boilerplate.c | 60 ------------------------ - 6 files changed, 108 insertions(+), 108 deletions(-) - -commit d64ef355217db7a555da0029187d19c80ec12609 -Author: Chris Wilson -Date: Thu Apr 19 23:12:09 2007 +0100 - - Include cairo-perf in make check - - Although cairo-perf is not written to perform explicit failure testing of - cairo, it does generate long sequences of cairo operations which often - trigger unexpected errors. By including it with make check, it becomes - even easier for the programmer to check that one has not broken cairo in - terms of expected behaviour or performance. - - Makefile.am | 3 ++- - perf/Makefile.am | 30 +++++++++++++++++++----------- - 2 files changed, 21 insertions(+), 12 deletions(-) - -commit 0ffb021e9b0cc2ec9afc3eaa360b4518327afa6c -Author: Behdad Esfahbod -Date: Thu Apr 19 16:52:51 2007 -0400 - - [cairo-mutex] If no mutex implementation is found, should #error instead of #warning - - otherwise we will cause compile errors before the sanity check macros get - a chance to err. - - src/cairo-mutex-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 813cdd71503ca2d77da011c91368e55cf20ad657 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:49:35 2007 -0400 - - [configure.in] Support --disable-pthread - - Also allows for --enable-pthread=yes which will make configure abort - if pthread is not found (as opposed to silently disabling it). - - configure.in | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit 6d01e89988ea89ae21f3461825583d89b6eef55e -Author: Chris Wilson -Date: Thu Apr 19 21:46:00 2007 +0100 - - Add callgrind output files to CLEANFILES and .gitignore. - - perf/.gitignore | 2 ++ - perf/Makefile.am | 1 + - 2 files changed, 3 insertions(+), 0 deletions(-) - -commit 2c79f8b75bd5bb0bb3bf054fb2b3cae6de382a7c -Author: Chris Wilson -Date: Thu Apr 19 21:41:43 2007 +0100 - - Fix command line for running cairo-perf under valgrind. - - The CAIRO_PERF_ENVIRONMENT slipped into the middle of the command line - instead of at the start. - - perf/Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 3631c11eb4ab49f2bb3b9ef0478e5516793f221f -Author: Behdad Esfahbod -Date: Thu Apr 19 16:38:23 2007 -0400 - - [cairo-mutex] Switch to HAVE_WINDOWS_H to use Win32 mutexes - - src/cairo-mutex-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d2a824a191e6b0d10a1f495d970b0406e37e0a39 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:37:36 2007 -0400 - - [cairo-commit] Update attribution headers in cairo-mutex-private.h - - src/cairo-mutex-private.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 12dfd8bb4bf72483c835e169003fa00b114beb13 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:36:43 2007 -0400 - - [cairo-mutex] Warn if no mutex definition found and let sanity macros err - about undefined CAIRO_MUTEX macros. - - src/cairo-mutex-private.h | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 6aa823841d6c1d59d4d972f0236f0e6a43199970 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:36:10 2007 -0400 - - [cairo-mutex] Support non-reentrant compilation if CAIRO_NO_MUTEX defined - to 1. - - src/cairo-mutex-private.h | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit e5980f69ad2d59ee305fe9aae62070a74d2df58b -Author: Behdad Esfahbod -Date: Thu Apr 19 16:31:47 2007 -0400 - - [cairo-commit] Just warn for BeOS and let the sanity check macros err - about undefined CAIRO_MUTEX macros. - - src/cairo-mutex-private.h | 10 +++------- - 1 files changed, 3 insertions(+), 7 deletions(-) - -commit 8ebb054ff9d2fe12faa7b1807aef24b2bf916e64 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:28:44 2007 -0400 - - [cairo-mutex] Prefer "#if CAIRO_SOMETHING" over "#if defined CAIRO_SOMETHING" - - src/cairo-mutex-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 97c197478023ceb5477a203d058eaec2cb18f987 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:26:21 2007 -0400 - - [cairo-mutex] Add default implementation for CAIRO_MUTEX_INIT - that uses CAIRO_MUTEX_NIL_INITIALIZER. This used to be the - implementation for pthread because pthread_mutex_init() is - broken. See d48bb4fbe876a93199ba48fcf5f32734fbe18ba9. - - src/cairo-mutex-private.h | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 6d2a2dd6d9190c62b209e47c083b7df72e7134fb -Author: Behdad Esfahbod -Date: Thu Apr 19 16:24:16 2007 -0400 - - [cairo-mutex] Add default no-op implementation for CAIRO_MUTEX_FINI - - src/cairo-mutex-private.h | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 2067d6fa90dae80aa666fb7328d51e2f92bec5bd -Author: Behdad Esfahbod -Date: Thu Apr 19 16:23:14 2007 -0400 - - [cairo-mutex] Use CAIRO_MUTEX_NOOP when applicable - - src/cairo-mutex-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5dda76c90f8886b6017ca8bbdf81be2b97201962 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:22:02 2007 -0400 - - [cairo-mutex] Err if at least one of mutex macros are not defined - - src/cairo-mutex-private.h | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit f771b9157c26430949f4dd1412c7a7b35367f81a -Author: Behdad Esfahbod -Date: Thu Apr 19 16:21:13 2007 -0400 - - [cairo-mutex] Define and use CAIRO_MUTEX_USE_GENERIC_INITIALIZATION - We use the generic initialization if CAIRO_MUTEX_INITIALIZE is not - defined. - - src/cairo-mutex-private.h | 9 +++++++++ - src/cairo-mutex.c | 2 +- - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 4fc52e2d49c1299f8f175e22472ebe08baa41fa4 -Author: Behdad Esfahbod -Date: Thu Apr 19 16:19:48 2007 -0400 - - [cairo-mutex] Define CAIRO_MUTEX_NOOP - - src/cairo-mutex-private.h | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit f9dd8fd0ef0ad95921723155b951cd113ccb2d0b -Author: Behdad Esfahbod -Date: Thu Apr 19 16:19:25 2007 -0400 - - [cairo-mutex] Inlucde cairo-features.h and config.h - Previously we were lucky enough to have them included before us - - src/cairo-mutex-private.h | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 4e754cf3df9855c1d442578e555b7fb17c3dd4a1 -Author: Behdad Esfahbod -Date: Thu Apr 19 15:31:24 2007 -0400 - - [cairo-truetype-subset] Shut gcc warning up - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4141e752e2eb0f40f2eb298bad398e6390e00ef8 -Author: Behdad Esfahbod -Date: Thu Apr 19 15:04:11 2007 -0400 - - [cairo-freelist] Remove redundant struct declarations - - src/cairo-freelist-private.h | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit ea817c560c429f445e4c450b60d499dae27f6024 -Author: Behdad Esfahbod -Date: Thu Apr 19 14:50:38 2007 -0400 - - [cairo-mutex] Remove unneeded #undef CAIRO_MUTEX_EXTERNAL - - src/cairo-mutex-private.h | 8 -------- - 1 files changed, 0 insertions(+), 8 deletions(-) - -commit 0b281085b55aae70876c6ef022266b73461800ab -Author: Behdad Esfahbod -Date: Thu Apr 19 14:45:41 2007 -0400 - - [cairo-mutex] Err on unintended inclusion of cairo-mutex-list-private.h - - src/cairo-mutex-list-private.h | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 47be7280bfe751c9f635f1e17c158f04b2927ae3 -Author: Behdad Esfahbod -Date: Thu Apr 19 14:42:55 2007 -0400 - - [cairo-mutex] Remove multiple-inclusion guards from cairo-mutex-list-private.h - - This is a list header file. We should not prevent it from multiple - inclusions. - - src/cairo-mutex-list-private.h | 3 --- - src/cairo-mutex.c | 2 -- - 2 files changed, 0 insertions(+), 5 deletions(-) - -commit 55ea0466e25de2c60171a9d6c96536bc2e7fb9e3 -Author: Chris Wilson -Date: Thu Apr 19 20:24:27 2007 +0100 - - Embed simple clip XRectangles in cairo_xlib_surface_t - - Toolkits like GTK+ almost always set a simple rectangular clip mask before - any cairo operation, so avoid the allocation for this simple case by - embedding a small number of XRectangles into the surface structure. - - src/cairo-xlib-surface.c | 18 +++++++++++------- - 1 files changed, 11 insertions(+), 7 deletions(-) - -commit 7906a993403e75aa34b32d2d9338ec179896d765 -Author: Mathias Hasselmann -Date: Thu Apr 19 14:54:30 2007 +0200 - - Define INT32 limits on MSVC as noticed by Hans-Jürgen Schäler - - src/cairo-wideint-private.h | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit cc8841645cd7aa06ae48cbad804b31b3c0c2146b -Author: Mathias Hasselmann -Date: Thu Apr 19 13:47:45 2007 +0200 - - Properly use CAIRO_MUTEX_{INIT,FINI} and remove CAIRO_MUTEX_LIST_PRIVATE_H sentinal before explicitly including the mutex list. - - src/cairo-mutex.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit 39a633a8f3618f3b1adb3eefdf36e2fc6d896054 -Author: Mathias Hasselmann -Date: Thu Apr 19 13:15:08 2007 +0200 - - Reintroduce DllMain as deterministic mutex initialization path - - src/cairo-win32-surface.c | 30 ++++++++++++++++++++++++++++++ - 1 files changed, 30 insertions(+), 0 deletions(-) - -commit 9b348929b51fb45f5985914350a10955d6df17ae -Author: Mathias Hasselmann -Date: Thu Apr 19 13:13:42 2007 +0200 - - Introduce CAIRO_MUTEX_FINALIZE as counter-part for CAIRO_MUTEX_INITIALIZE - - src/cairo-mutex-private.h | 8 +++++++- - src/cairo-mutex.c | 12 ++++++++++++ - src/cairo-os2-surface.c | 6 +++--- - 3 files changed, 22 insertions(+), 4 deletions(-) - -commit 67767afa09e3622988b9ac67b754114ea9f84105 -Author: Mathias Hasselmann -Date: Thu Apr 19 12:35:10 2007 +0200 - - Update _cairo_mutex_initialized during initialization. - - src/cairo-mutex.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 41c6eebcd1fab94fd3a91d09f1ef6ee0d8c7a044 -Author: Chris Wilson -Date: Thu Apr 19 11:56:15 2007 +0100 - - Optionally provide a pattern to use for creating a similar solid surface. - - _cairo_surface_create_similar_solid() creates a fresh pattern to wrap - color, however sometimes the caller already has that pattern available. - In those circumstances we can pass the pattern as well as the color and - avoid the extra allocation. - - src/cairo-clip.c | 3 ++- - src/cairo-glitz-surface.c | 3 ++- - src/cairo-pattern.c | 3 ++- - src/cairo-surface.c | 24 +++++++++++++++--------- - src/cairoint.h | 6 +++++- - 5 files changed, 26 insertions(+), 13 deletions(-) - -commit ef60e7c65144edd1aa14757b269f2c196df732a2 -Author: Chris Wilson -Date: Wed Apr 18 18:08:45 2007 +0100 - - cairo-xlib-surface - track picture properties. - - By tracking picture properties we can dramatically reduce the amount of - X11 traffic by avoiding redundant changes. - - src/cairo-xlib-surface.c | 35 ++++++++++++++++++++++++----------- - 1 files changed, 24 insertions(+), 11 deletions(-) - -commit 9cf09556339e64bdf1273e95938b657112df07b6 -Author: Chris Wilson -Date: Thu Apr 19 09:27:51 2007 +0100 - - Create opaque similar solid surfaces when possible. - - For opaque surfaces the backends may use simpler code paths - for - example, the xlib backend may be able to use the Core protocol rather - than Render. So we only generate a surface with an alpha component if - the color is not opaque. - - src/cairo-pattern.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit f7b6fc474651311356f116b7d8d7a5ef1cbab570 -Author: Chris Wilson -Date: Thu Apr 19 09:22:08 2007 +0100 - - Define a CAIRO_ALPHA_IS_OPAQUE variant that operates on uint16. - - Introducing this variant also fixed a bug in _gradient_is_opaque() - which was using the fractional test on a uint16. - - src/cairo-pattern.c | 6 +++--- - src/cairoint.h | 3 +++ - 2 files changed, 6 insertions(+), 3 deletions(-) - -commit 157074c794903f1dbe68c1ba5b129b4176dc7975 -Author: Behdad Esfahbod -Date: Wed Apr 18 19:46:30 2007 -0400 - - [boilerplate] Add cairo_boilerplate_get/free_targets - This means, test and perf suites now share the same target handling - code, including parsing CAIRO_TEST_TARGET. - - boilerplate/cairo-boilerplate.c | 73 +++++++++++++++++++++++++++++++++++++-- - boilerplate/cairo-boilerplate.h | 6 +++- - perf/cairo-perf.c | 20 +++++----- - test/cairo-test.c | 54 ++++------------------------- - 4 files changed, 92 insertions(+), 61 deletions(-) - -commit 47c02a6bd67e8b7e50977cc87d5e35358d5c4c2e -Author: Behdad Esfahbod -Date: Wed Apr 18 19:15:16 2007 -0400 - - [boilerplate] s/_cairo_test_content_name/cairo_boilerplate_content_name/g - - boilerplate/cairo-boilerplate.c | 8 ++++---- - boilerplate/cairo-boilerplate.h | 2 +- - test/cairo-test.c | 10 +++++----- - 3 files changed, 10 insertions(+), 10 deletions(-) - -commit b9026d0b137520247b4a93287bd518fc79774e93 -Author: Behdad Esfahbod -Date: Wed Apr 18 19:09:53 2007 -0400 - - [perf] Make targets more consistent with the test suite - That is: - 1) no VALGRING vs VG abbreviations - 2) setting TARGETS and ITERS on the make command line works now - - perf/Makefile.am | 26 +++++++++++++++++--------- - perf/cairo-perf.c | 8 ++++++-- - 2 files changed, 23 insertions(+), 11 deletions(-) - -commit 9f3e0694e644d2279c7f4835f8035d4ecccb5711 -Author: Behdad Esfahbod -Date: Wed Apr 18 19:08:54 2007 -0400 - - [test] Allow bypassing all test targets by setting CAIRO_TEST_TARGET=" " - - test/cairo-test.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 52d4e0f3191440e8ebe366b593c2e9c955328258 -Author: Behdad Esfahbod -Date: Wed Apr 18 18:27:28 2007 -0400 - - [doc] Make section title capitalization more consistent - - doc/public/cairo-sections.txt | 2 +- - doc/public/language-bindings.xml | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit beadcdf9bd7c1dde48c8c751ba8af75c60b93a5f -Author: Behdad Esfahbod -Date: Wed Apr 18 18:24:09 2007 -0400 - - Rename cairo-font.c to cairo-font-face.c - - src/Makefile.am | 2 +- - src/Makefile.win32 | 2 +- - src/cairo-font-face.c | 514 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-font.c | 514 ------------------------------------------------- - src/cairoint.h | 2 +- - 5 files changed, 517 insertions(+), 517 deletions(-) - -commit f56582ef06bbf56edcc6ecc26698abaeba1306b0 -Author: Behdad Esfahbod -Date: Wed Apr 18 17:50:36 2007 -0400 - - Put back __inline definition for MSC compilers, in both cairo and pixman - Apparently it's too much to expect people compiling on windows to fill - in sensible values for config.h... /sigh - - pixman/src/pixmanint.h | 10 ++++++++-- - src/cairoint.h | 2 ++ - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit a54b6ed0784dd00375424e581bc7349dd8a2a2d9 -Author: Behdad Esfahbod -Date: Wed Apr 18 17:45:31 2007 -0400 - - [pixman] Rename icint.h to pixmanint.h - - pixman/src/Makefile.am | 4 +- - pixman/src/check-pixmanint.sh | 17 + - pixman/src/fbcompose.c | 4 +- - pixman/src/fbedge.c | 4 +- - pixman/src/fbmmx.c | 4 +- - pixman/src/fbpict.c | 4 +- - pixman/src/fbtrap.c | 4 +- - pixman/src/icblt.c | 4 +- - pixman/src/icbltone.c | 4 +- - pixman/src/iccolor.c | 6 +- - pixman/src/icformat.c | 6 +- - pixman/src/icimage.c | 4 +- - pixman/src/icpixels.c | 4 +- - pixman/src/icrect.c | 6 +- - pixman/src/icstipple.c | 4 +- - pixman/src/ictransform.c | 6 +- - pixman/src/ictrap.c | 5 +- - pixman/src/ictri.c | 5 +- - pixman/src/icutil.c | 4 +- - pixman/src/pixman-xserver-compat.h | 4 +- - pixman/src/pixman.h | 4 - - pixman/src/pixmanint.h | 1070 ++++++++++++++++++++++++++++++++++++ - pixman/src/pixregion.c | 4 +- - pixman/src/renderedge.c | 4 +- - 24 files changed, 1110 insertions(+), 75 deletions(-) - -commit 48121e97ac4f0114a0d5bc35aec76d2aba23a783 -Author: Behdad Esfahbod -Date: Wed Apr 18 17:04:07 2007 -0400 - - [cairoint.h] Define WARN_UNUSED_RESULT if undefined - - src/cairoint.h | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit a396e0b05731db3acbf1e8d82ab77592b697e417 -Author: Chris Wilson -Date: Wed Apr 18 14:24:10 2007 +0100 - - cairo-perf - add the missing newline. - - Oops, missed out the newline for the fprintf in the previous commit. - - perf/cairo-perf.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 383e9d5368706168498a87d1b7f023f2b59c2f92 -Author: Chris Wilson -Date: Wed Apr 18 14:12:20 2007 +0100 - - cairo-perf - Check that the surface is created. - - Exit(1) if we fail to create the target surface. - - perf/cairo-perf.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 7131f4e6aea11d94e38375a6be71887825008e48 -Author: Dave Yeo -Date: Tue Apr 17 15:30:20 2007 -0400 - - [OS2] Fix #include "cairo-mutex-list-private.h" - - src/cairo-os2-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f7a2787685d640dd35ef7ef1314c4e754771c512 -Merge: 2efaf3a... cab4d41... -Author: Mathias Hasselmann -Date: Mon Apr 16 23:05:10 2007 +0200 - - Merge branch 'master' of git+ssh://hasselmm@git.freedesktop.org/git/cairo - -commit cab4d41cae4463841bca297a7e16c970633c8c21 -Author: Chris Wilson -Date: Mon Apr 16 16:57:24 2007 +0100 - - create-for-stream - free resources after test failure. - - create-for-stream often fails whilst running under valgrind due to the - postscript output containing a CreationDate with seconds resolution, - hence the visibility of the resource leaks during failure. - - test/create-for-stream.c | 37 ++++++++++++++++++++----------------- - 1 files changed, 20 insertions(+), 17 deletions(-) - -commit 9d435d5fbfae0f64053f6596f73410bc352cd2de -Author: Chris Wilson -Date: Mon Apr 16 15:42:07 2007 +0100 - - Add suppression for leak from XauFileName. - - The string is statically allocated by XauFileName() and so ignore the fact - that is not freed upon termination. - - test/.valgrind-suppressions | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 3a3fb0031decec26260cd94e60f1b0bf06541a6d -Author: Chris Wilson -Date: Mon Apr 16 15:08:54 2007 +0100 - - Update .gitignore - - Add .*.sw? (vim swapfiles). - Add *~ (backup files). - Add *.gcno and *.gcda (gcov intermediates). - - .gitignore | 1 + - boilerplate/.gitignore | 4 ++++ - perf/.gitignore | 4 ++++ - src/.gitignore | 1 + - test/.gitignore | 3 +++ - 5 files changed, 13 insertions(+), 0 deletions(-) - -commit 7ff95c7230471be3ffa231ebc71e1d63ba4621b0 -Author: Kouhei Sutou -Date: Mon Apr 16 02:48:14 2007 -0400 - - Support MinGW DLL compilation - - configure.in | 1 + - src/cairo-win32-surface.c | 4 ++++ - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit ca9df759b4eda8f19a92b2e0b1092fa7b618d25b -Author: Chris Wilson -Date: Sat Apr 14 15:28:29 2007 +0100 - - Change of email address. - - Update to my new email address and drop my old work one. - - AUTHORS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 96ee8d5ebe6c6494a140c5424137f26de5fd5d85 -Author: Carl Worth -Date: Fri Apr 13 17:47:25 2007 -0700 - - Update version to 1.4.5 after the 1.4.4 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ebba4a6d1467a8e5db5cc43eb08e8fc98c39b30a -Author: Carl Worth -Date: Fri Apr 13 17:37:14 2007 -0700 - - Increment version to 1.4.4 (and library versioning to 13:2:11) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit e21a58ce4c2f550198de9ed35f7a37df764e7cdf -Author: Carl Worth -Date: Fri Apr 13 17:36:31 2007 -0700 - - NEWS: Add notes for cairo 1.4.4 - - NEWS | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 91 insertions(+), 0 deletions(-) - -commit e1a1f6ff251582b2293098a55953f81a13bb9cc0 -Author: Carl Worth -Date: Fri Apr 13 16:37:52 2007 -0700 - - AUTHORS: Update descriptions for Mathias Hasselmann and Chris Wilson - - Both have contributed a tremendous amount of effort to cairo 1.4.4. - Well done! - - AUTHORS | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ef3e13337e513cf470801cff5cd2b8fdcff1b6eb -Author: Carl Worth -Date: Fri Apr 13 13:34:20 2007 -0700 - - cairo-perf-diff: Use median not minimum to report differences - - Ideally, the minimum value would indicate the best possible performance, - but I've encountered situations where a bogus minimum value gets lodged - into the cached results for some reason, (and yet doesn't also get - discarded as an outlier). The downside of that situation is that running - more iterations never changes the result, so it's hard to fix the problem, - (resulting in cairo-perf-diff feeling just plain broken as more runs - change nothing). - - So let's try using the median time instead. - - perf/cairo-perf-diff-files.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 7ead3e64f17fe302398ec60c61eaeaae4e9b18cf -Author: Behdad Esfahbod -Date: Fri Apr 13 16:34:31 2007 -0400 - - [ROADMAP] Put back bug 10508 into 1.4.4 roadmap and mark it fixed - - Yay! - - ROADMAP | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 84c10a79ffd233a953434bd787dcfe57787552f8 -Author: Behdad Esfahbod -Date: Fri Apr 13 16:33:07 2007 -0400 - - [cairo-pattern] Slightly hackish fix for bug #10508 - - The so-attributed-to-X-server bug was that cairo maps the drawing - region to the pattern space, rounds the box, and uploads only that - part of the source surface to the X server. Well, this only works for - NEAREST filter as any more sophisticated filter needs to sneak a peek - at the neighboring pixels around the edges too. - - The right fix involves taking into account the filter used, and the - pattern matrix, but for most cases, a single pixel should be enough. - Not sure about scaling down... - - Anyway, this is just a workaround to get 1.4.4 out of the door. I'll - commit a proper fix soon. - - src/cairo-pattern.c | 15 ++++++++++----- - 1 files changed, 10 insertions(+), 5 deletions(-) - -commit fcf49a56130ede8c6aa9f84a8c59ecef54714b7b -Author: Carl Worth -Date: Fri Apr 13 12:02:11 2007 -0700 - - boilerplate: Cleanup conditional compilation ofcairo-quartz-boilerplate.c - - It's much nicer to use automake to conditionally compile a file, - instead of always compiling it and conditionally having the compiler - see an empty file. - - boilerplate/Makefile.am | 6 +++- - boilerplate/cairo-boilerplate-private.h | 45 ------------------------ - boilerplate/cairo-boilerplate.c | 5 ++- - boilerplate/cairo-quartz-boilerplate-private.h | 41 +++++++++++++++++++++ - boilerplate/cairo-quartz-boilerplate.c | 6 +--- - 5 files changed, 51 insertions(+), 52 deletions(-) - -commit cea107c9800a4414f57a874dd52924efdff725ec -Author: Carl Worth -Date: Fri Apr 13 11:28:21 2007 -0700 - - Punt bug #10508 off of 1.4.4 - - It looks like this is an X server bug, and we don't have an - imminent fix. Meanwhile, the bug is avoidable by preferring - to use xlib surface sources for transformed rendering to xlib - instead of using image surface sources. - - ROADMAP | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 4e3be548615f8ce8a45f0e887f19eb39ba21f8a4 -Author: Behdad Esfahbod -Date: Thu Apr 12 21:34:49 2007 -0400 - - [cairo-pattern] Add a TODO item to code - - src/cairo-pattern.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit ec639449de9b630cdb4e7bca4ba8487b3a263184 -Author: Carl Worth -Date: Thu Apr 12 18:16:52 2007 -0700 - - Fix typo in loop control for computation of std. deviation - - Thanks to Chris Wilson for pointing out this problem. - - perf/cairo-stats.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 537a795b3b5698d4aa02f2f14e479e9bfd27fe0d -Author: Carl Worth -Date: Thu Apr 12 17:01:41 2007 -0700 - - Remove ft-text-vertical-layout-type1 - - This test can fail if the wrong font is loaded, but that's no - different than many other text tests---so it doesn't really - deserve special XFAIL treatment because of that. - - test/Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 04164c996cad242a25c2af596ffcd3b07ba19289 -Author: Behdad Esfahbod -Date: Thu Apr 12 20:14:23 2007 -0400 - - [cairo-surface] Make sure cairo_surface_get_font_options() fully initializes - the font_options passed in. - - src/cairo-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 7224e1a6e6eb474a3809d07f9540c959b3da10b2 -Author: Behdad Esfahbod -Date: Thu Apr 12 17:54:32 2007 -0400 - - [image] Set hint-metrics on in default font options - - src/cairo-image-surface.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) - -commit 57434e249aba93f3b478a3c701e260093711d13f -Author: Behdad Esfahbod -Date: Thu Apr 12 17:45:33 2007 -0400 - - [xlib] Turn metrics-hinting on by default - - src/cairo-xlib-screen.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8a4c108a4be6c4650cefe80e68d4c9974ccc27ba -Author: Chris Wilson -Date: Thu Apr 12 22:19:03 2007 +0100 - - Add a reference count to cairo_xlib_screen_info_t - - Due to the interaction between multiple threads showing glyphs and - asynchronous CloseDisplays, it is possible for a font to maintain a - cairo_xlib_screen_info_t beyond the CloseDisplay. The simple solution - is to add a reference count in order to track the lifetime of the - cairo_xlib_screen_info_t correctly. - - src/cairo-xlib-private.h | 6 +++ - src/cairo-xlib-screen.c | 77 +++++++++++++++++++++++++++++++++++---------- - src/cairo-xlib-surface.c | 4 ++ - 3 files changed, 70 insertions(+), 17 deletions(-) - -commit 50ef5bcf7b5e6cc903f9247256fbd4439887ab5e -Author: Carl Worth -Date: Thu Apr 12 13:44:32 2007 -0700 - - Revert cairo_public_warn addition to cairo.h - - This new feature isn't appropriate for a minor cairo release, - (we're between 1.4.2 and 1.4.4 right now), but will make a - lot of sense during 1.5. - - The code being reverted here was originally added with the - following commit: - - 46eab95698e101e41407778eda22089b508a8984 - - but this change reverts only the public-facing parts of it. - - configure.in | 11 ----------- - src/cairo.h | 40 ++++++++++++++++++++-------------------- - 2 files changed, 20 insertions(+), 31 deletions(-) - -commit 35bb2152c06ef2621b14a8b2153cc327be8b43a1 -Author: Chris Wilson -Date: Thu Apr 12 21:30:39 2007 +0100 - - Hold the scaled_font->mutex whilst operating on the shared members. - - Obey the locking rules whilst resetting the scaled_font after a - CloseDisplay. - - src/cairo-xlib-surface.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit 97d897a7475f540ad901cb2a2cd6885e885ee02a -Author: Chris Wilson -Date: Thu Apr 12 21:17:42 2007 +0100 - - cairo_xlib_close_display - drop the mutex whilst calling the hooks - - In order to avoid recursive dead-locks where whilst one thread holds the - scaled font lock and is waiting on the XLockDisplay() another thread catches - the CloseDisplay and then tries to acquire the scaled font lock, we drop - the list mutex whilst processing the callbacks. - - src/cairo-xlib-screen.c | 33 ++++++++++++++++++++++++--------- - 1 files changed, 24 insertions(+), 9 deletions(-) - -commit 13b0aa669fd9ce6abc930730a941782e2baba215 -Author: Carl Worth -Date: Thu Apr 12 13:29:56 2007 -0700 - - Rebuild doc/public/Headers.mk - - Add a sort so that future update changes will be more legible. - - doc/public/Headers.mk | 47 ++++++++++++++++++++++++----------------------- - doc/public/Makefile.am | 3 ++- - 2 files changed, 26 insertions(+), 24 deletions(-) - -commit ae80d375f829b076a8d1450c54b00b3750428366 -Author: Carl Worth -Date: Thu Apr 12 13:02:26 2007 -0700 - - Rename cairo-mutex-list.h to cairo-mutex-list-private.h - - Also add it (and cairo-mutex-private.h) to Makefile.am - where they should have been. - - src/Makefile.am | 2 + - src/cairo-mutex-list-private.h | 50 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-mutex-list.h | 50 ---------------------------------------- - src/cairo-mutex-private.h | 2 +- - src/cairo-mutex.c | 2 +- - 5 files changed, 54 insertions(+), 52 deletions(-) - -commit 29adf591b7026092a809e9a27878b5b4e35051fb -Author: Carl Worth -Date: Thu Apr 12 12:47:27 2007 -0700 - - move show-glyphs-many to the DISABLED_TESTS list - - And add a detailed comment explaining the reasons for disabling each - test in the list. - - test/Makefile.am | 62 +++++++++++++++++++++++++++++++++++++---------------- - 1 files changed, 43 insertions(+), 19 deletions(-) - -commit c5b2f9d5c22c2259a11f0cbfbca8128cd3ac5794 -Author: Chris Wilson -Date: Thu Apr 12 01:22:49 2007 +0100 - - cairo_xlib_screen_info_t - always perform an exact match - - This ensures that only one cairo_xlib_screen_info_t holds the - close_display_hooks, an assumption used later. - - src/cairo-xlib-screen.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8c9f0f607b992c47b555b5eaff3c599a8c1eac57 -Author: Chris Wilson -Date: Thu Apr 12 01:21:03 2007 +0100 - - cairo-xlib-screen - avoid dereferencing a NULL screen. - - Do not initialize font options when setting up the - cairo_xlib_screen_info_t corresponding to the display itself and not - associated with any screen. This avoids a potential NULL dereferences. - - (Fixes https://bugs.freedesktop.org/show_bug.cgi?id=10517) - - src/cairo-xlib-screen.c | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit dc1de86680b59def00ce1e9f11997cf554cdfec1 -Author: Behdad Esfahbod -Date: Thu Apr 12 15:06:37 2007 -0400 - - [ROADMAP] Add cairo_object_t - - ROADMAP | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 12b962d648d307d7a6b94035b6c4ffdeaadd68e2 -Author: Behdad Esfahbod -Date: Thu Apr 12 14:56:36 2007 -0400 - - [ROADMAP] Mark bug #5777 as fixed - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e391d3eaee65d65f267f86d1ef1e1fd8898e6556 -Author: Behdad Esfahbod -Date: Thu Apr 12 14:42:41 2007 -0400 - - [test] Disable text-glyph-range that was crashing - - Disabled tests are defined in DISABLED_TESTS. This has the benefit - that they will still be buildable and be shipped. Just not run by - default. - - test/Makefile.am | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit d3c7942fb271fe8d1df7ca3205b41601abdcb5c8 -Author: Behdad Esfahbod -Date: Thu Apr 12 14:22:02 2007 -0400 - - [pixman] Mark some small functions that are called per-pixel inline - - These uses were introduced in the previous commit. - - pixman/src/fbcompose.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit e3b3d22999a130f7017e8e20a432a0d8a7f48f3b -Author: David Reveman -Date: Thu Apr 12 14:14:12 2007 -0400 - - [pixman] Fix fbcompose.c that was broken for some composite operations (#5777) - - pixman/src/fbcompose.c | 244 ++++++++++++++++++++++++++++++------------------ - 1 files changed, 151 insertions(+), 93 deletions(-) - -commit c8d2d1e8764c7ba754e46a3af68af2b4460d2e04 -Author: Vladimir Vukicevic -Date: Thu Apr 12 10:51:17 2007 -0700 - - add licenses to test files - - test/composite-integer-translate-over-repeat.c | 26 ++++++++++++++++++++++++ - test/composite-integer-translate-source.c | 26 ++++++++++++++++++++++++ - 2 files changed, 52 insertions(+), 0 deletions(-) - -commit e240048a14333d5c61a0d4ae5c30acd12bcb5805 -Merge: 29a1fe1... 977a898... -Author: Michael Emmel -Date: Wed Apr 11 21:43:15 2007 -0700 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit 29a1fe12cf33a68713a4ddf7f59217fd40f6e967 -Author: Michael Emmel -Date: Wed Apr 11 21:42:57 2007 -0700 - - Fixed compile error from missing directfb.h include - - src/cairo-directfb.h | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 977a8982ab17760af0d69cb2e018ed50f4c7b992 -Author: Kristian Høgsberg -Date: Wed Apr 11 23:49:01 2007 -0400 - - Add missing copyright notice. - - test/pixman-rotate.c | 26 ++++++++++++++++++++++++++ - 1 files changed, 26 insertions(+), 0 deletions(-) - -commit 9193b29645ef1625a599471e3b0cb5279d2c05cb -Author: Behdad Esfahbod -Date: Wed Apr 11 23:30:31 2007 -0400 - - [ROADMAP] Mark done items - - ROADMAP | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 284edb86484de8ccf3adf35d5cb9ff6ba64759ec -Author: Chris Wilson -Date: Thu Apr 12 03:01:31 2007 +0100 - - Do not raise an error if we fail to locate 'find' or 'xargs' - - Whilst not being able to delete all of the test output is messy it is - however not fatal, so do not abort configuration simply because we - cannot find either program. - - configure.in | 6 ++---- - test/Makefile.am | 15 +++++++++------ - 2 files changed, 11 insertions(+), 10 deletions(-) - -commit a8974223dc6376a11588c6ecf1e54da5329b9c72 -Author: Chris Wilson -Date: Thu Apr 12 02:29:33 2007 +0100 - - Check for find and xargs during configure - - Replace hard-coded find, xargs and rm with the paths determined during - configure. This also gives us an opportunity to detect missing programs - and inform the developer. - - configure.in | 9 +++++++++ - test/Makefile.am | 12 ++++++------ - 2 files changed, 15 insertions(+), 6 deletions(-) - -commit 632ec8088cef5e9d4c2ff2886cfd550d706433e4 -Author: Behdad Esfahbod -Date: Wed Apr 11 20:18:11 2007 -0400 - - [test] Add copyright headers for my tests - - test/extend-pad.c | 26 ++++++++++++++++++++++++++ - test/surface-pattern-scale-down.c | 26 ++++++++++++++++++++++++++ - test/surface-pattern-scale-up.c | 26 ++++++++++++++++++++++++++ - test/surface-pattern.c | 26 ++++++++++++++++++++++++++ - 4 files changed, 104 insertions(+), 0 deletions(-) - -commit 82397a631410af343f14cafdb31f48de9373f4a7 -Author: Chris Wilson -Date: Thu Apr 12 00:55:04 2007 +0100 - - Avoid using GNU find extensions. - - Replace the complex single find with a series of simple but POSIX correct - equivalents. - - test/Makefile.am | 14 ++++++-------- - 1 files changed, 6 insertions(+), 8 deletions(-) - -commit 06382092e5e911ad2648f26e8ba5a6f8f7953e1b -Author: Behdad Esfahbod -Date: Wed Apr 11 19:42:34 2007 -0400 - - [pdiff] Ship gpl.txt - - test/pdiff/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c8645c85de94b83fe2fd60a4d881cb639eb79b46 -Merge: be98123... 52435e9... -Author: Carl Worth -Date: Wed Apr 11 16:38:46 2007 -0700 - - Merge branch 'master' of git.cairographics.org:/git/cairo into cairo - -commit 52435e99f31f06c18273a5a7351a2c21f7c0ecf6 -Author: Chris Wilson -Date: Wed Apr 11 23:34:24 2007 +0100 - - Move pixman_format_t from heap to stack allocations. - - pixman_format_t is a simple structure used in short-term allocations and - suitable for on-stack allocation. - - Killing the pixman_format_create()/pixman_format_destroy() pairs avoid - around 6% of the allocations during cairo-perf (e.g. 426,158 allocs out - of a total of 7,063,469). - - pixman/src/icformat.c | 118 +++++++++++++++------------ - pixman/src/icint.h | 12 +--- - pixman/src/icrect.c | 2 +- - pixman/src/ictrap.c | 36 +++----- - pixman/src/ictri.c | 199 +++++++++++++++------------------------------ - pixman/src/pixman.h | 27 ++++--- - src/cairo-image-surface.c | 103 ++++++++++-------------- - 7 files changed, 202 insertions(+), 295 deletions(-) - -commit be98123b2c30a3102629afff74b9233c18e0535d -Merge: efedf57... a6506c6... -Author: Carl Worth -Date: Wed Apr 11 16:02:08 2007 -0700 - - Merge cached-scaled-font-in-error into cairo - - Conflicts: - - src/cairo-scaled-font.c - -commit a6506c67f24331c703dd56502a1bc4504b7b2311 -Author: Chris Wilson -Date: Sun Apr 8 23:27:52 2007 +0100 - - Don't return scaled fonts in the error state from the cache. - - It is possible for a scaled_font to be flagged as in error, though only - through a "true error" e.g. a malloc failure. However, when returning a font - from the cache it should not be in error. So if we find a error font in the - cache we remove it and return a new font. - - src/cairo-scaled-font.c | 55 +++++++++++++++++++++++++++------------------- - 1 files changed, 32 insertions(+), 23 deletions(-) - -commit efedf57f43540ad79eddcc5ee79dc0d86846891e -Author: Carl Worth -Date: Wed Apr 11 15:25:18 2007 -0700 - - cairo-truetype-subset.c: Add missing error checks and propagation - - These are all to satisfy new warnings caused by the preceding commit, - (which added cairo_warn to various function tables). While fixing the - propoagation, fix functions to declare a return type of cairo_status_t - instead of int. - - src/cairo-truetype-subset.c | 178 +++++++++++++++++++++++++++++-------------- - 1 files changed, 120 insertions(+), 58 deletions(-) - -commit e6ca34e718859b40dc8eb75a6c68b056751a6deb -Author: Chris Wilson -Date: Sun Apr 8 22:59:10 2007 +0100 - - Mark function tables with attribute(warn_unused_result) - - src/cairo-paginated-surface-private.h | 2 +- - src/cairoint.h | 52 ++++++++++++++++---------------- - 2 files changed, 27 insertions(+), 27 deletions(-) - -commit 3bc413343a0b846c9501ee870db0424412aea701 -Author: Chris Wilson -Date: Wed Apr 11 01:08:17 2007 +0100 - - Define cairo_public_warn in terms of cairo_public. - - By defining cairo_public_warn as an extension of cairo_public, the - programmer need only to override cairo_public in order to export the - complete API for different architectures i.e. existing configurations - will continue to work with no alterations. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 54134dd901d6dc94aa56d45486223e7d4f6ba569 -Author: Chris Wilson -Date: Tue Apr 10 23:09:13 2007 +0100 - - Only enable warn-unused-result for recent gcc - - The attribute was introduced with gcc-3.4, but the ability to suppress - warnings from misapplied attributes (-Wno-attributes) was only introduced - later. Without the supression, gcc will emit tens of warnings for each - compilation completely drowning the real errors that the programmer - must see. - - configure.in | 19 +++++++++++++++++-- - pixman/src/pixman.h | 10 +++++++--- - src/cairoint.h | 13 ++++++------- - 3 files changed, 30 insertions(+), 12 deletions(-) - -commit f53c2b418cb4a36fbc1c30cdb1bf0ba9dba77bd0 -Author: Chris Wilson -Date: Mon Apr 9 16:24:11 2007 +0100 - - _pixman_create_source_image() - check for malloc failure - - Fix an unchecked malloc by propagating the NULL pointer up to its callers, - which were already checking for failures. - - pixman/src/icimage.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit d0745c08b782d79fc7ccfd59cab0ae841a56c428 -Author: Adrian Johnson -Date: Thu Apr 12 06:32:29 2007 +0930 - - PDF: Fix glyph positioning bug when glyphs are not horizontal - - Bug reported in - http://lists.freedesktop.org/archives/cairo/2007-April/010337.html - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e36794ad34282a4d671d7cc5527e9c650c2736fe -Merge: b692472... b745126... -Author: Carl Worth -Date: Wed Apr 11 13:15:57 2007 -0700 - - Merge branch 'warn-unused-result' into cairo - -commit b745126a04c126acc695e8abb6372c1890b03f07 -Author: Chris Wilson -Date: Wed Apr 11 12:26:21 2007 +0100 - - Use find | xargs to overcome shell command line limit. - - Once again we have hit the command line limit with the sheer volume of - generated test output. So replace the glob with a find which has the - additional advantage of only needing to walk the tree once to generate - the file lists - this begins to be noticeable with such large directories. - - test/Makefile.am | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit 61b8e346135f8b61b22257541c97b9f262c17826 -Author: Chris Wilson -Date: Wed Apr 11 11:59:27 2007 +0100 - - Unexport fbSolidFillmmx and fbCopyAreammx. - - By unexporting these function we have exact control over their call sites - and so can convert the initial guards into asserts which transforms the - two functions to return unconditional success and hence conversion to - void. - - pixman/src/fbmmx.c | 215 +++++++++++++++++++++------------------------ - pixman/src/fbmmx.h | 19 ---- - pixman/src/pixman-remap.h | 1 - - 3 files changed, 101 insertions(+), 134 deletions(-) - -commit efee2087387ba49e36d8d6104c4e2dd3ffeba081 -Author: Chris Wilson -Date: Wed Apr 11 11:26:27 2007 +0100 - - Propagate errors up through pixman_composite_trapezoids() - - Change the return type to indicate errors detected during - pixman_composite_trapezoids() and add checking for failures during - region ops. - - pixman/src/ictrap.c | 37 +++++++++++++++++++++---------------- - pixman/src/pixman.h | 2 +- - 2 files changed, 22 insertions(+), 17 deletions(-) - -commit bec097b5e281fcf2453de53946e89c13b37ecd1a -Author: Chris Wilson -Date: Wed Apr 11 11:13:30 2007 +0100 - - Propagate region errors from pixman_color_rects(). - - Region operations within pixman_color_rects can fail, so cleanup and - propagate. - - pixman/src/icrect.c | 74 +++++++++++++++++++++++++++++++++----------- - pixman/src/pixman.h | 4 +- - src/cairo-image-surface.c | 6 ++- - 3 files changed, 61 insertions(+), 23 deletions(-) - -commit 909334ee00701e18b2f2033b1c3a27714ce988fb -Author: Chris Wilson -Date: Wed Apr 11 10:45:55 2007 +0100 - - FbClipImage* should check for errors during region operations. - - Propagate the error from pixman_region_intersect(). - - pixman/src/icimage.c | 18 ++++++++++++++---- - 1 files changed, 14 insertions(+), 4 deletions(-) - -commit 5b67efcbd8acad60080129e0a8a307671b18b4fc -Author: Chris Wilson -Date: Wed Apr 11 10:38:09 2007 +0100 - - Propagate region failures during pixman_image_set_clip_region(). - - Operating on regions can fail so check the status and return an error, - after any necessary cleanup. - - pixman/src/icimage.c | 15 ++++++++++++--- - 1 files changed, 12 insertions(+), 3 deletions(-) - -commit e1abc3c26dd797ba9a888362713c5e5c1257867b -Author: Chris Wilson -Date: Wed Apr 11 09:51:58 2007 +0100 - - Provide a private entry point for cairo_scaled_font_status(). - - Add slim_hidden* markup for cairo_scaled_font_status() as we now use - it internally. - - src/cairo-scaled-font.c | 1 + - src/cairoint.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit 054c28a09de2c8ec2dc7111d786bca41a94f5a83 -Author: Carl Worth -Date: Wed Apr 11 02:26:08 2007 -0700 - - boilerplate: Add error checking for cairo_surface_write_to_png - - boilerplate/cairo-boilerplate.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 0a54ca2d2340c55896ee6951efe6917322813431 -Author: Carl Worth -Date: Wed Apr 11 02:22:22 2007 -0700 - - boilerplate: Add error checking for cairo_surface_set_user_data - - boilerplate/cairo-boilerplate.c | 26 ++++++++++++++++++++++---- - 1 files changed, 22 insertions(+), 4 deletions(-) - -commit 5661de9e1c93bd548b400de2619b6de6133d6483 -Author: Carl Worth -Date: Wed Apr 11 02:08:36 2007 -0700 - - SVG: Add missing error checking for calls to _cairo_output_stream_destroy - - src/cairo-svg-surface.c | 28 +++++++++++++++++++++------- - 1 files changed, 21 insertions(+), 7 deletions(-) - -commit 8d5aa0fb8d3ac6302dd5e832425f3285ad84280a -Author: Carl Worth -Date: Wed Apr 11 02:03:10 2007 -0700 - - SVG: Add missing error checks and propagation - - The function calls that get the new treatment here are: - - _cairo_meta_surface_replay - _cairo_surface_show_page - _cairo_array_append - - all within _cairo_svg_surface_emit_meta_surface - - src/cairo-svg-surface.c | 39 +++++++++++++++++++++++++++++---------- - 1 files changed, 29 insertions(+), 10 deletions(-) - -commit 9c810625e796704e32e76caae18d2129219f46db -Author: Carl Worth -Date: Wed Apr 11 01:55:59 2007 -0700 - - PDF: Added error checking and propagation for _cairo_array_append - - src/cairo-pdf-surface.c | 89 +++++++++++++++++++++++++++++----------------- - 1 files changed, 56 insertions(+), 33 deletions(-) - -commit 5ae82deb6942fae1515740551c71e9eb24750a7c -Author: Carl Worth -Date: Wed Apr 11 01:47:21 2007 -0700 - - PS: Add missing check for return value of _cairo_meta_surface_replay - - Here we have to change the return type of a couple of functions in - order to propagate the error condition. - - src/cairo-ps-surface.c | 25 ++++++++++++++++++++----- - 1 files changed, 20 insertions(+), 5 deletions(-) - -commit 8c31cca2af11c544a6028bf42c2187625b978f56 -Author: Carl Worth -Date: Wed Apr 11 01:42:02 2007 -0700 - - PS: Add missing checks for return value of _cairo_pattern_get_extents - - Propagation is extremely straightforward in this case. - - src/cairo-ps-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 01ac5f1aea298434b617d935512e2e72033989fd -Author: Carl Worth -Date: Wed Apr 11 01:35:11 2007 -0700 - - Assert that cairo_matrix_invert succeeds rather than ignoring tis return value - - This assertion is safe as an internal consistency check thanks to - the recent checks added to cairo_pattern_set_matrix. - - src/cairo-pdf-surface.c | 4 +++- - src/cairo-ps-surface.c | 5 ++++- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit bd0b328f7e07b3a292190aef6f82622800230f6f -Author: Carl Worth -Date: Tue Apr 10 22:55:00 2007 -0700 - - test/invalid-matrix: Add new test to exercise CAIRO_STATUS_INVALID_MATRIX paths - - This new test exercises every path where the user might possibly - pass in an invalid matrix. Currently the test fails if no error - is reported. Also, if an incorrect error is reported, (such as - CAIRO_STATUS_NO_MEMORY instead of CAIRO_STATUS_INVALID_MATRIX), - this is logged as a warning in invalid-matrix.log, but the test - still passes. - - It would still be worthwhile to follow up quickly and fix those - cases to propagate the correct error value. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/invalid-matrix.c | 142 +++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 144 insertions(+), 0 deletions(-) - -commit a6186604f794f2746089abc9c1716384c23aafc4 -Author: Carl Worth -Date: Tue Apr 10 22:52:37 2007 -0700 - - cairo_pattern_set_matrix: Validate that matrix is invertible - - If not, set an error in the pattern. - - src/cairo-pattern.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 8e72852f0b9f2cd8558eb6c11acb326e73fceb12 -Author: Carl Worth -Date: Tue Apr 10 22:51:44 2007 -0700 - - _cairo_gstate_ensure_scaled_font: Add missing propagation for error hiding inside the scaled_font - - src/cairo-gstate.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 2f1221e0f225f305c3f9c8e7311fe8f3fecab34b -Author: Carl Worth -Date: Tue Apr 10 22:50:46 2007 -0700 - - _cairo_gstate_ensure_scaled_font: Prefer to treat a pointer as a pointer, not a Boolean value - - src/cairo-gstate.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit dca69f73e3a11d397a701f82331d5aaa7194bd7f -Author: Carl Worth -Date: Tue Apr 10 17:16:39 2007 -0700 - - Check (and assert) return values of cairo_matrix_invert - - Now that we have matrix validation at the time of _cairo_scaled_font_init - we know that it is safe to invert this matrix. - - src/cairo-pdf-surface.c | 5 ++++- - src/cairo-ps-surface.c | 5 ++++- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit 4ce2b62bcea49eccc0a4ee3781a115e4a34d3ad4 -Author: Carl Worth -Date: Tue Apr 10 17:12:51 2007 -0700 - - _cairo_scaled_font_init: Detect an invalid matrix and return an error. - - Also fix all callers to notice and propagate the error, (though - some paths will still lose the CAIRO_STATUS_INVALID_MATRIX value - due to a return value of NULL at one point). - - src/cairo-atsui-font.c | 9 +++++++-- - src/cairo-scaled-font.c | 24 +++++++++++++++++------- - src/cairo-win32-font.c | 10 ++++++---- - 3 files changed, 30 insertions(+), 13 deletions(-) - -commit fd8c1e4dc851dd4ce8f84a3e47abdc4906c83b0f -Author: Carl Worth -Date: Tue Apr 10 16:43:50 2007 -0700 - - Fix cairo_scaled_font_create to return a nil scaled font, not NULL - - src/cairo-scaled-font.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 0f0ed88ee26f22c1b0e0ec7c95b8a258d137dde4 -Author: Carl Worth -Date: Tue Apr 10 23:01:55 2007 -0700 - - paginated: Add missing error check for _cairo_surface_show_page - - Fixing this uncovered a leak of a CAIRO_INT_STATUS_UNSUPPORTED value - up to cairo_show_page, (and similarly to cairo_copy_page). There was - really no good reason for _cairo_surface_show_page and - _cairo_surface_copy_page to be returning cairo_int_status_t. Fix - this by simply handling the UNSUPPORTED return at the surface layer - instead of the gstate layer. - - src/cairo-gstate.c | 20 ++------------------ - src/cairo-paginated-surface.c | 4 +++- - src/cairo-surface.c | 16 ++++++---------- - src/cairoint.h | 4 ++-- - 4 files changed, 13 insertions(+), 31 deletions(-) - -commit 381f0bcafc86cefa665368cbbe2026adda1d98c9 -Author: Carl Worth -Date: Tue Apr 10 16:33:34 2007 -0700 - - paginated: Add missing error check for _cairo_surface_get_extents - - src/cairo-paginated-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 41911002d754f187618ab310ab93c85c4b038943 -Author: Carl Worth -Date: Tue Apr 10 16:32:09 2007 -0700 - - test-meta-surface.c: Fix memory leak on error recovery path. - - src/test-meta-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit d954e4c1488c6478852dcc02641e66df1d4e9317 -Author: Carl Worth -Date: Tue Apr 10 16:31:21 2007 -0700 - - Fix indentation of CLEANUP_IMAGE label. - - src/cairo-paginated-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c011c37ba086f0c8d0dac6437318822927543955 -Author: Carl Worth -Date: Tue Apr 10 16:30:43 2007 -0700 - - paginated: Fix missing errors checks for _cairo_meta_surface_replay - - src/cairo-paginated-surface.c | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit e73a55ad3cc30b0ea69379b12283515523015751 -Author: Carl Worth -Date: Tue Apr 10 14:17:42 2007 -0700 - - cairo-truetype-subset: Fix missing error propagation - - src/cairo-truetype-subset.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 97b8fd8117160cfea9864c81cbb8a06b321618f1 -Author: Carl Worth -Date: Tue Apr 10 14:16:01 2007 -0700 - - cairo-truetype-subset: Check resturn value from _cairo_array_append and propagate - - src/cairo-truetype-subset.c | 28 ++++++++++++++++++++++++---- - 1 files changed, 24 insertions(+), 4 deletions(-) - -commit 84639e563ddfbd70ca48dcde4d3631418fd1cd82 -Author: Carl Worth -Date: Tue Apr 10 14:11:43 2007 -0700 - - test-meta-surface: Add missing check for error from _cairo_surface_get_extents - - src/test-meta-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 866b2296b4a8b347011f1c8ae2e0f3a987a29d0c -Author: Carl Worth -Date: Tue Apr 10 14:09:56 2007 -0700 - - test-meta-surface: Add missing checks for errors from _cairo_meta_surface_replay - - src/test-meta-surface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit ec1fc931257ff90fe190c52ed0a3bed9f218c350 -Author: Carl Worth -Date: Tue Apr 10 13:59:42 2007 -0700 - - Add missing error check of return value of _cairo_path_fixed_close_path - - src/cairo-ft-font.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 3d21037a8fb69bde0765871f53fe461ac397367e -Author: Carl Worth -Date: Tue Apr 10 13:57:41 2007 -0700 - - Add assertion check to quiet warn_unused_result warning. - - This is a somewhat useful internal consistency check. - - src/cairo-xlib-surface.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 2f468677160080e9dd1db52a2ad7ca4adbf48149 -Author: Carl Worth -Date: Tue Apr 10 13:53:58 2007 -0700 - - Rename _cairo_pdf_surface_emit_toUnicode_stream to eliminate StudlyCaps - - Obviously, the new name is _cairo_pdf_surface_emit_to_unicode_stream which - is consistent with the to_unicode_stream identifiers already existing in - the implementation. - - src/cairo-pdf-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit cc6c115e3c5b931be4ab0210ce7f8cecaccf6241 -Author: Carl Worth -Date: Tue Apr 10 13:51:46 2007 -0700 - - PDF: Check return value of _cairo_output_stream_destroy and propagate - - src/cairo-pdf-surface.c | 56 +++++++++++++++++++++++++++++----------------- - 1 files changed, 35 insertions(+), 21 deletions(-) - -commit 8873928f09a78d3e6e8e57d5d4e0b94cf1f78ab7 -Author: Carl Worth -Date: Tue Apr 10 13:40:04 2007 -0700 - - PS: Add missing error checks for _cairo_output_stream_destroy - - src/cairo-ps-surface.c | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit ab5eccbbf6cc361e864e0d75c0299cf7b5d6122d -Author: Carl Worth -Date: Tue Apr 10 13:28:48 2007 -0700 - - Make _cairo_clip_reset void - - Yet another unconditionally successful function---so it's easier to return nothing. - - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 4 +--- - src/cairo-gstate.c | 4 +++- - src/cairo-meta-surface.c | 2 +- - 4 files changed, 6 insertions(+), 6 deletions(-) - -commit 7a0ae5b7057798106b5e1a82431178f6c5f148e7 -Author: Chris Wilson -Date: Tue Apr 10 21:09:36 2007 +0100 - - Disable warnings for cairo_*_reference functions. - - This class of functions modify their argument and return it as a - *convenience* for the caller. For example, within cairo a common idiom is: - - cairo_object_reference (new); - cairo_object_unreference (this->obj); - this->obj = new; - - which updates the member to the new object irrespective of whether the - new object is the same as the one being replaced. Other issues arise - with subtypes, as the return type is the parent's and so require more - complicated handling to compile cleanly. - - Disabling the warning is therefore preferred over adding code which - decreases readibility and reduces maintainability. We need to make the - compiler work for us, not against us... - - src/cairoint.h | 26 +++++++++++++++----------- - 1 files changed, 15 insertions(+), 11 deletions(-) - -commit b82e595449e6eebbe6024454aaaaee31e6c43c73 -Author: Chris Wilson -Date: Mon Apr 9 15:31:28 2007 +0100 - - pixman region operations can fail, propagate the error. - - Copying the clip region could fail, add error returns and propagate up - the call stack. - - src/cairo-clip-private.h | 4 +- - src/cairo-clip.c | 53 +++++++++++++++++++++++++++++++++------------- - src/cairo-gstate.c | 14 +++++++++-- - src/cairo.c | 2 +- - src/cairoint.h | 2 +- - 5 files changed, 53 insertions(+), 22 deletions(-) - -commit b0a256aaf3f0fd4491a28fca797aef1ef4b1251d -Author: Carl Worth -Date: Tue Apr 10 13:07:09 2007 -0700 - - Change _cairo_dtostr to have a void return type - - As previously implemented, there's no essential information in the - return value from _cairo_dotostr, (the caller can simply use strlen - to recompute the same value, which is what the only caller is already - doing). - - There would be real information in a return value which would return - the result from the call to snprintf for the case where the buffer is - not large enough for the number being printed. - - src/cairo-output-stream-private.h | 2 +- - src/cairo-output-stream.c | 5 +---- - src/cairoint.h | 3 --- - 3 files changed, 2 insertions(+), 8 deletions(-) - -commit 5303980f82431a9d084177998a68527b60610241 -Author: Carl Worth -Date: Tue Apr 10 12:56:56 2007 -0700 - - _cairo_output_stream_vprintf: Add assertion to detect internal inconsitency - - This will catch any inconsistency between the length of a single - format specifier and the fixed size of the single_fmt buffer. - - src/cairo-output-stream.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit 97a69bc82e023d139d997ef69c7eba50d2708686 -Author: Carl Worth -Date: Tue Apr 10 12:13:27 2007 -0700 - - Fix mis-indented _cairo_dtostr - - src/cairo-output-stream.c | 64 ++++++++++++++++++++++---------------------- - 1 files changed, 32 insertions(+), 32 deletions(-) - -commit 5c95800cded4e906baf8ddd10bfb4abc59151b13 -Author: Carl Worth -Date: Tue Apr 10 12:13:10 2007 -0700 - - Fix mis-indented _cairo_traps_init_box - - src/cairo-traps.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) - -commit 57188b4dcbcc2625dfc1817f8fe3b8ffeade5dc5 -Author: Carl Worth -Date: Tue Apr 10 12:06:09 2007 -0700 - - Fix cairo_traps_t status handling - - Add a _cairo_traps_status function and use it instead of adding - error checks to callers of _cairo_traps_add_trap and - _cairo_traps_add_trap_from_points, (both of which are now given - a void return type). - - src/cairo-bentley-ottmann.c | 14 +++++++------- - src/cairo-traps.c | 24 ++++++++++++++---------- - src/cairoint.h | 5 ++++- - 3 files changed, 25 insertions(+), 18 deletions(-) - -commit 67bc608603b9baf8de8bcd2fedcf8ec315432a37 -Author: Carl Worth -Date: Tue Apr 10 11:11:32 2007 -0700 - - Add missing error checking to _trace_mask_to_path - - Note: It looks like it would be convenient to shove a status value - into cairo_path_fixed_t to reduce this sequence of error checks. - But I tried that first, and it actually makes things worse overall - due to many things like _cairo_path_fixed_move_to called by - cairo_move_to where the result must be immediately checked anyway. - So I've already rejected that approach. - - src/cairo-scaled-font.c | 54 +++++++++++++++++++++++++++++++++++----------- - 1 files changed, 41 insertions(+), 13 deletions(-) - -commit b1086caf3b108b0df19f70a2b6df161ad51bb280 -Author: Carl Worth -Date: Tue Apr 10 10:45:15 2007 -0700 - - Add a status field to cairo_polygon_t - - Now, the functions to add new data to a polygon all become void, - and there's a new _cairo_polygon_status call to query the status - at the end of a sequence of operations. - - With this change, we fix many callerswhich were previously not - checking the return values of _cairo_polygon functions by adding - only a single call to _cairo_polygon_status rathern than several - new checks. - - src/cairo-path-fill.c | 36 ++++++++------------------- - src/cairo-path-stroke.c | 8 +++++- - src/cairo-pen.c | 9 ++++--- - src/cairo-polygon.c | 60 +++++++++++++++++++++++++--------------------- - src/cairoint.h | 11 ++++++-- - 5 files changed, 64 insertions(+), 60 deletions(-) - -commit bff45ec9f90b5949a8ffa19cb03c140a08119e4d -Author: Carl Worth -Date: Mon Apr 9 17:44:12 2007 -0700 - - Invert condition to more intuitive form. - - The idiom for checking the return value of malloc is: - - if (pointer == NULL) { ... } - - rather than: - - if (pointer != NULL) { ... } - - src/cairo-pattern.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 01955a6e82ee28dd1377a3f2242aa2ddeebadac9 -Author: Carl Worth -Date: Mon Apr 9 17:42:04 2007 -0700 - - Rename ARRAY_LEN to ARRAY_LENGTH - - Yet another victim in my hunt against abbreviations within cairo's implementation. - - src/cairo-arc.c | 2 +- - src/cairo-atsui-font.c | 4 ++-- - src/cairo-bentley-ottmann.c | 2 +- - src/cairo-cff-subset.c | 6 +++--- - src/cairo-hash.c | 2 +- - src/cairo-pattern.c | 8 ++++---- - src/cairo-polygon.c | 2 +- - src/cairo-spline.c | 4 ++-- - src/cairo-surface.c | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-traps.c | 2 +- - src/cairo-truetype-subset.c | 6 +++--- - src/cairoint.h | 4 ++-- - 13 files changed, 23 insertions(+), 23 deletions(-) - -commit d317e8175de04c73c4a1f84db4a7e5354411ca06 -Author: Carl Worth -Date: Mon Apr 9 17:38:17 2007 -0700 - - Prefer FALSE over 0 for initializing a cairo_bool_t value - - src/cairo.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 9a33dab96988b94940a917921accc1bf19960a53 -Author: Carl Worth -Date: Mon Apr 9 17:37:30 2007 -0700 - - Fix an incorrectly indented condition - - src/cairo-xlib-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 4bfc8c98ccf29fc11d11ee35996be9aab5a63f36 -Author: Carl Worth -Date: Mon Apr 9 17:36:41 2007 -0700 - - ATSUI: Fix broken error checks for NULL surface - - The cairo_image_surface_create function never returns NULL so - the previous error checks would never have triggered. The correct - approach is to check the result of cairo_surface_status(). - - src/cairo-atsui-font.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit bd98295100ce84a9dfffd16bc6e50ef0ced4d4bc -Author: Carl Worth -Date: Mon Apr 9 17:30:06 2007 -0700 - - Add a couple of missing newline characters - - A return statement that's not at the end of a function really needs - a line of whitespace after it. - - src/cairo-bentley-ottmann.c | 1 + - src/cairo-type1-fallback.c | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit a7d8e52cc4be2376429f567abc2be853da7d5fbc -Author: Carl Worth -Date: Mon Apr 9 17:24:18 2007 -0700 - - Cleanup multi-line if condition - - The standard idiom of assigning to a local status variable looks much, - much nicer here. - - src/cairo-path.c | 20 +++++++++++--------- - 1 files changed, 11 insertions(+), 9 deletions(-) - -commit 7c97696af98a6dab9e0c5cdc72ff08c19892c95f -Author: Carl Worth -Date: Mon Apr 9 17:16:30 2007 -0700 - - Make _cairo_path_bounder_add_point void - - Yet another function that cannot fail under any circumstances. - - src/cairo-path-bounds.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit 93776772edbadeab90ea199a115750310be91e4e -Author: Carl Worth -Date: Mon Apr 9 17:15:33 2007 -0700 - - Make _cairo_matrix_compute_scale_factors void - - Yet another function that cannot fail under any circumstances. - - src/cairo-matrix.c | 4 +--- - src/cairoint.h | 2 +- - 2 files changed, 2 insertions(+), 4 deletions(-) - -commit d5b35d7d7666634f1f98d6c0141a2a29976e7e2f -Author: Carl Worth -Date: Mon Apr 9 17:12:11 2007 -0700 - - Make _cairo_pen_init_empty void - - Yet another function that cannot fail under any circumstances. - - src/cairo-pen.c | 4 +--- - src/cairoint.h | 2 +- - 2 files changed, 2 insertions(+), 4 deletions(-) - -commit 9077da99abd163ebd0c52e8375e6f40ce60cf7d2 -Author: Carl Worth -Date: Mon Apr 9 17:09:51 2007 -0700 - - Make _cairo_gstate_user_to_device (and friends) void. - - This is just multiplication after all, so there's nothing that can fail. - And we can get rid of a lot of useless error-checking code this way. - The corrected functions are: - - _cairo_gstate_user_to_device - _cairo_gstate_user_to_device_distance - _cairo_gstate_device_to_user - _cairo_gstate_device_to_user_distance - - src/cairo-gstate.c | 16 +++---------- - src/cairo.c | 62 +++++++++++++++------------------------------------ - src/cairoint.h | 8 +++--- - 3 files changed, 26 insertions(+), 60 deletions(-) - -commit 628ec8eb91fb246b8a44be3451163a5d8592a860 -Author: Carl Worth -Date: Mon Apr 9 17:03:29 2007 -0700 - - Make _cairo_gstate_identity_matrix void - - Now that we have the warn_unused_result attribute enabled, (thanks - Chris!), it's actually harmful to have a function return an - uncoditional value of CAIRO_STATUS_SUCCESS. The harm is that - it would force lots of unnecessary error-checking paths that - just add clutter. - - It is much better to simply give a function that cannot fail - a return type of void. - - src/cairo-gstate.c | 9 ++------- - src/cairo.c | 6 +----- - src/cairoint.h | 2 +- - 3 files changed, 4 insertions(+), 13 deletions(-) - -commit 90803eca0fa8d49c54c465580707009aae382d28 -Author: Chris Wilson -Date: Wed Apr 4 11:17:23 2007 +0100 - - Implement clone_surface for test-fallback-surface. - - A few tests were failing due to clip_init_deep_copy() not being able to - clone the target surface. Before propagating the failure, this was being - silently ignored. - - Copy the simple implementation from cairo-image-surface. - - src/test-fallback-surface.c | 22 +++++++++++++++++++++- - 1 files changed, 21 insertions(+), 1 deletions(-) - -commit 4456ecbf2694f0b71a431353e0dea0515b72926b -Author: Chris Wilson -Date: Sun Apr 8 23:40:31 2007 +0100 - - Fix detection of FcFini(). - - It is customary to check for a FontConfig function in the FontConfig - library rather than the FreeType library. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cd2394c076e2f6b14a9a3281461026b811692f2e -Author: Chris Wilson -Date: Tue Apr 3 21:50:15 2007 +0100 - - Free the bitmap->buffer on failure - - Currently if the ownership of the bitmap->buffer is passed to - _get_bitmap_surface() then the status of the buffer is inconsistent - should the function detect an error (i.e. CAIRO_STATUS_NO_MEMORY). - Fix it up that should we encounter an error and we own the buffer then - we always free it on behalf of the caller. - - src/cairo-ft-font.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit ac33953a81114dddc25ceb57f6df57e01d4d937b -Author: Chris Wilson -Date: Sun Apr 8 23:37:29 2007 +0100 - - Correct handling of a malloc failure during pattern_create_in_error() - - Confusion had been introduced as to who provided the fixup after - the malloc failed which resulted in a NULL deference whilst checking for - an erroneous pattern in _cairo_pattern_create_in_error. - - src/cairo-pattern.c | 24 ++++++------------------ - 1 files changed, 6 insertions(+), 18 deletions(-) - -commit b6924722b8c8e5f4356d3c8ba438a702ffb8a5ed -Author: Behdad Esfahbod -Date: Sun Apr 8 23:35:01 2007 -0400 - - [cairo-skiplist] Use one random number per insertion, instead of two - - src/cairo-skiplist-private.h | 3 +++ - src/cairo-skiplist.c | 7 +++++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit ce1651f1ea57b53ad91f5115524d33f6424d5797 -Author: Chris Wilson -Date: Tue Apr 3 16:53:17 2007 +0100 - - Free the pixman_image if we fail to wrap it with a surface. - - src/cairo-image-surface.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit bd99507f15dd8a2d162f13e691cc5f8d71795577 -Author: Chris Wilson -Date: Fri Mar 30 14:00:50 2007 +0100 - - Initialise cairo_spline_t to use its embedded buffer. - - Currently the code defaults to setting its points to NULL and fixing it up - on the first add_point() to use the embedded buffer. Skip this extra step - by initialising points to the embedded buffer. - - src/cairo-spline.c | 24 +++++++----------------- - 1 files changed, 7 insertions(+), 17 deletions(-) - -commit 6daaf8a89d24fb3022687fe8d52c8001dc270265 -Author: Behdad Esfahbod -Date: Sun Apr 8 23:32:27 2007 -0400 - - [cairo-skiplist] Reduce MAX_LEVEL from 31 to 15 - - The probability that a node of level L is generated is - 0.25^(L-1) * 0.75. It means, a node of level 15 or - more will be used with a probability of about 3 * 10^-9. - That's really rare... - - Actually that's not still true, because the level of a new - node is capped by current max-level plus one. So to really - get a node with a level of 15 one should first get a node - of level 2, then 3, then 4, ..., finally 15. Now that's - REALLY rare. - - And guess what, the skiplist only start behaving bad with a - max level cap of MAX_LEVEL when having on the order of - 4**MAX_LEVEL items in it. I really hope we don't get there. - - src/cairo-skiplist-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a7de9501f6d0f3a574c5246b81d78aa749b64e67 -Author: Behdad Esfahbod -Date: Sun Apr 8 23:24:50 2007 -0400 - - [cairo-skiplist] Group levels two-by-two in freelists - - Most memory allocators allocate in multiples of twice the size of - a pointer. So there is no point in keeping freelists for both - even and odd levels. We now round odd levels up to the next - even level for freelist computations. This reduces the number of - node mallocations. - - src/cairo-skiplist-private.h | 10 +++++++++- - src/cairo-skiplist.c | 21 ++++++++++++++------- - 2 files changed, 23 insertions(+), 8 deletions(-) - -commit b2280c5ac25e752c4462acdc8d2ded916fce7c34 -Author: Chris Wilson -Date: Fri Mar 30 11:24:18 2007 +0100 - - Do not overwrite cr->status - - The idiom for cairo.c is to do - cr->status = _cairo_op (); - if (cr->status) _cairo_set_error (cr, cr->status); - - Unfortunately a trivial mistake for a _cairo_op () is to call a cairo_op () - and forget to check cr->status but return CAIRO_STATUS_SUCCESS which will - mask the earlier error. - - Obviously this is a bug in the lower level but the impact can be reduced - by chaning cairo.c to use a local status variable for its return: - cairo_status_t status = _cairo_op (); - if (status) _cairo_set_error (cr, cr->status); - - src/cairo.c | 537 +++++++++++++++++++++++++++++++++++------------------------ - 1 files changed, 319 insertions(+), 218 deletions(-) - -commit 14ac5dd78b38aaaa118e8ac39fa50f485bff516d -Author: Chris Wilson -Date: Sun Apr 8 23:11:57 2007 +0100 - - Return the correct status from _cairo_pen_stroke_spline(). - - The return value is shared before the normal cleanup and error paths, - so do not simply return a hard-coded CAIRO_STATUS_SUCCESS. - - src/cairo-pen.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b823e2f68ff613b2c4f537aba6bbbcf413412eb2 -Author: Chris Wilson -Date: Sun Apr 8 23:09:31 2007 +0100 - - cairo-xlib-surface - propagate status returns. - - These were found during a cairo_static pass on an alternative branch... - - A critical one in particular was setting the have added glyph flag to - TRUE even if _cairo_xlib_surface_add_glyph() fails. This can cause an - application crash due to a RenderBadGlyph error later when the scaled - font is cleaned and we attempt to remove the glyph. - - src/cairo-xlib-surface.c | 44 +++++++++++++++++++++++++++++++------------- - 1 files changed, 31 insertions(+), 13 deletions(-) - -commit 4a624b8e8b0a14dd03e551b28257d8a54b9ee6f6 -Author: Chris Wilson -Date: Thu Mar 29 13:36:07 2007 +0100 - - Remove the entry if we return an error code during _cair_hash_table_insert. - - Previously if we detected an error during resize we would report a - failure to insert the entry into the hash table having already done so. - - src/cairo-hash.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 1cdb54f8835446b23769b7771445201a9b5d165e -Author: Chris Wilson -Date: Thu Mar 29 09:11:21 2007 +0100 - - Reorder cleanup cairo_xlib_surface_show_glyphs() - - _cairo_pattern_release_surface() asserts that it is passed a pattern - surface. This itself is bad as breaks the symmetry with - _cairo_pattern_acquire_surface under() error conditions, however reorder - the cleanup to avoid this assertion. - - src/cairo-xlib-surface.c | 22 ++++++++++++---------- - 1 files changed, 12 insertions(+), 10 deletions(-) - -commit a1331fb043051ac10f8555b2ad2fe85183db96df -Author: Chris Wilson -Date: Wed Mar 28 19:32:25 2007 +0100 - - Detect failure to allocate glyphs during _cairo_scaled_font_init() - - If _cairo_cache_create fails, return CAIRO_STATUS_NO_MEMORY. - - src/cairo-scaled-font.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 1237eedff3d557b94db9c940fd8de48be9ba41ba -Author: Chris Wilson -Date: Sun Apr 8 22:56:43 2007 +0100 - - Check for error whilst trying to advance along a text string. - - The text perf-case tries to fill the region with a single text string, - but fails to detect when the current point does not advance due to an - error. This causes the perf-case to enter an infinite loop, so we break - out when the cairo_status() has been set. - - perf/text.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ea4945850ae3ce3614bcadc0fa413eb836344430 -Author: Chris Wilson -Date: Fri Mar 16 20:04:26 2007 +0000 - - Avoid using substituted surfaces for xlib operations. - - Detect when a substitute image surface is returned for a solid pattern, - and avoid mixed image/xlib composite operations. This can happen for example - if there is a resource allocation failure during creating a similar surface. - - src/cairo-xlib-surface.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 751976970bb0ec9b810c1f58a05d53b7bfb7d90f -Author: Chris Wilson -Date: Fri Mar 16 19:35:02 2007 +0000 - - Handle failure to allocate a GC. - - src/cairo-xlib-surface.c | 51 ++++++++++++++++++++++++++++++--------------- - 1 files changed, 34 insertions(+), 17 deletions(-) - -commit c6055dc349c3f96e8d6f0e4166540871a59cb0e2 -Author: Chris Wilson -Date: Sun Apr 8 22:50:44 2007 +0100 - - Reset cairo_scaled_font_map after freeing. - - Along the error path the global font map was freed but not reset, - causing segfaults on any subsequent use of a cairo_scaled_font_t. - - src/cairo-scaled-font.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 65de47d8bc7865c6bf6318fd7bd861acf4e4af05 -Author: Chris Wilson -Date: Sun Apr 8 22:47:19 2007 +0100 - - cairo-bentley-ottmann - check init for failure - - This was found during a cairo_static pass on an alternative branch... - Add the trivial error propagation for _cairo_bo_event_queue_init() - - src/cairo-bentley-ottmann.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit b4cb0306b4415f2ddf0acd84043b72c8b8485726 -Author: Chris Wilson -Date: Wed Mar 28 15:55:06 2007 +0100 - - cairo-type1-fallback - propagate error returns - - Add status returns in order to propagate a matrix inversion failure - up through the call stack. - - src/cairo-type1-fallback.c | 25 ++++++++++++++++++------- - 1 files changed, 18 insertions(+), 7 deletions(-) - -commit b29d78dda169ee58b82cdbd04e3af2eedcc58edd -Author: Chris Wilson -Date: Wed Mar 28 15:43:37 2007 +0100 - - cairo-svg-surface - propagate some error returns - - Add status returns to functions in order to propagate an error up - the call stack. - - For the emit_*_pattern we add a new status return even when when - the functon return CAIRO_STATUS_SUCCESS unconditionally in order for - the caller to handle all cases in a consistent manner. - - src/cairo-svg-surface.c | 56 +++++++++++++++++++++++++++++++---------------- - 1 files changed, 37 insertions(+), 19 deletions(-) - -commit 3f7ca6ef5b09263607ff2f9862950393815c5d2c -Author: Chris Wilson -Date: Wed Mar 28 14:57:44 2007 +0100 - - cairo-pen - cairo_pen_init() can fail propagate its error. - - Add status returns in order to propagate an intialisation failure - back up the call chain. - - src/cairo-path-stroke.c | 23 +++++++++++++++-------- - 1 files changed, 15 insertions(+), 8 deletions(-) - -commit 67f13b3518c5fc98d1e3fb184bc6c2f5ea96f4c9 -Author: Chris Wilson -Date: Sun Apr 8 21:54:41 2007 +0100 - - cairo-bentley-ottmann/skip-list - catch and propagate out-of-memory errors - - The skip list inserts could return NULL indicating an out-of-memory error. - In order to handle this, propagate the error up the call stack. - - src/cairo-bentley-ottmann.c | 50 ++++++++++++++++++++++++++++++------------- - src/cairo-skiplist.c | 2 + - 2 files changed, 37 insertions(+), 15 deletions(-) - -commit 293122279fd87098a00386bb4c9310f3fc1bb373 -Author: Chris Wilson -Date: Sun Apr 8 21:50:48 2007 +0100 - - cairo-path-stroke - add trivial missing status checks - - Propagate the error status. - - src/cairo-path-stroke.c | 33 +++++++++++++++++++++++++-------- - 1 files changed, 25 insertions(+), 8 deletions(-) - -commit 2f2bff038cb0e59865a0405b19da4805213d718e -Author: Chris Wilson -Date: Sun Apr 8 21:47:01 2007 +0100 - - buffer-diff - check for any errors whilst writing the png - - Propagate any errors from writing out the png. - - test/buffer-diff.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 79424fc64640db4b518eaf4a23477f1bbc26db5a -Author: Chris Wilson -Date: Sun Apr 8 21:45:58 2007 +0100 - - cairo - add missing status checks - - Add a few missing status checks and set the error on the context when - applicable. - - src/cairo.c | 74 ++++++++++++++++++++++++++++++++++++++-------------------- - 1 files changed, 48 insertions(+), 26 deletions(-) - -commit a34a32fd99145733df9290f7c72bf7d9759e212b -Author: Chris Wilson -Date: Sun Apr 8 21:36:42 2007 +0100 - - cairo-type1-fallback - check for an error during cleanup - - The cleanup path is shared between the error path and the true path, and - so any error along it can not be ignored. - - src/cairo-type1-fallback.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit d2efadc84d0716498cec0510916f5375fbb7acf0 -Author: Chris Wilson -Date: Sun Apr 8 21:35:28 2007 +0100 - - cairo-svg-surface - propagate error returns - - Add a couple of missing checks for error statues. - - src/cairo-svg-surface.c | 34 ++++++++++++++++++++++++---------- - 1 files changed, 24 insertions(+), 10 deletions(-) - -commit 02264b40f5ab4831e52c0ad156471045c62c9e85 -Author: Chris Wilson -Date: Sun Apr 8 21:34:25 2007 +0100 - - cairo-surface-fallback - propagate error returns - - _cairo_surface_composite() can fail so check for and error return and - propagate. - - src/cairo-surface-fallback.c | 44 ++++++++++++++++++++++++----------------- - 1 files changed, 26 insertions(+), 18 deletions(-) - -commit 76b27fb0e81cc557c7348f6ba98b72552d781aed -Author: Chris Wilson -Date: Sun Apr 8 21:33:00 2007 +0100 - - cairo-ps-surface - add a couple of status checks - - Handle a couple more error returns. - - src/cairo-ps-surface.c | 54 +++++++++++++++++++++++++++-------------------- - 1 files changed, 31 insertions(+), 23 deletions(-) - -commit 619425a8b3bff79fb453f4b84e3a8e75db369b40 -Author: Chris Wilson -Date: Sun Apr 8 21:29:19 2007 +0100 - - cairo-polygon - trivial propagation of error status - - _cairo_polygon_move_to() returns an error status so use it. - - src/cairo-polygon.c | 8 +++----- - 1 files changed, 3 insertions(+), 5 deletions(-) - -commit 4b195779a465f69b035e9fd6695ef5c137a6b342 -Author: Chris Wilson -Date: Sun Apr 8 21:28:25 2007 +0100 - - cairo-pen - trivial propagation of error status - - Add a couple of missing checks for error statuses and correct the - error path cleanup for _cairo_pen_stroke_spline(). - - src/cairo-pen.c | 24 +++++++++++++++++------- - 1 files changed, 17 insertions(+), 7 deletions(-) - -commit 66d3e252025cf7f8a624fad83bffa1488a98910d -Author: Chris Wilson -Date: Sun Apr 8 21:26:33 2007 +0100 - - cairo-pdf-surface - propagate error status - - Catch and propagate any error status. - - src/cairo-pdf-surface.c | 25 +++++++++++++------------ - 1 files changed, 13 insertions(+), 12 deletions(-) - -commit b32a5b1dc6d66a4477fb8df1461821a27192600f -Author: Chris Wilson -Date: Sun Apr 8 21:25:46 2007 +0100 - - cairo-pattern - propagate status - - Catch, cleanup and propagate after an error return. - - src/cairo-pattern.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit fd49bbb4b21b73247b4d391c2cb1b028a596f6eb -Author: Chris Wilson -Date: Sun Apr 8 21:24:59 2007 +0100 - - cairo-path - check for failure during _cairo_path_fixed_interpret - - Catch an error return from _cairo_path_fixed_interpret() and return - it. Similary check for an error code in cairo_status() before returning - success. - - src/cairo-path.c | 55 +++++++++++++++++++++++++++++++---------------------- - 1 files changed, 32 insertions(+), 23 deletions(-) - -commit 814830f63b72f69198e92564c53f2683e5bda269 -Author: Chris Wilson -Date: Sun Apr 8 21:22:56 2007 +0100 - - cairo-path-fill - trivial missing unused result - - Actually assign the result that is tested on the next line... - - src/cairo-path-fill.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7ab1f62c60141d5c0e989d55f4a49537a6b52c4d -Author: Chris Wilson -Date: Sun Apr 8 21:21:49 2007 +0100 - - cairo-paginated-surface - fix up the trivial unused result - - Check for status returns and propagate, cleaning up as necessary. - - src/cairo-paginated-surface.c | 22 ++++++++++++++++------ - 1 files changed, 16 insertions(+), 6 deletions(-) - -commit 78c0d62ba7c650a6dc8137e6d1375e21f9477c2b -Author: Chris Wilson -Date: Sun Apr 8 21:20:42 2007 +0100 - - cairo-meta-surface - propagate trivial status return - - _cairo_path_fixed_init_copy() could fail so propagate it's status. - - src/cairo-meta-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 75cc5e04d5b854a1eefe116c2be4a3c2bb21d6ac -Author: Chris Wilson -Date: Sun Apr 8 21:19:49 2007 +0100 - - cairo-image-surface - propagate error returns from pixman. - - pixman does occasionally return an error - in such circumstances we - should propagate it. - - src/cairo-image-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit dee9a53029bd3e42c60a855edfb54591bf1782b5 -Author: Chris Wilson -Date: Sun Apr 8 21:18:30 2007 +0100 - - cairo-gstate - fix the trivial unchecked returns - - Check for an error return and propagate. - - src/cairo-gstate.c | 17 +++++++++++++---- - 1 files changed, 13 insertions(+), 4 deletions(-) - -commit de264af2c659b32c8bc71060da85037ac7e1d44f -Author: Chris Wilson -Date: Sun Apr 8 21:17:26 2007 +0100 - - cairo-ft-font - handle trivial failures - - Catch the status return, cleanup and propagate the error. - - src/cairo-ft-font.c | 82 +++++++++++++++++++++++++++++++++----------------- - 1 files changed, 54 insertions(+), 28 deletions(-) - -commit 14c8dfb0b9bcc26a02057e5636d8bf35c3b4ef29 -Author: Chris Wilson -Date: Mon Apr 9 15:03:34 2007 +0100 - - cairo-clip - handle trivial pixman failures - - Detect the simple cases when pixman returns an error, ie an OOM - condition, and propagate the error status. - - src/cairo-clip.c | 18 ++++++++++++------ - 1 files changed, 12 insertions(+), 6 deletions(-) - -commit 274c20c27a094c05afa62579cacb5749013abd60 -Author: Chris Wilson -Date: Sun Apr 8 21:14:09 2007 +0100 - - cairo-boilerplate - handle failure to set user data - - After failing to set the user data on a surface, clean up and return NULL. - - boilerplate/cairo-boilerplate.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 46eab95698e101e41407778eda22089b508a8984 -Author: Chris Wilson -Date: Sun Apr 8 20:50:08 2007 +0100 - - Add attribute(warn_unused_result) - - This adds a compiler check that the function result is used by the caller - and enables it by default for all cairo_private functions and for public - API that returns a cairo_status_t. - - It has been discussed that to extend the warnings to all functions, a - new function type could been introduced to cover static functions: - cairo_static. This has not been done at the present time in order to - minimise the churn and focus on the more common errors. - - In order to reduce the warning spew generated by gcc for invalid use of - this attribute, -Wno-attributes is added to CFLAGS. This has the - unfortunate side-effect of masking future warnings for all attributes - - be warned! - - configure.in | 13 ++++++++++++- - pixman/configure.in | 3 ++- - pixman/src/pixman.h | 2 +- - src/cairo.h | 40 ++++++++++++++++++++-------------------- - src/cairoint.h | 8 +++++--- - src/check-headers.sh | 2 +- - 6 files changed, 41 insertions(+), 27 deletions(-) - -commit 9da86e4a386505288c3a933f30583abf7706c950 -Author: Behdad Esfahbod -Date: Sun Apr 8 22:56:30 2007 -0400 - - Add references to the skiplist paper - - BIBLIOGRAPHY | 8 ++++++++ - src/cairo-skiplist-private.h | 6 ++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -commit ad0e13805c036941a03e49215b1bb525b4666033 -Author: Behdad Esfahbod -Date: Sun Apr 8 22:50:51 2007 -0400 - - [cairo-skiplist] Clarify MAX_LEVEL in comment, and adjust accordingly - - Reading the code, MAX_LEVEL is in fact what could have been named - MAX_NUM_LEVELS. That is, it is maximum possible level plus one. - All code is correct: it uses MAX_LEVEL as array size and never produces - a level of MAX_LEVEL. The comment is fixed. - - src/cairo-skiplist.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e8072e6e0ac86b2b0baefb54dcc551ee548164af -Author: Behdad Esfahbod -Date: Sun Apr 8 22:03:46 2007 -0400 - - [test,perf] Make them rebuild boilerplate when src is changed - - perf/Makefile.am | 2 +- - test/Makefile.am | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 6f9309221704a799ca36917c65abfc0941119b13 -Author: Behdad Esfahbod -Date: Sun Apr 8 21:58:54 2007 -0400 - - Rename pixman_region_uninit to pixman_region_fini - - pixman/src/fbcompose.c | 2 +- - pixman/src/fbpict.c | 2 +- - pixman/src/icimage.c | 8 ++++---- - pixman/src/icrect.c | 4 ++-- - pixman/src/ictrap.c | 4 ++-- - pixman/src/pixman-remap.h | 2 +- - pixman/src/pixman.h | 2 +- - pixman/src/pixregion.c | 2 +- - src/cairo-clip.c | 12 ++++++------ - src/cairo-glitz-surface.c | 4 ++-- - src/cairo-surface-fallback.c | 6 +++--- - src/cairo-surface.c | 4 ++-- - src/cairo-traps.c | 2 +- - 13 files changed, 27 insertions(+), 27 deletions(-) - -commit 4f8a04b1c93630c2556db5e3a0657076167e1ea3 -Author: Behdad Esfahbod -Date: Sun Apr 8 21:55:45 2007 -0400 - - [pixman-image] Simply initialization given that there is no clip - - pixman/src/icimage.c | 32 +++++++++----------------------- - 1 files changed, 9 insertions(+), 23 deletions(-) - -commit df9ea31df5857ee7aacd6ba002881233e9c4a9b4 -Author: Mathias Hasselmann -Date: Thu Mar 15 14:42:13 2007 +0100 - - [pixman-region] Separate pixman_region_init - - Most of the time pixman_region_init is called without any extents, and - followed by a pixman_region_union_rect, used to used to initialize - rectangular regions. pixman_region_union_rect is not that cheap, but - the sequence is called quite often. So it should be worth introducing - a specialized and fast function for this sequence. - - This introduces pixman_region_init_rect. This new function makes - _cairo_region_init_from_rectangle obsolete. - - Also removes the extent argument from pixman_region_init as it was - called with NULL most of the time. A pixman_region_init_with_extents - is added for the general case. - - pixman/src/fbcompose.c | 3 +-- - pixman/src/fbpict.c | 3 +-- - pixman/src/icimage.c | 25 +++++++++++-------------- - pixman/src/icrect.c | 10 +++++----- - pixman/src/ictrap.c | 6 ++---- - pixman/src/pixman-remap.h | 2 ++ - pixman/src/pixman.h | 7 ++++++- - pixman/src/pixregion.c | 37 +++++++++++++++++++++---------------- - src/cairo-clip.c | 18 ++++++++++-------- - src/cairo-glitz-surface.c | 2 +- - src/cairo-region.c | 25 ------------------------- - src/cairo-surface-fallback.c | 7 +++---- - src/cairo-surface.c | 16 ++++++---------- - src/cairo-traps.c | 2 +- - src/cairoint.h | 4 ---- - 15 files changed, 70 insertions(+), 97 deletions(-) - -commit 9436959a838412b5336279c7d5c35bf4e586f984 -Author: Mathias Hasselmann -Date: Wed Mar 14 01:37:28 2007 +0100 - - Update function map - - pixman/src/pixman-remap.h | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -commit 99f4bfada807aa7062051bb81fd29d4d3a87fbd1 -Author: Mathias Hasselmann -Date: Wed Mar 14 01:35:40 2007 +0100 - - Remove abdoned pixman_region_{create,destroy} - - pixman/src/pixman.h | 6 ------ - pixman/src/pixregion.c | 25 ------------------------- - 2 files changed, 0 insertions(+), 31 deletions(-) - -commit 4532c023e0810c2e8d0d5928074bcae8865c5e14 -Author: Mathias Hasselmann -Date: Wed Mar 14 01:31:53 2007 +0100 - - Make clientClip region static, remove abdoned CT_PIXMAP code paths - - pixman/src/icimage.c | 208 ++------------------------------------------------ - pixman/src/icimage.h | 2 +- - pixman/src/icint.h | 2 +- - 3 files changed, 9 insertions(+), 203 deletions(-) - -commit 65f269f3a4148a6cf3b2158ea893bb8452c3ad5e -Author: Mathias Hasselmann -Date: Wed Mar 14 01:24:11 2007 +0100 - - Avoid pixman_region_create in pixman_composite{,General} - - pixman/src/fbcompose.c | 32 ++++++++-------------- - pixman/src/fbpict.c | 32 ++++++++-------------- - pixman/src/icimage.c | 68 +++++++++++++++++------------------------------- - 3 files changed, 48 insertions(+), 84 deletions(-) - -commit 82cc451148eec1703d001f2b814d5b3712d31727 -Author: Mathias Hasselmann -Date: Wed Mar 14 01:21:18 2007 +0100 - - Make clip regions of pixman_image_t static - - pixman/src/fbcompose.c | 38 ++++++++-------- - pixman/src/icimage.c | 121 +++++++++++++++++++++++++++--------------------- - pixman/src/icimage.h | 8 ++-- - pixman/src/icrect.c | 7 ++- - 4 files changed, 96 insertions(+), 78 deletions(-) - -commit 041371533746d4aae3245a74459c0b0d1a4628fb -Author: Mathias Hasselmann -Date: Wed Mar 14 00:59:36 2007 +0100 - - Avoid pixman_region_create in pixman_color_rects - - pixman/src/icrect.c | 32 ++++++++++++++++---------------- - 1 files changed, 16 insertions(+), 16 deletions(-) - -commit 5a6ca4794bfd96026937cd8736a8bcb723b2b2ff -Author: Mathias Hasselmann -Date: Wed Mar 14 00:55:46 2007 +0100 - - Replace pixman_region_create_simple by pixman_region_init - - pixman/src/ictrap.c | 14 +++++++------- - pixman/src/pixman.h | 3 --- - pixman/src/pixregion.c | 13 +------------ - 3 files changed, 8 insertions(+), 22 deletions(-) - -commit f9057f27520842159f73dbfd6de49cb8feee1c39 -Author: Mathias Hasselmann -Date: Wed Mar 14 00:48:43 2007 +0100 - - Avoid pixman_create_region in glitz-surface - - src/cairo-glitz-surface.c | 49 ++++++++++++++++++++++----------------------- - 1 files changed, 24 insertions(+), 25 deletions(-) - -commit 82cbb6886cf621fd6b10be5e04ce11ff05127fc6 -Author: Mathias Hasselmann -Date: Wed Mar 14 00:46:34 2007 +0100 - - Remove redundant _cairo_clip_fini function - - src/cairo-clip-private.h | 3 --- - src/cairo-clip.c | 17 ----------------- - src/cairo-gstate.c | 4 ++-- - src/cairo-meta-surface.c | 2 +- - 4 files changed, 3 insertions(+), 23 deletions(-) - -commit 5ae309c4561418fb057a8049f047ffcb03f3b698 -Author: Mathias Hasselmann -Date: Wed Mar 14 00:40:44 2007 +0100 - - Avoid pixman_region_create in _cairo_traps_extract_region - - src/cairo-traps.c | 18 +++++++++--------- - src/cairoint.h | 6 +++--- - 2 files changed, 12 insertions(+), 12 deletions(-) - -commit 241482b5505427d221f4aaa970e7500a78fb2da1 -Author: Mathias Hasselmann -Date: Wed Mar 14 00:28:49 2007 +0100 - - Avoid malloc in _cairo_region_create_from_rectangle - - src/cairo-clip.c | 42 +++---- - src/cairo-region.c | 34 +++--- - src/cairo-surface-fallback.c | 250 ++++++++++++++++++++++-------------------- - src/cairo-surface.c | 52 +++++---- - src/cairoint.h | 5 +- - 5 files changed, 199 insertions(+), 184 deletions(-) - -commit efc9775149c4c87645c58235c7626cc4f72e69c3 -Author: Mathias Hasselmann -Date: Tue Mar 13 23:58:14 2007 +0100 - - Make sure clip->region is always initialized - - src/cairo-clip.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 0e7df34e07d7816b29c1ac1f67608b87c5e0efc2 -Author: Mathias Hasselmann -Date: Tue Mar 13 23:38:20 2007 +0100 - - Make region of cairo_clip_t static - - src/cairo-clip-private.h | 3 +- - src/cairo-clip.c | 87 ++++++++++++++++++++++++---------------------- - src/cairo-surface.c | 4 +- - 3 files changed, 49 insertions(+), 45 deletions(-) - -commit ced7b4a4ab4b5a8d639bfca0dd5db38f1ae4825d -Author: Mathias Hasselmann -Date: Tue Mar 13 22:34:23 2007 +0100 - - Make pixman_region_{init,uninit} public - - pixman/src/pixman.h | 5 +++++ - pixman/src/pixregion.c | 18 ++++++------------ - 2 files changed, 11 insertions(+), 12 deletions(-) - -commit 4d9065fcebbaf857d8d5fe49bcbb33f270c0bf26 -Author: Mathias Hasselmann -Date: Tue Mar 13 21:51:46 2007 +0100 - - Move struct pixman_region16 to pixman.h - - pixman/src/pixman.h | 7 ++++++- - pixman/src/pixregionint.h | 7 +------ - 2 files changed, 7 insertions(+), 7 deletions(-) - -commit dce3e5e6b556b817bf95182122adbf6f816b71e9 -Author: Behdad Esfahbod -Date: Fri Apr 6 17:20:49 2007 -0400 - - [TODO] Add 4945 Cairo doesn't support 8-bit pseudocolor visuals - - ROADMAP | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8bb0e5939c0694e88ea9ede4137d7306a067bd17 -Author: Chris Wilson -Date: Wed Mar 28 20:27:29 2007 +0100 - - _get_bitmap_surface - check for calloc failure - - src/cairo-ft-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b95577a931645b3013d5acaa5b1bd2d892c3932f -Author: Chris Wilson -Date: Wed Mar 28 17:58:31 2007 +0100 - - Protect boilerplate_xlib_synchronize from alloc failure. - - Don't call XDestroyImage on a NULL image. - - boilerplate/cairo-boilerplate.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 2a74fd5c7ff21f27013f709dc626be8087cb6a10 -Author: Chris Wilson -Date: Wed Mar 28 15:50:12 2007 +0100 - - Propagate one error return through pdf. - - src/cairo-pdf-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit a2a8f2ce7a0a9bcef7a4a29624725a77c2abe95a -Author: Behdad Esfahbod -Date: Thu Apr 5 20:03:51 2007 -0400 - - [ROADMAP] Move David Turner's cairo-ft rewrite to 1.6. - - ROADMAP | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 94460a9790ece7a436d6681ab41d7b2365f0775f -Author: Carl Worth -Date: Thu Apr 5 16:35:03 2007 -0700 - - ROADMAP/TODO: Update with 1.4.4 and 1.6 items from recent meeting - - ROADMAP | 164 ++++++++++++++++++++++++++----------------- - TODO | 236 ++++++++++++++++++++++---------------------------------------- - 2 files changed, 183 insertions(+), 217 deletions(-) - -commit d801aa59f84d95568e36d02a0ecf3544b9914187 -Author: Robert O'Callahan -Date: Fri Apr 6 00:00:33 2007 +0100 - - [quartz] fix floating point precision issue (#10531) - - This ensures that error due to double-to-float conversion - does not accumulate; the position of any glyph will be off by - at most one double-to-float conversion error. - - src/cairo-quartz-surface.c | 14 ++++++++------ - 1 files changed, 8 insertions(+), 6 deletions(-) - -commit 106f8590457a7ebb5335d67f16277e8d5a6b04a8 -Author: Carl Worth -Date: Wed Apr 4 15:59:50 2007 -0700 - - Move misplaced CLEANUP_FONT label to avoid crash. - - Previously, a failure in _cairo_win32_scaled_font_init_glyph_path leading - to the CLEANUP_FONT label would set the path into the glyph, then destroy - the path, and return an error status, (which in turn would cause a double - free when the glyph was destroyed). - - The double-free apparently leads to a crash in some cases, as described - here: - - SVG/Cairo related crash when opening specific webpage - https://bugzilla.mozilla.org/show_bug.cgi?id=376498 - - This should eliminate the double-free, but does not address the original - error case, (attempting to get a path from a bitmap font?). - - src/cairo-win32-font.c | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 5c24711ee65cdb8ac0fdb7419e6466e2b7cb7d9e -Author: Chris Wilson -Date: Wed Apr 4 10:13:13 2007 +0100 - - Restore gcov functionality - - Add -lgcov to the shared library else the test programs fail to link. - Add a couple of lcov convenience targets to generate the coverage reports. - - Makefile.am | 13 ++++++++++++- - boilerplate/Makefile.am | 2 +- - configure.in | 14 ++++++++++++-- - pixman/src/Makefile.am | 5 ++++- - src/Makefile.am | 2 +- - test/Makefile.am | 5 +++-- - 6 files changed, 33 insertions(+), 8 deletions(-) - -commit 59e5189818321c8a62ad107548facbcfce9e517a -Author: Behdad Esfahbod -Date: Tue Apr 3 20:46:14 2007 -0400 - - [Makefile.am] Distribute BIBLIOGRAPHY - Also include all automatically distributed CAPITAL files in there, - to remove any doubts. - - Makefile.am | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit a1287e483ce8efcf3f1eca97bdaaccac2393a1bf -Author: Behdad Esfahbod -Date: Tue Apr 3 20:30:30 2007 -0400 - - [pixman/src/check-config.sh] Test that all source files #include - as their first include. - - pixman/src/Makefile.am | 3 +++ - pixman/src/check-config.sh | 17 +++++++++++++++++ - src/check-cairoint.sh | 2 +- - 3 files changed, 21 insertions(+), 1 deletions(-) - -commit 8fbf50d31da9e13f1e55c7ee19586b7c394684ba -Author: Behdad Esfahbod -Date: Tue Apr 3 20:25:30 2007 -0400 - - [src] Make sure all source files #include "cairoint.h" as their first include - - This is necessary to avoid many portability problems as cairoint.h includes - config.h. Without a test, we will regress again, hence add it. - - The inclusion idiom for cairo now is: - - #include "cairoint.h" - - #include "cairo-something.h" - #include "cairo-anotherthing-private.h" - - #include - #include - - Moreover, some standard headers files are included from cairoint.h and need - not be included again. - - src/cairo-arc.c | 2 ++ - src/cairo-atsui-font.c | 5 ++--- - src/cairo-beos-surface.cpp | 7 ++++--- - src/cairo-directfb-surface.c | 10 +++------- - src/cairo-freelist.c | 5 +++-- - src/cairo-ft-font.c | 4 +++- - src/cairo-gstate.c | 2 -- - src/cairo-matrix.c | 1 - - src/cairo-os2-surface.c | 11 ++++++----- - src/cairo-output-stream.c | 7 ++++--- - src/cairo-path-fixed.c | 1 - - src/cairo-path.c | 2 ++ - src/cairo-png.c | 3 ++- - src/cairo-polygon.c | 1 - - src/cairo-quartz-surface.c | 4 ++-- - src/cairo-region.c | 2 +- - src/cairo-skiplist.c | 6 +----- - src/cairo-surface-fallback.c | 2 ++ - src/cairo-surface.c | 3 +-- - src/cairo-truetype-subset.c | 2 +- - src/cairo-unicode.c | 4 +--- - src/cairo-win32-font.c | 3 +-- - src/cairo-win32-surface.c | 10 +++++----- - src/cairo-xlib-screen.c | 4 ++-- - src/cairoint.h | 1 + - src/check-cairoint.sh | 2 +- - src/test-fallback-surface.c | 4 ++-- - src/test-meta-surface.c | 4 ++-- - src/test-paginated-surface.c | 4 ++-- - 29 files changed, 56 insertions(+), 60 deletions(-) - -commit ffc7d06da0f97390025a510b9532e4a64e9230f4 -Author: Behdad Esfahbod -Date: Tue Apr 3 20:22:44 2007 -0400 - - [src/check-cairoint.h] Test to check that all source files #include "cairoint.h" - - as their first include. - - src/Makefile.am | 2 +- - src/check-cairoint.sh | 17 +++++++++++++++++ - 2 files changed, 18 insertions(+), 1 deletions(-) - -commit 3646839060de7ab51c805bf5614fc3d1ea8b7fc3 -Author: Brian Ewins -Date: Wed Apr 4 01:16:30 2007 +0100 - - [boilerplate] split quartz out to avoid symbol clash. - - Quartz and Xlib both define Picture and Cursor, and clashed in - cairo-boilerplate.c. Splitting quartz out allows a single mac - build with --enable-quartz --enable-atsui. - - boilerplate/Makefile.am | 1 + - boilerplate/cairo-boilerplate-private.h | 45 +++++++++++++++++++++ - boilerplate/cairo-boilerplate.c | 44 ++------------------- - boilerplate/cairo-quartz-boilerplate.c | 64 +++++++++++++++++++++++++++++++ - 4 files changed, 115 insertions(+), 39 deletions(-) - -commit 174ebc43fe84854876d642e67fc3a442d280b59e -Author: Behdad Esfahbod -Date: Tue Apr 3 20:01:32 2007 -0400 - - [pixman] Make sure all source files include config.h - as their first include. - - pixman/src/fbcompose.c | 2 ++ - pixman/src/fbpict.c | 1 + - pixman/src/fbtrap.c | 4 ++++ - pixman/src/icblt.c | 4 ++++ - pixman/src/icbltone.c | 4 ++++ - pixman/src/iccolor.c | 4 ++++ - pixman/src/icformat.c | 4 ++++ - pixman/src/icpixels.c | 4 ++++ - pixman/src/icrect.c | 4 ++++ - pixman/src/icstipple.c | 4 ++++ - pixman/src/ictransform.c | 4 ++++ - pixman/src/ictrap.c | 4 ++++ - pixman/src/ictri.c | 4 ++++ - pixman/src/icutil.c | 4 ++++ - pixman/src/renderedge.c | 4 ++++ - 15 files changed, 55 insertions(+), 0 deletions(-) - -commit 208c32b245d7f50e1e9d71695269128b28a675fc -Author: Behdad Esfahbod -Date: Tue Apr 3 19:56:29 2007 -0400 - - [cairoint.h] Remove inline definition for MS compilers - - Such things should go to config.h. For one thing, cairoint.h is not - included in pixman. - - src/cairoint.h | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 313a6f732112ca88fa4d590a604ce8219065655c -Author: Behdad Esfahbod -Date: Tue Apr 3 19:53:28 2007 -0400 - - [pixman] Cleanup inline mess (#10150) - - Simply use "inline" instead of "INLINE" or "__inline__" and let - configure figure out what to use. - - pixman/src/fbcompose.c | 8 ++++---- - pixman/src/fbedge.c | 8 ++++++-- - pixman/src/fbmmx.c | 45 +++++++++++++++++++++++---------------------- - pixman/src/fbpict.h | 6 ------ - pixman/src/icimage.c | 8 ++++++-- - pixman/src/icint.h | 12 +----------- - pixman/src/pixregion.c | 14 ++++++-------- - 7 files changed, 46 insertions(+), 55 deletions(-) - -commit 88dc0c5f19475888c19db437661b290f3a8902f8 -Author: Behdad Esfahbod -Date: Tue Apr 3 19:26:18 2007 -0400 - - Make sure all nil objects start with _cairo_ - - Previously, the convention was that static ones started with cairo_, but - renamed to start with _cairo_ when they were needed from other files and - became cairo_private instead of static... - - This is error prune indeed, and two symbols were already violating. Now - all nil objects start with _cairo_. - - src/cairo-base85-stream.c | 2 +- - src/cairo-clip-private.h | 2 +- - src/cairo-deflate-stream.c | 4 ++-- - src/cairo-font-options.c | 22 +++++++++++----------- - src/cairo-output-stream-private.h | 2 +- - src/cairo-output-stream.c | 20 ++++++++++---------- - src/cairo-pattern.c | 14 +++++++------- - src/cairo-ps-surface.c | 4 ++-- - src/cairo.c | 8 ++++---- - src/cairoint.h | 2 +- - 10 files changed, 40 insertions(+), 40 deletions(-) - -commit 114be945db6c02aeb60cf1123b43680bd12cccdb -Author: Behdad Esfahbod -Date: Tue Apr 3 16:47:39 2007 -0400 - - [test] Add svg2pdf - - test/Makefile.am | 6 ++++ - test/svg2pdf.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 91 insertions(+), 0 deletions(-) - -commit b121468f14a6a05a823e06cf7c51caaa1e342556 -Author: Behdad Esfahbod -Date: Tue Apr 3 16:27:50 2007 -0400 - - [configure.in] Bump version up to 1.4.3, oops! - Supposed to be done after 1.4.2 was out, but apparently didn't happen. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9710c48df31c66d8931a75b6578c7c861d497baa -Author: Behdad Esfahbod -Date: Tue Apr 3 16:26:48 2007 -0400 - - [doc] Update Headers.mk - - doc/public/Headers.mk | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 040c68cb2ca6c893d9ba11291c21b1cf84fec980 -Author: Behdad Esfahbod -Date: Tue Apr 3 16:23:35 2007 -0400 - - [test] Make pdf2svg build (and distributed) - - test/Makefile.am | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 17f5706d1730662bce0cd49f60cb150773fac051 -Author: Behdad Esfahbod -Date: Tue Apr 3 16:04:04 2007 -0400 - - [pdiff] Make stdint.h inclusion portable (#10441) - by copying magic bits from cairo-wideint-private.h. - - test/pdiff/pdiff.c | 37 ++++++++++++++++++++++++++++++++++++- - 1 files changed, 36 insertions(+), 1 deletions(-) - -commit c2b1908f9b0d8c59abf79c3462471d1c3960b153 -Author: Benjamin Berg -Date: Tue Apr 3 15:46:51 2007 -0400 - - Fix typo in cairo_arc_negative() docs (#10497) - - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 814295f5fad43ec1d8b18fac045e3c0d27ec7c29 -Author: Behdad Esfahbod -Date: Tue Apr 3 15:37:40 2007 -0400 - - [autogen.sh] Add --enable-test-surfaces to configure flags - - Also remove --enable-maintainer-mode since we removed AM_MAINTAINER_MODE - from configure.in in b0d05f7421c457120b9d86a83c4935c67b217fab. - - autogen.sh | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 38c9909e2948f089bbec89e2d43b0e6f930c1ab1 -Author: Chris Wilson -Date: Tue Apr 3 15:34:30 2007 -0400 - - [autogen.sh] Borrow version comparison from GNOME autogen.sh (#9566) - - Our previous version check code was thinking that 1.10 is older than 1.7 - - autogen.sh | 186 +++++++++++++++++++++++++++++++----------------------------- - 1 files changed, 97 insertions(+), 89 deletions(-) - -commit 00cc44373705665824d53c8ebde5df397b834e41 -Author: Brian Ewins -Date: Mon Mar 26 21:44:33 2007 +0100 - - [test/degenerate-path] remove quartz reference image - - The reference image is no longer the correct size, so isn't - providing a comparison at all. In the absence of a better - replacement, removing it at least gives us diffs. - - test/Makefile.am | 1 - - test/degenerate-path-quartz-rgb24-ref.png | Bin 188 -> 0 bytes - 2 files changed, 0 insertions(+), 1 deletions(-) - -commit 256f3e09a8a0d152a33df00604bf2245604b72bc -Author: Chris Wilson -Date: Mon Mar 26 10:33:32 2007 +0100 - - Destroy the current pattern before replacing with cairo_set_source(). - - Frequently cairo_set_source_rgb[a]() is used to replace the current - solid-pattern source with a new one of a different colour. The current - pattern is very likely to be unshared and unmodified and so it is likely - just to be immediately freed [or rather simply moved to recently freed - cache]. However as the last active pattern it is likely to cache-warm and - suitable to satisfy the forthcoming allocation. So by setting the current - pattern to 'none' we can move the pattern to the freed list before we - create the new pattern and hopefully immediately reuse it. - - src/cairo-pattern.c | 10 ++++++++++ - src/cairo.c | 9 +++++++++ - src/cairoint.h | 1 + - 3 files changed, 20 insertions(+), 0 deletions(-) - -commit 38442d4948e0a93f06cd86e6841729bc3f25ed3b -Author: Chris Wilson -Date: Mon Mar 26 10:12:46 2007 +0100 - - Back out the solid-pattern-cache from 9b53bc7c6585db7ae647bb992fb9817d7bd75b38. - - Unfortunately one cannot cache live patterns and return a fresh reference - instead of creating new ones as patterns can be modified by the user and - so cannot be transparently shared between different users. However, - solid colour allocation is still a frequent operation, so we maintain a - small cache of recently freed patterns to reduce the malloc pressure. - - src/cairo-pattern.c | 100 ++++++++++++++++++++++++-------------------------- - 1 files changed, 48 insertions(+), 52 deletions(-) - -commit c8e37af4b06fffe1aa1a1c3d2cd6481cc2cf8938 -Author: Brian Ewins -Date: Sun Mar 25 23:31:40 2007 +0100 - - [quartz] fix order of fields in matrix conversion - - There was a typo flipping the xy and yx fields when a - cairo matrix was converted to a quartz matrix. - - src/cairo-quartz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d2cdd5eba801fc5f696d1095f237ae53c54b4e2a -Author: Brian Ewins -Date: Sat Mar 24 13:25:03 2007 +0000 - - [atsui] fix scaling of glyph surfaces (#9568) - - Atsui glyph surface were clipped incorrectly when the text is scaled, - visible in the text-pattern test. - - src/cairo-atsui-font.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit 2efaf3a7a47a281ca02009d371cd7a06a8a4f282 -Merge: abac4d2... 25ddc08... -Author: Mathias Hasselmann -Date: Sat Mar 24 00:29:04 2007 +0100 - - Merge branch 'master' of git+ssh://hasselmm@git.freedesktop.org/git/cairo - -commit abac4d251dd02151dced296afa9d6e1b383868ee -Author: Mathias Hasselmann -Date: Fri Mar 23 23:36:15 2007 +0100 - - [cairo-perf] Use full 64 bit of the clock cycle counters to avoid overflows - - perf/cairo-perf-posix.c | 22 ++++++++++++++-------- - 1 files changed, 14 insertions(+), 8 deletions(-) - -commit 25ddc0800490ca0222668e389412f92ccfdab91c -Author: Adrian Johnson -Date: Fri Mar 23 23:19:30 2007 +1030 - - PS: Remove unused variable - - src/cairo-ps-surface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit e9a26966484171f94df41bd3abc83aae22682caa -Author: Adrian Johnson -Date: Fri Mar 23 23:08:46 2007 +1030 - - PDF: Use the TJ operator to show glyphs - - src/cairo-pdf-surface.c | 125 ++++++++++++++++++++++++++----- - src/cairo-ps-surface.c | 11 ++- - src/cairo-scaled-font-subsets-private.h | 25 ++++++- - src/cairo-scaled-font-subsets.c | 83 ++++++++++++++++----- - src/cairo-svg-surface.c | 7 +- - 5 files changed, 201 insertions(+), 50 deletions(-) - -commit 820341b4c503fbd5ca3b8f6c3e5ff6eca5562b98 -Author: Behdad Esfahbod -Date: Wed Mar 21 15:44:18 2007 -0400 - - [test/nil-surface] Test that cairo_get_target() returns non-NULL - - test/nil-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit ef8515b4a6b468e589639e794a959cb37d592359 -Author: Behdad Esfahbod -Date: Wed Mar 21 15:29:18 2007 -0400 - - cairo_push/pop_group(), bail out if cairo_t is in error status - - Fixes the new test added to test/nil-surface to not crash - - src/cairo.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 52341f7e855c93fc8e58895c3a318c43c3d58474 -Author: Behdad Esfahbod -Date: Wed Mar 21 15:21:05 2007 -0400 - - [test/nil-surface] Test cairo_create(NULL). Crashing in cairo_push_group! - - test/nil-surface.c | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit 9cea8a4bb26f7de2ac56e318c72e7d048b8b6c0f -Author: Behdad Esfahbod -Date: Wed Mar 21 15:03:02 2007 -0400 - - [cairo.c] Don't access gstate members directly - - src/cairo-gstate.c | 18 ++++++++++++++++++ - src/cairo.c | 23 +++++++++++------------ - src/cairoint.h | 3 +++ - 3 files changed, 32 insertions(+), 12 deletions(-) - -commit 39ae64ff0391c40077b63d214727ca0c25e03e37 -Author: Behdad Esfahbod -Date: Wed Mar 21 14:56:34 2007 -0400 - - [cairo-path] Don't access gstate members directly - - src/cairo-path.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit bd275c19782700f2cfc6905f348e4d4b3f15d311 -Author: Behdad Esfahbod -Date: Wed Mar 21 12:34:37 2007 -0400 - - [cairo-pattern] Make sure cached solid patterns are not put in error status - - src/cairo-pattern.c | 19 +++++++++++++++---- - 1 files changed, 15 insertions(+), 4 deletions(-) - -commit e76d3cfa4f06ba813528a018fa77ba4d210a44e3 -Author: Behdad Esfahbod -Date: Wed Mar 21 12:33:31 2007 -0400 - - [cairo-gstate] Make sure gstate->next is initialized - - src/cairo-gstate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 1469ea22ba659ba7afa6892e9b6b2a3f26d0dddb -Author: Behdad Esfahbod -Date: Wed Mar 21 11:22:33 2007 -0400 - - [cairo-gstate] Move save/restore logic into gstate instead of cairo_t - by adding _cairo_gstate_save/restore(). This is in preparation for - adding copy-on-write behavior to gstate. - - src/cairo-gstate.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo.c | 32 +++++++++--------------------- - src/cairoint.h | 8 +++--- - 3 files changed, 65 insertions(+), 28 deletions(-) - -commit 5f83a1b542a1932a59299a45f36dff22268dca14 -Author: Jeff Smith -Date: Wed Mar 21 10:41:03 2007 -0400 - - [cairo-output-stream] Remove use of strtol - - src/cairo-output-stream.c | 8 +++----- - 1 files changed, 3 insertions(+), 5 deletions(-) - -commit bba7169805cec96b442d15241b0fdf8c38d0cd0e -Author: Behdad Esfahbod -Date: Tue Mar 20 22:55:02 2007 -0400 - - Fix file permissions again - - Where do these a+x attributes coming from every once in a while? - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit ad51ee5aa0d1fc03c4ebe7f0454949995420a710 -Author: Behdad Esfahbod -Date: Tue Mar 20 18:59:19 2007 -0400 - - Define and use ARRAY_LEN - - src/cairo-arc.c | 2 +- - src/cairo-atsui-font.c | 6 ++---- - src/cairo-bentley-ottmann.c | 2 +- - src/cairo-cff-subset.c | 8 +++----- - src/cairo-hash.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-polygon.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-traps.c | 2 +- - src/cairo-truetype-subset.c | 8 +++----- - src/cairoint.h | 3 +++ - 13 files changed, 20 insertions(+), 23 deletions(-) - -commit 1de12714a9623e66309279eb9edaf6053fd92c56 -Author: Chris Wilson -Date: Wed Mar 14 01:31:58 2007 +0000 - - [cairo-surface] Use a stack buffer for small numbers of rectangles - - src/cairo-surface.c | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit 9b53bc7c6585db7ae647bb992fb9817d7bd75b38 -Author: Chris Wilson -Date: Tue Mar 13 22:51:12 2007 +0000 - - Cache solid patterns - - We use a small cache of size 16 for patterns created from solid colors, - e.g. cairo_set_source_rgb(). This helps with toolkits that draw many - widgets using the same colour scheme. - - The cache uses a static index variable, which itself acts like a cache - of size 1, remembering the most recently used colour. So repeated - lookups for the same colour hit immediately. If that fails, the cache - is searched linearly, and if that fails too, a new pattern is created - and a random member of the cache is evicted. - - src/cairo-color.c | 7 +++ - src/cairo-debug.c | 2 + - src/cairo-mutex-list.h | 2 + - src/cairo-pattern.c | 63 +++++++++++++++++++++++++++- - src/cairoint.h | 7 +++ - test/Makefile.am | 1 + - test/solid-pattern-cache-stress.c | 83 +++++++++++++++++++++++++++++++++++++ - 7 files changed, 163 insertions(+), 2 deletions(-) - -commit 39679b1b21b07b0fbc05ee21745f384a123ba8da -Author: Behdad Esfahbod -Date: Tue Mar 20 18:01:41 2007 -0400 - - [cairo-path-fixed] Fix "comparison between signed and unsigned" warnings - - src/cairo-path-fixed.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit c939421e16fcf098f8d6196e86705173be8e40fd -Author: Behdad Esfahbod -Date: Tue Mar 20 08:54:01 2007 -0400 - - Oops. Remove cairo-mutex-private.h include from test surfaces - as that file is included from cairoint.h now. - - src/test-fallback-surface.c | 1 - - src/test-meta-surface.c | 1 - - src/test-paginated-surface.c | 1 - - 3 files changed, 0 insertions(+), 3 deletions(-) - -commit 0d3e886b182b55b147f2ba1a298c2f5ec8a53d87 -Author: Behdad Esfahbod -Date: Tue Mar 20 08:49:28 2007 -0400 - - Include cairo-mutex-private.h in test backends - - src/test-fallback-surface.c | 1 + - src/test-meta-surface.c | 2 ++ - src/test-paginated-surface.c | 1 + - 3 files changed, 4 insertions(+), 0 deletions(-) - -commit 0263f18f843175e478bd3a14e24445e31e7b0952 -Author: Behdad Esfahbod -Date: Tue Mar 20 08:47:45 2007 -0400 - - [configure.in] Define PIXMAN_CFLAGS, to pass -fno-strict-aliasing to pixman - - configure.in | 10 +++++++--- - pixman/src/Makefile.am | 4 +--- - 2 files changed, 8 insertions(+), 6 deletions(-) - -commit 94c367f7d7637fc74ed6d1fbe13d73662c08246b -Merge: c4bd7cf... d3177a6... -Author: Mathias Hasselmann -Date: Tue Mar 20 13:33:50 2007 +0100 - - Merge branch 'master' of git+ssh://hasselmm@git.freedesktop.org/git/cairo - -commit c4bd7cf6f85770552c0b0284db219f27ffa702f2 -Author: Mathias Hasselmann -Date: Tue Mar 20 13:32:33 2007 +0100 - - Move declaration of cairo_mutex_t to cairo-mutex-private.h - - src/cairo-font.c | 1 - - src/cairo-ft-font.c | 1 - - src/cairo-mutex-private.h | 53 ++++++++++++++++++++++++++++++++++------- - src/cairo-mutex.c | 6 +++- - src/cairo-paginated-surface.c | 1 - - src/cairo-pattern.c | 1 - - src/cairo-scaled-font.c | 1 - - src/cairo-surface.c | 1 - - src/cairo-xlib-screen.c | 1 - - src/cairoint.h | 37 +--------------------------- - 10 files changed, 49 insertions(+), 54 deletions(-) - -commit 9c52a9e7d8a70d21ecdd4fa241fa2594361dd5df -Author: Mathias Hasselmann -Date: Tue Mar 20 13:05:48 2007 +0100 - - Remove _global_image_glyph_cache_mutex which is not used anymore. - - src/cairo-mutex-list.h | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit d3177a68752ac2c8d20b1a8a3616298f04f31078 -Author: Behdad Esfahbod -Date: Tue Mar 20 07:59:47 2007 -0400 - - [cairo-mutex] Rename _xlib_screen_mutex to _cairo_xlib_screen_mutex - - src/cairo-mutex-list.h | 2 +- - src/cairo-xlib-screen.c | 20 ++++++++++---------- - 2 files changed, 11 insertions(+), 11 deletions(-) - -commit be52178443ffd19fc7848dfc78c477883ccb943b -Author: Mathias Hasselmann -Date: Tue Mar 20 10:11:14 2007 +0100 - - Initialize mutexes at central location. - - All mutex declarations have been moved to cairo-mutex-list.h. - This should avoid breaking of less frequently tested backends, - when mutexes are introduced or when existing mutexes are renamed. - - Instead of initializing mutexes on library startup, mutexes are - lazily initialized within the few entry points of now by calling - CAIRO_MUTEX_INITIALIZE(). Currently only the OS/2 backend takes - care about releasing global mutexes. Therefore there is no counter - part of that macro for finalizing all global mutexes yet - but - as cairo-backend-os2.c shows such a function would be quite - easy to implement. - - src/Makefile.am | 1 + - src/cairo-font.c | 7 +- - src/cairo-ft-font.c | 3 +- - src/cairo-mutex-list.h | 52 +++++++++++++++++ - src/cairo-mutex-private.h | 123 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-mutex.c | 51 +++++++++++++++++ - src/cairo-os2-surface.c | 45 +-------------- - src/cairo-paginated-surface.c | 1 + - src/cairo-pattern.c | 3 + - src/cairo-scaled-font.c | 3 +- - src/cairo-surface.c | 5 +- - src/cairo-win32-font.c | 10 --- - src/cairo-win32-private.h | 3 - - src/cairo-win32-surface.c | 65 --------------------- - src/cairo-xlib-screen.c | 3 +- - src/cairoint.h | 71 +++++------------------- - 16 files changed, 257 insertions(+), 189 deletions(-) - -commit aba2b299db163d8a5b9d0a0214cd8a485fb87162 -Author: Carl Worth -Date: Mon Mar 19 23:50:13 2007 -0700 - - boilerplate: Add EXTRA_LTLIBRARIES to CLEANFILES to allow make distcleancheck to pass. - - boilerplate/Makefile.am | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 2483542b74ac71851cc766de3468d0df833cdec2 -Author: Carl Worth -Date: Mon Mar 19 23:37:28 2007 -0700 - - Add skew-extreme-ref.png to the tar file for the release. - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b91ff39214675faea5d3627ecf86a24aeb8b178f -Author: Carl Worth -Date: Mon Mar 19 23:24:26 2007 -0700 - - Increment cairo version to 1.4.2 (and libtool versioning to 13:1:11) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 04b3de48f5269cae483b4af425402679a35e7d33 -Author: Carl Worth -Date: Mon Mar 19 23:22:39 2007 -0700 - - NEWS: Add notes for cairo 1.4.2 - - NEWS | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 130 insertions(+), 0 deletions(-) - -commit 1401f20eb91f34d992612162db0c9e04bd666114 -Author: Carl Worth -Date: Mon Mar 19 22:39:40 2007 -0700 - - Temporarily remove extend-reflect from the list of tests. - - This test is known to sometimes cause an X server to enter a near- - infinite loop. That's a reall unkind thing to inflict upon our - users who are being nice enough to test cairo. Let's disable - this test for the 1.4.2 release. - - test/Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 725a4de42dfaf0d9d98447c9fbefed99fbf99ac1 -Author: Carl Worth -Date: Mon Mar 19 16:50:55 2007 -0700 - - Propagate a nil surface out of _cairo_surface_create_similar_scratch - - We detect an error in the surface before calling into private surface-modifying - functions, (such as _cairo_surface_set_font_options), that don't have the - nil-surface protection of public functions. - - This should fix the problem reported (again) in this bug report: - - cairo crashes in cairo_create_simular if nil surface returned by other->backend->create_similar - https://bugs.freedesktop.org/show_bug.cgi?id=9844 - - Though I haven't succeeded in replicating the bug yet, (perhaps a system - difference in allowing writes to read-only memory or not, or something - like that). - - src/cairo-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit eb472a9d9cbaea754907a261b459693b9c27ac79 -Author: Carl Worth -Date: Mon Mar 19 13:13:41 2007 -0700 - - xlib: Prefer surface->format over surface->visual for identifying masks - - The original test for 'if (surface->visual)' dates back to a very old - assumption that if the xlib surface was created with an XRenderFormat - that the surface->visual field would be set to NULL. This assumption - was broken years ago with the following commit: - - 0c05b23b3165ec6908c28f56b3446cf43dff44a2 - - This fixes the crash reported here: - - BadMatch when running gnome-terminal with the murrine-0.51 gtk engine - https://bugs.freedesktop.org/show_bug.cgi?id=10250 - - src/cairo-xlib-surface.c | 27 +++++++++++++++------------ - 1 files changed, 15 insertions(+), 12 deletions(-) - -commit d27c42cc3fcd4376fc69aa68d997e6077c3eca90 -Author: Behdad Esfahbod -Date: Mon Mar 19 17:42:06 2007 -0400 - - [boilerplate] Don't build in make all - - boilerplate/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 12feb1f98627637bf83ba70f739bb5b2699085aa -Author: Brian Ewins -Date: Mon Mar 19 18:22:44 2007 +0000 - - [quartz] apply ctm to text (#9568) - - Applies the ctm to text output on the quartz surface. This corrects - the text-pattern test, and also corrects the size of text when the - ctm includes a scale. - - src/cairo-quartz-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 986b0ff83813b68a19490fe8629bfdaeed68cbe2 -Author: Brian Ewins -Date: Mon Mar 19 18:21:27 2007 +0000 - - [atsui] make text_to_glyphs return positions in user units. (#9568) - - text_to_glyphs was returning positions in device units; correct this - to use user units. - - src/cairo-atsui-font.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit 06a44839270354c7f74aa66352fb4234095dee4e -Author: Brian Ewins -Date: Sun Mar 18 20:20:11 2007 +0000 - - [atsui] store sizes in the atsui font - - The ATSUStyle that we store in the font contains references to - the size and font matrix; we need to store them in the font so that - they are not released before the style. - - src/cairo-atsui-font.c | 16 +++++++++------- - 1 files changed, 9 insertions(+), 7 deletions(-) - -commit 240479d10d3263719b0c8a4426fda088899551a2 -Author: Brian Ewins -Date: Sun Mar 18 20:20:10 2007 +0000 - - [atsui] refactor CreateSizedCopyOfStyle - - This is just to make it easier to use with passed-in matrices, - which I'll make use of in a subsequent patch. - - src/cairo-atsui-font.c | 36 ++++++++++++++++++++---------------- - 1 files changed, 20 insertions(+), 16 deletions(-) - -commit 43577e26b4c2285499ebfddba6cfa62cbbb15feb -Author: Brian Ewins -Date: Sun Mar 18 20:20:10 2007 +0000 - - [atsui] remove the unused old_show_glyphs function. - - _cairo_atsui_old_show_glyphs was a relic of the old quartz - surface and is no longer required. - - src/cairo-atsui-font.c | 180 ++++-------------------------------------------- - 1 files changed, 15 insertions(+), 165 deletions(-) - -commit 5aaf584bf44d762af5e486f21a037eb0cc6e1197 -Author: Carl Worth -Date: Fri Mar 16 17:45:31 2007 -0700 - - XCB: Fix parameter-order confusion with xcb_create_pixmap - - This fixes mask-based clipping with the XCB backend, (which also makes - the xcb backend pass all tests that the xlib backend passes). - - src/cairo-xcb-surface.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 6f96a5dd9954418b252ec45752dcf2c3b289fed4 -Author: Behdad Esfahbod -Date: Fri Mar 16 18:21:36 2007 -0400 - - [win32] Really return unhinted font metrics if metrics hinting is off - - src/cairo-win32-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 47e71eef5f903fa1a96d82a79a75d89c52032913 -Author: Behdad Esfahbod -Date: Fri Mar 16 17:56:53 2007 -0400 - - [win32] Fix font descent computation - - src/cairo-win32-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit dd4601b0d03bba021b11dcf96e09584f40d1621f -Author: Mathias Hasselmann -Date: Fri Mar 16 20:43:29 2007 +0100 - - [cairo-perf] Emit warning, if cairo-perf is not CPU bound - - cairo-perf and the X server should be bound to CPUs (either the same - or separate) on SMP systems. Not doing so causes random results when - the X server is moved to or from cairo-perf's CPU during the - benchmarks. - - configure.in | 11 +++++++++++ - perf/cairo-perf.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 63 insertions(+), 0 deletions(-) - -commit d02aa5b23eb6243b21697de203db0a5f1b49def9 -Author: Gilles Dauphin -Date: Fri Mar 16 10:35:23 2007 -0700 - - Don't use unsupported visibily attribute hidden on Solaris - - Thanks to Thomas Klausner for passing the report along. - This fixes the following bug report: - - hidden attribute does not work with Solaris ld - https://bugs.freedesktop.org/show_bug.cgi?id=10227 - - And as Behdad points out, an even better fix would be to - move checks for supported visibility attribute to configure. - - pixman/src/pixman.h | 2 +- - src/cairoint.h | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 8236282c5d58320173b17659e488384e710d0ea7 -Author: Thomas Klausner -Date: Fri Mar 16 10:04:56 2007 -0700 - - Use "find !" rather than "find -not" for better portability - - The man page for GNU find says: - -not expr - Same as ! expr, but not POSIX compliant. - - And actually, on e.g. NetBSD, "-not" is not supported. - - This resolved the following bug: - - https://bugs.freedesktop.org/show_bug.cgi?id=10226 - - RELEASING | 2 +- - src/check-headers.sh | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 332c38b6c34bde4829607e534f39522f8001acf7 -Author: Carl Worth -Date: Thu Mar 15 23:25:06 2007 -0700 - - Avoid pulling in -lz for the ps backend. - - Quite some time ago we switched from using deflate-based compression to LZW - for the ps backend, (which allows it to target PostScript Level 2 instead of - PostScript Level 3). Now, we finally drop the fact that the ps backend was - still requiring zlib in order to build. - - configure.in | 6 +----- - 1 files changed, 1 insertions(+), 5 deletions(-) - -commit 2242550b489472d4d9b6505fd3db89541e101425 -Author: Carl Worth -Date: Thu Mar 15 23:17:19 2007 -0700 - - Make compilation of cairo-deflate-stream.c conditional on compilation of PDF backend. - - Otherwise we risk pulling in an otherwise-unneeded dependency on zlib. - - This fixes the bug reported here: - - Without PDF surface backend we don't need cairo-deflate-stream - https://bugs.freedesktop.org/show_bug.cgi?id=10202 - - src/Makefile.am | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 1234064fa4aa20d0875473709d2fa74600af485b -Author: Carl Worth -Date: Thu Mar 15 22:38:42 2007 -0700 - - Allow NULL pointers for functions that accept pointers for multiple return values. - - When a single function accepts pointers for multiple return values, - the convention is that it's legal for the user to pass NULL for - those pointers in case the user is only interested in some subset - of the values. - - This was already properly implemented for functions such as - cairo_pattern_get_rgba, etc. - - Here we fix four functions to follow the same convention: - - cairo_stroke_extents - cairo_fill_extents - cairo_clip_extents - cairo_surface_get_device_offset - - src/cairo-gstate.c | 44 +++++++++++++++++++++++++++++++++----------- - src/cairo-surface.c | 6 ++++-- - 2 files changed, 37 insertions(+), 13 deletions(-) - -commit 133183d858aa632da3cec2a789dcc1e1203d778b -Author: Carl Worth -Date: Thu Mar 15 22:08:55 2007 -0700 - - Fix cairo_stroke_extents and cairo_in_stroke to not crash with line width of 0.0 - - This fixes the line-width-zero test case and the bug reported here: - - Crash in cairo_stroke_extents whe line width is 0 and line cap is ROUND - (_cairo_pen_find_active_cw_vertex_index) - https://bugs.freedesktop.org/show_bug.cgi?id=10231 - - src/cairo-gstate.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 23caa0f43ba199371ab178cf3e827e449ee5935f -Author: Carl Worth -Date: Thu Mar 15 21:58:20 2007 -0700 - - Add line-width-zero test which currently crashes. - - The crash is described in this bug report: - - Crash in cairo_stroke_extents whe line width is 0 and line cap is ROUND - (_cairo_pen_find_active_cw_vertex_index) - https://bugs.freedesktop.org/show_bug.cgi?id=10231 - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/line-width-zero.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 81 insertions(+), 0 deletions(-) - -commit 562bd551bc5ca3f3858a66b9884a8525531153c8 -Author: Mathias Hasselmann -Date: Thu Mar 15 12:47:41 2007 +0100 - - [cairo-perf-diff] Update usage screen to mention --html. - - perf/cairo-perf-diff | 73 ++++++++++++++++++++++++++++--------------------- - 1 files changed, 42 insertions(+), 31 deletions(-) - -commit 6ff2439b33a9da9a517325bfd472e8cb1fdd4992 -Author: Carl Worth -Date: Wed Mar 14 16:33:01 2007 -0700 - - Implement _cairo_traps_tessellate_triangle with _cairo_traps_tessellate_convex_quad - - The newly rewritten convex_quad code is actually simpler than the - triangle code being replaced here. This also allows us to throw - away the problematic _compute_x function which can't handle - horizontal lines, (divide by zero). So the cairo world becomes a - better place. - - src/cairo-traps.c | 89 +++++----------------------------------------------- - 1 files changed, 9 insertions(+), 80 deletions(-) - -commit 53ae6ea957bac141c033f41276d93bab3a25009f -Author: Carl Worth -Date: Wed Mar 14 16:30:48 2007 -0700 - - Fix _cairo_traps_tessellate_convex_quad to handle a == b - - This case was found in an attempt to use the convex_quad function - for tessellating triangles as well. Fortunately the fix is very - easy. - - src/cairo-traps.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit 96d8f58daf279238d3a1dfcd4ed3710014e2aeea -Author: Chris Wilson -Date: Tue Mar 13 20:17:22 2007 +0000 - - Clear the XRender data on display closure. - - Use the new hook functions to register a callback for xlib to clear - the private glyph data when the display is closed. In order to do this - we need to reset the glyph cache inside the generic scaled font as well. - - src/cairo-xlib-surface.c | 25 +++++++++++++++++++++++++ - 1 files changed, 25 insertions(+), 0 deletions(-) - -commit 52405533b1b191ff98ef3cbc20eaf55e97c8049c -Author: Chris Wilson -Date: Tue Mar 13 20:42:09 2007 +0000 - - Privately export a function to reset the scaled font's glyph caches. - - src/cairo-scaled-font.c | 9 +++++++++ - src/cairoint.h | 3 +++ - 2 files changed, 12 insertions(+), 0 deletions(-) - -commit ad7698feb5f818ba2657b01bbc04f7fb537c1297 -Author: Chris Wilson -Date: Tue Mar 13 20:11:49 2007 +0000 - - Introduce hooks for _cairo_xlib_close_display() - - This patch adds a simple hook data type for a notifier style callback - and introduces two functions to manipulate a list of callbacks for - cleaning up on display closure. - - src/cairo-xlib-private.h | 15 +++++ - src/cairo-xlib-screen.c | 153 ++++++++++++++++++++++++++++++++++++---------- - 2 files changed, 136 insertions(+), 32 deletions(-) - -commit 3d3173d176bc959682a35674c31d3155e8642c41 -Author: Carl Worth -Date: Wed Mar 14 16:56:45 2007 -0700 - - Add svg-specific reference image for radial-gradient test. - - This isn't strictly needed, (pdiff allows the test to pass without the - image), but it sure runs faster this way. - - test/radial-gradient-svg-ref.png | Bin 0 -> 91039 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 75201c12be74055d6209d48d1d698797665a70b4 -Author: Carl Worth -Date: Wed Mar 14 15:48:15 2007 -0700 - - check-def.sh: Adjust test to exempt _cairo_test_* functions as well as _cairo_*_test_* - - This test started failing with the recent renaming of the following - three functions, (before they had no cairo in their names so they - were not getting picked up at all): - - _cairo_test_fallback_surface_create - _cairo_test_meta_surface_create - _cairo_test_paginated_surface_create_for_data - - With this change, the failure now goes away again. - - src/check-def.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5d23d0c90c31b233d5916c12eaf2a1dafc441243 -Author: Carl Worth -Date: Wed Mar 14 15:23:01 2007 -0700 - - Remove dead-code remnants of old tessellator - - src/cairo-traps.c | 372 ----------------------------------------------------- - 1 files changed, 0 insertions(+), 372 deletions(-) - -commit 1f3a5b4e1283cc0e55f7ea6baca6d0fe67fd14b1 -Author: Carl Worth -Date: Tue Mar 13 17:42:39 2007 -0700 - - Fix bugs in _cairo_traps_tessellate_convex_quad - - The previous code was not handling all cases correctly, (yes, - even something as simple as a quadrilateral can exhibit a - remarkably large number of different cases when tessellation - is attempted). - - This fix now introduces slope comparison which handles several - cases that were mis-handled with the previous implementation which - only used independent sorting of the X and Y values of the - coordinates. - - This fixes the skew-extreme test case and the bug reported here: - - Skew transforms were broken by the cairo update in December - https://bugzilla.mozilla.org/show_bug.cgi?id=373632 - - src/cairo-traps.c | 101 +++++++++++++++++++++++++++++++---------------------- - 1 files changed, 59 insertions(+), 42 deletions(-) - -commit 0a6ae06c35d99e5e8397c58ee94291e7ee45eb4e -Author: Carl Worth -Date: Tue Mar 13 17:39:48 2007 -0700 - - Add new skew-extreme test case. - - This test currently fails, demonstrating the bug reported here: - - Skew transforms were broken by the cairo update in December - https://bugzilla.mozilla.org/show_bug.cgi?id=373632 - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/skew-extreme-ref.png | Bin 0 -> 1012 bytes - test/skew-extreme.c | 126 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 128 insertions(+), 0 deletions(-) - -commit 40b6d8842e1bcb5fbb3a7dffd0c05b7d3bf6cc6b -Author: Carl Worth -Date: Tue Mar 13 13:07:42 2007 -0700 - - Remove radial-gradient test from XFAIL list - - This test has not been failing since the fix in: - - 772edc9133d41dfd667ae5915dfa6ace0bcbfd0d - - So get rid of the '1 unexpected passes' complaint. - - test/Makefile.am | 1 - - test/radial-gradient.c | 3 +-- - 2 files changed, 1 insertions(+), 3 deletions(-) - -commit e803e2e69ba02a1db316c97eb9a8d386709380e2 -Author: Behdad Esfahbod -Date: Wed Mar 14 17:23:57 2007 -0400 - - [cairo-pattern] Add a cache of two color stops to cairo_gradient_pattern_t - - Most of gradients have only two color stops. This avoids - calling malloc() for those cases. - - src/cairo-pattern.c | 25 +++++++++++++++++++++---- - src/cairoint.h | 1 + - 2 files changed, 22 insertions(+), 4 deletions(-) - -commit 4514fdca1ba0f3922c2797744f4b0d42d37f8b42 -Author: Behdad Esfahbod -Date: Tue Mar 13 20:49:52 2007 -0400 - - [cairo-pattern] Grow color-stops array exponentially - - src/cairo-pattern.c | 61 ++++++++++++++++++++++++++++++++++++--------------- - src/cairoint.h | 3 +- - 2 files changed, 45 insertions(+), 19 deletions(-) - -commit e878f2259b2512f0411d698bf078fe91b7373246 -Author: Mathias Hasselmann -Date: Wed Mar 14 11:42:41 2007 +0100 - - Include pixman/src in cairo-perf hash - - perf/cairo-perf-diff | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 1a3f5df5ff4a80bb199e296491e3a5c9887fd4f7 -Author: Mathias Hasselmann -Date: Wed Mar 14 21:42:50 2007 +0100 - - Add index.html to .gitignore - - perf/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c40be43aef735deba7605fde14300b7810701011 -Author: Mathias Hasselmann -Date: Wed Mar 14 21:41:40 2007 +0100 - - Transform the output of cairo-perf-diff into HTML - - perf/Makefile.am | 8 ++++- - perf/cairo-perf-diff | 20 ++++++++--- - perf/make-html.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 111 insertions(+), 6 deletions(-) - -commit f1dd48475a34a038ebdb6426b04fc3728a0f0782 -Author: Mathias Hasselmann -Date: Wed Mar 14 21:18:09 2007 +0100 - - Improve CPU utilization when building cairo-perf - - perf/cairo-perf-diff | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit a7595c1295ba1a58b452b1df31d02776e5c17c0f -Author: Behdad Esfahbod -Date: Tue Mar 13 17:21:19 2007 -0400 - - [Makefile.am] Do not distribute cairo-features.h, Ouch! - - We were accidentally doing that by not marking it noinst. - Moreover, no need to mark it as BUILD_SOURCES, since it's - created by configure, not make. - - src/Makefile.am | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit f3c8d82d6d6a759364c4228d9b0badf846debcea -Author: Behdad Esfahbod -Date: Tue Mar 13 16:51:34 2007 -0400 - - [test] If backends are limited and all untested, pass the test - This is necessary to ensure that limiting backends using - CAIRO_TEST_TARGET does not increase the number of tests failing, - which is a desirable invariant. - - test/cairo-test.c | 44 +++++++++++++++++++++++++++++--------------- - 1 files changed, 29 insertions(+), 15 deletions(-) - -commit 30b5f1baa8cbd01ac0a3ff376e294775b600b4e4 -Author: Behdad Esfahbod -Date: Tue Mar 13 16:50:10 2007 -0400 - - [test] In pattern-getters test, log what went wrong - - test/pattern-getters.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit 9267cb042418250614db83bd3b2dcb0e7615af79 -Author: Behdad Esfahbod -Date: Tue Mar 13 16:49:42 2007 -0400 - - [cairo-pattern] Use _cairo_color_double_to_short() to fix color conversion - - src/cairo-pattern.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 60502ba3481ea751df6f379e1c38850172826695 -Author: Behdad Esfahbod -Date: Tue Mar 13 16:13:35 2007 -0400 - - [cairo-color] Add cairo-private _cairo_color_double_to_short() - - src/cairo-color.c | 11 ++++++----- - src/cairoint.h | 3 +++ - 2 files changed, 9 insertions(+), 5 deletions(-) - -commit 956fdfbb62ac82da1e6fbd467c50e449ec621937 -Author: Behdad Esfahbod -Date: Tue Mar 13 06:30:11 2007 -0400 - - [cairo-pattern] Fix color conversion from short to double - We should divide by 65535.0, not 65536.0. - - src/cairo-pattern.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 20304908626f0af40aeda145b2967a40151728c5 -Author: Behdad Esfahbod -Date: Tue Mar 13 06:20:21 2007 -0400 - - [cairo-pattern] Add XXX note - - src/cairo-pattern.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit deed0f473400bc2e91dde8bad2537d499a5941ea -Author: Behdad Esfahbod -Date: Tue Mar 13 06:09:09 2007 -0400 - - [polygon,spline,traps] Avoid free(NULL) - - src/cairo-polygon.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-traps.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -commit b706bd9b38d505d2b09e932a8f362fac76ef64de -Author: Behdad Esfahbod -Date: Tue Mar 13 06:07:03 2007 -0400 - - [cairo-polygon] Add a cache of eight edges to cairo_polygon_t - - Many, if not most, of polygons have very few edges. This avoids - calling malloc() for those cases. - - src/cairo-polygon.c | 30 +++++++++++++++++++++++------- - src/cairoint.h | 1 + - 2 files changed, 24 insertions(+), 7 deletions(-) - -commit d8165d5424718404946c3a72d59396fc604d1bce -Author: Behdad Esfahbod -Date: Tue Mar 13 05:59:33 2007 -0400 - - [cairo-spline] Fix typo in comment - - src/cairo-spline.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cca7e3fec3a3ec68f812690aa7efafa7dc237849 -Author: Behdad Esfahbod -Date: Tue Mar 13 05:56:38 2007 -0400 - - [cairo_polygon_t] Change has_current_point from int to cairo_bool_t - - src/cairo-polygon.c | 8 ++++---- - src/cairoint.h | 2 +- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 81e15a454b188aa8dd03eb599d0fb4af834695f1 -Author: Behdad Esfahbod -Date: Tue Mar 13 05:55:45 2007 -0400 - - [cairo_polygon_t] Remove unused member 'closed' - - src/cairoint.h | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 2bf4ce389d05e07698e03374c3d05436f5d2b2e4 -Author: Behdad Esfahbod -Date: Tue Mar 13 05:53:13 2007 -0400 - - [cairo_polygon_t] Reorder struct members for clarity - - src/cairoint.h | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 3ce84390de8be69f369a4da80c3039b716ebb0e4 -Author: Behdad Esfahbod -Date: Tue Mar 13 05:51:39 2007 -0400 - - [cairo-polygon] Clean-up realloc algorithm for clarity - - src/cairo-polygon.c | 18 +++++++----------- - 1 files changed, 7 insertions(+), 11 deletions(-) - -commit 6976ab1392e0fd07a081e6d6056510070e1d6df9 -Author: Behdad Esfahbod -Date: Fri Mar 9 16:23:35 2007 -0500 - - [cairo-slope] Make comparison stable if both vectors are zero - - src/cairo-slope.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 9eee167210b6cc562014652572872cf0a7ccb00e -Author: Behdad Esfahbod -Date: Thu Mar 8 22:34:44 2007 -0500 - - [cairo-spline] Add a cache of eight points to cairo_spline_t - - Most of the splines need not more than eight points. This avoids - calling malloc() for those cases, and eight-points take only 64 bytes. - - src/cairo-spline.c | 28 +++++++++++++++++++++++----- - src/cairoint.h | 1 + - 2 files changed, 24 insertions(+), 5 deletions(-) - -commit 1e64ecf0758a208b469ae0a87a747b3a70c70ceb -Author: Behdad Esfahbod -Date: Thu Mar 8 22:17:30 2007 -0500 - - [cairo-spline] Clean-up realloc algorithm for clarity - - src/cairo-spline.c | 17 +++++++---------- - 1 files changed, 7 insertions(+), 10 deletions(-) - -commit cee687a33fb46b68d39bbfa64c44f0b28e10a9ee -Author: Behdad Esfahbod -Date: Thu Mar 8 22:19:49 2007 -0500 - - [cairo_traps_t] Reorder struct members for clarity - - src/cairoint.h | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 24aec99ffb9abce659146ea6ecbfb92856355855 -Author: Behdad Esfahbod -Date: Thu Mar 8 20:32:36 2007 -0500 - - [cairo-traps] Add a cache of one trapezoid to cairo_traps_t - - Seems like half the time, we just need one trap. This avoids - calling malloc() for those cases. - - src/cairo-traps.c | 30 +++++++++++++++++++++++------- - src/cairoint.h | 2 ++ - 2 files changed, 25 insertions(+), 7 deletions(-) - -commit 4737416c6e7829ec21230103a1b993d2bd08cc0e -Author: Behdad Esfahbod -Date: Thu Mar 8 20:05:13 2007 -0500 - - [cairo-traps] Clean-up realloc algorithm for clarity - - src/cairo-traps.c | 21 +++++++++------------ - 1 files changed, 9 insertions(+), 12 deletions(-) - -commit a9d8cb3e8aceb5831dfb3920df1502bf3b9450a6 -Author: Behdad Esfahbod -Date: Thu Mar 8 19:34:43 2007 -0500 - - [cairo-traps] Use INT32_MIN/MAX instead of INT16_MIN/MAX << 16 - - src/cairo-traps.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 5d28bf605fee84520e82818dd35cae8899ecc2ba -Author: Behdad Esfahbod -Date: Thu Mar 8 19:22:57 2007 -0500 - - [test] Make pdiff if necessary - - test/Makefile.am | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit e765ac745e0438296d2c852fd8231bd8f1fff034 -Author: Behdad Esfahbod -Date: Thu Mar 8 18:13:55 2007 -0500 - - [skiplist] Prefix symbols with _cairo - - src/cairo-bentley-ottmann.c | 24 ++++++++++++------------ - src/cairo-skiplist-private.h | 22 +++++++++++----------- - src/cairo-skiplist.c | 20 ++++++++++---------- - 3 files changed, 33 insertions(+), 33 deletions(-) - -commit cd78da36f663b99c67d50dcd692cd7b67677c82a -Author: Behdad Esfahbod -Date: Thu Mar 8 18:08:37 2007 -0500 - - [test-surfaces] Prefix public symbols with _cairo - - boilerplate/cairo-boilerplate.c | 6 +++--- - src/test-fallback-surface.c | 8 ++++---- - src/test-fallback-surface.h | 2 +- - src/test-meta-surface.c | 2 +- - src/test-meta-surface.h | 2 +- - src/test-paginated-surface.c | 2 +- - src/test-paginated-surface.h | 2 +- - 7 files changed, 12 insertions(+), 12 deletions(-) - -commit 8997b3a023b0edb8877675ce520fbb883d6fa188 -Author: Behdad Esfahbod -Date: Thu Mar 8 17:54:00 2007 -0500 - - [skiplist] Move static variable out of function - - Part of my secrect plan to make cairo compilable with: - - #define static - - Useful for some weird debugging purposes. - - src/cairo-skiplist.c | 15 ++++++++------- - 1 files changed, 8 insertions(+), 7 deletions(-) - -commit d40126f5aba481e4f4d9582cb5c37478f8ef37e7 -Author: Behdad Esfahbod -Date: Thu Mar 8 17:47:33 2007 -0500 - - [cairo_t] Embed a gstate into cairo_t - - So we don't have to malloc the first gstate. - - src/cairo-gstate.c | 44 ++------------------------------------------ - src/cairo-private.h | 1 + - src/cairo.c | 32 ++++++++++++++------------------ - src/cairoint.h | 10 +++++++--- - 4 files changed, 24 insertions(+), 63 deletions(-) - -commit 01f9ee39feb6ca48b9e07fdec62d8ab1b94ab75d -Author: Behdad Esfahbod -Date: Thu Mar 8 17:42:23 2007 -0500 - - [cairo-clip] Make _cairo_clip_init tolerate NULL target - - (needed for upcoming patches.) - - src/cairo-clip.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit bc8987068d1849cf7c16c38132fcc3c8d3b4e12e -Author: Behdad Esfahbod -Date: Thu Mar 8 17:15:35 2007 -0500 - - [cairo_t] Make path an array of size one - - This is more natural since cr->path can be used as if it was a pointer. - This means, for example, if we move on to making it a pointer, most of - the code using it does not need any change. So we get some level of - encapsulation of implementation details, if you prefer the terminology :). - - src/cairo-private.h | 2 +- - src/cairo.c | 52 +++++++++++++++++++++++++------------------------- - 2 files changed, 27 insertions(+), 27 deletions(-) - -commit 74e6a24e98baf70284b65d5f4ed41bdf7449d72d -Author: Behdad Esfahbod -Date: Thu Mar 8 17:04:43 2007 -0500 - - [Quartz] Don't include cairo-private.h - - src/cairo-quartz-surface.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 6bc543a0ebe4076da31bad4d3ccca4d713948587 -Author: Behdad Esfahbod -Date: Thu Mar 8 16:58:18 2007 -0500 - - [cairo_t] Move gstate pointer before cairo_path_fixed_t for better cache behavior - - src/cairo-private.h | 4 ++-- - src/cairo.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 85aff353ca38e607599282bc955e467df82fa01b -Author: Behdad Esfahbod -Date: Thu Mar 8 16:52:09 2007 -0500 - - [cairo-path-fixed] Fine-tune size of buffer - - such that cairo_path_fixed_t fits in 512 bytes. - - src/cairo-path-fixed-private.h | 10 ++++++---- - src/cairo.c | 4 ++-- - 2 files changed, 8 insertions(+), 6 deletions(-) - -commit 1bd073a1a2951bbb09fdab6637baae0172a223f0 -Author: Behdad Esfahbod -Date: Thu Mar 8 16:23:49 2007 -0500 - - [cairo-path-fixed] Merge op and arg bufs - - This means, we have to malloc only one buffer, not two. Worst case - is that one always draws curves, which fills the arg (point) buffer - six times faster than op buffer. But that's not a big deal since - each op takes 1 byte, while each point takes 8 bytes. So op space - is cheap to spare, so to speak (about 10% memory waste at worst). - - src/cairo-path-fill.c | 51 ++++---- - src/cairo-path-fixed-private.h | 22 +-- - src/cairo-path-fixed.c | 313 ++++++++++++++-------------------------- - src/cairo.c | 3 +- - 4 files changed, 141 insertions(+), 248 deletions(-) - -commit 5750d669af24fe1d2707326b9d74dfbb18adf636 -Author: Behdad Esfahbod -Date: Thu Mar 8 14:30:10 2007 -0500 - - [cairo-path-fixed] Avoid malloc for small paths - - We do this by including an initial op and arg buf in cairo_path_fixed_t, - so for small paths we don't have to alloc those buffers. - - The way this is done is a bit unusual. Specifically, using an array of - length one instead of a normal member: - - - cairo_path_op_buf_t *op_buf_head; - + cairo_path_op_buf_t op_buf_head[1]; - - Has the advantage that read-only use of the buffers does not need any - change as arrays act like pointers syntactically. All manipulation code - however needs to be updates, which the patch supposed does. Still, there - seems to be bugs remaining as cairo-perf quits with a Bad X Request error - with this patch. - - src/cairo-path-fixed-private.h | 4 +- - src/cairo-path-fixed.c | 68 +++++++++++++++++++++++----------------- - src/cairo.c | 4 +- - 3 files changed, 43 insertions(+), 33 deletions(-) - -commit 994dd1a134484d7a1ee246906f21f02d916014a8 -Author: Behdad Esfahbod -Date: Tue Mar 13 04:56:54 2007 -0400 - - [boilerplate] Prefer top_builddir to top_srcdir - - This may fix some build problems the Ubuntu guys are experiencing - with out-of-tree builds. - - boilerplate/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2894ed19a3acd955a5d0e2f5a231a6f1eee8ac06 -Author: Behdad Esfahbod -Date: Tue Mar 13 04:55:18 2007 -0400 - - [directfb,os2] #error if the backend is not compiled in, like others do - - src/cairo-directfb.h | 3 +++ - src/cairo-os2.h | 2 ++ - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 073d06d4661feb16b15ece5282a5134e3f05d8e7 -Author: Adrian Johnson -Date: Tue Mar 13 18:45:38 2007 +1030 - - Fix incorrect file permission in previous commit - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit a944f42b3d58825e8def292001e3738651b7584a -Author: Adrian Johnson -Date: Tue Mar 13 18:35:59 2007 +1030 - - Fix buffer overflow warning - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0f78eb8ccf60c60a4b66441958a7498dc9f7fa47 -Author: Carl Worth -Date: Mon Mar 12 16:24:58 2007 -0700 - - perf/README: Add notes on using cairo-perf-diff - - perf/README | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 93 insertions(+), 12 deletions(-) - -commit 14cab8b020f429d346561d8ab70b154b2e3f0668 -Author: Chris Wilson -Date: Sun Mar 11 21:55:19 2007 +0000 - - Correct an off-by-one in the reflection of the convolution index. - - Currently the convolution code uses the formula 2*(N-1)-n to reflect the index - n when n is greater than or equal to N. - This is wrong as n=N -> 2*(N-1)-N = N-2 instead of N-1. - - Furthermore when the image is small, e.g. at the highest levels of the - pyramid, this causes the code to index before the start of the array and - causes valgrind to issue a warning. - - test/pdiff/lpyramid.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 789aada06b52e068662f0ac0f7a424c51bcba510 -Author: Chris Wilson -Date: Sun Mar 11 20:55:26 2007 +0000 - - Avoid the struct copy when source and destination are the same. - - On some architectures, gcc will emit a memcpy for structure copies which will - produce a valgrind warning when the source and destination pointers are the - same. Workaround this issue by explicitly checking the source and destination - for inequality before doing the structure assignment. - - src/cairo-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ef284a2d6bbeae8711226f1f1f2cf4936f6937eb -Author: Carl Worth -Date: Fri Mar 9 13:36:03 2007 -0800 - - Fix a LOCK vs. UNLOCK typo, (yes, I'm that stupid). - - Thanks to M.Drochner@fz-juelich.de for noticing the bug. - - This fixes bug #10235: - - locking bug in cairo_ft_scaled_font_unlock_face() - http://bugs.freedesktop.org/show_bug.cgi?id=10235 - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 772edc9133d41dfd667ae5915dfa6ace0bcbfd0d -Author: Emmanuel Pacaud -Date: Thu Mar 8 21:32:59 2007 +0100 - - SVG: fix a radial gradient failure when using CAIRO_EXTEND_REFLECT. - - Assume from the beginning we're using a circle with a radius equal to - 2 * ( r1 - r0 ) when emulating CAIRO_EXTEND_REFLECT. - - src/cairo-svg-surface.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit c07867c545d7ab7c4a104944768f8a5b69ef9596 -Author: Behdad Esfahbod -Date: Wed Mar 7 15:55:02 2007 -0500 - - [glitz] Mark some constant static structures as const - - src/cairo-glitz-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 88632575bfae348a63e3e6228d5ceaa64715ae5f -Author: Behdad Esfahbod -Date: Wed Mar 7 15:54:20 2007 -0500 - - [PS/PDF/SVG] Rename internal symbols to have _cairo_*_surface prefix - - src/cairo-pdf-surface.c | 74 +++++++++++++------------- - src/cairo-ps-surface.c | 52 +++++++++--------- - src/cairo-svg-surface.c | 136 +++++++++++++++++++++++----------------------- - 3 files changed, 131 insertions(+), 131 deletions(-) - -commit 2cc1c73705d70f834b43996f70080860ac66e57d -Author: Behdad Esfahbod -Date: Wed Mar 7 15:53:27 2007 -0500 - - [cairoint] Move endian-conversion routines into cairoint.h - - src/cairo-cff-subset.c | 28 ---------------------------- - src/cairo-truetype-subset.c | 37 ------------------------------------- - src/cairoint.h | 35 +++++++++++++++++++++++++++++++++++ - 3 files changed, 35 insertions(+), 65 deletions(-) - -commit 62e864e73cd1136b3c0e889dca43a1c0cc648b21 -Author: Behdad Esfahbod -Date: Wed Mar 7 15:51:35 2007 -0500 - - [Type1] Add cairo-type1-private.h that Type1 fallback and subset code share - - doc/public/Headers.mk | 1 + - src/Makefile.am | 1 + - src/cairo-type1-fallback.c | 14 ++++-------- - src/cairo-type1-private.h | 45 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-type1-subset.c | 18 ++++++---------- - 5 files changed, 59 insertions(+), 20 deletions(-) - -commit ef9799d596600aea334707d2ff00fcca82280d83 -Author: Behdad Esfahbod -Date: Wed Mar 7 15:49:51 2007 -0500 - - [cosmetic] Remove static var from testing code in bentley-ottman. - - src/cairo-bentley-ottmann.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 92d331a23407c79d83bf0b2a7d003ba3525641d4 -Author: Chris Wilson -Date: Wed Mar 7 13:31:54 2007 +0000 - - Fix up the trivial leaks found by valgrind. - - perf/cairo-perf.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 7d972086d6ea6a6bfa47b5fb47f7a21be61e10e8 -Author: Chris Wilson -Date: Wed Mar 7 12:19:44 2007 +0000 - - Add valgrind/callgrind targets to Makefile. - - perf/Makefile.am | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit 734d32ed7a50284fcc8984af67734bb306735691 -Author: Emmanuel Pacaud -Date: Tue Mar 6 15:49:53 2007 -0800 - - SVG: Fix CAIRO_EXTEND_REFLECT for radial gradients. - - This patch also handles cases where r0 > r1, (one circle must still - be wholly contained within the other as that's all SVG supports). - - This patch should also prevent a crash when r0 == r1. - - src/cairo-svg-surface.c | 337 ++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 277 insertions(+), 60 deletions(-) - -commit 32536a7b794c38ff1944b8af5e56e8962e76c311 -Author: Brian Ewins -Date: Tue Mar 6 23:45:23 2007 +0000 - - [atsui] clean up warnings - - Just tidying up warnings left behind by previous fixes. - - src/cairo-atsui-font.c | 13 ++++++------- - 1 files changed, 6 insertions(+), 7 deletions(-) - -commit 9032bf4e2d3bffe84d11a771ba4072cdd8926b77 -Author: Brian Ewins -Date: Tue Mar 6 23:24:33 2007 +0000 - - [quartz] rename remaining nquartz symbols to quartz. - - Renaming any nquartz symbols and files left to quartz. - - doc/public/Makefile.am | 1 - - src/Makefile.am | 2 - - src/cairo-quartz-private.h | 6 +- - src/cairo-quartz-surface.c | 238 ++++++++++++++++++++++---------------------- - 4 files changed, 122 insertions(+), 125 deletions(-) - -commit b0d05f7421c457120b9d86a83c4935c67b217fab -Author: Behdad Esfahbod -Date: Tue Mar 6 14:26:51 2007 -0500 - - [configure.in] Remove AM_MAINTAINER_MODE - - Maintainer-mode is known broken behavior and discouraged. It has - created headaches before when you run configure and all in a sudden - editing Makefile.am's does not trigger a Makefile update... - - configure.in | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit f7beb220df74fef60c102fb5cc827fb2d3962296 -Author: Behdad Esfahbod -Date: Tue Mar 6 10:33:09 2007 -0500 - - Remove extra word in docs - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 81b98c93b68839d20d3033170eeb5026257d52b8 -Author: Adrian Johnson -Date: Tue Mar 6 23:11:38 2007 +1030 - - PDF: Set page group color space to DeviceRGB - - See http://lists.freedesktop.org/archives/cairo/2006-November/008551.html - - src/cairo-pdf-surface.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 8f0ff52cf74fe4b18c46f9a62689b991645295d0 -Author: Carl Worth -Date: Tue Mar 6 01:39:37 2007 -0800 - - Increment version to 1.4.1 after making the 1.4.0 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) diff -Nru libgdiplus-4.0-2.10.9/cairo/ChangeLog.mk libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.mk --- libgdiplus-4.0-2.10.9/cairo/ChangeLog.mk 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.mk 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -# Creating ChangeLog files from git log: - -# We always create a ChangeLog that contains the most recent changes, and -# multiple others for changes between major releases (other than the last such -# segment that we put in 'ChangeLog'. The old ones are named -# ChangeLog.pre-X.Y where X.Y is the version number of the major release. - -CURR_CHANGELOG_VERSION=$(CAIRO_VERSION_MAJOR).$$(echo "($(CAIRO_VERSION_MINOR)+1)/2*2" | bc) -# examines $version -PREV_CHANGELOG_VERSION=$$(if test "x$$(echo "($$version-0.1)*2/2"|bc)" = "x$$(echo "$$version*2/2"|bc)"; \ - then echo "$$version-$$(echo "$$version" | sed 's/[0-9]/0/g;s/[0-9]$$/2/')"; \ - else echo "$$version-1.0"; \ - fi | bc | sed 's/[.]0*/./;s/^0[.]\?$$/initial/;s/[.]$$/.0/') - -CHANGELOGS = ChangeLog \ - `version=$(CURR_CHANGELOG_VERSION); \ - version=$(PREV_CHANGELOG_VERSION); \ - while test "x$$version" != xinitial; do \ - echo ChangeLog.pre-$$version; \ - version=$(PREV_CHANGELOG_VERSION); \ - done` - -MAINTAINERCLEANFILES += $(srcdir)/ChangeLog $(srcdir)/ChangeLog.pre-* -DISTCLEANFILES += $(srcdir)/ChangeLog.cache-* - -changelogs: - @$(MAKE) $(AM_MAKEFLAGS) $(CHANGELOGS) - -dist-hook: changelogs - changelogs="$(CHANGELOGS)"; \ - for changelog in $$changelogs; do \ - cp $(srcdir)/$$changelog $(distdir)/ 2>/dev/null || \ - cp $$changelog $(distdir)/; \ - done - -$(srcdir)/ChangeLog: - @if test -d "$(srcdir)/.git"; then \ - version=$(CURR_CHANGELOG_VERSION); \ - prev=$(PREV_CHANGELOG_VERSION).0; \ - nearest_tag=`git-describe | sed 's/-.*//'`; \ - before=$(srcdir)/ChangeLog.cache-$$prev..$$nearest_tag; \ - after=$(srcdir)/ChangeLog.cache-$$nearest_tag..; \ - $(MAKE) $(AM_MAKEFLAGS) $$before $$after && \ - echo Creating $@ && \ - { cat $$after; echo; cat $$before; } > $@; \ - else \ - test -f $@ || \ - (echo A git checkout is required to generate $@ >&2 && \ - echo A git checkout is required to generate this file >> $@); \ - fi - -DISTCLEANFILES += ChangeLog.cache-* - -ChangeLog.cache-*..: .git/HEAD - -ChangeLog%: $(srcdir)/ChangeLog% - -$(srcdir)/ChangeLog.cache-% $(srcdir)/ChangeLog.pre-%: - @echo Creating $@ - @if test -d "$(srcdir)/.git"; then \ - (cd "$(srcdir)" && \ - version=$$(echo "$@" | sed 's/.*ChangeLog\([.].*-\)\?//'); \ - if echo "$@" | grep -q '^ChangeLog[.]cache'; then \ - spec=$$version; \ - else \ - to=$$version; \ - test "x$$version" = x && version=$(CURR_CHANGELOG_VERSION); \ - from=$(PREV_CHANGELOG_VERSION); \ - test "x$$to" = x || to=$$to.0; \ - test "x$$from" = xinitial || from=$$from.0; \ - spec=$$from..$$to; \ - fi; \ - ./missing --run git-log --stat "$$spec") > $@.tmp \ - && mv -f $@.tmp $@ \ - || ($(RM) $@.tmp; \ - echo Failed to generate $@, your $@ may be outdated >&2); \ - else \ - echo A git checkout is required to generate $@ >&2; \ - fi - -.PHONY: changelogs ChangeLog $(srcdir)/ChangeLog diff -Nru libgdiplus-4.0-2.10.9/cairo/ChangeLog.pre-1.0 libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.pre-1.0 --- libgdiplus-4.0-2.10.9/cairo/ChangeLog.pre-1.0 2012-01-31 17:28:35.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.pre-1.0 1970-01-01 00:00:00.000000000 +0000 @@ -1,18417 +0,0 @@ -commit 995ed33726ac1e840ea1d6a28f48d6883a4bad59 -Author: Carl Worth -Date: Wed Aug 24 09:29:39 2005 +0000 - - Increment CAIRO_VERSION to 1.0.0 and libtool versioning to 4:2:2. - - ChangeLog | 5 +++++ - configure.in | 12 ++++++------ - 2 files changed, 11 insertions(+), 6 deletions(-) - -commit 95c1d5470151d4f9778a840847c9b532da1ef9f7 -Author: Carl Worth -Date: Wed Aug 24 09:26:28 2005 +0000 - - Fix typos. Add CAIRO_STATUS_INVALID_DASH. - - ChangeLog | 4 ++++ - NEWS | 9 +++++++-- - 2 files changed, 11 insertions(+), 2 deletions(-) - -commit 766f63567c8ecfc6881781054ac792e6252b8106 -Author: Carl Worth -Date: Wed Aug 24 09:12:37 2005 +0000 - - Unabbreviate "eg." to "for example,". - - ChangeLog | 4 ++++ - README | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 2cd76fc77f5455fb2bb141a4e75b3ced0004a1e2 -Author: Carl Worth -Date: Wed Aug 24 08:46:02 2005 +0000 - - Update name from "0.5 porting guide" to "1.0 porting guide." - - ChangeLog | 5 +++++ - PORTING_GUIDE | 14 +++++++++++--- - 2 files changed, 16 insertions(+), 3 deletions(-) - -commit aa4b9f4b00c5cf7be0f525caa2419b00a0dc26b5 -Author: Carl Worth -Date: Wed Aug 24 08:28:00 2005 +0000 - - Some text cleanups from Øyvind Kolås. - - ChangeLog | 5 +++++ - README | 9 +++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit d86f5af717baf1e44df3d10633c46482ed44b9da -Author: Carl Worth -Date: Wed Aug 24 08:12:22 2005 +0000 - - Add Amaury Jacquot. - - AUTHORS | 1 + - ChangeLog | 4 ++++ - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit ccc7a2f115960514ba43f24e85df9472b0fd4c60 -Author: Carl Worth -Date: Wed Aug 24 08:07:24 2005 +0000 - - Fix typo. - - ChangeLog | 4 ++++ - RELEASING | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit f4188a4680140c280bdf28c26020488d976b1dde -Author: Carl Worth -Date: Wed Aug 24 07:58:07 2005 +0000 - - Fix typos. - - AUTHORS | 2 +- - ChangeLog | 5 +++++ - README | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit bd510d8b4b7ab22a8699d55734e22b57648752d8 -Author: Tor Lillqvist -Date: Wed Aug 24 07:56:45 2005 +0000 - - Drop PDF and PS backend and FT font API from Win32 DLL entry points for now. - - ChangeLog | 5 +++++ - src/Makefile.am | 3 --- - 2 files changed, 5 insertions(+), 3 deletions(-) - -commit d86b741b4e9fdae422f7ef8c791ce779812b2be9 -Author: Carl Worth -Date: Wed Aug 24 07:16:01 2005 +0000 - - Fix typos. - - ChangeLog | 4 ++++ - README | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit 83b2f98d4955149c0d9941ed42ea51bf0d6cc993 -Author: Carl Worth -Date: Wed Aug 24 06:50:51 2005 +0000 - - Move glitz into the experimental list. - - ChangeLog | 4 ++++ - README | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit 9fde3cc0e3eea213c0f0fdfd8ca571fe63f4ddc9 -Author: Carl Worth -Date: Wed Aug 24 06:48:02 2005 +0000 - - Put glitz in the experimental section. - Give glitz the experimental treatment, (disable it by default. - - ChangeLog | 7 +++++++ - INSTALL | 2 +- - configure.in | 8 ++++++-- - 3 files changed, 14 insertions(+), 3 deletions(-) - -commit 19c25d63c2c4dd7a178e90df81b711ba667cbdd1 -Author: Carl Worth -Date: Wed Aug 24 06:17:39 2005 +0000 - - Add some more detailed build instructions. - - ChangeLog | 4 ++ - INSTALL | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - 2 files changed, 117 insertions(+), 5 deletions(-) - -commit 985d8571d2266715229d5e1e9d2037897240d6ce -Author: Billy Biggs -Date: Wed Aug 24 06:09:11 2005 +0000 - - Fix some minor typos in the doc. - - ChangeLog | 5 +++++ - src/cairo.c | 18 +++++++++--------- - 2 files changed, 14 insertions(+), 9 deletions(-) - -commit b5a7a195791007e3c367b92a1fcc628699ca8043 -Author: Carl Worth -Date: Wed Aug 24 06:07:58 2005 +0000 - - Disable ATSUI by default as well. - - ChangeLog | 4 ++++ - configure.in | 8 ++++++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit 3a9f977817b287e56f54760aece3105771a7dcc1 -Author: Carl Worth -Date: Wed Aug 24 05:43:48 2005 +0000 - - Add pointer to http://bugs.freedesktop.org. - - BUGS | 12 ++++++++++++ - ChangeLog | 4 ++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit 9282036cd354a5714655ce4ad7859a99a1800b19 -Author: Carl Worth -Date: Wed Aug 24 05:36:05 2005 +0000 - - Add more detailed notes on what is required to compile cairo on Mac OS X or win32. - - ChangeLog | 5 +++++ - README | 23 +++++++++++++++++++++++ - 2 files changed, 28 insertions(+), 0 deletions(-) - -commit 4569aeda97c15084998eb956a659ad1ace302819 -Author: Carl Worth -Date: Wed Aug 24 05:28:28 2005 +0000 - - Change upload directory from snapshots to releases now thatwe're doing stable releases of cairo. - - ChangeLog | 6 ++++++ - Makefile.am | 4 ++-- - RELEASING | 2 +- - 3 files changed, 9 insertions(+), 3 deletions(-) - -commit 18ef8944dc318b240791070ef5282b4037bd2441 -Author: Carl Worth -Date: Wed Aug 24 05:25:51 2005 +0000 - - Give PostScript and PDF backends the experimental treatment, disabling them by default. - - ChangeLog | 5 +++++ - configure.in | 16 ++++++++++++---- - 2 files changed, 17 insertions(+), 4 deletions(-) - -commit 5ca5ddde0b505403a3a129c2c743c8e5f8fa9b90 -Author: Carl Worth -Date: Wed Aug 24 05:21:50 2005 +0000 - - Add notes for 1.0 release. Thanks to Owen Taylor. - Note that PS and PDF backends are experimental. - Note the progress that has been completed so that 1.0 is ready now. - - ChangeLog | 9 ++++++ - NEWS | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - README | 4 +- - ROADMAP | 28 +++++++++++++------- - 4 files changed, 111 insertions(+), 12 deletions(-) - -commit 112094a350c4ed3a936a748f55bcbae7eac4e5c1 -Author: Carl Worth -Date: Wed Aug 24 02:25:39 2005 +0000 - - Update documentation for most path construction functions. Add discussion of the effects on the current point to all functions. Rephrase the wording of the relative functions. Big rewrite of cairo_arc description. Add discussion of join not caps to cairo_close_path. - - ChangeLog | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 235838d49f966804970fa06715e2e89b92f39c9f -Author: Keith Packard -Date: Wed Aug 24 01:47:13 2005 +0000 - - Use new device_x_scale/device_y_scale surface fields to set the device coordinate space to the nominal pixels. - Treat more alpha values as translucent (up to 0.999) - Fix emit_image to actually use a temporary image when necessary. - Change PS coordinate space to match cairo (top-down), adjust PS output to use new space. - Find more cases where PS output was not supported and fall back to image surface. - reviewed by: cworth - - ChangeLog | 28 +++++++++ - src/cairo-ps-surface.c | 146 ++++++++++++++++++++++++++++++----------------- - 2 files changed, 121 insertions(+), 53 deletions(-) - -commit 5198e71eaf07538307843a58a57f4551411f40b6 -Author: Keith Packard -Date: Wed Aug 24 01:42:19 2005 +0000 - - _cairo_surface_show_glyphs may return UNSUPPORTED in which case a call to scaled_font->backend->show_glyphs is needed. - reviewed by: cworth - - ChangeLog | 8 ++++++++ - src/cairo-meta-surface.c | 17 +++++++++++++++++ - 2 files changed, 25 insertions(+), 0 deletions(-) - -commit e4166936b9d2e1197efcdc378a6113a6c68a41ed -Author: Keith Packard -Date: Wed Aug 24 01:39:56 2005 +0000 - - Add device_x_scale and device_y_scale to surface so that the coordinate system seen by the backend can differ from the nominal device coordinate space used by the application. - Useful for printer backends where the device coordinate space should be in pixels while the user visible device space is in points. - There is no API to set these values; the backends using this functionality should do that themselves before the first cairo_t is created. - reviewed by: cworth - - ChangeLog | 27 +++++++++++++++++++++++ - src/cairo-gstate-private.h | 4 +- - src/cairo-gstate.c | 51 ++++++++++++++++++++++++++++++++++--------- - src/cairo-surface.c | 10 +++++--- - src/cairoint.h | 2 + - 5 files changed, 77 insertions(+), 17 deletions(-) - -commit 77a0ae7439bba5b442fc7c3bee5eb61ebfe24abb -Author: Carl Worth -Date: Wed Aug 24 01:13:36 2005 +0000 - - Fix cairo_show_text to advance the current point. Add documentation for cairo_show_text. - Add test to verify that the current-point-advancing behavior of cairo_show_text is working. - Remove bug about cairo_show_text not advancing the current point. - - BUGS | 4 -- - ChangeLog | 15 +++++++ - src/cairo.c | 54 +++++++++++++++++++++++--- - test/.cvsignore | 1 + - test/Makefile.am | 3 + - test/show-text-current-point-ref.png | Bin 0 -> 1606 bytes - test/show-text-current-point.c | 68 ++++++++++++++++++++++++++++++++++ - 7 files changed, 134 insertions(+), 11 deletions(-) - -commit 5ac2d216ab5322869cd2540c7cc2cda579eaf85e -Author: Carl Worth -Date: Wed Aug 24 00:19:52 2005 +0000 - - Update documentation for most path construction functions. Add discussion of the effects on the current point to all functions. Rephrase the wording of the relative functions. Big rewrite of cairo_arc description. Add discussion of join not caps to cairo_close_path. - - ChangeLog | 4 ++ - src/cairo.c | 130 ++++++++++++++++++++++++++++++++++++++++------------------ - 2 files changed, 93 insertions(+), 41 deletions(-) - -commit 4f44cd809db5c72638d14963870848eba9f266d1 -Author: Carl Worth -Date: Tue Aug 23 23:20:53 2005 +0000 - - Minor doc edit. - - ChangeLog | 4 ++++ - src/cairo.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit ef8b5b6a50667792a1cbdd5d338c8f0a154855ff -Author: Carl Worth -Date: Tue Aug 23 23:13:35 2005 +0000 - - Minor doc edits. - - ChangeLog | 4 ++++ - doc/public/tmpl/cairo-matrix.sgml | 6 +++--- - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit 4047fa507720c01a9ac0377de92ddc71ff2f359f -Author: Carl Worth -Date: Tue Aug 23 22:48:13 2005 +0000 - - Prefer cairo over Cairo when not at the beginning of a sentence. - - ChangeLog | 8 ++++++++ - doc/public/tmpl/cairo-matrix.sgml | 2 +- - doc/public/tmpl/cairo-status.sgml | 2 +- - doc/public/tmpl/cairo-types.sgml | 2 +- - doc/public/tmpl/cairo.sgml | 6 +++--- - 5 files changed, 14 insertions(+), 6 deletions(-) - -commit 0b616d20dd77aaa4549759a49d72dd1007290ebb -Author: Billy Biggs -Date: Tue Aug 23 21:36:08 2005 +0000 - - Add a long description. - Fix a typo. - Document the return value of cairo_scaled_font_reference(). - Document the width and height parameters of cairo_xlib_surface_set_drawable(). - - ChangeLog | 9 +++++++++ - doc/public/tmpl/cairo-image.sgml | 7 +++++-- - doc/public/tmpl/cairo.sgml | 2 +- - src/cairo-font.c | 2 ++ - src/cairo-xlib-surface.c | 2 ++ - 5 files changed, 19 insertions(+), 3 deletions(-) - -commit 86889a55de043b1357af39a2446b948068d54179 -Author: Billy Biggs -Date: Tue Aug 23 21:10:39 2005 +0000 - - Document the rest of the path functions (except the two text ones, which should coordinate with their corresponding non-path versions). - Minor shuffling. - - ChangeLog | 9 ++++ - doc/public/cairo-sections.txt | 18 ++++---- - doc/public/tmpl/cairo-paths.sgml | 87 ++++++++++++++++++++++-------------- - doc/public/tmpl/cairo-text.sgml | 19 -------- - src/cairo.c | 92 ++++++++++++++++++++++++++++++++++++++ - 5 files changed, 163 insertions(+), 62 deletions(-) - -commit 1e054fa3966341c08069d90daa0a430571539d3f -Author: Kristian Høgsberg -Date: Tue Aug 23 20:08:21 2005 +0000 - - More minor edits. - - AUTHORS | 2 +- - ChangeLog | 5 +++++ - README | 2 ++ - 3 files changed, 8 insertions(+), 1 deletions(-) - -commit ebb54333561b4b4e85660687f1188999435f1a7a -Author: Billy Biggs -Date: Tue Aug 23 19:54:11 2005 +0000 - - Minor edits. - - ChangeLog | 4 ++++ - README | 16 +++++++--------- - 2 files changed, 11 insertions(+), 9 deletions(-) - -commit 326911a749979104fbcd60e5af93f902257a5389 -Author: Billy Biggs -Date: Tue Aug 23 19:52:09 2005 +0000 - - Update the long description of cairo_matrix_t to match the current sources. - Add cairo_path_data_t. - Some documentation updates and improvements. - - ChangeLog | 11 ++++ - doc/public/tmpl/cairo-matrix.sgml | 30 ++++-------- - doc/public/tmpl/cairo-paths.sgml | 6 ++ - src/cairo-ft-font.c | 5 +- - src/cairo-path-data.c | 4 +- - src/cairo-pattern.c | 4 +- - src/cairo.c | 89 +++++++++++++++++++++++------------ - src/cairo.h | 92 +++++++++++++++++++------------------ - 8 files changed, 139 insertions(+), 102 deletions(-) - -commit ee3e72e6a9e777aec5a0993352de1f8e77065989 -Author: Carl Worth -Date: Tue Aug 23 19:34:20 2005 +0000 - - Add suppression for uninitialized data in fbBltOne. - - ChangeLog | 5 +++++ - test/.valgrind-suppressions | 16 ++++++++++++++++ - 2 files changed, 21 insertions(+), 0 deletions(-) - -commit 0b063224a6d72ea025720060abf0781d4df81757 -Author: Carl Worth -Date: Tue Aug 23 19:31:10 2005 +0000 - - Big update in preparation for 1.0. - - ChangeLog | 4 ++ - README | 149 +++++++++++++++++++++++++++++++++++++++++++------------------ - 2 files changed, 110 insertions(+), 43 deletions(-) - -commit 83aae920630ec9be77fc80cb544c6272859f4460 -Author: Carl Worth -Date: Tue Aug 23 17:36:20 2005 +0000 - - Added several names to the AUTHORS file (since 2005-01-24): - Josh Aas Billy Biggs Damien Carbery Steve Chaplin Tomasz Cholewo John Ehresman Behdad Esfahbod Bertram Felgenhauer J. Ali Harlow Adrian Johnson Michael Johnson Øyvind Kolås Martin Kretzschmar Tor Lillqvist Luke-Jr Jeff Muizelaar Peter Nilsson Geoff Norton Robert O'Callahan Mike Owens Stuart Parmenter Tim Rowley Jason Dorje Short Travis Spencer Malcolm Tredinnick - - AUTHORS | 29 +++++++++++++++++++++++++++-- - ChangeLog | 34 +++++++++++++++++++++++++++++++--- - 2 files changed, 58 insertions(+), 5 deletions(-) - -commit b4d43d7fddd9d0843a97a8f321cafc646f59d76d -Author: Billy Biggs -Date: Tue Aug 23 16:31:59 2005 +0000 - - Experimental Quartz and XCB backends removed from the public doc for now. - - ChangeLog | 5 +++++ - doc/public/cairo-docs.xml | 6 ++++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit f5c16c2e4815306308de5c884d11ff9888229986 -Author: Owen Taylor -Date: Tue Aug 23 15:16:37 2005 +0000 - - Reverse the help text for --enable-xcb, - --enable-quartz. - - ChangeLog | 5 +++++ - configure.in | 6 +++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -commit b8d610c56e77afe6e27514d8a1ce76bd9aaf8274 -Author: Owen Taylor -Date: Tue Aug 23 15:11:44 2005 +0000 - - Disable XCB and Quartz backends unless explicitely enabled. Add a big warning message if they are enabled about bugs and API instability. - - ChangeLog | 6 ++++++ - configure.in | 19 +++++++++++++++++-- - 2 files changed, 23 insertions(+), 2 deletions(-) - -commit 00af78735e02a0384ada84d57cd208f06bcaaadc -Author: Owen Taylor -Date: Tue Aug 23 14:53:08 2005 +0000 - - Rip out all the code for doing anything other than linear interpolation between color stops, instead of doing different funky things based on pattern->filter. (#4184) - - ChangeLog | 7 +++++ - src/cairo-pattern.c | 66 ++------------------------------------------------ - 2 files changed, 10 insertions(+), 63 deletions(-) - -commit 48b3a1cacd9d486c0e279ea8fadfb2fd4e3207a0 -Author: Owen Taylor -Date: Tue Aug 23 14:52:38 2005 +0000 - - Check for AlphaBlend() with GetProcAddress() to support older compilation environments like MSVC 6. (Also fixes this portion of the code to run on Win98 and Win95, but much of the rest of cairo-win32-* won't work in that environment) (#3926, Hans Breuer, Christian Biesinger, based on code originally from Mozilla) - Remove WINVER define, since it was there only for AlphaBlend(). - - src/cairo-win32-private.h | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit c4c1c4db96549e4ffcbd0ee081661d54522860c9 -Author: Carl Worth -Date: Tue Aug 23 14:51:51 2005 +0000 - - Remove assert statements that violate two intentional instances of ref_count == 0. - - ChangeLog | 6 ++++++ - src/cairo-font.c | 8 ++++++-- - 2 files changed, 12 insertions(+), 2 deletions(-) - -commit 2dfb7a662f63642d63a91e39ea1828957fab0705 -Author: Carl Worth -Date: Tue Aug 23 14:37:09 2005 +0000 - - Fix memory leak of pattern. - - ChangeLog | 4 ++++ - test/text-pattern.c | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit a96a4a7ce6c402ab96a9e06b453d9c2203fad7bb -Author: Owen Taylor -Date: Tue Aug 23 14:30:52 2005 +0000 - - Check for AlphaBlend() with GetProcAddress() to support older compilation environments like MSVC 6. (Also fixes this portion of the code to run on Win98 and Win95, but much of the rest of cairo-win32-* won't work in that environment) (#3926, Hans Breuer, Christian Biesinger, based on code originally from Mozilla) - Remove WINVER define, since it was (hopefully) there only for AlphaBlend(). - - ChangeLog | 13 +++++ - src/cairo-win32-surface.c | 109 ++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 105 insertions(+), 17 deletions(-) - -commit 6d8df3957dc0223b35b119788d9c0f460b06141a -Author: Owen Taylor -Date: Tue Aug 23 14:12:01 2005 +0000 - - Call _get_pattern_load_flags() on the resolved pattern, not the input pattern. (Further fix from sunmoon1997) - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 2 +- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit f219b83466f926ee48ba6abbf69ec723c9eba685 -Author: Carl Worth -Date: Tue Aug 23 14:04:28 2005 +0000 - - if users attempt to twice destroy or re-reference a destroyed object. The condition for detecting this case is a ref_count of 0. - Reviewed by: otaylor Fixes bug #4198 - - ChangeLog | 17 +++++++++++++++++ - src/cairo-font.c | 8 ++++++++ - src/cairo-pattern.c | 4 ++++ - src/cairo-surface.c | 4 ++++ - src/cairo.c | 4 ++++ - 5 files changed, 37 insertions(+), 0 deletions(-) - -commit a0ecb16417a4c3f92b0a7682b84be702480748b4 -Author: Carl Worth -Date: Tue Aug 23 13:57:00 2005 +0000 - - Move CAIRO_CONTENT_VALID and CAIRO_FORMAT_VALID from the public cairo.h to the private cairoint.h where they belong. - - ChangeLog | 7 +++++++ - src/cairo.h | 9 --------- - src/cairoint.h | 9 +++++++++ - 3 files changed, 16 insertions(+), 9 deletions(-) - -commit f229b1abfb01d3c42cba1dec36a271fe75c503a9 -Author: Owen Taylor -Date: Tue Aug 23 13:34:14 2005 +0000 - - when creating the temporary mask, do glyph ADD mask, not (glyph IN source) ADD mask. Set the mask as having component alpha when it's 4-channel. - test/text-antialias-subpixel.c test/Makefile.am: No longer XFAIL. - test/text-antialias-gray.c test/text-antialias-subpixel.c - Don't turn off metrics hinting, it doesn't make sense. - Update. - - ChangeLog | 15 +++++++++++++++ - src/cairo-ft-font.c | 10 ++++++---- - test/Makefile.am | 1 - - test/text-antialias-gray-ref.png | Bin 723 -> 727 bytes - test/text-antialias-gray.c | 1 - - test/text-antialias-none-ref.png | Bin 277 -> 278 bytes - test/text-antialias-none.c | 1 - - test/text-antialias-subpixel-ref.png | Bin 1079 -> 1081 bytes - test/text-antialias-subpixel.c | 4 +--- - 9 files changed, 22 insertions(+), 10 deletions(-) - -commit c11f0376d4c4aec3ff1c849f333aad2ce56f06bd -Author: Carl Worth -Date: Tue Aug 23 12:48:17 2005 +0000 - - Revise the description of indentation and tabs to be clear (I hope). - - CODING_STYLE | 29 ++++++++++++++++++++++++----- - ChangeLog | 5 +++++ - 2 files changed, 29 insertions(+), 5 deletions(-) - -commit 317af5618c01d1be86308aebc0e87d7752a7e309 -Author: Carl Worth -Date: Tue Aug 23 10:55:00 2005 +0000 - - Fix inadvertent commit of incorrect reference image - - test/text-antialias-subpixel-ref.png | Bin 970 -> 1079 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 9aa1f4d868c7fdad6412205538697899fe760dca -Author: Carl Worth -Date: Tue Aug 23 10:39:27 2005 +0000 - - Clear to opaque white at the beginning of the test so that the 0 alpha values in the destination don't cause bizarre results. (main): Note that only the image backend should fail now. - Add new reference image. - - ChangeLog | 9 +++++++++ - test/Makefile.am | 1 + - test/text-antialias-subpixel-ref.png | Bin 0 -> 970 bytes - test/text-antialias-subpixel.c | 5 ++++- - 4 files changed, 14 insertions(+), 1 deletions(-) - -commit 9e68e0ceef2519b28e582fdaa8f2a8a33401735a -Author: Carl Worth -Date: Tue Aug 23 10:11:16 2005 +0000 - - Add more comments on the improved state of this bug. Commit a reference image generated with cairo_text_path; cairo_fill. (We may not require getting this exact result, but I think it is worth examining the differences closely.) - - ChangeLog | 9 +++++++++ - test/text-rotate-ref.png | Bin 0 -> 12446 bytes - test/text-rotate.c | 39 +++++++++++++++++++++++++++++++++++++-- - 3 files changed, 46 insertions(+), 2 deletions(-) - -commit 985c919b9fca504125df024e511eacf42a001985 -Author: Carl Worth -Date: Tue Aug 23 09:10:45 2005 +0000 - - Add docs-publish target to build and push documentation, (since our nightly server-side cron job is not working right now). - - ChangeLog | 6 ++++++ - Makefile.am | 15 +++++++++++++-- - 2 files changed, 19 insertions(+), 2 deletions(-) - -commit 0c2aa6e6abda77b67af91b32721b228097326d6d -Author: Carl Worth -Date: Tue Aug 23 08:21:46 2005 +0000 - - Move comment about missing cleanup of caches on XCloseDisplay from BUGS to a _cairo_xlib_close_display. Also covered in bug #4120. - - BUGS | 7 ------- - ChangeLog | 7 +++++++ - src/cairo-xlib-screen.c | 3 +++ - 3 files changed, 10 insertions(+), 7 deletions(-) - -commit 60f9c8d9fd914004e183adaf2bbba76b08c4e950 -Author: Carl Worth -Date: Tue Aug 23 07:51:56 2005 +0000 - - Remove caps-sub-paths from the XFAIL list since it is fixed now. - - ChangeLog | 6 ++++++ - test/Makefile.am | 1 - - test/caps-sub-paths.c | 3 +-- - 3 files changed, 7 insertions(+), 3 deletions(-) - -commit 256456b708292b200e49107e360bfb45b7eb5bf0 -Author: Carl Worth -Date: Tue Aug 23 07:44:14 2005 +0000 - - Fix for bug #4205: - Abstract the cap-addition code from the end of the stroke operation into a new _cairo_stroker_add_caps function. - Call the new _cairo_stroker_add_caps at the beginning of every move_to so that we get caps on every subpath and not just the last one. - - ChangeLog | 13 +++++++++++ - src/cairo-path-stroke.c | 55 +++++++++++++++++++++++++++++----------------- - 2 files changed, 48 insertions(+), 20 deletions(-) - -commit 55a517991e0d2435a58cab7fd61e272048eddbe8 -Author: Billy Biggs -Date: Tue Aug 23 05:54:38 2005 +0000 - - Add libpixman.la to the libcairo_la_DEPENDENCIES line so that changes to pixman get picked up. - - ChangeLog | 5 +++++ - src/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 099060f9254e972ae2d28f51815b75da01736a8f -Author: Owen Taylor -Date: Tue Aug 23 05:18:48 2005 +0000 - - Some fixes for warnings from sparse (Part of #4208, Kjartan Maraas) - Use NULL, not 0. - Fix C99'ism of mixed code and declarations. - - ChangeLog | 10 ++++++++++ - src/cairo-matrix.c | 13 +++++++------ - test/cairo-test.c | 2 +- - 3 files changed, 18 insertions(+), 7 deletions(-) - -commit 704874c16538f0653f37be253f2fc3d89963667d -Author: Carl Worth -Date: Tue Aug 23 01:55:29 2005 +0000 - - caps only added to last subpath: COVERED by test/caps-sub-paths and bug #4205. - - BUGS | 4 ---- - ChangeLog | 5 +++++ - 2 files changed, 5 insertions(+), 4 deletions(-) - -commit eb206f0a12aac21807bfba5414ad0ed34a62fc37 -Author: Carl Worth -Date: Tue Aug 23 01:50:25 2005 +0000 - - Use the expect_failure variant of cairo_test so that make check prints the reason this test fails. - - ChangeLog | 5 +++++ - test/caps-sub-paths.c | 3 ++- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 4b0ed008ba51a4e2e9f62c360f6ae8dcb708817c -Author: Carl Worth -Date: Tue Aug 23 01:02:16 2005 +0000 - - Add test to demonstrate bug #4205, missing caps on all but last sub-path in a complex path. - - ChangeLog | 9 ++++++ - test/.cvsignore | 1 + - test/Makefile.am | 4 +++ - test/caps-sub-paths-ref.png | Bin 0 -> 164 bytes - test/caps-sub-paths.c | 63 +++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 77 insertions(+), 0 deletions(-) - -commit 65bfc03e7284301fc1cea4b88de72f7928f3857a -Author: Carl Worth -Date: Tue Aug 23 00:03:09 2005 +0000 - - Remove discussion of the BAD_NESTING restriction from the documentation of cairo_create. No such restriction exists anymore. - - ChangeLog | 6 ++++++ - src/cairo.c | 10 ---------- - 2 files changed, 6 insertions(+), 10 deletions(-) - -commit c0bbf9ac08020cafdb7de4dae5099e9cf196802c -Author: Carl Worth -Date: Tue Aug 23 00:00:42 2005 +0000 - - Fix for bug #4192: - New function to handle both calling FT_Done_Face on unscaled->face and decrementing font_map->num_open_faces. - Call new _font_map_release_face_lock_held as approporiate. - Assert that (font_map->num_open_faces == 0) when we're done, to help guarantee the bug is fixed. - Don't call FT_Done_Face anymore, instead assert that (unscaled->face == NULL) by the time this function is called. - Prefer TRUE/FALSE as values for cairo_bool_t have_scale. - - ChangeLog | 26 ++++++++++++++++++++++++++ - src/cairo-ft-font.c | 50 ++++++++++++++++++++++++++++++++++++-------------- - 2 files changed, 62 insertions(+), 14 deletions(-) - -commit dc907490e35c26ebb7d1fd106963f754d389ad82 -Author: Billy Biggs -Date: Mon Aug 22 22:23:54 2005 +0000 - - Add version.xml to content_files so it will be copied to the right place for DESTDIR builds. - - ChangeLog | 5 +++++ - doc/public/Makefile.am | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit a68097a219543160ea6ff12628626dcdb070f97e -Author: Billy Biggs -Date: Mon Aug 22 22:11:44 2005 +0000 - - Rework the index for the reference manual. - Update descriptions and add new files for added sections. - - ChangeLog | 33 ++ - doc/public/cairo-docs.xml | 50 ++- - doc/public/cairo-sections.txt | 262 ++++++---- - doc/public/tmpl/cairo-font-options.sgml | 194 ++++++++ - doc/public/tmpl/cairo-font.sgml | 268 +---------- - doc/public/tmpl/cairo-ft.sgml | 18 +- - doc/public/tmpl/cairo-glitz.sgml | 4 +- - doc/public/tmpl/cairo-image.sgml | 73 +++ - doc/public/tmpl/cairo-matrix.sgml | 5 +- - doc/public/tmpl/cairo-paths.sgml | 207 ++++++++ - doc/public/tmpl/cairo-pattern.sgml | 92 ++-- - doc/public/tmpl/cairo-pdf.sgml | 4 +- - doc/public/tmpl/cairo-png.sgml | 26 +- - doc/public/tmpl/cairo-ps.sgml | 4 +- - doc/public/tmpl/cairo-quartz.sgml | 4 +- - doc/public/tmpl/cairo-scaled-font.sgml | 110 ++++ - doc/public/tmpl/cairo-status.sgml | 63 +++ - doc/public/tmpl/cairo-surface.sgml | 53 ++- - doc/public/tmpl/cairo-text.sgml | 189 +++++++ - doc/public/tmpl/cairo-transforms.sgml | 127 +++++ - doc/public/tmpl/cairo-types.sgml | 42 ++ - doc/public/tmpl/cairo-version.sgml | 54 ++ - doc/public/tmpl/cairo-win32-fonts.sgml | 57 +++ - doc/public/tmpl/cairo-win32.sgml | 40 +-- - doc/public/tmpl/cairo-xcb-xrender.sgml | 4 +- - doc/public/tmpl/cairo-xcb.sgml | 4 +- - doc/public/tmpl/cairo-xlib.sgml | 4 +- - doc/public/tmpl/cairo.sgml | 819 ++++--------------------------- - 28 files changed, 1581 insertions(+), 1229 deletions(-) - -commit 2d9d744f8c8a9fdf011a292ef6e823605d000f23 -Author: Owen Taylor -Date: Mon Aug 22 20:43:23 2005 +0000 - - Make cairo_ft_unscaled_font_backend static. - Add missing static. - Use NULL, not 0. - Use void in the definition of void functions, not (). - Make non-exported cairo_pattern_nil_* static. - - ChangeLog | 17 +++++++++++++++++ - src/cairo-font.c | 6 +++--- - src/cairo-ft-font.c | 4 ++-- - src/cairo-gstate.c | 2 +- - src/cairo-pattern.c | 8 ++++---- - src/cairo-ps-surface.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - 7 files changed, 29 insertions(+), 12 deletions(-) - -commit c792e6783c8424805b83c50a8c3fd9afa3ab8ed9 -Author: Carl Worth -Date: Mon Aug 22 17:20:29 2005 +0000 - - ref_counts will go negative: COVERED by https://bugs.freedesktop.org/show_bug.cgi?id=4198 - - BUGS | 6 ------ - ChangeLog | 5 +++++ - 2 files changed, 5 insertions(+), 6 deletions(-) - -commit 0fb5b1d4c44be43c9463fe8818aea1aed88facc5 -Author: Carl Worth -Date: Mon Aug 22 16:56:43 2005 +0000 - - Remove several entries in an effort to obsolete the BUGS file in favor of bugzilla and cairo/test. Specifically: - cairo_image_surface_create should clear image: NOTABUG. The user can clear if desired, and cairo clearing unconditionally would be performance overhead). - cairo_clip is really slow: FIXED/COVERED. Since the time this entry was added we've got rectangular, pixel-alignend clipping optimized. And there's a bug in bugzilla (https://bugs.freedesktop.org/show_bug.cgi?id=4191) for optimizing IN. - self-intersecting path is wrong: COVERED by test/self-intersecting.c. - Cairo is crashing Xnest: NEEDINFO. Is this still happening? Xfake has been working quite well for a very long time now. - font-size=0 in SVG does bad things: FIXED. - - BUGS | 37 ------------------------------------- - ChangeLog | 23 +++++++++++++++++++++++ - 2 files changed, 23 insertions(+), 37 deletions(-) - -commit 23baafbaa8d3295f109030637b5e73102e48ea8a -Author: Bertram Felgenhauer -Date: Mon Aug 22 16:52:40 2005 +0000 - - remove. - - ChangeLog | 5 +++++ - src/cairo-matrix.c | 31 ------------------------------- - src/cairoint.h | 4 ---- - 3 files changed, 5 insertions(+), 35 deletions(-) - -commit 988310429036dd94ee0bb75b4c6a2fb7c930d448 -Author: Bertram Felgenhauer -Date: Mon Aug 22 16:50:30 2005 +0000 - - correct the calculation of the error bound. - - ChangeLog | 5 +++++ - src/cairo-arc.c | 20 ++++++-------------- - 2 files changed, 11 insertions(+), 14 deletions(-) - -commit c0905759b059cf679674019c5c4dd09971bedab9 -Author: Bertram Felgenhauer -Date: Mon Aug 22 16:48:28 2005 +0000 - - use new function. strip comment of derivation for major axis length. - use _cairo_matrix_get_affine to retrieve matrix entries. - new function split out of cairo-pen.c. UTF8-ify the comment that explains the calculation. - - ChangeLog | 12 ++++ - src/cairo-matrix.c | 145 +++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-pen.c | 154 ++++------------------------------------------------ - src/cairoint.h | 3 + - 4 files changed, 170 insertions(+), 144 deletions(-) - -commit c7a35fbd3121f728ff40706cdf2a1ef8ac8e18a6 -Author: Bertram Felgenhauer -Date: Mon Aug 22 16:29:56 2005 +0000 - - use correctly transposed version of the matrix and fix up the comments above to use row vector notation. - - ChangeLog | 6 ++++++ - src/cairo-pen.c | 26 ++++++++++++++------------ - 2 files changed, 20 insertions(+), 12 deletions(-) - -commit 46dd21e795549481d9db8d90c399e683ef1205c7 -Author: Tor Lillqvist -Date: Mon Aug 22 15:49:04 2005 +0000 - - Calculate LT_CURRENT_MINUS_AGE (which forms part of the DLL name on Win32), and AC_SUBST it. - Add target "zips" to create zip file based distribution for Win32. - Produce a cairo.def file for distribution by preprocessing the relevant header files and grepping for declarations of functions that start with cairo_. Works for now, will have to modify later if necessary. Use the .def file when linking on Win32. - - ChangeLog | 14 ++++++++++++++ - Makefile.am | 16 ++++++++++++++++ - configure.in | 4 ++++ - src/Makefile.am | 36 +++++++++++++++++++++++++++++++++++- - 4 files changed, 69 insertions(+), 1 deletions(-) - -commit aa6b2c386be0e7a09f53da3fa08c061f01151e55 -Author: Owen Taylor -Date: Mon Aug 22 15:19:03 2005 +0000 - - Support artificial bold fonts with FC_EMBOLDEN; patch from Jackey Yang and sunmoon1997. - Check for FT_GlyphSlot_Embolden() - Call FT_GlyphSlot_Embolden for fonts where FC_EMBOLDEN is set but that aren't bold. Add another private flag for this. - - ChangeLog | 11 +++++++++++ - configure.in | 1 + - src/cairo-ft-font.c | 36 +++++++++++++++++++++++++++++++++++- - 3 files changed, 47 insertions(+), 1 deletions(-) - -commit 190dc79a2831ca86523f2e710e6b4152d0947694 -Author: Carl Worth -Date: Mon Aug 22 13:59:52 2005 +0000 - - Fix typo that was causing make dist to fail. - - ChangeLog | 5 +++++ - test/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 2ea856a21d2d392c0959e726c430e7fed87be97c -Author: Owen Taylor -Date: Mon Aug 22 12:15:28 2005 +0000 - - When width/height are 0, copy the src to the dest, don't just return. (#3017) - - pixman/ChangeLog | 5 +++++ - pixman/src/pixregion.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 31e4ade4abf716718c2f38e594f02b5b488e0d86 -Author: Owen Taylor -Date: Mon Aug 22 08:45:46 2005 +0000 - - Use floor(0.5+x) rather than round(), which is C99. (David Hollenberg) - - ChangeLog | 5 +++++ - test/text-rotate.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit b217f95fa0b8b818cbed8630c16fe8725f430c49 -Author: Owen Taylor -Date: Mon Aug 22 08:33:54 2005 +0000 - - Set LC_ALL=C rather than LANG and LC_NUMERIC to be robust against whatever settings the user has. (Martin Dobias) - - ChangeLog | 5 +++++ - autogen.sh | 7 ++++--- - 2 files changed, 9 insertions(+), 3 deletions(-) - -commit fdb5e2aa473a83cda9a3ecfab2fa47cdf40ffe65 -Author: Billy Biggs -Date: Sun Aug 21 21:04:52 2005 +0000 - - Optimize away calls to cairo_paint_with_alpha() if the alpha value given is <= 0. - Add a new macro CAIRO_ALPHA_IS_ZERO. - - ChangeLog | 7 +++++++ - src/cairo.c | 4 ++++ - src/cairoint.h | 1 + - 3 files changed, 12 insertions(+), 0 deletions(-) - -commit 89a4e13d73e3761e8b8b5d5fa0882d4ecb6423b1 -Author: Billy Biggs -Date: Sun Aug 21 21:02:32 2005 +0000 - - Fix a typo in the last change. - - pixman/ChangeLog | 4 ++++ - pixman/src/pixman-remap.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 16ce285251afa9c6e125a51df0d8a487c0bf5bbd -Author: Billy Biggs -Date: Sun Aug 21 20:49:47 2005 +0000 - - Remove warning about fbCompositeTrans_0888xnx0888 not being tested on big-endian, it's not helpful at this point. - Only define _cairo_pixman_have_mmx for fbHaveMMX when the symbol will actually exist. - - pixman/ChangeLog | 8 ++++++++ - pixman/src/fbpict.c | 23 +++++++++++------------ - pixman/src/pixman-remap.h | 2 ++ - 3 files changed, 21 insertions(+), 12 deletions(-) - -commit 33599bc6b64ed987c1894e88bc680028f28453a7 -Author: Billy Biggs -Date: Sun Aug 21 14:10:39 2005 +0000 - - Fix for bug #4172: - Use _cairo_fixed_to_double and _cairo_double_to_fixed when converting between double and 16.16 fixed point. These functions round nicely, and solve some inconsistencies in rendering between my PPC and x86 machines. Thanks to Owen Taylor for suggesting the fix. - The above change does affect linear gradients slightly, but it seems worth it. Update the reference images to follow. - - ChangeLog | 17 +++++++++++++++++ - src/cairo-pattern.c | 8 ++++---- - test/gradient-alpha-ref.png | Bin 153 -> 154 bytes - test/linear-gradient-ref.png | Bin 12744 -> 12719 bytes - test/text-pattern-ref.png | Bin 2728 -> 2731 bytes - 5 files changed, 21 insertions(+), 4 deletions(-) - -commit e3e7046cd7ee629fe085cf081fd3aa2581782bf5 -Author: Owen Taylor -Date: Sun Aug 21 12:13:17 2005 +0000 - - Remove stray doc sentence that wasn't meant to be committed. - - ChangeLog | 5 +++++ - src/cairo-surface.c | 6 ------ - 2 files changed, 5 insertions(+), 6 deletions(-) - -commit 17845df95b80d2a9586ba44fc5ade2c311a62c4c -Author: Billy Biggs -Date: Sun Aug 21 11:41:44 2005 +0000 - - Fix for bug #4165: - Use pointer comparison for coincident points to ensure a well-defined ordering, and avoid setting discard on both points. This fixes problems with my Mac's implementation of qsort. Final patch by Bertram Felgenhauer. - Update reference images after the change. - - ChangeLog | 18 ++++++++++++++++++ - src/cairo-hull.c | 7 ++++++- - test/clip-operator-ref.png | Bin 37330 -> 37330 bytes - test/linear-gradient-ref.png | Bin 12724 -> 12744 bytes - test/operator-clear-ref.png | Bin 4992 -> 4988 bytes - test/operator-source-ref.png | Bin 19957 -> 19958 bytes - test/unantialiased-shapes-ref.png | Bin 4450 -> 4449 bytes - test/unbounded-operator-ref.png | Bin 11937 -> 11929 bytes - 8 files changed, 24 insertions(+), 1 deletions(-) - -commit d93d56caeffb80ac92a0432ad1ebdecee5c0e2b6 -Author: Owen Taylor -Date: Sun Aug 21 11:23:58 2005 +0000 - - Check automake- if automake isn't sufficiently new. (#3593, Philip Van Hoof) - - ChangeLog | 5 +++++ - autogen.sh | 29 +++++++++++++++++++++++++++-- - 2 files changed, 32 insertions(+), 2 deletions(-) - -commit 2396b502a5de39ee44d53af971b7382a1f130a87 -Author: Owen Taylor -Date: Sun Aug 21 09:57:19 2005 +0000 - - When invoked as, say, ../autogen.sh, switch to the sourcedir to run the auto*. Based on corresponding code in GTK+'s autogen.sh. (#3402, Thomas Fitzsimmons) - Update from gtk-doc CVS, bringing in some minor output changes. (Eliminate the *** from the messages that don't indicate errors.) - Use += for EXTRA_DIST, since gtk-doc.make already defines it. - - ChangeLog | 13 +++++++++++++ - autogen.sh | 13 ++++++++++++- - doc/public/Makefile.am | 5 +++-- - gtk-doc.make | 12 ++++++------ - 4 files changed, 34 insertions(+), 9 deletions(-) - -commit 5462c8a5856f1b3b81889ac3a714e47b047e1984 -Author: Owen Taylor -Date: Sun Aug 21 09:27:52 2005 +0000 - - Check for FT_Load_Sfnt_Table and disable the PDF/PS backends if not found. (#4144, Billy Biggs) - - ChangeLog | 5 +++++ - configure.in | 13 +++++++++---- - 2 files changed, 14 insertions(+), 4 deletions(-) - -commit 1ce62becd11bbc929b75ea6d47fad477ad965962 -Author: Owen Taylor -Date: Sun Aug 21 08:53:56 2005 +0000 - - Fix the handling of backend->clone_similar == NULL. (#4161, Christian Biesinger) - - ChangeLog | 6 ++++++ - src/cairo-surface.c | 11 ++++++----- - src/cairoint.h | 2 +- - 3 files changed, 13 insertions(+), 6 deletions(-) - -commit 8e9e40d75201ea4d21b53ab51d1326f6f858c57c -Author: Owen Taylor -Date: Sun Aug 21 08:24:41 2005 +0000 - - Improve the documentation of internal functions. (Based on a patch from Christian Biesinger, #4162) - - ChangeLog | 5 +++++ - src/cairo-surface.c | 24 ++++++++++++++++-------- - 2 files changed, 21 insertions(+), 8 deletions(-) - -commit 65f90287bb922357e77b759b5e0db5d2c3698fc4 -Author: Owen Taylor -Date: Sun Aug 21 08:11:24 2005 +0000 - - Recognize gentoo's (and maybe other distro's) modified server vendor string, where extra text is added to the upstream value. (#4068, reported by Doug Goldstein, others. Patch from Mart Raudsepp) - - ChangeLog | 8 ++++++++ - src/cairo-xlib-surface.c | 4 ++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit af614d2de601c997f3a2cbae535fb0e96110a386 -Author: Owen Taylor -Date: Sun Aug 21 08:06:06 2005 +0000 - - Don't try to transform val->image when it is NULL. (#4163, Mathias Hasselmann) - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 3 ++- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit f823dfd9328f1aab0155257fcf9bb3aa45455867 -Author: Billy Biggs -Date: Sat Aug 20 21:28:57 2005 +0000 - - Fix for bug #4140: - Dereference the pixel value correctly on big endian systems. - - pixman/ChangeLog | 7 +++++++ - pixman/src/icrect.c | 3 ++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit d1bdd1313ee351e2ec7e4af1cf68143827f59694 -Author: Carl Worth -Date: Sat Aug 20 07:56:05 2005 +0000 - - Fix for bug #4142: - Disable xlib tests on X servers without the Render, since they currently just crash there. A better long-term fix would be to do some useful tests in this case. Thanks to Tim Mooney. - - ChangeLog | 9 +++++++++ - test/cairo-test.c | 12 ++++++++++++ - 2 files changed, 21 insertions(+), 0 deletions(-) - -commit 4a7a09b4ab4e8608d2f23661ddaf301f4508d42a -Author: Owen Taylor -Date: Sat Aug 20 05:23:52 2005 +0000 - - Include Xfree86-4.5 in the blacklist. (Reported by Andrew Benton) - - ChangeLog | 6 ++++++ - src/cairo-xlib-surface.c | 2 +- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit b9da101879afc6ab960e43f94d1e0a2fc10b3aac -Author: Billy Biggs -Date: Fri Aug 19 23:05:13 2005 +0000 - - Fix for bug #4096: - Improve the performance of png reading by adding special cases for fully transparent and fully opaque alpha, and using the standard optimization for 8-bit division by 255. - Add an INLINE macro for gcc. - - ChangeLog | 11 +++++++++++ - src/cairo-png.c | 28 +++++++++++++++++++++------- - src/cairoint.h | 6 ++++++ - 3 files changed, 38 insertions(+), 7 deletions(-) - -commit 465ff187869b118f30666de83e5327ea4d174df7 -Author: Carl Worth -Date: Fri Aug 19 16:37:56 2005 +0000 - - From Bertram Felgenhauer : - Add regression test for bug #4137 (fixed earlier). - - ChangeLog | 10 +++++ - test/.cvsignore | 1 + - test/Makefile.am | 3 + - test/rectangle-rounding-error-ref.png | Bin 0 -> 298 bytes - test/rectangle-rounding-error.c | 69 +++++++++++++++++++++++++++++++++ - 5 files changed, 83 insertions(+), 0 deletions(-) - -commit 33b45c157273fbe8f8a24e5c0a333639b1a51f4a -Author: Billy Biggs -Date: Fri Aug 19 14:42:57 2005 +0000 - - No need to include cairo-pdf.h. - - ChangeLog | 4 ++++ - test/pixman-rotate.c | 1 - - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit 3ec312f7289192cca3ce71d8bafee27f49cf2aa2 -Author: Carl Worth -Date: Fri Aug 19 14:37:42 2005 +0000 - - Fix for bug #4137: - Fix to round properly. - - ChangeLog | 7 +++++++ - src/cairo-fixed.c | 2 +- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit 1f68f77a10e0d93e2a73000faa1bb0097c8b056a -Author: Owen Taylor -Date: Fri Aug 19 14:05:14 2005 +0000 - - Ignore really small fonts, since size zero fonts give xpdf fits. (#2938) - - ChangeLog | 6 ++++++ - src/cairo-pdf-surface.c | 8 ++++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -commit 9d0211b2632e3a0c83331a037efd7670c91b79cd -Author: Carl Worth -Date: Fri Aug 19 13:00:23 2005 +0000 - - Fix to actually test scaled_font->status instead of just having a comment that claims to test it. Thanks to Behdad Esfahbod . - - ChangeLog | 7 +++++++ - src/cairo-font.c | 3 ++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 8eb912577b51c9feb7c078620b42f8fa858e02b0 -Author: Owen Taylor -Date: Fri Aug 19 12:55:00 2005 +0000 - - We need the call to fixup_unbounded when we optimize the RENDER operator to XCopyArea as well. - - ChangeLog | 6 ++++++ - src/cairo-xlib-surface.c | 23 ++++++++++++----------- - 2 files changed, 18 insertions(+), 11 deletions(-) - -commit 7468ed35a1c2607bd305caa93c5f9bf9c9e0be18 -Author: Carl Worth -Date: Fri Aug 19 12:08:42 2005 +0000 - - Fixes for a general problem of which bug #4094 was a specific instance: - Don't change the status value if it already holds an error. This avoids destroying "first error" information and also avoids attempting to write read-only data, (eg. from nil objects). - Don't set an error on the same object if it is in an error state to begin with, just return immediately. This is intended to reduce (eventual) error prints to the first cause of an error for any given object, instead of a continual spew. - - ChangeLog | 51 +++++++++ - src/cairo-font.c | 11 +- - src/cairo-pattern.c | 10 ++- - src/cairo-surface.c | 18 ++-- - src/cairo-win32-font.c | 4 +- - src/cairo.c | 267 +++++++++++++----------------------------------- - 6 files changed, 142 insertions(+), 219 deletions(-) - -commit 2b72a4eee80e73f0553779a281e6ef5f0587519e -Author: Carl Worth -Date: Fri Aug 19 12:02:14 2005 +0000 - - Fix for bug #2729: - Adjust negative offsets up to their equivalent positive value. Add error checking for dash values, (must each be non-negative and must not be all zero). - Add documentation. - Add new CAIRO_STATUS_INVALID_DASH. - Add dash-offfset-negative test from Owen. - churn - - ChangeLog | 20 +++++++ - doc/public/tmpl/cairo.sgml | 5 ++- - src/cairo-gstate.c | 45 +++++++++++++--- - src/cairo.c | 35 ++++++++++++- - src/cairo.h | 9 +++- - test/.cvsignore | 1 + - test/Makefile.am | 4 ++ - test/dash-offset-negative-ref.png | Bin 0 -> 155 bytes - test/dash-offset-negative.c | 99 +++++++++++++++++++++++++++++++++++++ - 9 files changed, 203 insertions(+), 15 deletions(-) - -commit a2e798b5a126a0aaf7043b817120986889538acf -Author: Kristian Høgsberg -Date: Fri Aug 19 10:36:43 2005 +0000 - - Add this missing fuction. - Document this funtion. - - ChangeLog | 8 ++++++++ - src/cairo-pdf-surface.c | 10 ++++++++++ - src/cairo-ps-surface.c | 21 +++++++++++++++++++++ - 3 files changed, 39 insertions(+), 0 deletions(-) - -commit b626dff5b9783ba8916365478c583551d7d97a23 -Author: Carl Worth -Date: Fri Aug 19 07:39:47 2005 +0000 - - Fix for bug #3915: - Add new NULL_POINTER nil pattern. - Check for surface == NULL and return a nil pattern. - Verify that the above fix works. - - ChangeLog | 12 ++++++++++++ - src/cairo-pattern.c | 14 ++++++++++++++ - test/nil-surface.c | 40 ++++++++++++++++++++++++++++++++++++++-- - 3 files changed, 64 insertions(+), 2 deletions(-) - -commit 435fb3c65f3edd7687a332f274545abf7e601965 -Author: Carl Worth -Date: Thu Aug 18 23:10:37 2005 +0000 - - Fix for bug #4088: - New function to return the current nil pattern depending on the status. - Add missing early bailout on surface->status with error propagation to the pattern. - Related cleanups for cairo_pattern_t: - Don't check other->status since this is a static function. - Add missing early bailout on other->status. - Cleanup identifier names. - Track rename of nil patterns. - Don't call _cairo_error for pre-existing errors. - Take care to initialize some fields to that _cairo_pattern_release_surface will work even after an error. - Track rename of cairo_solid_pattern_nil to cairo_pattern_nil. - New test to ensure that a file-not-found error will propagate from a surface, through a pattern, and onto a cairo_t. - - ChangeLog | 48 +++++++++++++++++++ - src/cairo-pattern.c | 113 +++++++++++++++++++++++---------------------- - src/cairo.c | 2 +- - src/cairoint.h | 2 +- - test/.cvsignore | 1 + - test/Makefile.am | 2 + - test/nil-surface-ref.png | Bin 0 -> 107 bytes - test/nil-surface.c | 73 +++++++++++++++++++++++++++++ - 8 files changed, 184 insertions(+), 57 deletions(-) - -commit 0e56f2ea0acb1f5359294b5da5f60b05673d75e3 -Author: Carl Worth -Date: Thu Aug 18 22:43:39 2005 +0000 - - Suppress a pthread initialization error now that tests are linked with -lpthread. - - ChangeLog | 5 +++++ - test/.valgrind-suppressions | 11 +++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit 45cea5efc8b16a9645e72b722353cc27a009af13 -Author: Carl Worth -Date: Thu Aug 18 22:31:04 2005 +0000 - - Fix documentation comment to use & in place of &. - - ChangeLog | 5 +++++ - src/cairo-pattern.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit d809e829806c68b87939e6598986d45cbd3862b9 -Author: Billy Biggs -Date: Thu Aug 18 19:13:06 2005 +0000 - - Special case alpha values of 0 and 0xff. (fbCompositeSrc_8888x8888mmx): Add an MMX implementation for a common operation when using pixman. - Prototype for the new function. - Call the new function where appropriate. - - pixman/ChangeLog | 12 +++++++ - pixman/src/fbmmx.c | 80 +++++++++++++++++++++++++++++++++++++++++++++------ - pixman/src/fbmmx.h | 12 +++++++ - pixman/src/fbpict.c | 16 ++++++++-- - 4 files changed, 108 insertions(+), 12 deletions(-) - -commit f5afeec18a95b75102087abbf7497a45ff6d80c6 -Author: Billy Biggs -Date: Thu Aug 18 18:46:30 2005 +0000 - - Special case projective transforms so we can avoid doing the expensive 64-bit math. Unroll the bilinear interpolation loops for an extra boost. - - pixman/ChangeLog | 6 ++ - pixman/src/fbcompose.c | 235 ++++++++++++++++++++++++++++++++---------------- - 2 files changed, 163 insertions(+), 78 deletions(-) - -commit 5932a501ca5d8b3e4e60c77dac9a8af2c7943dd7 -Author: Owen Taylor -Date: Thu Aug 18 17:22:23 2005 +0000 - - Fix tests to just disable FreeType if a too-old FreeType is found, rather than erroring out. (#2298) - Reviewed by: krh - - ChangeLog | 7 +++++++ - configure.in | 38 ++++++++++++++++++++++---------------- - 2 files changed, 29 insertions(+), 16 deletions(-) - -commit c1b5a19624a850885996a6e0778098e77c0fd683 -Author: Owen Taylor -Date: Thu Aug 18 17:19:54 2005 +0000 - - Fix offset passed in for source patterns. (#2333, Tim Rowley) - Fix font to Vera Sans rather than "Sans" - - ChangeLog | 7 +++++++ - src/cairo-xlib-surface.c | 18 +++++++++--------- - test/.cvsignore | 1 + - test/text-pattern-ref.png | Bin 2869 -> 2728 bytes - test/text-pattern.c | 9 ++++++--- - 5 files changed, 23 insertions(+), 12 deletions(-) - -commit 8f93bcfa47fbdfd20949d09ed677eb5e4d90b12b -Author: Carl Worth -Date: Thu Aug 18 17:11:42 2005 +0000 - - Update the roadmap. Remove difficulty rating from completed tasks. Note that PostScript/PDF is (grudgingly) done as far as 1.0 is concerned, but there is more work to completing this that is slipped beyond 1.0. Note that the deadlock bug is fixed as of 0.9.2. Update who is working on what for performance. Add some new detail for post-1.0 PostScript/PDF work. Slip the overlapping source/dest Render workaround past 1.0. - - ChangeLog | 10 ++++++++ - ROADMAP | 73 ++++++++++++++++++++++++++++++++++++++++++------------------ - 2 files changed, 61 insertions(+), 22 deletions(-) - -commit 16f66dc31499afbf64e319562f01aac96edae52e -Author: Owen Taylor -Date: Thu Aug 18 16:22:23 2005 +0000 - - Add a test for bug #2333 (Tim Rowley) - - ChangeLog | 4 ++ - test/Makefile.am | 3 ++ - test/text-pattern-ref.png | Bin 0 -> 2869 bytes - test/text-pattern.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 81 insertions(+), 0 deletions(-) - -commit 31341327bfa171845ec3e921151cee6f861c2da8 -Author: Owen Taylor -Date: Thu Aug 18 15:50:36 2005 +0000 - - Implement new equations for CLEAR and SOURCE CLEAR: (mask IN clip) ? 0 : dest SOURCE: (mask IN clip) ? src : dest That behave more like what people expect. - CLEAR and SOURCE are now bounded. - Assert that SOURCE and CLEAR aren't passed to these functions. - Assert that SOURCE and CLEAR aren't passed to these functions when there is a mask. - Do fixups for SOURCE and CLEAR as well as unbounded operators, since in the absence of a mask, we need SOURCE to work correctly (don't care about CLEAR) - _cairo_ft_font_show_glyphs) Consistently use CLEAR/TRANSPARENT (source doesn't matter) rather than SOURCE/TRANSPARENT when clearing rectangles. - src/cairo-xlib-surface.c src/cairo-surface.c: Use IN rather than SOURCE as an example of an unbounded operator in docs. - Remove CLEAR/SOURCE columns since they are no longer unbounded. - test/operator-clear.c test/operator-source Makefile.am: Add targetted tests of CLEAR/SOURCE. - - ChangeLog | 38 ++++++ - src/cairo-font.c | 5 + - src/cairo-ft-font.c | 4 +- - src/cairo-gstate.c | 219 +++++++++++++++++++++++++--------- - src/cairo-image-surface.c | 4 +- - src/cairo-surface.c | 14 ++- - src/cairo-xlib-surface.c | 6 +- - test/.cvsignore | 2 + - test/Makefile.am | 6 + - test/clip-operator-ref.png | Bin 38336 -> 37330 bytes - test/operator-clear-ref.png | Bin 0 -> 4992 bytes - test/operator-clear.c | 214 +++++++++++++++++++++++++++++++++ - test/operator-source-ref.png | Bin 0 -> 19957 bytes - test/operator-source.c | 253 +++++++++++++++++++++++++++++++++++++++ - test/unbounded-operator-ref.png | Bin 14178 -> 11937 bytes - test/unbounded-operator.c | 4 +- - 16 files changed, 706 insertions(+), 63 deletions(-) - -commit ff9654e677a916da7a3fcc97ac0547f128e71436 -Author: Carl Worth -Date: Thu Aug 18 14:34:10 2005 +0000 - - Fix to not leak surface->cgImage on out-of-memory (thanks to Josh Aas ). - - ChangeLog | 7 +++++++ - src/cairo-quartz-surface.c | 4 ++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit a82cf0eb7bdfb7f500c1652f6b9635a94e830289 -Author: Carl Worth -Date: Thu Aug 18 09:46:20 2005 +0000 - - Fix to not right-shift a negative number when called with an argument of 0. - - ChangeLog | 5 +++++ - src/cairo-fixed.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 7a9d2070402d75356ffee258517c5434dc232000 -Author: Carl Worth -Date: Thu Aug 18 09:19:21 2005 +0000 - - Disable not-yet-implemented quartz stuff. - - ChangeLog | 5 +++++ - test/cairo-test.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 93e521ce1976cef6978fcbccf78b3ed98a544d51 -Author: Billy Biggs -Date: Thu Aug 18 08:28:08 2005 +0000 - - Add an autoconf-generated version file to advertise what cairo version the manual was generated for. Idea taken from the GTK+ documentation. - Include the version number, along with the title, in a bookinfo section. - Add the version.xml.in to the dist. - Ignore version.xml. - Generate doc/public/version.xml. - - ChangeLog | 15 +++++++++++++++ - configure.in | 1 + - doc/public/.cvsignore | 4 +--- - doc/public/Makefile.am | 3 +++ - doc/public/cairo-docs.xml | 8 +++++++- - doc/public/version.xml.in | 1 + - 6 files changed, 28 insertions(+), 4 deletions(-) - -commit 3422d8760f54e403bda12aa58dc5256bb132ebf3 -Author: Carl Worth -Date: Thu Aug 18 08:22:29 2005 +0000 - - Clear setgid bit on regular files prior to tarring up a release. - - ChangeLog | 5 +++++ - Makefile.am | 19 +++++++++++++------ - 2 files changed, 18 insertions(+), 6 deletions(-) - -commit 24ba58e7f56a45f09501c9f58d177633dfda1ecd -Author: Billy Biggs -Date: Thu Aug 18 06:01:40 2005 +0000 - - For the source operator, the output should be cleared if the mask is zero. This fixes the MMX code to match the fbcompose code. - Fix a logic mistake that caused the MMX functions not to be used in many cases. - - pixman/ChangeLog | 9 +++++++++ - pixman/src/fbmmx.c | 12 ++++++++++++ - pixman/src/fbpict.c | 7 +++---- - 3 files changed, 24 insertions(+), 4 deletions(-) - -commit 260e8abfe0903b3b2955e2397e974308a1ca40bd -Author: Kristian Høgsberg -Date: Wed Aug 17 21:19:30 2005 +0000 - - Fix typo in freetype configure check. - - ChangeLog | 4 ++++ - configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 4ebe0b63cc5487661c8016ef9f80aa7890772517 -Author: Billy Biggs -Date: Wed Aug 17 21:14:02 2005 +0000 - - Only mangle exported symbols. This is sufficient and makes debugging a lot easier. - - pixman/ChangeLog | 5 + - pixman/src/pixman-remap.h | 274 +++------------------------------------------ - 2 files changed, 19 insertions(+), 260 deletions(-) - -commit 75b0541bdfb77ef456e09b1b92ccb0d2e9245ae3 -Author: Kristian Høgsberg -Date: Wed Aug 17 15:57:45 2005 +0000 - - Try to use pkg-config to detect freetype2, then fall back to the existing freetype-config based check. - - ChangeLog | 5 +++++ - cairo.pc.in | 4 ++-- - configure.in | 56 +++++++++++++++++++++++++++++++++++++------------------- - 3 files changed, 44 insertions(+), 21 deletions(-) - -commit 639680e5fe2592c76d19e8102919ef3062371883 -Author: Carl Worth -Date: Wed Aug 17 09:51:09 2005 +0000 - - Fixes for bug #4110: - Don't call _cairo_ft_unscaled_font_init_key in the from_face case, just clear filename and id instead. Initialize unscaled->base first so that initialization order matches the structure declaration order. - Fix to accept a NULL string and hash it identically to a zero-length string. - Add a test that calls cairo_ft_font_create_for_ft_face to demonstrate bug #4110. - - ChangeLog | 18 ++++++- - src/cairo-cache.c | 2 +- - src/cairo-ft-font.c | 28 +++++----- - test/.cvsignore | 1 + - test/Makefile.am | 5 ++ - test/ft-font-create-for-ft-face.c | 102 +++++++++++++++++++++++++++++++++++++ - 6 files changed, 140 insertions(+), 16 deletions(-) - -commit f5f21a768d71f2a6897b5290f74fd41116c43966 -Author: Billy Biggs -Date: Tue Aug 16 21:04:02 2005 +0000 - - Fix the filter-nearest-offset test to actually test CAIRO_FILTER_NEAREST. - - ChangeLog | 5 +++++ - test/filter-nearest-offset.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit c892ee36d94532a395dc11d4d954611ce4f353c7 -Author: Billy Biggs -Date: Tue Aug 16 19:54:05 2005 +0000 - - Fix a typo in the last commit. - - pixman/ChangeLog | 4 ++++ - pixman/src/Makefile.am | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 0398085a6fb2e7bddba6529e7a205781347759d1 -Author: Billy Biggs -Date: Tue Aug 16 18:38:38 2005 +0000 - - Split the MMX code into a separate libtool library to avoid applying the MMX CFLAGS to all of the pixman code. Idea and code from Owen Taylor. - Update the mangling header file to include the MMX symbols. - - pixman/ChangeLog | 9 +++++++++ - pixman/src/Makefile.am | 7 +++++-- - pixman/src/pixman-remap.h | 21 +++++++++++++++++++++ - 3 files changed, 35 insertions(+), 2 deletions(-) - -commit 18f3357c99fdecb3eede41f24fbd086ab4700677 -Author: Owen Taylor -Date: Tue Aug 16 18:22:16 2005 +0000 - - src/cairoint.h: Split out a couple of useful utility functions. - src/cairo-clip.c src/cairo-gstate.c: Use them. - Move code to fill a pixman_region16_t to here. - Document. - Use _cairo_surface_fill_region(). - Add a return status, use regions to simplify. - src/cairoint.h - Handle the return value from _cairo_surface_composite_fixup_unbounded(). - src/cairo-surface.c src/cairoint.h (_cairo_surface_composite_shape_fixup_unbounded): Add a variant of _cairo_surface_composite_fixup_unbounded() to avoid creating a dummy cairo_surface_attributes_t. - Use _cairo_surface_composite_shape_fixup_unbounded(). - Call _cairo_surface_composite_shape_fixup_unbounded(), since the source might still be restricted, even though the mask is unbounded. - Restore the rectangle optizations when drawing with unbounded operators by adding a clear for the extra area after drawing the rectangles. - - ChangeLog | 44 ++++++ - src/Makefile.am | 1 + - src/cairo-clip.c | 47 ++------ - src/cairo-gstate.c | 144 ++++++++++----------- - src/cairo-image-surface.c | 90 +++++++------ - src/cairo-region.c | 83 ++++++++++++ - src/cairo-surface.c | 322 +++++++++++++++++++++++++++++++-------------- - src/cairo-xlib-surface.c | 84 ++++++------ - src/cairoint.h | 50 ++++++-- - 9 files changed, 565 insertions(+), 300 deletions(-) - -commit ae15c7d32166b6408ee7e1dc8a817a4c510ae3c3 -Author: Billy Biggs -Date: Tue Aug 16 16:52:35 2005 +0000 - - Add a check for the MMX intrinsics used by pixman. gcc >= 3.4 is required. - - ChangeLog | 5 +++++ - configure.in | 34 ++++++++++++++++++++++++++++++++++ - 2 files changed, 39 insertions(+), 0 deletions(-) - -commit 9ae7d8a13b065fc44966eceb28976aa2b009e46b -Author: Billy Biggs -Date: Tue Aug 16 16:50:25 2005 +0000 - - Port MMX code from xserver to pixman. - Add an fbpict.c ported from the latest in xserver/fb, including hooks to the MMX code where appropriate. This replaces the old ic.c file. - Replaced by fbpict.c. - Move some X server macros from fbpict.c up into icint.h to keep the diff small. - Add fbmmx and fbpict.c, remove ic.c. - Add a check for the MMX intrinsics. gcc >= 3.4 is required. - - pixman/ChangeLog | 53 + - pixman/configure.in | 32 + - pixman/src/Makefile.am | 10 +- - pixman/src/fbmmx.c | 2503 ++++++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/fbmmx.h | 228 +++++ - pixman/src/fbpict.c | 1904 ++++++++++++++++++++++++++++++++++++ - pixman/src/ic.c | 1687 -------------------------------- - pixman/src/icint.h | 30 + - 8 files changed, 4758 insertions(+), 1689 deletions(-) - -commit a2a89e858af70262de276c8568baabf91e00dbb2 -Author: Carl Worth -Date: Tue Aug 16 16:41:10 2005 +0000 - - Rename cairo_printf_format to CAIRO_PRINTF_FORMAT. Fix syntax error in the case of an empty definition. (Thanks to Vladimir Vukicevic). - - ChangeLog | 6 ++++++ - src/cairoint.h | 7 +++---- - 2 files changed, 9 insertions(+), 4 deletions(-) - -commit b7737163bc8c8d60967e025b71d30f9827d45801 -Author: Kristian Høgsberg -Date: Sun Aug 14 19:25:05 2005 +0000 - - Zero out 'entry', not 'unscaled' when evicting face from cache. - - ChangeLog | 5 +++++ - src/cairo-ft-font.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 52c5d89ae58e50a788f6d1ab79e9159c944c426e -Author: Kristian Høgsberg -Date: Sat Aug 13 17:38:23 2005 +0000 - - Fix a mismatch between printf arguments and format string (thanks to Adrian Johnson). - Add macro to mark printf like functions. - - ChangeLog | 9 +++++++++ - src/cairo-ps-surface.c | 4 ++-- - src/cairoint.h | 10 +++++++++- - 3 files changed, 20 insertions(+), 3 deletions(-) - -commit 28958e368cfe50198188407da10c66510d9c9515 -Author: Owen Taylor -Date: Sat Aug 13 08:12:17 2005 +0000 - - Change docREEL back to doc. (Found by Kjartan Maraas) - - ChangeLog | 5 +++++ - Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 0a2a4045daf9cdd9952918499152f88c6387709a -Author: Carl Worth -Date: Sat Aug 13 05:46:40 2005 +0000 - - Fix typo ('internal' should have been 'external'). - - ChangeLog | 4 ++++ - NEWS | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 2ebf274db4a21f11739ff6603a47fdf49571e3e9 -Author: Carl Worth -Date: Sat Aug 13 05:33:21 2005 +0000 - - Increment CAIRO_VERSION to 0.9.3 after tagging RELEASE_0_9_2. - Slight rewording of announcement email. - - ChangeLog | 8 ++++++++ - Makefile.am | 8 ++++++-- - configure.in | 2 +- - 3 files changed, 15 insertions(+), 3 deletions(-) - -commit b3a4f29f830dbcb57ef3d1e4c3c140126752043b -Author: Carl Worth -Date: Sat Aug 13 05:00:20 2005 +0000 - - Added notes for release 0.9.2. - Increment CAIRO_VERSION to 0.9.2 and libtool versioning to 3:1:1. - Remove some more 'snapshot' language. Make it more clear that the libtool versioning numbers need to be updated. - - ChangeLog | 20 ++++++------ - NEWS | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- - RELEASING | 10 ++---- - configure.in | 8 ++-- - 4 files changed, 99 insertions(+), 27 deletions(-) - -commit 3f24b949a070aebaeaa465ccd09604bda0be717b -Author: Carl Worth -Date: Sat Aug 13 04:22:46 2005 +0000 - - Fix unterminated comment that eliminated cairo_pattern_add_color_stop_rgba. - - ChangeLog | 5 +++++ - src/cairo-pattern.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit fd8a70f4b6b919682f2609e0dda08aa1564d8ccf -Author: Carl Worth -Date: Sat Aug 13 04:17:36 2005 +0000 - - Add missing notes on soname and user-space locking for cairo_set_source() to the 0.9.0 release notes. - Document cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgba, cairo_pattern_set_matrix, and cairo_pattern_get_matrix. - Add note on user-space locking to the documentation for cairo_set_source(). - - ChangeLog | 18 +++++++++ - NEWS | 34 +++++++++++++++++- - src/cairo-pattern.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++-- - src/cairo.c | 5 +++ - 4 files changed, 148 insertions(+), 5 deletions(-) - -commit 620de68bea6fa4e287d565b293202114200deec4 -Author: Carl Worth -Date: Sat Aug 13 03:26:18 2005 +0000 - - Turn the mutex code back on. It looks like the deadlocks have disappeared as of the cairo_scaled_font_map patch from two days ago. - Setup an automake conditional for the HAVE_PTHREAD case. - Link all tests with -lpthread if available, so that we can get some testing of cairo with mutexes turned on. - - ChangeLog | 16 ++++++++++++++++ - configure.in | 7 ++----- - src/cairoint.h | 41 +++++++++-------------------------------- - test/Makefile.am | 4 ++++ - 4 files changed, 31 insertions(+), 37 deletions(-) - -commit 615a32107d8174b71b0a7cbb504d79913a6e159d -Author: Carl Worth -Date: Sat Aug 13 02:21:07 2005 +0000 - - Minor, cosmetic changes: - Reowrd comment to be more clear. - Prefer return of address of base field rather than cast. - Whitespace fix. - - ChangeLog | 13 +++++++++++++ - src/cairo-ft-font.c | 7 ++++--- - 2 files changed, 17 insertions(+), 3 deletions(-) - -commit a8b6ad3e88e5b13434ab4fbac1e86e6a9076e636 -Author: Carl Worth -Date: Sat Aug 13 02:02:39 2005 +0000 - - Shuffle functions around to put them in a sane order within the file. There should be no functional change here. - - ChangeLog | 11 ++ - src/cairo-ft-font.c | 367 ++++++++++++++++++++++++-------------------------- - 2 files changed, 187 insertions(+), 191 deletions(-) - -commit 47d5bbeafc3a763988b66d8dbffff5426655213d -Author: Carl Worth -Date: Sat Aug 13 01:38:55 2005 +0000 - - Add hash_entry field to cairo_scaled_font_t so that it can be hashed. - Convert the font_face/matrix/ctm/options => cairo_scaled_font_t mapping from a two-layer cairo-cache.c implementation to a single cairo-hash.c implementation backed by a simple array for the secondary cache. - Reviewed by: keithp - - ChangeLog | 22 ++ - src/cairo-font.c | 592 ++++++++++++++++++++++++------------------------------ - src/cairoint.h | 6 +- - 3 files changed, 288 insertions(+), 332 deletions(-) - -commit be9698e6ada908a09a306dd0a2c7d824ffc824c8 -Author: Behdad Esfahbod -Date: Sat Aug 13 01:17:06 2005 +0000 - - Move checks for invalid number of points before the calls that use the points. - - ChangeLog | 6 ++++++ - src/cairo-path-data.c | 14 +++++++------- - 2 files changed, 13 insertions(+), 7 deletions(-) - -commit c5ac41755d1df2083b86dcf8b25f96c3aa7d22ed -Author: Behdad Esfahbod -Date: Sat Aug 13 01:04:55 2005 +0000 - - Fix conversion to short, to get a uniform range even for 0xffff. In other words, a color component of of (1.0 - epsilon) would convert to 0xffff, not 0xfffe. - - ChangeLog | 6 ++++++ - src/cairo-color.c | 28 +++++++++------------------- - 2 files changed, 15 insertions(+), 19 deletions(-) - -commit 20f92f48917393631c87d5f633a1055920b044a9 -Author: Behdad Esfahbod -Date: Sat Aug 13 00:20:45 2005 +0000 - - Generate sh1sum instead of md5sum. Use gpg to sign it. You need gpg set up. - - ChangeLog | 10 ++++++++-- - Makefile.am | 40 +++++++++++++++++++++++++++------------- - RELEASING | 10 ++++++---- - 3 files changed, 41 insertions(+), 19 deletions(-) - -commit a201637c7224b921948b79e4244dcc4f99f76cdf -Author: Carl Worth -Date: Fri Aug 12 23:50:17 2005 +0000 - - Move tag from an instruction in RELEASING to an automated step at the end of release-publish. - - ChangeLog | 6 ++++++ - Makefile.am | 2 ++ - RELEASING | 9 +++------ - 3 files changed, 11 insertions(+), 6 deletions(-) - -commit 21dff93be5fd8fff1e4de96afaf8ff12cb7a850a -Author: Behdad Esfahbod -Date: Fri Aug 12 21:35:31 2005 +0000 - - Check that the micro component of the version number is even. - Fixed the pattern to find all public header files. - - ChangeLog | 9 ++++++++- - Makefile.am | 16 ++++++++++++++-- - RELEASING | 6 ++---- - 3 files changed, 24 insertions(+), 7 deletions(-) - -commit 027157feb6a3761eca1edb4eb547ca07081c33e2 -Author: Billy Biggs -Date: Thu Aug 11 21:07:26 2005 +0000 - - Fix to be correct for arbitrary xDst values. - - pixman/ChangeLog | 5 ++++ - pixman/src/icrect.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++---- - 2 files changed, 63 insertions(+), 6 deletions(-) - -commit 56d299d277f5a31f72d4a203673fbb026b7bb33f -Author: Carl Worth -Date: Thu Aug 11 16:52:43 2005 +0000 - - Fix inverted sense of assert statement which led to lots of unpleasant crashes. - - ChangeLog | 5 +++++ - doc/public/cairo-sections.txt | 5 +++++ - src/cairo-font.c | 2 +- - 3 files changed, 11 insertions(+), 1 deletions(-) - -commit ba9cb14cdf7d89132232aa3121f8e60d5982dc34 -Author: Carl Worth -Date: Thu Aug 11 14:59:27 2005 +0000 - - Add hash_entry field to cairo_font_face_t so that it can (optionally) be hashed. - Complete the remainder of the simple -> toy renaming. Convert the family/slant/weight -> cairo_toy_font_face_t mapping to use cairo-hash.c rather than cairo-cache.c. - - ChangeLog | 16 +++ - src/cairo-font.c | 360 ++++++++++++++++++++++++------------------------------ - src/cairoint.h | 4 +- - 3 files changed, 178 insertions(+), 202 deletions(-) - -commit d1dbd031cca9fbef2381e98e626e75c357dd4f53 -Author: Carl Worth -Date: Thu Aug 11 14:49:07 2005 +0000 - - Move implementation of filename/id => cairo_ft_unscaled_font_t from cairo-cache.c to cairo-hash.c, with new cairo_ft_unscaled_font_map. - Add cairo_unscaled_font->hash_entry so that unscaled fonts can live in hash tables. - - ChangeLog | 46 ++++++ - src/cairo-ft-font.c | 435 ++++++++++++++++++++++++++------------------------ - src/cairoint.h | 1 + - 3 files changed, 273 insertions(+), 209 deletions(-) - -commit 34c9e242c85cfe5cb2b53182bea07513f38c9c78 -Author: Carl Worth -Date: Thu Aug 11 06:35:20 2005 +0000 - - Re-order cairo_scaled_font->font_face parameter to maintain the font_face,font_matrix,ctm,options order that prevails throughout the implementation. Add font_face parameter to _cairo_scaled_font_init. - Remove const qualifier from toy_face parameter to creat_toy, as these functions may reference the font face. Track addition of font_face parameter to _cairo_scaled_font_init. - Implement font_face parameter to _cairo_scaled_font_init, moving the reference of the font_face from _cairo_inner_font_cache_create_entry. - Add a font_face parameter in addition to the unscaled_font parameter. - Track new font_face parameter to _cairo_ft_scaled_font_create. - Whitespace touchup. - Reviewed by: otaylor - - ChangeLog | 31 ++++++++++++++++++++++++++++ - src/cairo-atsui-font.c | 4 +- - src/cairo-font.c | 7 ++--- - src/cairo-ft-font.c | 52 +++++++++++++++++++++++++++-------------------- - src/cairo-win32-font.c | 11 +++++++-- - src/cairoint.h | 5 ++- - 6 files changed, 77 insertions(+), 33 deletions(-) - -commit b25c1203d8d313d9b44f29e4b0d1329dddd42dbe -Author: Billy Biggs -Date: Wed Aug 10 22:03:00 2005 +0000 - - Add support for filling 1bpp images (used to clear A1 masks). - - pixman/ChangeLog | 5 +++++ - pixman/src/icrect.c | 21 +++++++++++++++++++++ - 2 files changed, 26 insertions(+), 0 deletions(-) - -commit 58c51ff1378ce749b78a2edac622100c8873efb8 -Author: Billy Biggs -Date: Wed Aug 10 21:12:10 2005 +0000 - - Update to match the output from libpixman. - - ChangeLog | 5 +++++ - test/clip-operator-ref.png | Bin 37486 -> 38336 bytes - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 910d824b3df8cc72a52c44b1177045d91b83051b -Author: Billy Biggs -Date: Wed Aug 10 21:10:11 2005 +0000 - - Port fbcompose.c from xserver into pixman. Add #defines for gradients, convolution filters, and indexed colour formats to keep the patch small. Use pixman regions instead of X server regions as appropriate. - Remove iccompose.c, replaced by fbcompose.c. - Add a slightly-trimmed version of fbpict.h from xserver/fb to make the port smaller and cleaner. - Use the redundant fbpict.h defines and add in the struct for indexed colour support. - Remove defines now in fbpict.h. - Add some constants and types required by fbcompose.c - Add fbcompose.c and fbpict.h, remove iccompose.c. - reviewed by: cworth and Jeff Muizelaar at various stages - - pixman/ChangeLog | 89 + - pixman/src/Makefile.am | 3 +- - pixman/src/fbcompose.c | 3617 ++++++++++++++++++++++++++++++++++++ - pixman/src/fbpict.h | 356 ++++ - pixman/src/ic.c | 46 +- - pixman/src/iccompose.c | 2837 ---------------------------- - pixman/src/icimage.h | 35 +- - pixman/src/pixman-xserver-compat.h | 16 + - 8 files changed, 4082 insertions(+), 2917 deletions(-) - -commit 0b991f9633b2b2285132c7100aea43dcb15c7ca8 -Author: Carl Worth -Date: Wed Aug 10 20:25:57 2005 +0000 - - Thanks to Olivier Andrieu: - Add mention of cairo_get_antialias. Fix to mention cairo_surface_flush by its correct name, (rather than the non-existent cairo_flush). - - ChangeLog | 8 ++++++++ - NEWS | 7 ++++--- - 2 files changed, 12 insertions(+), 3 deletions(-) - -commit ce5a493c70e530ee5aaec9acafb63d871d79d583 -Author: Carl Worth -Date: Wed Aug 10 16:04:26 2005 +0000 - - Fix id to be cairo rather than libglade. (Thanks to Christian Biesinger). - - ChangeLog | 5 +++++ - doc/public/cairo-docs.xml | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit ae63b95211f32f169af37dc03956f9d23fd6794d -Author: Carl Worth -Date: Wed Aug 10 15:58:25 2005 +0000 - - Augment existing CAIRO_VERSION_MAJOR/MINOR/MICRO and CAIRO_VERSION_STRING with CAIRO_VERSION_ENCODE and CAIRO_VERSION. Add functions for run-time access: - cairo_version cairo_version_string - - ChangeLog | 11 +++++++++++ - src/cairo.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 16 ++++++++++++++++ - 3 files changed, 69 insertions(+), 0 deletions(-) - -commit bdd8cbddeedec584fc859c5c092ce67c3a1830eb -Author: Carl Worth -Date: Wed Aug 10 14:30:15 2005 +0000 - - From Travis Spencer : - Fix typo causing a syntax error. - - ChangeLog | 8 ++++++++ - src/cairo-xcb-surface.c | 4 ++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit eacc1e95a536cbdbf0fe7a09cfa9fb519b401b50 -Author: Keith Packard -Date: Wed Aug 10 13:32:06 2005 +0000 - - Place private include directives before CAIRO_CFLAGS in case pixman remains installed in the system. - - ChangeLog | 6 ++++++ - test/Makefile.am | 4 ++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit a05fcce1650e4b4b360056c072e09fdd7b193f5b -Author: Keith Packard -Date: Wed Aug 10 13:27:48 2005 +0000 - - Union with empty rectangle should yield SUCCESS, not FAILURE - - pixman/ChangeLog | 5 +++++ - pixman/src/pixregion.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 0fc4192104fe7f3e147fe9a80eada779fd0265fc -Author: Carl Worth -Date: Wed Aug 10 12:36:51 2005 +0000 - - From Keith Packard , - Build pixman internally as a private part of cairo, with suitable name changes to avoid any visible pixman symbols in the cairo library: - Descend into pixman. - Drop libpixman from Requires. - Don't check for libpixman. Check version of pkg-config and use Requires.private instead of Requires in cairo.pc if possible. Generate pixman Makefiles. - Rip out release-publish target and installation of libpixman.pc. - Add pixman-remap.h. Drop libpixman.la target. - Fix to include config.h rather than ../config.h - This is the cpp magic to rename all pixman functions from the various fb, Fb, INT_pixman, pixman, Render, _Render, or no prefix to _cairo_pixman_ prefixes. - Include pixman-remap.h to get all the cairo-internalized names. - Add -Ipixman/src to get at pixman-remap.h. - - ChangeLog | 36 ++++++ - Makefile.am | 4 +- - cairo.pc.in | 2 +- - configure.in | 18 ++- - pixman/Makefile.am | 57 +-------- - pixman/src/Makefile.am | 8 +- - pixman/src/icint.h | 2 +- - pixman/src/pixman-remap.h | 302 +++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/pixman.h | 3 +- - src/Makefile.am | 4 +- - test/Makefile.am | 1 + - 11 files changed, 364 insertions(+), 73 deletions(-) - -commit bbf0d98a54ca15a7d5ba3f34851a9dd8d9ba07c4 -Author: Vladimir Vukicevic -Date: Wed Aug 10 11:40:11 2005 +0000 - - Additional fix for 0-width/0-height glyphs. - - ChangeLog | 5 +++++ - src/cairo-glitz-surface.c | 6 ++---- - 2 files changed, 7 insertions(+), 4 deletions(-) - -commit 8df9bfecadda5bc98d2fe484f6ea55110ac99b2c -Author: Carl Worth -Date: Wed Aug 10 11:30:45 2005 +0000 - - Change release instructions to indicate new odd-micro version for in-progress development, and even-micro for released versions. Do a bit of snapshot->release renaming. - - ChangeLog | 9 +++++++++ - Makefile.am | 4 ++-- - RELEASING | 41 ++++++++++++++++++++++------------------- - 3 files changed, 33 insertions(+), 21 deletions(-) - -commit 82fbb9c381adf9e7b7b6c5fac52c175b8859e419 -Author: Carl Worth -Date: Wed Aug 10 11:08:38 2005 +0000 - - Patch from Behdad Esfahbod : - Update to use AC_INIT and AM_INIT_AUTOMAKE in recommended ways. Add support for substituting CAIRO_VERSION_MAJOR/MINOR/MICRO into generated headers. - Add CAIRO_VERSION_MAJOR/MINOR/MICRO and CAIRO_VERSION_STRING which are generated by configure. - - ChangeLog | 11 +++++++++++ - configure.in | 31 ++++++++++++++++++++++--------- - src/cairo-features.h.in | 6 ++++++ - 3 files changed, 39 insertions(+), 9 deletions(-) - -commit 52ec34a157d0d0ef5af49f767a50672b84ebb9e6 -Author: Carl Worth -Date: Wed Aug 10 06:52:40 2005 +0000 - - Add cairo_private to the few pieces of data that were missing it. - - ChangeLog | 6 ++++++ - src/cairo-path-data-private.h | 2 +- - src/cairoint.h | 12 ++++++------ - 3 files changed, 13 insertions(+), 7 deletions(-) - -commit 8042a0d219131acfbeb6ed54b078ad2bc26ccbef -Author: Vladimir Vukicevic -Date: Tue Aug 9 13:42:54 2005 +0000 - - Don't crash on 0-width or 0-height glyphs; also correctly initialize entry->key.base.memory with the image cache image. - Free allocated entry in case of error to avoid leaking memory. - - ChangeLog | 9 +++++++++ - src/cairo-glitz-surface.c | 35 +++++++++++++++++++++++++++++++++-- - src/cairo-xlib-surface.c | 3 +++ - 3 files changed, 45 insertions(+), 2 deletions(-) - -commit cedf233052f8e173c671e614207bd63e2b7add4b -Author: Carl Worth -Date: Tue Aug 9 13:01:14 2005 +0000 - - Add cairo_private to several function prototypes that were missing it. - - ChangeLog | 8 ++++++++ - src/cairo-arc-private.h | 4 ++-- - src/cairo-ft-private.h | 4 ++-- - src/cairo-meta-surface-private.h | 4 ++-- - src/cairoint.h | 26 +++++++++++++------------- - 5 files changed, 27 insertions(+), 19 deletions(-) - -commit a391bb451a9521efa9526fe8acba97f96540d4be -Author: Carl Worth -Date: Tue Aug 9 12:35:09 2005 +0000 - - Note that sane clipping is done now. Add release versions for previously completed items. - Ignore unantialiased-shapes. - - ChangeLog | 7 +++++++ - ROADMAP | 12 +++++------- - test/.cvsignore | 1 + - 3 files changed, 13 insertions(+), 7 deletions(-) - -commit 6ece52cd0572800006d87109e8818c514d5b88ca -Author: Tor Lillqvist -Date: Tue Aug 9 10:05:35 2005 +0000 - - Get cairo_toy_font_face_t type right. - - ChangeLog | 5 +++++ - src/cairo-atsui-font.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 018015d802c170c1578efcdb9efecec08f11ab99 -Author: Carl Worth -Date: Tue Aug 9 09:27:39 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with RELEASE_0_9_0. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 4bec3d6af49f9a720121617819700bc700ba5951 -Author: Carl Worth -Date: Mon Aug 8 21:06:44 2005 +0000 - - Added notes for release 0.9.0. - Increment CAIRO_VERSION to 0.9.0. Increment LT_CURRENT to 2 to mark the beginning of proper soname management. - - ChangeLog | 7 +++++ - NEWS | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 4 +- - 3 files changed, 86 insertions(+), 2 deletions(-) - -commit 9a088c2fad17af0564936a3b88c9d306c72f11de -Author: Carl Worth -Date: Mon Aug 8 21:02:11 2005 +0000 - - Add missing cairo-debug.h which was hold up make distcheck. - - ChangeLog | 5 +++++ - src/Makefile.am | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 4d2b8bddded15662015466046039650c20231bbf -Author: Carl Worth -Date: Mon Aug 8 20:57:13 2005 +0000 - - Fix typo that was holding up make distcheck from working. - - ChangeLog | 5 +++++ - test/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 1278ade2297e027906ca12c7471891a08188b115 -Author: Billy Biggs -Date: Mon Aug 8 18:36:56 2005 +0000 - - Declare _cairo_path_nil as extern. - - ChangeLog | 4 ++++ - src/cairo-path-data-private.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 53444c286ef45fa0054ba6ab94dac11016e9600c -Author: Billy Biggs -Date: Mon Aug 8 18:35:22 2005 +0000 - - Add a new API for disabling antialiasing of shapes drawn by cairo. This is a hint and is not supported by all backends. - Store the antialiasing mode in the gstate and pass it to the backend for trapezoid rendering and for clipping. - Pass the antialiasing parameter down to the backend where appropriate. - Pass the antialiasing parameter down to the backend where appropriate. - Add support for A1 format trapezoid rendering, and remove the _create_mask_image function, creating a temporary image from memory we allocate and clear. - Support A1 masks to disable antialiasing using the RENDER extension when requested. - Support A1 masks to disable antialiasing using the RENDER extension when requested. - Blindly pass through the antialising parameter. - Add the antialiasing parameter but don't support it. - Add a test case and a reference image from the latest libpixman. - Add the new antialiasing disabling API to the docs. - Update progress on a parameter to disable antialiasing. - reviewed by: cworth, otaylor - - ChangeLog | 74 ++++++++++++++++++++++++++ - TODO | 2 +- - doc/public/cairo-sections.txt | 4 +- - doc/public/tmpl/cairo-font.sgml | 10 ---- - doc/public/tmpl/cairo.sgml | 28 ++++++++++ - src/cairo-clip-private.h | 2 + - src/cairo-clip.c | 15 ++++-- - src/cairo-glitz-surface.c | 1 + - src/cairo-gstate-private.h | 1 + - src/cairo-gstate.c | 49 ++++++++++++++---- - src/cairo-image-surface.c | 71 ++++++++++++++----------- - src/cairo-meta-surface-private.h | 3 + - src/cairo-meta-surface.c | 11 +++- - src/cairo-pdf-surface.c | 4 +- - src/cairo-ps-surface.c | 12 +++- - src/cairo-surface.c | 20 +++++-- - src/cairo-xcb-surface.c | 11 ++++- - src/cairo-xlib-surface.c | 22 ++++++-- - src/cairo.c | 40 ++++++++++++++ - src/cairo.h | 46 +++++++++------- - src/cairoint.h | 18 +++++- - test/Makefile.am | 3 + - test/unantialiased-shapes-ref.png | Bin 0 -> 4450 bytes - test/unantialiased-shapes.c | 103 +++++++++++++++++++++++++++++++++++++ - 24 files changed, 450 insertions(+), 100 deletions(-) - -commit 578b45c9032fd00b68fc1709d61e915d74a527c7 -Author: Carl Worth -Date: Mon Aug 8 17:32:24 2005 +0000 - - Ignore clip-operator and unbounded-operator. - - ChangeLog | 4 ++++ - test/.cvsignore | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 8bdad8ffa2962c9dff1e86e9bd131d588a1ebd2f -Author: Carl Worth -Date: Mon Aug 8 15:50:55 2005 +0000 - - Fix gnome-announce-list address. - - ChangeLog | 4 ++++ - RELEASING | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit d51a35543ca405dda788eb6433e6bb30dc3c7cf5 -Author: Owen Taylor -Date: Mon Aug 8 14:27:01 2005 +0000 - - Don't free the glyph if the entry doesn't have a glyph. (Maybe #3909, Carlos Garnacho Parro) - - ChangeLog | 6 ++++++ - src/cairo-xlib-surface.c | 5 +++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit 69f140b654df878b9ba86d61062d235bbebef7a2 -Author: Carl Worth -Date: Mon Aug 8 14:13:50 2005 +0000 - - Add a return value after ASSERT_NOT_REACHED to quiet an anxious compiler. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 8478804d9818deb3a1f86e8e22200c40f83962bf -Author: Owen Taylor -Date: Mon Aug 8 14:11:00 2005 +0000 - - Fix accidentally committed line. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 4 +--- - 2 files changed, 6 insertions(+), 3 deletions(-) - -commit 7caa7cccf2e5aff083d5a88fbace0b24430397de -Author: Kristian Høgsberg -Date: Mon Aug 8 13:50:59 2005 +0000 - - Update doc comment. - - ChangeLog | 5 +++++ - src/cairo-surface.c | 12 +++++------- - 2 files changed, 10 insertions(+), 7 deletions(-) - -commit d4b24dc974bd4298c1ad8d06efc4f3dfea68ee03 -Author: Owen Taylor -Date: Mon Aug 8 13:50:02 2005 +0000 - - Add reference images - - test/clip-operator-ref.png | Bin 0 -> 37486 bytes - test/unbounded-operator-ref.png | Bin 0 -> 14178 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 8f19aaf9a8a60aa2eb86e25946d04f293ed703db -Author: Owen Taylor -Date: Mon Aug 8 13:46:11 2005 +0000 - - Add a function to test whether a cairo_operator_t is bounded (does nothing for 0 src/mask) - cairoint.h: Add a helper function to take clearing areas that are outside the source/mask but are cleared by unbounded operations. - src/cairo-xlib-surface.c (_cairo_xlib_surface_composite): Use _cairo_surface_composite_fixup_unbounded() as needed. - src/cairo-image-surface.c src/cairint.h: Keep track of whether the surface has a clip or not ... we need this for determining when we can bypass an intermediate mask for composite_trapezoids(). - Create an intermediate mask of the right size with pixman_add_trapezoids() and composite that. - When rendering with an unbounded operator, create the intermediate mask ourselves and render with ADD to that, then composite the result. - Create an intermediate surface the size of the extents, render the glyphs to that then composite the results. - Add the size of the glyph - Compute the size of the glyph mask, then use _cairo_surface_composite_fixup_unbounded(). - Use the right mask format. (Unrelated bugfix) - New function taking a drawing function as a parameter to encapsulate shared logic between compositing trapezoid, glyphs, and masks. - Use _cairo_gstate_clip_and_composite(). Also fix extents computations for unbounded operators. - src/cairo-clip.c src/cairo-clip-private.h (_cairo_clip_combine_to_surface): Add the destination as an extra parameter to allow combining to an intermediate surface. - tests/unbounded-operator.c tests/Makefile.am: Add a test for the operation of the 6 unbounded operators against different shapes. - tests/clip-operator.c tests/Makefile.am: Add a test that tests surface clipping with different shapes against all the operators. - Make use OVER like the name and description. With fixed semantics, SOURCE does something different. - - ChangeLog | 60 ++ - src/cairo-clip-private.h | 9 +- - src/cairo-clip.c | 22 +- - src/cairo-ft-font.c | 122 ++++- - src/cairo-gstate.c | 733 ++++++++++++++---------- - src/cairo-image-surface.c | 126 ++++- - src/cairo-surface.c | 151 +++++ - src/cairo-xlib-surface.c | 214 +++++++- - src/cairoint.h | 23 +- - test/Makefile.am | 6 + - test/clip-operator.c | 205 +++++++ - test/composite-integer-translate-over-repeat.c | 2 +- - test/unbounded-operator.c | 201 +++++++ - 13 files changed, 1520 insertions(+), 354 deletions(-) - -commit 31ef9a80e95c5b84439b5d668d11ab3480d22a22 -Author: Carl Worth -Date: Sat Aug 6 17:00:59 2005 +0000 - - Remove several bugs that have been fixed. - - BUGS | 53 ----------------------------------------------------- - 1 files changed, 0 insertions(+), 53 deletions(-) - -commit 1fadb8065600d5b9cbab9a14232e08daec450e4d -Author: Carl Worth -Date: Sat Aug 6 16:57:14 2005 +0000 - - Remove several bugs that have been fixed. - Slip group support off of the 1.0 roadmap. Update status of clipping work which otaylor is working on. - Update for progress on cairo_surface_mark_dirty (committed), non-antialiased rendering (patch), cairo_arc_to (patch), consistent error handling (committed), cairo_content_t (committed). Remove details for some completed items. - Don't crash if font_face is NULL, (this is a documented mechanism for returning to the default font_face). - - BUGS | 29 ----------------------- - ChangeLog | 16 ++++++++++++ - ROADMAP | 22 +++++++++-------- - TODO | 65 ++++------------------------------------------------ - src/cairo-gstate.c | 2 +- - 5 files changed, 34 insertions(+), 100 deletions(-) - -commit 2f1024f83fc971516224b910cec8d3e787740c53 -Author: Carl Worth -Date: Sat Aug 6 16:38:33 2005 +0000 - - Fix to return &_cairo_font_face_nil instead of NULL on error. - - ChangeLog | 5 +++++ - src/cairo.c | 7 ++----- - 2 files changed, 7 insertions(+), 5 deletions(-) - -commit 8c52b287f37f8361653030024d7a4a42fc6e54ed -Author: Jeff Muizelaar -Date: Sat Aug 6 15:10:36 2005 +0000 - - Give reason for failure. - - ChangeLog | 4 ++++ - test/a8-mask.c | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 158b338fb2817996c5191332951b6957416c2e77 -Author: Owen Taylor -Date: Sat Aug 6 10:22:07 2005 +0000 - - Remove a non-sensical XXX that crept in at some point; for a solid color, there is no difference between premultiplied and non-premultiplied colors. - - ChangeLog | 7 +++++++ - src/cairo-win32-font.c | 1 - - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit f367e693322b1cf04040521080cc65403c292a28 -Author: Carl Worth -Date: Sat Aug 6 00:09:17 2005 +0000 - - Fix up some stale comments. Rename _cairo_ft_scaled_font_create_for_unscaled to its proper name of _cairo_ft_scaled_font_create (which is available now that _cairo_ft_scaled_font_create_toy has its correct name). Also prefer 'scaled_font' over 'f' as an identifier. - - ChangeLog | 11 +++++++++++ - src/cairo-ft-font.c | 46 ++++++++++++++++++++++++---------------------- - 2 files changed, 35 insertions(+), 22 deletions(-) - -commit e63e0578b1edf2b60c818b3e6741cf97c5a53359 -Author: Carl Worth -Date: Fri Aug 5 23:41:41 2005 +0000 - - Unify initialization for _cairo_ft_unscaled_font_create_from_face and _cairo_ft_unscaled_font_create_from_filename through new _cairo_ft_unscaled_font_init. - - ChangeLog | 9 ++++ - src/cairo-ft-font.c | 102 +++++++++++++++++++++++++++++++++++--------------- - 2 files changed, 80 insertions(+), 31 deletions(-) - -commit c4a806f21c2b6c3081b953497daf25108a734787 -Author: Carl Worth -Date: Fri Aug 5 22:37:29 2005 +0000 - - Rename _ft_font_face_backend to be preoperly namespaced as _cairo_ft_font_face_backend. - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 4 ++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit ff147497e54ef7573b35bd023d11e4e7d4272979 -Author: Carl Worth -Date: Fri Aug 5 22:35:04 2005 +0000 - - Rename cairo_ft_font_face->next_face to next. - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 18 ++++++++++++------ - 2 files changed, 18 insertions(+), 6 deletions(-) - -commit cfcab8fe4467095381c7a4d32182580649db6f00 -Author: Carl Worth -Date: Fri Aug 5 22:29:06 2005 +0000 - - Include cairo-hash-private.h. - Add cairo-hash.c and cairo-hash-private.h since we're actually going to start using them now. - - ChangeLog | 8 ++++++++ - src/Makefile.am | 2 ++ - src/cairoint.h | 2 ++ - 3 files changed, 12 insertions(+), 0 deletions(-) - -commit de87ebcc1c53d9daa4f77b618766215b1723778e -Author: Jeff Muizelaar -Date: Fri Aug 5 22:17:08 2005 +0000 - - Fix problems in render fb implementation found by rendercheck: - - fbCombineSaturate was pointed at fbCombineDisjointOver, instead of fbCombineDisjointOverReverse as it should. Instead, point fbCombineDisjointOverReverse at fbCombineSaturate (which is likely to be faster). - - fix previously-unused fbCombineSaturate implementation. - - fbCombineMaskAlphaC was just a copy of fbCombineMaskValueC. Make it do what it's supposed to (return a cs.alpha). - - fbCombineAtopC didn't invert the source alpha value. - - fix copy'n'paste errors in fbCombine(Dis/Con)jointGeneralC, also source alpha wasn't treated in a component fashion. - From anholt. - - pixman/ChangeLog | 20 +++++ - pixman/src/iccompose.c | 195 +++++++++++++++++++++++++++++++++--------------- - 2 files changed, 156 insertions(+), 59 deletions(-) - -commit 71e560a8fa78d9fd6f83cce820de9f4acb3829eb -Author: Jeff Muizelaar -Date: Fri Aug 5 21:35:51 2005 +0000 - - Temporarily disable the 24bpp WORKING_UNALIGNED_INT because of a crash when using electric-fence when accessing hte last pixel of a drawable (last pixel is 3 bytes, read it as a 4 byte word, and you're reading one extra pixel, which doesn't normally matter, but does in a few rare cases). Should be easy to work around, but that will come later. - From jaymz - - pixman/ChangeLog | 11 +++++++++++ - pixman/src/iccompose.c | 10 +++++++--- - 2 files changed, 18 insertions(+), 3 deletions(-) - -commit 417a66da5e8a98583661d08703a5c5562732678a -Author: Carl Worth -Date: Fri Aug 5 21:33:41 2005 +0000 - - Simplify the implementation by taking advantage of the fact that destroy and reference are safe for NULL, and that reference returns its argument. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 7 ++----- - 2 files changed, 9 insertions(+), 5 deletions(-) - -commit 80b944418cab51fcc2178080fe0c9a5ffd512479 -Author: Carl Worth -Date: Fri Aug 5 21:27:21 2005 +0000 - - Rename two functions: - _cairo_gstate_unset_font -> _cairo_gstate_unset_scaled_font _cairo_gstate_ensure_font -> _cairo_gstate_ensure_scaled_font - - ChangeLog | 17 +++++++++++++++++ - src/cairo-gstate.c | 40 ++++++++++++++++++++-------------------- - 2 files changed, 37 insertions(+), 20 deletions(-) - -commit 75e3d2883409220350a688716c908bea7b6e2c13 -Author: Carl Worth -Date: Fri Aug 5 21:02:25 2005 +0000 - - Entagle the cairo_unscaled_font_t typedef. - - ChangeLog | 4 ++++ - src/cairoint.h | 6 ++---- - 2 files changed, 6 insertions(+), 4 deletions(-) - -commit c14f2252b1b3a4499e65c13a146b9f8c5e9c5550 -Author: Carl Worth -Date: Fri Aug 5 20:53:09 2005 +0000 - - Rename font_face_backend->create_font to scaled_font_create. Group the scaled_font prototypes together. A little more simple -> toy renaming. - A little more simple -> toy renaming. - Track rename of font_face_backend->scaled_font_create. - - ChangeLog | 19 +++++++++++++++++++ - src/cairo-font.c | 42 +++++++++++++++++++++--------------------- - src/cairo-ft-font.c | 14 +++++++------- - src/cairo-gstate.c | 8 ++++---- - src/cairo-win32-font.c | 14 +++++++------- - src/cairoint.h | 30 +++++++++++++++--------------- - 6 files changed, 73 insertions(+), 54 deletions(-) - -commit 9c1fe21cd70bed9fd9e77ec757751df723cb9c42 -Author: Carl Worth -Date: Fri Aug 5 20:30:43 2005 +0000 - - Rather gratuitous (though mostly harmless) whitespace changes for font backend tables. - - ChangeLog | 5 +++ - src/cairoint.h | 104 +++++++++++++++++++++++++++++++------------------------- - 2 files changed, 63 insertions(+), 46 deletions(-) - -commit 4ad365f1834bf0204e44156a62b8e8539fb65ef9 -Author: Carl Worth -Date: Fri Aug 5 20:15:19 2005 +0000 - - Document the implicit closing of sub-paths for cairo_fill and cairo_fill_preserve. - - ChangeLog | 5 +++++ - src/cairo.c | 10 ++++++---- - 2 files changed, 11 insertions(+), 4 deletions(-) - -commit d150513c6af3a7d1f52d7251ab0d097337f40ab3 -Author: Carl Worth -Date: Fri Aug 5 17:27:57 2005 +0000 - - Rename parameters to scalend_font_backend from font to scaled_font. - - ChangeLog | 5 +++++ - src/cairoint.h | 19 ++++++++++--------- - 2 files changed, 15 insertions(+), 9 deletions(-) - -commit b482e1e25e57c7ae1422f4737a2702d3cb53c0eb -Author: Carl Worth -Date: Fri Aug 5 17:00:38 2005 +0000 - - Rename scaled_font_backend->destroy to the more accurate fini, (since it frees only the dependent data within the scaled_font and not the scaled_font itself). - Track rename of scaled_font_backend->fini. - - ChangeLog | 12 ++++++++++++ - src/cairo-atsui-font.c | 4 ++-- - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 4 ++-- - src/cairo-win32-font.c | 4 ++-- - src/cairoint.h | 2 +- - 6 files changed, 20 insertions(+), 8 deletions(-) - -commit 76f80cc42e442abaf52d6582d16be91258f3f8a9 -Author: Carl Worth -Date: Fri Aug 5 16:44:20 2005 +0000 - - Rename scaled_font_backend->create to create_toy. Move declaration of cairo_simple_font_face_t from cairo_font.c to cairoint.h and rename it cairo_toy_font_face_t. Rework create_toy to accept a cairo_toy_font_face_t rather than separate family, slant, and weight. - Track change in create_toy interface. - Partial rename of simple->toy. It's not complete as this is a step in the process of merging in a large patch of mine which actually removes most of the affected code. - - ChangeLog | 22 ++++++++++++++++++++++ - src/cairo-atsui-font.c | 21 +++++++++------------ - src/cairo-font.c | 33 ++++++++++----------------------- - src/cairo-ft-font.c | 21 ++++++++++----------- - src/cairo-win32-font.c | 21 ++++++++++----------- - src/cairoint.h | 23 ++++++++++++++++------- - 6 files changed, 77 insertions(+), 64 deletions(-) - -commit 8d0452c1ee7ba7466b7bb06ec5c4e9746fce2482 -Author: Carl Worth -Date: Fri Aug 5 15:49:52 2005 +0000 - - ignore a8-mask - - ChangeLog | 4 ++++ - test/.cvsignore | 1 + - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 5925e3520fbf6223804d5c5e81698d7cdd888620 -Author: Carl Worth -Date: Fri Aug 5 15:48:42 2005 +0000 - - Patch memory leaks. - - ChangeLog | 4 ++++ - test/a8-mask.c | 15 ++++++++------- - 2 files changed, 12 insertions(+), 7 deletions(-) - -commit 53bd9879bb802606789be76e5653e2fb6781f676 -Author: Jeff Muizelaar -Date: Fri Aug 5 15:07:45 2005 +0000 - - Add a test case for CAIRO_FORMAT_A8 masks that fails with libpixman. - - ChangeLog | 8 +++++ - test/Makefile.am | 4 +++ - test/a8-mask-ref.png | Bin 0 -> 128 bytes - test/a8-mask.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 83 insertions(+), 0 deletions(-) - -commit 549b7ff2a66335dc18434790895d4b4a25a76ba4 -Author: Carl Worth -Date: Fri Aug 5 15:01:55 2005 +0000 - - Bump automake_min_vers up to 1.7 since we clearly don't work with 1.4 anymore. - - ChangeLog | 5 +++++ - autogen.sh | 3 +-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit ec93e241b0cf161216dab27eeee3917a71230aa7 -Author: Jeff Muizelaar -Date: Fri Aug 5 12:26:33 2005 +0000 - - Fix fbGetDrawable - Patch from Billy Biggs . - - pixman/ChangeLog | 6 ++++++ - pixman/src/pixman-xserver-compat.h | 6 +++--- - 2 files changed, 9 insertions(+), 3 deletions(-) - -commit 3ef2488265a1671d42224f4dca1b62c007ef5b0a -Author: Jeff Muizelaar -Date: Fri Aug 5 12:14:12 2005 +0000 - - Fix some of the 4 bit per channel PICT definitions - Patch from Billy Biggs . - - pixman/ChangeLog | 6 ++++++ - pixman/src/icint.h | 6 +++--- - 2 files changed, 9 insertions(+), 3 deletions(-) - -commit 2b20b7a23022a22a460b9441984ccdb7fdce5061 -Author: Jeff Muizelaar -Date: Fri Aug 5 11:44:49 2005 +0000 - - Fix up the fast-path compositing operators; those are useful for sources without alpha, but can't be used for sources with alpha. Also, replaced fbCompositeSrcSrc_nxn with call to fbBlt as this function must handle 1, 4, 8, 16, 24, 32 bpp objects. Would be nice to optimize fbBlt for common cases involving 8, 16, 24 and 32bpp. - From Keith Packard. - - pixman/ChangeLog | 17 ++ - pixman/src/ic.c | 432 ++++++++++++++++++++++++++++-------------------------- - 2 files changed, 244 insertions(+), 205 deletions(-) - -commit 594ba3ef69509d9c13258449f4b636bc52d77cd4 -Author: Jeff Muizelaar -Date: Fri Aug 5 11:23:51 2005 +0000 - - use the newly added buffer_diff_noalpha for comparing buffers of CAIRO_FORMAT_RGB24. - - ChangeLog | 6 ++++++ - test/xlib-surface.c | 24 ++++++++++++------------ - 2 files changed, 18 insertions(+), 12 deletions(-) - -commit 5f78feda5d9819f82ff99911b90cd09e228466a9 -Author: Jeff Muizelaar -Date: Fri Aug 5 11:15:04 2005 +0000 - - rewrite buffer_diff to be endian safe and add a new fuction buffer_diff_noalpha - - ChangeLog | 7 ++++ - test/buffer-diff.c | 83 +++++++++++++++++++++++++++++++++++---------------- - test/buffer-diff.h | 14 ++++++++- - 3 files changed, 77 insertions(+), 27 deletions(-) - -commit 2e1eaa88ff07fbd2048c76587cd6b9ca565fa047 -Author: Carl Worth -Date: Fri Aug 5 10:46:40 2005 +0000 - - Remove CAIRO_BEGIN_DECLS and CAIRO_END_DECLS which don't belong here. - - ChangeLog | 5 +++++ - doc/public/cairo-sections.txt | 2 -- - 2 files changed, 5 insertions(+), 2 deletions(-) - -commit 7d88cdd15bbf8ccb82b7bd45313396ea6f93054f -Author: Carl Worth -Date: Fri Aug 5 10:43:07 2005 +0000 - - Remove unused variable. - - ChangeLog | 4 ++++ - test/surface-finish-twice.c | 1 - - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit e59d1dff7f8096c497ca4e70df1259b16c264f25 -Author: Carl Worth -Date: Fri Aug 5 10:40:32 2005 +0000 - - Ignore cairo-clip-private.h. - Drop non-existent cairo-atsui.xml. - Fix misnamed parameters in comment blocks. - Include config.h so HAVE_UNISTD_H gets picked up as necessary. - - ChangeLog | 16 ++++++++++++++++ - doc/public/Makefile.am | 1 + - doc/public/cairo-docs.xml | 1 - - src/cairo-font.c | 7 ++----- - test/cairo-test.c | 4 ++++ - 5 files changed, 23 insertions(+), 6 deletions(-) - -commit 59d7f60249c9b0d01b01548907c792c324cb9bc8 -Author: Carl Worth -Date: Fri Aug 5 10:30:31 2005 +0000 - - Add some missing declarations to the appropriate sections. - churn - Rename cairo_path_nil to _cairo_path_nil since it may be exported, and tag it cairo_private to try to avoid exporting it. Qualify it as const well. - Track new name of _cairo_path_nil and cast away the const as required. - - ChangeLog | 19 +++++++++++++++++++ - doc/public/cairo-sections.txt | 5 +++++ - doc/public/tmpl/cairo-font.sgml | 18 ++++++++++++++++++ - doc/public/tmpl/cairo-surface.sgml | 9 +++++++++ - doc/public/tmpl/cairo-xlib.sgml | 11 +++++++++++ - doc/public/tmpl/cairo.sgml | 7 +++++++ - src/cairo-path-data-private.h | 2 +- - src/cairo-path-data.c | 8 ++++---- - src/cairo.c | 4 ++-- - 9 files changed, 76 insertions(+), 7 deletions(-) - -commit a2dc18fd0c89e267bd810d42c8e0965487a22058 -Author: Carl Worth -Date: Fri Aug 5 10:05:29 2005 +0000 - - Remove include of math.h since cairoint.h does it more carefully, (for annoying platforms for which just including math.h without extra defines is not enough). - Replace Cairo with cairo. - Include config.h so HAVE_UNISTD_H gets picked up as necessary. - Fix non-UTF-8 copyright symbol. - - ChangeLog | 14 ++++++++++++++ - src/cairo-arc.c | 2 -- - src/cairo-matrix.c | 1 - - src/cairo.c | 2 +- - test/buffer-diff.c | 4 ++++ - test/cairo-test.c | 2 +- - 6 files changed, 20 insertions(+), 5 deletions(-) - -commit 72f40f58bbaf1b80c82f9447007cd4c8d7a4916f -Author: Carl Worth -Date: Fri Aug 5 10:03:04 2005 +0000 - - More obnoxious tmpl churn - - doc/public/tmpl/cairo-font.sgml | 2 ++ - doc/public/tmpl/cairo-pattern.sgml | 1 + - doc/public/tmpl/cairo-surface.sgml | 1 + - doc/public/tmpl/cairo.sgml | 1 + - 4 files changed, 5 insertions(+), 0 deletions(-) - -commit 2eabc47b853f08614d829acecb277388dcb4e046 -Author: Carl Worth -Date: Fri Aug 5 09:49:38 2005 +0000 - - Sort cairo-clip.c - - src/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0586daaa2927bfde9605487eef8e9b95c49d7d2f -Author: Carl Worth -Date: Fri Aug 5 07:48:18 2005 +0000 - - Patch from John Ehresman to aid win32 compilation: - Define snprintf as _snprintf when under the influence of _MSC_VER. - Define int32_t and friends as __int32 and friends when under the influence of _MSC_VER. - Make include of unistd.h conditional on HAVE_UNISTD_H. - - ChangeLog | 16 ++++++++++++++++ - src/cairo-output-stream.c | 4 ++++ - src/cairo-wideint.h | 14 +++++++++++++- - test/buffer-diff.c | 2 ++ - test/cairo-test.c | 6 ++++++ - test/read-png.c | 14 +++++++++++++- - 6 files changed, 54 insertions(+), 2 deletions(-) - -commit fd27af574d544d8adfd8cb6d5ac84837e6db43d2 -Author: Kristian Høgsberg -Date: Thu Aug 4 23:10:26 2005 +0000 - - Patch from Adrian Johnson - Remap composite glyps to use subset font glyph indices. - - ChangeLog | 8 +++++ - src/cairo-font-subset.c | 72 +++++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 77 insertions(+), 3 deletions(-) - -commit ebf985c87688f090c27c3906a6b441522b2f702a -Author: Kristian Høgsberg -Date: Thu Aug 4 22:45:59 2005 +0000 - - New files. Move code for manipulating cairo_clip_t out into cairo_clip_* functions and put them in cairo-clip.c. - Rewrite to use new cairo_clip_t functions for manipulating the clip state, change the clip_and_composite_trapezoids call tree to use cairo_clip_t instead of cairo_gstate_t. - Use new cairo_clip_t function to maintain clip state while replaying. - Pass fill rule and tolerance directly, to break gstate dependency. - New function. Set the clip for a surface as specified by the cairo_clip_t. - Move translate_traps() from cairo-gstate.c to here and rename it. - Reviewed by: otaylor - - ChangeLog | 29 ++ - src/Makefile.am | 2 + - src/cairo-clip-private.h | 118 ++++++++ - src/cairo-clip.c | 457 +++++++++++++++++++++++++++++++ - src/cairo-gstate-private.h | 41 +--- - src/cairo-gstate.c | 637 +++++++------------------------------------- - src/cairo-meta-surface.c | 132 +++++----- - src/cairo-path-fill.c | 20 +- - src/cairo-surface.c | 23 ++- - src/cairo-traps.c | 29 ++ - src/cairoint.h | 35 ++- - 11 files changed, 849 insertions(+), 674 deletions(-) - -commit 27573750eb9f2655d0b4cb5640a9f3f6c1316bc0 -Author: Kristian Høgsberg -Date: Thu Aug 4 18:44:29 2005 +0000 - - Change *_reference() functions to return the object being referenced. - - ChangeLog | 14 ++++++++++++++ - src/cairo-font-subset.c | 3 +-- - src/cairo-font.c | 26 ++++++++++++++++++-------- - src/cairo-ft-font.c | 6 ++---- - src/cairo-glitz-surface.c | 3 +-- - src/cairo-gstate.c | 11 ++++++----- - src/cairo-image-surface.c | 3 +-- - src/cairo-meta-surface.c | 3 +-- - src/cairo-pattern.c | 13 ++++++++----- - src/cairo-pdf-surface.c | 9 +++++---- - src/cairo-surface.c | 26 +++++++++++++++++++++++--- - src/cairo-xcb-surface.c | 3 +-- - src/cairo-xlib-surface.c | 3 +-- - src/cairo.c | 8 ++++++-- - src/cairo.h | 10 +++++----- - src/cairoint.h | 2 +- - 16 files changed, 94 insertions(+), 49 deletions(-) - -commit a8ccf316201e5241bcde2359f6dcbe3557cca79b -Author: Tor Lillqvist -Date: Thu Aug 4 15:53:30 2005 +0000 - - Check for render bug involving repeated patterns with a general transform matrix. - - ChangeLog | 8 ++++++++ - src/cairo-xlib-surface.c | 40 ++++++++++++++++++++++++++++++---------- - 2 files changed, 38 insertions(+), 10 deletions(-) - -commit b5ab1741e9f9e73283dd18266834ecae2b03d93e -Author: Carl Worth -Date: Thu Aug 4 13:22:15 2005 +0000 - - Originally 2005-07-13 Carl Worth - Export opaque cairo_ft_unscaled_font_t and change _cairo_ft_unscaled_font_[un]lock_face to accept cairo_ft_unscaled_font_t rather than cairo_unscaled_font_t. - Cast explicitly to cairo_ft_unscaled_font_t to track change in prototype of _cairo_ft_unscaled_font_[un]lock_face. - Lots of renaming to use consistent namespacing: - ft_font_transform_t -> cairo_ft_font_transform_t ft_font_face_t -> cairo_ft_font_face_t ft_unscaled_font_t -> cairo_ft_unscaled_font_t - Add missing _cairo prefix to many functions. - Disambiguate _ft_scaled_font_create and _cairo_ft_scaled_font_create by renaming the former to _cairo_ft_scaled_font_create_for_unscaled. - Reviewed by: otaylor - - ChangeLog | 28 ++++++ - src/cairo-font-subset.c | 18 +++- - src/cairo-ft-font.c | 215 +++++++++++++++++++++++------------------------ - src/cairo-ft-private.h | 6 +- - 4 files changed, 150 insertions(+), 117 deletions(-) - -commit b45f68876528050107b6e8c4b24fb8edb7ded12e -Author: Carl Worth -Date: Wed Aug 3 10:32:50 2005 +0000 - - Fix for bug #3951: - Add new _CHECK_FUNCS_WITH_FLAGS to abstract out the pain of temporarily setting flags for AC_CHECK_FUNCS. Use this to check for the existence of FcFini. - Make call to FcFini conditional on HAVE_FCFINI. - Remove stale comment about cleaning up memory which is now handled by cairo-test.c. - - ChangeLog | 14 ++++++++++++++ - configure.in | 30 +++++++++++++++++++++++------- - test/cairo-test.c | 2 ++ - test/text-cache-crash.c | 14 -------------- - 4 files changed, 39 insertions(+), 21 deletions(-) - -commit ba87f1324fda84ea816ad8f18442444c2ad1ed93 -Author: Billy Biggs -Date: Mon Aug 1 18:01:24 2005 +0000 - - Optimize spans where the same value is being added to multiple pixels. This improves the speed of rasterizing wide trapezoids. - Add an INLINE macro that matches the one from fbpict.h in xserver/fb. - - pixman/ChangeLog | 10 ++ - pixman/src/fbedge.c | 230 +++++++++++++++++++++++++++++++++++++++++++++------ - pixman/src/icint.h | 6 ++ - 3 files changed, 220 insertions(+), 26 deletions(-) - -commit 500cc6fed1858d5e9240ce61bbbf00781ae4c097 -Author: Owen Taylor -Date: Mon Aug 1 14:39:01 2005 +0000 - - src/cairo-gstate.c src/cairo-gstate-private.h: Store the inverse CTM at the time of cairo_gstate_set_source() to "lock" the user space matrix. - Move the source pattern transformation to the outside of _cairo_gstate_clip_and_composite_trapezoids() instead of doing it at the leaves. - Change size of output surface for aesthetics. - Updated to correspond to the current definition. - Remove source-surface-scale-paint. - reviewed by: cworth - - ChangeLog | 23 ++++++- - src/cairo-gstate-private.h | 1 + - src/cairo-gstate.c | 119 +++++++++++++++++-------------- - test/Makefile.am | 1 - - test/source-surface-scale-paint-ref.png | Bin 147 -> 139 bytes - test/source-surface-scale-paint.c | 5 +- - 6 files changed, 91 insertions(+), 58 deletions(-) - -commit c525c684ca712c5c5acd5431ec061bfab364cef5 -Author: Carl Worth -Date: Mon Aug 1 13:33:47 2005 +0000 - - New public header file. - New function to reset all static data (eg. caches) to their initial state. - Fix check-valgrind target to depend on the 'all' target. - Add check for a new, proposed, XrmFinalize function. - Add cairo-debug.c. - Move the definition of CAIRO_BEGIN_DECLS to cairo-features.h so that it can be shared between public header files, and so that it doesn't clutter cairo.h - Implement reset_static_data in all modules as required. - Call cairo_debug_reset_static_data and FcFini so that we can have all tests be valgrind-clean with respect to memory leaks and still-reachable data. - - ChangeLog | 55 ++++++++++++++++++++++++++++++++++ - Makefile.am | 3 ++ - configure.in | 7 ++++ - src/Makefile.am | 1 + - src/cairo-debug.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-debug.h | 48 ++++++++++++++++++++++++++++++ - src/cairo-features.h.in | 8 +++++ - src/cairo-font.c | 39 +++++++++++++++++++----- - src/cairo-ft-font.c | 13 ++++++++ - src/cairo-xlib-screen.c | 53 +++++++++++++++++++++++++++------ - src/cairo-xlib-surface.c | 26 +++++++++++++++- - src/cairo.h | 8 ----- - src/cairoint.h | 13 ++++++++ - test/cairo-test.c | 6 ++++ - test/cairo-test.h | 1 + - test/xlib-surface.c | 2 + - 16 files changed, 329 insertions(+), 27 deletions(-) - -commit 480951827e567db89f88e71e7ba20f4fa4633c1b -Author: Owen Taylor -Date: Mon Aug 1 11:45:42 2005 +0000 - - src/cairo.h src/cairoint.h src/cairo-surface.c: Add cairo_mark_dirty[_rectangle]() and cairo_flush() for - Implement a cairo_flush() that restores the original clip. Also restore the original flush when a surface is finished. - Check off the item. - - ChangeLog | 11 ++++ - ROADMAP | 2 +- - doc/public/cairo-sections.txt | 3 + - doc/public/tmpl/cairo-surface.sgml | 28 ++++++++++ - src/cairo-surface.c | 97 +++++++++++++++++++++++++++++++++++- - src/cairo-win32-surface.c | 16 +++++- - src/cairo.h | 13 +++++ - src/cairoint.h | 11 ++++ - 8 files changed, 176 insertions(+), 5 deletions(-) - -commit 392a2746ef051d16be303477170511ef38dcf753 -Author: Amaury Jacquot -Date: Mon Aug 1 06:57:09 2005 +0000 - - fix typo - - pixman/ChangeLog | 4 ++++ - pixman/NEWS | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit cd78d99642bdf1171d21083a6947c77ff00b599e -Author: Billy Biggs -Date: Sun Jul 31 11:19:47 2005 +0000 - - Support versions of freetype without exact FT_Bitmap_Size.x/y_ppem values by using the pixel width and height values instead. - Add a check for FT_Bitmap_Size.y_ppem. - reviewed by: keithp - - ChangeLog | 10 ++++++++++ - configure.in | 14 ++++++++++++++ - src/cairo-ft-font.c | 8 +++++++- - 3 files changed, 31 insertions(+), 1 deletions(-) - -commit b4ae3371b34ca67e98df5e73147adcd6b7853e1d -Author: Billy Biggs -Date: Sun Jul 31 11:03:35 2005 +0000 - - Cast away the const on the nil surface to avoid a compiler warning. - - ChangeLog | 5 +++++ - src/cairo-quartz-surface.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 31e0d694294ef17037a0b464615916e065a81385 -Author: Billy Biggs -Date: Sat Jul 30 22:21:12 2005 +0000 - - Pass the options down to the scaled font object to keep things compiling. - - ChangeLog | 5 +++++ - src/cairo-atsui-font.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit b47c0050f985856d0c47a43d3a1b3cc8f18dbd32 -Author: Keith Packard -Date: Sat Jul 30 12:57:54 2005 +0000 - - Replace wide integer divide algorithms with trivial bit-at-a-time code. Original code was of unclear provenance, this new code is completely different. - - ChangeLog | 11 ++ - src/cairo-wideint.c | 461 +++++---------------------------------------------- - src/cairo-wideint.h | 6 +- - 3 files changed, 60 insertions(+), 418 deletions(-) - -commit 05d84a0a1e1f4f4cb750ab6828a1e09ffa73b0f0 -Author: Jeff Muizelaar -Date: Sat Jul 30 10:23:21 2005 +0000 - - Finish up merging the optimization work from jaymz. - - pixman/ChangeLog | 10 ++ - pixman/src/ic.c | 316 +++++++++++++++++++++++------------------------- - pixman/src/icblt.c | 4 +- - pixman/src/iccompose.c | 13 ++- - 4 files changed, 170 insertions(+), 173 deletions(-) - -commit bdfb7f4db0b48cf3882241b4b547082f68410567 -Author: Jeff Muizelaar -Date: Sat Jul 30 09:43:51 2005 +0000 - - s/uint(8|16|32)_t/CARD(8|16|32)/ - - pixman/ChangeLog | 17 +++ - pixman/src/iccompose.c | 280 ++++++++++++++++++++++++------------------------ - 2 files changed, 157 insertions(+), 140 deletions(-) - -commit 5ebf2c5d967fb84a2e102254421057af9bcd307a -Author: Jeff Muizelaar -Date: Sat Jul 30 08:48:25 2005 +0000 - - Add some optimizations from jaymz. Also adds some compile warnings that will hopefully go away as we continue merging. - - pixman/ChangeLog | 9 + - pixman/src/ic.c | 595 +++++++++++++++++++++++++++++++++++++++++++++--------- - 2 files changed, 504 insertions(+), 100 deletions(-) - -commit 172e535ee05ab725ed1a951b31077843d112e7ca -Author: Carl Worth -Date: Fri Jul 29 15:35:19 2005 +0000 - - Remove completed 0.6 tasks. Add cairo_surface_flush to the cairo_surface_mark_dirty task. - - ChangeLog | 5 +++++ - ROADMAP | 25 ++++--------------------- - 2 files changed, 9 insertions(+), 21 deletions(-) - -commit ef4209a8a1fdcf7226bec2c6481a4f8239d63ec3 -Author: Tor Lillqvist -Date: Fri Jul 29 15:31:48 2005 +0000 - - src/cairo-quartz-surface.c (_cairo_quartz_surface_acquire_dest_image): Minor updates to keep quartz backend limping along. - - ChangeLog | 6 ++++++ - src/cairo-atsui-font.c | 1 + - src/cairo-quartz-surface.c | 3 ++- - 3 files changed, 9 insertions(+), 1 deletions(-) - -commit 449087745b520c64113102f5c62bc5a8beba6c98 -Author: Owen Taylor -Date: Fri Jul 29 12:45:01 2005 +0000 - - src/cairo-font.c src/cairo-ft-font.c src/cairo-win32-font.c src/cairoint.h: Move the font options into the base cairo_scaled_font_t object so that we have them available to use when we are removing a scaled font from the cache. (http://bugzilla.gnome.org/show_bug.cgi?id=#311299, Ali Akcaagac, Behdad Esfahbod) - - ChangeLog | 9 +++++++++ - src/cairo-font.c | 8 ++++++++ - src/cairo-ft-font.c | 7 ++----- - src/cairo-win32-font.c | 4 +--- - src/cairoint.h | 17 ++++++++++------- - 5 files changed, 30 insertions(+), 15 deletions(-) - -commit a0ca6026ad0ea049198e17dbda379d4737078053 -Author: Carl Worth -Date: Thu Jul 28 15:58:09 2005 +0000 - - Run the mask pattern through the CTM in the same way as the source pattern. This fixes the bug demonstrated by the mask-ctm and mask-surface-ctm tests so they should no longer fail. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 16 ++++++++++------ - 2 files changed, 17 insertions(+), 6 deletions(-) - -commit 26289b366434103eda1dd619d8bad0e9394724d6 -Author: Carl Worth -Date: Thu Jul 28 15:55:00 2005 +0000 - - Add two new tests: mask-ctm mask-surface-ctm demonstrating that masks are not currently being modified by the CTM. - - ChangeLog | 13 ++++++ - test/.cvsignore | 2 + - test/Makefile.am | 6 +++ - test/mask-ctm-ref.png | Bin 0 -> 129 bytes - test/mask-ctm.c | 82 +++++++++++++++++++++++++++++++++++++++++ - test/mask-surface-ctm-ref.png | Bin 0 -> 129 bytes - test/mask-surface-ctm.c | 75 +++++++++++++++++++++++++++++++++++++ - 7 files changed, 178 insertions(+), 0 deletions(-) - -commit 5f6c5026e66c6325f2decf25300abede587fa4dc -Author: Carl Worth -Date: Thu Jul 28 15:38:50 2005 +0000 - - CC gnome-announce-list@gnome.org on cairo release announcements. - - ChangeLog | 5 +++++ - RELEASING | 3 ++- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 3dd93a930f618df42f71c5961764753d0d53306b -Author: Carl Worth -Date: Thu Jul 28 14:58:25 2005 +0000 - - Add -head to LIBPIXMAN_VERSION after tagging with SNAPSHOT_0_1_6. - - pixman/ChangeLog | 5 +++++ - pixman/RELEASING | 2 +- - pixman/configure.in | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit 6d8d18e2dcdb2c829ec25659c1397f258c6b5a6b -Author: Carl Worth -Date: Thu Jul 28 14:41:36 2005 +0000 - - Add notes for snapshot 0.1.6. - Increment version to 0.1.6. - - pixman/ChangeLog | 6 ++++++ - pixman/NEWS | 24 ++++++++++++++++++++++++ - pixman/configure.in | 2 +- - 3 files changed, 31 insertions(+), 1 deletions(-) - -commit 61e28ec71f5492671d633ccf9459b6654f33edd6 -Author: Carl Worth -Date: Thu Jul 28 12:45:26 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with SNAPSHOT_0_6_0. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit b9861b3e877776c5fe5b8b30fe76ced8ff846923 -Author: Carl Worth -Date: Thu Jul 28 11:51:38 2005 +0000 - - Added notes for snapshot 0.6.0 - Increment CAIRO_VERSION to 0.6.0 - - ChangeLog | 6 ++ - NEWS | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - 3 files changed, 153 insertions(+), 1 deletions(-) - -commit 0e0f2571a4e6a1d99f8a3fe6e357cb49a51c30e2 -Author: Carl Worth -Date: Thu Jul 28 11:46:01 2005 +0000 - - Remove const qualifiers that only make things happy with a from-cvs version of freetype. Now we should be back to being happy with a released version. - - ChangeLog | 11 +++++++++++ - src/cairo-ft-font.c | 10 +++++----- - 2 files changed, 16 insertions(+), 5 deletions(-) - -commit d4056b1d1570f1e7c8636a54d2cd1b2a2ca8eb9c -Author: Carl Worth -Date: Thu Jul 28 11:42:33 2005 +0000 - - Add missing cast. - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 08e810f5c1d2c71eb44a800ac6e4b334436aa5cf -Author: Carl Worth -Date: Thu Jul 28 11:41:37 2005 +0000 - - Remove text-antialias-subpixel-ref.png from the list since it doesn't exist yet. - - ChangeLog | 6 ++++++ - test/Makefile.am | 1 - - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 3f385a0330f4cf5775feada0cac1df9ef165a539 -Author: Carl Worth -Date: Thu Jul 28 11:34:47 2005 +0000 - - More doc/public/tmpl churn. - - ChangeLog | 4 ++++ - doc/public/tmpl/cairo.sgml | 1 + - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 1481fa5132ab66de40de270668024bc07ed64bcf -Author: Carl Worth -Date: Thu Jul 28 11:33:11 2005 +0000 - - Add text-antialias-{gray|none|subpixel}-ref.png so they get distributed. - - ChangeLog | 6 ++++++ - test/Makefile.am | 3 +++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit e604017c77e5c4b755d447b6efdf489417002986 -Author: Dave Beckett -Date: Thu Jul 28 11:22:36 2005 +0000 - - Use cairo_surface_status(image) instead of testing for NULL from cairo_image_surface_create_from_png to enable testing when srcdir != builddir again. - - ChangeLog | 7 +++++++ - test/cairo-test.c | 7 +++++-- - 2 files changed, 12 insertions(+), 2 deletions(-) - -commit ddae93c72c15bca63931d3db6cfa2d2e8d368e7d -Author: Carl Worth -Date: Thu Jul 28 10:51:37 2005 +0000 - - Note that consistent error handling is done now. - - ChangeLog | 4 ++++ - NEWS | 6 ++++++ - ROADMAP | 7 ++----- - 3 files changed, 12 insertions(+), 5 deletions(-) - -commit 6efd4bf4d5f0f788db4020facb556d5b6aac1e6e -Author: Carl Worth -Date: Thu Jul 28 10:47:40 2005 +0000 - - Fix to call _cairo_error and return 0 on surface-type mismatch. - - ChangeLog | 6 ++++++ - src/cairo-image-surface.c | 10 ++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit 1e66aee352d092cbd39cac196cdf1b3681ec4c17 -Author: Owen Taylor -Date: Thu Jul 28 10:43:27 2005 +0000 - - configure.in Makefile.am: Skip tests/ directory if libpng was disabled. (#3423, reported by Steve Chaplin) - - ChangeLog | 5 +++++ - Makefile.am | 8 +++++++- - configure.in | 2 ++ - 3 files changed, 14 insertions(+), 1 deletions(-) - -commit a83124a3eeff1602c199a961b36d75a51ce96843 -Author: Carl Worth -Date: Thu Jul 28 10:41:08 2005 +0000 - - Fix so that one of three different error status values will be returned: - CAIRO_STATUS_NO_MEMORY CAIRO_STATUS_FILE_NOT_FOUND CAIRO_STATUS_READ_ERROR - Add new CAIRO_STATUS_FILE_NOT_FOUND. - Add new _cairo_surface_nil_read_error and _cairo_surface_nil_file_not_found. - Test the new FILE_NOT_FOUND error. - - ChangeLog | 21 +++++++++++++++++++++ - src/cairo-png.c | 32 +++++++++++++++++++++----------- - src/cairo-surface.c | 32 ++++++++++++++++++++++++++++++++ - src/cairo.c | 4 +++- - src/cairo.h | 4 +++- - src/cairoint.h | 2 ++ - test/create-from-png.c | 13 +++++++++++-- - 7 files changed, 93 insertions(+), 15 deletions(-) - -commit fe44b2406d30fc89ac6579bdd749b5c76e9257d8 -Author: Stuart Parmenter -Date: Thu Jul 28 10:37:41 2005 +0000 - - src/cairo-win32-font.c - src/cairo-win32-surface.c Use surface->base.status instead of just surface on cairo_win32_surface_t *s - - ChangeLog | 7 +++++++ - src/cairo-win32-font.c | 4 ++-- - src/cairo-win32-surface.c | 2 +- - 3 files changed, 10 insertions(+), 3 deletions(-) - -commit cff61fbf0d85dfdebd8b522f8efda02ec2da412f -Author: Owen Taylor -Date: Thu Jul 28 10:24:59 2005 +0000 - - Disable PS surface build if no freetyp - - ChangeLog | 4 ++++ - configure.in | 51 ++++++++++++++++++++++++++++----------------------- - 2 files changed, 32 insertions(+), 23 deletions(-) - -commit 9c70498e72f86937e02101a13d02b429fb47efd2 -Author: Owen Taylor -Date: Thu Jul 28 10:15:35 2005 +0000 - - Pass - -1 not 1 to RestoreDC to restore to the last SaveDC. (#3905, Stuart Parmenter - - ChangeLog | 6 ++++++ - src/cairo-win32-font.c | 2 +- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 95beb7be6720230f65c2d2c642efd71cbbc92873 -Author: Owen Taylor -Date: Thu Jul 28 10:02:54 2005 +0000 - - Patch from Martin Kretzschmar , #3798 - prevent sign-extension of masks.*_mask on 64bit architectures. - ditto. - - ChangeLog | 9 +++++++++ - src/cairo-xcb-surface.c | 8 ++++---- - src/cairo-xlib-surface.c | 8 ++++---- - 3 files changed, 17 insertions(+), 8 deletions(-) - -commit 02c6aec91df93f523768e8bb6ff20c0fc0bc18fb -Author: Owen Taylor -Date: Thu Jul 28 09:54:03 2005 +0000 - - dest_image) src/cairo-quartz-surface.c (_cairo_quartz_surface_acquire_dest_image) src/cairo-xcb-surface.c (_cairo_xcb_surface_acquire_source,dest_image): src/cairo-xlib-surface.c (_cairo_xlib_surface_acquire_source,dest_image): Set image_extra to NULL to avoid purify warnings. (#3777, Stuart Parmenter) - - ChangeLog | 8 ++++++++ - src/cairo-image-surface.c | 4 +++- - src/cairo-quartz-surface.c | 1 + - src/cairo-xcb-surface.c | 2 ++ - src/cairo-xlib-surface.c | 4 +++- - 5 files changed, 17 insertions(+), 2 deletions(-) - -commit 5d7c796c1830663772dd681026e2d5dd952826b8 -Author: Carl Worth -Date: Thu Jul 28 09:46:38 2005 +0000 - - Remove all create_in_error functions as they were just muddling up the memory management semantics: - _cairo_path_data_create_in_error _cairo_pattern_create_in_error _cairo_surface_create_in_error - Don't bother with extra check of other->status to anticipate and try to prevent cairo_surface_create_similar from returning through cairo_surface_create_in_error. - Just return &_cairo_surface|pattern|path_nil rather than _cairo_surface|pattern|path_create_in_error. - After checking surface->status from a cairo__surface_create function, just return CAIRO_STATUS_NO_MEMORY since that's the only error we'll get from one of these create functions. - Remove unnecessary check for gstate == NULL; - Fix old check for image == NULL instead of image->base.status. - Add missing check of surface->image_base.status after creating surface->image. - Add missing check of surface->base.status after creating surface. - - ChangeLog | 67 +++++++++++++++++++++++++++++++++++++++ - doc/public/tmpl/cairo-font.sgml | 1 + - src/cairo-ft-font.c | 6 ++- - src/cairo-glitz-surface.c | 16 +++++----- - src/cairo-gstate.c | 25 ++------------ - src/cairo-image-surface.c | 4 +- - src/cairo-path-data-private.h | 5 +-- - src/cairo-path-data.c | 34 +------------------- - src/cairo-pattern.c | 37 ++-------------------- - src/cairo-png.c | 20 +++++++----- - src/cairo-ps-surface.c | 8 ++-- - src/cairo-quartz-surface.c | 5 +++ - src/cairo-surface.c | 46 +++++++++++--------------- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 7 ++-- - src/cairo-xcb-surface.c | 6 +++- - src/cairo-xlib-surface.c | 12 +++++-- - src/cairo.c | 44 +++++++++++-------------- - src/cairoint.h | 8 +--- - 19 files changed, 173 insertions(+), 180 deletions(-) - -commit b9fe1b74665e528e6114bd833028a8f62ecfa869 -Author: Owen Taylor -Date: Thu Jul 28 09:29:46 2005 +0000 - - src/cairo-font.c src/cairoint.h: Define _cairo_font_face_nil. (cairo_font_face_reference, cairo_font_face_destroy cairo_font_face_set_user_data): Handle a nil font face. (cairo_font_face_status): New function. - src/cairo-ft-font.c (cairo_ft_font_face_create_for_pattern): src/cairo-ft-font.c (cairo_ft_font_face_create_for_ft_face): src/cairo-win32-font.c (cairo_win32_font_face_create_for_logfontw): Return _cairo_font_face_nil on out-of-memory. - Check return of _cairo_simple_font_face_create(). - Error out if font_face has a status. - Handle a nil surface. - - ChangeLog | 23 +++++++++++++++++++ - src/cairo-font.c | 57 ++++++++++++++++++++++++++++++++++++++++++------ - src/cairo-ft-font.c | 26 ++++++++++++++++----- - src/cairo-gstate.c | 21 +++++++++++------ - src/cairo-surface.c | 3 ++ - src/cairo-win32-font.c | 6 +++- - src/cairo.h | 3 ++ - src/cairoint.h | 3 ++ - 8 files changed, 120 insertions(+), 22 deletions(-) - -commit d7699f0c072a6820007280a167b86a95adf8a54e -Author: Owen Taylor -Date: Wed Jul 27 19:13:39 2005 +0000 - - Remove text-antialias-none which is now fixed. - No longer xfail. - - ChangeLog | 7 +++++++ - test/Makefile.am | 1 - - test/text-antialias-none.c | 3 +-- - 3 files changed, 8 insertions(+), 3 deletions(-) - -commit 7143d8b7aee74ed4d75985158bf3dda147f3d21d -Author: Owen Taylor -Date: Wed Jul 27 16:23:11 2005 +0000 - - Go back to returning NULL. - src/cairoint.h src/cairo-ft-font.c: Stop exporting _cairo_scaled_font_nil, since we dont' need it publically any more. - return surface->status not status. (Fixes warning) - - ChangeLog | 13 +++++++++++++ - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 4 ++-- - src/cairo-surface.c | 2 +- - src/cairo-win32-font.c | 6 ++---- - src/cairoint.h | 2 -- - 6 files changed, 19 insertions(+), 10 deletions(-) - -commit 2b5d9c8e007f4198b1c48bce53491842f065a759 -Author: Carl Worth -Date: Wed Jul 27 15:39:34 2005 +0000 - - Add CAIRO_STATUS_INVALID_CONTENT, CAIRO_STATUS_INVALID_FORMAT, and CAIRO_STATUS_INVALID_VISUAL. - Change functions to return type of void: - cairo_scaled_font_extents cairo_surface_finish - Add new functions to query object status: - cairo_scaled_font_status cairo_surface_status - Implementation of new error handling scheme for cairo_surface_t and cairo_scaled_font_t. - Track change in return value of cairo_surface_finish. - - ChangeLog | 42 +++++ - doc/public/tmpl/cairo-surface.sgml | 1 + - doc/public/tmpl/cairo.sgml | 3 + - src/cairo-array.c | 5 + - src/cairo-atsui-font.c | 3 - - src/cairo-font.c | 113 ++++++++++++- - src/cairo-ft-font.c | 35 +++-- - src/cairo-glitz-surface.c | 63 +++++--- - src/cairo-gstate.c | 38 +++-- - src/cairo-image-surface.c | 76 +++++---- - src/cairo-meta-surface.c | 6 +- - src/cairo-path-data.c | 2 + - src/cairo-pattern.c | 83 ++++++++-- - src/cairo-pdf-surface.c | 24 ++- - src/cairo-png.c | 38 +++-- - src/cairo-ps-surface.c | 69 +++++---- - src/cairo-quartz-surface.c | 17 +-- - src/cairo-surface.c | 322 +++++++++++++++++++++++++++--------- - src/cairo-win32-font.c | 17 ++- - src/cairo-win32-surface.c | 42 +++-- - src/cairo-xcb-surface.c | 33 +++- - src/cairo-xlib-surface.c | 52 ++++-- - src/cairo.c | 323 +++++++++++++++++++----------------- - src/cairo.h | 14 ++- - src/cairoint.h | 28 +++- - test/surface-finish-twice.c | 9 +- - 26 files changed, 994 insertions(+), 464 deletions(-) - -commit c884c4c541abe380500e24a55ec017677d56db19 -Author: Owen Taylor -Date: Wed Jul 27 15:04:03 2005 +0000 - - Turn off antialiasing for rendering to alpha surfaces. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 9 ++++++--- - 2 files changed, 11 insertions(+), 3 deletions(-) - -commit 7b2b9df4e7b3c76b4dd40f865d7b6c55d3a0747c -Author: Owen Taylor -Date: Wed Jul 27 14:11:58 2005 +0000 - - Fix units for stride return to be FbStip-sized. : ---------------------------------------------------------------------- - - pixman/ChangeLog | 5 +++++ - pixman/src/icint.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 255913de9ef5da40604d55ca8d0d53ac606f7710 -Author: Carl Worth -Date: Wed Jul 27 13:28:15 2005 +0000 - - Note that the XFAIL tests all need to be fixed before 1.0. - Add three new tests for testing the various antialiasing options for text rendering. - - ChangeLog | 15 +++++++ - ROADMAP | 4 ++ - test/.cvsignore | 3 + - test/Makefile.am | 8 ++++ - test/text-antialias-gray-ref.png | Bin 0 -> 723 bytes - test/text-antialias-gray.c | 77 +++++++++++++++++++++++++++++++++++ - test/text-antialias-none-ref.png | Bin 0 -> 277 bytes - test/text-antialias-none.c | 78 ++++++++++++++++++++++++++++++++++++ - test/text-antialias-subpixel.c | 82 ++++++++++++++++++++++++++++++++++++++ - 9 files changed, 267 insertions(+), 0 deletions(-) - -commit 8cb451962b4be046024264fd6251f26ea1bf033c -Author: Carl Worth -Date: Wed Jul 27 09:23:29 2005 +0000 - - Fix typo that caused cairo_image_surface_create_from_png_stream to segfault. Closes bug #3863 (thanks to Steve Chaplin). - Add a test to actually call cairo_image_surface_create_from_png_stream. - - ChangeLog | 13 +++++ - src/cairo-png.c | 2 +- - test/.cvsignore | 1 + - test/Makefile.am | 3 + - test/create-from-png-stream-ref.png | Bin 0 -> 100 bytes - test/create-from-png-stream.c | 95 +++++++++++++++++++++++++++++++++++ - test/create-from-png.c | 4 +- - 7 files changed, 116 insertions(+), 2 deletions(-) - -commit e859afecceb9e22ab8f42ca533c37a71b7ccec51 -Author: Owen Taylor -Date: Wed Jul 27 06:45:37 2005 +0000 - - Deal with glyphs with entry->im->image NULL. (This can happen if fonts have size-zero bitmaps for some characters, for example) (http://bugzilla.gnome.org/show_bug.cgi?id=311709, Sangu Kim) - - ChangeLog | 7 ++++ - src/cairo-xlib-surface.c | 73 +++++++++++++++++++++++++++++++--------------- - 2 files changed, 56 insertions(+), 24 deletions(-) - -commit e056a72ec8316fa586d18d771923ace44c56291c -Author: Owen Taylor -Date: Wed Jul 27 04:07:46 2005 +0000 - - FreeType bitmaps may only be padded out to 8-bit boundaries, not 32-bit boundaries. (_render_glyph_bitmap): Fix sign error in using glyphslot->bitmap_left - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 21 +++++++++++++++++++-- - 2 files changed, 25 insertions(+), 2 deletions(-) - -commit 1467168326b57f11ae7080e8d9fc3816b6dc3a3c -Author: David Reveman -Date: Tue Jul 26 22:36:00 2005 +0000 - - Fix infinite loop bug in xlib backend - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit ea1218a434fb4077d27a4d8310e4ce3415102c58 -Author: Carl Worth -Date: Mon Jul 25 16:23:05 2005 +0000 - - Replace all occurences of refcount with ref_count. - Replace refcounted with reference-counted. - - ChangeLog | 12 ++++++++++++ - doc/public/language-bindings.xml | 2 +- - src/cairo-font.c | 20 ++++++++++---------- - src/cairo-ft-font.c | 4 ++-- - src/cairo-glitz-surface.c | 10 +++++----- - src/cairo-pdf-surface.c | 10 +++++----- - src/cairoint.h | 6 +++--- - 7 files changed, 38 insertions(+), 26 deletions(-) - -commit 85b74d82164e7908842d42bb1b11e8cf8c876b82 -Author: Owen Taylor -Date: Mon Jul 25 12:29:23 2005 +0000 - - src/cairo.[ch] src/cairo-gstate-private.h src/cairo-gstate.c src/cairoint.c: Add cairo_{get,set}_font_options(). - Add cairo-xlib-private.h - Update - reviewed by: cworth - - ChangeLog | 11 ++++++++ - doc/public/Makefile.am | 1 + - doc/public/cairo-sections.txt | 2 + - doc/public/tmpl/cairo-xlib-xrender.sgml | 1 + - doc/public/tmpl/cairo-xlib.sgml | 1 + - doc/public/tmpl/cairo.sgml | 18 +++++++++++++ - src/cairo-font-options.c | 2 +- - src/cairo-gstate-private.h | 1 + - src/cairo-gstate.c | 22 ++++++++++++++++ - src/cairo.c | 43 +++++++++++++++++++++++++++++++ - src/cairo.h | 8 ++++++ - src/cairoint.h | 8 ++++++ - 12 files changed, 117 insertions(+), 1 deletions(-) - -commit fcd8867a47ce77163def423a37bb517870f6cc35 -Author: Owen Taylor -Date: Sun Jul 24 05:18:15 2005 +0000 - - Fix size of allocated buffer for vertical subpixel rendering. (Reported by Fryderyk Dziarmagowski, http://bugzilla.gnome.org/show_bug.cgi?id=310935) (_get_pattern_load_flags): Fix a problem where we were OR'ing multiple FT_LOAD_* flags together. - Fix reversed check for subpixel or not. - - ChangeLog | 11 +++++++++++ - src/cairo-ft-font.c | 20 +++++++++++++------- - src/cairo-xlib-screen.c | 2 +- - 3 files changed, 25 insertions(+), 8 deletions(-) - -commit 55e2a0a03128bff86765b14179dd87af792dc4cc -Author: Carl Worth -Date: Sat Jul 23 10:05:54 2005 +0000 - - Testing UseNewInfoFtmStrings hack - -commit c8d754803181105c53cd389c0dd762dd473630fb -Author: Carl Worth -Date: Sat Jul 23 09:54:54 2005 +0000 - - Testing UseNewInfoFtmStrings hack - -commit d527428bb6775c82b3c0cc6cbb364f08317a3d17 -Author: Malcolm Tredinnick -Date: Sat Jul 23 09:48:13 2005 +0000 - - Slight change to previous commit based on feedback from cworth. - - src/cairo.h | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) - -commit 563dddd81cc06f1d17c1a6880b4e6a3e5d05da97 -Author: Malcolm Tredinnick -Date: Sat Jul 23 09:36:00 2005 +0000 - - Add some missing parameters for API docs. - - ChangeLog | 5 +++++ - src/cairo-ft-font.c | 9 +++++---- - src/cairo.h | 33 +++++++++++++++++++++++++++------ - 3 files changed, 37 insertions(+), 10 deletions(-) - -commit 9fb898898ed3bc6458a365eac43861f1a77a08d0 -Author: Owen Taylor -Date: Sat Jul 23 05:37:23 2005 +0000 - - src/cairo-xlib-private.h src/cairo-xlib-screen.c: Switch to using Screen * not screen number to match surface code. - Get the screen info for the right screen for the surface. - - ChangeLog | 8 ++++++++ - src/cairo-xlib-private.h | 4 ++-- - src/cairo-xlib-screen.c | 5 +++-- - src/cairo-xlib-surface.c | 2 +- - 4 files changed, 14 insertions(+), 5 deletions(-) - -commit 399b00a99b2bbc1c56a05974c936aa69a08021f5 -Author: Owen Taylor -Date: Fri Jul 22 15:15:15 2005 +0000 - - Protect against division by zero in various places. (http://bugzilla.gnome.org/show_bug.cgi?id=311299, reported by Ali Akcaag - - ChangeLog | 5 +++ - src/cairo-ft-font.c | 70 ++++++++++++++++++++++++++++++++++++-------------- - 2 files changed, 55 insertions(+), 20 deletions(-) - -commit 5fb1c8033358f45c523b07be6b7e36c91e772a58 -Author: Owen Taylor -Date: Fri Jul 22 07:15:57 2005 +0000 - - Patch from Tor Lillqvist - Define TT_PRIM_CSPLINE if it wasn't in the headers. (_get_system_quality): Add missing variable smoothing_type. - - ChangeLog | 8 ++++++++ - src/cairo-win32-font.c | 4 ++++ - 2 files changed, 12 insertions(+), 0 deletions(-) - -commit e9c321e66bb2b813783b1504011eb70bf8bdb3f6 -Author: Carl Worth -Date: Fri Jul 22 06:20:53 2005 +0000 - - Initial import of preliminary tutorial pieces. - - doc/tutorial/slides/.cvsignore | 7 + - doc/tutorial/slides/Makefile | 7 + - doc/tutorial/slides/cairo-blank.svg | 487 ++++++++++++++++++++++++ - doc/tutorial/slides/cairo-code.svg | 508 ++++++++++++++++++++++++++ - doc/tutorial/slides/cairo-separator.svg | 491 +++++++++++++++++++++++++ - doc/tutorial/slides/cairo-title.svg | 373 +++++++++++++++++++ - doc/tutorial/slides/cairo.svg | 508 ++++++++++++++++++++++++++ - doc/tutorial/slides/circle-cairo-large.png | Bin 0 -> 3362 bytes - doc/tutorial/slides/circle-cairo.png | Bin 0 -> 1429 bytes - doc/tutorial/slides/circle-ooo-large.png | Bin 0 -> 1491 bytes - doc/tutorial/slides/circle-ooo.png | Bin 0 -> 383 bytes - doc/tutorial/slides/expander-fuzzy-large.png | Bin 0 -> 1300 bytes - doc/tutorial/slides/expander-fuzzy.png | Bin 0 -> 296 bytes - doc/tutorial/slides/expander-sharp-large.png | Bin 0 -> 929 bytes - doc/tutorial/slides/expander-sharp.png | Bin 0 -> 183 bytes - doc/tutorial/slides/fuzzies.svg | 11 + - doc/tutorial/slides/jaggies.svg | 11 + - doc/tutorial/slides/tutorial.xml | 468 ++++++++++++++++++++++++ - doc/tutorial/src/.cvsignore | 7 + - doc/tutorial/src/Makefile | 30 ++ - doc/tutorial/src/cairo-tutorial-gtk.h | 116 ++++++ - doc/tutorial/src/cairo-tutorial-pdf.h | 74 ++++ - doc/tutorial/src/cairo-tutorial-png.h | 74 ++++ - doc/tutorial/src/cairo-tutorial-xlib.h | 219 +++++++++++ - doc/tutorial/src/cairo-tutorial.h | 41 ++ - doc/tutorial/src/circle.c | 22 ++ - doc/tutorial/src/expander.c | 16 + - 27 files changed, 3470 insertions(+), 0 deletions(-) - -commit dd9d984ab90904f47faaf6d3de900c136add010e -Author: Carl Worth -Date: Fri Jul 22 02:04:59 2005 +0000 - - Get the case right. It's cairo, not Cairo. - - ChangeLog | 4 ++++ - src/cairoint.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit a7b38c6826fe6f9d9a02ed94ddd5d955313f9c78 -Author: Carl Worth -Date: Thu Jul 21 21:02:11 2005 +0000 - - Note that sub-pixel text rendering is done now. - - ChangeLog | 4 ++++ - ROADMAP | 7 +++---- - 2 files changed, 7 insertions(+), 4 deletions(-) - -commit 857c9fe1c4808ffe534de7eff0d3479cc439fbea -Author: Owen Taylor -Date: Thu Jul 21 18:12:21 2005 +0000 - - The FT_LOAD_TARGET_* flags aren't separate bitfields, but rather an embedded subfield, so test with FT_LOAD_TARGET_MODE (val->key.flags) == FT_RENDER_LCD, and similar. - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 8 ++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit 3c0bfb39758172cca78611338de1848ea9595522 -Author: Keith Packard -Date: Thu Jul 21 14:31:28 2005 +0000 - - Add ARGB glyph support. - Change Bi-level glyph support to use A1 format. - Support bit/byte swapping of glyph image data in the Xlib backend. - reviewed by: cworth, otaylor - - ChangeLog | 24 ++++ - src/cairo-ft-font.c | 325 +++++++++++++++++++++++++++++++++++++++------- - src/cairo-xlib-surface.c | 218 ++++++++++++++++++++++++++++--- - src/cairoint.h | 4 - - 4 files changed, 504 insertions(+), 67 deletions(-) - -commit a3ad7dc0b9f3495d7797653ba2ffb326e92393fa -Author: Carl Worth -Date: Thu Jul 21 11:26:31 2005 +0000 - - Whitespace fixes. - - ChangeLog | 5 +++++ - src/cairo-ft.h | 5 +++-- - src/cairo-quartz.h | 6 +++--- - 3 files changed, 11 insertions(+), 5 deletions(-) - -commit 9c6299c164e567311816a129125cf3a86148c018 -Author: David Reveman -Date: Thu Jul 21 08:50:20 2005 +0000 - - Fix empty glyph issue in glitz backend - - ChangeLog | 5 +++++ - src/cairo-glitz-surface.c | 9 ++++++--- - 2 files changed, 11 insertions(+), 3 deletions(-) - -commit b3dfbe94c3ec7713904cf5bd1872a0480f96f03a -Author: Keith Packard -Date: Thu Jul 21 08:45:57 2005 +0000 - - Add cairo_xlib_surface_set_drawable which changes the target drawable for an xlib cairo_t to another which shares the same format, screen and display. - reviewed by: otaylor, cworth - - ChangeLog | 11 +++++++++++ - ROADMAP | 2 +- - src/cairo-xlib-surface.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-xlib.h | 6 ++++++ - 4 files changed, 62 insertions(+), 1 deletions(-) - -commit 464ce69689045614a0c44037c77e1261c3fecda5 -Author: Carl Worth -Date: Thu Jul 21 07:41:20 2005 +0000 - - Note that cairo_font_options_t is done now. - - ChangeLog | 4 ++++ - ROADMAP | 10 +++------- - 2 files changed, 7 insertions(+), 7 deletions(-) - -commit 075cf23cdc071b170e591fd07ff6c272d561d3ee -Author: Owen Taylor -Date: Thu Jul 21 06:52:13 2005 +0000 - - src/cairo-font-options.c src/cairo.h src/cairoint.h src/Makefile.am: Add an opaque cairo_font_options_t structure. - src/cairo-font.c src/cairo.h src/cairoint.h: Add a cairo_font_options_t object to cairo_scaled_font_create(). - src/cairo-surface.c src/cairoint.h: Add virtualized cairo_surface_get_font_options() to get the font options for a surface. - Adapt to cairo_scaled_font_create() change. - Add an implementation of get_font_options() that turns off metrics hinting. - src/cairo-xlib-screen.c src/cairo-xlib-private.h: Add a "screen info" structure that holds (for now) information about the default font options for the screen. - Implement get_font_options() - src/cairo-ft-font.c src/cairo-ft.h: Add functions to apply a cairo_font_options_t to a FcPattern or get the load flags for a cairo_font_options_t. - Adapt to font options additions. Add support for non-antialiased rendering of scalable fonts. Add support for turning off metrics hinting. - Adapt to font options additions. - doc/public/Makefile.am doc/public/cairo-sections.txt: Update. - reviewed by: cworth - - ChangeLog | 37 +++ - doc/public/Makefile.am | 3 + - doc/public/cairo-sections.txt | 29 ++- - doc/public/tmpl/cairo-font.sgml | 184 +++++++++++++ - doc/public/tmpl/cairo-ft.sgml | 9 + - doc/public/tmpl/cairo-pattern.sgml | 23 ++ - doc/public/tmpl/cairo-surface.sgml | 13 +- - doc/public/tmpl/cairo.sgml | 27 ++- - src/Makefile.am | 3 +- - src/cairo-font-options.c | 352 +++++++++++++++++++++++++ - src/cairo-font.c | 32 ++- - src/cairo-ft-font.c | 504 ++++++++++++++++++++++++++---------- - src/cairo-ft.h | 3 + - src/cairo-gstate.c | 5 +- - src/cairo-pdf-surface.c | 13 +- - src/cairo-surface.c | 27 ++ - src/cairo-win32-font.c | 101 +++++--- - src/cairo-xlib-private.h | 54 ++++ - src/cairo-xlib-screen.c | 345 ++++++++++++++++++++++++ - src/cairo-xlib-surface.c | 22 ++- - src/cairo.h | 154 +++++++++++- - src/cairoint.h | 17 ++ - 22 files changed, 1762 insertions(+), 195 deletions(-) - -commit a43c9eb7b0b73493735ffa176154073604da33e6 -Author: Carl Worth -Date: Thu Jul 21 00:35:07 2005 +0000 - - Finally grepped through and fixed up the last remaining calls to cairo_pattern_release_surface. - - ChangeLog | 11 +++++++++ - src/cairo-glitz-surface.c | 56 ++++++++++++++++++++++++++------------------ - 2 files changed, 44 insertions(+), 23 deletions(-) - -commit 133d7f0b441d3ba255a9a36163e7446f24f7601b -Author: Carl Worth -Date: Wed Jul 20 23:30:08 2005 +0000 - - Fix yet another file that I missed when I made the cairo_pattern_release_surface change. You would think that I would have grepped for all uses of this function by now. - - ChangeLog | 8 ++++++++ - src/cairo-xcb-surface.c | 6 +++--- - 2 files changed, 11 insertions(+), 3 deletions(-) - -commit 63331a8d9218424ecf176b0b34a53fc8723fede9 -Author: Carl Worth -Date: Wed Jul 20 21:54:35 2005 +0000 - - Mark cairo_xlib_surface_create as complete. Move cairo_xlib_surface_set_drawable from 0.6 to 1.0 since it is an API addition, not a change. - - ChangeLog | 6 ++++++ - ROADMAP | 16 ++++++++-------- - 2 files changed, 14 insertions(+), 8 deletions(-) - -commit 689fdfb6ea7460aec6283414a79bbf17a2d03eae -Author: Carl Worth -Date: Wed Jul 20 19:23:19 2005 +0000 - - Fix macro to not consider CAIRO_FORMAT_ARGB32 (==0) as a valid cairo_content_t. - - ChangeLog | 7 +++++++ - src/cairo.h | 8 +++++--- - 2 files changed, 12 insertions(+), 3 deletions(-) - -commit 88cf98fe334577fc3ecd84e179479b3b60f55c91 -Author: Keith Packard -Date: Wed Jul 20 18:52:31 2005 +0000 - - Add Screen* arguments to: - cairo_xlib_surface_create_with_xrender_format cairo_xlib_surface_create_for_bitmap - Required to correctly identify when two Xlib surfaces are compatible with Core and Render rendering requests. - cairo_xlib_surface_create can determine the screen given the required Visual * - reviewed by: otaylor - - ChangeLog | 27 +++++++++++ - src/cairo-xlib-surface.c | 116 ++++++++++++++++++++++++++++++++------------- - src/cairo-xlib-xrender.h | 1 + - src/cairo-xlib.h | 1 + - test/cairo-test.c | 1 + - 5 files changed, 112 insertions(+), 34 deletions(-) - -commit d1b1167ec5f5d89bec9f27f1e253cad0baba3b98 -Author: Carl Worth -Date: Wed Jul 20 18:31:17 2005 +0000 - - Move all API changes from 1.0 to 0.6. Other 1.0 API issues are strictly additions. - - ChangeLog | 5 +++ - ROADMAP | 121 +++++++++++++++++++------------------------------------------ - 2 files changed, 43 insertions(+), 83 deletions(-) - -commit b0b2f8021a6eb60c3b0d434f65f1c636540aeeb6 -Author: Carl Worth -Date: Mon Jul 18 14:36:39 2005 +0000 - - Add valgrind suppressions for libpng/libz use of uninitialized data. There are clearly bugs here that are not cairo's fault as zeroing the buffer before writing the png image actually causes more errors(\!). And, notably, setting all the data to random bytes usually makes the errors go away. - Change the check-valgrind target to include the .valgrind-suppresions file and to tee output into valgrind.log. - - ChangeLog | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cd587375e327da08b5da01beccb1ebb8bb2d1e3d -Author: Carl Worth -Date: Mon Jul 18 14:35:54 2005 +0000 - - Add valgrind suppressions for libpng/libz use of uninitialized data. There are clearly bugs here that are not cairo's fault as zeroing the buffer before writing the png image actually causes more errors(\!). And, notably, setting all the data to random bytes usually makes the errors go away. - Change the check-valgrind target to include the .valgrind-suppresions file and to tee output into valgrind.log. - - ChangeLog | 13 +++++++++++++ - test/.valgrind-suppressions | 26 ++++++++++++++++++++++++++ - test/Makefile.am | 2 +- - 3 files changed, 40 insertions(+), 1 deletions(-) - -commit 0adea66c73bb8dec0e45a900815d98c029221219 -Author: Carl Worth -Date: Mon Jul 18 11:51:42 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with SNAPSHOT_0_5_2. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 0e40baa9a7bd08abd15bfdc666c6e2d21d791e82 -Author: Carl Worth -Date: Mon Jul 18 09:23:33 2005 +0000 - - Fix the quartz backend so that it at least compiles again. This change is slipped in before 0.5.2 was pushed out and tagged. - - ChangeLog | 8 ++++++++ - src/cairo-quartz-surface.c | 11 ++++------- - 2 files changed, 12 insertions(+), 7 deletions(-) - -commit b65393917cade57d65ef92aa3510d7e3724f476d -Author: Carl Worth -Date: Mon Jul 18 08:31:24 2005 +0000 - - Added notes for snapshot 0.5.2 - Increment CAIRO_VERSION to 0.5.2 - - ChangeLog | 6 ++++ - NEWS | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - 3 files changed, 81 insertions(+), 1 deletions(-) - -commit f0fae1d1bcde4f469cf6e00272fd4530875d283f -Author: Carl Worth -Date: Mon Jul 18 08:23:21 2005 +0000 - - Fix leak of pattern. - - ChangeLog | 5 +++++ - test/composite-integer-translate-over-repeat.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 751e059f5c506138c478fbcc2e9dfe8e92aaa3ab -Author: Carl Worth -Date: Mon Jul 18 08:04:16 2005 +0000 - - Note some progress. - New helper function to help create an image surface from a PNG file, while taking the srcdir environment variable into consideration. Rename the pattern creating helper function to match. - Use new cairo_test_create_surface_from_png so that non-srcdir builds work. - Track change in cairo_test_create_pattern_from_png. - - ChangeLog | 19 +++++++++++++++++++ - ROADMAP | 8 ++++---- - test/cairo-test.c | 16 +++++++++++++--- - test/cairo-test.h | 6 ++++-- - test/composite-integer-translate-over.c | 2 +- - test/composite-integer-translate-source.c | 2 +- - test/mask.c | 2 +- - test/trap-clip.c | 2 +- - 8 files changed, 44 insertions(+), 13 deletions(-) - -commit 584954859ead08491cd5ed04aec54aae6b1048b8 -Author: Carl Worth -Date: Sun Jul 17 22:15:57 2005 +0000 - - Add note that Xlib caches need to be cleand up on close of display. - - BUGS | 7 +++++++ - ChangeLog | 5 +++++ - 2 files changed, 12 insertions(+), 0 deletions(-) - -commit c36fd95f6ed1dbdb9c7053f8ba5c58623d6095b8 -Author: Jeff Muizelaar -Date: Sat Jul 16 11:27:32 2005 +0000 - - Add call to fbCompositeSrcSrc_nxn that I missed. - - pixman/ChangeLog | 5 +++++ - pixman/src/ic.c | 6 ++++++ - 2 files changed, 11 insertions(+), 0 deletions(-) - -commit d3661b0d53bf0c3c4132d8d02f8527019d65fc6b -Author: Carl Worth -Date: Fri Jul 15 13:59:47 2005 +0000 - - Remove cairo_private qualifier from .c files, (we only need it in the .h files). - - ChangeLog | 6 ++++++ - src/cairo-font.c | 2 +- - src/cairo-surface.c | 18 +++++++++--------- - 3 files changed, 16 insertions(+), 10 deletions(-) - -commit 8ad8aa63605610eaec78cdbfea321148c02be331 -Author: Vladimir Vukicevic -Date: Fri Jul 15 13:45:19 2005 +0000 - - Use XCopyArea when possible, for optimization and bug workaround. - Exercise XCopyArea, XRenderComposite, and XSetTile/XFillRectangle paths for _cairo_xlib_surface_composite - - ChangeLog | 10 ++ - ROADMAP | 2 +- - src/cairo-xlib-surface.c | 117 ++++++++++++++----- - test/.cvsignore | 3 + - test/Makefile.am | 11 ++- - test/composite-integer-translate-over-ref.png | Bin 0 -> 15397 bytes - ...composite-integer-translate-over-repeat-ref.png | Bin 0 -> 401 bytes - test/composite-integer-translate-over-repeat.c | 61 ++++++++++ - test/composite-integer-translate-over.c | 42 +++++++ - test/composite-integer-translate-source-ref.png | Bin 0 -> 16385 bytes - test/composite-integer-translate-source.c | 42 +++++++ - 11 files changed, 255 insertions(+), 33 deletions(-) - -commit 2534057cb5df78eb5aa79c24317e4a97f6c0f2c6 -Author: Carl Worth -Date: Fri Jul 15 10:39:59 2005 +0000 - - Add new check-valgrind target for running the test suite under the influence of valgrind. - Fix memory leak when reference image is not found. - - ChangeLog | 8 ++++++++ - test/Makefile.am | 3 +++ - test/buffer-diff.c | 4 +++- - 3 files changed, 14 insertions(+), 1 deletions(-) - -commit 07d09acf2a9a8341f281cfe235325a52a20cd750 -Author: Carl Worth -Date: Fri Jul 15 01:38:38 2005 +0000 - - Fix a few memory leaks (missing cairo_pattern_destroy in 3 places). - - ChangeLog | 6 ++++++ - test/mask.c | 5 ++++- - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 3a053c1e58962c3fb9eae11954651270244cabae -Author: Carl Worth -Date: Fri Jul 15 01:05:56 2005 +0000 - - Fix memory leak, (missing _cairo_pattern_fini). - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 89a9771b60906092cca1b5e7582be3ae140b9bc2 -Author: Carl Worth -Date: Fri Jul 15 00:56:58 2005 +0000 - - Remove errant line of code that was inadvertently committed recently. - - ChangeLog | 5 +++++ - test/cairo-test.c | 3 --- - 2 files changed, 5 insertions(+), 3 deletions(-) - -commit 3e05319bf8584d88fc34825d79c138f0e9f8a297 -Author: Carl Worth -Date: Thu Jul 14 17:55:58 2005 +0000 - - Fix leak of surface. - - ChangeLog | 4 ++++ - test/surface-finish-twice.c | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 6df1baa395ad11c1a22dd5279d6281b3ee149e94 -Author: Carl Worth -Date: Thu Jul 14 17:52:17 2005 +0000 - - Call _cairo_array_fini on the several array objects to patch memory leaks. - - ChangeLog | 6 ++++++ - src/cairo-pdf-surface.c | 10 ++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit df181620c0e6ca889013435d1ae5d0ffddfeec9d -Author: Carl Worth -Date: Thu Jul 14 16:56:08 2005 +0000 - - Eek. Yet _more_ fixups for _cairo_pattern_release_surface missed earlier. - - ChangeLog | 7 +++++++ - src/cairo-xlib-surface.c | 8 ++++---- - 2 files changed, 11 insertions(+), 4 deletions(-) - -commit 174056f7364892b07177f9e7cbda2821ca6c9ac9 -Author: Stuart Parmenter -Date: Thu Jul 14 16:50:58 2005 +0000 - - blue and green values were swapped in the DO_SOURCE case. - - ChangeLog | 5 +++++ - src/cairo-win32-surface.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 40edca337e3976ddca98caafcbab950000e66880 -Author: Carl Worth -Date: Thu Jul 14 16:18:39 2005 +0000 - - Rewrite to use cairo_image_surface_create_from_png rather than custom read_png_argb32. In addition to being simpler, this eliminates the leak of the image data buffer. - Add calls to cairo_pattern_destroy to close two memory leaks. - - ChangeLog | 10 ++++++++++ - test/cairo-test.c | 19 ++++++++----------- - test/trap-clip.c | 2 ++ - 3 files changed, 20 insertions(+), 11 deletions(-) - -commit d8500060a972de9ca0f202d9cfb73460446dfc17 -Author: Carl Worth -Date: Thu Jul 14 15:47:18 2005 +0000 - - Fix up one more call to _cairo_pattern_release_surface missed in the previous commit. - - ChangeLog | 6 ++++++ - src/cairo-pattern.c | 50 ++++++++++++++++++++++++-------------------------- - 2 files changed, 30 insertions(+), 26 deletions(-) - -commit 3cd006bb2b3986aefaf6cf9002735c430e4bc172 -Author: Carl Worth -Date: Thu Jul 14 15:10:47 2005 +0000 - - Fix to accept a cairo_pattern_t rather than a cairo_surface_t as the primary argument. - Track change in _cairo_pattern_release_surface and also pass the appropriate pattern for each acquired surface. The previous backend mismatch was causing memory leaks. - Remove stale comment. - Add missing fclose to keep valgrind happy about memory leaks. - - ChangeLog | 19 +++++++++++++++++++ - src/cairo-image-surface.c | 6 +++--- - src/cairo-pattern.c | 13 +++++++++---- - src/cairo-xlib-surface.c | 1 - - src/cairoint.h | 2 +- - test/xlib-surface.c | 4 ++++ - 6 files changed, 36 insertions(+), 9 deletions(-) - -commit 288f0f7f49849c74c1025804ecb7076b3485b8f2 -Author: Carl Worth -Date: Thu Jul 14 12:50:28 2005 +0000 - - Make the per-backend test results print XFAIL rather than FAIL for expected failures. - - ChangeLog | 6 ++++++ - test/cairo-test.c | 12 ++++++++---- - 2 files changed, 14 insertions(+), 4 deletions(-) - -commit 6f6c9196c8248f469a9f3b54f886816430c86ac4 -Author: Carl Worth -Date: Thu Jul 14 12:25:41 2005 +0000 - - Fix comment describing test result. It's not enough that all tested backends are successful. We also require that at least one backend is actually tested. - - ChangeLog | 7 +++++++ - test/cairo-test.c | 3 ++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 456e3ffc4ddd496823dce6551b0545ce5c9530d4 -Author: Carl Worth -Date: Thu Jul 14 12:20:42 2005 +0000 - - Don't consider a test to fail if it can't create a surface at all (eg. no X server is available). Instead mark this backend as untested and only consider the overall test a success if all tested backend are successful. - - ChangeLog | 8 ++++++++ - test/cairo-test.c | 31 ++++++++++++++++++++++++++----- - test/cairo-test.h | 3 ++- - 3 files changed, 36 insertions(+), 6 deletions(-) - -commit 0c3ee348f890879154089f23ea37bfaa2bfcd87a -Author: Carl Worth -Date: Thu Jul 14 11:48:40 2005 +0000 - - Add missing (putatively unreachable) return value. - - ChangeLog | 5 +++++ - src/cairo-ps-surface.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 14ea7b583b90142bcec829716a0077d969b847e3 -Author: Carl Worth -Date: Thu Jul 14 11:45:39 2005 +0000 - - Remove the copying of the region. This was a workaround for a missing copy bug in libpixman that has since been fixed. So now it was just a memory leak. - - ChangeLog | 7 +++++++ - src/cairo-image-surface.c | 15 +-------------- - 2 files changed, 8 insertions(+), 14 deletions(-) - -commit 171b053347c83d2a1f234b553510ef3f72f22f29 -Author: Carl Worth -Date: Thu Jul 14 11:41:00 2005 +0000 - - Whitespace fix. (pixman_image_destroy): Fix leak of the clip region associated with an image. (NOTE: xserver/render doesn't have the same bug since it has FreePicture that calls into both DestroyPicture and DestroyPictureClip separately). - - pixman/ChangeLog | 8 ++++++++ - pixman/src/icimage.c | 4 +++- - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit 513e9e6fe5bbd8dda3e90c89d200f34104b27646 -Author: Carl Worth -Date: Thu Jul 14 11:24:56 2005 +0000 - - Patch memory leak of png_info object. - - ChangeLog | 5 +++++ - src/cairo-png.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 574b702029894f035791a99600130b16f30ddd55 -Author: Carl Worth -Date: Thu Jul 14 11:17:12 2005 +0000 - - Rename create-for-png test to create-from-png to match the naming of the cairo_image_surface_create_from_png function. - - ChangeLog | 10 ++++++ - test/.cvsignore | 2 +- - test/Makefile.am | 6 ++-- - test/create-for-png-ref.png | Bin 100 -> 0 bytes - test/create-for-png.c | 69 ------------------------------------------- - test/create-from-png.c | 4 +- - 6 files changed, 16 insertions(+), 75 deletions(-) - -commit c41e9d698f5dbc318819fb958618b704dbc5388a -Author: Carl Worth -Date: Thu Jul 14 11:11:15 2005 +0000 - - Patch a few memory leaks. - - ChangeLog | 6 ++++++ - test/cairo-test.c | 47 ++++++++++++++++++++++++++--------------------- - 2 files changed, 32 insertions(+), 21 deletions(-) - -commit 3a469446376eb23bd4a852417b0a319b914805b9 -Author: Kristian Høgsberg -Date: Wed Jul 13 12:32:51 2005 +0000 - - Use the _cairo_surface_*() functions when replaying. - Fold the "locate fallbacks" pass into the postscript output pass, and add a simple, first implementation of image fallbacks. - - ChangeLog | 9 ++ - src/cairo-meta-surface-private.h | 1 + - src/cairo-meta-surface.c | 35 +++--- - src/cairo-ps-surface.c | 286 ++++++++++++++++++-------------------- - 4 files changed, 163 insertions(+), 168 deletions(-) - -commit aafc2e749725fab0684cce6e36b130f838696912 -Author: Carl Worth -Date: Wed Jul 13 11:34:37 2005 +0000 - - Rename CAIRO_FONT_BACKEND_DEFAULT to the more accurate CAIRO_SCALED_FONT_BACKEND_DEFAULT. - - ChangeLog | 7 +++++++ - src/cairo-font.c | 3 ++- - src/cairoint.h | 6 +++--- - 3 files changed, 12 insertions(+), 4 deletions(-) - -commit 6725cc9d7f9b44f930478c337073d372272407de -Author: Carl Worth -Date: Wed Jul 13 11:01:25 2005 +0000 - - New predicates to allow checking for cairo_ft derivates of generic font type. - Add explicit checks for cairo_ft derivatives of generic fonts rather than just blindly assuming that's what we get. - - ChangeLog | 15 +++++++++++++++ - src/cairo-font-subset.c | 4 ++++ - src/cairo-ft-font.c | 12 ++++++++++++ - src/cairo-ft-private.h | 6 ++++++ - src/cairo-pdf-surface.c | 8 ++++++++ - src/cairo-ps-surface.c | 12 ++++++++++++ - 6 files changed, 57 insertions(+), 0 deletions(-) - -commit dda555de995e2af3cc49e3e2ed9e2444c8622a55 -Author: Carl Worth -Date: Tue Jul 12 14:43:37 2005 +0000 - - Remove destroy notifier. This simplifies the implementation a bit, and no anticipated use of cairo_hash_table_t in cairo needs the destroy notifier. Most uses will be hash-backed object create/destroy functions. - (_cairo_hash_table_destroy): Document that it is now a fatal error to call _cairo_hash_table_destroy on a non-empty hash table. - (_cairo_hash_table_insert): Document that it is now a fatal error to insert an entry with a key that matches an existing entry. - (_cairo_hash_table_random_entry): Add predicate function so that the user can select a random entry satisying the given predicate. - (_cairo_hash_table_remove): Change return type to void since failure is really not possible here. - - ChangeLog | 22 +++++++++ - src/cairo-hash-private.h | 25 +++++++--- - src/cairo-hash.c | 115 ++++++++++++++++++++------------------------- - 3 files changed, 90 insertions(+), 72 deletions(-) - -commit efb413c084c51c08875ab2f356484718ff4f91dd -Author: Carl Worth -Date: Mon Jul 11 16:24:19 2005 +0000 - - Add note that glyph measurement performance needs to improve. - - ChangeLog | 1 + - ROADMAP | 3 +++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit 4329b709639c2dd3a6ec0cf113877323abfcbc2c -Author: Carl Worth -Date: Mon Jul 11 16:09:55 2005 +0000 - - Fix typo (cairo_ft_options_t -> cairo_font_options_t). - - ChangeLog | 1 + - ROADMAP | 2 +- - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit abdaf7555f467e2df248430853e9dd8bf3c4056d -Author: Carl Worth -Date: Mon Jul 11 16:07:08 2005 +0000 - - Add cache lock deadlock problem to roadmap for 0.5.2. - Disable mutex locks, (making the caches non-thread-safe again, just like they were in the last snapshot and before). - - ChangeLog | 8 ++++++++ - ROADMAP | 9 +++++++++ - src/cairoint.h | 48 ++++++++++++++++++++++++++++++++++++------------ - 3 files changed, 53 insertions(+), 12 deletions(-) - -commit e9d42ab9f9b6def69c8de976fb3482b9559ffb9c -Author: Carl Worth -Date: Mon Jul 11 14:03:51 2005 +0000 - - ROADMAP: Add recent API change proposals (cairo_ft_options_t, cairo_xlib_surface_create needs to be screen aware, and cairo_xlib_surface_set_drawable). - - ChangeLog | 3 +++ - ROADMAP | 15 +++++++++++++++ - 2 files changed, 18 insertions(+), 0 deletions(-) - -commit 9cddbaf8e6d4aef89017baf6bf10d8d34a47b0ef -Author: Carl Worth -Date: Mon Jul 11 13:37:43 2005 +0000 - - ROADMAP: Note progress on cairo_meta_surface_t, ARGB text, and group support. - - ChangeLog | 2 ++ - ROADMAP | 11 ++++++++--- - 2 files changed, 10 insertions(+), 3 deletions(-) - -commit 48e5806f1e30e1e46a18442a568ed99daab78f66 -Author: Carl Worth -Date: Mon Jul 11 13:29:45 2005 +0000 - - Note that the cairo_content_t work is done. - Note that this function is computing an incorrect result. - - ChangeLog | 7 +++++++ - ROADMAP | 4 ++-- - src/cairo-arc.c | 2 ++ - 3 files changed, 11 insertions(+), 2 deletions(-) - -commit 2ff04df85219828c0058155ba7038a23bd264ebc -Author: Jeff Muizelaar -Date: Sat Jul 9 19:00:36 2005 +0000 - - Begin merging in newer fb code. - The code comes from keithp: Initial import of Composite extension along with name change from Apportion. Added some accelerated code to fbpict to make this initial hack a bit faster. "real" extension bits to follow. - - pixman/ChangeLog | 12 ++++ - pixman/src/ic.c | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 187 insertions(+), 2 deletions(-) - -commit 1d48dc6cdb653b95c4353613399972663c71e68e -Author: Jeff Muizelaar -Date: Sat Jul 9 18:13:14 2005 +0000 - - More misc merging. Mostly s/pixman_composite/fbComposite/. - - pixman/ChangeLog | 12 +++++++++ - pixman/src/ic.c | 72 +++++++++++++++++++++++++++--------------------------- - 2 files changed, 48 insertions(+), 36 deletions(-) - -commit 36a57bcdcbb0025250bfa037fbd7e7c08819e43b -Author: Jeff Muizelaar -Date: Sat Jul 9 15:47:43 2005 +0000 - - More misc merging. Mostly stuff like s/uint32_t/CARD32/. - - pixman/ChangeLog | 16 ++ - pixman/src/ic.c | 626 +++++++++++++++++++++++++++--------------------------- - 2 files changed, 329 insertions(+), 313 deletions(-) - -commit 9a2ba48b298c3bf4b462e1030b105efaf9fd015c -Author: Carl Worth -Date: Fri Jul 8 10:12:28 2005 +0000 - - Give enum tags an underscore prefix to match the style of the struct tags. Add new cairo_content_t and change cairo_surface_create_similar to accept a cairo_content_t rather than a cairo_format_t. - Change surface backend create_similar call to accept a cairo_content_t rather than a cairo_format_t. - Fix all calls into create_similar to pass a cairo_content_t rather than a cairo_format_t. - - ChangeLog | 44 +++++++++++++++++++ - src/cairo-glitz-surface.c | 41 +++++++++-------- - src/cairo-gstate.c | 10 ++-- - src/cairo-image-surface.c | 52 +++++++++++++++++++++- - src/cairo-meta-surface.c | 4 +- - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 4 +- - src/cairo-ps-surface.c | 10 ++-- - src/cairo-quartz-surface.c | 11 ++--- - src/cairo-surface.c | 36 ++++++++++++--- - src/cairo-win32-surface.c | 9 +++- - src/cairo-xcb-surface.c | 6 ++- - src/cairo-xlib-surface.c | 8 ++- - src/cairo.h | 103 +++++++++++++++++++++++++++----------------- - src/cairoint.h | 14 ++++-- - test/mask.c | 4 +- - test/pixman-rotate.c | 2 +- - test/source-clip.c | 2 +- - 18 files changed, 256 insertions(+), 106 deletions(-) - -commit 9fd2f0a25c4954e839d79de00ff14b1990ae39eb -Author: Carl Worth -Date: Thu Jul 7 01:15:21 2005 +0000 - - Add a missing word. - Note that the BadMatch bug has been resolved. - - CODING_STYLE | 4 ++-- - ChangeLog | 6 ++++++ - ROADMAP | 9 ++++++--- - 3 files changed, 14 insertions(+), 5 deletions(-) - -commit f766e06d25334cd8d75d28d105b6a2fa62f08702 -Author: Carl Worth -Date: Wed Jul 6 14:52:01 2005 +0000 - - Remove CAIRO_STATUS_NO_TARGET_SURFAC and add CAIRO_STATUS_INVALID_STATUS. - Don't check for gstate->target == NULL anymore as the API now guarantees it never occurs. - Check that path->status is a valid status value and cause an INVALID_STATUS error otherwise. - Test the new CAIRO_STATUS_INVALID_STATUS error case in cairo_append_path. - - ChangeLog | 18 ++++++++++++++++++ - src/cairo-gstate.c | 9 --------- - src/cairo.c | 18 +++++++++++++----- - src/cairo.h | 27 ++++++++++++++------------- - test/path-data.c | 15 +++++++++++++++ - 5 files changed, 60 insertions(+), 27 deletions(-) - -commit eb12e493084ace63cebf9eb95b07953a952a817f -Author: Carl Worth -Date: Wed Jul 6 11:23:39 2005 +0000 - - Require libpixman >= 0.1.5, (since 0.1.4 crashes on some X servers). - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit ad0e040fb6625c9fcc76b99c65f3caff098fd256 -Author: Carl Worth -Date: Tue Jul 5 22:30:59 2005 +0000 - - Disable the compilation of the _ps_locate_fallbacks code which, inaddition to being broken, appears to not currently be used. - - ChangeLog | 6 ++++++ - src/cairo-ps-surface.c | 11 +++++++++-- - 2 files changed, 15 insertions(+), 2 deletions(-) - -commit e314e86cc1eb5feafee621ece4be79d897eb2850 -Author: David Reveman -Date: Mon Jul 4 03:58:43 2005 +0000 - - Use frame buffer objects for accelerated offscreen drawing in glitz backend - - ChangeLog | 9 +++ - configure.in | 2 +- - src/cairo-glitz-surface.c | 156 ++++++++++++++++++--------------------------- - 3 files changed, 72 insertions(+), 95 deletions(-) - -commit 7a923e6dddcefa643ef059e8eef0ebeba7e383ee -Author: Kristian Høgsberg -Date: Fri Jul 1 12:45:35 2005 +0000 - - Rewrite postscript backend to generate more interesting output than the current big-image implementation, using meta surfaces for font subsetting and image fallbacks. - Remove obsolete comment. - Make a couple of stylistic changes and add _cairo_output_stream_write_hex_string. - Add _cairo_surface_intersect_clip_path so we can replay path clipping. - - ChangeLog | 15 + - src/cairo-meta-surface.c | 6 - - src/cairo-output-stream.c | 28 +- - src/cairo-ps-surface.c | 1261 +++++++++++++++++++++++++++++++++++++++------ - src/cairo-surface.c | 17 + - src/cairoint.h | 11 + - 6 files changed, 1167 insertions(+), 171 deletions(-) - -commit 7ab5dbfa7547bd0d8a99e4d0fcd34d8a55722a11 -Author: Kristian Høgsberg -Date: Fri Jul 1 12:22:23 2005 +0000 - - Add meta surface implementation. - Add cairo-meta-surface.c and cairo-meta-surface-private.h - - ChangeLog | 8 + - src/Makefile.am | 2 + - src/cairo-meta-surface-private.h | 151 ++++++++++ - src/cairo-meta-surface.c | 601 ++++++++++++++++++++++++++++++++++++++ - 4 files changed, 762 insertions(+), 0 deletions(-) - -commit 4e01c4aa2f8427113153fe569b6cf22388ba0882 -Author: Carl Worth -Date: Wed Jun 29 17:05:31 2005 +0000 - - Remove debugging printfs. - - ChangeLog | 7 ++++++- - src/cairo-hash.c | 4 ---- - 2 files changed, 6 insertions(+), 5 deletions(-) - -commit aad6dce6bc9adc829e719345c5df954d9464cefb -Author: Carl Worth -Date: Wed Jun 29 17:02:37 2005 +0000 - - Add _cairo_hash_table_random_entry. - Fix to update live_entries. - style changes. - Add code to shrink table as well as to grow it. - Call new version of resize so that table will grow or shrink as needed on insert and remove. - - ChangeLog | 18 ++++++ - src/cairo-hash-private.h | 5 +- - src/cairo-hash.c | 138 +++++++++++++++++++++++++++++++++++++++------- - 3 files changed, 139 insertions(+), 22 deletions(-) - -commit e7ffbb4179b388304d4aadda66eb6c641758f91b -Author: Carl Worth -Date: Wed Jun 29 15:02:10 2005 +0000 - - Rewrite hash table to use a single cairo_hash_entry_t* rather than void *key and void *value. This is slightly more painful to use, but lends itself to a more memory-efficient implementation. Add documentation. - - ChangeLog | 12 ++ - src/cairo-hash-private.h | 58 ++++++-- - src/cairo-hash.c | 332 +++++++++++++++++++++++++--------------------- - 3 files changed, 235 insertions(+), 167 deletions(-) - -commit 82f244eca84b37886bd0b118dc44ec04342d7a26 -Author: Carl Worth -Date: Wed Jun 29 07:04:34 2005 +0000 - - Rework the cache code as a hast table with a much simpler interface, (no object derviation is required to use it). - Remove extraneous prototype for non-existent _cairo_cache_reference. - - ChangeLog | 14 + - src/cairo-hash-private.h | 85 ++++++ - src/cairo-hash.c | 643 ++++++++++++++++++++-------------------------- - src/cairoint.h | 3 - - 4 files changed, 374 insertions(+), 371 deletions(-) - -commit 5ab8a3085ee4c5cab7d07d233530d74c2d978d94 -Author: Kristian Høgsberg -Date: Tue Jun 28 15:58:42 2005 +0000 - - New functions to create a cairo_pattern_t corresponding to a solid color and a translucent color respectively. Document a few pattern functions. - - ChangeLog | 7 +++ - src/cairo-pattern.c | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.c | 37 +++---------- - src/cairo.h | 8 +++ - 4 files changed, 171 insertions(+), 29 deletions(-) - -commit e7442a4523603642c4805058140a7ad23fc0489d -Author: Tor Lillqvist -Date: Tue Jun 28 15:03:53 2005 +0000 - - Implement. - reviewed by: otaylor - - ChangeLog | 7 +++ - src/cairo-win32-font.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 135 insertions(+), 5 deletions(-) - -commit 6d65ee6fc40ed1dcf7cc2f50413afc207520b299 -Author: Owen Taylor -Date: Tue Jun 28 13:28:53 2005 +0000 - - Also flag older XFree86 servers as buggy-repeat. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit e0982300cad9cf9873c28f69e025dd9a278934f0 -Author: Tor Lillqvist -Date: Tue Jun 28 11:52:42 2005 +0000 - - Prevent crash on empty string. - - ChangeLog | 5 +++++ - src/cairo-atsui-font.c | 17 ++++++++++------- - 2 files changed, 15 insertions(+), 7 deletions(-) - -commit f3b7d3dfd8d2bec03969bc5a52fb41473b88c747 -Author: Owen Taylor -Date: Tue Jun 28 05:02:27 2005 +0000 - - Fix stray commit marker - - ChangeLog | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 3b0c3d0ee84f991347df12249f944c780dde99f8 -Author: Keith Packard -Date: Sat Jun 25 23:24:19 2005 +0000 - - Provide locking macros, implement with pthreads. - Add _cairo_cache_shrink_to which reduces cache memory usage to a specified level. - Change global glyph and xlib glyphset caches behaviour to only shrink cache on unlock. This is done by telling the cache code to never shrink (max_memory == 0), and then manually shrinking using _cairo_cache_shrink_to from the unlock function. - Fix Carl's variable renaming mixing (cache = cache). - reviewed by: cworth - - ChangeLog | 33 ++++++++++++++++++++++++++++ - configure.in | 8 +++++++ - src/cairo-cache.c | 24 +++++++++++++------- - src/cairo-font.c | 28 +++++++++++++++-------- - src/cairo-ft-font.c | 6 +++- - src/cairo-hash.c | 24 +++++++++++++------- - src/cairo-xlib-surface.c | 53 +++++++++++++-------------------------------- - src/cairoint.h | 23 ++++++++++++++++++++ - 8 files changed, 132 insertions(+), 67 deletions(-) - -commit 574f7f560bf2cc851ad4f3267840e37fa06611fa -Author: Jeff Muizelaar -Date: Sat Jun 25 15:03:17 2005 +0000 - - Merge over most of the low-hanging renames from xserver/fb. - - pixman/ChangeLog | 34 +++ - pixman/src/ic.c | 30 +- - pixman/src/icblt.c | 34 ++-- - pixman/src/icbltone.c | 32 ++-- - pixman/src/iccompose.c | 498 ++++++++++++++++++------------------ - pixman/src/icint.h | 296 ++++++++++++---------- - pixman/src/icrop.h | 18 +- - pixman/src/icutil.c | 2 +- - pixman/src/pixman-xserver-compat.h | 4 +- - 9 files changed, 501 insertions(+), 447 deletions(-) - -commit be38e07c4e511c075f9a30c67a4385bbb1d30594 -Author: Jeff Muizelaar -Date: Sat Jun 25 14:41:38 2005 +0000 - - Fix broken build on older gcc's caused by overzealous s/IC_/FB_/g - - pixman/ChangeLog | 5 +++++ - pixman/src/icint.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 5f0e8de3e5721d55328b6b06922f7b29b49cc5cb -Author: Owen Taylor -Date: Sat Jun 25 13:51:22 2005 +0000 - - Add mostly useless (other than perhaps 90-degree rotation) code for transforming bitmap glyphs. - - ChangeLog | 8 +++- - src/cairo-ft-font.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 142 insertions(+), 2 deletions(-) - -commit 13a27d19d4e8748a4233b70cdd4a223865d3d57c -Author: Carl Worth -Date: Sat Jun 25 02:00:17 2005 +0000 - - From: J. Ali Harlow" Reviewed by: Vladimir Vukicevic - Update win32 backend to match current API, so it actually builds once again. - - ChangeLog | 22 ++++++++++++++++++++++ - src/cairo-win32-surface.c | 19 +++++++++++-------- - test/Makefile.am | 4 ++-- - 3 files changed, 35 insertions(+), 10 deletions(-) - -commit 64d5b34a9843e63d36c605abe7cdd56bacabccee -Author: Jeff Muizelaar -Date: Fri Jun 24 20:13:19 2005 +0000 - - s/Ic/Fb/g This gets read of most of the [Ii][cC]'s the rest will probably dealt with on a case by case basis. - trimmed function list again. - - pixman/ChangeLog | 26 +++ - pixman/src/ic.c | 108 +++++----- - pixman/src/icblt.c | 268 +++++++++++----------- - pixman/src/icbltone.c | 174 ++++++++-------- - pixman/src/iccolor.c | 20 +- - pixman/src/iccompose.c | 288 ++++++++++++------------ - pixman/src/icformat.c | 10 +- - pixman/src/icimage.c | 36 ++-- - pixman/src/icimage.h | 70 +++--- - pixman/src/icint.h | 426 ++++++++++++++++++------------------ - pixman/src/icpixels.c | 28 ++-- - pixman/src/icrect.c | 6 +- - pixman/src/icrop.h | 66 +++--- - pixman/src/icstipple.c | 20 +- - pixman/src/ictrap.c | 6 +- - pixman/src/ictri.c | 20 +- - pixman/src/icutil.c | 4 +- - pixman/src/pixman-xserver-compat.h | 2 +- - 18 files changed, 802 insertions(+), 776 deletions(-) - -commit 42fc090745c8d262b8348b9f7a6c204e9a9b2379 -Author: Jeff Muizelaar -Date: Fri Jun 24 18:28:19 2005 +0000 - - selective s/Ic/fb/g. - I took out the list of functions because it was ridiculously long. - - pixman/ChangeLog | 16 ++ - pixman/src/ic.c | 96 +++++----- - pixman/src/icblt.c | 34 ++-- - pixman/src/icbltone.c | 96 +++++----- - pixman/src/iccompose.c | 466 ++++++++++++++++++++++++------------------------ - pixman/src/icimage.h | 2 +- - pixman/src/icint.h | 30 ++-- - pixman/src/icrop.h | 26 ++-- - pixman/src/icstipple.c | 2 +- - pixman/src/icutil.c | 42 +++--- - 10 files changed, 413 insertions(+), 397 deletions(-) - -commit 43e3e7eeff6ff0f9fc0b161f70dfa0f5071a087e -Author: Jeff Muizelaar -Date: Fri Jun 24 18:21:15 2005 +0000 - - s/IC_/FB_/g - dd #define FB_BITS IC_BITS so that FB_BITS get defined early enough - - pixman/ChangeLog | 18 ++++ - pixman/src/ic.c | 4 +- - pixman/src/icblt.c | 106 +++++++++++----------- - pixman/src/icbltone.c | 76 ++++++++-------- - pixman/src/icint.h | 168 ++++++++++++++++++------------------ - pixman/src/icpixels.c | 6 +- - pixman/src/icrop.h | 4 +- - pixman/src/icstipple.c | 6 +- - pixman/src/icutil.c | 16 ++-- - pixman/src/pixman-xserver-compat.h | 2 + - pixman/src/pixman.h | 3 +- - 11 files changed, 215 insertions(+), 194 deletions(-) - -commit d469cc18eb21f69f8546f1d35ea44509c6eac329 -Author: Carl Worth -Date: Fri Jun 24 15:14:31 2005 +0000 - - Remove stray character. - - ChangeLog | 5 +++++ - src/cairo-ft-font.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 05e2ffa00ad672d33f1c204237f54a006f2e5c94 -Author: Carl Worth -Date: Fri Jun 24 15:09:41 2005 +0000 - - Prefer descriptive variable names over single-character names. Remove unneeded XGlpyhInfo field from glyphset_cache_entry_t. - - ChangeLog | 12 ++++ - src/cairo-xlib-surface.c | 135 ++++++++++++++++++++++----------------------- - 2 files changed, 78 insertions(+), 69 deletions(-) - -commit 87008a44d3043e48376cb3bee3702226ec5bcac7 -Author: Owen Taylor -Date: Fri Jun 24 15:06:40 2005 +0000 - - Handle rendering bitmap glyphslots as well as outline glyphslots. - When setting the scale for a non-scalable font, use the nearest available size (FreeType won't set the glyph metrics otherwise.) - - ChangeLog | 9 ++ - src/cairo-ft-font.c | 269 +++++++++++++++++++++++++++++++++++++++------------ - 2 files changed, 218 insertions(+), 60 deletions(-) - -commit 81fa936fd2153e62411a5fbd3e8e5a43bc493d74 -Author: Jeff Muizelaar -Date: Thu Jun 23 19:41:07 2005 +0000 - - s/IcCombine/fbCombine/ - - pixman/ChangeLog | 31 ++++++ - pixman/src/iccompose.c | 272 ++++++++++++++++++++++++------------------------ - 2 files changed, 167 insertions(+), 136 deletions(-) - -commit e77d9776ae5217e9317209815b3195366a84f70f -Author: Jeff Muizelaar -Date: Thu Jun 23 19:39:12 2005 +0000 - - s/pixman_compositeOperand/FbCompositeOperand/g. - - pixman/ChangeLog | 59 +++++ - pixman/src/iccompose.c | 552 ++++++++++++++++++++++++------------------------ - pixman/src/icimage.h | 20 +- - 3 files changed, 345 insertions(+), 286 deletions(-) - -commit 373e7f68b1c076eab08f2bc6b249dae4e8ac9bf4 -Author: Jeff Muizelaar -Date: Thu Jun 23 19:35:45 2005 +0000 - - s/pixman_bits_t/FbBits/s - - pixman/ChangeLog | 31 +++++++++++++ - pixman/src/ic.c | 14 +++--- - pixman/src/icblt.c | 80 +++++++++++++++++----------------- - pixman/src/icbltone.c | 44 +++++++++--------- - pixman/src/iccompose.c | 114 ++++++++++++++++++++++++------------------------ - pixman/src/icimage.c | 6 +- - pixman/src/icstipple.c | 8 ++-- - 7 files changed, 164 insertions(+), 133 deletions(-) - -commit aa07c01cb5d1f0c41067ee005b6db4481d5d8b58 -Author: Jeff Muizelaar -Date: Thu Jun 23 19:33:34 2005 +0000 - - more merging: - 630. Fix incorrect datatype for the pixmap width in fbCompositeSrcAdd_8000x8000(), and add some small optimisations (#A.1423, Keith Packard). - - pixman/ChangeLog | 12 +++++++++++- - pixman/src/ic.c | 36 ++++++++++++++++++++++-------------- - 2 files changed, 33 insertions(+), 15 deletions(-) - -commit 81ec18369736888bea6d4d79d0de6ed00e8ca802 -Author: Jeff Muizelaar -Date: Thu Jun 23 19:30:12 2005 +0000 - - Start the xserver/fb -> libpixman merging with a copy optimization. - - pixman/ChangeLog | 7 +++++++ - pixman/src/icblt.c | 26 +++++++++++++++++++++++++- - pixman/src/icint.h | 1 + - 3 files changed, 33 insertions(+), 1 deletions(-) - -commit adeff84bc2eba19bb3f667297e594a1ef86ae2a9 -Author: Carl Worth -Date: Thu Jun 23 15:52:37 2005 +0000 - - Add ARGB text to 1.0 roadmap. - - ChangeLog | 4 ++++ - ROADMAP | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 609ef32bfa13c09d3a6de5c6631458109445eda0 -Author: Owen Taylor -Date: Thu Jun 23 13:05:07 2005 +0000 - - Improve last ChangeLog entry a bit - - ChangeLog | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit ff27263f3968d8f97534ce218bfde0392908cf6c -Author: Owen Taylor -Date: Thu Jun 23 12:58:49 2005 +0000 - - Only unpremultiply ARGB32 data. Call png_write_info() *before* we set up the write conversion... it doesn't work after. - - ChangeLog | 6 ++++++ - src/cairo-png.c | 47 ++++++++++++++++++++++++++++++++++++----------- - 2 files changed, 42 insertions(+), 11 deletions(-) - -commit 3b20ab66b89527c25c1fbfff8ed1ff672196520f -Author: Carl Worth -Date: Thu Jun 23 12:45:38 2005 +0000 - - Add workaround for Render's overlapping source/dest bug to the 0.5.2 roadmap. - - ChangeLog | 5 +++++ - ROADMAP | 4 ++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 03c7b6aa7a5d2b97b7f892296f2a46ae56dde5b2 -Author: Carl Worth -Date: Wed Jun 22 22:12:09 2005 +0000 - - Add link to BadMatch bug. - - ChangeLog | 6 ++++-- - ROADMAP | 3 ++- - 2 files changed, 6 insertions(+), 3 deletions(-) - -commit b04b434db189904b108ab5167e61a286ea8225d2 -Author: Carl Worth -Date: Wed Jun 22 17:09:08 2005 +0000 - - Update ROADMAP with some comments on 0.5.2. - Add documentation for cairo_set_source_surface and fix some typos in other documentation blocks. - - ChangeLog | 6 ++++++ - ROADMAP | 16 ++++++++-------- - src/cairo.c | 29 ++++++++++++++++++++++++++--- - 3 files changed, 40 insertions(+), 11 deletions(-) - -commit 687f3d78d6b1fe1fb03980c70537bea331bbcf28 -Author: Øyvind Kolås -Date: Wed Jun 22 09:49:48 2005 +0000 - - minor whitespace and spellfix - - ChangeLog | 4 ++++ - doc/public/language-bindings.xml | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit b1130276d59a219e70d43dd1d199ddf391fa3330 -Author: Kristian Høgsberg -Date: Tue Jun 21 15:38:51 2005 +0000 - - Split out font subsetting code from here, - and put it here. - - ChangeLog | 7 + - src/Makefile.am | 91 +++--- - src/cairo-font-subset-private.h | 68 ++++ - src/cairo-font-subset.c | 645 ++++++++++++++++++++++++++++++++++++++ - src/cairo-pdf-surface.c | 657 +-------------------------------------- - 5 files changed, 784 insertions(+), 684 deletions(-) - -commit 7283ba6d470950e0e49f33fc25f3358113dda51e -Author: Tor Lillqvist -Date: Tue Jun 21 09:54:58 2005 +0000 - - allow building against < 10.3 SDK. - - ChangeLog | 4 ++++ - src/cairo-atsui-font.c | 12 ++++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit adee31be18e20112c7da49675b93d37cc66ee263 -Author: Carl Worth -Date: Mon Jun 20 17:06:10 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with SNAPSHOT_0_5_1. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 86869f02b9206eaeac331ff8945dacf4d840df98 -Author: Carl Worth -Date: Mon Jun 20 17:01:36 2005 +0000 - - Force distcheck to enable gtk-doc. - - ChangeLog | 4 ++++ - Makefile.am | 2 ++ - doc/public/tmpl/cairo.sgml | 19 ------------------- - 3 files changed, 6 insertions(+), 19 deletions(-) - -commit d7ef15d4b48820a072e4f4525fa83b23dc2cdf5d -Author: Carl Worth -Date: Mon Jun 20 16:35:40 2005 +0000 - - Added notes for snapshot 0.5.1 - Increment CAIRO_VERSION to 0.5.1 - - ChangeLog | 6 +++ - NEWS | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - 3 files changed, 109 insertions(+), 1 deletions(-) - -commit 74e3cc672f4b687d48caabe53a9c611868e27904 -Author: Carl Worth -Date: Mon Jun 20 16:31:17 2005 +0000 - - Fix abbreviated ChangeLog - - ChangeLog | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit ea2a04d901947106d15978c077cad61b7b7c9b26 -Author: Owen Taylor -Date: Mon Jun 20 15:48:46 2005 +0000 - - Workaround for https://bugs.freedesktop.org/show_bug.cgi?id=3566 - Detect servers with a bug in repeating surfaces by checking vendor string and version. - For such surfaces - Save clip rects when setting a clip region on a surface so that we set the right clip for the surface's GC if we create it later. - - ChangeLog | 13 ++ - doc/public/tmpl/cairo.sgml | 19 +++ - src/cairo-xlib-surface.c | 282 +++++++++++++++++++++++++++++++++++++++++-- - 3 files changed, 300 insertions(+), 14 deletions(-) - -commit 1ce9be95415c43b9db73b80f2641cc3a8eee9215 -Author: Carl Worth -Date: Mon Jun 20 12:54:15 2005 +0000 - - Make out parameters optional. Style cleanup. - - ChangeLog | 5 +++++ - src/cairo-matrix.c | 42 +++++++++++++++++++++++------------------- - 2 files changed, 28 insertions(+), 19 deletions(-) - -commit ab668278b060f3708bd1418c5707ceda74b9e2b4 -Author: Carl Worth -Date: Mon Jun 20 11:09:51 2005 +0000 - - Abstract CAIRO_ALPHA_IS_OPAQUE out for general internal use. - Optimize to defer to cairo_paint if the alpha value is actually opaque. - - ChangeLog | 9 +++++++++ - src/cairo-pattern.c | 2 +- - src/cairo.c | 5 +++++ - src/cairoint.h | 2 ++ - 4 files changed, 17 insertions(+), 1 deletions(-) - -commit f15ec64e7f2cfb9071c05ec072e49f364dbc4164 -Author: Carl Worth -Date: Mon Jun 20 09:59:23 2005 +0000 - - Rip out cairo_set_error_notfiy function as it is clear that it is not the right approach. - Remove error-notify test. - - ChangeLog | 12 +++++ - doc/public/tmpl/cairo.sgml | 19 -------- - src/cairo-private.h | 3 - - src/cairo.c | 32 ------------- - src/cairo.h | 14 ------ - test/.cvsignore | 1 - - test/Makefile.am | 2 - - test/error-notify.c | 108 -------------------------------------------- - 8 files changed, 12 insertions(+), 179 deletions(-) - -commit 3b8da5f213c3d0cf4357b29207639357241938bb -Author: Carl Worth -Date: Fri Jun 17 23:22:20 2005 +0000 - - Remove references to repeat and matrix fields that no longer exist. - - ChangeLog | 5 +++++ - doc/public/tmpl/cairo-pattern.sgml | 4 ++-- - doc/public/tmpl/cairo.sgml | 23 +++++++++++++++++++++-- - src/cairo-xcb-surface.c | 3 --- - 4 files changed, 28 insertions(+), 7 deletions(-) - -commit 92222f8bcaca41304ddd6a49a7e9d731a6a15820 -Author: Owen Taylor -Date: Fri Jun 17 16:19:08 2005 +0000 - - Fix width/height typo. - - ChangeLog | 6 ++++++ - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 66f8b1202ed82e4e88a63c6c385aded852186e68 -Author: Kristian Høgsberg -Date: Fri Jun 17 13:25:19 2005 +0000 - - Remove matrix, filter and repeat from the cairo_surface_t struct. - - ChangeLog | 10 ++++++++++ - src/cairo-glitz-surface.c | 3 --- - src/cairo-image-surface.c | 6 +++--- - src/cairo-pattern.c | 6 ------ - src/cairo-pdf-surface.c | 2 +- - src/cairo-surface.c | 4 ---- - src/cairo-xlib-surface.c | 3 --- - src/cairoint.h | 16 ---------------- - 8 files changed, 14 insertions(+), 36 deletions(-) - -commit 9318742aa434c1e8dd7c71ae07632383f8f7c59b -Author: Carl Worth -Date: Fri Jun 17 11:24:24 2005 +0000 - - cairo_reference and cairo_destroy shouldn't behave differently when cr->status indicates an error. Fix this bug that just slipped back in. - Remove useless conditional return at the end of a void function. - Fix so that after calling _cairo_error the most that any cairo entry function ever does is return a previously computed value. - - ChangeLog | 14 ++++++++++++++ - src/cairo.c | 39 +++++++++++++++++++-------------------- - 2 files changed, 33 insertions(+), 20 deletions(-) - -commit c71f0904f19beb7b5916fc229fe02c78ab296bae -Author: Kristian Høgsberg -Date: Fri Jun 17 10:48:47 2005 +0000 - - Remove the path clipping entry from the list. - - ChangeLog | 4 ++++ - TODO | 3 --- - 2 files changed, 4 insertions(+), 3 deletions(-) - -commit 7c811e0ac604e71ab67937c5a0842a6d01c67fbe -Author: Carl Worth -Date: Thu Jun 16 12:31:56 2005 +0000 - - update documentation build stuff - - doc/public/cairo-sections.txt | 2 ++ - doc/public/tmpl/cairo-pattern.sgml | 2 ++ - doc/public/tmpl/cairo.sgml | 2 ++ - 3 files changed, 6 insertions(+), 0 deletions(-) - -commit d6eca5a45f220d806491af518ba8ce16b524e01d -Author: Carl Worth -Date: Thu Jun 16 12:20:46 2005 +0000 - - Reorder fields of cairo_private_t to match initialization order. - Call error_notify callback if set. (cairo_create): Initialize error_notify callback to NULL. (cairo_set_error_notify): New function to allow the user to set an error notify callback. - New cairo_set_error_notify prototye. - New test for cairo_set_error_notify. - - ChangeLog | 17 ++++++++ - src/cairo-private.h | 8 +++- - src/cairo.c | 39 +++++++++++++++++- - src/cairo.h | 14 +++++++ - test/.cvsignore | 1 + - test/Makefile.am | 2 + - test/error-notify.c | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 7 files changed, 184 insertions(+), 5 deletions(-) - -commit 18c2d12b9ed98aea7f8ebe2b97b9406a6acb4d29 -Author: Carl Worth -Date: Wed Jun 15 16:52:11 2005 +0000 - - Add CAIRO_STATUS_DESTROYED to TODO list. - Note progress on consistent error handling. - Fix typo in documentation comment for _cairo_surface_get_current_clip_serial. - - ChangeLog | 9 +++++++++ - ROADMAP | 4 +++- - TODO | 1 + - src/cairo-surface.c | 2 +- - 4 files changed, 14 insertions(+), 2 deletions(-) - -commit 615d50976735a544da6888dc608495d130878400 -Author: Owen Taylor -Date: Wed Jun 15 16:04:19 2005 +0000 - - Remove --only-section-tmpl; it doesn't really work currently :-(. - - ChangeLog | 5 + - doc/public/Makefile.am | 2 +- - doc/public/tmpl/cairo-font.sgml | 121 ++++ - doc/public/tmpl/cairo-ft.sgml | 36 ++ - doc/public/tmpl/cairo-glitz.sgml | 9 + - doc/public/tmpl/cairo-matrix.sgml | 131 ++++ - doc/public/tmpl/cairo-pattern.sgml | 154 +++++ - doc/public/tmpl/cairo-pdf.sgml | 33 + - doc/public/tmpl/cairo-png.sgml | 40 ++ - doc/public/tmpl/cairo-ps.sgml | 33 + - doc/public/tmpl/cairo-quartz.sgml | 11 + - doc/public/tmpl/cairo-surface.sgml | 75 +++ - doc/public/tmpl/cairo-win32.sgml | 45 ++ - doc/public/tmpl/cairo-xcb-xrender.sgml | 13 + - doc/public/tmpl/cairo-xcb.sgml | 35 + - doc/public/tmpl/cairo-xlib-xrender.sgml | 13 + - doc/public/tmpl/cairo-xlib.sgml | 35 + - doc/public/tmpl/cairo.sgml | 1039 +++++++++++++++++++++++++++++++ - src/cairo-ft-font.c | 2 +- - src/cairo-win32-font.c | 2 +- - 20 files changed, 1831 insertions(+), 3 deletions(-) - -commit a3906e65aaca3a9aaee0f42e49a53585f684ef3e -Author: Owen Taylor -Date: Wed Jun 15 12:44:52 2005 +0000 - - Use a clip region when rendering a non-solid pattern through a rectangular path ... trapezoid rasterization is just too slow to use that path when we aren't forced to do so. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 25 ++++++++++++++++--------- - 2 files changed, 23 insertions(+), 9 deletions(-) - -commit fac3cd46b38d8ad45e0f6b1d112318cce289a8b4 -Author: Carl Worth -Date: Wed Jun 15 10:58:52 2005 +0000 - - (cairo_test_for_target): And add missing parenthesis. - - ChangeLog | 1 + - test/cairo-test.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit 0b122003e7b1e45d28b535a5f5577544d1666510 -Author: Carl Worth -Date: Wed Jun 15 10:56:31 2005 +0000 - - Track removal of cairo_status_string. - - ChangeLog | 4 ++++ - test/cairo-test.c | 3 ++- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit ac17f1ce68b829908e6329890b08eb7ef47d9910 -Author: Carl Worth -Date: Wed Jun 15 10:54:00 2005 +0000 - - Add cairo_finish to TODO list. Note that cairo_satus_string has now been removed. - - ChangeLog | 5 +++++ - TODO | 3 ++- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 4834b8e7f0be882e08ce0166750eb69e161e2a2c -Author: Carl Worth -Date: Wed Jun 15 10:52:01 2005 +0000 - - Remove cairo_status_string function which can now be replaced by: - cairo_status_to_string (cairo_status (cr)); - This allows consistent handling of status values for things like cairo_pattern_status where there is now cairo_pattern_status_string function. - - ChangeLog | 12 ++++++++++++ - src/cairo.c | 6 ------ - src/cairo.h | 6 ++---- - 3 files changed, 14 insertions(+), 10 deletions(-) - -commit e3c92f26134460117e58bf37bd6a5d2c90ca49a6 -Author: Carl Worth -Date: Wed Jun 15 10:46:49 2005 +0000 - - Add _cairo_error so we have a single function which all errors can pass through. This allows the user to set a breakpoint on error and will allow us to augment error handling later as necessary. - Make all assignements to cr->status go through the new _cairo_error function. Remove CAIRO_CHECK_SANITY macro. - - ChangeLog | 41 ++++ - src/cairo.c | 639 +++++++++++++++++++++++++++++++++-------------------------- - 2 files changed, 400 insertions(+), 280 deletions(-) - -commit e749cf524caafe1c20c8ceba510974abb490a67e -Author: Carl Worth -Date: Wed Jun 15 10:41:41 2005 +0000 - - Remove cairo-atsui section since cairo-atsui.h is currently empty. Add cairo_path_data_type_t and cairo_path_data_t. - Add pdf-clip and pdf-clip.pdf. - - ChangeLog | 8 ++++++++ - doc/public/cairo-sections.txt | 7 ++----- - test/.cvsignore | 2 ++ - 3 files changed, 12 insertions(+), 5 deletions(-) - -commit 476fe9a66e2be74e65fe2f4e42bda5f4c8b244a0 -Author: Kristian Høgsberg -Date: Tue Jun 14 19:45:22 2005 +0000 - - Implement path clipping and refactor _cairo_gstate_clip() out in three different functions corresponding to the three different clipping modes. - Add NULL pointers for intersect_clip_path. - New test case to exercise PDF clipping code. - - ChangeLog | 36 +++++++ - src/cairo-glitz-surface.c | 1 + - src/cairo-gstate-private.h | 16 +++- - src/cairo-gstate.c | 222 ++++++++++++++++++++++++++++++-------------- - src/cairo-image-surface.c | 1 + - src/cairo-pdf-surface.c | 101 +++++++++++++++++++- - src/cairo-ps-surface.c | 1 + - src/cairo-quartz-surface.c | 1 + - src/cairo-surface.c | 116 ++++++++++++++++-------- - src/cairo-win32-surface.c | 1 + - src/cairo-xcb-surface.c | 1 + - src/cairo-xlib-surface.c | 1 + - src/cairoint.h | 71 +++++++++++--- - test/Makefile.am | 11 ++- - test/pdf-clip.c | 134 ++++++++++++++++++++++++++ - 15 files changed, 583 insertions(+), 131 deletions(-) - -commit 663e39a63c6ae223dc3095d29fd95bc8885c74f2 -Author: Carl Worth -Date: Tue Jun 14 15:38:15 2005 +0000 - - Remove Boolean 'drawable' parameter from the create_similar surface backend function since nothing anywhere is actually using this parameter. - - ChangeLog | 23 +++++++++++++++++++++++ - src/cairo-glitz-surface.c | 9 ++++----- - src/cairo-image-surface.c | 1 - - src/cairo-pdf-surface.c | 1 - - src/cairo-ps-surface.c | 1 - - src/cairo-quartz-surface.c | 1 - - src/cairo-surface.c | 6 ++---- - src/cairo-win32-surface.c | 2 -- - src/cairo-xcb-surface.c | 3 +-- - src/cairo-xlib-surface.c | 3 +-- - src/cairoint.h | 2 -- - 11 files changed, 31 insertions(+), 21 deletions(-) - -commit d2ddfe42a9d66a8b369afb75e6e758af145def3e -Author: Tor Lillqvist -Date: Tue Jun 14 14:12:00 2005 +0000 - - Correct extents for text with a general tranform. - - ChangeLog | 5 +++++ - src/cairo-win32-font.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit bb7eeeb7498dad5b6bd70d1497b049a80d77af11 -Author: Carl Worth -Date: Tue Jun 14 11:58:14 2005 +0000 - - Remove comment suggesting ambiguity of whether cairo_get_target references the surface, (we decided as part of the API shakeup that cairo functions returning pointers to internal objects do not automatically take a reference). - - ChangeLog | 7 +++++++ - src/cairo.h | 2 -- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 8084fb9b095fb28d39d26f223e73be1867d4f0bc -Author: Carl Worth -Date: Mon Jun 13 16:53:52 2005 +0000 - - Add new _cairo_pattern_create_in_error. - Propagate error values from cr->status to pattern->status. - - ChangeLog | 9 +++++++++ - src/cairo-pattern.c | 31 +++++++++++++++++++++++++++++++ - src/cairo.c | 4 +--- - src/cairoint.h | 3 +++ - 4 files changed, 44 insertions(+), 3 deletions(-) - -commit 14ae3ce3ade3448f3c3d6ae0344ab4785afa96aa -Author: Carl Worth -Date: Mon Jun 13 16:36:40 2005 +0000 - - No longer need to check for NULL after creating a pattern. - Propagate status errors from pattern->status to cr->status. - Originally 2005-05-08 Owen Taylor : - src/cairo-pattern.c src/cairoint.h: If allocation of pattern objects fails, return special static nil pattern objects. - If adding a color stop fails to allocate memory, set pattern->status. (And fix a memory leak.) Make public functions return when pattern->status is set, (and no longer return a cairo_status_t). - src/cairo-pattern.c src/cairo.h doc/public/cairo-sections.txt: Add cairo_pattern_status() - Check the status of gstate->source and of mask patterns passed in. - - ChangeLog | 25 ++++++ - doc/public/cairo-sections.txt | 1 + - src/cairo-gstate.c | 24 +++++- - src/cairo-pattern.c | 188 +++++++++++++++++++++++++++++----------- - src/cairo.c | 34 +++++--- - src/cairo.h | 16 ++-- - src/cairoint.h | 6 +- - 7 files changed, 219 insertions(+), 75 deletions(-) - -commit 15fb5e0d27a1fc7743894792a168980363df5d71 -Author: Carl Worth -Date: Mon Jun 13 16:35:03 2005 +0000 - - Originally 2005-05-08 Owen Taylor : - If cairo_create() fails, return a special static object, cairo_nil. - Don't return early if cr->status is set. cr->status should not affect reference counting. - Ignore any magic object with a reference count of -1. - - ChangeLog | 14 ++++++++++++++ - src/cairo.c | 26 ++++++++++++++++++++++++-- - 2 files changed, 38 insertions(+), 2 deletions(-) - -commit 01e1844e9ceb58edb3ef6351f2163264611635fe -Author: Carl Worth -Date: Mon Jun 13 16:29:26 2005 +0000 - - Originally 2005-06-02 Carl Worth : - Add a status field to cairo_path_t. - Add documentation for the new approach for handling errors in these functions---always returning a valid pointer with at least a status. (cairo_append_path): Propagate path status errors to the context. Add note to documentation on initializing path->status. - Add missing cairo_private qualifier to a couple functions. - Track new status field in cairo_path_t. (cairo_path_destroy): Don't destroy cairo_path_nil. Add documentation. (_cairo_path_data_create): (_cairo_path_data_create_flat): (_cairo_path_data_append_to_context): Add documentation. (_cairo_path_data_create_in_error): New function to create a placeholder cairo_path_t just to propagate a cairo_status_t error. - - ChangeLog | 26 +++++++++++ - src/cairo-path-data-private.h | 11 +++-- - src/cairo-path-data.c | 98 +++++++++++++++++++++++++++++++++++------ - src/cairo.c | 50 ++++++++++++++++----- - src/cairo.h | 1 + - 5 files changed, 156 insertions(+), 30 deletions(-) - -commit 730fb40455118894d970c0cb1a9b37880660889e -Author: Carl Worth -Date: Sat Jun 11 01:09:15 2005 +0000 - - Make these functions static, which allows slightly less awkward error handling within them. - - ChangeLog | 8 ++++++++ - src/cairo-gstate.c | 22 ++++++++++++++++------ - src/cairoint.h | 13 ------------- - 3 files changed, 24 insertions(+), 19 deletions(-) - -commit df19a5aa7e0aa37a0d33eb3946f5492db0307ff3 -Author: Carl Worth -Date: Sat Jun 11 00:06:04 2005 +0000 - - Provide font-backend-specific macros for FONT_FAMILY_DEFAULT. Change CAIRO_FT_FONT_FAMILY_DEFAULT from "serif" to "" to allow the actual default to come from the system/user configuration. - - ChangeLog | 7 +++++++ - src/cairoint.h | 10 +++++++--- - 2 files changed, 14 insertions(+), 3 deletions(-) - -commit ff2dee65bdff0e3bce239a6617b7acb680d5ad27 -Author: Carl Worth -Date: Fri Jun 10 23:47:23 2005 +0000 - - Pull the enum out from inside cairo_path_data_t and give it a name of cairo_path_data_type_t. This allows C++ programs to see the enum values. It also allows variables to be declared of this type for manually constructing a cairo_path_t. - - ChangeLog | 7 +++++++ - src/cairo.h | 14 ++++++++------ - 2 files changed, 15 insertions(+), 6 deletions(-) - -commit 4c37790a22a029332d182dc21bff4a72a976bbf8 -Author: Carl Worth -Date: Fri Jun 10 13:23:24 2005 +0000 - - Add 'consistent error handling' to 1.0 roadmap. (This isn't new, we just forgot to list it here before). - Big cleanup to remove finished items. Also, split the file up to separate TODO items that affect the API from items that do not. - - ChangeLog | 3 +++ - ROADMAP | 4 ++++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit 2a1c88064508938124c0700b8939303c579df188 -Author: Carl Worth -Date: Fri Jun 10 13:19:45 2005 +0000 - - Big cleanup to remove finished items. Also, split the file up to separate TODO items that affect the API from items that do not. - - ChangeLog | 8 ++- - TODO | 183 +++++++++++++++++++++++++----------------------------------- - 2 files changed, 83 insertions(+), 108 deletions(-) - -commit 6cd484a4c0d6a6a67c1922746a2c21b5f46bff38 -Author: Carl Worth -Date: Fri Jun 10 12:46:49 2005 +0000 - - Originally: 2005-06-09 Carl Worth - Rework occurrences of 'if (status == CAIRO_STATUS_SUCCESS)' to use 'if (status)' instead where trivial. - - ChangeLog | 14 ++++++++++++++ - src/cairo-pdf-surface.c | 8 +++++--- - src/cairo-xcb-surface.c | 16 ++++++++++------ - src/cairo-xlib-surface.c | 16 ++++++++++------ - 4 files changed, 39 insertions(+), 15 deletions(-) - -commit 31dcb954fe2b8269563dbcd05c9ce0c1ca2f9a16 -Author: Carl Worth -Date: Fri Jun 10 12:18:20 2005 +0000 - - Remove STATUS_OK macro which was not being used universally. - - ChangeLog | 18 +++++++++++++++ - src/cairo-font.c | 12 +++++----- - src/cairo-ft-font.c | 6 ++-- - src/cairo-glitz-surface.c | 22 ++++++++++++------- - src/cairo-gstate.c | 52 ++++++++++++++++++++++---------------------- - src/cairo-image-surface.c | 6 ++-- - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 4 +- - src/cairo-png.c | 10 ++++++-- - src/cairo-surface.c | 10 ++++---- - src/cairo-win32-font.c | 32 +++++++++++++++------------ - src/cairo-win32-surface.c | 34 +++++++++++++++------------- - src/cairo-xcb-surface.c | 6 ++-- - src/cairo-xlib-surface.c | 6 ++-- - src/cairoint.h | 2 - - 15 files changed, 127 insertions(+), 95 deletions(-) - -commit e6eef091152a7bcdcc6119224fa1aa1bfea5a823 -Author: Carl Worth -Date: Thu Jun 9 12:27:02 2005 +0000 - - Remove trailing comma from enum values which gcc 4.0 does not want to see (Luis Villa). Closes bug #3502. - - ChangeLog | 5 +++++ - src/cairo.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 23976d00b2cfb4640a0e0119247ae7d8f7f2ad73 -Author: Owen Taylor -Date: Thu Jun 9 07:26:40 2005 +0000 - - Add - -I$(top_builddir)/src for cairo-features.h (Tomasz Cholewo) - - ChangeLog | 5 +++++ - test/Makefile.am | 7 ++++++- - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit c1c8c57b90659287e43c2fd591e74df4c696cb09 -Author: Keith Packard -Date: Tue Jun 7 23:28:12 2005 +0000 - - Font matrix was output incorrectly; the implicit mirror-in-y transformation was not computed correctly, missing a negation of the 'xy' component. - - ChangeLog | 7 +++++++ - src/cairo-pdf-surface.c | 2 +- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit 4f2f520dcec441be34628d233456ad252ff14f58 -Author: Carl Worth -Date: Fri Jun 3 16:45:46 2005 +0000 - - Allow NULL as a valid value for several objects. That is, calling reference or destroy on these objects will simply do nothing, successfully. - Remove extra whitespace. - - ChangeLog | 20 ++++++++++++++++++++ - src/cairo-atsui-font.c | 1 - - src/cairo-font.c | 31 +++++++++++++++++++++++++++---- - src/cairo-ft-font.c | 7 +++++++ - src/cairo-glitz-surface.c | 2 +- - src/cairo-path-data.c | 17 +++++++++++++++++ - src/cairo-pdf-surface.c | 6 ++++++ - src/cairo-win32-font.c | 3 +++ - 8 files changed, 81 insertions(+), 6 deletions(-) - -commit 7b4a65dba4b37111ec56b9cbb5d462bc08d4b0db -Author: Kristian Høgsberg -Date: Fri Jun 3 16:40:15 2005 +0000 - - When clipping, update the clip surface to a new surface the size of the intersection of the old clip surface and the extents of the new clip path. - - ChangeLog | 6 ++++ - src/cairo-gstate.c | 75 +++++++++++++++++++++++++++++++++++++--------- - test/clip-twice-ref.png | Bin 751 -> 1191 bytes - test/clip-twice.c | 6 ++++ - 4 files changed, 72 insertions(+), 15 deletions(-) - -commit 7c47633b2c74e329f04b9f1ebde4c05c409d73c0 -Author: Carl Worth -Date: Fri Jun 3 16:22:26 2005 +0000 - - Remove unused cache->refcount and _cairo_cache_reference(). - Remove gratuitous nesting as recommended in CODING_STYLE. - - ChangeLog | 9 +++++++++ - src/cairo-cache.c | 28 ++++++++-------------------- - src/cairo-hash.c | 28 ++++++++-------------------- - src/cairoint.h | 1 - - 4 files changed, 25 insertions(+), 41 deletions(-) - -commit 756e991b91465c6da933368d66f19e54849815dd -Author: Carl Worth -Date: Fri Jun 3 16:16:44 2005 +0000 - - Fix name of _cairo_user_data_array_destroy to be _cairo_user_data_array_fini. - - ChangeLog | 8 ++++++++ - src/cairo-array.c | 6 +++--- - src/cairo-font.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairoint.h | 2 +- - 5 files changed, 14 insertions(+), 6 deletions(-) - -commit 42c1fb7c918ceb7920ddc8b6b75b38fd757d3a06 -Author: Carl Worth -Date: Fri Jun 3 16:08:28 2005 +0000 - - Rename functions to match the naming scheme used by cairo-cache.c and all other users of it. Though it's quite likely that glitz had this right and now everything could be changed to match it instead. I'll save that for some day when we're cleaning up the cache code. - - ChangeLog | 12 ++++++++++++ - src/cairo-glitz-surface.c | 14 +++++++------- - 2 files changed, 19 insertions(+), 7 deletions(-) - -commit 97ac61700ae8d2fcf055fdad12533671895f539b -Author: Carl Worth -Date: Fri Jun 3 15:56:52 2005 +0000 - - Fix spelling errors. - - CODING_STYLE | 6 +++--- - ChangeLog | 4 ++++ - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit 56990720358ea18b026f952101ddd674a5fbb268 -Author: Carl Worth -Date: Fri Jun 3 15:54:40 2005 +0000 - - Fix Freudian unwrapped line in paragraph describing why long lines should be wrapped. - - CODING_STYLE | 5 +++-- - ChangeLog | 7 ++++++- - src/cairo-gstate-private.h | 1 - - 3 files changed, 9 insertions(+), 4 deletions(-) - -commit 36beed9bf1b3ddef42e0fb1a46035ed4a6afa4f7 -Author: Carl Worth -Date: Fri Jun 3 14:51:57 2005 +0000 - - Add CODING_STYLE document to standardize on some style issues. - Standardize brace handling around all else clauses according to new CODING_STYLE guidelines. - - CODING_STYLE | 211 +++++++++++++++++++++++++++++++++++++++++++++ - ChangeLog | 21 ++++- - src/cairo-atsui-font.c | 6 +- - src/cairo-cache.c | 6 ++ - src/cairo-ft-font.c | 5 +- - src/cairo-glitz-surface.c | 6 +- - src/cairo-gstate.c | 4 + - src/cairo-hash.c | 6 ++ - src/cairo-matrix.c | 2 + - src/cairo-pattern.c | 16 +++- - src/cairo-pdf-surface.c | 6 +- - src/cairo-spline.c | 16 ++-- - src/cairo-wideint.c | 6 +- - src/cairo-win32-font.c | 3 +- - src/cairo-xlib-surface.c | 13 ++- - 15 files changed, 297 insertions(+), 30 deletions(-) - -commit f87fd91bcf06a1e7a9332005b5d88d6b55c82548 -Author: Kristian Høgsberg -Date: Fri Jun 3 10:28:42 2005 +0000 - - Patch from Tomasz Cholewo : - Store the index of the checksum instea of a pointer to the location. - - ChangeLog | 8 ++++++++ - src/cairo-pdf-surface.c | 10 +++++----- - 2 files changed, 13 insertions(+), 5 deletions(-) - -commit bb00e0fce5a92693e20fde64b039fd4d105b82eb -Author: Carl Worth -Date: Fri Jun 3 09:38:39 2005 +0000 - - Move internal convenience up from _cairo_gstate_set_source_solid to _cairo_set_source_solid so that all set_source functions flow through cairo_set_source. - - ChangeLog | 9 +++++++++ - src/cairo-gstate.c | 18 ------------------ - src/cairo.c | 20 ++++++++++++++++++-- - src/cairoint.h | 4 ---- - 4 files changed, 27 insertions(+), 24 deletions(-) - -commit 4914eac983a92b7c424c217fdbaf13bb772cb1b9 -Author: Carl Worth -Date: Wed Jun 1 13:36:20 2005 +0000 - - Remove obsolete _cairo_gstate_set_target_surface, folding its contents into _cairo_gstate_init, most of which disappears due to constant folding. Ensure that gstate->next is initialized even if _cairo_pattern_create_solid fails. - Remove unused _cairo_xcb_surface_set_clip_region. - - ChangeLog | 11 ++++++++ - src/cairo-gstate.c | 60 +++------------------------------------------- - src/cairo-xcb-surface.c | 8 ------ - 3 files changed, 15 insertions(+), 64 deletions(-) - -commit c56938e568b3c4a5118e2f050214bb1906329153 -Author: Carl Worth -Date: Wed Jun 1 13:24:10 2005 +0000 - - Rename CAIRO_OK to STATUS_OK. No intended changes in functionality. - - ChangeLog | 18 ++++++++++++++++ - src/cairo-font.c | 12 +++++----- - src/cairo-ft-font.c | 6 ++-- - src/cairo-glitz-surface.c | 6 ++-- - src/cairo-gstate.c | 48 ++++++++++++++++++++++---------------------- - src/cairo-image-surface.c | 6 ++-- - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 4 +- - src/cairo-png.c | 6 ++-- - src/cairo-surface.c | 10 ++++---- - src/cairo-win32-font.c | 26 ++++++++++++------------ - src/cairo-win32-surface.c | 4 +- - src/cairo-xcb-surface.c | 6 ++-- - src/cairo-xlib-surface.c | 6 ++-- - src/cairoint.h | 2 +- - 15 files changed, 90 insertions(+), 72 deletions(-) - -commit 045ba795dabacbb9153015ce0d4cb0881cd0d863 -Author: Carl Worth -Date: Wed Jun 1 13:19:52 2005 +0000 - - Rename gstate->surface to gstate->target. No intended changes in functionality. - - ChangeLog | 6 ++ - src/cairo-gstate-private.h | 2 +- - src/cairo-gstate.c | 114 ++++++++++++++++++++++---------------------- - 3 files changed, 64 insertions(+), 58 deletions(-) - -commit 6c62cf76435153c6fdc165d229ee02e52c5c0db5 -Author: Carl Worth -Date: Wed Jun 1 13:13:10 2005 +0000 - - Remove unused fields from cairo_gstate_t, (font_family, font_slant, font_weight). Reorder fields to match between declaration and initialization and to put the most problematic fields (surface and source) at the end. No intended changes in functionality. - - ChangeLog | 9 +++++++++ - src/cairo-gstate-private.h | 14 +++++--------- - src/cairo-gstate.c | 14 +++++++------- - 3 files changed, 21 insertions(+), 16 deletions(-) - -commit 707a2c97a1cb709ccf60899576467b898f658481 -Author: Carl Worth -Date: Wed Jun 1 13:10:57 2005 +0000 - - Add self-intersecting to the list of expected failures. - - ChangeLog | 5 +++++ - test/Makefile.am | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 48fbc201c787512076934c40f15e173dbff771c3 -Author: Carl Worth -Date: Wed Jun 1 11:03:50 2005 +0000 - - Add self-intersecting test which demonstrates the long-standing bug with stroking self-intersecting paths. - - ChangeLog | 9 ++++ - test/.cvsignore | 1 + - test/Makefile.am | 3 + - test/self-intersecting-ref.png | Bin 0 -> 242 bytes - test/self-intersecting.c | 89 ++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 102 insertions(+), 0 deletions(-) - -commit 37a48e674c575eaf36a3d9e8d84ea21f70da9a5b -Author: Carl Worth -Date: Wed Jun 1 00:29:24 2005 +0000 - - Fix bug in converting box to rectangle that left clip_rect.height uninitialized, (leading to unpredictable, intermittent test failures). - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 2 +- - src/cairo-traps.c | 2 +- - 3 files changed, 9 insertions(+), 2 deletions(-) - -commit 7bb6dfdaa2cd1c7b6c673edce27045678938bd18 -Author: Carl Worth -Date: Tue May 31 16:05:06 2005 +0000 - - Add new function cairo_status_to_string an reimplement cairo_status_string in terms of the new function. - - ChangeLog | 7 +++++++ - doc/public/cairo-sections.txt | 1 + - doc/public/tmpl/cairo-win32.sgml | 2 -- - doc/public/tmpl/cairo-xcb-xrender.sgml | 2 -- - doc/public/tmpl/cairo-xlib-xrender.sgml | 2 -- - src/cairo.c | 10 ++++++++-- - src/cairo.h | 3 +++ - 7 files changed, 19 insertions(+), 8 deletions(-) - -commit 63428d3cc77bc08d1db9e228ddf37a153a0cc221 -Author: Olivier Andrieu -Date: Thu May 26 17:35:35 2005 +0000 - - : Fix memory leak - - ChangeLog | 7 ++++++- - src/cairo-path-data.c | 16 ++++++++++++---- - 2 files changed, 18 insertions(+), 5 deletions(-) - -commit ae96f5db6cb357ae9432d66a9590e11e6c7d9cca -Author: Keith Packard -Date: Thu May 26 13:02:31 2005 +0000 - - Split clipping into separate source and destination operand clips. By default, source operands are not affected by any client clipping. This matches the desired semantics for cairo. When this code is ported back to the X server, that will have to select the clipping option which clip source operands to the client clip. - - pixman/ChangeLog | 15 +++++++++++++++ - pixman/src/iccompose.c | 20 +++++++++++++------- - pixman/src/icimage.c | 37 ++++++++++++++++++++++++++++++++----- - pixman/src/icimage.h | 9 ++++++--- - 4 files changed, 66 insertions(+), 15 deletions(-) - -commit 45a966f69528c86dd6e3d4736805803b80de9f9b -Author: Keith Packard -Date: Thu May 26 11:35:44 2005 +0000 - - Replace nesting-only surface clipping with gstate contained serial-number tracked clipping sets that are loaded into the surface on demand just before each rendering operation. This permits multiple cairo_t contexts to reference a surface without regard to ordering of operations among the contexts. - Also in this patch is a change to the xlib surface that creates two separate Pictures, one for source and one for destination operands which separates the source clipping from destination clipping. Cairo now specifies that sources are never clipped by any clipping applied to them as destinations. - Move cairo_clip_t (renamed from cairo_clip_rec_t) from cairoint.h to cairo-gstate-private.h. Eliminate stack of clip state from surfaces. Add new surface clipping API. - Manage clip objects entirely within the gstate, loading the whole thing into the surface just before drawing. - Source surfaces need not have clipping modified as the surface interface now specifies that source surfaces are always unclipped. - Eliminate nested clipping contexts, leaving clip management entirely to the gstate. Create new clip API for the gstate which uses per-surface serial numbers to match gstate clipping against current surface clipping values. - Surfaces no longer track clipping regions at all, so the old _cairo_surface_get_clip_extents has been replaced with _cairo_surface_get_extents. For PDF/PS surfaces, this function is expected to return a rectangle covering the entire fixed point coordinate space to leave rendering unclipped by the surface. - Region clipping capability is now signalled by a non-NULL function pointer in set_clip_region. - Each surface now contains two Pictures, one for source and one for destination operands so that source operands are never clipped by destination clipping. - CAIRO_STATUS_BAD_NESTING removed - self-copy now passes (Xlib only, until libpixman changes land) - reviewed by: krh, otaylor, cworth - - ChangeLog | 95 ++++++++++++++ - src/cairo-gstate-private.h | 30 ++++- - src/cairo-gstate.c | 286 ++++++++++++++++++++++++------------------- - src/cairo-pattern.c | 28 ---- - src/cairo-surface.c | 292 ++++++++++++++++++++------------------------ - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 123 ++++++++++++------- - src/cairo.c | 2 - - src/cairo.h | 7 +- - src/cairoint.h | 72 +++++++---- - test/Makefile.am | 1 - - test/self-copy.c | 3 +- - 12 files changed, 541 insertions(+), 400 deletions(-) - -commit be903f4c2232bfa8b48c1dca60ad5cf65f403c77 -Author: Olivier Andrieu -Date: Thu May 26 03:31:28 2005 +0000 - - trivial doc fixes. - - ChangeLog | 4 ++++ - src/cairo.c | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit 17a5c3a3daef92ee1702edd4ca007590d5606ae6 -Author: Carl Worth -Date: Tue May 24 16:08:39 2005 +0000 - - Re-synch with latest from gtk-doc CVS tree. - Add --only-section-tmpl option so that changes to inline documentation does not lead to churn in the .sgml template files. - Commit new templates now that gtk-doc has ripped all the inline portions out. - New template files added for new sections. - Update to match current API. - Make parameter names match those in the .c file and its documentation. - - ChangeLog | 33 + - doc/public/.cvsignore | 3 + - doc/public/Makefile.am | 3 + - doc/public/cairo-sections.txt | 102 ++- - doc/public/tmpl/cairo-font.sgml | 129 ---- - doc/public/tmpl/cairo-ft.sgml | 36 - - doc/public/tmpl/cairo-glitz.sgml | 9 - - doc/public/tmpl/cairo-matrix.sgml | 157 ----- - doc/public/tmpl/cairo-pattern.sgml | 151 ----- - doc/public/tmpl/cairo-pdf.sgml | 21 - - doc/public/tmpl/cairo-png.sgml | 40 -- - doc/public/tmpl/cairo-ps.sgml | 17 - - doc/public/tmpl/cairo-quartz.sgml | 11 - - doc/public/tmpl/cairo-surface.sgml | 145 ---- - doc/public/tmpl/cairo-win32.sgml | 21 + - doc/public/tmpl/cairo-xcb-xrender.sgml | 21 + - doc/public/tmpl/cairo-xcb.sgml | 17 - - doc/public/tmpl/cairo-xlib-xrender.sgml | 21 + - doc/public/tmpl/cairo-xlib.sgml | 26 - - doc/public/tmpl/cairo.sgml | 1108 ------------------------------- - gtk-doc.make | 26 +- - src/cairo-xcb.h | 2 +- - 22 files changed, 177 insertions(+), 1922 deletions(-) - -commit d41465d89a4df689d56d4a6cf06d6615ddf1b3ce -Author: Carl Worth -Date: Sun May 22 11:12:46 2005 +0000 - - Protect less-than and greater-than symbols in documentation string. - - ChangeLog | 3 +++ - doc/public/tmpl/cairo-atsui.sgml | 9 --------- - doc/public/tmpl/cairo-pdf.sgml | 22 +++++----------------- - doc/public/tmpl/cairo-ps.sgml | 6 +++++- - doc/public/tmpl/cairo-xcb.sgml | 9 +++++++-- - doc/public/tmpl/cairo-xlib.sgml | 17 ++++------------- - doc/public/tmpl/cairo.sgml | 1 + - src/cairo.c | 2 +- - 8 files changed, 26 insertions(+), 43 deletions(-) - -commit e90a5c89900ec2034628b8894ada7bef272326a6 -Author: Carl Worth -Date: Sun May 22 09:08:23 2005 +0000 - - Not that a patch has been submitted for consistent error handling. - Fix documentation string for cairo_create so that it might actualyl appear in the manual. - - ChangeLog | 8 ++++++++ - TODO | 2 +- - src/cairo.c | 4 ++-- - 3 files changed, 11 insertions(+), 3 deletions(-) - -commit b16dafe5539676874dff783ba1c31dc5a65cf9a4 -Author: Carl Worth -Date: Wed May 18 10:23:48 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with SNAPSHOT_0_1_5. - - pixman/ChangeLog | 5 +++++ - pixman/configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 17c740eb6bb7567a0ac70afd339d1a0cc0bb979e -Author: Carl Worth -Date: Wed May 18 10:13:14 2005 +0000 - - Add notes for snapshot 0.1.5. - Increment version to 0.1.5. - - pixman/ChangeLog | 6 ++++++ - pixman/NEWS | 18 ++++++++++++++++++ - pixman/configure.in | 2 +- - 3 files changed, 25 insertions(+), 1 deletions(-) - -commit b1301f401336a29f63a8b5990969e03593f1808a -Author: Carl Worth -Date: Wed May 18 09:41:47 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with SNAPSHOT_0_5_0. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit f083b21c76b3a3f542b93d32a40cd5deccc0c985 -Author: Carl Worth -Date: Wed May 18 09:27:24 2005 +0000 - - Clear pointers to NULL after destroying/freeing them. - - pixman/ChangeLog | 5 +++++ - pixman/src/icimage.c | 12 +++++++++--- - 2 files changed, 14 insertions(+), 3 deletions(-) - -commit 55a7bb718ffe9598b8c39902023e68355836592f -Author: Carl Worth -Date: Wed May 18 09:25:54 2005 +0000 - - Declare pixman_fixed16_16_t properly as int32_t rather than just int. Reported by Lance Fetters. - - pixman/ChangeLog | 5 +++++ - pixman/src/pixman.h | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit f030aec810d74a60a44c35bf7815b9e94743cd65 -Author: Carl Worth -Date: Tue May 17 18:39:56 2005 +0000 - - Added porting guide to help with transition to cairo 0.5 API. - Added notes for snapshot 0.5.0 - Increment CAIRO_VERSION to 0.5.0 - - ChangeLog | 9 ++ - NEWS | 304 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - PORTING_GUIDE | 257 ++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - 4 files changed, 571 insertions(+), 1 deletions(-) - -commit 3f9573b7bb3f3066ad3e20908edd4af30cac3284 -Author: Carl Worth -Date: Tue May 17 15:23:53 2005 +0000 - - Bring up to date with Keith's latest improvements to cairo-xlib-surface.c: Add some comments about how and why masks are computed. Generalize overflow detection in mask computation. Expand on pixman format conversion comment. Fix the broken visual->format case. - - ChangeLog | 11 ++++++++- - src/cairo-xcb-surface.c | 53 ++++++++++++++++++++++++++-------------------- - 2 files changed, 40 insertions(+), 24 deletions(-) - -commit f0923288c58f42bf45dc6658a504b14faec6df53 -Author: Carl Worth -Date: Tue May 17 12:40:55 2005 +0000 - - Two fixes from Kristion Høgsberg: - Fix to close the file if we opened it. - Grab the status from out of the stream _before_ we destroy the stream. - - ChangeLog | 12 ++++++++++++ - src/cairo-output-stream.c | 9 ++++++++- - src/cairo-pdf-surface.c | 5 ++++- - 3 files changed, 24 insertions(+), 2 deletions(-) - -commit b4710711b8e39738587249f04a41ae99c5eae981 -Author: Keith Packard -Date: Tue May 17 12:21:56 2005 +0000 - - Add some comments about how and why masks are computed. Generalize overflow detection in mask computation. Expand on pixman format conversion comment. - - ChangeLog | 7 +++++++ - src/cairo-xlib-surface.c | 32 ++++++++++++++++++++------------ - 2 files changed, 27 insertions(+), 12 deletions(-) - -commit e72c41f95b8ae262f82d9023174c88f4e9c02fe3 -Author: Carl Worth -Date: Tue May 17 11:28:26 2005 +0000 - - Fix documentation to not mention set_size for the _for_bitmap functions. - - ChangeLog | 6 ++++++ - src/cairo-xcb-surface.c | 6 +----- - src/cairo-xlib-surface.c | 6 +----- - 3 files changed, 8 insertions(+), 10 deletions(-) - -commit 5cc39a708c623cbe6a8c5efdad538778b2fbadd7 -Author: Carl Worth -Date: Tue May 17 09:13:02 2005 +0000 - - Remove #ifdef munging since we once again support either #if or #ifdef. - - ChangeLog | 5 +++++ - RELEASING | 7 +++++-- - util/cairo-api-update | 1 - - 3 files changed, 10 insertions(+), 3 deletions(-) - -commit ec84ace5a6830778d29d36f9fc87361e8545f57b -Author: Carl Worth -Date: Tue May 17 09:08:23 2005 +0000 - - Update instructions to match output of 'make distcheck' - Add private headers and flesh out CLEANFILES so that 'make distcheck' actually passes. - - ChangeLog | 9 +++++++++ - RELEASING | 7 ++++--- - src/Makefile.am | 4 ++++ - test/Makefile.am | 4 ++-- - 4 files changed, 19 insertions(+), 5 deletions(-) - -commit 366aa98a792460bda8de70bc7eb342950e214ce3 -Author: Carl Worth -Date: Tue May 17 08:34:44 2005 +0000 - - Fix more deprecation macros - - src/cairo.h | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 23b7ac25edae4992c78b20f02d538bd717799f95 -Author: Carl Worth -Date: Tue May 17 08:26:37 2005 +0000 - - Add a few more REPLACED_BY and DEPRECATED_BY definitions. - Add some helpful warnings. - - ChangeLog | 7 +++++++ - src/cairo.h | 17 ++++++++++++++++- - util/cairo-api-update | 8 ++++++++ - 3 files changed, 31 insertions(+), 1 deletions(-) - -commit f82a3b2b557c91be0f6e6e26f89c5f7ef90b426a -Author: Carl Worth -Date: Tue May 17 06:12:52 2005 +0000 - - Add cairo-xlib-xrender.h which was missed from an earlier commit. - - ChangeLog | 5 +++++ - src/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 30d7ede3dfdc256180e4447debd0be6d69c699b7 -Author: Carl Worth -Date: Tue May 17 06:11:32 2005 +0000 - - Update cairo-xcb.h to provide the same style of interface as cairo-xlib.h. - Update to match new cairo_xcb_surface_t create functions. - - ChangeLog | 14 ++ - src/Makefile.am | 2 +- - src/cairo-xcb-surface.c | 410 +++++++++++++++++++++++++++-------------------- - src/cairo-xcb-xrender.h | 62 +++++++ - src/cairo-xcb.h | 21 +-- - test/cairo-test.c | 115 ++++++++++++-- - 6 files changed, 427 insertions(+), 197 deletions(-) - -commit f67f5003df306de40416f24bc652fc4630cf5808 -Author: Carl Worth -Date: Tue May 17 06:08:01 2005 +0000 - - Avoid shifting 32-bit quanity by 32 bits, which is undefined behavior. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 5 +++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit 0c05b23b3165ec6908c28f56b3446cf43dff44a2 -Author: Carl Worth -Date: Tue May 17 06:05:13 2005 +0000 - - Rework of cairo_xlib_surface create functions by Keith Packard: - Add cairo_xlib_surface_create_with_render_format. - Reduce Xlib constructors down to two simple forms. Add width, height to constructors and eliminate any synchronous size queries from the implementation. - Update to match new cairo_xlib_surface_t create functions. - - ChangeLog | 18 ++ - src/cairo-xlib-surface.c | 453 ++++++++++++++++++++++++---------------------- - src/cairo-xlib-xrender.h | 62 +++++++ - src/cairo-xlib.h | 15 +- - test/cairo-test.c | 14 +- - test/xlib-surface.c | 10 +- - 6 files changed, 342 insertions(+), 230 deletions(-) - -commit 84bc5a32d6b3ad366698c14a01f7a4898f1cd25c -Author: Carl Worth -Date: Tue May 17 05:58:01 2005 +0000 - - Remove destroy_closure from cairo_output_stream_t interface. - Remove destroy_closure argument from cairo_pdf_surface_create_for_stream. Rename width,height to width_in_points, height_in_points for better clarity. - Brush a bunch of dust off of the PS backend and bring it up to date with the latest API conventions from the PDF backend. These include: accepting a filename rather than a FILE in the primary constructor, providing a stream-based interface for more flexibility, and accepting a surface size in device-space units (points) rather than inches. - Make it a little more clear that the width and height being passed around are in units of points. - Update to the latest cairo-ps.h changes as described above. Notice how much more sane things become now that the surface size is described in device-space units. - - ChangeLog | 27 ++++++++ - src/cairo-output-stream.c | 23 ++----- - src/cairo-pdf-surface.c | 13 ++-- - src/cairo-pdf.h | 17 +++--- - src/cairo-ps-surface.c | 153 ++++++++++++++++++++++++++++----------------- - src/cairo-ps.h | 19 ++++-- - src/cairoint.h | 1 - - test/pdf-surface.c | 11 ++-- - test/ps-surface.c | 13 +--- - 9 files changed, 164 insertions(+), 113 deletions(-) - -commit 9bf26e8e73e0bafd7361ae38d485c9b9b17794b1 -Author: Carl Worth -Date: Tue May 17 01:05:35 2005 +0000 - - Add simple test for ps surface backend (modeled after pdf-surface.c). - Add print message telling user to examine resulting file. - - ChangeLog | 10 ++++ - test/.cvsignore | 2 + - test/Makefile.am | 5 ++ - test/pdf-surface.c | 2 + - test/ps-surface.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 141 insertions(+), 0 deletions(-) - -commit 189161118faeb3a6d5d7b625f16ffbef22231c93 -Author: Carl Worth -Date: Tue May 17 00:54:09 2005 +0000 - - Update PDF test case to make sure we're actually getting the right paper size, image scaling etc. And it should now be easier to see if cairo is happy by manually viewing the resulting PDF file. - - ChangeLog | 7 ++++++ - test/pdf-surface.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++------ - 2 files changed, 62 insertions(+), 7 deletions(-) - -commit 9bf669a790cfda9950a8fa204de541133c671bd9 -Author: Carl Worth -Date: Tue May 17 00:39:17 2005 +0000 - - Fix to include cairo-xlib.h, (which also fixes test/xlib-surface.c). - - ChangeLog | 5 +++++ - src/cairo-xlib-test.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 91dcaea6a2cd9a169e8b0a23a1a0902cd42b3a93 -Author: Carl Worth -Date: Tue May 17 00:34:10 2005 +0000 - - Update to the latest PDF surface API changes: use filename not FILE* and use surface dimension in points, not inches. - - ChangeLog | 6 ++++++ - test/pdf-surface.c | 18 ++++++++---------- - 2 files changed, 14 insertions(+), 10 deletions(-) - -commit 200bcda18859699832ea2cf8d86abd57b501aecc -Author: Keith Packard -Date: Mon May 16 22:31:36 2005 +0000 - - Initialize op->stops[0].scale = 0. - This scale value is used only when computing gradient values before the defined range, in which case stop 0 is used for both ends of the interpolation, making the value of 'scale' not actually matter, except that valgrind notices we're using an undefined value. - - ChangeLog | 11 +++++++++++ - src/cairo-pattern.c | 7 +++++++ - 2 files changed, 18 insertions(+), 0 deletions(-) - -commit e5b31bca7c0a7d7eb4dec303fb652c26652c3f60 -Author: Carl Worth -Date: Mon May 16 15:05:56 2005 +0000 - - Remove quarter-over test name accidentally added to Makefile. - - ChangeLog | 6 ++++++ - test/.cvsignore | 1 - - test/Makefile.am | 3 --- - 3 files changed, 6 insertions(+), 4 deletions(-) - -commit ea410111d38145e7c74558951b1d895ebaf6f8dc -Author: Kristian Høgsberg -Date: Mon May 16 11:41:42 2005 +0000 - - Take a filename instead of a FILE pointer. - - ChangeLog | 7 +++++++ - src/cairo-output-stream.c | 20 +++++++++++++++++--- - src/cairo-pdf-surface.c | 24 ++++++++++++------------ - src/cairo-pdf.h | 10 ++++------ - src/cairoint.h | 2 +- - 5 files changed, 41 insertions(+), 22 deletions(-) - -commit 60b0a05df73cef4a67d111a282b20ce1fd5081e6 -Author: Carl Worth -Date: Sat May 14 14:01:46 2005 +0000 - - Brush the dust off the XCB backend and get it compiling and working again. This patch makes the XCB surface API match that of the Xlib surface API as of yesterday. But, it's already stale as the Xlib API changed again. So we'll need one more revision of the XCB backend before the next snapshot. - Add support for testing of the xcb backend as well. - - ChangeLog | 24 +++ - src/cairo-xcb-surface.c | 404 +++++++++++++++++++++++++++++++++++++++-------- - src/cairo-xcb.h | 22 ++- - test/.cvsignore | 2 + - test/Makefile.am | 3 + - test/cairo-test.c | 47 ++++++- - test/cairo-test.h | 2 - - 7 files changed, 427 insertions(+), 77 deletions(-) - -commit 6a1af1999dfb79f05341ea6c4bf0e23795db01bc -Author: Carl Worth -Date: Sat May 14 13:51:59 2005 +0000 - - Cleanup output a bit, move verbose messages to test-specific log file. - - ChangeLog | 7 +++++++ - test/cairo-test.c | 6 +++++- - test/pdf-surface.c | 1 + - test/xlib-surface.c | 31 ++++++++++++++++++------------- - 4 files changed, 31 insertions(+), 14 deletions(-) - -commit 53e6fdb8855ad7bc54ec40ebf6609cccb6eac54c -Author: Carl Worth -Date: Sat May 14 13:22:25 2005 +0000 - - Fix the last commit so it actually compiles now. - - ChangeLog | 8 +++++++- - src/cairo-xlib-surface.c | 2 +- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit 55366995b6783309493af8a9f88560b6ad3494ff -Author: Carl Worth -Date: Sat May 14 10:15:11 2005 +0000 - - Fix a few documentation typos in the recent xlib surface rework. - - ChangeLog | 7 +++++++ - src/cairo-xlib-surface.c | 17 +++++++++-------- - test/.cvsignore | 1 + - 3 files changed, 17 insertions(+), 8 deletions(-) - -commit 95859dc2c6975f072696374b90e1108626a99830 -Author: Carl Worth -Date: Sat May 14 10:03:56 2005 +0000 - - Add an #error if cairo-foo.h is included when cairo was compiled without support for the foo backend. - - ChangeLog | 13 +++++++++++++ - src/cairo-atsui.h | 3 +++ - src/cairo-ft.h | 3 +++ - src/cairo-glitz.h | 3 +++ - src/cairo-pdf.h | 3 +++ - src/cairo-ps.h | 3 +++ - src/cairo-quartz.h | 3 +++ - src/cairo-win32.h | 6 ++++-- - src/cairo-xcb.h | 3 +++ - src/cairo-xlib.h | 3 +++ - 10 files changed, 41 insertions(+), 2 deletions(-) - -commit f797eaac1ce939a0a890ab2157f42d2ae3421dda -Author: Carl Worth -Date: Sat May 14 10:00:27 2005 +0000 - - Update for change in cairo_pdf_surface_create which no longer accepts DPI values. - - ChangeLog | 5 +++++ - test/pdf-surface.c | 3 +-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit bef4b1371676444e51dcd73f1ec52024265c1f5b -Author: Owen Taylor -Date: Fri May 13 17:54:43 2005 +0000 - - src/cairo-xlib-surface.c src/cairo-xlib.h doc/public/cairo-sections.txt: Drop the _for_pixmap() and _for_window() out of the create functions and use some lazy cleverness to sniff the information out as needed. - src/cairo-xlib-surface.c src/cairo-xlib-test.h Makefile.am: add cairo_test_xlib_disable_render() to turn off RENDER for tests. - Test various different types of Xlib surface creation. - Remove left-over include of Xrender.h. - - ChangeLog | 16 +++ - doc/public/Makefile.am | 1 + - doc/public/cairo-sections.txt | 5 +- - doc/public/tmpl/cairo-xlib.sgml | 20 +--- - src/Makefile.am | 2 +- - src/cairo-xlib-surface.c | 190 +++++++++++++++++++---------- - src/cairo-xlib-test.h | 55 ++++++++ - src/cairo-xlib.h | 18 +-- - test/Makefile.am | 5 + - test/cairo-test.c | 4 +- - test/xlib-surface.c | 260 +++++++++++++++++++++++++++++++++++++++ - 11 files changed, 479 insertions(+), 97 deletions(-) - -commit 15ecc8776327ee076274d4234f36ab584956c073 -Author: Kristian Høgsberg -Date: Fri May 13 14:04:22 2005 +0000 - - Make this a varg function and use the new _cairo_output_stream_vprintf() function to format extra dict contents. - Reimplement the printf logic so we can special case formatting of doubles to be locale independent and trim trailing zeros. - - ChangeLog | 9 +++ - src/cairo-output-stream.c | 156 +++++++++++++++++++++++++++++++++++++++++---- - src/cairo-pdf-surface.c | 86 +++++++++++++------------ - src/cairoint.h | 5 ++ - 4 files changed, 203 insertions(+), 53 deletions(-) - -commit b9db66eb17754da628894a4e43943f3fbef88406 -Author: Kristian Høgsberg -Date: Fri May 13 09:26:20 2005 +0000 - - Rename cairo_pdf_surface_create_for_callback() to cairo_pdf_surface_create_for_stream(), and change PDF constructors to take width and height as points and move PPI setting to cairo_pdf_surface_set_ppi() - - ChangeLog | 8 +++ - src/cairo-pdf-surface.c | 120 +++++++++++++++++++++-------------------------- - src/cairo-pdf.h | 23 +++++---- - 3 files changed, 73 insertions(+), 78 deletions(-) - -commit 9ebf15e9600c5a5c741cd1540478bb18f236b55d -Author: Owen Taylor -Date: Fri May 13 08:09:24 2005 +0000 - - Fix misplaced goto. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 5 +++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit 7c4a2b1d6e10808bac483b5f2b01efa70bca2c02 -Author: Carl Worth -Date: Thu May 12 23:11:55 2005 +0000 - - Fix image->data to be unsigned - Track change in signedness of data member/parameter. - - ChangeLog | 13 +++++++++++++ - src/cairo-glitz-surface.c | 2 +- - src/cairo-image-surface.c | 6 +++--- - src/cairo-xlib-surface.c | 6 +++--- - src/cairoint.h | 6 +++--- - 5 files changed, 23 insertions(+), 10 deletions(-) - -commit d5ca4e37d7b761ccc4fc500c5ba615526a4a38c7 -Author: Carl Worth -Date: Thu May 12 23:09:58 2005 +0000 - - Update xcb backend to compile after recent API changes: - Fix missing return value. (_cairo_xcb_surface_acquire_source_image): Remove calls to non-existent cairo_surface functions. (_cairo_xcb_surface_set_matrix): Update for new matrix member names. (_cairo_xcb_surface_get_extents): Fix typo. - - ChangeLog | 11 +++++++++++ - src/cairo-xcb-surface.c | 25 +++++++++++-------------- - 2 files changed, 22 insertions(+), 14 deletions(-) - -commit 949daa1bc98cdd34a6c3d7b3ca69fd06e88883e4 -Author: Keith Packard -Date: Thu May 12 20:25:07 2005 +0000 - - libpixman creates an A8 format object and sometimes forgets to destroy (when the bounds of the trapezoids are empty). Avoids creating the format object in that case. - reviewed by: cworth - - pixman/ChangeLog | 9 +++++++++ - pixman/src/ictrap.c | 13 ++++++++----- - 2 files changed, 17 insertions(+), 5 deletions(-) - -commit 27d9c575a77e0b6dc995e348c4877bc0092a4571 -Author: Carl Worth -Date: Thu May 12 11:02:35 2005 +0000 - - Add new test for bug in cairo_paint_with_alpha not transforming the source. - Use a transformed copy of the source just like we do in all the other calls to cairo_surface_composite. Fixes the bug tested by test/paint-with-alpha. - - ChangeLog | 13 ++++++++ - src/cairo-gstate.c | 6 +++- - test/.cvsignore | 1 + - test/Makefile.am | 3 ++ - test/paint-with-alpha-ref.png | Bin 0 -> 164 bytes - test/paint-with-alpha.c | 64 +++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 86 insertions(+), 1 deletions(-) - -commit 52f41b7bf08a5e3a599ef6ebc7273f057ada4fa6 -Author: Keith Packard -Date: Thu May 12 08:04:22 2005 +0000 - - _get_mask_extents creates a pixman region but neglects to destroy it. - reviewed by: otaylor - - ChangeLog | 8 ++++++++ - src/cairo-gstate.c | 2 ++ - 2 files changed, 10 insertions(+), 0 deletions(-) - -commit e4e5b1f00ded346f40c788fa9b6cfdd3164c1241 -Author: Owen Taylor -Date: Wed May 11 16:32:44 2005 +0000 - - Handle more cases by assuming no-super-luminescent colors. - - ChangeLog | 5 +++++ - src/cairo-win32-surface.c | 12 ++++++++++-- - 2 files changed, 15 insertions(+), 2 deletions(-) - -commit b913a81c3482f4dc8bc452d91bfaf64b416523f3 -Author: T Rowley -Date: Wed May 11 16:01:56 2005 +0000 - - Revive quartz backend. - Set fill type repeat on source surface. (_cairo_glitz_surface_show_glyphs): Add missing cairo operator to glitz operator conversion. (_cairo_glitz_surface_show_glyphs): Only render glyphs with non zero size. - Fix bounding box computation. - - ChangeLog | 21 +++++++++ - src/cairo-surface.c | 18 ++++---- - src/cairo-win32-font.c | 36 +++++++------- - src/cairo-win32-surface.c | 111 +++++++++++++++++++++++++++++++++++++-------- - test/Makefile.am | 5 ++- - test/cairo-test.c | 9 +++- - 6 files changed, 149 insertions(+), 51 deletions(-) - -commit 3be31fee9ae5d1740f71ea829ba26df7569c976c -Author: Tor Lillqvist -Date: Wed May 11 15:39:26 2005 +0000 - - Revive quartz backend. - - ChangeLog | 6 ++ - src/cairo-atsui-font.c | 140 ++++++++++++++----------------------------- - src/cairo-atsui.h | 3 - - src/cairo-quartz-surface.c | 18 ++++-- - 4 files changed, 65 insertions(+), 102 deletions(-) - -commit ac278285c8a243c42a50e7d1f5cfc875a12401b2 -Author: David Reveman -Date: Wed May 11 13:53:18 2005 +0000 - - Avoid empty glyphs - - ChangeLog | 2 + - src/cairo-glitz-surface.c | 63 +++++++++++++++++++++++++++++++------------- - 2 files changed, 46 insertions(+), 19 deletions(-) - -commit bd168e15ca9dbd2a02ad5e2f7df1a661d534d679 -Author: David Reveman -Date: Wed May 11 13:30:56 2005 +0000 - - Fix fill_rectangles and show_glyphs in glitz backend - - ChangeLog | 7 +++++++ - src/cairo-glitz-surface.c | 12 +++++++----- - 2 files changed, 14 insertions(+), 5 deletions(-) - -commit 59c2730b1d5fa511494858e599735948ce1cf394 -Author: Owen Taylor -Date: Tue May 10 21:06:01 2005 +0000 - - src/cairo-xlib-surface.c src/cairo-xlib.h: Remove leftover cairo_xlib_surface_create(). - - ChangeLog | 5 +++++ - doc/public/cairo-sections.txt | 1 - - doc/public/tmpl/cairo-xlib.sgml | 13 ------------- - src/cairo-xlib-surface.c | 16 ---------------- - src/cairo-xlib.h | 8 -------- - 5 files changed, 5 insertions(+), 38 deletions(-) - -commit 0c7c2246681dad0b69d6ea0438f18916dbb0e0a4 -Author: Owen Taylor -Date: Tue May 10 20:45:54 2005 +0000 - - src/cairo.c src/cairo-path-data.c src/cairo-path-data-private.h: Pass the gstate to _cairo_path_data_create[_flat] and use _cairo_gstate_backend_to_user() so as to properly handle the surface device offset. - - ChangeLog | 7 +++++++ - src/cairo-path-data-private.h | 6 ++---- - src/cairo-path-data.c | 38 ++++++++++++++++---------------------- - src/cairo.c | 8 ++------ - 4 files changed, 27 insertions(+), 32 deletions(-) - -commit 4e1cce108b641fbb6931ffa1d10aa1e4aef0329c -Author: Carl Worth -Date: Tue May 10 20:38:21 2005 +0000 - - Don't use return when calling a void function (thanks to Damien Carbery ). Closes bug #3134. - - ChangeLog | 6 ++++++ - src/cairo-arc.c | 8 ++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit b05c85eafb953fbe082b67875865ae4e4ca56ed2 -Author: Carl Worth -Date: Tue May 10 20:25:38 2005 +0000 - - Removing mucking around with stderr and add a cairo_test_log function instead. - Switch all error messages from fprintf(stderr,...) to cairo_test_log(...). - - ChangeLog | 14 ++++++++++++++ - test/buffer-diff.c | 17 +++++++++-------- - test/cairo-test.c | 45 +++++++++++++++++++++++++++++---------------- - test/cairo-test.h | 3 +++ - test/create-for-png.c | 2 +- - test/create-from-png.c | 2 +- - test/pdf-surface.c | 2 +- - test/read-png.c | 9 +++++---- - test/trap-clip.c | 4 ++-- - test/xmalloc.c | 5 +++-- - 10 files changed, 68 insertions(+), 35 deletions(-) - -commit 40796148b87eea991a9c624061a978821f108de6 -Author: Carl Worth -Date: Tue May 10 14:54:48 2005 +0000 - - Fix URLs for glitz and xlibs, (thanks to Jason Dorje Short ). - - ChangeLog | 5 +++++ - configure.in | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 6f3215cb7ff9c9ccb1728192765578ebb9352ac1 -Author: Carl Worth -Date: Tue May 10 14:48:05 2005 +0000 - - Update to current canonical URL for XCB. - - ChangeLog | 4 ++++ - configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 3253534a824cf3b81ea5b6abeaea0e4b414834d2 -Author: Carl Worth -Date: Tue May 10 12:42:32 2005 +0000 - - Don't guess and make our own definitions for uint8_t, etc. Just error out if we can't find a suitable header file. - Fix to use fixed-size type so that this code works when sizeof(unsigned long) != 32. Thanks to Manish Singh. - - ChangeLog | 11 +++++++++++ - src/cairo-png.c | 22 +++++++++++----------- - src/cairo-wideint.h | 9 ++------- - test/read-png.c | 28 +++++++++++++++++++++------- - 4 files changed, 45 insertions(+), 25 deletions(-) - -commit c66ca528e037381f485b53bb36b2e9a735c2b8f5 -Author: Carl Worth -Date: Tue May 10 12:22:41 2005 +0000 - - Fix cairo_get_font_matrix to actually use its out-parameter. And change the return type to void. - - ChangeLog | 8 ++++++++ - src/cairo-gstate.c | 7 ++++--- - src/cairo.c | 10 +++++----- - src/cairo.h | 5 +++-- - src/cairoint.h | 5 +++-- - 5 files changed, 23 insertions(+), 12 deletions(-) - -commit 7b46c815d2652a02aca77a3a962a37e22e9d04fb -Author: Owen Taylor -Date: Mon May 9 16:33:59 2005 +0000 - - Get the glyphslot point *after* we get the FT_Face. (Robert O'Callahan) - - ChangeLog | 5 +++++ - src/cairo-ft-font.c | 6 +++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -commit 01b2526ceb77e43f653f2909f6ff998a956d72a5 -Author: Carl Worth -Date: Mon May 9 10:41:17 2005 +0000 - - Fix deprecation macro to point to the right function, (thanks to John Ellson). - - ChangeLog | 5 +++++ - src/cairo.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 14c690472cf893978331dcf25cc50d43609928ad -Author: Carl Worth -Date: Mon May 9 09:12:52 2005 +0000 - - Push cairo_matrix_t const-correctness down through the entire implmentation, (expanding on preliminary work by Robert O'Callahan ) - - ChangeLog | 25 +++++++++++++++++++++++++ - src/cairo-font.c | 18 +++++++++--------- - src/cairo-ft-font.c | 19 ++++++++++--------- - src/cairo-gstate.c | 11 ++++++----- - src/cairo-image-surface.c | 2 +- - src/cairo-matrix.c | 19 +++++++++++-------- - src/cairo-pattern.c | 7 ++++--- - src/cairo.c | 10 ++++++---- - src/cairo.h | 30 +++++++++++++++++------------- - src/cairoint.h | 45 ++++++++++++++++++++++++--------------------- - 10 files changed, 113 insertions(+), 73 deletions(-) - -commit 31b4e5b4ecda4b3733f39b5f1f759cc59f953836 -Author: Carl Worth -Date: Mon May 9 08:34:57 2005 +0000 - - Change cairo-features again so that either #if or #ifdef will work to test any feature. - - ChangeLog | 6 ++++++ - configure.in | 44 +++++++++++--------------------------------- - src/cairo-features.h.in | 22 +++++++++++----------- - 3 files changed, 28 insertions(+), 44 deletions(-) - -commit 2e72b70124f678ba0bd21db318345a6583cb9cbd -Author: Owen Taylor -Date: Sat May 7 14:31:01 2005 +0000 - - doc/public/language-bindings.xml doc/public/cairo-doc.xml doc/public/Makefile.am: Document suggested conventions and techniques for many aspects of creating a language binding for Cairo. - - ChangeLog | 7 + - doc/public/language-bindings.xml | 726 ++++++++++++++++++++++++++++++++++++++ - 2 files changed, 733 insertions(+), 0 deletions(-) - -commit 35248a17fd2cb1f4ff2bf312c092f853551bb9eb -Author: Owen Taylor -Date: Sat May 7 10:35:35 2005 +0000 - - Update. - - ChangeLog | 4 ++ - doc/public/cairo-sections.txt | 19 +-------- - doc/public/tmpl/cairo-glitz.sgml | 9 ---- - doc/public/tmpl/cairo-pdf.sgml | 33 --------------- - doc/public/tmpl/cairo-ps.sgml | 13 ------ - doc/public/tmpl/cairo-quartz.sgml | 11 ----- - doc/public/tmpl/cairo-surface.sgml | 25 +++++++----- - doc/public/tmpl/cairo-xcb.sgml | 12 ----- - doc/public/tmpl/cairo-xlib.sgml | 10 ----- - doc/public/tmpl/cairo.sgml | 79 +++++++++-------------------------- - 10 files changed, 41 insertions(+), 174 deletions(-) - -commit bc794062600a774a71045055deae5ad28483d7ec -Author: Carl Worth -Date: Fri May 6 22:42:52 2005 +0000 - - Point to both cairo_set_source_rgba and cairo_paint_with_alpha in deprecation of cairo_set_alpha. - - ChangeLog | 6 ++++++ - src/cairo.h | 2 +- - util/cairo-api-update | 3 ++- - 3 files changed, 9 insertions(+), 2 deletions(-) - -commit 750cc8143dda4e6194880dfc314a296424b325e5 -Author: Carl Worth -Date: Fri May 6 21:59:10 2005 +0000 - - Make idempotent substitutions that extend old names: - cairo_select_font -> cairo_select_font_face cairo_pattern_add_color_stop -> cairo_pattern_add_color_stop_rgba - by only substituting if the old name is not immediately followed by an underscore. - Tweak the substitution slightly to allow the script to be run on the cairo source itself, (eg. avoid changing the REPLACED_BY and DEPRECATED_BY macros that must mention the old names). - - ChangeLog | 15 +++++++++++++++ - util/cairo-api-update | 7 ++++--- - 2 files changed, 19 insertions(+), 3 deletions(-) - -commit 10c88d424485c7f001e9e03c121aa7c3b55336cc -Author: Carl Worth -Date: Fri May 6 21:33:22 2005 +0000 - - Change definitions of everything in cairo-features.h to prefer #if over #ifdef. - Track #ifdef -> #if changes. - Add support to automatically change all #ifdef CAIRO_HAS to #if CAIRO_HAS. - - ChangeLog | 26 +++++++++ - configure.in | 135 +++++++++++++++++++---------------------------- - src/cairo-atsui.h | 2 +- - src/cairo-cache.c | 6 +- - src/cairo-features.h.in | 24 ++++----- - src/cairo-ft-private.h | 2 +- - src/cairo-ft.h | 2 +- - src/cairo-glitz.h | 2 +- - src/cairo-hash.c | 6 +- - src/cairo-pdf.h | 2 +- - src/cairo-ps.h | 2 +- - src/cairo-quartz.h | 2 +- - src/cairo-win32.h | 2 +- - src/cairo-xcb.h | 2 +- - src/cairo-xlib.h | 2 +- - src/cairo.c | 7 +-- - src/cairo.h | 4 +- - src/cairoint.h | 12 ++-- - test/cairo-test.c | 16 +++--- - util/cairo-api-update | 1 + - 20 files changed, 127 insertions(+), 130 deletions(-) - -commit 9939e01b693a885496cfa82430b91c11a121269e -Author: Carl Worth -Date: Fri May 6 21:25:56 2005 +0000 - - Remove deprecated cairo_get_rgb_color that was accidentally missed in the recent purge of deprecated functions. - - ChangeLog | 9 +++++++++ - src/cairo-gstate.c | 6 ------ - src/cairo-pattern.c | 19 ------------------- - src/cairo.c | 25 ------------------------- - src/cairo.h | 3 --- - src/cairoint.h | 10 ---------- - 6 files changed, 9 insertions(+), 63 deletions(-) - -commit 4fff218fc4e1cdce281b916ecb6b616e581601e0 -Author: Carl Worth -Date: Fri May 6 21:19:49 2005 +0000 - - Update to track new CAIRO_OPERATOR names. - Fix documentation to refer to functions by their current names. - Update to track latest API (in currently unused function). - - ChangeLog | 14 ++++++++++++++ - src/cairo-gstate.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-win32-surface.c | 6 +++--- - src/cairo-xcb-surface.c | 12 ++++++------ - test/select-font-no-show-text.c | 4 ++-- - 6 files changed, 27 insertions(+), 13 deletions(-) - -commit 7bf02c12ab3aafae5f6cf8519401d1272b183d30 -Author: Carl Worth -Date: Fri May 6 14:20:05 2005 +0000 - - Fix return type from cairo_status_t to cairo_int_status_t. - - ChangeLog | 5 +++++ - src/cairo-glitz-surface.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit c7afce2ffdbc1e2d4eae2ba5a85dfff4ad3016ad -Author: Carl Worth -Date: Fri May 6 13:42:45 2005 +0000 - - Note that cairo_mask, and "just eliminate a bunch of functions are now done". - Note that all backwards-compatible and backwards-incompatible cahnges for the API Shakeup are now done. Sort "new functionality" of API Shakeup into its own category. - - ChangeLog | 10 ++++++++++ - ROADMAP | 17 ++++++++--------- - TODO | 31 +++++++++++++++++-------------- - 3 files changed, 35 insertions(+), 23 deletions(-) - -commit d7fe527e0f48f23821b7283d8d003fd1f6a3f899 -Author: Carl Worth -Date: Fri May 6 13:32:53 2005 +0000 - - Eliminate the following deprecated functions from cairo's interface: - cairo_copy cairo_get_path cairo_get_path_flat cairo_matrix_create cairo_matrix_destroy cairo_matrix_copy cairo_matrix_get_affine cairo_surface_set_repeat cairo_surface_set_matrix cairo_surface_get_matrix cairo_surface_set_filter cairo_surface_get_filter - Also, eliminate all support for compiling against, or running with old, deprecated names for functions. - Deal with all of the removals. - - ChangeLog | 65 ++++++++++ - src/cairo-ft-font.c | 8 +- - src/cairo-gstate.c | 15 --- - src/cairo-image-surface.c | 1 - - src/cairo-matrix.c | 116 ++++------------- - src/cairo-pattern.c | 17 ++-- - src/cairo-pdf-surface.c | 10 +- - src/cairo-surface.c | 79 ------------ - src/cairo-xlib-surface.c | 8 +- - src/cairo.c | 145 --------------------- - src/cairo.h | 265 +++++++++++---------------------------- - src/cairoint.h | 19 ++-- - test/cairo-test.c | 7 +- - test/gradient-alpha.c | 16 ++-- - test/mask.c | 8 +- - test/move-to-show-surface.c | 5 +- - test/select-font-no-show-text.c | 6 +- - test/set-source.c | 4 +- - test/text-cache-crash.c | 16 ++- - test/text-rotate.c | 6 +- - test/transforms.c | 2 +- - test/translate-show-surface.c | 5 +- - test/trap-clip.c | 8 +- - util/cairo-api-update | 48 +++++-- - 24 files changed, 274 insertions(+), 605 deletions(-) - -commit a790a2ea79507cae9564006ac32e27a0fcca8d60 -Author: Carl Worth -Date: Fri May 6 13:26:16 2005 +0000 - - Rename and re-order the cairo_operator_t enum to names that abbreviate less and are easier to understand, (eg. CAIRO_OPERATOR_DEST_OVER instead of CAIRO_OPEERATOR_OVER_REVERSE). - - ChangeLog | 20 ++++++++++++++++++++ - src/cairo-glitz-surface.c | 43 ++++++++++++++++++++++++++++++------------- - src/cairo-gstate.c | 2 +- - src/cairo-image-surface.c | 30 +++++++++++++++++++----------- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-surface.c | 2 +- - src/cairo-xlib-surface.c | 23 +++++++++++++---------- - src/cairo.h | 17 ++++++++++------- - test/cairo-test.c | 2 +- - test/mask.c | 4 ++-- - 10 files changed, 99 insertions(+), 48 deletions(-) - -commit d6fc5ee5e97f60972ec80fcfc52f0cf8b780d2a9 -Author: Carl Worth -Date: Fri May 6 13:23:41 2005 +0000 - - Remove cairo_set_target_surface and all other backend-specific cairo_set_target functions. Require a cairo_surface_t* to call cairo_create. - Port to use new cairo_create interface. - Rewrite all tests that were using cairo_set_target_surface to instead create a temporary cairo_t, (eventually to be replaced with cairo_begin_group). - - ChangeLog | 42 ++++ - src/cairo-glitz.h | 4 - - src/cairo-gstate.c | 28 ++- - src/cairo-pdf.h | 18 -- - src/cairo-ps.h | 8 - - src/cairo-quartz-surface.c | 24 -- - src/cairo-quartz.h | 6 - - src/cairo-surface.c | 2 +- - src/cairo-win32.h | 4 - - src/cairo-xcb.h | 7 - - src/cairo-xlib.h | 7 - - src/cairo.c | 429 ++++--------------------------------- - src/cairo.h | 86 +++----- - src/cairoint.h | 11 +- - test/cairo-test.c | 100 +++++----- - test/clip-nesting.c | 9 +- - test/mask.c | 10 +- - test/path-data.c | 13 +- - test/pdf-surface.c | 13 +- - test/pixman-rotate.c | 35 ++-- - test/scale-source-surface-paint.c | 1 - - test/self-copy.c | 2 +- - test/source-clip.c | 5 +- - test/source-surface-scale-paint.c | 1 - - test/surface-pattern.c | 25 +-- - 25 files changed, 245 insertions(+), 645 deletions(-) - -commit cea1de7579fad18ca6c9ec9bb29660970ec283b3 -Author: Owen Taylor -Date: Fri May 6 12:00:22 2005 +0000 - - src/cairo.[ch] doc/public/cairo-sections.txt: Add cairo_paint_with_alpha(). - Fix segfault when mask == NULL. - test/mask.c test/mask-ref.png: Add testing of cairo_paint_with_alpha(). - test/coverage.c test/coverage-ref.png: Remove ... it's not testing anything that mask doesn't test better. - - ChangeLog | 13 +++ - doc/public/Makefile.am | 3 +- - doc/public/cairo-docs.xml | 8 +-- - doc/public/cairo-sections.txt | 2 + - doc/public/tmpl/cairo.sgml | 31 +++++--- - src/cairo-pattern.c | 4 +- - src/cairo.c | 31 +++++++ - src/cairo.h | 4 + - test/Makefile.am | 4 - - test/coverage-ref.png | Bin 25904 -> 0 bytes - test/coverage.c | 185 ----------------------------------------- - test/mask-ref.png | Bin 58954 -> 87846 bytes - test/mask.c | 7 ++ - 13 files changed, 83 insertions(+), 209 deletions(-) - -commit 7f79e048b96dd3e2b2c798047aff312560de5006 -Author: David Reveman -Date: Wed May 4 05:45:59 2005 +0000 - - Add glyph caching to glitz backend - - ChangeLog | 4 + - src/cairo-glitz-surface.c | 856 ++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 859 insertions(+), 1 deletions(-) - -commit 8e485ec8c203f7fd1ce1cf4adc0c491732c97ecb -Author: Kristian Høgsberg -Date: Tue May 3 14:28:50 2005 +0000 - - Fills as paths patch originally by Owen Taylor. - Make sure we have a current point for the relative path operators. - Add fill_path backend method. - Implement fill_path in the PDF backend. - - ChangeLog | 21 +++++++++ - src/cairo-gstate.c | 8 +++ - src/cairo-path.c | 9 ++++ - src/cairo-pdf-surface.c | 116 +++++++++++++++++++++++++++++++++++++++++++---- - src/cairo-surface.c | 13 +++++ - src/cairoint.h | 13 +++++ - 6 files changed, 171 insertions(+), 9 deletions(-) - -commit 05ccd7685420be7c7213e68462e1fcc4c01bad3c -Author: Carl Worth -Date: Tue May 3 08:33:32 2005 +0000 - - Originally 2005-04-20 Carl Worth - Remove cairo_show_surface. Add new cairo_set_source_surface. - Remove _cairo_gstate_show_surface. - Replace calls to cairo_show_surface with cairo_set_source_surface; cairo_paint. - Fix messages to prefer - over _. - Fix documentation. - Three new tests to exercise set_source_surface more completely, (two of these are expected failures dues to outstanding bugs). - - ChangeLog | 31 +++++ - src/cairo-gstate.c | 188 +------------------------------ - src/cairo-png.c | 11 +- - src/cairo.c | 49 +++++---- - src/cairo.h | 20 +--- - test/.cvsignore | 10 ++- - test/Makefile.am | 128 +++++++++++---------- - test/cairo-test.c | 2 +- - test/create-for-png.c | 6 +- - test/create-from-png.c | 6 +- - test/filter-nearest-offset-ref.png | Bin 0 -> 254 bytes - test/filter-nearest-offset.c | 107 ++++++++++++++++++ - test/move-to-show-surface.c | 5 +- - test/pixman-rotate.c | 3 +- - test/scale-source-surface-paint-ref.png | Bin 0 -> 147 bytes - test/scale-source-surface-paint.c | 65 +++++++++++ - test/source-surface-scale-paint-ref.png | Bin 0 -> 147 bytes - test/source-surface-scale-paint.c | 65 +++++++++++ - test/translate-show-surface.c | 3 +- - 19 files changed, 399 insertions(+), 300 deletions(-) - -commit 8283381f120c0d5a4d3d770a541a576974cfdf89 -Author: Carl Worth -Date: Tue May 3 08:16:47 2005 +0000 - - Add suggestion for copy-on-write regions to fix clip region problems. - Fix check for old headers to respect DESTDIR, (to work better when cross-compiling, etc.). Thanks to Luke-Jr . - - ChangeLog | 9 +++++++++ - TODO | 4 ++++ - src/Makefile.am | 2 +- - 3 files changed, 14 insertions(+), 1 deletions(-) - -commit e227a106850ccced4e55bbc5cd5f139c6139aa2a -Author: Owen Taylor -Date: Mon May 2 14:20:07 2005 +0000 - - Changes the sign of extents->descent to match win32 backend and the conventional convention. - Document cairo_font_extents_t. - - ChangeLog | 8 ++++++++ - src/cairo-ft-font.c | 2 +- - src/cairo.h | 47 ++++++++++++++++++++++++++++++++++++++++++++--- - 3 files changed, 53 insertions(+), 4 deletions(-) - -commit 7dbd1f4401eb892ea58c147a61f02535d30318ab -Author: Owen Taylor -Date: Mon May 2 13:39:30 2005 +0000 - - src/cairo-surface.c src/cairoint.h: Add _cairo_surface_begin/end to save and restore the clip state of a surface. Copy and store clip regions set on a surface so that we can save and restore them. - Add a CAIRO_STATUS_BAD_NESTING error for interleaved use of two cairo_t's on the same surface. Also, add a skeleton doc comment for cairo_status_t. - src/cairo.c src/cairo-gstate.c src/cairoint.h: Use _cairo_surface_begin/end to replace _cairo_gstate_restore_external_state. - Use _cairo_surface_begin/end to save the state of a surface when we start drawing at it and restore it at the end. Check that the save level of the surface is what we expect on drawing operations and fail with CAIRO_STATUS_BAD_NESTING otherwise. - src/cairo-pattern.c src/cairoint.h (_cairo_pattern_acquire_surface_for_surface) (_cairo_pattern_release_surface): Surround use of pattern->surface with _cairo_surface->begin/end so we don't clip surfaces used as sources. - test/clip-nesting.c test/Makefile.am: Test of destinatin clipping with the nested creation of cairo_t's for the same context. - test/source-clip.c test/Makefile.am: Test that clipping on a source as a destination doesn't affect use of it as a source. - XFAIL test for copying from a surface as a source to itself as a destination with a clip. - - ChangeLog | 35 +++++++++ - doc/public/tmpl/cairo.sgml | 1 + - src/cairo-gstate-private.h | 1 + - src/cairo-gstate.c | 75 +++++++++++++------ - src/cairo-pattern.c | 82 ++++++++++++++------ - src/cairo-surface.c | 181 ++++++++++++++++++++++++++++++++++++++------ - src/cairo.c | 14 +++- - src/cairo.h | 29 +++++++- - src/cairoint.h | 21 ++++- - test/Makefile.am | 11 +++ - test/clip-nesting-ref.png | Bin 0 -> 1050 bytes - test/clip-nesting.c | 101 ++++++++++++++++++++++++ - test/self-copy-ref.png | Bin 0 -> 291 bytes - test/self-copy.c | 90 ++++++++++++++++++++++ - test/source-clip-ref.png | Bin 0 -> 180 bytes - test/source-clip.c | 85 +++++++++++++++++++++ - 16 files changed, 649 insertions(+), 77 deletions(-) - -commit 4ce3d3fb266908f2fe98564bf7dad387420dba9c -Author: Keith Packard -Date: Mon May 2 12:36:20 2005 +0000 - - Use correct arguments to compute absolute positions. - Test cairo_rel_move_to, cairo_rel_line_to and cairo_rel_curve_to - reviewed by: cworth - - ChangeLog | 12 ++++++++++ - src/cairo-path.c | 8 +++--- - test/Makefile.am | 7 ++++- - test/rel-path-ref.png | Bin 0 -> 212 bytes - test/rel-path.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 77 insertions(+), 6 deletions(-) - -commit 1464e35fde29e0a03a7ce033327a2f00396f71b0 -Author: Owen Taylor -Date: Mon May 2 11:42:41 2005 +0000 - - not mask.png. (Pointed out by Carl) - - ChangeLog | 5 +++++ - test/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 79b2a79f2d9ba8dbef44d04656fa84d83836ac6c -Author: Owen Taylor -Date: Mon May 2 11:01:18 2005 +0000 - - src/cairo.[ch] src/cairo-gstate.c: Add cairo_mask() and cairo_mask_surface(). - test/maks.c tests/Makefile.am tests/mask-ref.png: Add a comprehensive tests for cairo_mask(). - Updated - - ChangeLog | 10 ++ - doc/public/cairo-sections.txt | 2 + - doc/public/tmpl/cairo.sgml | 20 +++ - src/cairo-gstate.c | 259 ++++++++++++++++++++++++++++++----------- - src/cairo.c | 62 ++++++++++ - src/cairo.h | 10 ++ - src/cairoint.h | 4 + - test/Makefile.am | 3 + - test/mask-ref.png | Bin 0 -> 58954 bytes - test/mask.c | 241 ++++++++++++++++++++++++++++++++++++++ - 10 files changed, 544 insertions(+), 67 deletions(-) - -commit 0c40f66c04bffa1847d37cf9c64e48db9e76f51f -Author: Kristian Høgsberg -Date: Sun May 1 22:30:58 2005 +0000 - - Also call _cairo_gstate_ensure_font() for this function. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 4 ++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 388a8d491d43901a6608174daad284c35a10ea6c -Author: Owen Taylor -Date: Thu Apr 28 13:41:00 2005 +0000 - - Add a item about reworking cairo_format_t. - - ChangeLog | 4 ++++ - ROADMAP | 6 ++++++ - TODO | 32 ++++++++++++++++++++++++++++++++ - 3 files changed, 42 insertions(+), 0 deletions(-) - -commit 2dd5f40bc052a48c964acefe43005d727c045238 -Author: Owen Taylor -Date: Thu Apr 28 11:16:52 2005 +0000 - - Set image->pCompositeClip here. (IcComputeCompositeRegion) src/icrect.c (pixman_color_rects): Remove workaround clipping to the clientClip. - - pixman/ChangeLog | 7 +++++++ - pixman/src/icimage.c | 23 ++++++++++++++++------- - pixman/src/icrect.c | 2 -- - 3 files changed, 23 insertions(+), 9 deletions(-) - -commit 2a6e7ef7c3d42f2e51eefdd218f43f7272faf594 -Author: Carl Worth -Date: Thu Apr 28 11:15:47 2005 +0000 - - Replace annoying _ in output image filenames with - for better consistency. - - ChangeLog | 6 ++++++ - test/.cvsignore | 4 ++-- - test/cairo-test.c | 4 ++-- - 3 files changed, 10 insertions(+), 4 deletions(-) - -commit f3bc5e55541b53c414d066a1f6afb89e55f68a08 -Author: Carl Worth -Date: Wed Apr 27 14:09:41 2005 +0000 - - Use 1 instead of 0 for width and height to avoid BadValue errors from XCreatePixmap. - - ChangeLog | 6 ++++++ - test/cairo-test.c | 5 +++++ - 2 files changed, 11 insertions(+), 0 deletions(-) - -commit 2f5b0808b8e19af0c8c9e5fbaef4051404f7d7e7 -Author: Carl Worth -Date: Wed Apr 27 13:33:25 2005 +0000 - - Add support for testing multiple backends, courtesy of cairo_surface_write_to_png. Currently, only image and xlib backends are fullk hooked-up, but other backends should be quite easy to add for anyone skilled in the appropriate art. - - ChangeLog | 18 +++ - test/.cvsignore | 3 +- - test/buffer-diff.c | 98 ++++++++++++++-- - test/buffer-diff.h | 18 +++- - test/cairo-test.c | 323 ++++++++++++++++++++++++++++++++++++++-------------- - test/cairo-test.h | 1 + - test/read-png.c | 4 + - test/xmalloc.h | 2 + - 8 files changed, 362 insertions(+), 105 deletions(-) - -commit eabc32a0114ba86a450539e3fbde4cabab8d6b8f -Author: Owen Taylor -Date: Wed Apr 27 13:02:20 2005 +0000 - - Don't use pixman_compositeSrc_8888x8888 when the source is x8r8g8b8 or x8b8g8r8. - - pixman/ChangeLog | 5 +++++ - pixman/src/ic.c | 2 -- - 2 files changed, 5 insertions(+), 2 deletions(-) - -commit c382f9daf091331a37df61a8cfe883b7606af66b -Author: Owen Taylor -Date: Wed Apr 27 10:16:47 2005 +0000 - - src/cairo-traps.c src/cairoint.h (_cairo_traps_init_box): New function to create a single trapezoid box. - src/cairo.c src/cairo-gstate.c src/cairoint.h: Move the implementation of cairo_paint() into cairo-gstate.c for a better fix for the problem with backend/user coordinate confusion. Also no longer clear the current path on cairo_paint() - - ChangeLog | 11 +++++++++++ - src/cairo-gstate.c | 30 +++++++++++++++++++++++++++--- - src/cairo-traps.c | 37 +++++++++++++++++++++++++++++++++++++ - src/cairo.c | 26 +------------------------- - src/cairoint.h | 11 +++++++---- - 5 files changed, 83 insertions(+), 32 deletions(-) - -commit 153e0c5eab461320280c61e6f702b53eeeecfe82 -Author: Carl Worth -Date: Tue Apr 26 19:04:48 2005 +0000 - - Build rectangle with an identity matrix in place so that the entire target surface will be filled even when there is a transformation in place. - - ChangeLog | 6 ++++++ - src/cairo.c | 14 ++++++++++++++ - 2 files changed, 20 insertions(+), 0 deletions(-) - -commit 1c316ca07ad352c2cb9a522c6babef89b2e0d001 -Author: Carl Worth -Date: Tue Apr 26 18:56:37 2005 +0000 - - Add test to demonstrate bug in cairo_paint when under a non-identity transformation. - - ChangeLog | 8 +++++++ - test/.cvsignore | 2 + - test/Makefile.am | 3 ++ - test/paint-ref.png | Bin 0 -> 116 bytes - test/paint.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 66 insertions(+), 0 deletions(-) - -commit 86a17d5357a0164e418f57a3f0d383c429782858 -Author: Owen Taylor -Date: Tue Apr 26 15:28:01 2005 +0000 - - Updated. - src/cairo-png.c src/cairo.h: Fix up some doc build issues. - - ChangeLog | 6 +++ - doc/public/cairo-sections.txt | 27 +++++++++--- - doc/public/tmpl/cairo-pattern.sgml | 15 ++++++- - doc/public/tmpl/cairo-png.sgml | 31 ++++++++++--- - doc/public/tmpl/cairo.sgml | 86 ++++++++++++++++++++++++++++++++++-- - src/cairo-png.c | 27 +++--------- - src/cairo.h | 2 +- - 7 files changed, 155 insertions(+), 39 deletions(-) - -commit 2847ff9d6e715c1926a10b6c0278f1274d0765a3 -Author: Carl Worth -Date: Tue Apr 26 13:05:51 2005 +0000 - - Note that cairo_paint and cairo_clip/fill/stroke_preserve are all done now. - - ChangeLog | 6 ++++++ - ROADMAP | 8 ++++---- - TODO | 2 +- - 3 files changed, 11 insertions(+), 5 deletions(-) - -commit 1baa4d132903e21395dc66ca792164e2ef8885d2 -Author: Carl Worth -Date: Tue Apr 26 12:38:06 2005 +0000 - - Originally: 2005-04-19 Carl Worth - Add cairo_stroke_preserve, cairo_fill_preserve, and cairo_clip_preserve. - Rip the path out of cairo_gstate_t. - Add path to cairo_t. - Bring in most of the path code that used to live in cairo-gstate.c - Move arc generation code into its own file. - Accept path+ctm_inverse+tolerance instead of gstate. Absorb flattening and device space->user space conversion that used to be in _cairo_gstate_intepret_path. - Prefer cairo_fixed_t parameters over ciaro_point_t for cross-file interfaces. - Track changes in _cairo_path_fixed interfaces. - Port to use cairo_fill_preserve rather than cairo_save/cairo_restore which no longer work for saving the path. - Remove get and set of current point since it is no longer affected by cairo_save and cairo_restore. Add get and set testing for cairo_matrix_t. - - ChangeLog | 40 +++ - TODO | 2 +- - src/Makefile.am | 1 + - src/cairo-arc-private.h | 57 ++++ - src/cairo-arc.c | 296 ++++++++++++++++++ - src/cairo-ft-font.c | 60 +++-- - src/cairo-gstate-private.h | 4 - - src/cairo-gstate.c | 677 +++-------------------------------------- - src/cairo-path-data-private.h | 8 +- - src/cairo-path-data.c | 239 ++++++++++++--- - src/cairo-path.c | 93 ++++--- - src/cairo-private.h | 4 + - src/cairo.c | 321 +++++++++++++++++--- - src/cairo.h | 10 +- - src/cairoint.h | 159 ++++------ - test/fill-and-stroke.c | 8 +- - test/get-and-set.c | 37 +-- - 17 files changed, 1106 insertions(+), 910 deletions(-) - -commit 618792c8c041ee2004acf1ff411e0adbe94a3e63 -Author: Carl Worth -Date: Tue Apr 26 09:43:39 2005 +0000 - - Add very simple test to generate PDF output, (no automated verification yet). - Track PNG interface changes, (no more include of cairo-png.h, cairo_surface_write_png renamed to cairo_surface_write_to_png). - - ChangeLog | 14 ++++++++++ - test/.cvsignore | 1 + - test/Makefile.am | 2 + - test/cairo-test.c | 4 +-- - test/cairo-test.h | 1 + - test/create-for-png.c | 2 - - test/create-from-png.c | 2 - - test/pdf-surface.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ - test/pixman-rotate.c | 1 - - 9 files changed, 84 insertions(+), 8 deletions(-) - -commit a5f734455c00f1031f19494717b02a5de2687ec0 -Author: Kristian Høgsberg -Date: Mon Apr 25 21:52:13 2005 +0000 - - Prototypes moved to cairo.h, this file removed. - - ChangeLog | 2 + - src/cairo-png.h | 58 ------------------------------------------------------- - 2 files changed, 2 insertions(+), 58 deletions(-) - -commit 28e7bbea652efa58b28217bd0cdfe2599a6ae7c7 -Author: Kristian Høgsberg -Date: Mon Apr 25 21:36:38 2005 +0000 - - Renamed from cairo_surface_write_png_to_stream() for consistency. (cairo_surface_write_to_png): Renamed from cairo_surface_write_png() for consistency. - - ChangeLog | 7 +++++++ - src/cairo-png.c | 9 +++++---- - src/cairo.h | 6 +++--- - 3 files changed, 15 insertions(+), 7 deletions(-) - -commit 87009d692b5a37fc91db19819c46216ed6b3c4e3 -Author: Kristian Høgsberg -Date: Mon Apr 25 20:42:54 2005 +0000 - - Factor out bulk of the code into a new callback based function, write_png(). Call it with a stdio write callback. (cairo_surface_write_png_to_stream): New function to write a surface to a PNG stream. (cairo_image_surface_create_from_png): Likewise, move most of the code to read_png(), clean up error handling and reduce this function to calling read_png() with a stdio based read function. (cairo_image_surface_create_from_png_stream): New function to create an image surface from a PNG stream. - New functions to get widht and height of an image surface. - Add new prototype and error codes. - Adjust to new PNG API. - - ChangeLog | 21 ++++ - src/cairo-image-surface.c | 32 ++++++ - src/cairo-png.c | 245 ++++++++++++++++++++++++++++++++++----------- - src/cairo.c | 4 + - src/cairo.h | 68 ++++++++++--- - test/cairo-test.c | 4 +- - test/create-for-png.c | 19 ++-- - test/create-from-png.c | 19 ++-- - 8 files changed, 316 insertions(+), 96 deletions(-) - -commit e55161d2b2ea27d5174c2674544b3aaf6748134d -Author: Owen Taylor -Date: Mon Apr 25 19:38:44 2005 +0000 - - Initialize the saved_dc_bitmap field here as well ... not strictly needed, but cleaner. (Reported by Peter Arsoff) - - ChangeLog | 6 ++++++ - src/cairo-win32-surface.c | 1 + - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit 1c756648fc4b5984cb721571bc4cbd68d8c95b29 -Author: Kristian Høgsberg -Date: Sat Apr 23 11:58:18 2005 +0000 - - Finalize the correct pattern. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 70211bdbca78c944bc1447eb6216c8e84e14db23 -Author: Kristian Høgsberg -Date: Fri Apr 22 17:32:12 2005 +0000 - - Only check PNG signature if we read all the bytes. Don't fclose() the FILE argument (Steve Chaplin ). - Rename to cairo_image_surface_create_for_png() to cairo_image_surface_create_from_png() and change FILE arguments for this function and cairo_surface_write_png() to be a filename argument instead. - - ChangeLog | 11 ++++++++++ - src/Makefile.am | 2 - - src/cairo-png.c | 61 +++++++++++++++++++++++++++++------------------------- - src/cairo-png.h | 6 +--- - src/cairo.h | 11 ++++++++++ - 5 files changed, 57 insertions(+), 34 deletions(-) - -commit 0f0a6a57a31f06d250f0684a49b6bb57084d65b2 -Author: Kristian Høgsberg -Date: Thu Apr 21 15:18:14 2005 +0000 - - Handle backends that don't have a set_clip_region implementation (PDF). - - ChangeLog | 5 +++++ - src/cairo-surface.c | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 9c10b54e5e98a5c5beca48c51ea930c2072ff6bc -Author: Carl Worth -Date: Tue Apr 19 16:29:04 2005 +0000 - - Add new cairo_paint function. - Add new get_extents function to the surface backend interface. - Add function to query current clip_extents. - Implement the new get_extents function for each backend. - Save the clip extents from set_clip_region and implement _cairo_surface_get_clip_extents. - Abstract away the evil XGetGeometry roundtrip in _cairo_xlib_surface_get_size. - Rewrite a couple of tests to call cairo_paint. - - ChangeLog | 35 +++++++++++++++ - src/cairo-glitz-surface.c | 15 +++++++ - src/cairo-gstate.c | 7 +++ - src/cairo-image-surface.c | 22 ++++++++++ - src/cairo-pdf-surface.c | 22 +++++++++- - src/cairo-ps-surface.c | 20 +++++++++ - src/cairo-quartz-surface.c | 12 ++++- - src/cairo-surface.c | 39 ++++++++++++++++- - src/cairo-win32-surface.c | 18 ++++++++ - src/cairo-xcb-surface.c | 15 +++++++ - src/cairo-xlib-surface.c | 87 +++++++++++++++++++++++++------------- - src/cairo.c | 31 +++++++++++++- - src/cairo.h | 3 + - src/cairoint.h | 101 ++++++++++++++++++++++++++++---------------- - test/gradient-alpha.c | 3 +- - test/linear-gradient.c | 3 +- - 16 files changed, 358 insertions(+), 75 deletions(-) - -commit 60ec322241ef01930ae63195651249a97ddbe6f7 -Author: Carl Worth -Date: Tue Apr 19 06:38:07 2005 +0000 - - Update API Shakeup chart to indicate that cairo_paint and cairo_fill_preserve patches have been sent. - - ChangeLog | 5 +++++ - TODO | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit f13b13a70e987443b572264014647f27237d4cc0 -Author: Carl Worth -Date: Mon Apr 18 16:26:14 2005 +0000 - - Add a test of a repeating surface pattern. - - ChangeLog | 8 ++++ - test/.cvsignore | 1 + - test/Makefile.am | 3 ++ - test/surface-pattern-ref.png | Bin 0 -> 194 bytes - test/surface-pattern.c | 75 ++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 87 insertions(+), 0 deletions(-) - -commit aef8f9b1a01f712c52d74ea0556dbe9092035b48 -Author: Carl Worth -Date: Mon Apr 18 05:25:57 2005 +0000 - - Mark a couple of items that are now complete. - Add test case that fills and strokes the same shapes, (in preparation for testing cairo_fill_preserve patch). - - ChangeLog | 11 +++++++ - ROADMAP | 14 ++++---- - test/.cvsignore | 1 + - test/Makefile.am | 3 ++ - test/fill-and-stroke-ref.png | Bin 0 -> 279 bytes - test/fill-and-stroke.c | 67 ++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 89 insertions(+), 7 deletions(-) - -commit ea82928aa74b87c8feab5e8424ba739b070680fe -Author: Carl Worth -Date: Thu Apr 14 15:02:47 2005 +0000 - - Update API Shakeup chart to indicate that cairo_set_source is done. - - ChangeLog | 5 +++++ - TODO | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 828094aef860c8087564c93408846a4e81eec20d -Author: Carl Worth -Date: Thu Apr 14 14:42:26 2005 +0000 - - and delete: - cairo_set_pattern -> cairo_set_source cairo_get_pattern -> cairo_get_source cairo_set_rgb_color -> cairo_set_source_rgb - -> cairo_set_source_rgba cairo_set_alpha -> cairo_get_alpha -> - Note that we'll likely want to add cairo_set_source_surface. - Add _cairo_stock_color helper function. Improve some interfaces: - _cairo_color_init _cairo_color_init_rgb _cairo_color_set_rgb -> _cairo_color_init_rgba _cairo_color_set_alpha _cairo_color_multiply_alpha - _cairo_color_get_rgb -> _cairo_color_get_rbga _cairo_color_get_rgba_premultiplied - Add cairo_stock_t and some helper macros: - CAIRO_COLOR_WHITE CAIRO_COLOR_BLACK CAIRO_COLOR_TRANSPARENT - Fix cairo_pattern_t by eliminating pattern->alpha. Fix cairo_solid_pattern_t to use cairo_color_t rather than three doubles. - Track removal of pattern->alpha, simplifying the code considerably - Track _cairo_color interface changes. Remove gstate->alpha. Propagate down set_source renamings. - cairo_pattern_add_color_stop -> cairo_pattern_add_color_stop_rgba - and add: - cairo_pattern_add_color_stop_rgb - Remove pattern->alpha, simplifying the code considerably. - Track pattern and color interface changes. - Add const where appropriate on cairo_color_t*. - Add private type inspection predicate. (cairo_xlib_surface_set_size): Add check for surface type mismatch, (no useful error reporting yet, though). - Note coverage as en expected failure. - Improve line wrap on expected failure messages. - Port all tests to new cairo_set_source interfaces. - - ChangeLog | 84 ++++++++++++ - src/cairo-color.c | 120 +++++++++++++---- - src/cairo-glitz-surface.c | 94 ++++--------- - src/cairo-gstate-private.h | 3 +- - src/cairo-gstate.c | 147 ++++++++------------- - src/cairo-pattern.c | 318 +++++++++++++++++--------------------------- - src/cairo-pdf-surface.c | 8 +- - src/cairo-ps-surface.c | 9 +- - src/cairo-surface.c | 35 +++--- - src/cairo-xlib-surface.c | 18 +++ - src/cairo.c | 146 +++++++++++--------- - src/cairo.h | 55 ++++---- - src/cairoint.h | 92 ++++++++----- - test/Makefile.am | 1 + - test/cairo-test.c | 2 +- - test/clip-twice.c | 3 +- - test/coverage.c | 23 ++-- - test/fill-rule.c | 2 +- - test/line-width.c | 2 +- - test/linear-gradient.c | 31 ++--- - test/pixman-rotate.c | 13 +-- - test/set-source.c | 16 +-- - test/text-rotate.c | 9 +- - test/trap-clip.c | 11 +-- - 24 files changed, 628 insertions(+), 614 deletions(-) - -commit c0d9c13d0403673a7fe994664a4f616c71301474 -Author: Carl Worth -Date: Thu Apr 14 14:02:03 2005 +0000 - - Make gradient change color in addition to just changing alpha in order to highlight distinction between interpolating in premultiplied vs. non-premultiplied space. - - ChangeLog | 8 ++++++++ - test/gradient-alpha-ref.png | Bin 146 -> 153 bytes - test/gradient-alpha.c | 8 ++++---- - 3 files changed, 12 insertions(+), 4 deletions(-) - -commit 65209fc39cb0257b2e55e7dfa509be5a5ef65f05 -Author: Carl Worth -Date: Thu Apr 14 10:02:58 2005 +0000 - - Improve instructions for when to add a test to the XFAIL list. - Print explanations for expected failures. - - ChangeLog | 11 +++++++++++ - test/Makefile.am | 30 ++++++++++++++++-------------- - test/cairo-test.c | 9 +++++++++ - test/cairo-test.h | 5 +++++ - test/pixman-rotate.c | 4 +++- - test/text-rotate.c | 4 +++- - 6 files changed, 47 insertions(+), 16 deletions(-) - -commit d1eb620a195170ac0761b3376e4cd97d7a46cf02 -Author: Carl Worth -Date: Thu Apr 14 09:31:21 2005 +0000 - - Add gradient-alpha test in preparation for upcoming cairo_set_source patch. - - ChangeLog | 8 +++++ - test/.cvsignore | 1 + - test/Makefile.am | 3 ++ - test/gradient-alpha-ref.png | Bin 0 -> 146 bytes - test/gradient-alpha.c | 62 +++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 74 insertions(+), 0 deletions(-) - -commit 95a6f1941a1ff32b3ef792e5db2a942d7c85bf07 -Author: Carl Worth -Date: Thu Apr 14 09:13:48 2005 +0000 - - Add set-source test in preparation for upcoming cairo_set_source patch. - - ChangeLog | 8 ++++ - test/.cvsignore | 3 +- - test/Makefile.am | 7 +++- - test/set-source-ref.png | Bin 0 -> 120 bytes - test/set-source.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 104 insertions(+), 3 deletions(-) - -commit 080f331edd6c64dd93785f35e05b532aa2f72512 -Author: Owen Taylor -Date: Thu Apr 14 06:05:59 2005 +0000 - - Remove a stray free() (#3029, Carl Worth) - Note that the bug is fixed. - - ChangeLog | 7 +++++++ - src/cairo-font.c | 1 - - test/select-font-no-show-text.c | 6 +++++- - 3 files changed, 12 insertions(+), 2 deletions(-) - -commit 66688da5e4485a369750bd5600134a94c281d985 -Author: Carl Worth -Date: Wed Apr 13 14:51:59 2005 +0000 - - Set freed pointer to NULL. - Fix to actually set surface->finished when done. Closes bug #2950 as documented in test/surface-finish-twice.c. - Note that this bug is fixed. - - ChangeLog | 11 +++++++++++ - src/cairo-image-surface.c | 4 +++- - src/cairo-surface.c | 11 +++++++++-- - test/surface-finish-twice.c | 4 ++++ - 4 files changed, 27 insertions(+), 3 deletions(-) - -commit 0fe6378bdb83b550ad10b007463d7fb12ef742a9 -Author: Carl Worth -Date: Wed Apr 13 14:48:02 2005 +0000 - - Add new test to exercise crash when calling cairo_surface_finish twice on the same surface. - - ChangeLog | 8 +++++ - test/.cvsignore | 1 + - test/Makefile.am | 2 + - test/surface-finish-twice.c | 70 +++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 81 insertions(+), 0 deletions(-) - -commit f4b2f59c056ca3a84b89412a617994cb1837fd4a -Author: Carl Worth -Date: Wed Apr 13 14:45:05 2005 +0000 - - Add new set-surface-no-show-text test. - Be sure to call cairo_destroy even if the image size is 0,0 so that we can test bugs triggered during cleanup. - - ChangeLog | 11 +++++++ - test/.cvsignore | 2 + - test/Makefile.am | 2 + - test/cairo-test.c | 1 + - test/select-font-no-show-text.c | 60 +++++++++++++++++++++++++++++++++++++++ - 5 files changed, 76 insertions(+), 0 deletions(-) - -commit f3af02bb0e098824a23b000adfa7a86a48390ddf -Author: Carl Worth -Date: Wed Apr 13 14:24:20 2005 +0000 - - Temporarily remove all text from this test case until we come up with an approach for drawing the same text with different freetype configurations. - - ChangeLog | 7 +++++++ - test/coverage-ref.png | Bin 44324 -> 25904 bytes - test/coverage.c | 6 ++++++ - 3 files changed, 13 insertions(+), 0 deletions(-) - -commit 21268bc35938c18783c428f6b3c267b85191b78c -Author: Owen Taylor -Date: Wed Apr 13 14:04:33 2005 +0000 - - Fix a comment from last commit - - src/cairo-traps.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8feb2717eb20ca2764a1c367a4f7e30bf1ad8537 -Author: Owen Taylor -Date: Wed Apr 13 14:03:17 2005 +0000 - - Fix ChangeLog entry - - ChangeLog | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 542e6c8c90a76bb9ccbedd95c8c65103c68ae6b6 -Author: Owen Taylor -Date: Wed Apr 13 14:01:50 2005 +0000 - - Work around a pair of libpixman bugs (denegerate trapezoids from tesellator, pixman_region_union_rect() failing on width/height zero rectangles) - - ChangeLog | 6 ++++++ - src/cairo-traps.c | 7 +++++++ - 2 files changed, 13 insertions(+), 0 deletions(-) - -commit 1de5ace6c22b457d4c712b9d8c9e8fb87e927c43 -Author: Carl Worth -Date: Wed Apr 13 13:01:54 2005 +0000 - - Fix typo - - TODO | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a16a634f97a9948d6a98ed89664f74bf36e0f1ae -Author: Owen Taylor -Date: Wed Apr 13 11:23:43 2005 +0000 - - src/cairoint.h src/cairo-traps.c: Add _cairo_traps_extract_region for converting trapezoids into a pixman region. - Represent all rectangular pixel-aligned regions as regions, not just single rectangles. - Split into manageable pieces, optimize rectangular pixel- aligned regions by using _cairo_surface_fill_rectangles() or _cairo_surface_set_clip_region() as appropriate. - tests/trap-clip.c tests/trap-clip-ref.png tests/Makefile.am: Add a test for trapezoids clipping. - Add an index. - - ChangeLog | 18 ++ - doc/public/cairo-docs.xml | 3 + - src/cairo-gstate.c | 586 ++++++++++++++++++++++++++++++--------------- - src/cairo-traps.c | 55 +++++ - src/cairoint.h | 4 + - test/Makefile.am | 5 +- - test/trap-clip-ref.png | Bin 0 -> 71701 bytes - test/trap-clip.c | 213 ++++++++++++++++ - 8 files changed, 688 insertions(+), 196 deletions(-) - -commit 3bec073a7c7ae946d1a61769a694760dd3fcb890 -Author: Carl Worth -Date: Tue Apr 12 13:24:48 2005 +0000 - - Note that bug is now fixed. - - ChangeLog | 4 ++++ - test/translate-show-surface.c | 6 +++++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 173bc22a62681d1dc0807f16f387e3f41d3653c0 -Author: Carl Worth -Date: Tue Apr 12 11:50:25 2005 +0000 - - Replace errant use of aclocal with , as reported by Martin Hedenfalk. Closes bug #3000. - - ChangeLog | 5 +++++ - autogen.sh | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 369d1bf28f589d4aee7773180038a9564f14db19 -Author: Carl Worth -Date: Tue Apr 12 09:14:14 2005 +0000 - - Default to CAIRO_FILTER_GOOD rather than CAIRO_FILTER_BEST. - Optimize to use CAIRO_FILTER_NEAREST when the pattern matrix is an integer translation. - - ChangeLog | 11 +++++++++++ - src/cairo-pattern.c | 3 ++- - src/cairo-surface.c | 2 +- - 3 files changed, 14 insertions(+), 2 deletions(-) - -commit 439a94cc7b5f8982d469cdb6665be3cd21944cc5 -Author: Carl Worth -Date: Tue Apr 12 07:57:46 2005 +0000 - - Use CAIRO_FILTER_BEST by default rather than CAIRO_FILTER_NEAREST. - - ChangeLog | 7 +++++++ - src/cairo-pattern.c | 2 +- - src/cairo-surface.c | 2 +- - 3 files changed, 9 insertions(+), 2 deletions(-) - -commit 8f6fc777d1f032f829fcd1e6134dbf761e6df5d0 -Author: Carl Worth -Date: Tue Apr 12 07:12:08 2005 +0000 - - Offset the src pattern by (0,0)->CTM. This fixes test/translate-show-surface. - Use unsigned cahr* to match new prototype for cairo_image_surface_create_for_data. - - ChangeLog | 9 +++++++++ - src/cairo-glitz-surface.c | 4 ++-- - src/cairo-gstate.c | 17 +++++++++++++++-- - 3 files changed, 26 insertions(+), 4 deletions(-) - -commit 8f7ea593bab3c30f1e99e48f78285d18b3724ee1 -Author: Carl Worth -Date: Mon Apr 11 14:04:56 2005 +0000 - - Add new test demonstrating bug in the sequence: cairo_translate; cairo_show_surface. - - ChangeLog | 9 ++++ - test/.cvsignore | 1 + - test/Makefile.am | 5 ++- - test/translate-show-surface-ref.png | Bin 0 -> 100 bytes - test/translate-show-surface.c | 77 +++++++++++++++++++++++++++++++++++ - 5 files changed, 91 insertions(+), 1 deletions(-) - -commit a70e8f7c9e5ffc07ef867196bda3c9996212c8a6 -Author: Carl Worth -Date: Mon Apr 11 11:30:28 2005 +0000 - - Add deprecation alias from cairo_scale_font to cairo_set_font_size. - - ChangeLog | 5 +++++ - src/cairo.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 9ba4dce8110dc02d9faa255918a64c332da80a7a -Author: Carl Worth -Date: Mon Apr 11 11:20:08 2005 +0000 - - Add deprecation alias from cairo_select_font to cairo_select_font_face. - - ChangeLog | 5 +++++ - src/cairo.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit cf9ea3007828a46c5297a8882b6272ad30d12ba8 -Author: Owen Taylor -Date: Mon Apr 11 09:18:51 2005 +0000 - - src/cairo.h doc/public/cairo-sections.txt src/cairo-matrix.c: Update. - Include cairo-font.xml - - ChangeLog | 7 +++ - doc/public/Makefile.am | 13 +++-- - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 54 ++++++++++++++-------- - doc/public/tmpl/cairo-font.sgml | 12 +++++ - doc/public/tmpl/cairo-matrix.sgml | 61 ++++++++++++------------ - doc/public/tmpl/cairo-pattern.sgml | 6 ++ - doc/public/tmpl/cairo-pdf.sgml | 30 ++++++++++++ - doc/public/tmpl/cairo-png.sgml | 21 ++++++++ - doc/public/tmpl/cairo-surface.sgml | 6 ++ - doc/public/tmpl/cairo-xcb.sgml | 12 +++++ - doc/public/tmpl/cairo.sgml | 91 ++++++++++++++++++++++++++++++------ - src/cairo-matrix.c | 2 - - src/cairo.h | 8 ++-- - 14 files changed, 249 insertions(+), 75 deletions(-) - -commit df997b3f5be6e04fe20da82ad0ee24a33732a4f0 -Author: Carl Worth -Date: Mon Apr 11 06:56:10 2005 +0000 - - Indentation changes - - ROADMAP | 37 +++++++++++++++++++++---------------- - 1 files changed, 21 insertions(+), 16 deletions(-) - -commit 2a616d68422c7029434a3d1d22ab668f23bd55bc -Author: Carl Worth -Date: Fri Apr 8 14:06:32 2005 +0000 - - Move include of pixman.h from cairo.h to cairoint.h since libpixman isn't part of cairo's public interface. - Use unsigned long rather than uint32_t since we no longer have pixman.h setting that type up for us. - Remove unused variable user_data_copy. - - ChangeLog | 13 +++++++++++++ - src/cairo-font.c | 2 -- - src/cairo.h | 1 - - src/cairoint.h | 1 + - test/move-to-show-surface.c | 3 +-- - 5 files changed, 15 insertions(+), 5 deletions(-) - -commit 584cb301456bd4ee9d92fa3becd148440df57d3b -Author: Carl Worth -Date: Fri Apr 8 13:44:22 2005 +0000 - - Add ROADMAP file with an initial stab at 1.0 items. - - ChangeLog | 4 +++ - ROADMAP | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - TODO | 8 +++--- - 3 files changed, 78 insertions(+), 4 deletions(-) - -commit c803908d95d0022463d138f0caee949b14d0cadb -Author: Owen Taylor -Date: Fri Apr 8 13:14:17 2005 +0000 - - src/cairo.h src/cairo-font.c src/cairoint.h doc/public/cairo-sections.txt: Add cairo_font_face_set/get_user_data(). - src/cairo-array.c src/cairoint.h src/cairo-surface.c: Refactor user data code from cairo-surface.c into cairo_user_data_array_t. - Switch these types to be like cairo_surface_t where the generic code frees the wrapper object. - src/cairo-atsui-font.c src/cairo-ft-font.c src/cairo-win32-font.c: Fix up for the above changes. - Implement a complicated mutual-referencing scheme to make sure that a face from cairo_ft_font_face_create_for_ft_face() is freed only when the FT_Face is no longer needed. - Update the docs to describe how to figure out when the FT_Face can be freed. - Fix refcount leaks when creating fonts. - Remove excess call to _cairo_unscaled_font_reference(). - Remove stray initialization of font matrix to the identity. - test/user-data.c: Fix a bug when setting/unsetting a key with a free key slot before it, add that to the test case. - Don't append an element when user_data is NULL. - - ChangeLog | 42 +++++++++++ - doc/public/cairo-sections.txt | 2 + - doc/public/tmpl/cairo-font.sgml | 18 ++++- - doc/public/tmpl/cairo-matrix.sgml | 12 --- - doc/public/tmpl/cairo-pattern.sgml | 6 -- - doc/public/tmpl/cairo-surface.sgml | 6 -- - doc/public/tmpl/cairo.sgml | 13 ---- - src/cairo-array.c | 139 ++++++++++++++++++++++++++++++++++++ - src/cairo-atsui-font.c | 2 - - src/cairo-font.c | 67 +++++++++++++++++- - src/cairo-ft-font.c | 97 +++++++++++++++++-------- - src/cairo-gstate.c | 1 - - src/cairo-pdf-surface.c | 2 - - src/cairo-surface.c | 71 ++----------------- - src/cairo-win32-font.c | 3 - - src/cairo.h | 54 ++++++++------ - src/cairoint.h | 24 ++++++- - test/user-data.c | 4 + - 18 files changed, 393 insertions(+), 170 deletions(-) - -commit 7aa5b71e8cc42bdcc935ad0990a0ac434dd0aa0e -Author: Dave Beckett -Date: Fri Apr 8 12:42:28 2005 +0000 - - Update to track changes to cairo_matrix_t interface. - - ChangeLog | 5 +++++ - src/cairo-glitz-surface.c | 14 +++++++------- - 2 files changed, 12 insertions(+), 7 deletions(-) - -commit 30f0d517aa73d5d00b5a2bed2f549f9c662a39a7 -Author: Carl Worth -Date: Fri Apr 8 10:03:17 2005 +0000 - - Eliminate internal use of deprecated cairo_matrix_copy. - Change cairo_get_matrix to accept a pointer to the return value cairo_matrix_t rather than returning the value directly. - - ChangeLog | 15 +++++++++++++++ - src/cairo-gstate.c | 18 ++++++------------ - src/cairo-matrix.c | 1 - - src/cairo.c | 27 ++++----------------------- - src/cairo.h | 7 ++----- - src/cairoint.h | 5 +---- - 6 files changed, 28 insertions(+), 45 deletions(-) - -commit 745627ff1b0cf97760cbd613668f79c9b63a57c2 -Author: Carl Worth -Date: Fri Apr 8 04:43:06 2005 +0000 - - Don't try to return a value (even a void value) from a void function. Closes bug #2931. - - ChangeLog | 6 ++++++ - src/cairo-matrix.c | 8 ++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit 43435b69e14d4039b0537dfdc96cbcebd164175f -Author: Carl Worth -Date: Thu Apr 7 15:00:46 2005 +0000 - - Remove broken code for defining uint64_t. - - ChangeLog | 5 +++++ - src/cairo-wideint.h | 8 +------- - 2 files changed, 6 insertions(+), 7 deletions(-) - -commit 9bef5b6f148d08b5f0e13bd768b6e7e2a4697c0b -Author: Carl Worth -Date: Thu Apr 7 14:25:00 2005 +0000 - - Change to allow NULL backend function pointers to indicate unsupported functions. - Eliminate stub functions and replace with NULL in surface backend table. - - ChangeLog | 22 +++++++++ - src/cairo-glitz-surface.c | 16 +------ - src/cairo-image-surface.c | 16 +------ - src/cairo-pdf-surface.c | 61 ++---------------------- - src/cairo-ps-surface.c | 79 ++----------------------------- - src/cairo-quartz-surface.c | 109 +++---------------------------------------- - src/cairo-surface.c | 86 +++++++++++++++++----------------- - src/cairo-win32-surface.c | 64 ++------------------------ - src/cairo-xcb-surface.c | 18 +------ - src/cairo-xlib-surface.c | 16 +------ - 10 files changed, 99 insertions(+), 388 deletions(-) - -commit ac6f15e2450e4e08d833355e626df0358d81c2ec -Author: Owen Taylor -Date: Thu Apr 7 13:29:32 2005 +0000 - - src/cairo.[ch] src/cairoint.h src/cairo-gstate.c docs/public/cairo-sections.txt: cairo_select_font() => cairo_select_font_face() cairo_scale_font() => cairo_set_font_size() cairo_transform_font() => cairo_set_font_matrix() Add cairo_get_font_matrix(). Make cairo_set_font_face() not reset the font matrix. Default the font matrix to SCALE(10). Document cairo_select_font_face(). - test/text-cache-crash.c (draw) test/text-rotate.c (draw): Use cairo_set_font_size(). - src/cairo-font.c src/cairo.h: Fix up some parameter names for docs. - - ChangeLog | 17 +++++++++ - doc/public/cairo-sections.txt | 10 ++++-- - doc/public/tmpl/cairo-font.sgml | 12 +++++- - doc/public/tmpl/cairo.sgml | 18 +++++++-- - src/cairo-font.c | 8 ++-- - src/cairo-gstate.c | 50 ++++++++++---------------- - src/cairo.c | 73 ++++++++++++++++++++++++++++----------- - src/cairo.h | 32 +++++++++++------ - src/cairoint.h | 30 +++++++--------- - test/coverage.c | 2 +- - test/text-cache-crash.c | 6 ++-- - test/text-rotate.c | 2 +- - 12 files changed, 163 insertions(+), 97 deletions(-) - -commit 62212867d4228d5834ea16858a8569765977bdd9 -Author: Carl Worth -Date: Thu Apr 7 12:56:43 2005 +0000 - - Minor changes to header file inclusion recommended by Oleg Smolsky for better portability to MSVC. - - ChangeLog | 10 ++++++++++ - src/cairo-gstate.c | 1 - - src/cairo-png.c | 3 ++- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 2 +- - src/cairo-win32.h | 1 + - src/cairoint.h | 4 ++++ - 7 files changed, 19 insertions(+), 4 deletions(-) - -commit 4a3a6e871965b1f2ab113cb50a4687a54a231856 -Author: Owen Taylor -Date: Thu Apr 7 12:38:02 2005 +0000 - - Fix various compilation errors. - - ChangeLog | 4 ++ - src/cairo-win32-font.c | 83 +++++++++++++++++++++++------------------------- - 2 files changed, 44 insertions(+), 43 deletions(-) - -commit 3ea3186f165c2d73403534982094518473156989 -Author: Carl Worth -Date: Thu Apr 7 12:35:33 2005 +0000 - - Use a preprocessor macro to get a literal value in the array size declaration, (for better portability to lame compilers that can't deal with a const int variable for the array size). Reported by Oleg Smolsky. - - ChangeLog | 1 + - src/cairo-png.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit 88a62f07df27a5e6501678e3aec1882e367901be -Author: Carl Worth -Date: Thu Apr 7 12:33:06 2005 +0000 - - Use a preprocessor macro to get a literal value in the array size declaration, (for better portability to lame compilers that can't deal with a const int variable for the array size). Reported by Oleg Smolsky. - - ChangeLog | 7 +++++++ - src/cairo-png.c | 2 +- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit d4209c331f0823c585643e6a7197107321ba2049 -Author: Carl Worth -Date: Thu Apr 7 12:05:52 2005 +0000 - - Use configure-time checks for stdint.h vs. inttypes.h vs. sys/int_types.h rather than ad-hoc system-specific macros. Also define these types manually none of these header are available. (Thanks to Jason Dorje Short ). - - ChangeLog | 10 ++++++++++ - configure.in | 1 + - src/cairo-wideint.h | 23 +++++++++++++++++------ - src/cairoint.h | 10 ---------- - 4 files changed, 28 insertions(+), 16 deletions(-) - -commit 945e6c24586e124a346818c9a2b15f4693b8ae9f -Author: Carl Worth -Date: Thu Apr 7 11:18:40 2005 +0000 - - Fix to return non-zero status on error. - - ChangeLog | 4 ++++ - test/imagediff.c | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 47824dee31acdaf5ad6488dd2714e9f28c936aa2 -Author: Owen Taylor -Date: Thu Apr 7 11:03:59 2005 +0000 - - src/cairo.h src/cairo-gstate.c src/cairo-font.c: Add a cairo_font_face_t type to hold a description of a font face. Replace cairo_set_font() with cairo_set_font_face(). - src/cairoint.h src/cairo-font.c src/cairo-gstate.c: Add "cairo_simple_font_face" for family/weight/slant and use it to implement font naming for the toy API. - src/cairo-ft.h src/cairo-ft-font.c cairo-win32.h cairo-win32-font.c: Switch the FreeType and Win32 backends over to using cairo_font_face_t. - src/cairo.h src/cairo-font.c src/cairo-ft-font.c src/cairo-win32-font.c: Pass in font matrix and CTM separately rather than as a composite scale when creating fonts; allows removing font_matrix argument to metrics functions. - src/cairoint.h src/cairo-font.c src/cairo-ft-font.c src/cairo-win32-font.c: Remove cairo_font_scale_t type, just use cairo_matrix_t and ignore translations. - src/cairo-ft.h src/cairo-ft-font.c: Remove cairo_ft_font_get_pattern() -- it can't work for all FreeType backend fonts and doesn't seem particularly useful. - Rename cairo_font_get_extents() to cairo_font_extents() - split font functions into a separate section. - Fix locking order problem. - Add caches for simple font faces and from cairo_font_face_t to cairo_scaled_font_t. - src/cairo.h src/cairoint.h src/cairo-font.c src/cairo-win32-font.c src/cairo-ft-font.c src/cairo-gstate.c src/cairo-gstate-private.h: Rename cairo_font_t to cairo_scaled_font_t. - - ChangeLog | 43 ++ - doc/public/cairo-sections.txt | 47 ++- - doc/public/tmpl/cairo-font.sgml | 118 +++++ - doc/public/tmpl/cairo-ft.sgml | 23 +- - doc/public/tmpl/cairo-matrix.sgml | 27 +- - doc/public/tmpl/cairo-pdf.sgml | 38 +-- - doc/public/tmpl/cairo-png.sgml | 24 - - doc/public/tmpl/cairo-surface.sgml | 5 +- - doc/public/tmpl/cairo.sgml | 130 +----- - src/cairo-font.c | 875 +++++++++++++++++++++++++++++++----- - src/cairo-ft-font.c | 829 +++++++++++++++++----------------- - src/cairo-ft-private.h | 2 +- - src/cairo-ft.h | 19 +- - src/cairo-gstate-private.h | 3 +- - src/cairo-gstate.c | 211 ++++----- - src/cairo-pdf-surface.c | 16 +- - src/cairo-surface.c | 4 +- - src/cairo-win32-font.c | 564 ++++++++++++----------- - src/cairo-win32-surface.c | 2 +- - src/cairo-win32.h | 13 +- - src/cairo-xlib-surface.c | 18 +- - src/cairo.c | 79 +--- - src/cairo.h | 77 ++-- - src/cairoint.h | 184 ++++---- - 24 files changed, 2033 insertions(+), 1318 deletions(-) - -commit d135938efd443e4adce63cf8c5926ac421b2d3ed -Author: Carl Worth -Date: Thu Apr 7 10:01:49 2005 +0000 - - Rework the cairo_matrix_t interface in several ways. Expose a struct for cairo_matrix_t. - Add new function to return current matrix: cairo_get_matrix - Deprecate the following functions (in documentation): cairo_matrix_create cairo_matrix_destroy cairo_matrix_get_affine - Rename: cairo_matrix_set_affine -> cairo_matrix_init cairo_matrix_set_identity -> cairo_matrix_init_identity - Add other new matrix initialization functions: cairo_matrix_init_translate cairo_matrix_init_scale cairo_matrix_init_rotate - Change return type of almost all cairo_matrix functions from cairo_status_t to void. - Track changes to cairo_matrix_t interface. - Add a test case showing the same path drawn under various transforms, (including skews set directly by initializing a cairo_matrix_t). - - ChangeLog | 46 ++++++ - TODO | 2 +- - src/cairo-atsui-font.c | 6 +- - src/cairo-ft-font.c | 12 +- - src/cairo-gstate.c | 48 ++++--- - src/cairo-image-surface.c | 12 +- - src/cairo-matrix.c | 354 ++++++++++++++++++++++----------------------- - src/cairo-pattern.c | 18 ++- - src/cairo-pdf-surface.c | 20 ++-- - src/cairo-pen.c | 4 +- - src/cairo-surface.c | 10 +- - src/cairo-win32-font.c | 14 +- - src/cairo-xlib-surface.c | 12 +- - src/cairo.c | 26 +++- - src/cairo.h | 70 ++++++--- - src/cairoint.h | 38 ++---- - test/.cvsignore | 1 + - test/Makefile.am | 5 +- - test/transforms-ref.png | Bin 0 -> 302 bytes - test/transforms.c | 111 ++++++++++++++ - 20 files changed, 502 insertions(+), 307 deletions(-) - -commit 92060c12ee2acc38541ec2398abba5e1569278de -Author: Carl Worth -Date: Wed Apr 6 13:01:13 2005 +0000 - - Make handling of unsigned char* vs. char* consistent. Change all parameters that are actual string data from unsigned char* to char* (cairo_text_extents, cairo_show_text, cairo_text_path). Change all data buffers from char* to unsigned char* (cairo_write_func_t). - Track changes from unsigned char* to char*. Convert to unsigned only at the internal interface to unicode processing. - Track change from char* to unsigned char*. - - ChangeLog | 22 ++++++++++++++++++++++ - src/cairo-atsui-font.c | 13 +++++++------ - src/cairo-font.c | 8 ++++---- - src/cairo-ft-font.c | 14 +++++++------- - src/cairo-gstate.c | 8 ++++---- - src/cairo-output-stream.c | 6 +++--- - src/cairo.c | 6 +++--- - src/cairo.h | 16 ++++++++-------- - src/cairoint.h | 18 +++++++++--------- - test/move-to-show-surface.c | 2 +- - 10 files changed, 68 insertions(+), 45 deletions(-) - -commit 957ceac0c63b70d1a32b64d0d6a89cb1b9bca2c5 -Author: Carl Worth -Date: Wed Apr 6 12:20:02 2005 +0000 - - Fix reversed arguments in call to calloc. - - ChangeLog | 5 +++++ - src/cairo-cache.c | 5 +++-- - src/cairo-hash.c | 5 +++-- - 3 files changed, 11 insertions(+), 4 deletions(-) - -commit a6d9b6a671faf6cc726af12d4f4e706262c2bd6b -Author: Carl Worth -Date: Mon Apr 4 09:47:12 2005 +0000 - - Change type of data parameter from char* to unsigned char*. - Propagate the unsigned char* change down the stack. - Add cast since XImage uses char* rather than unsigned char*. - Fix memory leak of image data. - Switch to use cairo_surface_write_png rather than a custom write_png_argb32. - Add test to exercise the cairo_image_surface_create_for_png function. - - ChangeLog | 35 ++++++++++++++++++- - src/cairo-ft-font.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-pattern.c | 8 ++-- - src/cairo-png.c | 9 ++++- - src/cairo-xlib-surface.c | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 4 +- - test/.cvsignore | 1 + - test/Makefile.am | 3 ++ - test/buffer-diff.c | 6 ++- - test/buffer-diff.h | 4 ++- - test/cairo-test.c | 14 ++++--- - test/cairo-test.h | 2 + - test/create-for-png-ref.png | Bin 0 -> 100 bytes - test/create-for-png.c | 74 ++++++++++++++++++++++++++++++++++++++++++ - test/create-from-png-ref.png | Bin 0 -> 100 bytes - test/create-from-png.c | 74 ++++++++++++++++++++++++++++++++++++++++++ - test/write-png.c | 2 +- - test/write-png.h | 2 +- - 20 files changed, 221 insertions(+), 25 deletions(-) - -commit 770d4c55b4b576875b73249f29ad7840fb5da7e5 -Author: Carl Worth -Date: Mon Apr 4 09:25:47 2005 +0000 - - Remove items for PNG backend removal and trapezoid reasterization re-implementation since they have been completed. - - ChangeLog | 6 ++++++ - TODO | 6 ------ - 2 files changed, 6 insertions(+), 6 deletions(-) - -commit 027057bf62fe0df78261af338f6d2f190433792b -Author: Carl Worth -Date: Mon Apr 4 06:49:19 2005 +0000 - - Drop cairo_default_matrix since it is now always identical to cairo_identity_matrix. - Remove gstate->pixels_per inch. Change default matrix to always be the identity matrix. - Drop pixels_per_inch function from surface backend interface as it is no longer needed. - - ChangeLog | 24 ++++++++++++++++++++++++ - src/cairo-glitz-surface.c | 7 ------- - src/cairo-gstate-private.h | 2 -- - src/cairo-gstate.c | 28 ++-------------------------- - src/cairo-image-surface.c | 8 -------- - src/cairo-pdf-surface.c | 10 ---------- - src/cairo-ps-surface.c | 10 ---------- - src/cairo-quartz-surface.c | 9 --------- - src/cairo-surface.c | 6 ------ - src/cairo-win32-surface.c | 8 -------- - src/cairo-xcb-surface.c | 8 -------- - src/cairo-xlib-surface.c | 8 -------- - src/cairo.c | 30 ++++++++++++++++++------------ - src/cairo.h | 7 ++----- - src/cairoint.h | 10 ---------- - 15 files changed, 46 insertions(+), 129 deletions(-) - -commit 5778c77382f3a81b77aca1d224d0ad7626bcd5d2 -Author: Carl Worth -Date: Sat Apr 2 06:00:32 2005 +0000 - - Use the current point to offset just the destination, not the source and destination. With this fix, cairo_show_surface should work with the current point at places other than the origin. - Move move-to-show-surface off the expected failure list. - Add comment indicating that bug is resolved. - Don't use diff to compare images, just imagediff. - - ChangeLog | 15 +++++++++++++++ - src/cairo-gstate.c | 4 ++-- - test/Makefile.am | 1 - - test/move-to-show-surface.c | 9 +++++++++ - test/testsvg | 4 ++-- - 5 files changed, 28 insertions(+), 5 deletions(-) - -commit 9e405876e86ce004cd69b87a10c1bf7ce7d1b436 -Author: Carl Worth -Date: Sat Apr 2 05:18:11 2005 +0000 - - Style and indentation fixes. - cast to quiet new gcc-4 warnings. - Initialize variables to quiet new gcc-4 warnings. - Use unsigned char* as expected by freetype, libpng, Xlib, and zlib. - Propagate unsigned char* down from cairo_text_extents. - - ChangeLog | 29 +++++++++++++++++++++++++++++ - src/cairo-font.c | 6 +++--- - src/cairo-ft-font.c | 7 ++++--- - src/cairo-gstate.c | 12 ++++++------ - src/cairo-image-surface.c | 2 +- - src/cairo-pdf-surface.c | 4 ++-- - src/cairo-png.c | 4 ++-- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-unicode.c | 28 ++++++++++++++-------------- - src/cairo-xlib-surface.c | 5 +++-- - src/cairo.c | 34 ++++++++++++++++++---------------- - src/cairo.h | 14 +++++++------- - src/cairoint.h | 36 ++++++++++++++++++------------------ - 13 files changed, 109 insertions(+), 76 deletions(-) - -commit 7636e901841a800dd5d032963fca6a7c9ef1be99 -Author: Carl Worth -Date: Fri Apr 1 18:00:00 2005 +0000 - - Update API shakeup chart. - Add a standin for the function that should be cairo_set_target_image which should then have some other name. We can straighten that mess out when we eliminate the set_target functions. Add deprecation alias for cairo_current_pattern. - Deprecate cairo_surface_create_for_image in favor of cairo_image_surface_create_for_data. - - ChangeLog | 16 ++++++++++++++ - TODO | 6 ++-- - src/cairo-image-surface.c | 1 + - src/cairo-surface.c | 11 --------- - src/cairo.c | 50 +++++++++++++++++++++++++++++++++++++++++--- - src/cairo.h | 21 ++++++++++-------- - src/cairoint.h | 1 - - 7 files changed, 78 insertions(+), 28 deletions(-) - -commit 5abf7786c070a3baf220599d6e3b71e56911ba5f -Author: Kristian Høgsberg -Date: Thu Mar 31 13:25:44 2005 +0000 - - Remove this function now that the PNG backend is gone. - - ChangeLog | 5 +++++ - src/cairo.c | 28 ---------------------------- - 2 files changed, 5 insertions(+), 28 deletions(-) - -commit 19a918e624a398c315e511e580bc048b81d58849 -Author: Carl Worth -Date: Wed Mar 30 14:00:31 2005 +0000 - - Fix typo I had introduced into Jason's patch that made configure fail. - - ChangeLog | 5 +++++ - configure.in | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 13b1b705f41efd33dfb5d1fa9ddb3c22f353055f -Author: Carl Worth -Date: Wed Mar 30 13:34:51 2005 +0000 - - A few fixes courtesy of Jason Dorje Short : - Disable PS backend if zlib is not found. - Fix mistyped parameter. - Fix missing return value. - - ChangeLog | 12 ++++++++++++ - configure.in | 6 ++++++ - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 4 +++- - 4 files changed, 22 insertions(+), 2 deletions(-) - -commit 811fe63f84983efa7aec984dfb4a4aed365bab02 -Author: Tor Lillqvist -Date: Wed Mar 30 09:31:49 2005 +0000 - - src/cairo-gstate.c (_cairo_gstate_stroke_extents): call _cairo_pen_init so that the result takes into account the caps. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 2 ++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit a7a4aa34f89b9a65ad00da6048e86301ad7d21cc -Author: Tor Lillqvist -Date: Tue Mar 29 11:54:01 2005 +0000 - - src/cairo-xlib.h: include Xlib.h to fix solaris build bustage. - - ChangeLog | 4 ++++ - src/cairo-xlib.h | 1 + - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit a55a640e542c483a286b9481d8b9ee1fb96a8c4a -Author: Tor Lillqvist -Date: Tue Mar 29 11:48:58 2005 +0000 - - src/cairo-wideint.h: add preprocessor tests for stdint.h/inttypes.h - src/cairoint.h: add preprocessor tests for stdint.h/inttypes.h - - ChangeLog | 6 ++++++ - src/cairo-wideint.h | 12 ++++++++++-- - src/cairoint.h | 11 ++++++++++- - 3 files changed, 26 insertions(+), 3 deletions(-) - -commit 72cc8f96fe75ccb79fd0d136b99020f5bc64e05b -Author: Tor Lillqvist -Date: Tue Mar 29 11:45:52 2005 +0000 - - src/pixman.h: add AIX to the test for inttypes.h - - pixman/ChangeLog | 4 ++++ - pixman/src/pixman.h | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit 78b022b1d18dff1627a054bae1ef1fcc87ba2cbb -Author: Tor Lillqvist -Date: Tue Mar 29 11:24:10 2005 +0000 - - Update quartz backend to compilable/workable version and re-enable. - - ChangeLog | 8 + - configure.in | 2 +- - src/cairo-atsui-font.c | 1228 +++++++++++++++++++++----------------------- - src/cairo-quartz-surface.c | 383 +++++++-------- - 4 files changed, 768 insertions(+), 853 deletions(-) - -commit 35b9e3c45d8a4c2aa24eff5acb04d0e1eb7bc6ba -Author: Carl Worth -Date: Tue Mar 29 00:02:19 2005 +0000 - - More _/- renames in the test directory. - - ChangeLog | 5 + - test/.cvsignore | 24 ++-- - test/Makefile.am | 66 +++++----- - test/buffer-diff.c | 2 +- - test/buffer_diff.c | 73 ---------- - test/buffer_diff.h | 38 ------ - test/cairo-test.c | 8 +- - test/cairo_test.c | 263 ------------------------------------- - test/cairo_test.h | 55 -------- - test/clip-twice.c | 4 +- - test/clip_twice-ref.png | Bin 751 -> 0 bytes - test/clip_twice.c | 74 ----------- - test/coverage.c | 2 +- - test/fill-rule.c | 4 +- - test/fill_rule-ref.png | Bin 1979 -> 0 bytes - test/fill_rule.c | 132 ------------------- - test/get-and-set.c | 4 +- - test/get_and_set.c | 151 --------------------- - test/imagediff.c | 6 +- - test/leaky-polygon.c | 4 +- - test/leaky_polygon-ref.png | Bin 255 -> 0 bytes - test/leaky_polygon.c | 84 ------------ - test/line-width.c | 4 +- - test/line_width-ref.png | Bin 171 -> 0 bytes - test/line_width.c | 65 --------- - test/linear-gradient.c | 4 +- - test/linear_gradient-ref.png | Bin 12724 -> 0 bytes - test/linear_gradient.c | 143 -------------------- - test/move-to-show-surface.c | 4 +- - test/move_to_show_surface-ref.png | Bin 100 -> 0 bytes - test/move_to_show_surface.c | 71 ---------- - test/path-data.c | 4 +- - test/path_data-ref.png | Bin 387 -> 0 bytes - test/path_data.c | 179 ------------------------- - test/pixman-rotate.c | 4 +- - test/pixman_rotate-ref.png | Bin 260 -> 0 bytes - test/pixman_rotate.c | 80 ----------- - test/read-png.c | 2 +- - test/read_png.c | 166 ----------------------- - test/read_png.h | 45 ------- - test/text-cache-crash.c | 4 +- - test/text-rotate.c | 4 +- - test/text_cache_crash.c | 135 ------------------- - test/text_rotate.c | 119 ----------------- - test/user_data.c | 78 ----------- - test/write-png.c | 2 +- - test/write_png.c | 99 -------------- - test/write_png.h | 35 ----- - 48 files changed, 83 insertions(+), 2163 deletions(-) - -commit d9c2be3dcd27baa91b67cc9179bc98e06805a365 -Author: Carl Worth -Date: Mon Mar 28 14:30:40 2005 +0000 - - Renamed a bunch of files to use - rather than _ as a separator. Copy happened in the master repository to preserve history, so this is just a big remove. - - ChangeLog | 7 + - src/Makefile.am | 68 +- - src/cairo_array.c | 134 --- - src/cairo_atsui_font.c | 807 -------------- - src/cairo_cache.c | 518 --------- - src/cairo_color.c | 97 -- - src/cairo_fixed.c | 91 -- - src/cairo_font.c | 475 -------- - src/cairo_ft_font.c | 1538 -------------------------- - src/cairo_glitz_surface.c | 1299 ---------------------- - src/cairo_gstate.c | 2618 -------------------------------------------- - src/cairo_hull.c | 202 ---- - src/cairo_image_surface.c | 675 ------------ - src/cairo_matrix.c | 656 ----------- - src/cairo_output_stream.c | 147 --- - src/cairo_path.c | 504 --------- - src/cairo_path_bounds.c | 184 ---- - src/cairo_path_data.c | 275 ----- - src/cairo_path_fill.c | 210 ---- - src/cairo_path_stroke.c | 852 -------------- - src/cairo_pattern.c | 1325 ---------------------- - src/cairo_pdf_surface.c | 2278 -------------------------------------- - src/cairo_pen.c | 589 ---------- - src/cairo_polygon.c | 172 --- - src/cairo_ps_surface.c | 403 ------- - src/cairo_quartz_surface.c | 392 ------- - src/cairo_slope.c | 103 -- - src/cairo_spline.c | 288 ----- - src/cairo_surface.c | 958 ---------------- - src/cairo_traps.c | 740 ------------- - src/cairo_unicode.c | 340 ------ - src/cairo_wideint.c | 1024 ----------------- - src/cairo_win32_font.c | 1252 --------------------- - src/cairo_win32_surface.c | 908 --------------- - src/cairo_xcb_surface.c | 946 ---------------- - src/cairo_xlib_surface.c | 1669 ---------------------------- - 36 files changed, 41 insertions(+), 24703 deletions(-) - -commit 18c8846bc068e59137cf8cf4a94ad37822e28fae -Author: Carl Worth -Date: Mon Mar 28 14:06:40 2005 +0000 - - Sorted API shakeup chart. - - ChangeLog | 4 ++++ - TODO | 31 ++++++++++++++++++------------- - 2 files changed, 22 insertions(+), 13 deletions(-) - -commit bd5bbb6ce2e0f3a9296e3fec017ace10ee8068d3 -Author: Kristian Høgsberg -Date: Mon Mar 28 13:58:26 2005 +0000 - - New PNG utility functions. - Reverse the naming of the pdf constructors so the callback based ones have the long names. - - ChangeLog | 9 + - configure.in | 18 +- - src/Makefile.am | 4 +- - src/cairo-features.h.in | 4 +- - src/cairo-pdf-surface.c | 24 ++-- - src/cairo-pdf.h | 52 +++--- - src/cairo-png.c | 336 +++++++++++++++++++++++++++++++++++++++ - src/cairo-png.h | 20 +-- - src/cairo.c | 43 +++--- - src/cairo_pdf_surface.c | 24 ++-- - src/cairo_png_surface.c | 402 ----------------------------------------------- - 11 files changed, 438 insertions(+), 498 deletions(-) - -commit 33d2ec2eb8b97e51fc3e24fdfa97ee7b89e734a1 -Author: Jamey Sharp -Date: Fri Mar 25 11:47:38 2005 +0000 - - Fix "implicit declaration" warning in cairo.c by moving cairo_xcb_surface_create prototype into cairo-xcb.h. - - ChangeLog | 7 +++++++ - src/cairo-xcb-surface.c | 6 ------ - src/cairo-xcb.h | 6 ++++++ - src/cairo_xcb_surface.c | 6 ------ - 4 files changed, 13 insertions(+), 12 deletions(-) - -commit 410e3ae8f20176f1a18b5394dfa753a277221a7f -Author: Carl Worth -Date: Wed Mar 23 14:36:29 2005 +0000 - - Clean up names of cairo_path internals. - - ChangeLog | 5 + - src/cairo-path-fixed-private.h | 14 +- - src/cairo-path.c | 293 ++++++++++++++++++++-------------------- - src/cairo_path.c | 293 ++++++++++++++++++++-------------------- - 4 files changed, 304 insertions(+), 301 deletions(-) - -commit 5170c1f4d2e554ad03450513046ff8c27150f6ee -Author: Carl Worth -Date: Wed Mar 23 14:17:40 2005 +0000 - - Remove unneeded includes of cairo-path-fixed-private.h. - Fix indentation. - - ChangeLog | 9 +++++++++ - src/cairo-ft-font.c | 2 +- - src/cairo-path-fill.c | 1 - - src/cairo-path-stroke.c | 1 - - src/cairo_ft_font.c | 2 +- - src/cairo_path_fill.c | 1 - - src/cairo_path_stroke.c | 1 - - 7 files changed, 11 insertions(+), 6 deletions(-) - -commit 9bcfb831fa6355b61700b2c5f466711296971a07 -Author: Carl Worth -Date: Wed Mar 23 14:02:36 2005 +0000 - - More updates to the API Shakeup chart. - - ChangeLog | 4 ++++ - TODO | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit f218c14b9da7950b49bdab76965db22ec470d5de -Author: Carl Worth -Date: Wed Mar 23 13:52:54 2005 +0000 - - Rename cairo_path_real_t to cairo_path_fixed_t and fix all _cairo_path functions to be named as _cairo_path_fixed functions. - Track name change of cairo_path_real_t and _cairo_path_fixed functions. - - ChangeLog | 37 ++++++++++ - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 26 ++++---- - src/cairo-gstate-private.h | 2 +- - src/cairo-gstate.c | 66 +++++++++--------- - src/cairo-path-bounds.c | 18 +++--- - src/cairo-path-fill.c | 20 +++--- - src/cairo-path-fixed-private.h | 2 +- - src/cairo-path-stroke.c | 34 +++++----- - src/cairo-path.c | 74 ++++++++++---------- - src/cairo_font.c | 2 +- - src/cairo_ft_font.c | 26 ++++---- - src/cairo_gstate.c | 66 +++++++++--------- - src/cairo_path.c | 74 ++++++++++---------- - src/cairo_path_bounds.c | 18 +++--- - src/cairo_path_fill.c | 20 +++--- - src/cairo_path_stroke.c | 34 +++++----- - src/cairoint.h | 152 +++++++++++++++++++++------------------- - 18 files changed, 360 insertions(+), 313 deletions(-) - -commit 0ba7a082afa91476129f2cbdbc48360b4f83efec -Author: Carl Worth -Date: Wed Mar 23 13:52:11 2005 +0000 - - Remove CAIRO_BEGIN_DECLS and CAIRO_END_DECLS as they are not needed for private headers. - Add ASSERT_NOT_REACHED macro. - Rewrite in terms of cairo_copt_path and cairo_copy_path_flat in preparation for removing cairo_gstate_interpret_path. - - ChangeLog | 11 ++++++ - src/cairo-path-data-private.h | 4 -- - src/cairo.c | 69 +++++++++++++++++++++++++++++++++-------- - src/cairoint.h | 6 +++ - 4 files changed, 73 insertions(+), 17 deletions(-) - -commit cb5bbd0aa75ad55a7f0f61c718c32f9b9f5af45e -Author: Carl Worth -Date: Wed Mar 23 13:50:51 2005 +0000 - - Begin the process of breaking up cairoint.h, moving structure definitions of cairo_t, cairo_gstate_t, and cairo_path_real_t into their own header files. - Track changes to header files, reaching into the new private headers where necessary. - - ChangeLog | 17 ++++++++ - src/cairo-gstate-private.h | 85 +++++++++++++++++++++++++++++++++++++++ - src/cairo-gstate.c | 2 + - src/cairo-path-fill.c | 3 + - src/cairo-path-fixed-private.h | 74 ++++++++++++++++++++++++++++++++++ - src/cairo-path-stroke.c | 3 + - src/cairo-path.c | 2 + - src/cairo-pen.c | 2 + - src/cairo-private.h | 47 ++++++++++++++++++++++ - src/cairo.c | 2 + - src/cairo_gstate.c | 2 + - src/cairo_path.c | 2 + - src/cairo_path_fill.c | 3 + - src/cairo_path_stroke.c | 3 + - src/cairo_pen.c | 2 + - src/cairoint.h | 86 +--------------------------------------- - 16 files changed, 251 insertions(+), 84 deletions(-) - -commit 9bb171515986fa26dd12ae19e684db847a614960 -Author: Carl Worth -Date: Wed Mar 23 13:49:32 2005 +0000 - - Move surface-specific cairo_t functions to cairo.c. - Remove functions that have now moved to cairo.c. - A few new files to ignore now with new compilation mode using a libtool helper library. - - ChangeLog | 20 ++++ - src/cairo-glitz-surface.c | 19 ---- - src/cairo-pdf-surface.c | 75 ------------- - src/cairo-ps-surface.c | 40 ------- - src/cairo-win32-surface.c | 21 ---- - src/cairo-xcb-surface.c | 24 ---- - src/cairo-xlib-surface.c | 41 ------- - src/cairo.c | 265 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_glitz_surface.c | 19 ---- - src/cairo_pdf_surface.c | 75 ------------- - src/cairo_png_surface.c | 23 ---- - src/cairo_ps_surface.c | 40 ------- - src/cairo_win32_surface.c | 21 ---- - src/cairo_xcb_surface.c | 24 ---- - src/cairo_xlib_surface.c | 41 ------- - test/.cvsignore | 5 +- - 16 files changed, 288 insertions(+), 465 deletions(-) - -commit 12de3807b48d6c5f133983a0de1498f93e0c84a6 -Author: Carl Worth -Date: Wed Mar 23 13:31:01 2005 +0000 - - Add backwards-compatibility for recently renamed functions. - - ChangeLog | 5 +++++ - src/cairo.h | 12 ++++++++++++ - 2 files changed, 17 insertions(+), 0 deletions(-) - -commit b381eb8045683e51cbd052bb724cab9969677cb6 -Author: Carl Worth -Date: Sun Mar 20 23:23:19 2005 +0000 - - Rename functions to eliminate abbreviations: cairo_concat_matrix -> cairo_transform cairo_transform_point -> cairo_user_to_device cairo_transform_distance -> cairo_user_to_device_distance cairo_inverse_transform_point -> cairo_device_to_user cairo_inverse_transform_distance-> cairo_device_to_user_distance cairo_init_clip -> cairo_reset_clip - - ChangeLog | 19 ++++++ - src/cairo-gstate.c | 29 +++++----- - src/cairo-matrix.c | 10 ++- - src/cairo.c | 159 +++++++++++++++++++++++++++++++++++++++++++++++----- - src/cairo.h | 14 ++-- - src/cairo_gstate.c | 29 +++++----- - src/cairo_matrix.c | 10 ++- - src/cairoint.h | 16 +++--- - 8 files changed, 220 insertions(+), 66 deletions(-) - -commit ba5bf28fbcc41925f49700be02365850b7e445d7 -Author: Carl Worth -Date: Fri Mar 18 14:31:11 2005 +0000 - - Update API shakeup chart. - - ChangeLog | 4 ++++ - TODO | 6 +++--- - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit c629df861673bd9e60cf7a3babd83f0f5bb257f0 -Author: Carl Worth -Date: Fri Mar 18 14:28:53 2005 +0000 - - * src/cairo.c: (cairo_copy_path), (cairo_copy_path_flat), (cairo_append_path): Rename cairo_copy_path_data, cairop_copy_path_data_flat, and cairo_append_path_data to cairo_copy_path, cairo_copy_path_flat, and cairo_append_path. - Add new cairo_path_t, containing a cairo_path_data_t array and an explicit length. Remove CAIRO_PATH_END_PATH terminator from cairo_path_data_t. - Rename the internal path object from cairo_path_t to cairo_path_real_t. - - ChangeLog | 36 ++++++++++++++++++++ - src/cairo-atsui-font.c | 4 +- - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 10 +++--- - src/cairo-gstate.c | 2 +- - src/cairo-path-bounds.c | 4 ++- - src/cairo-path-data-private.h | 10 +++--- - src/cairo-path-data.c | 65 ++++++++++++++++++++---------------- - src/cairo-path-fill.c | 4 ++- - src/cairo-path-stroke.c | 4 ++- - src/cairo-path.c | 62 +++++++++++++++++++--------------- - src/cairo.c | 56 +++++++++++++++--------------- - src/cairo.h | 74 ++++++++++++++++++++++++++-------------- - src/cairo_atsui_font.c | 4 +- - src/cairo_font.c | 2 +- - src/cairo_ft_font.c | 10 +++--- - src/cairo_gstate.c | 2 +- - src/cairo_path.c | 62 +++++++++++++++++++--------------- - src/cairo_path_bounds.c | 4 ++- - src/cairo_path_data.c | 65 ++++++++++++++++++++---------------- - src/cairo_path_fill.c | 4 ++- - src/cairo_path_stroke.c | 4 ++- - src/cairoint.h | 64 +++++++++++++++++++---------------- - test/path-data.c | 60 ++++++++++++++++++++------------- - test/path_data.c | 60 ++++++++++++++++++++------------- - 25 files changed, 402 insertions(+), 272 deletions(-) - -commit 987a13b814d2d84cff719a817f9f73a5b7aa38f2 -Author: Kristian Høgsberg -Date: Fri Mar 18 12:26:03 2005 +0000 - - Remove return statements from these functions (bug #2137). - - ChangeLog | 6 ++++++ - src/cairo-pdf-surface.c | 20 ++++++++++---------- - src/cairo_pdf_surface.c | 20 ++++++++++---------- - 3 files changed, 26 insertions(+), 20 deletions(-) - -commit 84a6da8f07a5f0352a342ed8d599b52ab32dfe6f -Author: Carl Worth -Date: Fri Mar 18 11:15:25 2005 +0000 - - Remove unused libcairo_freetype_sources (thanks to Damien Carbery). Closes bug #2673. - - ChangeLog | 6 ++++++ - TODO | 2 +- - src/Makefile.am | 1 - - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit 2ad590a0eebe8c03cb956dfaf0ce79c485c2ce3c -Author: Owen Taylor -Date: Thu Mar 17 13:27:26 2005 +0000 - - doc fix - 90 degrees is MI_PI/2 radians. - src/cairo.c src/cairo_matrix.c src/cairo_ft_font.c src/cairo_ps_surface.c src/cairo_quartz_surface.c src/cairo_win32_font.c src/cairo_win32_surface.c src/cairo_xlib_surface.c: Cairo is only capitalized at the beginning of sentences. - - ChangeLog | 11 +++++++++++ - src/cairo-ft-font.c | 2 +- - src/cairo-matrix.c | 4 ++-- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-quartz-surface.c | 6 +++--- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 6 +++--- - src/cairo-xlib-surface.c | 12 ++++++------ - src/cairo.c | 4 ++-- - src/cairo_ft_font.c | 2 +- - src/cairo_matrix.c | 4 ++-- - src/cairo_ps_surface.c | 4 ++-- - src/cairo_quartz_surface.c | 6 +++--- - src/cairo_win32_font.c | 2 +- - src/cairo_win32_surface.c | 6 +++--- - src/cairo_xlib_surface.c | 12 ++++++------ - 16 files changed, 49 insertions(+), 38 deletions(-) - -commit 58420806bbbe3970747edc2efaa155651377a370 -Author: Kristian Høgsberg -Date: Thu Mar 17 13:13:56 2005 +0000 - - From Tor Lillqvist : - Open output PNG files in binary mode. - - ChangeLog | 7 +++++++ - test/cairo-test.c | 4 ++-- - test/cairo_test.c | 4 ++-- - 3 files changed, 11 insertions(+), 4 deletions(-) - -commit e66e4c7b8c7aa80e3a71caebefae06cd2d6b468e -Author: Owen Taylor -Date: Thu Mar 17 12:57:42 2005 +0000 - - src/cairo.h src/cairo_surface.c src/cairo-xlib.h src/cairo_xlib_surface.c: Move cairo_xlib_surface_set_device_offset() to a generic cairo_surface_set_device_offset(). - Take the surface's device offset into account. - Update. - - ChangeLog | 11 +++ - doc/public/cairo-sections.txt | 6 ++- - doc/public/tmpl/cairo-pdf.sgml | 34 ++++++++++ - doc/public/tmpl/cairo-surface.sgml | 19 ++++++ - doc/public/tmpl/cairo-xlib.sgml | 10 --- - doc/public/tmpl/cairo.sgml | 13 ++++ - src/cairo-gstate.c | 119 +++++++++++++++++++++++++----------- - src/cairo-surface.c | 30 +++++++++ - src/cairo-xlib-surface.c | 111 +++++---------------------------- - src/cairo-xlib.h | 5 -- - src/cairo.h | 5 ++ - src/cairo_gstate.c | 119 +++++++++++++++++++++++++----------- - src/cairo_surface.c | 30 +++++++++ - src/cairo_xlib_surface.c | 111 +++++---------------------------- - src/cairoint.h | 3 + - 15 files changed, 350 insertions(+), 276 deletions(-) - -commit 0b09748296ea3f0ebb554061ef248373b8437947 -Author: Owen Taylor -Date: Thu Mar 17 11:24:00 2005 +0000 - - Fix the docs to to correctly describe the order of transformation for muliply/scale/rotate/translate. (cairo_matrix_translate): Fix translate/rotate typo in the parameter descriptions. - - ChangeLog | 7 +++++++ - src/cairo-matrix.c | 35 ++++++++++++++++++++++------------- - src/cairo_matrix.c | 35 ++++++++++++++++++++++------------- - 3 files changed, 51 insertions(+), 26 deletions(-) - -commit 1e7138175667e55dad7e0ca8ebadd0a1a50f0fa8 -Author: Kristian Høgsberg -Date: Thu Mar 17 07:32:28 2005 +0000 - - Forgot to add this file. - - ChangeLog | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit b481b858412876f015a2fcba286b0cc5cadf4d0c -Author: Kristian Høgsberg -Date: Thu Mar 17 07:30:05 2005 +0000 - - ChangeLog - - src/cairo-output-stream.c | 147 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_output_stream.c | 147 +++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 294 insertions(+), 0 deletions(-) - -commit 0f52fb2289b8369f0d66a779338e18818746ad7d -Author: Kristian Høgsberg -Date: Wed Mar 16 12:15:29 2005 +0000 - - Dont call user data destroy function if it's NULL. - Add test case for user data with NULL destroy function. - - ChangeLog | 11 ++++++++++- - src/cairo-surface.c | 4 ++-- - src/cairo_surface.c | 4 ++-- - test/user-data.c | 8 ++++++++ - test/user_data.c | 8 ++++++++ - 5 files changed, 30 insertions(+), 5 deletions(-) - -commit 6993c086ebaa9a98b1794f2c483013ec51cc41ec -Author: Kristian Høgsberg -Date: Wed Mar 16 12:08:41 2005 +0000 - - Add cairo_output_stream.c - Add new errors, CAIRO_STATUS_WRITE_ERROR and CAIRO_STATUS_SURFACE_FINISHED, add cairo_surface_finish() prototype, add cairo_write_func_t. - Add strings for new errors, documentation fix. - Rename surface destroy functions to finish and change them to not free the surface. - Change PDF surface constructors to take a write function in the general case and add stdio convenience constructors. Change destroy function to finish for cairo_pdf_surface. Change implementation to use cairo_output_stream_t functions for output. - Use _cairo_surface_show_glyphs instead of calling function pointer directly. - Add prototypes for cairo output stream functions, rename destroy to finish in cairo_surface_backend_t and add finished flag to cairo_surface_t. - Add cairo_surface_finish() and call it from cairo_surface_destroy(). Check the finished flag in cairo_surface_t in functions that change the surface. - - ChangeLog | 38 ++ - src/Makefile.am | 1 + - src/cairo-font.c | 19 +- - src/cairo-glitz-surface.c | 11 +- - src/cairo-image-surface.c | 8 +- - src/cairo-pdf-surface.c | 849 ++++++++++++++++++++++++++------------------- - src/cairo-pdf.h | 40 ++- - src/cairo-ps-surface.c | 8 +- - src/cairo-surface.c | 116 ++++++- - src/cairo-win32-surface.c | 6 +- - src/cairo-xcb-surface.c | 6 +- - src/cairo-xlib-surface.c | 8 +- - src/cairo.c | 6 +- - src/cairo.h | 22 ++- - src/cairo_font.c | 19 +- - src/cairo_glitz_surface.c | 11 +- - src/cairo_image_surface.c | 8 +- - src/cairo_pdf_surface.c | 849 ++++++++++++++++++++++++++------------------- - src/cairo_png_surface.c | 8 +- - src/cairo_ps_surface.c | 8 +- - src/cairo_surface.c | 116 ++++++- - src/cairo_win32_surface.c | 6 +- - src/cairo_xcb_surface.c | 6 +- - src/cairo_xlib_surface.c | 8 +- - src/cairoint.h | 49 +++- - 25 files changed, 1415 insertions(+), 811 deletions(-) - -commit 5fecf69e2c41ed1957fdde8b0208e7a4aa031466 -Author: Owen Taylor -Date: Tue Mar 15 16:25:30 2005 +0000 - - src/cairo-xlib.h src/cairo_xlib_surface.c: Rework set of contructors for XLib surfaces. Add cairo_xlib_surface_set_size(). - src/cairo-xlib.h src/cairo_xlib_surface.c: Add cairo_xlib_surface_set_device_offset(). - Rewrite for clarity and efficiency. - Use a temporary pixmap to avoid possible BadMatch when fetch from windows. - src/cairo.[ch] src/cairo-xlib.h: Fix some parameter names for the docs. - Update - - ChangeLog | 21 ++ - doc/public/cairo-sections.txt | 5 + - doc/public/tmpl/cairo-surface.sgml | 4 +- - doc/public/tmpl/cairo-xlib.sgml | 55 ++++ - src/cairo-xlib-surface.c | 583 ++++++++++++++++++++++++++---------- - src/cairo-xlib.h | 38 ++- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairo_xlib_surface.c | 583 ++++++++++++++++++++++++++---------- - 9 files changed, 955 insertions(+), 338 deletions(-) - -commit 30e771d8118a6b240f483b4d0db26bb970e88181 -Author: Carl Worth -Date: Mon Mar 14 11:49:12 2005 +0000 - - Add reference image. - - ChangeLog | 4 ++++ - test/path-data-ref.png | Bin 0 -> 387 bytes - test/path_data-ref.png | Bin 0 -> 387 bytes - 3 files changed, 4 insertions(+), 0 deletions(-) - -commit f385e5f3e47dec22aa48df02f3f19b06fe0b8780 -Author: Carl Worth -Date: Mon Mar 14 11:14:13 2005 +0000 - - Fixes to force tests to run against locally compiled version (thanks to Manish Singh). - - ChangeLog | 5 +++++ - test/Makefile.am | 36 +++++++++++++++++++----------------- - 2 files changed, 24 insertions(+), 17 deletions(-) - -commit a98430092f5f43cfa6eee555a56d91575d92cd62 -Author: Carl Worth -Date: Fri Mar 11 14:29:15 2005 +0000 - - Added some documentation, so we get some churn here. - New functions: cairo_copy_path_data, cairo_copy_path_data_flat, and cairo_append_path_data. - Add new implementation for cairo_copy_path_data and cairo_append_path_data. - New test for new path_data functions. - - ChangeLog | 19 +++ - doc/public/cairo-sections.txt | 11 ++ - doc/public/tmpl/cairo-surface.sgml | 22 +++ - doc/public/tmpl/cairo.sgml | 43 ++++++ - src/Makefile.am | 2 + - src/cairo-path-data-private.h | 57 ++++++++ - src/cairo-path-data.c | 268 ++++++++++++++++++++++++++++++++++++ - src/cairo.c | 88 ++++++++++++- - src/cairo.h | 100 +++++++++++++- - src/cairo_path_data.c | 268 ++++++++++++++++++++++++++++++++++++ - test/.cvsignore | 3 + - test/Makefile.am | 3 + - test/path-data.c | 167 ++++++++++++++++++++++ - test/path_data.c | 167 ++++++++++++++++++++++ - 14 files changed, 1210 insertions(+), 8 deletions(-) - -commit db616356c1dd6a8a30c681e3380003ada1f3234c -Author: Owen Taylor -Date: Fri Mar 11 12:09:00 2005 +0000 - - Set format->depth correctly instead of just using the bpp. - - pixman/ChangeLog | 5 +++++ - pixman/src/icformat.c | 6 +++++- - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 1f5394ffe91ee8a7bd4c15cbec3a8ac3956d949e -Author: Kristian Høgsberg -Date: Thu Mar 10 09:28:50 2005 +0000 - - *** empty log message *** - - ChangeLog | 5 +++++ - src/cairo-surface.c | 18 ++++++++++++++++++ - src/cairo_surface.c | 18 ++++++++++++++++++ - 3 files changed, 41 insertions(+), 0 deletions(-) - -commit b032d02322a656a3cfc02d0ea788680c12689d1f -Author: Kristian Høgsberg -Date: Thu Mar 10 09:22:20 2005 +0000 - - Fix assert()'s using = instead of ==. - Move xunlink call below the xasprintf that builds the filename to unlink. - - ChangeLog | 7 +++++++ - test/cairo-test.c | 4 ++-- - test/cairo_test.c | 4 ++-- - test/user-data.c | 4 ++-- - test/user_data.c | 4 ++-- - 5 files changed, 15 insertions(+), 8 deletions(-) - -commit 05a7c69c904119ee08df40b8e3f7154614fcbf8e -Author: Carl Worth -Date: Thu Mar 10 09:02:41 2005 +0000 - - API Shakeup status update. - - ChangeLog | 4 ++++ - TODO | 15 ++++++++------- - 2 files changed, 12 insertions(+), 7 deletions(-) - -commit c67ba13a6e715fa3bd4e785ed72c093f791e2774 -Author: Carl Worth -Date: Thu Mar 10 08:59:11 2005 +0000 - - Originally: 2005-02-24 Carl Worth - Add const qualifier to cairo_user_data_key_t arguments. - Originally: 2005-02-15 Kristian Høgsberg - Add these two functions to set and get user data on an surface. - Function prototypes for new functions. - Test case for user data functions. - - ChangeLog | 18 +++++++ - doc/public/tmpl/cairo-atsui.sgml | 3 + - doc/public/tmpl/cairo-ft.sgml | 3 + - doc/public/tmpl/cairo-glitz.sgml | 3 + - doc/public/tmpl/cairo-matrix.sgml | 3 + - doc/public/tmpl/cairo-pattern.sgml | 3 + - doc/public/tmpl/cairo-pdf.sgml | 3 + - doc/public/tmpl/cairo-png.sgml | 3 + - doc/public/tmpl/cairo-ps.sgml | 3 + - doc/public/tmpl/cairo-quartz.sgml | 3 + - doc/public/tmpl/cairo-surface.sgml | 3 + - doc/public/tmpl/cairo-xcb.sgml | 3 + - doc/public/tmpl/cairo-xlib.sgml | 3 + - doc/public/tmpl/cairo.sgml | 48 ++++++++++++------- - src/cairo-surface.c | 90 ++++++++++++++++++++++++++++++++++++ - src/cairo.h | 33 +++++++++++++ - src/cairo_surface.c | 90 ++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 1 + - test/.cvsignore | 3 +- - test/Makefile.am | 5 +- - test/user-data.c | 70 ++++++++++++++++++++++++++++ - test/user_data.c | 70 ++++++++++++++++++++++++++++ - 22 files changed, 444 insertions(+), 20 deletions(-) - -commit 12abad4759286d8642cd02f258fba0749ea20b8b -Author: Carl Worth -Date: Wed Mar 9 17:43:59 2005 +0000 - - Move filename initialization up to before first use. - Add test for the most trivial cairo_get and cairo_set functions. - - ChangeLog | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 0daf6b1745fa6a64652849f280da42781aeb296b -Author: Carl Worth -Date: Wed Mar 9 14:34:26 2005 +0000 - - Move filename initialization up to before first use. - Add test for the most trivial cairo_get and cairo_set functions. - - test/Makefile.am | 17 ++++--- - test/cairo-test.c | 22 ++++---- - test/cairo_test.c | 22 ++++---- - test/get-and-set.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - test/get_and_set.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 336 insertions(+), 27 deletions(-) - -commit c3bd9b1b8d55d1128a7f70096b7135a80c6c9bed -Author: Carl Worth -Date: Wed Mar 9 13:58:20 2005 +0000 - - Change the draw function under test to return a cairo_test_status_t so that it can indicate test failure even if there is no result image. - - ChangeLog | 17 +++++++++++++++++ - test/cairo-test.c | 20 +++++++++++++++++--- - test/cairo-test.h | 2 +- - test/cairo_test.c | 20 +++++++++++++++++--- - test/cairo_test.h | 2 +- - test/clip-twice.c | 4 +++- - test/clip_twice.c | 4 +++- - test/coverage.c | 4 +++- - test/fill-rule.c | 4 +++- - test/fill_rule.c | 4 +++- - test/leaky-polygon.c | 4 +++- - test/leaky_polygon.c | 4 +++- - test/line-width.c | 4 +++- - test/line_width.c | 4 +++- - test/linear-gradient.c | 4 +++- - test/linear_gradient.c | 4 +++- - test/move-to-show-surface.c | 4 +++- - test/move_to_show_surface.c | 4 +++- - test/pixman-rotate.c | 4 +++- - test/pixman_rotate.c | 4 +++- - test/text-cache-crash.c | 4 +++- - test/text-rotate.c | 4 +++- - test/text_cache_crash.c | 4 +++- - test/text_rotate.c | 4 +++- - 24 files changed, 110 insertions(+), 27 deletions(-) - -commit 80b2742952eeadc116bef8865f55ecb47b4a0a5e -Author: Carl Worth -Date: Wed Mar 9 13:56:37 2005 +0000 - - fix typos. - - ChangeLog | 1 + - TODO | 8 ++++---- - 2 files changed, 5 insertions(+), 4 deletions(-) - -commit 2fbdcf208216a8c383ce2ddfded4763ba700ed5a -Author: Carl Worth -Date: Wed Mar 9 12:53:01 2005 +0000 - - Update API Shakeup planning chart. - - ChangeLog | 4 ++++ - TODO | 56 ++++++++++++++++++++++++++++++-------------------------- - 2 files changed, 34 insertions(+), 26 deletions(-) - -commit 6d4653fe22c0d24d650b094a1e271c37a9a11eb1 -Author: Carl Worth -Date: Wed Mar 9 12:35:36 2005 +0000 - - Rename all the cairo_current functions to cairo_get functions instead. Add documentation for all of these functions (and a few others as well). - Add support so that old binarys should still run and old source should still compile, (though we'll rip that out again on the API Shakeup flag day). - - ChangeLog | 34 ++++ - doc/public/cairo-sections.txt | 53 +++--- - src/cairo-ft-font.c | 8 +- - src/cairo-gstate.c | 42 ++-- - src/cairo-path.c | 2 +- - src/cairo.c | 423 +++++++++++++++++++++++++++++++++++------ - src/cairo.h | 125 ++++++++----- - src/cairo_ft_font.c | 8 +- - src/cairo_gstate.c | 42 ++-- - src/cairo_path.c | 2 +- - src/cairoint.h | 36 ++-- - test/pixman-rotate.c | 2 +- - test/pixman_rotate.c | 2 +- - 13 files changed, 578 insertions(+), 201 deletions(-) - -commit 36820ec40a4c2cd246d23d23e6d8ef15dd4c6504 -Author: Carl Worth -Date: Tue Mar 8 19:34:04 2005 +0000 - - Add -head to CAIRO_VERSION after tagging with SNAPSHOT_0_4_0. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 980eff38e494223de00e7ded706f6beaca27fce1 -Author: Carl Worth -Date: Tue Mar 8 19:30:19 2005 +0000 - - Commit workaround to prevent make distcheck from making bogus complaints that gtk-doc is not enabled. - - ChangeLog | 4 ++++ - gtk-doc.make | 8 +++++++- - test/Makefile.am | 2 +- - 3 files changed, 12 insertions(+), 2 deletions(-) - -commit e586688e6bed6b148c6920be35741305c95f0ca6 -Author: Carl Worth -Date: Tue Mar 8 19:25:39 2005 +0000 - - Look for png images in ${srcdir}/filename as well, so that make distcheck can still find them. - Add romedalen.png to EXTRA_DIST so the tests can pass from the tar file. - Fix typo: cairo-win3 -> cairo-win32. - Add cairo-win32.xml to the list, so it gets generated as well. - Add pointer to new win32 documentation. - - ChangeLog | 15 +++++++++++++++ - NEWS | 4 ++++ - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 2 +- - test/Makefile.am | 3 ++- - test/cairo-test.c | 9 +++++++++ - test/cairo_test.c | 9 +++++++++ - 7 files changed, 41 insertions(+), 2 deletions(-) - -commit 0c67d496a35e7f069faeaba32bfde697dc949e9f -Author: Carl Worth -Date: Tue Mar 8 17:36:24 2005 +0000 - - Increment CAIRO_VERSION to 0.4.0 - Added notes for snapshot 0.4.0 - - ChangeLog | 6 +++ - NEWS | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - 3 files changed, 129 insertions(+), 1 deletions(-) - -commit 627338ab4a270f54235c3356640f7feff4df7079 -Author: Carl Worth -Date: Tue Mar 8 14:30:14 2005 +0000 - - Fix accidental commit of diff, rather than ref image. - - test/coverage-ref.png | Bin 2148 -> 44324 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit c05059f62fc70e94ed864559212a223debe30915 -Author: Carl Worth -Date: Tue Mar 8 14:25:54 2005 +0000 - - Update coverage-ref.png due to seemingly harmless, though not entirely understood changes. - - test/coverage-ref.png | Bin 44331 -> 2148 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 246a07022aa97614c8961526cf3e2b06e8d5774b -Author: Carl Worth -Date: Tue Mar 8 13:44:14 2005 +0000 - - Shared function for checking unlink errrors. (cairo_test): Move all error messages to test-specific log files for quieter test output. - Make pixman_rotate an expected failure. - - ChangeLog | 8 ++++++++ - test/Makefile.am | 6 ++---- - test/cairo-test.c | 48 ++++++++++++++++++++++++++++++++++-------------- - test/cairo_test.c | 48 ++++++++++++++++++++++++++++++++++-------------- - 4 files changed, 78 insertions(+), 32 deletions(-) - -commit 4dcccab806f56f54bd21541c9a90a9439f8ccbbe -Author: Carl Worth -Date: Tue Mar 8 08:51:48 2005 +0000 - - Require libpixman >= 0.1.4. - - ChangeLog | 4 ++++ - configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 74416f2d9aa4529ca8951f0d276e06a148c632fb -Author: Kristian Høgsberg -Date: Mon Mar 7 21:22:42 2005 +0000 - - Return CAIRO_STATUS_SUCCESS even if we don't implement masks yet, so we don't set cr->status to CAIRO_INT_STATUS_UNSUPPORTED. - - ChangeLog | 6 ++++++ - src/cairo-pdf-surface.c | 2 +- - src/cairo_pdf_surface.c | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit c4697bc572f60340978df6662caad0e0755acc58 -Author: Carl Worth -Date: Mon Mar 7 14:23:07 2005 +0000 - - Disable the "new" intersection code so that the incorrect fill problems (test/fill_rule) go away. - - ChangeLog | 3 +++ - src/cairo-traps.c | 28 ++++++++++++++++++++++++++-- - src/cairo_traps.c | 28 ++++++++++++++++++++++++++-- - 3 files changed, 55 insertions(+), 4 deletions(-) - -commit 864496a10a2a99c27c8dcd90efb7cb1759036ef3 -Author: Carl Worth -Date: Mon Mar 7 13:50:30 2005 +0000 - - Increment version to 0.1.4-head post-snapshot. - - pixman/ChangeLog | 2 ++ - pixman/configure.in | 2 +- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit dfcd68ecca8f6a627ba406cbd4123a3a1c5cac40 -Author: Carl Worth -Date: Mon Mar 7 13:20:52 2005 +0000 - - Add notes on using -head suffix for PIXMAN_VERSION. - - pixman/ChangeLog | 2 ++ - pixman/RELEASING | 28 +++++++++++++++++----------- - 2 files changed, 19 insertions(+), 11 deletions(-) - -commit 32fbb0afae691d18c23d7fe996d33cd134f58fcb -Author: Carl Worth -Date: Mon Mar 7 12:40:29 2005 +0000 - - Make configure fail if no font backend is available. Point the user at freetype and fontconfig. - - ChangeLog | 5 +++++ - configure.in | 10 ++++++++++ - 2 files changed, 15 insertions(+), 0 deletions(-) - -commit 5804df2bcc1d0d697a2e4c4b7620d742e10fd450 -Author: Carl Worth -Date: Mon Mar 7 12:16:33 2005 +0000 - - Add notes for snapshot 0.1.4. - Increment version to 0.1.4. - - pixman/ChangeLog | 6 ++++++ - pixman/NEWS | 22 ++++++++++++++++++++++ - pixman/configure.in | 2 +- - 3 files changed, 29 insertions(+), 1 deletions(-) - -commit e7607bb379641f1f07a08e02214db63c0ed637a4 -Author: Owen Taylor -Date: Sun Mar 6 12:05:23 2005 +0000 - - Comment and clean up the gradient computation. (_cairo_linear_pattern_classify): Determine if a linear gradient is horizontal or vertical. (_cairo_pattern_acquire_surface_for_gradient): Optimize horizontal/vertical gradients with a repeating surface. - Test case for linear gradients at angles and with a rotated pattern matrix. - - ChangeLog | 12 ++++ - src/cairo-pattern.c | 119 +++++++++++++++++++++++++++++------ - src/cairo_pattern.c | 119 +++++++++++++++++++++++++++++------ - test/Makefile.am | 3 + - test/linear-gradient-ref.png | Bin 0 -> 12724 bytes - test/linear-gradient.c | 141 ++++++++++++++++++++++++++++++++++++++++++ - test/linear_gradient-ref.png | Bin 0 -> 12724 bytes - test/linear_gradient.c | 141 ++++++++++++++++++++++++++++++++++++++++++ - 8 files changed, 497 insertions(+), 38 deletions(-) - -commit 023d91123229dfb7db1c9e28b3981037660cc5a6 -Author: David Reveman -Date: Sun Mar 6 05:16:19 2005 +0000 - - Fix gradient acceleration in glitz backend - - ChangeLog | 9 +++++ - src/cairo-glitz-surface.c | 76 +++++++++++++++++++++++++++++---------------- - src/cairo_glitz_surface.c | 76 +++++++++++++++++++++++++++++---------------- - 3 files changed, 107 insertions(+), 54 deletions(-) - -commit 50b483042dc8b02fdcf8cc04bccf24b68dab76d6 -Author: Owen Taylor -Date: Fri Mar 4 10:43:24 2005 +0000 - - src/cairo_win32_font.c src/cairo_win32_surface.c: Update for recent backend interface changes. - Reenable win32 backend by default. - - ChangeLog | 7 +++++ - src/cairo-win32-font.c | 17 ++++++++--- - src/cairo-win32-surface.c | 67 +++++++++++++------------------------------- - src/cairo_win32_font.c | 17 ++++++++--- - src/cairo_win32_surface.c | 67 +++++++++++++------------------------------- - 5 files changed, 71 insertions(+), 104 deletions(-) - -commit f6dcd38c8cb65bfdc621efb9fad06b7c06704e69 -Author: Carl Worth -Date: Fri Mar 4 10:07:22 2005 +0000 - - Fix accidental reversal of condition in previous patch. - - ChangeLog | 6 ++++++ - src/cairo-glitz-surface.c | 2 +- - src/cairo_glitz_surface.c | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 66af5f9f3600b514801958d0c796a815ea4e31ee -Author: Owen Taylor -Date: Fri Mar 4 09:41:34 2005 +0000 - - src/cairoint.h src/cairo_pattern.c src/cairo_glitz_surface.c: Add _cairo_pattern_is_opaque, use it rather than pattern->alpha == 1.0. - - ChangeLog | 6 +++++ - configure.in | 2 +- - src/cairo-glitz-surface.c | 28 +++++++++++++++++++---- - src/cairo-pattern.c | 53 +++++++++++++++++++++++++++++++++++++++++--- - src/cairo-win32-surface.c | 4 +- - src/cairo_glitz_surface.c | 28 +++++++++++++++++++---- - src/cairo_pattern.c | 53 +++++++++++++++++++++++++++++++++++++++++--- - src/cairo_win32_surface.c | 4 +- - src/cairoint.h | 3 ++ - 9 files changed, 158 insertions(+), 23 deletions(-) - -commit c4443533e8e8fc3bbac6bfe935d1c8bb7421a710 -Author: Carl Worth -Date: Fri Mar 4 07:53:09 2005 +0000 - - Intersect bounds of trapezoids with the bounds of the destination surface before creating an intermediate surface. - - pixman/ChangeLog | 6 ++++++ - pixman/src/ictrap.c | 28 +++++++++++++++++++++++++--- - 2 files changed, 31 insertions(+), 3 deletions(-) - -commit b1545db06697221af7078ab09894d378893e1162 -Author: Carl Worth -Date: Fri Mar 4 07:31:49 2005 +0000 - - Add comment from xserver's mitrap.c. - - pixman/ChangeLog | 5 +++++ - pixman/src/ictrap.c | 7 +++++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit 4552898cfb11f7bc5161a713217dd964956437b7 -Author: David Reveman -Date: Thu Mar 3 20:16:23 2005 +0000 - - Update xcb backend - - ChangeLog | 4 + - configure.in | 4 +- - src/cairo-xcb-surface.c | 457 ++++++++++++++++++++++++++++++++--------------- - src/cairo_xcb_surface.c | 457 ++++++++++++++++++++++++++++++++--------------- - 4 files changed, 630 insertions(+), 292 deletions(-) - -commit f54f78525a1d4fcf535cf7c7a47c40073889081e -Author: David Reveman -Date: Thu Mar 3 19:09:24 2005 +0000 - - Fixed variable assignments in configure.in - - ChangeLog | 2 ++ - configure.in | 4 ++-- - 2 files changed, 4 insertions(+), 2 deletions(-) - -commit 378fb57051e6b1246c975a58f5fafa426935d6e1 -Author: David Reveman -Date: Thu Mar 3 18:55:28 2005 +0000 - - Add more mask surface acceleration to glitz backend - - ChangeLog | 4 ++ - src/cairo-glitz-surface.c | 101 +++++++++++++++++++++++++++++++++++++++++---- - src/cairo_glitz_surface.c | 101 +++++++++++++++++++++++++++++++++++++++++---- - 3 files changed, 188 insertions(+), 18 deletions(-) - -commit 01b87c7d99c157b560733edd9431a01a59752f6c -Author: David Reveman -Date: Thu Mar 3 18:46:49 2005 +0000 - - Add overall alpha acceleration using mask surface - - ChangeLog | 3 +++ - src/cairo-pattern.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- - src/cairo_pattern.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- - 3 files changed, 91 insertions(+), 8 deletions(-) - -commit 50b5344d7d8ff16c06b89deefe9de520848de706 -Author: David Reveman -Date: Thu Mar 3 18:39:06 2005 +0000 - - Pass mask to composite operation as pattern - - ChangeLog | 16 ++++++ - src/cairo-ft-font.c | 7 ++- - src/cairo-glitz-surface.c | 126 +++++++++++++++++++++++++++++++-------------- - src/cairo-gstate.c | 21 ++++++- - src/cairo-image-surface.c | 82 ++++++++++++++++------------- - src/cairo-pattern.c | 44 ++++++++++++++++ - src/cairo-pdf-surface.c | 11 +++-- - src/cairo-ps-surface.c | 2 +- - src/cairo-surface.c | 14 +++--- - src/cairo-xlib-surface.c | 88 +++++++++++++++++-------------- - src/cairo_ft_font.c | 7 ++- - src/cairo_glitz_surface.c | 126 +++++++++++++++++++++++++++++++-------------- - src/cairo_gstate.c | 21 ++++++- - src/cairo_image_surface.c | 82 ++++++++++++++++------------- - src/cairo_pattern.c | 44 ++++++++++++++++ - src/cairo_pdf_surface.c | 11 +++-- - src/cairo_png_surface.c | 4 +- - src/cairo_ps_surface.c | 2 +- - src/cairo_surface.c | 14 +++--- - src/cairo_xlib_surface.c | 88 +++++++++++++++++-------------- - src/cairoint.h | 21 ++++++- - 21 files changed, 564 insertions(+), 267 deletions(-) - -commit a97f4cce5e13cfa2dc3b843b3b37cb14cb16cf65 -Author: David Reveman -Date: Thu Mar 3 18:20:28 2005 +0000 - - Removed surface backend functions set_matrix, set_filter and set_repeat - - ChangeLog | 13 +++++++++++ - src/cairo-glitz-surface.c | 24 ++------------------ - src/cairo-image-surface.c | 26 ----------------------- - src/cairo-pdf-surface.c | 24 --------------------- - src/cairo-ps-surface.c | 30 -------------------------- - src/cairo-surface.c | 8 ++---- - src/cairo-xlib-surface.c | 51 +++++++++++++++++++++++++------------------- - src/cairo_glitz_surface.c | 24 ++------------------ - src/cairo_image_surface.c | 26 ----------------------- - src/cairo_pdf_surface.c | 24 --------------------- - src/cairo_png_surface.c | 30 -------------------------- - src/cairo_ps_surface.c | 30 -------------------------- - src/cairo_surface.c | 8 ++---- - src/cairo_xlib_surface.c | 51 +++++++++++++++++++++++++------------------- - src/cairoint.h | 12 ---------- - 15 files changed, 83 insertions(+), 298 deletions(-) - -commit 36b69fc7f4ff090f5d5eb6e9db4c13cbf25971a6 -Author: David Reveman -Date: Thu Mar 3 18:04:51 2005 +0000 - - Major update to glitz backend - - ChangeLog | 5 + - configure.in | 2 +- - src/cairo-glitz-surface.c | 1097 ++++++++++++++++++++++++++------------------- - src/cairo_glitz_surface.c | 1097 ++++++++++++++++++++++++++------------------- - 4 files changed, 1278 insertions(+), 923 deletions(-) - -commit 6c915293119afefd0701cd6719917d2990f6a3e0 -Author: David Reveman -Date: Thu Mar 3 18:02:23 2005 +0000 - - Add pixman_add_trapezoids - - pixman/ChangeLog | 5 +++++ - pixman/src/ictrap.c | 18 +++++++++++++++++- - pixman/src/pixman.h | 9 ++++++++- - 3 files changed, 30 insertions(+), 2 deletions(-) - -commit 019d381b4076a5716cae3708f0109d0815d7d6ef -Author: David Reveman -Date: Thu Mar 3 17:40:04 2005 +0000 - - Change to cairo_surface_t like structure of of cairo_pattern_t - - ChangeLog | 29 ++ - configure.in | 4 +- - src/cairo-gstate.c | 89 +++-- - src/cairo-image-surface.c | 149 +++++--- - src/cairo-pattern.c | 971 ++++++++++++++++++++++++++------------------- - src/cairo-pdf-surface.c | 92 +++-- - src/cairo-ps-surface.c | 6 +- - src/cairo-xlib-surface.c | 201 +++++----- - src/cairo_gstate.c | 89 +++-- - src/cairo_image_surface.c | 149 +++++--- - src/cairo_pattern.c | 971 ++++++++++++++++++++++++++------------------- - src/cairo_pdf_surface.c | 92 +++-- - src/cairo_ps_surface.c | 6 +- - src/cairo_xlib_surface.c | 201 +++++----- - src/cairoint.h | 174 +++++---- - 15 files changed, 1867 insertions(+), 1356 deletions(-) - -commit 849a7ca8ef2abd94ccf90ec6cb732e9c742777f1 -Author: Carl Worth -Date: Thu Mar 3 14:27:31 2005 +0000 - - Port from render/mipict.c. - Merge in optimization from render/mitrap.c for op==ADD and solid alpha src. - - pixman/ChangeLog | 7 +++++++ - pixman/src/icimage.c | 31 +++++++++++++++++++++++++++++++ - pixman/src/icimage.h | 3 +++ - pixman/src/ictrap.c | 9 ++++++++- - 4 files changed, 49 insertions(+), 1 deletions(-) - -commit e533d2faebccc9fbb02aa681cb93df26e4284929 -Author: Carl Worth -Date: Thu Mar 3 13:54:40 2005 +0000 - - Add a few more things that might be helpful when moving more files over from xserver. - - pixman/ChangeLog | 6 ++++++ - pixman/src/pixman-xserver-compat.h | 13 +++++++++---- - 2 files changed, 15 insertions(+), 4 deletions(-) - -commit f482f2be49080921ef49c31def57933f72e3b646 -Author: Carl Worth -Date: Thu Mar 3 13:52:49 2005 +0000 - - Move definitions of MIN and MAX macros from ictrap.c to icint.h. - - pixman/ChangeLog | 6 ++++++ - pixman/src/icint.h | 3 +++ - pixman/src/ictrap.c | 5 +---- - 3 files changed, 10 insertions(+), 4 deletions(-) - -commit 76d89e825763bffc3114d6e8a269eb5aea023267 -Author: Carl Worth -Date: Thu Mar 3 13:47:04 2005 +0000 - - Remove dead "if (!format)" code which also makes things more in synch with the server's mitrap.c. - - pixman/ChangeLog | 6 ++++ - pixman/src/ictrap.c | 84 +++++++++++++++++++------------------------------- - 2 files changed, 38 insertions(+), 52 deletions(-) - -commit 15bb06aaa07546fd6b853671012d28c1fa942f3f -Author: Carl Worth -Date: Thu Mar 3 13:36:30 2005 +0000 - - Restore original copyright and license which must have been inadvertently changed. - - pixman/ChangeLog | 5 +++++ - pixman/src/ictrap.c | 40 +++++++++++++++++++--------------------- - 2 files changed, 24 insertions(+), 21 deletions(-) - -commit b01798ea13327ea9048bdbffb4b98b172b8bbe3f -Author: Carl Worth -Date: Wed Mar 2 07:44:53 2005 +0000 - - Fix comment to clarify that libpixman regards the xserver repository as its canonical upstream for some files. - - pixman/ChangeLog | 4 ++++ - pixman/src/pixman-xserver-compat.h | 21 +++++++++++++-------- - 2 files changed, 17 insertions(+), 8 deletions(-) - -commit 6d50e485fa1d95f27608bb33608e6d696145c9bb -Author: Carl Worth -Date: Wed Mar 2 07:43:33 2005 +0000 - - Convert file encodings from ISO-8859 to UTF-8. - - pixman/ChangeLog | 9 +++++++++ - pixman/src/ic.c | 2 +- - pixman/src/icblt.c | 2 +- - pixman/src/icbltone.c | 2 +- - pixman/src/iccolor.c | 2 +- - pixman/src/iccompose.c | 2 +- - pixman/src/icformat.c | 2 +- - pixman/src/icimage.c | 2 +- - pixman/src/icimage.h | 2 +- - pixman/src/icint.h | 2 +- - pixman/src/icpixels.c | 4 ++-- - pixman/src/icrect.c | 2 +- - pixman/src/icrop.h | 2 +- - pixman/src/icstipple.c | 2 +- - pixman/src/ictransform.c | 2 +- - pixman/src/ictrap.c | 2 +- - pixman/src/ictri.c | 2 +- - pixman/src/icutil.c | 2 +- - pixman/src/pixman.h | 4 ++-- - pixman/src/slim_internal.h | 2 +- - 20 files changed, 30 insertions(+), 21 deletions(-) - -commit 2dcb6cd345a5221ddb7356c0a2743a49183dea6d -Author: Carl Worth -Date: Tue Mar 1 15:04:48 2005 +0000 - - Note that cairo_output_stream_t patch has been reviewed. - - ChangeLog | 4 ++++ - TODO | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 06bed80b9ed9b6941663855fdde178278becb376 -Author: Carl Worth -Date: Tue Mar 1 14:50:57 2005 +0000 - - Fix uninitialized value for status, (reported by Manish Singh). - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 4 ++-- - src/cairo_gstate.c | 4 ++-- - 3 files changed, 9 insertions(+), 4 deletions(-) - -commit 85db25b8a1eba2ce6dd54faa7f496bbb08c1b02f -Author: Kristian Høgsberg -Date: Sun Feb 27 11:21:39 2005 +0000 - - Fix this function again. Problem with signed/unsigned types reported by Jeff Muizelaar . - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 17 ++++++++++------- - src/cairo_gstate.c | 17 ++++++++++------- - 3 files changed, 26 insertions(+), 14 deletions(-) - -commit db2eb5d4cb442d8a8bdd705c18c69bf2e4d9ee39 -Author: Kristian Høgsberg -Date: Sun Feb 27 11:02:48 2005 +0000 - - Remove newline in comment which was confusing gtk-doc. - Document these functions. - - ChangeLog | 8 ++++++++ - src/cairo-image-surface.c | 36 ++++++++++++++++++++++++++++++++++++ - src/cairo.h | 1 - - src/cairo_image_surface.c | 36 ++++++++++++++++++++++++++++++++++++ - 4 files changed, 80 insertions(+), 1 deletions(-) - -commit cac994f1f842622e056e51637225fc6e2474866e -Author: Carl Worth -Date: Fri Feb 25 14:06:19 2005 +0000 - - Note that "user data" and "setters and getters" patches have been reviewed. Remove a few more TODO notes: cleanup cairo_snippets: DONE cairo_surface_finish: Now in API Shakeup snapping code: Decided against this - - ChangeLog | 8 ++++++++ - TODO | 13 ++----------- - 2 files changed, 10 insertions(+), 11 deletions(-) - -commit f343b0b44a8411a133d2a94ead7faa2e58648f97 -Author: Carl Worth -Date: Fri Feb 25 13:31:00 2005 +0000 - - From David Reveman: - Rewrite to use cairo_bool_t for legibility. - - ChangeLog | 7 +++++++ - src/cairo-matrix.c | 6 +++--- - src/cairo_matrix.c | 6 +++--- - src/cairoint.h | 2 +- - 4 files changed, 14 insertions(+), 7 deletions(-) - -commit ebec6df7a77f1c778b69e36d562423a3ffd6edfb -Author: Carl Worth -Date: Fri Feb 25 13:03:42 2005 +0000 - - From David Reveman: - Simplify code to eliminate a goto. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 26 ++++++++++---------------- - src/cairo_gstate.c | 26 ++++++++++---------------- - 3 files changed, 27 insertions(+), 32 deletions(-) - -commit 03e7e13cb1412c29ebd1f1c8b46db3849e089557 -Author: Carl Worth -Date: Fri Feb 25 12:58:49 2005 +0000 - - From David Reveman: - Clean up the mess that was the misnamed _cairo_gstate_create_pattern. - - ChangeLog | 11 ++++++++++ - src/cairo-gstate.c | 55 ++++++++++++++++----------------------------------- - src/cairo_gstate.c | 55 ++++++++++++++++----------------------------------- - 3 files changed, 45 insertions(+), 76 deletions(-) - -commit 1a043bbf26a02d240f24f0aca1bf848e7e203f1d -Author: Carl Worth -Date: Fri Feb 25 12:52:47 2005 +0000 - - Don't put an off-by-one n_stops into cairo_shader_op_t. (_cairo_shader_op_find_color_stops): Put search for two color stops containing a given offset into its own function. Handle the case of before first and after last stop by returning the nearest stop twice. (_cairo_pattern_calc_color_at_pixel): Handle case of no color stops by returning a transparent pixel. - - ChangeLog | 11 ++++++ - src/cairo-pattern.c | 91 +++++++++++++++++++++++++++++++++----------------- - src/cairo_pattern.c | 91 +++++++++++++++++++++++++++++++++----------------- - src/cairoint.h | 2 - - 4 files changed, 131 insertions(+), 64 deletions(-) - -commit 8ad3ab22e447e5fc2e93333b5958c37ef63fb392 -Author: Owen Taylor -Date: Thu Feb 24 15:48:07 2005 +0000 - - Remove a left-over debug printf. - - ChangeLog | 4 ++++ - src/cairo-win32-surface.c | 3 --- - src/cairo_win32_surface.c | 3 --- - 3 files changed, 4 insertions(+), 6 deletions(-) - -commit aca0708fc828f75dd31142cdc20e5650c706d37e -Author: Carl Worth -Date: Thu Feb 24 14:06:03 2005 +0000 - - Fix memory leak when realloc fails due to out-of-memory. - - ChangeLog | 5 +++++ - src/cairo-pattern.c | 12 ++++++------ - src/cairo_pattern.c | 12 ++++++------ - 3 files changed, 17 insertions(+), 12 deletions(-) - -commit a64b7e51eeefb61676c8579cc870fec9e2463529 -Author: Owen Taylor -Date: Thu Feb 24 12:51:33 2005 +0000 - - Instead of counting on ordering deletion to work (apparently it didn't on older Windows), save the initial bitmap created with the DC and reselect that into the DC. (Based on a patch by Hans Breuer) - - ChangeLog | 10 ++++- - src/cairo-win32-private.h | 10 +++++ - src/cairo-win32-surface.c | 91 ++++++++++++++++++++++++-------------------- - src/cairo_win32_surface.c | 91 ++++++++++++++++++++++++-------------------- - 4 files changed, 119 insertions(+), 83 deletions(-) - -commit de7d69aff9784cb19289d6709e18fb890ed39ecb -Author: Carl Worth -Date: Thu Feb 24 12:30:23 2005 +0000 - - Add pixman_rotate to ignore list. - - ChangeLog | 4 ++++ - test/.cvsignore | 5 +++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 04fefd1b281e3fcba0b81cee2acf68f8c97381c8 -Author: Carl Worth -Date: Thu Feb 24 12:28:51 2005 +0000 - - Fixes from David Reveman with minor cleanups by Carl Worth: - Handle new failure possibility of _cairo_gstate_init. (_cairo_gstate_init): Handle possible failure of _cairo_pattern_create_solid. (_cairo_gstate_set_pattern): Reference new pattern before destroying existing pattern to handle the case where they are the same. (_cairo_gstate_set_rgb_color): Handle possible failure of _cairo_pattern_create_solid. - - ChangeLog | 14 ++++++++++++++ - src/cairo-gstate.c | 24 ++++++++++++++++++------ - src/cairo_gstate.c | 24 ++++++++++++++++++------ - src/cairoint.h | 2 +- - 4 files changed, 51 insertions(+), 13 deletions(-) - -commit 12d19423f608916753596cf736c89274d381964d -Author: Carl Worth -Date: Thu Feb 24 10:09:44 2005 +0000 - - Fix typo (pointed out by Kristian Høgsberg). - - ChangeLog | 4 ++++ - src/cairo.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 724cf1ce71f55783ec3d759804aaba4b4a88bd7e -Author: Owen Taylor -Date: Thu Feb 24 08:20:14 2005 +0000 - - When we created a DC/bitmap pair, delete the DC before the Bitmap so that the Bitmap will be released from the DC and can be destroyed. (Reported by Hans Breuer) - configure.in cairo.pc.in: Only require fontconfig if building FreeType font backend. - Fix output when reporting Win32 font backend. - - ChangeLog | 12 ++++++++++++ - cairo.pc.in | 2 +- - configure.in | 6 ++++-- - src/cairo-win32-surface.c | 10 ++++++---- - src/cairo_win32_surface.c | 10 ++++++---- - 5 files changed, 29 insertions(+), 11 deletions(-) - -commit b210c00c30c5e191be230d9675bb00ce5cf57393 -Author: Carl Worth -Date: Thu Feb 24 08:07:39 2005 +0000 - - Remove many TODO items that have now been absorbed by the API shakeup. Remove comparison with PostScript as there's nothing interesting there left unimplemented, (and cairo is already establishing its own conventions in naming and behavior that deviate from PostScript). - - ChangeLog | 6 ++ - TODO | 167 ------------------------------------------------------------- - 2 files changed, 6 insertions(+), 167 deletions(-) - -commit 77826a97565d48073b5725ca60b25b66bed73ab5 -Author: Carl Worth -Date: Thu Feb 24 07:39:20 2005 +0000 - - Fix typo (pointed out by Mike Emmel) - - ChangeLog | 4 ++++ - src/cairoint.h | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 748115a88d9b058837e7a2bc690e2c98fc2253bc -Author: Carl Worth -Date: Wed Feb 23 14:56:55 2005 +0000 - - Add entries from API Shakeup. - - ChangeLog | 4 ++++ - TODO | 27 +++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+), 0 deletions(-) - -commit dcfb0d8a2b9eeffd52ca42635c6cf12a0705bd66 -Author: Carl Worth -Date: Tue Feb 22 11:35:03 2005 +0000 - - Switch from broken cworth@isi.edu address to canonical cworth@cworth.org address. - - ChangeLog | 37 +++++++++++++++++++++++++++++++++++++ - README | 2 +- - src/cairo-color.c | 2 +- - src/cairo-features.h.in | 2 +- - src/cairo-fixed.c | 2 +- - src/cairo-font.c | 2 +- - src/cairo-glitz.h | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-hull.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-path-bounds.c | 2 +- - src/cairo-path-fill.c | 2 +- - src/cairo-path-stroke.c | 2 +- - src/cairo-path.c | 2 +- - src/cairo-pdf.h | 2 +- - src/cairo-pen.c | 2 +- - src/cairo-png.h | 2 +- - src/cairo-polygon.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-ps.h | 2 +- - src/cairo-quartz.h | 2 +- - src/cairo-slope.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-traps.c | 2 +- - src/cairo-xcb-surface.c | 2 +- - src/cairo-xcb.h | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo-xlib.h | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairo_color.c | 2 +- - src/cairo_fixed.c | 2 +- - src/cairo_font.c | 2 +- - src/cairo_gstate.c | 2 +- - src/cairo_hull.c | 2 +- - src/cairo_image_surface.c | 2 +- - src/cairo_matrix.c | 2 +- - src/cairo_path.c | 2 +- - src/cairo_path_bounds.c | 2 +- - src/cairo_path_fill.c | 2 +- - src/cairo_path_stroke.c | 2 +- - src/cairo_pen.c | 2 +- - src/cairo_png_surface.c | 2 +- - src/cairo_polygon.c | 2 +- - src/cairo_ps_surface.c | 2 +- - src/cairo_slope.c | 2 +- - src/cairo_spline.c | 2 +- - src/cairo_surface.c | 2 +- - src/cairo_traps.c | 2 +- - src/cairo_xcb_surface.c | 2 +- - src/cairo_xlib_surface.c | 2 +- - src/cairoint.h | 4 ++-- - 54 files changed, 91 insertions(+), 54 deletions(-) - -commit 604e333be2567e8877bec71d46107897717a1be6 -Author: Carl Worth -Date: Tue Feb 22 11:32:02 2005 +0000 - - Convert to utf-8 encoding. - - ChangeLog | 6 ++++++ - src/cairo-atsui-font.c | 2 +- - src/cairo-atsui.h | 2 +- - src/cairo_atsui_font.c | 2 +- - test/write-png.c | 4 ++-- - test/write_png.c | 4 ++-- - 6 files changed, 13 insertions(+), 7 deletions(-) - -commit 6b537f24660f180ba7acd6865ca11170711c3eff -Author: Carl Worth -Date: Tue Feb 22 10:43:26 2005 +0000 - - Temporarily disable XCB backend by default. - - ChangeLog | 4 ++++ - configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 272df99aabee9d678c98e5f31f2b9f0ede7778e3 -Author: Carl Worth -Date: Mon Feb 21 13:29:22 2005 +0000 - - Add only-just-better-than-ASCII-art diagram showing all macros used in locating sub-pixel sample rows/columns. - Add missing protective parentheses around macro parameter usage. - - pixman/ChangeLog | 8 ++++++ - pixman/src/renderedge.h | 61 ++++++++++++++++++++++++++++++++++++++-------- - 2 files changed, 58 insertions(+), 11 deletions(-) - -commit 6d70b286f5ff86a3855636de7165b30a5a45968c -Author: Carl Worth -Date: Mon Feb 21 12:57:27 2005 +0000 - - Move definition of __inline for non-gcc from ic.c to icint.h so it applies to more code in the implementation. - - pixman/ChangeLog | 6 ++++++ - pixman/src/ic.c | 5 ----- - pixman/src/icint.h | 6 ++++-- - 3 files changed, 10 insertions(+), 7 deletions(-) - -commit 30a02c8e172a9caece7526fbe87b060fc74e5041 -Author: Carl Worth -Date: Mon Feb 21 08:22:47 2005 +0000 - - Revert accidental commit. - - ChangeLog | 5 +++++ - src/cairo-pattern.c | 6 ++---- - src/cairo.h | 10 +--------- - src/cairo_pattern.c | 6 ++---- - 4 files changed, 10 insertions(+), 17 deletions(-) - -commit c8a98b109a5f7b02455aaf717066757a13652eb8 -Author: Carl Worth -Date: Mon Feb 21 08:17:42 2005 +0000 - - Fix y offset to use dst_y instead of dst_x, (caught by David Reveman). - - ChangeLog | 5 +++++ - src/cairo-pattern.c | 6 ++++-- - src/cairo-surface.c | 2 +- - src/cairo.h | 11 ++++++++++- - src/cairo_pattern.c | 6 ++++-- - src/cairo_surface.c | 2 +- - 6 files changed, 25 insertions(+), 7 deletions(-) - -commit 81fd7e53e3e053f8f3fdc9a528cce9e01c4e5c68 -Author: Owen Taylor -Date: Sun Feb 20 18:19:10 2005 +0000 - - Fix line endings (reported by Hans Breuer) - - ChangeLog | 5 ++ - src/cairo-win32.h | 142 ++++++++++++++++++++++++++-------------------------- - 2 files changed, 76 insertions(+), 71 deletions(-) - -commit d106bb2f3cbd5c498b6964c86e5bca4cfa74936c -Author: Kristian Høgsberg -Date: Wed Feb 16 09:34:47 2005 +0000 - - Patches from Mike Owens : - Free rows if we fail early in this function. - Clean up path if we run out of memory. - - ChangeLog | 10 ++++++++++ - src/cairo-path.c | 2 ++ - src/cairo_path.c | 2 ++ - src/cairo_png_surface.c | 18 ++++++++++-------- - 4 files changed, 24 insertions(+), 8 deletions(-) - -commit 8c8ced257379bdca4c37b312cb353e4f592f8cd2 -Author: Carl Worth -Date: Tue Feb 15 15:07:25 2005 +0000 - - Added testsvg script - - test/testsvg | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 51 insertions(+), 0 deletions(-) - -commit 9597c0b791d68d258618773996da67cf8f07113f -Author: Kristian Høgsberg -Date: Sun Feb 13 20:36:28 2005 +0000 - - Initialize array element size correctly. - - ChangeLog | 6 ++++++ - src/cairo-pdf-surface.c | 2 +- - src/cairo_pdf_surface.c | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 0502a5a63c3feea954a2d45441d56b7546a50554 -Author: Kristian Høgsberg -Date: Sun Feb 13 12:41:42 2005 +0000 - - Patches from Owen Taylor: - Emit text as octal escapes, to avoid problems with \, \r, ), etc. (_cairo_pdf_document_write_fonts): Change /Flags to be 4 (symbolic), not 32 (non-symbolic), otherwise acroread gets confuse. (cairo_pdf_ft_font_write_cmap_table): Use a 1,0 cmap subtable, not a 0,0, to conform to the PDF spec. - - ChangeLog | 12 ++++++++++++ - src/cairo-pdf-surface.c | 8 ++++---- - src/cairo_pdf_surface.c | 8 ++++---- - 3 files changed, 20 insertions(+), 8 deletions(-) - -commit 2cd01deb4d3ea3a722ef4d10839eef8577b81e5c -Author: Carl Worth -Date: Sun Feb 13 11:57:52 2005 +0000 - - Use LC_NUMERIC=C so that decimal separator works in version checks. - - ChangeLog | 5 +++++ - autogen.sh | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit d4ae84f39764dc2ced9d6807dbb5fe7f23c6eebe -Author: Owen Taylor -Date: Sat Feb 12 18:23:04 2005 +0000 - - Fix x2/x1 typo. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 2 +- - src/cairo_gstate.c | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit f3f63f39245bade5d70d546bf8acfe1bd0a6f7f8 -Author: Carl Worth -Date: Sat Feb 12 13:01:39 2005 +0000 - - Return all-zero extents if string is NULL. - - ChangeLog | 5 +++++ - src/cairo.c | 10 ++++++++++ - 2 files changed, 15 insertions(+), 0 deletions(-) - -commit b33f37ff040dbc3c7e7b9dcffdd1cccca1a11b20 -Author: Kristian Høgsberg -Date: Sat Feb 12 12:59:53 2005 +0000 - - Make clipping fast path fast. When we have a clipping region set, intersect it against the drawing extents to determine the bounding box for the visible drawing. - - ChangeLog | 8 ++++++++ - src/cairo-gstate.c | 34 ++++++++++++++++++++++++++++++++++ - src/cairo.c | 2 +- - src/cairo_gstate.c | 34 ++++++++++++++++++++++++++++++++++ - 4 files changed, 77 insertions(+), 1 deletions(-) - -commit 063ba1f51df750cc3d9e340bd355cc1cc41f88df -Author: Carl Worth -Date: Thu Feb 10 07:46:46 2005 +0000 - - Add bug for cairo_show_surface under non-default CTM. - - AUTHORS | 2 +- - BUGS | 16 ++++++++++++++++ - ChangeLog | 4 ++++ - 3 files changed, 21 insertions(+), 1 deletions(-) - -commit 0c07ddf729f0b4d2625dec90fbec6321f4908424 -Author: Kristian Høgsberg -Date: Mon Feb 7 10:15:46 2005 +0000 - - Argh, committed conflict marker in ChangeLog - fixed. - - ChangeLog | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 7296349eaa23f2e697e5553d7a1fd0b818aad47f -Author: Kristian Høgsberg -Date: Mon Feb 7 09:38:43 2005 +0000 - - New test case which exposes off-by-one rotation error in pixman. - - ChangeLog | 6 +++ - test/Makefile.am | 7 +++- - test/pixman-rotate-ref.png | Bin 0 -> 260 bytes - test/pixman-rotate.c | 78 ++++++++++++++++++++++++++++++++++++++++++++ - test/pixman_rotate-ref.png | Bin 0 -> 260 bytes - test/pixman_rotate.c | 78 ++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 167 insertions(+), 2 deletions(-) - -commit 67ffc273eff916f9b1a2f4cc308683c0e4c0660a -Author: Owen Taylor -Date: Sun Feb 6 15:07:17 2005 +0000 - - src/cairo_gstate.c src/cairo.c: Allow cairo_set_font (cr, NULL) to unset the current font and return the cairo_t to the the "use the font from cairo_select_font() state". - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 11 +++++++---- - src/cairo.c | 2 +- - src/cairo_gstate.c | 11 +++++++---- - 4 files changed, 21 insertions(+), 9 deletions(-) - -commit b93f42fae1080590fbf7050ba810155d37664843 -Author: Owen Taylor -Date: Sun Feb 6 12:00:28 2005 +0000 - - Return the right status. (Reported by Hans Breuer.) - - ChangeLog | 5 +++++ - src/cairo-win32-font.c | 2 +- - src/cairo_win32_font.c | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit 991ac7bacc758698052ea4ac6ada449c5cf6ab45 -Author: Owen Taylor -Date: Sun Feb 6 11:51:07 2005 +0000 - - Add AC_PREREQ(2.54) to help the Debian auto-guess-which-configure-version hack. - - pixman/ChangeLog | 5 +++++ - pixman/configure.in | 2 ++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit 092c5ca5583512c9689397f355d3d0b7a09c882e -Author: Owen Taylor -Date: Sat Feb 5 21:42:47 2005 +0000 - - Free glyph_indices, not glyphs. (Reported by Hans Breuer.) - - ChangeLog | 5 +++++ - src/cairo-win32-font.c | 4 ++-- - src/cairo_win32_font.c | 4 ++-- - 3 files changed, 9 insertions(+), 4 deletions(-) - -commit eb01786729b3d56f47ddf593fd5cc826d5c75064 -Author: Carl Worth -Date: Sat Feb 5 17:17:19 2005 +0000 - - Add message stating why glitz backend is disabled. - - ChangeLog | 4 ++++ - configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit b0ee983a7def6752d5bff7481c4af487db757b36 -Author: Owen Taylor -Date: Sat Feb 5 17:01:29 2005 +0000 - - Don't free *glyphs when succeeding! (Reported by Øyvind Kolås) - Temporarily disable glitz by default. - - ChangeLog | 7 +++++++ - configure.in | 2 +- - src/cairo-ft-font.c | 2 -- - src/cairo_ft_font.c | 2 -- - 4 files changed, 8 insertions(+), 5 deletions(-) - -commit 5707a69bfc9ce5525b2177f68c4e810c84b2f73f -Author: Carl Worth -Date: Fri Feb 4 08:04:36 2005 +0000 - - Generate an error during make install if old cairo headers are found in includedir, (rather than includedir/cairo where the new ones are going). - - ChangeLog | 6 ++++++ - src/Makefile.am | 10 ++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit 56d84bb85677df147063f2bc8eef583a6bdd5cae -Author: Owen Taylor -Date: Thu Feb 3 15:24:35 2005 +0000 - - Fix missing cairo_ft_font_unlock_face(). - Fix problem when no entry could be found. - - ChangeLog | 8 ++++++ - src/cairo-cache.c | 2 +- - src/cairo-ft-font.c | 64 ++++++++++++++++++++++++++++++-------------------- - src/cairo-hash.c | 2 +- - src/cairo_cache.c | 2 +- - src/cairo_ft_font.c | 64 ++++++++++++++++++++++++++++++-------------------- - 6 files changed, 87 insertions(+), 55 deletions(-) - -commit 587dff8a7191e7e2e4c6778b58af5dc16e39bf3f -Author: Carl Worth -Date: Thu Feb 3 06:19:51 2005 +0000 - - Commit old change to ChangeLog that got missed before: - test/imagediff.c - Add new testsvg script and accompanying imagediff program, (for interim SVG-based test suites while we wait for the standard cairo test suite to mature). - Split buffer_diff out into its own file for the purpose of imagediff. - - ChangeLog | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 913e39b6eef18a59c21b07ff92e4c5d078335ded -Author: Owen Taylor -Date: Wed Feb 2 23:14:55 2005 +0000 - - src/cairo_font.c src/cairo.h doc/public/cairo-sections.txt: Add cairo_font_extents(). - src/cairo_win32_font.c src/cairo-win32.h doc/public/cairo-sections.txt: Rename cairo_font_create_for_logfont() into cairo_font_create_for_logfontw() to make clear what it takes. Don't add cairo_font_create_for_logfonta() for now. - - ChangeLog | 12 ++++++++++- - doc/public/cairo-sections.txt | 3 +- - src/cairo-font.c | 44 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-gstate.c | 26 +++-------------------- - src/cairo-win32-font.c | 9 ++++--- - src/cairo-win32.h | 4 +- - src/cairo.h | 29 +++++++++++++++----------- - src/cairo_font.c | 44 +++++++++++++++++++++++++++++++++++++++++ - src/cairo_gstate.c | 26 +++-------------------- - src/cairo_win32_font.c | 9 ++++--- - 10 files changed, 138 insertions(+), 68 deletions(-) - -commit 749a8c1e7b387845beeae9c10eac7c6b041eaff7 -Author: Owen Taylor -Date: Wed Feb 2 19:52:22 2005 +0000 - - src/cairo_win32_font.c doc/public/cairo-sections.txt doc/public/Makefile.am: Add windows functions to the docs. - - ChangeLog | 15 +++++++++++++++ - doc/public/Makefile.am | 3 ++- - doc/public/cairo-sections.txt | 11 +++++++++++ - src/cairo-win32-font.c | 2 +- - src/cairo_win32_font.c | 2 +- - 5 files changed, 30 insertions(+), 3 deletions(-) - -commit 72a44202343031762d761acce55d75881356448f -Author: Owen Taylor -Date: Wed Feb 2 18:57:40 2005 +0000 - - Add some functions to select the font into a device context with the intention to enable callers to use, e.g, Uniscribe. - Use 'hdc' not 'dc' for param/variable name. - Return immediately if height or width is 0. - - ChangeLog | 13 ++ - src/cairo-win32-font.c | 331 +++++++++++++++++++++++++++++++-------------- - src/cairo-win32-surface.c | 8 +- - src/cairo-win32.h | 10 ++ - src/cairo_win32_font.c | 331 +++++++++++++++++++++++++++++++-------------- - src/cairo_win32_surface.c | 8 +- - 6 files changed, 483 insertions(+), 218 deletions(-) - -commit 199c41dafee1559570c250d22a97dc1667d657f3 -Author: Owen Taylor -Date: Tue Feb 1 21:45:51 2005 +0000 - - Mostly-functioning Win32 font backend; no glyph paths yet. - Turn on building of the Win32 font backend. - src/cairo-win32-private.h src/Makefile.am: Private header for the Win32 backend. - src/cairo-win32-private.h src/cairo_win32_surface.c: Internally export _cairo_win32_print_gdi_error() for use in the font code. - src/cairo-win32-private.h src/cairo_win32_surface.c: Add _cairo_win32_surface_create_dib to create a DIB surface. - src/cairo-win32-private.h src/cairo_win32_surface.c: Add _cairo_surface_is_win32() - Check for vasnprintf. - Add a simple fixed-buffer size snprintf fallback in the absence of vasnprintf. - - ChangeLog | 25 ++ - configure.in | 4 +- - src/Makefile.am | 2 +- - src/cairo-win32-font.c | 806 ++++++++++++++++++++++++++++++--------------- - src/cairo-win32-private.h | 77 +++++ - src/cairo-win32-surface.c | 97 ++++--- - src/cairo-win32.h | 2 +- - src/cairo_win32_font.c | 806 ++++++++++++++++++++++++++++++--------------- - src/cairo_win32_surface.c | 97 ++++--- - test/cairo-test.c | 29 ++- - test/cairo_test.c | 29 ++- - 11 files changed, 1343 insertions(+), 631 deletions(-) - -commit 211d115f1835e1f724709a2b8b55ab203326fa9a -Author: Kristian Høgsberg -Date: Tue Feb 1 20:47:43 2005 +0000 - - Pretend we support compositing of solid color or gradient patterns to prevent image fallback. (emit_pattern): New function, code factored out from _cairo_pdf_surface_composite_trapezoids. (_cairo_pdf_surface_show_glyphs): Use emit_pattern here so we get pattern support for text. - Fix typo. - - ChangeLog | 12 ++++ - src/cairo-ft-font.c | 2 +- - src/cairo-pdf-surface.c | 155 ++++++++++++++++++++++++++--------------------- - src/cairo_ft_font.c | 2 +- - src/cairo_pdf_surface.c | 155 ++++++++++++++++++++++++++--------------------- - 5 files changed, 186 insertions(+), 140 deletions(-) - -commit 32ada34ddb85038f4098a301f57113b19e87ed14 -Author: Owen Taylor -Date: Tue Feb 1 16:29:17 2005 +0000 - - Commit earlier missed new file - src/cairo_unicode.c src/cairoint.h src/Makefile.am: Add _cairo_utf8_to_utf16(), _cairo_utf8_to_ucs4() based on code from GLib. - - src/cairo-unicode.c | 340 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_unicode.c | 340 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 680 insertions(+), 0 deletions(-) - -commit 711d7965c87550901653bb8713b4604c441cb5c3 -Author: Owen Taylor -Date: Tue Feb 1 15:06:33 2005 +0000 - - src/cairo_unicode.c src/cairoint.h src/Makefile.am: Add _cairo_utf8_to_utf16(), _cairo_utf8_to_ucs4() based on code from GLib. - Add CAIRO_STATUS_INVALID_STRING - Use _cairo_utf8_to_ucs4(). - Add cairo_bool_t - Add TRUE/FALSE definitions. - src/cairo.[ch] src/cairoint.h src/cairo_gstate.c: switch cairo_in_stroke/cairo_in_fill and all the functions used to implement them over to cairo_bool_t. - - ChangeLog | 17 + - doc/public/cairo-sections.txt | 1 + - doc/public/tmpl/cairo.sgml | 7 + - doc/reference/.cvsignore | 20 - - src/Makefile.am | 1 + - src/cairo-ft-font.c | 41 +-- - src/cairo-gstate.c | 4 +- - src/cairo-traps.c | 18 +- - src/cairo-win32-font.c | 787 +++++++++++++++++++++++++++++++++-------- - src/cairo-win32-surface.c | 83 +++-- - src/cairo-win32.h | 20 +- - src/cairo.c | 4 +- - src/cairo.h | 23 +- - src/cairo_ft_font.c | 41 +-- - src/cairo_gstate.c | 4 +- - src/cairo_traps.c | 18 +- - src/cairo_win32_font.c | 787 +++++++++++++++++++++++++++++++++-------- - src/cairo_win32_surface.c | 83 +++-- - src/cairoint.h | 26 ++- - 19 files changed, 1469 insertions(+), 516 deletions(-) - -commit f4ccbb4615841c509e6ada7c12f469634732c4e4 -Author: Owen Taylor -Date: Mon Jan 31 16:41:06 2005 +0000 - - Forgotten commit: - src/cairo_gdip_font.cpp src/cairo_gdip_surface.cpp: Remove remnants of a GDI+ based backend. - - src/cairo_gdip_font.cpp | 665 ---------------------------------------- - src/cairo_gdip_surface.cpp | 727 -------------------------------------------- - 2 files changed, 0 insertions(+), 1392 deletions(-) - -commit 86c8755e59a7f2000fc8a44811d06afae2d0dbb7 -Author: Owen Taylor -Date: Mon Jan 31 16:11:37 2005 +0000 - - configure.in src/cairo-features.h.in: Add a check for the Windows platform and --enable-win32. Also add some (currently always off) stubs for native Win32 fonts. - Make building the PDF backend conditional on having FreeType. - src/Makefile.am src/cairo_win32_surface.c src/cairo_win32_font.c src/cairo-win32.h: Add a Win32 backend using GDI and software fallbacks Font code is not yet there yet, but it works with the fontconfig backend. - src/cairo_gdip_font.cpp src/cairo_gdip_surface.cpp: Remove remnants of a GDI+ based backend. - Prefer platform-specific font backends to the fontconfig backend. - - ChangeLog | 20 + - configure.in | 117 +++++-- - src/Makefile.am | 12 + - src/cairo-features.h.in | 4 + - src/cairo-surface.c | 2 +- - src/cairo-win32-font.c | 380 ++++++++++++++++++ - src/cairo-win32-surface.c | 932 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-win32.h | 61 +++ - src/cairo_surface.c | 2 +- - src/cairo_win32_font.c | 380 ++++++++++++++++++ - src/cairo_win32_surface.c | 932 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 22 +- - 12 files changed, 2827 insertions(+), 37 deletions(-) - -commit 26148a1d15b710b8f2ce850f8704bf44b0c3d484 -Author: Owen Taylor -Date: Mon Jan 31 08:50:22 2005 +0000 - - src/cairoint.h src/cairo_image_surface.c src/cairo_pdf_surface.c src/cairo_png_surface.c src/cairo_surface.c src/cairo_xlib_surface.c: Replace the get_image()/set_image() backend operations with a more specific {acquire,release}_{source,dest}_image() and clone_similar(). - src/cairoint.h src/cairo_pattern.c: Replace _cairo_pattern_get_surface() with a _cairo_pattern_begin_draw()/_cairo_pattern_end_draw() pair. - Save the format for which an image is created so we can access it later. (Needed for the _cairo_xlib_surface_clone_similar()) - src/cairoint.h src/cairo_image_surface.c: Add _cairo_surface_is_image(). - Add CAIRO_OK(status) to check for CAIRO_STATUS_SUCCESS. - In the absence of of RENDER, make cairo_xlib_surface_create_similar() return an image surface. - Don't try to use RENDER to composite glyphs in the absence of the RENDER extension. - - ChangeLog | 31 ++++ - src/cairo-image-surface.c | 160 +++++++++++++----- - src/cairo-pattern.c | 358 +++++++++++++++++++++++++---------------- - src/cairo-pdf-surface.c | 79 +++++++-- - src/cairo-ps-surface.c | 59 +++++-- - src/cairo-surface.c | 402 +++++++++++++++++++++++++++++++++++++++------ - src/cairo-xlib-surface.c | 332 ++++++++++++++++++++++++------------- - src/cairo_image_surface.c | 160 +++++++++++++----- - src/cairo_pattern.c | 358 +++++++++++++++++++++++++---------------- - src/cairo_pdf_surface.c | 79 +++++++-- - src/cairo_png_surface.c | 57 +++++-- - src/cairo_ps_surface.c | 59 +++++-- - src/cairo_surface.c | 402 +++++++++++++++++++++++++++++++++++++++------ - src/cairo_xlib_surface.c | 332 ++++++++++++++++++++++++------------- - src/cairoint.h | 99 +++++++++--- - 15 files changed, 2182 insertions(+), 785 deletions(-) - -commit 608a52ff9390f98a8e5269e6362f4ad8d07ec2c5 -Author: Owen Taylor -Date: Sun Jan 30 11:37:48 2005 +0000 - - Update composite-over-white code to use a pattern, not a surface. (to match _cairo_surface_composite API change.) - - ChangeLog | 6 ++++++ - src/cairo-ps-surface.c | 23 ++++++----------------- - src/cairo_ps_surface.c | 23 ++++++----------------- - 3 files changed, 18 insertions(+), 34 deletions(-) - -commit dca785faafb4baf2a5626e5191b3c3739b0b42b7 -Author: Owen Taylor -Date: Sun Jan 30 11:28:14 2005 +0000 - - Fixes from David Reveman: - Don't save to surface part of the union when the pattern isn't a surface pattern. (_cairo_pattern_get_surface): Create the new surface at the width and height of the source. - Add cairo-ft-private.h - - ChangeLog | 12 +++++++++++ - src/Makefile.am | 2 +- - src/cairo-pattern.c | 52 ++++++++++++++++++++++++-------------------------- - src/cairo_pattern.c | 52 ++++++++++++++++++++++++-------------------------- - 4 files changed, 63 insertions(+), 55 deletions(-) - -commit a24f2f909e29dd3ad1c7241a9d3f5c6580ac6a3e -Author: Kristian Høgsberg -Date: Fri Jan 28 12:27:23 2005 +0000 - - Update prototype to eliminate warning. - Remember to reference surfaces when copying patterns. - Don't call _gstate_create_pattern for internally created patterns. (_cairo_gstate_show_surface): Don't change the surface matrix here, it's done later when we set it up as a pattern. - Correct clip_twice-ref.png filename. - Add these. - Fix broken intersection code. - - ChangeLog | 22 ++++++++++++++++++++ - src/cairo-gstate.c | 51 ++++++++++------------------------------------ - src/cairo-pattern.c | 4 +++ - src/cairo_gstate.c | 51 ++++++++++------------------------------------ - src/cairo_pattern.c | 4 +++ - src/cairo_png_surface.c | 2 +- - src/cairoint.h | 3 ++ - test/Makefile.am | 2 +- - 8 files changed, 57 insertions(+), 82 deletions(-) - -commit 4c329eecb9d956c2553376d76308bdff032216a8 -Author: Kristian Høgsberg -Date: Thu Jan 27 21:14:04 2005 +0000 - - Make sure we always return a surface similar to dst in the gradient case. - - ChangeLog | 5 ++++- - src/cairo-pattern.c | 31 ++++++++++++++++++++++++------- - src/cairo_pattern.c | 31 ++++++++++++++++++++++++------- - src/cairoint.h | 9 --------- - 4 files changed, 52 insertions(+), 24 deletions(-) - -commit 79c8b29c3be5179f52db8a726f138137d63ae765 -Author: Kristian Høgsberg -Date: Thu Jan 27 19:57:31 2005 +0000 - - Fold _cairo_pattern_get_image into _cairo_pattern_get_surface and make sure we always return a surface of the same type as dest. - Use _cairo_pattern_get_surface instead of _cairo_pattern_get_image. - Remove use of _cairo_xlib_surface_clone_similar since _cairo_pattern_get_surface always gives us an xlib surface for the pattern. Clean up error handling code in _cairo_xlib_surface_show_glyphs. - Add missing cairo_surface_destroy and tidy up offset calculations as suggested by Owen. - Simplify code for computing the extents of clipping area, by introducing a couple of cairo_rectangle_t functions. - - ChangeLog | 20 +++++++ - src/cairo-glitz-surface.c | 10 ++-- - src/cairo-image-surface.c | 31 +++++++---- - src/cairo-pattern.c | 102 +++++++++++++------------------------ - src/cairo-xlib-surface.c | 122 +++++++++++--------------------------------- - src/cairo_glitz_surface.c | 10 ++-- - src/cairo_image_surface.c | 31 +++++++---- - src/cairo_pattern.c | 102 +++++++++++++------------------------ - src/cairo_xlib_surface.c | 122 +++++++++++--------------------------------- - 9 files changed, 206 insertions(+), 344 deletions(-) - -commit 8e90ae2f6527e39fca55e5c3e1472e067cdfe159 -Author: Kristian Høgsberg -Date: Thu Jan 27 17:21:13 2005 +0000 - - Simplify code for computing the extents of clipping area, by introducing a couple of cairo_rectangle_t functions. - - ChangeLog | 8 ++ - src/cairo-gstate.c | 302 ++++++++++++++++++++-------------------------------- - src/cairo_gstate.c | 302 ++++++++++++++++++++-------------------------------- - src/cairoint.h | 5 +- - 4 files changed, 243 insertions(+), 374 deletions(-) - -commit e0de000336976ddd69243ae775cb40946b730c5b -Author: Owen Taylor -Date: Thu Jan 27 15:46:16 2005 +0000 - - src/cairo.[ch] src/cairo_font.c src/cairo_ft_font.c src/cairo_ps_surface.c src/cairo_xlib_surface.c: Move docs from docs/reference, with a fair bit of addition and rewriting. - Remove old-format docs. - Add a AC_PREREQ(2.54) (Jason Dorje Short) - - ChangeLog | 11 + - configure.in | 2 + - doc/public/tmpl/cairo-matrix.sgml | 2 +- - doc/reference/ChangeLog | 16 -- - doc/reference/README | 11 - - doc/reference/crossreference.rb | 30 --- - doc/reference/doc.xml | 223 -------------------- - doc/reference/xml/cairo_arc.xml | 40 ---- - doc/reference/xml/cairo_arc_negative.xml | 40 ---- - doc/reference/xml/cairo_clip.xml | 35 --- - doc/reference/xml/cairo_close_path.xml | 35 --- - doc/reference/xml/cairo_copy.xml | 54 ----- - doc/reference/xml/cairo_create.xml | 34 --- - doc/reference/xml/cairo_current_alpha.xml | 35 --- - doc/reference/xml/cairo_current_fill_rule.xml | 35 --- - doc/reference/xml/cairo_current_font.xml | 37 ---- - doc/reference/xml/cairo_current_font_extents.xml | 40 ---- - doc/reference/xml/cairo_current_line_cap.xml | 35 --- - doc/reference/xml/cairo_current_line_join.xml | 35 --- - doc/reference/xml/cairo_current_line_width.xml | 35 --- - doc/reference/xml/cairo_current_matrix.xml | 41 ---- - doc/reference/xml/cairo_current_miter_limit.xml | 35 --- - doc/reference/xml/cairo_current_operator.xml | 35 --- - doc/reference/xml/cairo_current_point.xml | 47 ---- - doc/reference/xml/cairo_current_rgb_color.xml | 53 ----- - doc/reference/xml/cairo_current_target_surface.xml | 34 --- - doc/reference/xml/cairo_current_tolerance.xml | 35 --- - doc/reference/xml/cairo_curve_to.xml | 70 ------ - doc/reference/xml/cairo_default_matrix.xml | 35 --- - doc/reference/xml/cairo_destroy.xml | 38 ---- - doc/reference/xml/cairo_fill.xml | 35 --- - doc/reference/xml/cairo_fill_rule_t.xml | 40 ---- - doc/reference/xml/cairo_font_glyph_extents.xml | 72 ------- - doc/reference/xml/cairo_font_t.xml | 25 --- - doc/reference/xml/cairo_format_t.xml | 52 ----- - doc/reference/xml/cairo_ft_font_create.xml | 59 ----- - .../xml/cairo_ft_font_create_for_ft_face.xml | 69 ------ - doc/reference/xml/cairo_ft_font_get_pattern.xml | 49 ----- - doc/reference/xml/cairo_ft_font_lock_face.xml | 61 ------ - doc/reference/xml/cairo_ft_font_unlock_face.xml | 44 ---- - doc/reference/xml/cairo_glyph_t.xml | 62 ------ - doc/reference/xml/cairo_hit.xml | 36 --- - doc/reference/xml/cairo_identity_matrix.xml | 35 --- - doc/reference/xml/cairo_in_fill.xml | 34 --- - doc/reference/xml/cairo_in_stroke.xml | 34 --- - .../xml/cairo_inverse_transform_distance.xml | 47 ---- - .../xml/cairo_inverse_transform_point.xml | 47 ---- - doc/reference/xml/cairo_line_cap_t.xml | 43 ---- - doc/reference/xml/cairo_line_to.xml | 47 ---- - doc/reference/xml/cairo_matrix_copy.xml | 41 ---- - doc/reference/xml/cairo_matrix_create.xml | 34 --- - doc/reference/xml/cairo_matrix_destroy.xml | 35 --- - doc/reference/xml/cairo_matrix_invert.xml | 35 --- - doc/reference/xml/cairo_matrix_multiply.xml | 47 ---- - doc/reference/xml/cairo_matrix_rotate.xml | 41 ---- - doc/reference/xml/cairo_matrix_scale.xml | 47 ---- - doc/reference/xml/cairo_matrix_set_identity.xml | 35 --- - doc/reference/xml/cairo_matrix_t.xml | 33 --- - .../xml/cairo_matrix_transform_distance.xml | 47 ---- - doc/reference/xml/cairo_matrix_transform_point.xml | 47 ---- - doc/reference/xml/cairo_matrix_translate.xml | 47 ---- - doc/reference/xml/cairo_move_to.xml | 47 ---- - doc/reference/xml/cairo_new_path.xml | 35 --- - doc/reference/xml/cairo_operator_t.xml | 47 ---- - doc/reference/xml/cairo_pop_group.xml | 35 --- - doc/reference/xml/cairo_push_group.xml | 35 --- - doc/reference/xml/cairo_rectangle.xml | 47 ---- - doc/reference/xml/cairo_reference.xml | 35 --- - doc/reference/xml/cairo_rel_curve_to.xml | 70 ------ - doc/reference/xml/cairo_rel_line_to.xml | 47 ---- - doc/reference/xml/cairo_rel_move_to.xml | 47 ---- - doc/reference/xml/cairo_restore.xml | 36 --- - doc/reference/xml/cairo_rotate.xml | 41 ---- - doc/reference/xml/cairo_save.xml | 36 --- - doc/reference/xml/cairo_scale.xml | 47 ---- - doc/reference/xml/cairo_scale_font.xml | 41 ---- - doc/reference/xml/cairo_select_font.xml | 53 ----- - doc/reference/xml/cairo_set_alpha.xml | 42 ---- - doc/reference/xml/cairo_set_dash.xml | 53 ----- - doc/reference/xml/cairo_set_fill_rule.xml | 41 ---- - doc/reference/xml/cairo_set_font.xml | 52 ----- - doc/reference/xml/cairo_set_line_cap.xml | 41 ---- - doc/reference/xml/cairo_set_line_join.xml | 41 ---- - doc/reference/xml/cairo_set_line_width.xml | 41 ---- - doc/reference/xml/cairo_set_miter_limit.xml | 41 ---- - doc/reference/xml/cairo_set_operator.xml | 42 ---- - doc/reference/xml/cairo_set_pattern.xml | 41 ---- - doc/reference/xml/cairo_set_rgb_color.xml | 54 ----- - doc/reference/xml/cairo_set_target_drawable.xml | 45 ---- - doc/reference/xml/cairo_set_target_image.xml | 58 ----- - doc/reference/xml/cairo_set_target_png.xml | 51 ----- - doc/reference/xml/cairo_set_target_ps.xml | 52 ----- - doc/reference/xml/cairo_set_target_surface.xml | 41 ---- - doc/reference/xml/cairo_set_target_xcb.xml | 58 ----- - doc/reference/xml/cairo_set_tolerance.xml | 41 ---- - doc/reference/xml/cairo_show_glyphs.xml | 46 ---- - doc/reference/xml/cairo_show_text.xml | 41 ---- - doc/reference/xml/cairo_status.xml | 35 --- - doc/reference/xml/cairo_status_string.xml | 35 --- - doc/reference/xml/cairo_stroke.xml | 35 --- - doc/reference/xml/cairo_stroke_path.xml | 35 --- - doc/reference/xml/cairo_surface_clip_restore.xml | 35 --- - doc/reference/xml/cairo_surface_destroy.xml | 35 --- - doc/reference/xml/cairo_surface_get_matrix.xml | 41 ---- - doc/reference/xml/cairo_surface_reference.xml | 35 --- - doc/reference/xml/cairo_surface_set_filter.xml | 41 ---- - doc/reference/xml/cairo_surface_set_matrix.xml | 41 ---- - doc/reference/xml/cairo_surface_set_repeat.xml | 41 ---- - doc/reference/xml/cairo_surface_t.xml | 17 -- - doc/reference/xml/cairo_t.xml | 23 -- - doc/reference/xml/cairo_text_extents.xml | 47 ---- - doc/reference/xml/cairo_text_extents_t.xml | 76 ------- - doc/reference/xml/cairo_transform_distance.xml | 47 ---- - doc/reference/xml/cairo_transform_font.xml | 41 ---- - doc/reference/xml/cairo_transform_point.xml | 47 ---- - doc/reference/xml/cairo_translate.xml | 47 ---- - doc/reference/xml/skeleton.xml | 30 --- - src/cairo-font.c | 13 ++ - src/cairo-ft-font.c | 107 ++++++++++ - src/cairo-ps-surface.c | 16 ++ - src/cairo-xlib-surface.c | 16 ++ - src/cairo.c | 162 ++++++++++++++ - src/cairo.h | 126 +++++++++++- - src/cairo_font.c | 13 ++ - src/cairo_ft_font.c | 107 ++++++++++ - src/cairo_ps_surface.c | 16 ++ - src/cairo_xlib_surface.c | 16 ++ - 127 files changed, 601 insertions(+), 4984 deletions(-) - -commit 56c96d014047c8759dcec6777416466f87aba354 -Author: Kristian Høgsberg -Date: Thu Jan 27 12:28:17 2005 +0000 - - Update these two once again, this time generated using libpixman-0.1.3 without leaky circles. - - ChangeLog | 7 +++++++ - test/clip-twice-ref.png | Bin 793 -> 751 bytes - test/clip_twice-ref.png | Bin 793 -> 751 bytes - test/coverage-ref.png | Bin 44373 -> 44331 bytes - 4 files changed, 7 insertions(+), 0 deletions(-) - -commit 73cdfa0b2ba3222958483245a48daf483f3c74f6 -Author: Kristian Høgsberg -Date: Thu Jan 27 11:59:55 2005 +0000 - - [ Grr... previous commit from test/, missed the ChangLog changes ] - Fix missing rounding in these two functions. - Update these to versions with properly rounded alpha values. - Move clip_twice out of XFAIL now that rounding works. - Add new test cases. - - ChangeLog | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 81d03b3048b238099ae29a4baba84d5870353540 -Author: Kristian Høgsberg -Date: Thu Jan 27 11:40:29 2005 +0000 - - Fix missing rounding in these two functions. - Update these to versions with properly rounded alpha values. - Move clip_twice out of XFAIL now that rounding works. - Add new test cases. - - test/.cvsignore | 2 ++ - test/Makefile.am | 3 +-- - test/clip-twice-ref.png | Bin 869 -> 793 bytes - test/clip_twice-ref.png | Bin 869 -> 793 bytes - test/coverage-ref.png | Bin 44332 -> 44373 bytes - test/read-png.c | 6 +++--- - test/read_png.c | 6 +++--- - test/write-png.c | 6 +++--- - test/write_png.c | 6 +++--- - 9 files changed, 15 insertions(+), 14 deletions(-) - -commit 0f5b7d82deb8941705b703ef27d442ca7627bf41 -Author: Owen Taylor -Date: Thu Jan 27 11:35:25 2005 +0000 - - configure.in Makefile.am docs/Makefile.am docs/public/*: Add framework for doing docs via gtk-doc. - src/cairo.[ch] src/cairo-matrix.c: Add some inline docs for arcs and matrices. - gtk-doc.m4 acinclude.m4: Check in files from gtk-doc to make the dependency on gtk-doc optional. - Add --enable-gtk-doc to the default args. - - ChangeLog | 14 + - Makefile.am | 2 +- - acinclude.m4 | 53 ++ - autogen.sh | 2 +- - configure.in | 5 + - doc/.cvsignore | 2 + - doc/Makefile.am | 2 + - doc/public/.cvsignore | 15 + - doc/public/Makefile.am | 45 ++ - doc/public/cairo-docs.xml | 30 ++ - doc/public/cairo-sections.txt | 238 +++++++++ - doc/public/tmpl/.cvsignore | 1 + - doc/public/tmpl/cairo-atsui.sgml | 25 + - doc/public/tmpl/cairo-ft.sgml | 63 +++ - doc/public/tmpl/cairo-glitz.sgml | 34 ++ - doc/public/tmpl/cairo-matrix.sgml | 193 +++++++ - doc/public/tmpl/cairo-pattern.sgml | 154 ++++++ - doc/public/tmpl/cairo-pdf.sgml | 42 ++ - doc/public/tmpl/cairo-png.sgml | 40 ++ - doc/public/tmpl/cairo-ps.sgml | 42 ++ - doc/public/tmpl/cairo-quartz.sgml | 38 ++ - doc/public/tmpl/cairo-surface.sgml | 112 ++++ - doc/public/tmpl/cairo-xcb.sgml | 28 + - doc/public/tmpl/cairo-xlib.sgml | 39 ++ - doc/public/tmpl/cairo.sgml | 1012 ++++++++++++++++++++++++++++++++++++ - gtk-doc.make | 157 ++++++ - src/cairo-matrix.c | 162 ++++++ - src/cairo.c | 47 ++ - src/cairo.h | 26 +- - src/cairo_matrix.c | 162 ++++++ - 30 files changed, 2782 insertions(+), 3 deletions(-) - -commit 17ec6f1482ed63ea15e317e78eafab52786cee55 -Author: Kristian Høgsberg -Date: Thu Jan 27 10:46:20 2005 +0000 - - The overall idea of this rewrite is that we want to pass the source pattern all the way down into the backends. The motivation for this is that not all backends want a surface for the source operand, and by passing the pattern down, backends can choose to convert it to a surface if they need that. - The patch removes the create_surface function pointer from the surface vtable and moves much of that code into a couple of helper functions. The composite, compsite_trapezoids, and show_glyphs backend functions are updated to take a cairo_pattern_t instead of a surface as the source. - Change these functions to not create a surface for the pattern and just pass the pattern down to the backend functions. - New function to translate a set of trapezoids. - Break out the code to adjust and restore surface transformation and repeat settings into _cairo_pattern_prepare_surface and _cairo_pattern_restore_surface. - Split cairo_pattern_create_for_surface into an init function and a create function. - Utility functions to create a surface from a pattern. - Update these backends to work with the new pattern API. Glitz work by David Reveman. - Update these to pass through the new set of args. - Update this reference image as we now render it correctly. - - ChangeLog | 62 ++++ - src/cairo-font.c | 20 +- - src/cairo-ft-font.c | 19 +- - src/cairo-glitz-surface.c | 827 ++++++++++++++++++++++----------------------- - src/cairo-gstate.c | 363 +++++++++----------- - src/cairo-image-surface.c | 79 +++-- - src/cairo-pattern.c | 207 ++++++++--- - src/cairo-pdf-surface.c | 72 +--- - src/cairo-ps-surface.c | 15 +- - src/cairo-surface.c | 142 ++------- - src/cairo-xlib-surface.c | 102 +++++-- - src/cairo_font.c | 20 +- - src/cairo_ft_font.c | 19 +- - src/cairo_glitz_surface.c | 827 ++++++++++++++++++++++----------------------- - src/cairo_gstate.c | 363 +++++++++----------- - src/cairo_image_surface.c | 79 +++-- - src/cairo_pattern.c | 207 ++++++++--- - src/cairo_pdf_surface.c | 72 +--- - src/cairo_png_surface.c | 19 +- - src/cairo_ps_surface.c | 15 +- - src/cairo_surface.c | 142 ++------- - src/cairo_xlib_surface.c | 102 +++++-- - src/cairoint.h | 102 ++++-- - test/coverage-ref.png | Bin 43819 -> 44332 bytes - 24 files changed, 1960 insertions(+), 1915 deletions(-) - -commit 2654df6afb424e41d7cc3752a9d7b9c27c3efc92 -Author: Kristian Høgsberg -Date: Wed Jan 26 21:46:01 2005 +0000 - - New test case to verify that the clip surface is correctly updated when extending an existing clip path. - - ChangeLog | 4 ++ - test/Makefile.am | 21 +++++++++---- - test/clip-twice-ref.png | Bin 0 -> 869 bytes - test/clip-twice.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ - test/clip_twice-ref.png | Bin 0 -> 869 bytes - test/clip_twice.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 162 insertions(+), 7 deletions(-) - -commit 79d9b82ff3a803a0895fd57156cb39dc0a54e926 -Author: Kristian Høgsberg -Date: Wed Jan 26 14:21:53 2005 +0000 - - Set alpha to 1 before setting clip mask. - Added the right reference PNG. Running test against stock 0.3.0 gives the expected results. - - ChangeLog | 5 +++++ - test/coverage-ref.png | Bin 629 -> 43819 bytes - test/coverage.c | 1 + - 3 files changed, 6 insertions(+), 0 deletions(-) - -commit d4fb5c92407f31291041f421360ea83a209ea2ad -Author: Kristian Høgsberg -Date: Wed Jan 26 13:41:55 2005 +0000 - - New test case, covering various combinations of pattern types, drawing operations and clipping. Currently fails, for some combinations, coverage-ref.png is just a placeholder. - Added this PNG from cairo-snippets to use for pattern fills. - expose PNG loading to test cases. - - ChangeLog | 13 ++++ - test/Makefile.am | 7 ++- - test/cairo-test.c | 23 ++++++ - test/cairo-test.h | 4 + - test/cairo_test.c | 23 ++++++ - test/cairo_test.h | 4 + - test/coverage-ref.png | Bin 0 -> 629 bytes - test/coverage.c | 181 +++++++++++++++++++++++++++++++++++++++++++++++++ - test/romedalen.png | Bin 0 -> 80944 bytes - 9 files changed, 253 insertions(+), 2 deletions(-) - -commit 6dce601fd3cd7f6c8ebe72240e6be7c223ccbdcb -Author: Carl Worth -Date: Wed Jan 26 09:10:15 2005 +0000 - - Use 32-bits for pixman_bits_t, even on 64-bit platforms. This should fix bug #2335 as well as rendering problems seen on 64-bit platforms. - - pixman/ChangeLog | 6 ++++++ - pixman/src/pixman.h | 20 ++++++++++---------- - 2 files changed, 16 insertions(+), 10 deletions(-) - -commit dfee909d51aa62d731512d6a66ad3d7478c41089 -Author: Alexander Larsson -Date: Wed Jan 26 06:49:16 2005 +0000 - - Fix access to uninitialized data - key must be first element in cache entry - - ChangeLog | 8 ++++++++ - src/cairo-ft-font.c | 4 +++- - src/cairo-xlib-surface.c | 2 +- - src/cairo_ft_font.c | 4 +++- - src/cairo_xlib_surface.c | 2 +- - 5 files changed, 16 insertions(+), 4 deletions(-) - -commit 2a7a9d00cc2aa124b5c914dcaf978cbf7ddeddbb -Author: Carl Worth -Date: Tue Jan 25 14:45:31 2005 +0000 - - test/imagediff.c - Add new testsvg script and accompanying imagediff program, (for interim SVG-based test suites while we wait for the standard cairo test suite to mature). - Split buffer_diff out into its own file for the purpose of imagediff. - - test/.cvsignore | 1 + - test/Makefile.am | 5 +++ - test/buffer-diff.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ - test/buffer-diff.h | 38 +++++++++++++++++++++++ - test/buffer_diff.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ - test/buffer_diff.h | 38 +++++++++++++++++++++++ - test/cairo-test.c | 61 ++++++------------------------------- - test/cairo_test.c | 61 ++++++------------------------------- - test/imagediff.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - test/write-png.c | 7 +--- - test/write-png.h | 4 +- - test/write_png.c | 7 +--- - test/write_png.h | 4 +- - 13 files changed, 340 insertions(+), 116 deletions(-) - -commit e5e0880d6761bac2482ec5e1af44a89c9e0b10d9 -Author: David Reveman -Date: Tue Jan 25 12:25:29 2005 +0000 - - Update mail address - - AUTHORS | 2 +- - ChangeLog | 4 ++++ - src/cairo-glitz-surface.c | 2 +- - src/cairo_glitz_surface.c | 2 +- - 4 files changed, 7 insertions(+), 3 deletions(-) - -commit b35c7a3ee5df3cac5d5060df6f251947f168e8ec -Author: David Reveman -Date: Tue Jan 25 12:21:32 2005 +0000 - - Track changes to glitz - - ChangeLog | 4 +++ - configure.in | 2 +- - src/cairo-glitz-surface.c | 67 ++++++++++++++++++++------------------------- - src/cairo_glitz_surface.c | 67 ++++++++++++++++++++------------------------- - 4 files changed, 65 insertions(+), 75 deletions(-) - -commit 71f65cbad209bce433f8aca4809a99216856e53d -Author: David Reveman -Date: Tue Jan 25 12:11:02 2005 +0000 - - Add missing include directive so xcb backend compile again - - ChangeLog | 5 +++++ - src/cairo-xcb-surface.c | 1 + - src/cairo_xcb_surface.c | 1 + - 3 files changed, 7 insertions(+), 0 deletions(-) - -commit b321202d18443e4140093c41a17ac0bf10f9059f -Author: Carl Worth -Date: Tue Jan 25 11:48:59 2005 +0000 - - Fixed rounding of glyph positioning. - - ChangeLog | 5 +++++ - src/cairo-ft-font.c | 6 +++--- - src/cairo_ft_font.c | 6 +++--- - 3 files changed, 11 insertions(+), 6 deletions(-) - -commit a812c7a06606f6c6b050fca6ad86a7b94564c1a2 -Author: Owen Taylor -Date: Tue Jan 25 10:56:50 2005 +0000 - - Chec pdf_font for NULL, not font. - - ChangeLog | 5 +++++ - src/cairo-pdf-surface.c | 2 +- - src/cairo_pdf_surface.c | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit 55a8b62ec4650c9e730a431880b2d68614275d57 -Author: Alexander Larsson -Date: Tue Jan 25 06:50:33 2005 +0000 - - Fix typo that made cairo-ft.h not get installed - - ChangeLog | 5 +++++ - src/Makefile.am | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit fe0c66a821591b15de0ed4f6781243ed9beb4f55 -Author: Carl Worth -Date: Mon Jan 24 09:17:10 2005 +0000 - - Add Shawn T. Amundson, Calum Robinson, and Owen Taylor. - - AUTHORS | 7 +++++-- - ChangeLog | 2 ++ - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit e2afdd14588f1352e35777eb1d817f3559b297bd -Author: Carl Worth -Date: Mon Jan 24 09:10:51 2005 +0000 - - Conditionally install header files only for backends that are compiled. Thanks to Shawn T. Amundson . - - ChangeLog | 4 +++ - src/Makefile.am | 58 ++++++++++++++++++++++++++++++++---------------------- - 2 files changed, 38 insertions(+), 24 deletions(-) - -commit 31f05254ffabd660b27b26af082ca75ac724c9d7 -Author: Carl Worth -Date: Mon Jan 24 09:01:52 2005 +0000 - - Qualify color argument as const. Closes bug #2336. - - ChangeLog | 6 ++++++ - src/cairo-color.c | 3 ++- - src/cairo_color.c | 3 ++- - src/cairoint.h | 3 ++- - 4 files changed, 12 insertions(+), 3 deletions(-) - -commit c58f6a4bcf20b1f2a50629100457e4025a7de19b -Author: Dave Beckett -Date: Sun Jan 23 15:16:57 2005 +0000 - - Protect switch on hintstyle with #ifdef FC_HINT_STYLE. - - ChangeLog | 5 +++++ - src/cairo-ft-font.c | 8 ++++---- - src/cairo_ft_font.c | 8 ++++---- - 3 files changed, 13 insertions(+), 8 deletions(-) - -commit 7114a77ce1f25c4e4cd6840daf49ce34cdc11826 -Author: Carl Worth -Date: Sun Jan 23 12:49:56 2005 +0000 - - Add instructions for handling the new -head suffix of CAIRO_VERSION at release-time. - Append -head to CAIRO_VERSION to indicate state between snapshots. - - ChangeLog | 12 ++++++++++++ - RELEASING | 24 +++++++++++++++--------- - configure.in | 2 +- - src/cairo-gstate.c | 6 ++++++ - src/cairo_gstate.c | 6 ++++++ - 5 files changed, 40 insertions(+), 10 deletions(-) - -commit 7275be538b37c0e102f62b98e6e8489eaf64e715 -Author: Owen Taylor -Date: Fri Jan 21 15:43:55 2005 +0000 - - Call _cairo_gstate_ensure_font(). Don't reference the returned font. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 8 ++++++-- - src/cairo_gstate.c | 8 ++++++-- - 3 files changed, 17 insertions(+), 4 deletions(-) - -commit e613961f948495b06e60542dee85d513cf459ad2 -Author: Owen Taylor -Date: Fri Jan 21 15:31:15 2005 +0000 - - Make dependence on FC_HINT_STYLE conditional. (reported by Abraham Egnor) - Use FT_LOAD_MONOCHROME if FT_LOAD_TARGET_MONO isn't defined for compatibility with older FreeType. - - ChangeLog | 9 +++++++++ - src/cairo-ft-font.c | 12 ++++++++++++ - src/cairo_ft_font.c | 12 ++++++++++++ - 3 files changed, 33 insertions(+), 0 deletions(-) - -commit 97424a3c2a4172dd3a686d0d41f7c7781b670814 -Author: Owen Taylor -Date: Fri Jan 21 14:33:47 2005 +0000 - - Change cairo_font_t to refer to a font scaled to a particular output device resolution. - src/cairoint.h src/cairo_font.c src/cairo_ft_font.c src/cairo_xlib_surface.c src/cairo_pdf_surface.c src/cairo_gstate.c src/cairo.c: Switch many internal methods from handling cairo_unscaled_font_t and cairo_font_scale_t pairs to handling cairo_font_t. - src/cairo-ft-private.h src/cairo_ft_fontc: Add some internal interfaces for use by the FreeType backend. - Clear the gstate's current font when the transform or target surface changes. - src/cairo.h src/cairo_ft_font.c: Rename cairo_ft_font_pattern to cairo_ft_font_get_pattern(). - src/cairo.h src/cairo_ft_font.c: Make cairo_ft_font_create() and cairo_ft_font_create_for_ft_face() take a font scale; make the latter take load_flags for FT_Load_Glyph() as well. Change cairo_ft_font_face() to Xft-style cairo_ft_font_lock_face, cairo_ft_font_unlock_face. - Remove the name/slant/weight=>unscaled font cache, it didn't work with the new cairo_font_t setup. If it turns out to be needed, it can be added back in some other form. - src/cairoint.h src/cairo_font.c: Add a 'flags' field to cairo_glyph_cache_key_t, we use it for load flags with freetype backend. - Switch the caching to be from resolved fontconfig pattern => file; keep only a fixed number of FT_Face objects open at once, similar to FreeType. - src/cairo_gstate.c src/cairoint.h: Add public cairo_font_glyph_extents, use it to implement _cairo_gstate_glyph_extents(). - Add refcounting for glyph cache elements; there was an bug where elements got ejected from the cache and freed before they could be used. - src/cairoint.h src/cairo_cache.c (_cairo_cache_random_entry()) New function to return a random entry in the cache matching a predicate; reuse the internals for the previous _random_live_entry(). - src/cairoint.h src/cairo_cache.c (_cairo_cache_lookup()): Add an optional created_entry return value. - src/cairo_ft_font.c src/cairo_xlib_surface.c: Adapt to _cairo_cache_lookup() change. - Support max_memory == 0 to indicate an unbounded cache. - src/cairoint.h src/cairo_cache.c (_cairo_cache_remove()): Add a function to manually remove entries from the cache. - Update for changes, document cairo_matrix_t, cairo_glyph_t, etc. - src/cairo.h src/cairo-atsui.h src/cairo-ft.h src/cairo-glitz.h src/cairo-pdf.h src/cairo-png.h src/cairo-ps.h src/cairo-quartz.h src/cairo-xcb.h src/cairo-xlib.h: Add CAIRO_BEGIN/END_DECLS for extern "C", use it on all public headers. Move header guards outermost. - Fix encoding. - - ChangeLog | 74 ++ - doc/reference/doc.xml | 21 +- - doc/reference/xml/cairo_current_font.xml | 4 +- - doc/reference/xml/cairo_font_glyph_extents.xml | 72 ++ - doc/reference/xml/cairo_font_t.xml | 25 + - doc/reference/xml/cairo_ft_font_create.xml | 59 ++ - .../xml/cairo_ft_font_create_for_ft_face.xml | 69 ++ - doc/reference/xml/cairo_ft_font_get_pattern.xml | 49 + - doc/reference/xml/cairo_ft_font_lock_face.xml | 61 ++ - doc/reference/xml/cairo_ft_font_unlock_face.xml | 44 + - doc/reference/xml/cairo_glyph_t.xml | 62 ++ - doc/reference/xml/cairo_matrix_t.xml | 24 +- - doc/reference/xml/cairo_set_font.xml | 16 +- - doc/reference/xml/cairo_show_glyphs.xml | 2 +- - doc/reference/xml/cairo_text_extents_t.xml | 49 +- - src/cairo-atsui.h | 9 +- - src/cairo-cache.c | 104 ++- - src/cairo-font.c | 410 +++----- - src/cairo-ft-font.c | 1047 ++++++++++++-------- - src/cairo-ft-private.h | 63 ++ - src/cairo-ft.h | 31 +- - src/cairo-glitz.h | 9 +- - src/cairo-gstate.c | 323 +++---- - src/cairo-hash.c | 104 ++- - src/cairo-pdf-surface.c | 63 +- - src/cairo-pdf.h | 9 +- - src/cairo-png.h | 11 +- - src/cairo-ps.h | 9 +- - src/cairo-quartz-surface.c | 2 +- - src/cairo-quartz.h | 9 +- - src/cairo-xcb.h | 9 +- - src/cairo-xlib-surface.c | 55 +- - src/cairo-xlib.h | 9 +- - src/cairo.h | 29 +- - src/cairo_cache.c | 104 ++- - src/cairo_font.c | 410 +++----- - src/cairo_ft_font.c | 1047 ++++++++++++-------- - src/cairo_gstate.c | 323 +++---- - src/cairo_pdf_surface.c | 63 +- - src/cairo_quartz_surface.c | 2 +- - src/cairo_xlib_surface.c | 55 +- - src/cairoint.h | 157 ++-- - 42 files changed, 3118 insertions(+), 1979 deletions(-) - -commit 90689370267f3c02d6be62e3e8c85cccdad6f577 -Author: Carl Worth -Date: Fri Jan 21 12:48:11 2005 +0000 - - Increment CAIRO_VERSION to 0.3.0 - Add notes for snapshot 0.3.0 - - ChangeLog | 6 ++- - NEWS | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 2 +- - 3 files changed, 176 insertions(+), 3 deletions(-) - -commit f697490665735c5b5a469b81b16e8075eb355ba7 -Author: Carl Worth -Date: Fri Jan 21 11:27:56 2005 +0000 - - Update reference images for new rasterization in libpixman 0.1.3. - - ChangeLog | 5 +++++ - test/fill-rule-ref.png | Bin 1983 -> 1979 bytes - test/fill_rule-ref.png | Bin 1983 -> 1979 bytes - test/leaky-polygon-ref.png | Bin 264 -> 255 bytes - test/leaky_polygon-ref.png | Bin 264 -> 255 bytes - test/line-width-ref.png | Bin 167 -> 171 bytes - test/line_width-ref.png | Bin 167 -> 171 bytes - 7 files changed, 5 insertions(+), 0 deletions(-) - -commit 1463fbb6c90a9a6faff0d4d1b65d375e416dafd4 -Author: Carl Worth -Date: Fri Jan 21 11:20:55 2005 +0000 - - Update since directory changed after server compromise. - - ChangeLog | 5 +++++ - Makefile.am | 2 +- - RELEASING | 6 +++--- - 3 files changed, 9 insertions(+), 4 deletions(-) - -commit fdf1ed1185916b77dc36564f637ebe147acb537d -Author: Carl Worth -Date: Fri Jan 21 11:18:46 2005 +0000 - - Fix typo - - pixman/RELEASING | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 886d457c2f16faa0f570fcf98680df5e5123a641 -Author: Carl Worth -Date: Fri Jan 21 11:16:03 2005 +0000 - - Fix snapshot URL in description - - pixman/RELEASING | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4b072cc7d266a059871bb76043fa8d0394410671 -Author: Carl Worth -Date: Fri Jan 21 11:10:07 2005 +0000 - - Add notes for snapshot 0.1.3. - Increment version to 0.1.3 - Add reminder to diff pixman.h to look for API changes since the last snapshot. - - pixman/ChangeLog | 7 +++++++ - pixman/NEWS | 22 ++++++++++++++++++++++ - pixman/RELEASING | 8 +++++++- - pixman/configure.in | 2 +- - 4 files changed, 37 insertions(+), 2 deletions(-) - -commit c3e41a966c5fb0b503dfba48f13a585509c62530 -Author: Carl Worth -Date: Fri Jan 21 10:59:33 2005 +0000 - - Add missing files to satisfy make distcheck. - - pixman/ChangeLog | 3 +++ - pixman/src/Makefile.am | 2 ++ - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 1c4286c2a8323fdadc5112d25acf3cf7ba0d32da -Author: Carl Worth -Date: Fri Jan 21 10:54:51 2005 +0000 - - Update for changed www directory on server. - - pixman/ChangeLog | 3 +++ - pixman/Makefile.am | 2 +- - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit fd8974f2adfcb46870dec15d4a90763a89ede42a -Author: Carl Worth -Date: Fri Jan 21 10:52:55 2005 +0000 - - Add pixman-xserver-compat.h, (that was supposed to go in a couple of commits ago). - - pixman/ChangeLog | 3 + - pixman/src/pixman-xserver-compat.h | 98 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 101 insertions(+), 0 deletions(-) - -commit dfa7b94c9c9aea61a1ae786139e21152d6e8e34a -Author: Carl Worth -Date: Fri Jan 21 10:38:42 2005 +0000 - - Avoid buffer ovverrun when trapezoid's right edge is on a pixel boundary. - - pixman/ChangeLog | 3 +++ - pixman/src/fbedgeimp.h | 10 +++++++--- - 2 files changed, 10 insertions(+), 3 deletions(-) - -commit 13225d4d3baa78b3020586c6e9b4601111792903 -Author: Carl Worth -Date: Fri Jan 21 10:26:28 2005 +0000 - - Switch to use new fbRasterizeTrapezoid. Gut old IcRasterizeTrapezoid implementation. Remove lots of code, (and all the bugs with it). - Replace IcRasterizeTrapezoid with fbRasterizeTrapezoid. Add a couple of missing typedefs. - Minor changes to allow things to compile within libpixman tree, (replace xserver include directives with pixman-xserver-compat.h and sprinkle a few const qualifiers). - Add sources for new point-sampling rasterization. - - pixman/ChangeLog | 19 + - pixman/src/Makefile.am | 4 + - pixman/src/fbedge.c | 12 +- - pixman/src/fbtrap.c | 20 +- - pixman/src/icint.h | 18 +- - pixman/src/ictransform.c | 2 - - pixman/src/ictrap.c | 1337 +--------------------------------------------- - pixman/src/ictri.c | 4 +- - pixman/src/renderedge.c | 8 +- - pixman/src/renderedge.h | 6 +- - 10 files changed, 53 insertions(+), 1377 deletions(-) - -commit c64e2ccd06edfc9b148ca620d218f84c7bb93378 -Author: Carl Worth -Date: Fri Jan 21 09:26:44 2005 +0000 - - Merge in changes from xserver, (mostly just whitespace). - - pixman/ChangeLog | 5 +++++ - pixman/src/fbtrap.c | 21 ++++++++++++--------- - 2 files changed, 17 insertions(+), 9 deletions(-) - -commit d466c33d1df2a30aa8a8c38f2b9861cb36bf3c1e -Author: Carl Worth -Date: Thu Jan 20 20:45:38 2005 +0000 - - Add a bunch of missing include directives, (now that cairo.h has been cleaned up). - - ChangeLog | 7 ++++++- - test/cairo-test.c | 4 ++++ - test/cairo_test.c | 4 ++++ - 3 files changed, 14 insertions(+), 1 deletions(-) - -commit da1b3c147b9151cef55f0e1c567c897d066bf594 -Author: Carl Worth -Date: Thu Jan 20 20:41:40 2005 +0000 - - Created new public header cairo-atsui.h. - Build fixes for Quartz backend courtesy of Geoff Norton : - Fix check for atsui font backend. - Add conditional compilation for cairo_atsui_font.c and cairo_ft_font.c. - Add missing include of cairo-quartz.h. - Add include of Carbon/Carbon.h. - Advertise availability of Quartz surface. - Install cairo-quartz.h, and conditionally compile cairo_quartz_surface.c. - Add autofoo checks to detect quartz backend. - - ChangeLog | 26 ++++++++++++++++++++++++++ - configure.in | 33 ++++++++++++++++++++++++++++++--- - 2 files changed, 56 insertions(+), 3 deletions(-) - -commit 0ad3789985161fe0fe9908ce993aa7ac2d95e8c4 -Author: Carl Worth -Date: Thu Jan 20 20:36:25 2005 +0000 - - Created new public header cairo-atsui.h. - Build fixes for Quartz backend courtesy of Geoff Norton : - Fix check for atsui font backend. - Add conditional compilation for cairo_atsui_font.c and cairo_ft_font.c. - Add missing include of cairo-quartz.h. - Add include of Carbon/Carbon.h. - Advertise availability of Quartz surface. - Install cairo-quartz.h, and conditionally compile cairo_quartz_surface.c. - Add autofoo checks to detect quartz backend. - - src/Makefile.am | 18 +++++++++++++++- - src/cairo-atsui-font.c | 13 ++++++----- - src/cairo-atsui.h | 50 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-features.h.in | 2 + - src/cairo-quartz-surface.c | 7 +----- - src/cairo-quartz.h | 2 + - src/cairo_atsui_font.c | 13 ++++++----- - src/cairo_quartz_surface.c | 7 +----- - 8 files changed, 87 insertions(+), 25 deletions(-) - -commit b646ecfe08601af5587b0f3e10e0bf2e62e355c6 -Author: Carl Worth -Date: Thu Jan 20 08:28:54 2005 +0000 - - Track various renamings. - Insert new includes for backend-specific header files. - Remove redundant include of cairo-features.h. - Rename header-exclusion macro from _CAIRO_H_ to CAIRO_H. Remove platform-specific grubbing for cairo-features.h and pixman.h in odd places. - Remove all backend-specific prototypes, (as they are now in their own header files). - Remove deprecated - Remove printf. - Convert to utf-8. Use the proper name for multiple-header exclusion (CAIRO_FEATURES_H). Track rename of FREETYPE_FONT_FEATURE to FT_FONT_FEATURE. - Split cairo.h up into cairo.h, cairo-ft.h, cairo-glitz.h, cairo-pdf.h, cairo-png.h, cairo-ps.h, cairo-xcb.h, cairo-xlib.h. Update for rename of cairo_wideint.h to cairo-wideint.h. - Rename CAIRO_HAS_FREETYPE_FONT to CAIRO_HAS_FT_FONT, (to match cairo_ft_font functions and cairo-ft.h). - Update for public header files now in /cairo. - - ChangeLog | 45 +++++++- - cairo.pc.in | 3 +- - configure.in | 10 +- - src/Makefile.am | 27 +++-- - src/cairo-features.h.in | 8 +- - src/cairo-ft-font.c | 2 + - src/cairo-ft.h | 62 ++++++++++ - src/cairo-glitz-surface.c | 1 + - src/cairo-glitz.h | 53 ++++++++ - src/cairo-pdf-surface.c | 4 + - src/cairo-pdf.h | 62 ++++++++++ - src/cairo-png.h | 59 +++++++++ - src/cairo-ps-surface.c | 1 + - src/cairo-ps.h | 63 ++++++++++ - src/cairo-quartz.h | 56 +++++++++ - src/cairo-xcb.h | 54 +++++++++ - src/cairo-xlib-surface.c | 1 + - src/cairo-xlib.h | 71 +++++++++++ - src/cairo.c | 2 - - src/cairo.h | 197 +----------------------------- - src/cairo_ft_font.c | 2 + - src/cairo_gdip_font.cpp | 1 - - src/cairo_gdip_surface.cpp | 1 - - src/cairo_glitz_surface.c | 1 + - src/cairo_pdf_surface.c | 4 + - src/cairo_png_surface.c | 1 + - src/cairo_ps_surface.c | 1 + - src/cairo_wideint.h | 285 -------------------------------------------- - src/cairo_xlib_surface.c | 1 + - src/cairoint.h | 6 +- - 30 files changed, 580 insertions(+), 504 deletions(-) - -commit 68d5ba661d5d0ba0a604a3c947f43f629a6a6bb9 -Author: Carl Worth -Date: Wed Jan 19 12:12:42 2005 +0000 - - Allow NULL values for return pointers so that the user can easily get partial results from cairo_matrix_get_affine, cairo_current_point, and cairo_current_color_rgb as needed. - - ChangeLog | 7 +++++++ - src/cairo-color.c | 9 ++++++--- - src/cairo-gstate.c | 6 ++++-- - src/cairo-matrix.c | 17 ++++++++++++++--- - src/cairo_color.c | 9 ++++++--- - src/cairo_gstate.c | 6 ++++-- - src/cairo_matrix.c | 17 ++++++++++++++--- - 7 files changed, 55 insertions(+), 16 deletions(-) - -commit 429c1f42b5942ebd8b3170e462418880c7cf5e2e -Author: Carl Worth -Date: Wed Jan 19 11:39:06 2005 +0000 - - Fix int* vs. size_t* confusion, (currently in favor of int* but only because that's easier to implement). Thanks to John Ellson . Closes bug #2328. - - ChangeLog | 7 +++++++ - src/cairo-ft-font.c | 4 ++-- - src/cairo_ft_font.c | 4 ++-- - 3 files changed, 11 insertions(+), 4 deletions(-) - -commit 6fb833a84c8cbdba299f3ba4f23e8c4434491cad -Author: Kristian Høgsberg -Date: Wed Jan 19 08:03:53 2005 +0000 - - Add byteswap macros missing for bigendian architectures. - - ChangeLog | 5 +++++ - src/cairo-pdf-surface.c | 2 ++ - src/cairo_pdf_surface.c | 2 ++ - 3 files changed, 9 insertions(+), 0 deletions(-) - -commit cc58bc3b9b6f46d7953f9a088208f6df1c11a497 -Author: Carl Worth -Date: Wed Jan 19 07:55:28 2005 +0000 - - Remove fill_rule and leaky_polygon from expected failures list. Both of these bugs have fixes, (fill_rule is fixed by reverting cairo_traps.c to 1.16, and leaky_polygon is fixed in a newer libpixman). - - ChangeLog | 5 +++++ - test/Makefile.am | 2 -- - 2 files changed, 5 insertions(+), 2 deletions(-) - -commit 27532eda85897f2b2f99d17108174c479a47cf5c -Author: Carl Worth -Date: Wed Jan 19 07:11:14 2005 +0000 - - Remove const qualifiers from the header file as well. - - ChangeLog | 3 ++ - src/cairo-wideint.h | 74 +++++++++++++++++++++++++------------------------- - src/cairo_wideint.h | 74 +++++++++++++++++++++++++------------------------- - 3 files changed, 77 insertions(+), 74 deletions(-) - -commit 8605b6ae5a0035580683488ba8057f7877f74a9f -Author: Carl Worth -Date: Wed Jan 19 07:07:00 2005 +0000 - - Remove useless const qualifier from functions returning simple values, (quiets the warning in gcc4). Thanks to John Ellson . Closes bug #2299. - - ChangeLog | 5 +++ - src/cairo-wideint.c | 82 +++++++++++++++++++++++++------------------------- - src/cairo_wideint.c | 82 +++++++++++++++++++++++++------------------------- - 3 files changed, 87 insertions(+), 82 deletions(-) - -commit f493efa92d1e945cfb02b4a83b87c48c2788ea5d -Author: Carl Worth -Date: Wed Jan 19 05:32:32 2005 +0000 - - Add bugs on cairo_surface_create_for_image, bad names for cairo_font_set_transform and cairo_font_current_transform, segfault on AMD64. - - BUGS | 16 +++++++++++++++- - ChangeLog | 7 +++++++ - 2 files changed, 22 insertions(+), 1 deletions(-) - -commit d894196840aa8363de6f167e6a2b4d59ad9cf977 -Author: Carl Worth -Date: Tue Jan 18 11:54:23 2005 +0000 - - Add pristine files from the X server containing Keith's newer point-sampling implementation of trapezoid rasterization. The plan is to munge these files as little as possible to make them work within libpixman, (so that it will be easier to share patches between libpixman and the X server). - - pixman/ChangeLog | 13 +++ - pixman/src/fbedge.c | 134 +++++++++++++++++++++++++++ - pixman/src/fbedgeimp.h | 134 +++++++++++++++++++++++++++ - pixman/src/fbtrap.c | 235 +++++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/renderedge.c | 197 +++++++++++++++++++++++++++++++++++++++ - pixman/src/renderedge.h | 120 ++++++++++++++++++++++++ - 6 files changed, 833 insertions(+), 0 deletions(-) - -commit e1eec5cf0ef9efa2358b27cdb61a45987ce290e4 -Author: Kristian Høgsberg -Date: Mon Jan 17 14:59:49 2005 +0000 - - Fix double free in error path. (cairo_pdf_ft_font_create): Reference the unscaled font to keep the FT_Face around. (cairo_pdf_ft_font_generate): Initialize end to avoid compiler warning; bail out if table write fails. Fixes from Owen. - - ChangeLog | 9 +++++++++ - src/cairo-pdf-surface.c | 26 ++++++++++++++++---------- - src/cairo_pdf_surface.c | 26 ++++++++++++++++---------- - 3 files changed, 41 insertions(+), 20 deletions(-) - -commit 2c6939b7acb3dc931fd723eee84f51a5a692f444 -Author: Kristian Høgsberg -Date: Mon Jan 17 09:40:00 2005 +0000 - - Add preliminary text support, including support for truetype font subsetting. - Change type of 'surface' argument in show_glyphs to void * as it is for all other surface virtual functions. - Update accordingly. - Add check for endianess. - Fix bug in array growing loop. (_cairo_array_append): Accept NULL for elements argument, in which case we just allocate space in the array. - - ChangeLog | 17 + - configure.in | 1 + - src/cairo-array.c | 18 +- - src/cairo-pdf-surface.c | 894 ++++++++++++++++++++++++++++++++++++++++++++-- - src/cairo-xlib-surface.c | 10 +- - src/cairo_array.c | 18 +- - src/cairo_pdf_surface.c | 894 ++++++++++++++++++++++++++++++++++++++++++++-- - src/cairo_xlib_surface.c | 10 +- - src/cairoint.h | 7 +- - 9 files changed, 1798 insertions(+), 71 deletions(-) - -commit be7b745a43b4cbfec7e5ca24185f32ee83856163 -Author: Kristian Høgsberg -Date: Mon Jan 17 09:18:37 2005 +0000 - - Take image_rotate-ref.png out of EXTRA_DIST until we can actually render it correctly. (XFAIL_TESTS): Update with new known bugs. - Add font backend selection options. - - ChangeLog | 11 ++++++ - configure.in | 89 ++++++++++++++++++++++++++++++++++------------ - src/cairo-features.h.in | 4 ++ - src/cairo.h | 4 +- - src/cairoint.h | 8 +++-- - test/Makefile.am | 15 +++++--- - 6 files changed, 97 insertions(+), 34 deletions(-) - -commit 0e2e28c71726a5346ec13a6a5681421d1929628f -Author: Marco Pesenti Gritti -Date: Sun Jan 16 08:35:14 2005 +0000 - - Add native Mac OS X support. - - src/cairo-atsui-font.c | 806 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-quartz-surface.c | 397 ++++++++++++++++++++++ - src/cairo.h | 32 ++- - src/cairo_atsui_font.c | 806 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_quartz_surface.c | 397 ++++++++++++++++++++++ - src/cairoint.h | 21 +- - 6 files changed, 2455 insertions(+), 4 deletions(-) - -commit 4358135bc9ef8da04906f7491008231608f837c2 -Author: John Ellson -Date: Sat Jan 15 10:53:13 2005 +0000 - - Was using the wrong extents variable. - reviewed by: Keith Packard - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 4 ++-- - src/cairo_gstate.c | 4 ++-- - 3 files changed, 11 insertions(+), 4 deletions(-) - -commit b0de4a7d094e16fda4e9124caa867df78b607d8c -Author: Carl Worth -Date: Thu Jan 13 18:08:57 2005 +0000 - - (IcRasterizeTrapezoid): Fix the above correction so that it doesn't force 0 alpha when the left edge is positioned above but slopes so as to contain some of the pixel. - - pixman/ChangeLog | 3 +++ - pixman/src/ictrap.c | 8 ++++++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit 46baad20ee702ab20903dc48db6ec984604e405c -Author: Carl Worth -Date: Thu Jan 13 14:53:13 2005 +0000 - - Force alpha to 0 when the left edge is entirely above top. (This is a workaround for some bizarre edge effects in the current algorithm). - - pixman/ChangeLog | 6 ++++++ - pixman/src/ictrap.c | 14 ++++++++++++-- - 2 files changed, 18 insertions(+), 2 deletions(-) - -commit 3016995b0d391d233a951db07cbcce49144aef2c -Author: Carl Worth -Date: Thu Jan 13 14:50:35 2005 +0000 - - test/Makefile.am - Add leaky_polygon test for trapezoid rasterization corner case. - - ChangeLog | 5 +++ - test/.cvsignore | 1 + - test/Makefile.am | 3 ++ - test/leaky-polygon-ref.png | Bin 0 -> 264 bytes - test/leaky-polygon.c | 82 ++++++++++++++++++++++++++++++++++++++++++++ - test/leaky_polygon-ref.png | Bin 0 -> 264 bytes - test/leaky_polygon.c | 82 ++++++++++++++++++++++++++++++++++++++++++++ - 7 files changed, 173 insertions(+), 0 deletions(-) - -commit 3ae8c1ca654807a1f76b18931a29425f59c77436 -Author: David Reveman -Date: Thu Jan 13 14:48:15 2005 +0000 - - Replace struct cairo_surface_backend with cairo_surface_backend_t - - ChangeLog | 5 +++++ - src/cairo-xcb-surface.c | 2 +- - src/cairo_xcb_surface.c | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit a2af89b04a53e2f2fb4a9d7ea4ff879e80d20cd7 -Author: Carl Worth -Date: Thu Jan 13 06:50:23 2005 +0000 - - Replace all structure tags to have _ prefix. struct cairo_foo -> struct _cairo_foo Also, prefer cairo_foo_t over struct _cairo_foo in .c files. - - ChangeLog | 11 ++++++ - src/cairo-font.c | 9 ++--- - src/cairo-ft-font.c | 6 ++-- - src/cairo-glitz-surface.c | 4 +- - src/cairo-xlib-surface.c | 4 +- - src/cairo.h | 10 +++--- - src/cairo_font.c | 9 ++--- - src/cairo_ft_font.c | 6 ++-- - src/cairo_glitz_surface.c | 4 +- - src/cairo_xlib_surface.c | 4 +- - src/cairoint.h | 84 ++++++++++++++++++++++---------------------- - 11 files changed, 80 insertions(+), 71 deletions(-) - -commit 5235dbb80f966acf8d4fe4bdf75766803824e7af -Author: Carl Worth -Date: Wed Jan 12 14:40:14 2005 +0000 - - A NULL cairo_t * is not sane. - Add freetype flags so that things work with freetype in a non-standard location, (a little extra work here since freetype doesn't use pkg-config). - Add several items culled from recent mailing list discussions. - Add bugs on cache locking and surface pattern scaling. - - BUGS | 7 +++++++ - ChangeLog | 16 ++++++++++++++++ - TODO | 21 +++++++++++++++++++++ - cairo.pc.in | 4 ++-- - src/cairo.c | 3 +++ - 5 files changed, 49 insertions(+), 2 deletions(-) - -commit 4796dc0b26d5f56eecc4e208afc6b99ee4a7483e -Author: Carl Worth -Date: Wed Jan 12 14:38:22 2005 +0000 - - Add big_star_path which shows we still have fill bugs, (even now that little_star_path is working). - - test/fill-rule-ref.png | Bin 408 -> 1983 bytes - test/fill-rule.c | 58 ++++++++++++++++++++++++++++++++++++++++------- - test/fill_rule-ref.png | Bin 408 -> 1983 bytes - test/fill_rule.c | 58 ++++++++++++++++++++++++++++++++++++++++------- - 4 files changed, 98 insertions(+), 18 deletions(-) - -commit 72832b97606066681b640a7b7fda9fc434fd7e4c -Author: Keith Packard -Date: Tue Jan 11 14:52:16 2005 +0000 - - Scale factors shouldn't include mirroring. - int32x32_64_mul and int64x64_128_mul are different from their unsigned compatriots - - ChangeLog | 11 +++++++++++ - src/cairo-matrix.c | 5 +++++ - src/cairo-wideint.c | 28 +++++++++++++++++++++++++++- - src/cairo-wideint.h | 10 ++++------ - src/cairo_matrix.c | 5 +++++ - src/cairo_wideint.c | 28 +++++++++++++++++++++++++++- - src/cairo_wideint.h | 10 ++++------ - 7 files changed, 83 insertions(+), 14 deletions(-) - -commit 18680d494b7aa14ec1a8cfac602abdb993482266 -Author: Øyvind Kolås -Date: Tue Jan 11 13:50:13 2005 +0000 - - renamed CAIRO_COLOR_DEFAULT to CAIRO_COLOR_WHITE - - ChangeLog | 5 +++++ - src/cairo-color.c | 8 ++++---- - src/cairo_color.c | 8 ++++---- - 3 files changed, 13 insertions(+), 8 deletions(-) - -commit c7e80e6bffc43de0f0ffadb9f2b3037bd9b18954 -Author: Øyvind Kolås -Date: Tue Jan 11 13:36:41 2005 +0000 - - reverted accidental change - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 3 --- - src/cairo_xlib_surface.c | 3 --- - 3 files changed, 5 insertions(+), 6 deletions(-) - -commit 7dd4d7aad48ae1c454f28d0a61916ef833b5ef78 -Author: Øyvind Kolås -Date: Tue Jan 11 13:28:50 2005 +0000 - - changed default paint color to opaque black - - ChangeLog | 7 +++++++ - src/cairo-color.c | 4 ++-- - src/cairo-gstate.c | 2 +- - src/cairo-xlib-surface.c | 3 +++ - src/cairo_color.c | 4 ++-- - src/cairo_gstate.c | 2 +- - src/cairo_xlib_surface.c | 3 +++ - 7 files changed, 19 insertions(+), 6 deletions(-) - -commit ad2225c6f4f18570cbd5e4391788458533895bb8 -Author: Keith Packard -Date: Tue Jan 11 10:03:01 2005 +0000 - - Fix math library detection to use autotools helper - Remove cache memory usage assertions as single objects can be larger than the cache size - Decompose font matrix transformations into a couple of helper routines. Return all metrics in font space. - Eliminate compiler warning - Expect glyph metrics to be in font space. Compute text extents by fetching one glyph metric at a time, transforming to user space and computing the overall bounding box. - use 'sincos' where available. Scale factors now ensure the non-scale transform is area preserving. Scale factors requires another parameter to mark the fixed axis. - Change license to LGPL Mark int32x32_64_mul as broken (which it still is) - Ensure each glyph is located as close to the specified position as possible - interface change to _cairo_matrix_compute_scale_factors - - ChangeLog | 48 +++++++++++++ - cairo.pc.in | 4 +- - configure.in | 8 ++- - src/Makefile.am | 2 +- - src/cairo-cache.c | 6 +- - src/cairo-ft-font.c | 126 +++++++++++++++++++++++++++++------ - src/cairo-glitz-surface.c | 1 + - src/cairo-gstate.c | 164 ++++++++++++++++++++++++++++---------------- - src/cairo-hash.c | 6 +- - src/cairo-matrix.c | 51 +++++++++++--- - src/cairo-wideint.c | 46 ++++++++----- - src/cairo-wideint.h | 49 +++++++++----- - src/cairo-xlib-surface.c | 33 ++++++--- - src/cairo_cache.c | 6 +- - src/cairo_ft_font.c | 126 +++++++++++++++++++++++++++++------ - src/cairo_glitz_surface.c | 1 + - src/cairo_gstate.c | 164 ++++++++++++++++++++++++++++---------------- - src/cairo_matrix.c | 51 +++++++++++--- - src/cairo_wideint.c | 46 ++++++++----- - src/cairo_wideint.h | 49 +++++++++----- - src/cairo_xlib_surface.c | 33 ++++++--- - src/cairoint.h | 2 +- - 22 files changed, 733 insertions(+), 289 deletions(-) - -commit dc0d812f6c78bfc3e4cbf717cf09a4524d8f149c -Author: Carl Worth -Date: Fri Jan 7 12:14:40 2005 +0000 - - Restore extern tag for variable declarations, (accidentally removed when recently removing extern from function prototypes). - - pixman/ChangeLog | 7 +++++++ - pixman/src/icint.h | 2 +- - pixman/src/icrop.h | 2 +- - 3 files changed, 9 insertions(+), 2 deletions(-) - -commit a85013680566ec945a87dc49ea97d946a57b8c71 -Author: Kristian Høgsberg -Date: Thu Jan 6 23:20:07 2005 +0000 - - Add -lz to CAIRO_LIBS when compiling the PDF backend. - Don't use compressBound, since it's only available in zlib 1.2 and newer. - - ChangeLog | 8 ++++++++ - configure.in | 4 ++++ - src/cairo-pdf-surface.c | 8 +++++++- - src/cairo_pdf_surface.c | 8 +++++++- - 4 files changed, 26 insertions(+), 2 deletions(-) - -commit f4a51d915461b1ac6cb1183a428e7b3afa47ec2a -Author: Carl Worth -Date: Thu Jan 6 21:28:07 2005 +0000 - - Add Owen's new equation to fix clipping: ((src Op dest) In clip) Add (dest Out clip) - - ChangeLog | 5 +++++ - TODO | 20 +++++++++++++------- - 2 files changed, 18 insertions(+), 7 deletions(-) - -commit cf354e9924d8e36593ba1f441cd345703dc1ebcd -Author: Carl Worth -Date: Thu Jan 6 10:28:10 2005 +0000 - - Added cairo_show_surface_mask and note about clipping problems. - - ChangeLog | 1 + - TODO | 14 ++++++++++++++ - 2 files changed, 15 insertions(+), 0 deletions(-) - -commit a513fa18c7ff7c13f54a4098ba97cb1173b1e39d -Author: Carl Worth -Date: Thu Jan 6 08:51:48 2005 +0000 - - Added some TODO items from mailing list traffic. - - ChangeLog | 4 ++++ - TODO | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 34 insertions(+), 0 deletions(-) - -commit c9f545672a0a8a101c9979ab07085b019f55598a -Author: Kristian Høgsberg -Date: Wed Jan 5 17:46:31 2005 +0000 - - Implement image compression (taken from cairo_ps_surface.c). - - ChangeLog | 6 ++++- - src/cairo-pdf-surface.c | 62 +++++++++++++++++++++++++++++++++------------- - src/cairo_pdf_surface.c | 62 +++++++++++++++++++++++++++++++++------------- - 3 files changed, 93 insertions(+), 37 deletions(-) - -commit b1ec8ae13e9a42c6f9e102a73774dfaeb38dafda -Author: Kristian Høgsberg -Date: Wed Jan 5 14:29:31 2005 +0000 - - New PDF backend. - Add PDF surface constructors. - New file - generic array implementation. - Add cairo_array prototypes. - Add cairo_array.c and cairo_pdf_surface.c. - - AUTHORS | 1 + - ChangeLog | 8 + - configure.in | 17 + - src/Makefile.am | 6 + - src/cairo-array.c | 130 +++++ - src/cairo-features.h.in | 2 + - src/cairo-pdf-surface.c | 1314 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 25 + - src/cairo_array.c | 130 +++++ - src/cairo_gdip_surface.cpp | 4 + - src/cairo_pdf_surface.c | 1314 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 34 ++ - 12 files changed, 2985 insertions(+), 0 deletions(-) - -commit c90bd12ec7fdb548b58903f1f357840888b25871 -Author: Carl Worth -Date: Tue Jan 4 11:55:36 2005 +0000 - - Do nothing if src image has width or height == 0 to avoid potential divide-by-zero. - - pixman/ChangeLog | 5 +++++ - pixman/src/ic.c | 6 ++++++ - 2 files changed, 11 insertions(+), 0 deletions(-) - -commit 7a5a3cb208b079dfe453ad532a8939bed394cff9 -Author: Carl Worth -Date: Thu Dec 23 13:49:56 2004 +0000 - - Remove unused CAIRO_TRAPS_GROWTH_INC. - Resize arrays by doubling rather than by linear increments. - Add new bug exposed centi_unfinished.svg. - - BUGS | 7 +++++++ - ChangeLog | 10 ++++++++++ - TODO | 2 ++ - src/cairo-polygon.c | 5 ++--- - src/cairo-spline.c | 5 ++--- - src/cairo-traps.c | 2 -- - src/cairo_polygon.c | 5 ++--- - src/cairo_spline.c | 5 ++--- - src/cairo_traps.c | 2 -- - 9 files changed, 27 insertions(+), 16 deletions(-) - -commit f76d898cf1f14305e1cc984d0f2f40c831aa9014 -Author: Carl Worth -Date: Thu Dec 23 11:10:08 2004 +0000 - - Rename __internal_linkage to pixman_private. - Track rename to pixman_private and move it to before the function return value to quiet gcc warnings about visibility attribute ignored for non-class type. - - pixman/ChangeLog | 15 +++++++++++++++ - pixman/configure.in | 12 ++++++++++++ - pixman/src/Makefile.am | 2 +- - pixman/src/icimage.h | 24 ++++++++++++------------ - pixman/src/icint.h | 36 ++++++++++++++++++------------------ - pixman/src/icrop.h | 6 +++--- - pixman/src/slim_internal.h | 15 ++++++++------- - 7 files changed, 69 insertions(+), 41 deletions(-) - -commit cd21775ef9ee1c4ef2742abd50a6edc99bfbe639 -Author: Carl Worth -Date: Thu Dec 23 11:00:01 2004 +0000 - - Fix to actually call pixman_fill_rect_32bpp in the 32 bpp case. Thanks to TOKUNAGA Hiroyuki . (pixman_fill_rect_8bpp, pixman_fill_rect_32bpp): Fix typo in naming: bbp -> bpp. - - pixman/ChangeLog | 8 ++++++++ - pixman/src/icrect.c | 10 +++++----- - 2 files changed, 13 insertions(+), 5 deletions(-) - -commit e5d48545e027316e8ace74eada9e6b682d219595 -Author: Carl Worth -Date: Tue Dec 21 13:22:44 2004 +0000 - - Rename __internal_linkage to cairo_private and move it to the beginning of the line for function declarations. Also, drop unneeded "extern" from function declarations. - - ChangeLog | 8 + - src/cairo-wideint.h | 4 +- - src/cairo_wideint.h | 4 +- - src/cairoint.h | 417 +++++++++++++++++++++++++-------------------------- - 4 files changed, 220 insertions(+), 213 deletions(-) - -commit 1a21b8289fcbfb808852d152f13f0ff0da935c9c -Author: Carl Worth -Date: Tue Dec 21 13:14:45 2004 +0000 - - With thanks to Kristian Høgsberg : - Tag a few private functions/data that were missing __internal_linkage. - Mark cache backends as static. - - ChangeLog | 11 +++++++++++ - src/cairo-font.c | 6 ++---- - src/cairo-ft-font.c | 3 +-- - src/cairo-wideint.h | 20 ++++++++++---------- - src/cairo-xlib-surface.c | 2 +- - src/cairo_font.c | 6 ++---- - src/cairo_ft_font.c | 3 +-- - src/cairo_wideint.h | 20 ++++++++++---------- - src/cairo_xlib_surface.c | 2 +- - src/cairoint.h | 11 +++++------ - 10 files changed, 44 insertions(+), 40 deletions(-) - -commit 8ffb7df16c137a87b14039f6e17d090f9e73468f -Author: Carl Worth -Date: Tue Dec 21 12:57:33 2004 +0000 - - Change "head -1" to more standard "head -n 1". - - ChangeLog | 5 +++++ - autogen.sh | 6 +++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -commit 153bf60b3a68266196a007167fc44b7df66ee73b -Author: Alexander Larsson -Date: Mon Dec 20 12:22:50 2004 +0000 - - Fix bug in earlier change. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 4 +++- - src/cairo_xlib_surface.c | 4 +++- - 3 files changed, 11 insertions(+), 2 deletions(-) - -commit eecfec86f1646f185555fd1fb0a65a0a345fa49a -Author: Carl Worth -Date: Mon Dec 20 09:53:06 2004 +0000 - - Re-enabled __internal_linkage for all internal functions. Now avoid the warning by moving the * from the return type after the __internal_linkage macro. It looks awaful, but it keeps the compiler quiet. - - BUGS | 12 ------------ - ChangeLog | 7 +++++++ - src/cairoint.h | 34 ++++++++++++---------------------- - 3 files changed, 19 insertions(+), 34 deletions(-) - -commit 5c1c5e67dc18c3ad96a1d885b4c7331d48036158 -Author: Alexander Larsson -Date: Mon Dec 20 09:43:59 2004 +0000 - - Add _cairo_gstate_restore_external_state, _cairo_fixed_integer_floor and _cairo_fixed_integer_ceil. - Call _cairo_gstate_restore_external_state on restore. - Fix cache-misses. - Implement floor and ceil - Restore surface clip region on restroe. - (_calculate_region_for_intermediate_clip_surface), (_cairo_gstate_clip_and_composite_trapezoids), (_cairo_gstate_show_surface), (_cairo_gstate_show_glyphs): Create intermediate clip surfaces of the minimal required size. - - ChangeLog | 26 +++++ - src/cairo-cache.c | 10 +- - src/cairo-fixed.c | 18 +++ - src/cairo-gstate.c | 295 ++++++++++++++++++++++++++++++++++++++++------------ - src/cairo-hash.c | 10 +- - src/cairo.c | 6 + - src/cairo_cache.c | 10 +- - src/cairo_fixed.c | 18 +++ - src/cairo_gstate.c | 295 ++++++++++++++++++++++++++++++++++++++++------------ - src/cairoint.h | 10 ++ - 10 files changed, 554 insertions(+), 144 deletions(-) - -commit 8fe87a32a8bf4754a24e27aad74c1f1f5dbe9fc7 -Author: Carl Worth -Date: Mon Dec 20 08:58:38 2004 +0000 - - Add Alexander Larsson to AUTHORS list. - - AUTHORS | 1 + - ChangeLog | 2 ++ - 2 files changed, 3 insertions(+), 0 deletions(-) - -commit cc0c442d0480723d7c594b262962041f3a45817f -Author: Carl Worth -Date: Mon Dec 20 08:56:50 2004 +0000 - - Split off from _cairo_xlib_surface_create to avoid roundtrip when size is already known. (cairo_xlib_surface_create): Simplified to just call XGetGeometry that defer to _cairo_xlib_surface_create_with_size. Add comment about remaining roundtrip and possible plans to eliminate it later with a new interface requiring width/height. Thanks to Alexander Larsson . - - ChangeLog | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e3fe2138fe9b1446690e75ac87aba2b6aeacd3c0 -Author: Carl Worth -Date: Mon Dec 20 08:52:47 2004 +0000 - - Split off from _cairo_xlib_surface_create to avoid roundtrip when size is already known. (cairo_xlib_surface_create): Simplified to just call XGetGeometry that defer to _cairo_xlib_surface_create_with_size. Add comment about remaining roundtrip and possible plans to eliminate it later with a new interface requiring width/height. - - ChangeLog | 8 ++++++ - src/cairo-xlib-surface.c | 62 ++++++++++++++++++++++++++++++++++------------ - src/cairo_xlib_surface.c | 62 ++++++++++++++++++++++++++++++++++------------ - 3 files changed, 100 insertions(+), 32 deletions(-) - -commit 682202fdfa37c040c45ebb8b4191f2dfaca8f064 -Author: Carl Worth -Date: Mon Dec 20 08:08:29 2004 +0000 - - Disabled test that was killing my machine for some reason. Scary. - - ChangeLog | 5 +++++ - test/text-cache-crash.c | 20 ++++++++++++++++++++ - test/text_cache_crash.c | 20 ++++++++++++++++++++ - 3 files changed, 45 insertions(+), 0 deletions(-) - -commit 725d363877e5aaa49c3cc57efda621c0d4f8b1bd -Author: Carl Worth -Date: Mon Dec 20 07:38:38 2004 +0000 - - Change return value from cairo_status_t to cairo_int_status_t to match definition in cairo_surface_backend_t. - - ChangeLog | 5 +++++ - src/cairo-image-surface.c | 2 +- - src/cairo_image_surface.c | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit 31534f264cb5bb9cbbcf2cf82dfe9cb7ea021726 -Author: Carl Worth -Date: Mon Dec 20 07:32:45 2004 +0000 - - Add bug about gcc 3.4 warning: '__visibility__' attribute ignored on non-class types. - Remove __internal_linkage macro from all functions returning pointers to shut up warning from gcc 3.4. - - BUGS | 12 ++++++++++++ - ChangeLog | 8 ++++++++ - src/cairoint.h | 34 ++++++++++++++++++++++------------ - 3 files changed, 42 insertions(+), 12 deletions(-) - -commit e291f1d88254e69986aa6abe7c44540621fffeab -Author: Alexander Larsson -Date: Mon Dec 20 06:15:21 2004 +0000 - - Special case solid color rectangle fills. - - pixman/ChangeLog | 7 ++ - pixman/src/icrect.c | 174 ++++++++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 158 insertions(+), 23 deletions(-) - -commit a827069cc521935eb75211668f2331ac078ecb41 -Author: Carl Worth -Date: Fri Dec 17 13:23:32 2004 +0000 - - Fix to find reference images in local directory when run directly, (rather than by "make check"). - - ChangeLog | 3 +++ - test/cairo-test.c | 2 +- - test/cairo_test.c | 2 +- - 3 files changed, 5 insertions(+), 2 deletions(-) - -commit 5c33c78c8ca551abc5bf28bb7cd1c29d60687ed5 -Author: Carl Worth -Date: Fri Dec 17 11:31:05 2004 +0000 - - Add bug about invalidating font caches. - - BUGS | 4 ++++ - ChangeLog | 4 ++++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit e656b1f3ba99641e82e603fe5dcbc0c0cc8b8f31 -Author: Øyvind Kolås -Date: Mon Dec 6 00:01:45 2004 +0000 - - normalizing ChangeLog headers - - ChangeLog | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit cb0364a28c4b9c950bf736f1ef87e0d884f864a3 -Author: David Reveman -Date: Wed Dec 1 16:27:18 2004 +0000 - - Revert clipping changes - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 6 +++++- - src/cairo_gstate.c | 6 +++++- - 3 files changed, 16 insertions(+), 2 deletions(-) - -commit e5d50e075937c0d34808451ead09f8a5537f9f6d -Author: Carl Worth -Date: Mon Nov 29 18:25:23 2004 +0000 - - Fix typo: LPGL->LGPL. - - COPYING | 2 +- - ChangeLog | 2 ++ - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit d098370411b934ef60b99ca585ae7c100f98867d -Author: Carl Worth -Date: Mon Nov 29 14:11:26 2004 +0000 - - Remove unintentional copyright statement from user-generated output image. - - ChangeLog | 6 ++++++ - src/cairo-ps-surface.c | 2 -- - src/cairo_ps_surface.c | 2 -- - 3 files changed, 6 insertions(+), 4 deletions(-) - -commit 5c143241df52440ac9e1f9a7aa7b130bae622c5e -Author: Carl Worth -Date: Tue Nov 23 13:38:09 2004 +0000 - - Note that text_cache_crash is expected to fail. - Add test to demonstrate bug when item is too big for cache. - Really remove that refcount assertion this time. - - ChangeLog | 9 +++++++++ - src/cairo-cache.c | 3 --- - src/cairo-hash.c | 3 --- - src/cairo_cache.c | 3 --- - test/Makefile.am | 2 +- - test/text-cache-crash.c | 6 ++++++ - test/text_cache_crash.c | 6 ++++++ - 7 files changed, 22 insertions(+), 10 deletions(-) - -commit 7478ea5051306cf38ed29d9c9faa4c0263f413b8 -Author: Carl Worth -Date: Tue Nov 23 12:53:46 2004 +0000 - - Add note that bug has been fixed. (main): Instrumentation code for testing cache destruction. - Support tests that produce no output, (don't check image if (width,height) == (0,0)). - Add #include here rather than in multiple .c files. - Add const qualifier to static cache_arrangements table. (_cache_sane_state): Remove refcount assertion as it it false during the cairo_cache_destroy. (_cache_sane_state): #include moved up to cairoint.h (_entry_destroy): Fix bug in assertion (used_memory >= entry->memory), not >. (_cairo_cache_destroy): Fix timing of refcount decrement so that the destroy function actually works. - - BUGS | 7 +++++++ - ChangeLog | 21 +++++++++++++++++++++ - src/cairo-cache.c | 15 +++++++-------- - src/cairo-hash.c | 15 +++++++-------- - src/cairo_cache.c | 15 +++++++-------- - src/cairoint.h | 8 +++----- - test/cairo-test.c | 7 +++++++ - test/cairo_test.c | 7 +++++++ - test/text-cache-crash.c | 32 +++++++++++++++++++++++++++----- - test/text_cache_crash.c | 32 +++++++++++++++++++++++++++----- - 10 files changed, 120 insertions(+), 39 deletions(-) - -commit 78f1206bf8d71d56117fa5dee95b1314f7b1421c -Author: Carl Worth -Date: Sun Nov 14 10:07:54 2004 +0000 - - Don't destroy a NULL font. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 4 ++-- - src/cairo_gstate.c | 4 ++-- - 3 files changed, 9 insertions(+), 4 deletions(-) - -commit 2b76ec2d467ff3cf1f23431729ed3a8887cdfcdb -Author: Carl Worth -Date: Sat Nov 13 19:46:18 2004 +0000 - - Unconditionally destroy the old font, (otherwise, if the same font was selected twice in a row, a reference was lost to it, leading to assertion failures). - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 15 ++++----------- - src/cairo_gstate.c | 15 ++++----------- - 3 files changed, 15 insertions(+), 22 deletions(-) - -commit d29237e9c0a93595bbca4506f35cbaec33080198 -Author: Stuart Parmenter -Date: Fri Nov 12 14:46:23 2004 +0000 - - Added GDI+ backend to Cairo. - - ChangeLog | 4 + - src/cairo_gdip_font.cpp | 666 ++++++++++++++++++++++++++++++++++++++++ - src/cairo_gdip_surface.cpp | 724 ++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 1394 insertions(+), 0 deletions(-) - -commit b6a2e10301a6670b9678afcc7fda8c1826dd72c8 -Author: Carl Worth -Date: Fri Nov 12 06:12:20 2004 +0000 - - Move declarations above statements to satisfy pre-C99 compilers. Thanks to Michael Johnson . - - ChangeLog | 7 +++++++ - src/cairo-font.c | 5 ++--- - src/cairo-ft-font.c | 7 +++---- - src/cairo_font.c | 5 ++--- - src/cairo_ft_font.c | 7 +++---- - 5 files changed, 17 insertions(+), 14 deletions(-) - -commit 10deb4c4ae149cb3677f84aef0a8f72d4e919074 -Author: Carl Worth -Date: Thu Nov 11 12:15:12 2004 +0000 - - Added BUG entry - - BUGS | 5 +++++ - ChangeLog | 2 ++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit fe728e55323c999a97075e3f6906f978cda2f7ce -Author: Carl Worth -Date: Tue Nov 9 14:27:32 2004 +0000 - - (draw): Move x_off, y_off calculation outside of loop to emphasize loop-independence. - - test/text-rotate.c | 16 ++++++++-------- - test/text_rotate.c | 16 ++++++++-------- - 2 files changed, 16 insertions(+), 16 deletions(-) - -commit 9dacc32fbc4acd00795805244dd0d2a4faa48818 -Author: Carl Worth -Date: Tue Nov 9 14:22:37 2004 +0000 - - Increase size and increase number of different angles drawn. (draw): Fix broken usage of extents (missing bearings), add stroked bounding box (shifted out by 0.5 units to just abut the text), and increase position adjustments to make room for this larger box. - - ChangeLog | 9 +++++++++ - test/text-rotate.c | 32 ++++++++++++++++++-------------- - test/text_rotate.c | 32 ++++++++++++++++++-------------- - 3 files changed, 45 insertions(+), 28 deletions(-) - -commit a373313c736b61e00118afd8a631a99b852e3bde -Author: Dave Beckett -Date: Mon Nov 8 14:15:31 2004 +0000 - - Fix the bit that patch --reverse failed to do. "cvs diff -r1.256 ChangeLog" is just my change now. - - ChangeLog | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 128 insertions(+), 1 deletions(-) - -commit 186f14eeb627a047af495f68efd75480b52501fe -Author: Dave Beckett -Date: Mon Nov 8 14:08:16 2004 +0000 - - Restore the huge bit of ChangeLog I just deleted, then add my 6 lines. - - ChangeLog | 349 ++++++++++++++++++++++++++++++++++++++----------------------- - 1 files changed, 220 insertions(+), 129 deletions(-) - -commit 9d032378848167e7dc9a66e4f8c5423abe3798c7 -Author: Dave Beckett -Date: Mon Nov 8 13:33:42 2004 +0000 - - require libpixman 0.1.2 since src/cairo_glitz_surface.c depends on two new functions of 0.1.2 - pixman_format_get_masks and pixman_image_get_format - - ChangeLog | 226 ++-------------------------------------------------------- - configure.in | 2 +- - 2 files changed, 8 insertions(+), 220 deletions(-) - -commit ed08ea6bba0ad1528b0073e7ef6c4bfa7f6b5154 -Author: Graydon Hoare -Date: Fri Nov 5 10:57:50 2004 +0000 - - Change the signs of a variety of metrics, which were backwards. - Return early if we found a rectangular clip at all, not just in error case. - Give render glyphset entry the negative bbox offsets it wants, not the bearings. - - ChangeLog | 10 ++++++++++ - src/cairo-ft-font.c | 34 +++++++++++++++++++++++----------- - src/cairo-gstate.c | 2 +- - src/cairo-image-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 41 +++++++++++++++++++++++++++++++++++++++-- - src/cairo_ft_font.c | 34 +++++++++++++++++++++++----------- - src/cairo_gstate.c | 2 +- - src/cairo_image_surface.c | 4 ++-- - src/cairo_xlib_surface.c | 41 +++++++++++++++++++++++++++++++++++++++-- - 9 files changed, 140 insertions(+), 32 deletions(-) - -commit 12a86de2c4dbcd44797a4ddf719c6450c6a4e4b0 -Author: Carl Worth -Date: Thu Nov 4 14:23:50 2004 +0000 - - Add new test demonstrating assertion failure in cairo_cache_lookup. - Add new test showing problems with rotated text. - - ChangeLog | 8 +++ - Makefile.am | 1 - - RELEASING | 2 +- - test/.cvsignore | 2 + - test/Makefile.am | 13 ++++- - test/cairo-test.h | 1 + - test/cairo_test.h | 1 + - test/text-cache-crash.c | 85 +++++++++++++++++++++++++++++++++++ - test/text-rotate.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++ - test/text_cache_crash.c | 85 +++++++++++++++++++++++++++++++++++ - test/text_rotate.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++ - 11 files changed, 419 insertions(+), 5 deletions(-) - -commit ca61417f7d7562862affd0381b741df260f4a3bb -Author: David Reveman -Date: Wed Nov 3 15:28:37 2004 +0000 - - Tracking changes to glitz - - ChangeLog | 11 ++ - configure.in | 2 +- - src/cairo-glitz-surface.c | 227 ++++++++++++++++++++++++++++++-------------- - src/cairo_glitz_surface.c | 227 ++++++++++++++++++++++++++++++-------------- - 4 files changed, 322 insertions(+), 145 deletions(-) - -commit f1cf7d43318cf0841aed5cc82e1583eb3222c079 -Author: David Reveman -Date: Wed Nov 3 15:05:24 2004 +0000 - - Fixed return status of _cairo_gstate_clip - - ChangeLog | 4 ++++ - src/cairo-gstate.c | 2 +- - src/cairo_gstate.c | 2 +- - 3 files changed, 6 insertions(+), 2 deletions(-) - -commit 32cde60a0568fd1a0377b5346f419a212bc0628d -Author: Olivier Andrieu -Date: Mon Nov 1 07:58:27 2004 +0000 - - remove cairo_ft_font_destroy() prototype. - - ChangeLog | 4 ++++ - src/cairo.h | 3 --- - 2 files changed, 4 insertions(+), 3 deletions(-) - -commit 0340265ce470e12ed434cbcde56f44a01e06c046 -Author: Carl Worth -Date: Thu Oct 28 08:48:07 2004 +0000 - - Abort release-publish if there's already a published tar file with the current version. (release-publish): Add code to update the LATEST-package-version file. - - pixman/ChangeLog | 7 +++++++ - pixman/Makefile.am | 25 ++++++++++++++++--------- - pixman/RELEASING | 8 +++++--- - 3 files changed, 28 insertions(+), 12 deletions(-) - -commit 2473e782ca5e92cb70837daf4d2950253170fe66 -Author: Carl Worth -Date: Thu Oct 28 08:36:42 2004 +0000 - - Abort release-publish if there's already a published tar file with the current version. (release-publish): Add code to update the LATEST-package-version file. - - ChangeLog | 7 +++++++ - Makefile.am | 16 +++++++++++++--- - RELEASING | 10 ++++++---- - 3 files changed, 26 insertions(+), 7 deletions(-) - -commit 327dc6f2ae304aa0536123bf8224a53290f72c29 -Author: Carl Worth -Date: Wed Oct 27 13:19:39 2004 +0000 - - Add note on reverted tessellation regression bugs. - - ChangeLog | 1 + - NEWS | 8 ++++++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit d18aad05f33b903ec2ce2d5b5159ea1193af819c -Author: Carl Worth -Date: Wed Oct 27 13:13:39 2004 +0000 - - Increment CAIRO_VERSION to 0.2.0. - Add notes for snapshot 0.2.0. - - .cvsignore | 1 + - ChangeLog | 4 +++ - NEWS | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- - RELEASING | 6 +++- - configure.in | 2 +- - 5 files changed, 84 insertions(+), 8 deletions(-) - -commit 377983fdf320cf98061fed9cec1870712855871a -Author: Carl Worth -Date: Wed Oct 27 11:59:56 2004 +0000 - - Update release instructions for new release-publish target. - Add release-check and release-publish targets copied from libpixman. - - ChangeLog | 6 +++++ - Makefile.am | 40 +++++++++++++++++++++++++++++++++ - RELEASING | 71 ++++++++++++++++++++++++++++------------------------------ - 3 files changed, 80 insertions(+), 37 deletions(-) - -commit 39d57762a65f8b16e27c56435217cc96e8c68a23 -Author: Carl Worth -Date: Wed Oct 27 11:42:45 2004 +0000 - - Fix to always link tests against locally built library, not installed version. - - ChangeLog | 3 +++ - test/Makefile.am | 2 +- - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit 1839d679b1a9b60b9c153183df8380061fdd7e64 -Author: Carl Worth -Date: Wed Oct 27 10:53:44 2004 +0000 - - Put the tag command back which was accidentally removed from the instructions. - - pixman/ChangeLog | 3 +++ - pixman/RELEASING | 6 +++++- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit 667fa8fc15044f1d488aa98a74c29206b921d57e -Author: Carl Worth -Date: Wed Oct 27 10:48:58 2004 +0000 - - Add new test for cairo_set_fill_rule. Also demonstrate some of the current tessellation bugs with the version of the code that is in CVS. - - ChangeLog | 6 +++ - test/.cvsignore | 1 + - test/Makefile.am | 26 +++++++++----- - test/fill-rule-ref.png | Bin 0 -> 408 bytes - test/fill-rule.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ - test/fill_rule-ref.png | Bin 0 -> 408 bytes - test/fill_rule.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ - 7 files changed, 204 insertions(+), 9 deletions(-) - -commit 944b1721e1910bc4d8caa97ae946b769f9ad2d8a -Author: Carl Worth -Date: Wed Oct 27 09:43:22 2004 +0000 - - Suggest "cvs -q update -Ad" as an alternative to checkout. - - pixman/ChangeLog | 1 + - pixman/RELEASING | 3 +++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit ed1ad714174abd3354d2dc3991b596d83f6330bf -Author: Carl Worth -Date: Wed Oct 27 09:37:34 2004 +0000 - - Update date since 0.1.2 release didn't get pushed out until today. - Update release instructions to include new release-publish target. - Add release-check and release-publish targets to simplify the release process. - - pixman/.cvsignore | 2 +- - pixman/ChangeLog | 11 ++++++++++ - pixman/Makefile.am | 42 ++++++++++++++++++++++++++++++++++++++ - pixman/NEWS | 2 +- - pixman/RELEASING | 57 +++++++++++++++++++++------------------------------- - pixman/TODO | 10 +++++++++ - 6 files changed, 88 insertions(+), 36 deletions(-) - -commit 19d3fc2399a05a3802b1cb2ced55139fa85a68b8 -Author: Carl Worth -Date: Wed Oct 27 07:26:36 2004 +0000 - - Switch from two different buggy mod macros to a new MOD macro which should work in C89 or C99. - - pixman/ChangeLog | 5 +++++ - pixman/NEWS | 7 ++++--- - pixman/src/ic.c | 10 ++++------ - pixman/src/iccompose.c | 18 ++++++++---------- - pixman/src/icint.h | 10 +++++++++- - 5 files changed, 30 insertions(+), 20 deletions(-) - -commit 083de7201755e1b4b322cf2308607f8f3c60a9d8 -Author: Carl Worth -Date: Tue Oct 26 18:19:55 2004 +0000 - - Find reference images in so that make distcheck will work. - Add header files so that make distcheck is happy. (INCLUDES): Add -D_GNU_SOURCE for asprintf. Someone motivated may want to find a more portable approach. (EXTRA_DIST): Add reference images for the sake of make distcheck. - - ChangeLog | 9 +++++++++ - test/Makefile.am | 26 +++++++++++++++++++++----- - test/cairo-test.c | 29 ++++++++++++++++++----------- - test/cairo_test.c | 29 ++++++++++++++++++----------- - 4 files changed, 66 insertions(+), 27 deletions(-) - -commit 240276d7920d1c03e32e9a90f826f891f3cd3fcf -Author: Carl Worth -Date: Tue Oct 26 16:59:22 2004 +0000 - - Shell doesn't like whitespace around assignment operator. - - ChangeLog | 3 +++ - configure.in | 2 +- - 2 files changed, 4 insertions(+), 1 deletions(-) - -commit 211b19b47575741a70901c10fe0e2d9aec8aa37b -Author: Carl Worth -Date: Tue Oct 26 16:31:31 2004 +0000 - - Add paragraph on new features. - - ChangeLog | 2 ++ - test/README | 11 ++++++++++- - 2 files changed, 12 insertions(+), 1 deletions(-) - -commit f8e632ab1e0673cecd2ea68b3c0e6747b74d7cd6 -Author: Carl Worth -Date: Tue Oct 26 14:38:43 2004 +0000 - - Add initial regression test suite. - Don't AC_SUBST a dozen different FOO_CFLAGS and FOO_LIBS. Instead, incrementally build up just CAIRO_CFLAGS and CAIRO_LIBS. - Don't list flags that should get picked up via dependency information through Requires. - Add description of move_to_show_surface. - - BUGS | 11 ++ - ChangeLog | 27 +++++ - Makefile.am | 2 +- - cairo.pc.in | 2 +- - configure.in | 41 +++++--- - src/Makefile.am | 4 +- - test/.cvsignore | 10 ++ - test/Makefile.am | 29 ++++++ - test/README | 55 +++++++++++ - test/cairo-test.c | 191 +++++++++++++++++++++++++++++++++++++ - test/cairo-test.h | 50 ++++++++++ - test/cairo_test.c | 191 +++++++++++++++++++++++++++++++++++++ - test/cairo_test.h | 50 ++++++++++ - test/line-width-ref.png | Bin 0 -> 167 bytes - test/line-width.c | 63 ++++++++++++ - test/line_width-ref.png | Bin 0 -> 167 bytes - test/line_width.c | 63 ++++++++++++ - test/move-to-show-surface-ref.png | Bin 0 -> 100 bytes - test/move-to-show-surface.c | 69 +++++++++++++ - test/move_to_show_surface-ref.png | Bin 0 -> 100 bytes - test/move_to_show_surface.c | 69 +++++++++++++ - test/read-png.c | 166 ++++++++++++++++++++++++++++++++ - test/read-png.h | 45 +++++++++ - test/read_png.c | 166 ++++++++++++++++++++++++++++++++ - test/read_png.h | 45 +++++++++ - test/write-png.c | 102 ++++++++++++++++++++ - test/write-png.h | 35 +++++++ - test/write_png.c | 102 ++++++++++++++++++++ - test/write_png.h | 35 +++++++ - test/xmalloc.c | 58 +++++++++++ - test/xmalloc.h | 35 +++++++ - 31 files changed, 1698 insertions(+), 18 deletions(-) - -commit bf8374dba260c80ae8ee33c1eb5bddf39ae649f4 -Author: Carl Worth -Date: Thu Oct 21 18:40:50 2004 +0000 - - Convert all files to utf-8. Add copyright information to cairo_png_surface.c. - - ChangeLog | 31 +++++++++++++++++++++++++++++++ - src/cairo-cache.c | 2 +- - src/cairo-color.c | 2 +- - src/cairo-fixed.c | 2 +- - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 2 +- - src/cairo-glitz-surface.c | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-hash.c | 2 +- - src/cairo-hull.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-path-bounds.c | 2 +- - src/cairo-path-fill.c | 2 +- - src/cairo-path-stroke.c | 2 +- - src/cairo-path.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-pen.c | 2 +- - src/cairo-polygon.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-slope.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-traps.c | 2 +- - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairo_cache.c | 2 +- - src/cairo_color.c | 2 +- - src/cairo_fixed.c | 2 +- - src/cairo_font.c | 2 +- - src/cairo_ft_font.c | 2 +- - src/cairo_glitz_surface.c | 2 +- - src/cairo_gstate.c | 2 +- - src/cairo_hull.c | 2 +- - src/cairo_image_surface.c | 2 +- - src/cairo_matrix.c | 2 +- - src/cairo_path.c | 2 +- - src/cairo_path_bounds.c | 2 +- - src/cairo_path_fill.c | 2 +- - src/cairo_path_stroke.c | 2 +- - src/cairo_pattern.c | 2 +- - src/cairo_pen.c | 2 +- - src/cairo_png_surface.c | 37 +++++++++++++++++++++++++++++++++++++ - src/cairo_polygon.c | 2 +- - src/cairo_ps_surface.c | 2 +- - src/cairo_slope.c | 2 +- - src/cairo_spline.c | 2 +- - src/cairo_surface.c | 2 +- - src/cairo_traps.c | 2 +- - src/cairo_xcb_surface.c | 2 +- - src/cairo_xlib_surface.c | 2 +- - src/cairoint.h | 2 +- - 54 files changed, 120 insertions(+), 52 deletions(-) - -commit 215d5c5a46b7523faa31d2f1d087123a7fd54f32 -Author: Carl Worth -Date: Thu Oct 21 18:26:25 2004 +0000 - - Fix comparison so that it results in a stable sort. This should fix some rendering bugs due to broken pens. - - ChangeLog | 4 ++++ - src/cairo-hull.c | 7 +++++-- - src/cairo_hull.c | 7 +++++-- - 3 files changed, 14 insertions(+), 4 deletions(-) - -commit de115d07c35ec59e65d27bbfeced9af5a9df43c0 -Author: Carl Worth -Date: Thu Oct 21 08:55:46 2004 +0000 - - Add items on custom caps and getting access to hidden image data - - ChangeLog | 3 +++ - TODO | 13 +++++++++++-- - 2 files changed, 14 insertions(+), 2 deletions(-) - -commit 07677744429a5664af30dcbae5bd67d26ba64401 -Author: Carl Worth -Date: Thu Oct 21 08:51:52 2004 +0000 - - Add COPYING-LGPL-2.1 and COPYING-MPL-1.1 to the distribution. - - Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit fe2b2c0abf64ad67f9f128c29d2ecd24d8fbac2a -Author: Carl Worth -Date: Thu Oct 21 08:31:21 2004 +0000 - - Makefile.am - - ChangeLog | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit ce5f903ea84c398f0766fefdafc4f0866fc2c429 -Author: Carl Worth -Date: Wed Oct 13 11:13:51 2004 +0000 - - Fix email address in ChangeLog - - pixman/ChangeLog | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 06788edb0af0b1c15823022747c58e5d595d9960 -Author: Carl Worth -Date: Wed Oct 13 11:01:42 2004 +0000 - - Add notes for snapshot 0.1.2 - Increment version to 0.1.2 - - pixman/ChangeLog | 6 ++++++ - pixman/NEWS | 24 ++++++++++++++++++++++++ - pixman/configure.in | 3 +-- - 3 files changed, 31 insertions(+), 2 deletions(-) - -commit d8b24a4ee035071db8b65c1fcc37ef467b70e2c7 -Author: Carl Worth -Date: Wed Oct 13 08:18:38 2004 +0000 - - automake 1.4 seems to be sufficient. Don't require 1.6. - - ChangeLog | 5 +++++ - autogen.sh | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit f9b0020850ac62f37989e6828a69ddaa421d722b -Author: Keith Packard -Date: Tue Oct 12 14:17:23 2004 +0000 - - Compute extents of cairo_traps_t on the fly using approximate method which is correct given the way cairo generates trapezoids. - Avoid zero-dimensioned pixmaps - - ChangeLog | 11 +++++ - src/cairo-traps.c | 105 ++++++++++++++++++++++++--------------------- - src/cairo-xlib-surface.c | 2 +- - src/cairo_traps.c | 105 ++++++++++++++++++++++++--------------------- - src/cairo_xlib_surface.c | 2 +- - src/cairoint.h | 1 + - 6 files changed, 126 insertions(+), 100 deletions(-) - -commit 047ce336000d595bcc123bb3647c44d239e1b89a -Author: Carl Worth -Date: Tue Oct 12 14:09:37 2004 +0000 - - Fix a few typos in pen vertex math description. - - ChangeLog | 4 ++++ - src/cairo-pen.c | 6 +++--- - src/cairo_pen.c | 6 +++--- - 3 files changed, 10 insertions(+), 6 deletions(-) - -commit cc890b9cf4d2a38e13ae48e16589c4fd02678f99 -Author: Keith Packard -Date: Tue Oct 12 12:29:29 2004 +0000 - - Adapt function from Walter Brisken to compute pen ellipse major axis length and use that to compute the required number of pen vertices. - reviewed by: Carl Worth - - ChangeLog | 9 ++ - src/cairo-pen.c | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++----- - src/cairo_pen.c | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++----- - 3 files changed, 511 insertions(+), 44 deletions(-) - -commit 30131aa4638f9bba6148114d3c60770592d6583b -Author: Graydon Hoare -Date: Fri Oct 8 12:09:49 2004 +0000 - - Add cairo_cache.c - Rewrite using temporary glyph arrays - New file. - Remove old glyph cache code. (_cairo_font_scale) (_cairo_font_transform): Remove font-transforming code. (_cairo_font_text_extents) (_cairo_font_text_bbox) (_cairo_font_show_text) (_cairo_font_text_path): Remove text-API code. (_cairo_font_cache_key_t): New structure type. (_font_cache_hash) (_font_cache_keys_equal) (_font_cache_create_entry) (_font_cache_destroy_entry) (_font_cache_destroy_cache): New font cache code. (_global_font_cache) (_lock_global_font_cache) (_unlock_global_font_cache) (_get_global_font_cache): New global font cache. (_cairo_font_text_to_glyphs) (_cairo_glyph_cache_hash) (_cairo_glyph_cache_keys_equal) (_image_glyph_cache_create_entry) (_image_glyph_cache_destroy_entry) (_image_glyph_cache_destroy_cache): New glyph cache code. (_global_image_glyph_cache) (_cairo_lock_global_image_glyph_cache) (_cairo_unlock_global_image_glyph_cache) (_cairo_get_global_image_glyph_cache): New global glyph cache. (_cairo_font_cache_backend): New structure. (_cairo_image_cache_backend): Likewise. (_cairo_font_create): Reimplement in terms of font cache. (_cairo_font_init): Remove matrix and glyph cache related code. (_cairo_font_copy): Likewise. (_cairo_font_show_glyphs): Delegate to surface when possible. (_cairo_font_glyph_extents) (_cairo_font_glyph_bbox) (_cairo_font_glyph_path) (_cairo_font_font_extents) (_cairo_font_show_glyphs): Rename to as cairo_unscaled_font_XXX, and add scale parameter. - New structure types. (_create_from_face) (_reference_font_val) (_destroy_font_val) (_create_from_library_and_pattern): New functions. (_ft_font_cache_hash) (_ft_font_cache_keys_equal) (_ft_font_cache_create_entry) (_ft_font_cache_destroy_entry) (_ft_font_cache_destroy_cache): New ft font cache code. (_global_ft_cache) (_lock_global_ft_cache) (_unlock_global_ft_cache) (_get_global_ft_cache): New global ft font cache. (_ft_font_cache_backend): New structure. (_cairo_ft_font_create): Rewrite to use cache. (_cairo_ft_font_destroy): Likewise. (_cairo_ft_font_copy): Remove. (_install_font_matrix): Rename as _install_font_scale. (_utf8_to_glyphs): Rename as _cairo_ft_font_text_to_glyphs. (_cairo_ft_font_text_to_glyphs): Use cache for metrics. (_cairo_ft_font_extents): Accept size, use scaled metrics. (_cairo_ft_font_glyph_extents) (_cairo_ft_font_glyph_bbox) (_cairo_ft_font_show_glyphs) (_cairo_ft_font_glyph_path): Modify to use size, cache. (_cairo_ft_font_text_extents) (_cairo_ft_font_text_bbox) (_cairo_ft_font_show_text) (_cairo_ft_font_text_path): Remove text-API code. (cairo_ft_font_create) (cairo_ft_font_create_for_ft_face) (cairo_ft_font_face) (cairo_ft_font_pattern): Rewrite using ft_font_val_t. - Just reference font. (_cairo_gstate_fini): Finalize font matrix. (_cairo_gstate_default_matrix): Initialize font matrix. (_cairo_gstate_clip): Re-enable clipping rectangle. (_cairo_gstate_select_font) (_cairo_gstate_set_font): Set font matrix to identity. (_cairo_gstate_scale_font): Scale font matrix, not font. (_cairo_gstate_transform_font): Transform font matrix, not font. (_cairo_gstate_set_font_transform): Install as font matrix, not in font. (_build_font_scale): New helper function. (_cairo_gstate_text_to_glyphs): New function. (_cairo_gstate_current_font_extents) (_cairo_gstate_glyph_extents) (_cairo_gstate_show_glyphs) (_cairo_gstate_glyph_path): Rewrite using font matrix and size. (_cairo_gstate_text_path (_cairo_gstate_text_extents) (_cairo_gstate_show_text): Remove text-API code. - Minor bug fix. (_cairo_xlib_surface_show_glyphs): New function. (_cairo_xlib_surface_backend): Add reference to new function. (glyphset_cache_t) (glyphset_cache_entry_t): New structure types. (_next_xlib_glyph): New helper function. (_xlib_glyphset_cache_create_value) (_xlib_glyphset_cache_destroy_cache) (_xlib_glyphset_cache_destroy_value) (_xlib_glyphset_cache_backend): New glyphset cache code. (_xlib_glyphset_caches) (_lock_xlib_glyphset_caches) (_unlock_xlib_glyphset_caches) (_get_glyphset_cache): New global glyphset cache. - Add NULL entry for show_glyphs. - Add NULL entry for show_glyphs. - Add NULL entry for show_glyphs. - Add NULL entry for show_glyphs. - Add NULL entry for show_glyphs. - New structure type. (cairo_cache_entry_base_t) (cairo_cache_arrangement_t) (cairo_cache_t): New structure types. (_cairo_cache_init) (_cairo_cache_reference) (_cairo_cache_destroy) (_cairo_cache_lookup) (_cairo_hash_string): New cache functions. (CAIRO_IMAGE_GLYPH_CACHE_MEMORY_DEFAULT) (CAIRO_XLIB_GLYPH_CACHE_MEMORY_DEFAULT) (CAIRO_FONT_CACHE_NUM_FONTS_DEFAULT) (CAIRO_FT_CACHE_NUM_FONTS_DEFAULT): New constants. (cairo_font_scale_t) (cairo_glyph_cache_key_t) (cairo_image_glyph_cache_entry_t): New structure types. (_cairo_lock_global_image_glyph_cache) (_cairo_unlock_global_image_glyph_cache) (_cairo_get_global_image_glyph_cache) (_cairo_glyph_cache_hash) (_cairo_glyph_cache_keys_equal): New functions for glyph caches. (cairo_font_backend_t): Remove text-API calls, add scale params, remove copy call. (cairo_surface_backend_t): Add show_glyphs entry. (cairo_glyph_surface_t) (cairo_glyph_surface_node_t): Remove old glyph cache structures. (cairo_unscaled_font_t): New structure type. (cairo_font): Remove glyph cache member, add pointer to unscaled. (cairo_gstate): Add font_matrix member, change to hold unscaled. (_cairo_gstate_set_font_transform) (_cairo_gstate_current_font_transform) (_cairo_gstate_text_to_glyphs): New functions. (_cairo_gstate_text_path (_cairo_gstate_text_extents) (_cairo_gstate_show_text) (_cairo_font_text_extents) (_cairo_font_text_bbox) (_cairo_font_show_text) (_cairo_font_text_path): Remove text-API code. (_cairo_font_glyph_extents) (_cairo_font_glyph_bbox) (_cairo_font_glyph_path) (_cairo_font_font_extents) (_cairo_font_show_glyphs): Add scale parameter. - - ChangeLog | 190 +++++++++ - src/Makefile.am | 1 + - src/cairo-cache.c | 454 +++++++++++++++++++++ - src/cairo-font.c | 659 ++++++++++++++++++------------- - src/cairo-ft-font.c | 965 ++++++++++++++++++++++++++++----------------- - src/cairo-glitz-surface.c | 3 +- - src/cairo-gstate.c | 526 ++++++++++++++----------- - src/cairo-hash.c | 454 +++++++++++++++++++++ - src/cairo-image-surface.c | 3 +- - src/cairo-ps-surface.c | 3 +- - src/cairo-xcb-surface.c | 3 +- - src/cairo-xlib-surface.c | 529 +++++++++++++++++++++++++- - src/cairo.c | 53 +++- - src/cairo_cache.c | 454 +++++++++++++++++++++ - src/cairo_font.c | 659 ++++++++++++++++++------------- - src/cairo_ft_font.c | 965 ++++++++++++++++++++++++++++----------------- - src/cairo_glitz_surface.c | 3 +- - src/cairo_gstate.c | 526 ++++++++++++++----------- - src/cairo_image_surface.c | 3 +- - src/cairo_png_surface.c | 3 +- - src/cairo_ps_surface.c | 3 +- - src/cairo_xcb_surface.c | 3 +- - src/cairo_xlib_surface.c | 529 +++++++++++++++++++++++++- - src/cairoint.h | 413 ++++++++++++------- - 24 files changed, 5485 insertions(+), 1919 deletions(-) - -commit 56ccb883761ff0781954705795f78b8e5a1591d4 -Author: David Reveman -Date: Mon Oct 4 04:55:46 2004 +0000 - - Do not use VBOs and PBOs for immediate mode drawing - - ChangeLog | 7 +++ - configure.in | 2 +- - src/cairo-glitz-surface.c | 118 +++++++++++++++++++++------------------------ - src/cairo_glitz_surface.c | 118 +++++++++++++++++++++------------------------ - 4 files changed, 118 insertions(+), 127 deletions(-) - -commit 978e2dd0d613a6c043014b62df0c1ac7ae076581 -Author: Jamey Sharp -Date: Thu Sep 30 13:34:19 2004 +0000 - - Update for minor XCB API change. - - ChangeLog | 5 +++++ - src/cairo-xcb-surface.c | 2 +- - src/cairo_xcb_surface.c | 2 +- - 3 files changed, 7 insertions(+), 2 deletions(-) - -commit 96dfd5db6488f4b649c429471da14362c7697503 -Author: David Reveman -Date: Sun Sep 19 22:11:04 2004 +0000 - - Important fixes to glitz format handling - - ChangeLog | 11 +++++++++++ - src/cairo-glitz-surface.c | 29 ++++++++++++++++++++--------- - src/cairo_glitz_surface.c | 29 ++++++++++++++++++++--------- - 3 files changed, 51 insertions(+), 18 deletions(-) - -commit c150ea0855428f56cc12d83f4bdafec7f1ce6ce8 -Author: David Reveman -Date: Wed Sep 15 09:55:40 2004 +0000 - - Improved format handling, pixel transfers and gradients - - ChangeLog | 8 +++++ - src/cairo-glitz-surface.c | 74 +++++++++++++++++++++++++++++---------------- - src/cairo_glitz_surface.c | 74 +++++++++++++++++++++++++++++---------------- - 3 files changed, 104 insertions(+), 52 deletions(-) - -commit 3deeb1d1784cced73d94e8274e5c1650189b85d4 -Author: David Reveman -Date: Sun Sep 12 15:34:00 2004 +0000 - - Get pixel masks from pixman image format - - ChangeLog | 2 ++ - src/cairo-glitz-surface.c | 27 +++++++++++---------------- - src/cairo_glitz_surface.c | 27 +++++++++++---------------- - 3 files changed, 24 insertions(+), 32 deletions(-) - -commit 3a1931baba4c453226a2d0c307352569c6b2bfab -Author: David Reveman -Date: Sun Sep 12 06:06:50 2004 +0000 - - Added pixman_format_get_masks and fixed a few format issues - - pixman/AUTHORS | 2 +- - pixman/ChangeLog | 9 +++++++++ - pixman/src/icformat.c | 35 ++++++++++++++++++++++++++++++++++- - pixman/src/icimage.c | 6 ++++++ - pixman/src/pixman.h | 10 +++++++++- - 5 files changed, 59 insertions(+), 3 deletions(-) - -commit 93c27d48a3783dbf318392170edfec78af42fd4f -Author: David Reveman -Date: Sun Sep 12 05:09:32 2004 +0000 - - cairo_surface_t pointer to cairo_surface_set_repeat - - ChangeLog | 3 +++ - src/cairo-glitz-surface.c | 2 +- - src/cairo_glitz_surface.c | 2 +- - 3 files changed, 5 insertions(+), 2 deletions(-) - -commit d0e30df8cb32550e2075efc2d1fa342fa6d8ca8b -Author: David Reveman -Date: Sat Sep 11 19:55:24 2004 +0000 - - Added function for setting component alpha - - pixman/AUTHORS | 1 + - pixman/ChangeLog | 6 ++++++ - pixman/src/icimage.c | 9 +++++++++ - pixman/src/icint.h | 1 + - pixman/src/pixman.h | 6 +++++- - 5 files changed, 22 insertions(+), 1 deletions(-) - -commit 1ba0de94fb774d1f3f8e082004adadfe897e285e -Author: David Reveman -Date: Sat Sep 11 19:42:40 2004 +0000 - - Fixed clipping - - pixman/ChangeLog | 4 ++++ - pixman/src/icimage.c | 10 +++++++++- - 2 files changed, 13 insertions(+), 1 deletions(-) - -commit 81d66588587e506781a91e7378b39f728202b317 -Author: David Reveman -Date: Sat Sep 11 19:33:23 2004 +0000 - - Byte-order fix - - pixman/ChangeLog | 5 +++++ - pixman/configure.in | 2 ++ - pixman/src/icint.h | 13 +++++++++++++ - 3 files changed, 20 insertions(+), 0 deletions(-) - -commit c5786fd0fe0f0b69f3896e77705282c211ba7a77 -Author: David Reveman -Date: Sat Sep 11 19:27:59 2004 +0000 - - Added support for both transform and repeat - - pixman/AUTHORS | 1 + - pixman/ChangeLog | 7 +++++++ - pixman/src/ic.c | 8 ++++++++ - pixman/src/iccompose.c | 46 ++++++++++++++++++++++++++++++++++++++++++---- - pixman/src/icimage.h | 3 +++ - 5 files changed, 61 insertions(+), 4 deletions(-) - -commit 4af8faee061b3b90e71badf36040daa0b8edb7d1 -Author: David Reveman -Date: Sat Sep 11 19:05:46 2004 +0000 - - Pickup repeat setting when cloning surface - - ChangeLog | 5 +++++ - src/cairo-glitz-surface.c | 2 ++ - src/cairo_glitz_surface.c | 2 ++ - 3 files changed, 9 insertions(+), 0 deletions(-) - -commit 7abd103d2eb0fb7099527f16634c80df247c7a65 -Author: Carl Worth -Date: Sat Sep 11 13:29:59 2004 +0000 - - Require automake 1.6 rather than 1.7 since it seems to work just fine. - - ChangeLog | 5 +++++ - autogen.sh | 3 ++- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 786904f1aa0dc24f9c206387312eec81e42784d8 -Author: David Reveman -Date: Sat Sep 11 07:59:27 2004 +0000 - - Tracking color stop coordinate changes to glitz's gradient filters - - ChangeLog | 5 +++++ - configure.in | 2 +- - src/cairo-glitz-surface.c | 4 ++-- - src/cairo_glitz_surface.c | 4 ++-- - 4 files changed, 10 insertions(+), 5 deletions(-) - -commit 27d2de8c2d0ebdabf80321bf59d7e680093b4e33 -Author: David Reveman -Date: Sat Sep 11 04:23:17 2004 +0000 - - Replaced the gl backend with the new glitz backend - - ChangeLog | 18 + - cairo.pc.in | 2 +- - configure.in | 36 +- - src/Makefile.am | 10 +- - src/cairo-features.h.in | 2 +- - src/cairo-glitz-surface.c | 907 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 14 +- - src/cairo_gl_surface.c | 967 --------------------------------------------- - src/cairo_glitz_surface.c | 907 ++++++++++++++++++++++++++++++++++++++++++ - 9 files changed, 1864 insertions(+), 999 deletions(-) - -commit 211cf9a2ce2f15402062ebc87f82a2b45b0cfde2 -Author: Carl Worth -Date: Sat Sep 4 07:29:16 2004 +0000 - - Add the MPL as a new license option, in addition to the LGPL. - - ChangeLog | 28 +++++++++++++++++++++++++--- - 1 files changed, 25 insertions(+), 3 deletions(-) - -commit 0f3ce6a24010b9d1416f218c447b5c68a0df85ea -Author: Carl Worth -Date: Sat Sep 4 06:38:34 2004 +0000 - - Add the MPL as a new license option, in addition to the LGPL. - - COPYING | 519 ++------------------------------------------- - COPYING-LGPL-2.1 | 510 ++++++++++++++++++++++++++++++++++++++++++++ - COPYING-MPL-1.1 | 470 ++++++++++++++++++++++++++++++++++++++++ - ChangeLog | 8 + - src/cairo-color.c | 37 +++- - src/cairo-features.h.in | 41 +++- - src/cairo-fixed.c | 41 +++- - src/cairo-font.c | 37 +++- - src/cairo-gstate.c | 37 +++- - src/cairo-hull.c | 37 +++- - src/cairo-image-surface.c | 37 +++- - src/cairo-matrix.c | 37 +++- - src/cairo-path-bounds.c | 37 +++- - src/cairo-path-fill.c | 37 +++- - src/cairo-path-stroke.c | 37 +++- - src/cairo-path.c | 37 +++- - src/cairo-pen.c | 37 +++- - src/cairo-polygon.c | 37 +++- - src/cairo-ps-surface.c | 37 +++- - src/cairo-slope.c | 37 +++- - src/cairo-spline.c | 37 +++- - src/cairo-surface.c | 37 +++- - src/cairo-xcb-surface.c | 37 +++- - src/cairo-xlib-surface.c | 37 +++- - src/cairo.c | 38 +++- - src/cairo.h | 37 +++- - src/cairo_color.c | 37 +++- - src/cairo_fixed.c | 41 +++- - src/cairo_font.c | 37 +++- - src/cairo_gstate.c | 37 +++- - src/cairo_hull.c | 37 +++- - src/cairo_image_surface.c | 37 +++- - src/cairo_matrix.c | 37 +++- - src/cairo_path.c | 37 +++- - src/cairo_path_bounds.c | 37 +++- - src/cairo_path_fill.c | 37 +++- - src/cairo_path_stroke.c | 37 +++- - src/cairo_pen.c | 37 +++- - src/cairo_polygon.c | 37 +++- - src/cairo_ps_surface.c | 37 +++- - src/cairo_slope.c | 37 +++- - src/cairo_spline.c | 37 +++- - src/cairo_surface.c | 37 +++- - src/cairo_xcb_surface.c | 37 +++- - src/cairo_xlib_surface.c | 37 +++- - src/cairoint.h | 37 +++- - 46 files changed, 2142 insertions(+), 932 deletions(-) - -commit 31d0ddbf2a6acecea8ffede9f3f3942dcbc9c035 -Author: Carl Worth -Date: Sat Aug 14 07:21:52 2004 +0000 - - Make a copy of the region since pixman is currently taking ownership of it (ugh). Thanks to Vladimir Vukicevic and Peter Dennis Bartok . - - AUTHORS | 2 ++ - ChangeLog | 6 ++++++ - src/cairo-image-surface.c | 15 ++++++++++++++- - src/cairo_image_surface.c | 15 ++++++++++++++- - 4 files changed, 36 insertions(+), 2 deletions(-) - -commit adabb18408157299940413a80a6c943de96296d5 -Author: Carl Worth -Date: Sat Aug 14 06:35:30 2004 +0000 - - Explicitly set LANG=C to fix the awk string->number conversion for user with locales that don't match ASCII digit conventions. - - ChangeLog | 6 ++++++ - autogen.sh | 3 ++- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit 62e4b869cd17c2fd5103d9e61656a4451624f6b9 -Author: Carl Worth -Date: Tue Aug 3 11:49:20 2004 +0000 - - Temporarily disable rectangle-based clipping optimization as it's not working (see cairo_snippets/xxx_clip_rectangle for a test case). - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 9 +++++++++ - src/cairo_gstate.c | 9 +++++++++ - 3 files changed, 24 insertions(+), 0 deletions(-) - -commit e5afa03605e4e8eda39ecbf589796d1c51b8452a -Author: Carl Worth -Date: Mon Aug 2 17:04:00 2004 +0000 - - Fix to explicitly refer to GNU Lesser Public License 2.1 rather than the Library Public License version 2 or 'any later version' - - ChangeLog | 2 ++ - src/cairo-color.c | 12 +++++------- - src/cairo-features.h.in | 12 +++++------- - src/cairo-fixed.c | 12 +++++------- - src/cairo-font.c | 12 +++++------- - src/cairo-gstate.c | 12 +++++------- - src/cairo-hull.c | 12 +++++------- - src/cairo-image-surface.c | 12 +++++------- - src/cairo-matrix.c | 12 +++++------- - src/cairo-path-bounds.c | 12 +++++------- - src/cairo-path-fill.c | 12 +++++------- - src/cairo-path-stroke.c | 12 +++++------- - src/cairo-path.c | 12 +++++------- - src/cairo-pen.c | 12 +++++------- - src/cairo-polygon.c | 12 +++++------- - src/cairo-ps-surface.c | 12 +++++------- - src/cairo-slope.c | 12 +++++------- - src/cairo-spline.c | 12 +++++------- - src/cairo-surface.c | 12 +++++------- - src/cairo-xcb-surface.c | 12 +++++------- - src/cairo-xlib-surface.c | 12 +++++------- - src/cairo.c | 12 +++++------- - src/cairo.h | 12 +++++------- - src/cairo_color.c | 12 +++++------- - src/cairo_fixed.c | 12 +++++------- - src/cairo_font.c | 12 +++++------- - src/cairo_gstate.c | 12 +++++------- - src/cairo_hull.c | 12 +++++------- - src/cairo_image_surface.c | 12 +++++------- - src/cairo_matrix.c | 12 +++++------- - src/cairo_path.c | 12 +++++------- - src/cairo_path_bounds.c | 12 +++++------- - src/cairo_path_fill.c | 12 +++++------- - src/cairo_path_stroke.c | 12 +++++------- - src/cairo_pen.c | 12 +++++------- - src/cairo_polygon.c | 12 +++++------- - src/cairo_ps_surface.c | 12 +++++------- - src/cairo_slope.c | 12 +++++------- - src/cairo_spline.c | 12 +++++------- - src/cairo_surface.c | 12 +++++------- - src/cairo_xcb_surface.c | 12 +++++------- - src/cairo_xlib_surface.c | 12 +++++------- - src/cairoint.h | 12 +++++------- - 43 files changed, 212 insertions(+), 294 deletions(-) - -commit d5e92dd1c80eda83cc808abad0c8ce0905d453f7 -Author: Carl Worth -Date: Mon Aug 2 13:13:28 2004 +0000 - - Change from MIT license to LGPL. - - COPYING | 532 +++++++++++++++++++++++++++++++++++++++++++-- - ChangeLog | 30 +++ - src/cairo-color.c | 34 ++-- - src/cairo-features.h.in | 34 ++-- - src/cairo-fixed.c | 34 ++-- - src/cairo-font.c | 34 ++-- - src/cairo-gstate.c | 34 ++-- - src/cairo-hull.c | 34 ++-- - src/cairo-image-surface.c | 34 ++-- - src/cairo-matrix.c | 34 ++-- - src/cairo-path-bounds.c | 34 ++-- - src/cairo-path-fill.c | 34 ++-- - src/cairo-path-stroke.c | 34 ++-- - src/cairo-path.c | 34 ++-- - src/cairo-pen.c | 34 ++-- - src/cairo-polygon.c | 34 ++-- - src/cairo-ps-surface.c | 34 ++-- - src/cairo-slope.c | 34 ++-- - src/cairo-spline.c | 34 ++-- - src/cairo-surface.c | 34 ++-- - src/cairo-xcb-surface.c | 34 ++-- - src/cairo-xlib-surface.c | 34 ++-- - src/cairo.c | 34 ++-- - src/cairo.h | 34 ++-- - src/cairo_color.c | 34 ++-- - src/cairo_fixed.c | 34 ++-- - src/cairo_font.c | 34 ++-- - src/cairo_gstate.c | 34 ++-- - src/cairo_hull.c | 34 ++-- - src/cairo_image_surface.c | 34 ++-- - src/cairo_matrix.c | 34 ++-- - src/cairo_path.c | 34 ++-- - src/cairo_path_bounds.c | 34 ++-- - src/cairo_path_fill.c | 34 ++-- - src/cairo_path_stroke.c | 34 ++-- - src/cairo_pen.c | 34 ++-- - src/cairo_polygon.c | 34 ++-- - src/cairo_ps_surface.c | 34 ++-- - src/cairo_slope.c | 34 ++-- - src/cairo_spline.c | 34 ++-- - src/cairo_surface.c | 34 ++-- - src/cairo_xcb_surface.c | 34 ++-- - src/cairo_xlib_surface.c | 34 ++-- - src/cairoint.h | 34 ++-- - 44 files changed, 1128 insertions(+), 862 deletions(-) - -commit b0a6de8f0b3830fd0af521945dcaa98d62ac69d2 -Author: Carl Worth -Date: Mon Aug 2 12:14:57 2004 +0000 - - Fix copyright attributions mistakenly attributed to University of Southern California rather than to David Reveman. - - src/cairo-pattern.c | 33 ++++++++++++++++----------------- - src/cairo_gl_surface.c | 33 ++++++++++++++++----------------- - src/cairo_pattern.c | 33 ++++++++++++++++----------------- - 3 files changed, 48 insertions(+), 51 deletions(-) - -commit a9bc4e1f5eb2d9ea78ce7c11bcb7a96d9c349f9e -Author: Carl Worth -Date: Mon Aug 2 11:51:57 2004 +0000 - - Note that cairo_clip is fixed now. - - BUGS | 6 +++--- - ChangeLog | 4 ++++ - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit 0e3770e82074f76302190b853302e21113400ece -Author: Øyvind Kolås -Date: Sun Aug 1 23:03:02 2004 +0000 - - s/ct/cr/ - - ChangeLog | 5 +++++ - src/cairo.h | 20 ++++++++++---------- - 2 files changed, 15 insertions(+), 10 deletions(-) - -commit fe2ca7e7afbbb78425bb271416e69dde9bafa102 -Author: Jamey Sharp -Date: Sat Jul 24 19:30:05 2004 +0000 - - Updating for XCB API change around iterators. - - ChangeLog | 5 +++++ - src/cairo-xcb-surface.c | 8 ++++---- - src/cairo_xcb_surface.c | 8 ++++---- - 3 files changed, 13 insertions(+), 8 deletions(-) - -commit 7f87ea9a9e05541ecbc8cab04e214d15a606e3fb -Author: David Reveman -Date: Tue Jul 20 01:39:23 2004 +0000 - - Tracking changes to glitz - - ChangeLog | 11 ++++++++ - src/cairo_gl_surface.c | 66 ++++++++++++++++++++++------------------------- - 2 files changed, 42 insertions(+), 35 deletions(-) - -commit c95e622675ca9370f74e68e2356103e503d2a9ca -Author: David Reveman -Date: Fri Jul 16 10:25:31 2004 +0000 - - Fixed typo in earlier memory leak fix - - ChangeLog | 5 +++++ - src/cairo-font.c | 5 ++++- - src/cairo_font.c | 5 ++++- - 3 files changed, 13 insertions(+), 2 deletions(-) - -commit b306adead8b49a7aff0957a0c5aa8fd93825ff8c -Author: David Reveman -Date: Thu Jul 15 13:38:21 2004 +0000 - - Fixed glyph cache memory leak - - ChangeLog | 5 +++++ - src/cairo-font.c | 3 +++ - src/cairo_font.c | 3 +++ - 3 files changed, 11 insertions(+), 0 deletions(-) - -commit 49f691ec0b3c4b780456b99c199a9be9548454af -Author: Carl Worth -Date: Sun Jul 11 18:51:55 2004 +0000 - - Don't call _cairo_surface_set_clip_region with a NULL surface. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 5 +++-- - src/cairo_gstate.c | 5 +++-- - 3 files changed, 11 insertions(+), 4 deletions(-) - -commit d7a392bf3015a9bc53397a277fe2003e00411ffe -Author: Carl Worth -Date: Fri Jul 9 13:47:46 2004 +0000 - - Fix numerical problem that could lead to infinite loops. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 9 +++++---- - src/cairo_gstate.c | 9 +++++---- - 3 files changed, 15 insertions(+), 8 deletions(-) - -commit 63468474d732f7e707cafb216051be7802defd00 -Author: Dave Beckett -Date: Fri Jul 9 12:47:06 2004 +0000 - - Report versions of commands on failure. Try to get version numbers from newer GNU --version formats. - - autogen.sh | 23 +++++++++++++++-------- - 1 files changed, 15 insertions(+), 8 deletions(-) - -commit 2277d8fd4fcc2529cf2584db2f252cfb38a0b3bf -Author: Dave Beckett -Date: Fri Jul 9 09:16:41 2004 +0000 - - Require automake 1.7 (and thus aclocal 1.7) which requires autoconf 2.54. Changed since newer libtools may fail to work with older automake versions such as 1.4. I bet this will annoy people with older tool chains :( - - ChangeLog | 7 +++++ - autogen.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 82 insertions(+), 1 deletions(-) - -commit 259cbd0a9bb17ca35ff27b719f935ce85e877af3 -Author: Carl Worth -Date: Mon Jul 5 09:17:22 2004 +0000 - - Remove errant semicolon from macro definition. - - ChangeLog | 5 +++++ - src/cairo.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 8b9c42e8ce3135aad4d9adc5be1c4b984c190604 -Author: Carl Worth -Date: Thu Jul 1 13:38:23 2004 +0000 - - Add missing ChangeLog entry. Add description of current tessellation bugs. - - BUGS | 5 +++++ - ChangeLog | 12 ++++++++++++ - 2 files changed, 17 insertions(+), 0 deletions(-) - -commit ad398d9bda70a1e49edf126bd8576edf63b4b7a6 -Author: David Reveman -Date: Mon Jun 21 15:13:52 2004 +0000 - - Glitz updates and a minor clipping fix - - ChangeLog | 16 +++++ - configure.in | 2 +- - src/cairo-gstate.c | 26 +++++--- - src/cairo_gl_surface.c | 163 +++++++++++++++++++++++++++++++----------------- - src/cairo_gstate.c | 26 +++++--- - 5 files changed, 156 insertions(+), 77 deletions(-) - -commit 5230af4e5ad1faee3bb340ce4495e935a807b399 -Author: Keith Packard -Date: Wed Jun 16 18:16:04 2004 +0000 - - Fix image data length computation (XCB doesn't do this part). - - ChangeLog | 6 ++++++ - src/cairo-xcb-surface.c | 4 ++-- - src/cairo_xcb_surface.c | 4 ++-- - 3 files changed, 10 insertions(+), 4 deletions(-) - -commit 1e72b87b933615bbcc8b977c02b4587db0c01bde -Author: David Reveman -Date: Fri Jun 11 08:08:27 2004 +0000 - - Software multi-sample support - - ChangeLog | 11 ++++++++ - configure.in | 2 +- - src/cairo_gl_surface.c | 66 +++++++++++++++++++++++++++++++++++++++++------ - 3 files changed, 69 insertions(+), 10 deletions(-) - -commit 06ef87276e4f070e73db8c408cb1411e8cd8467b -Author: David Reveman -Date: Fri Jun 11 06:20:17 2004 +0000 - - Pre-multiply gradients after color interpolation - - ChangeLog | 11 +++++++++++ - src/cairo-gstate.c | 12 ++++++++++-- - src/cairo-pattern.c | 37 ++++++++++++++++++++----------------- - src/cairo_gstate.c | 12 ++++++++++-- - src/cairo_pattern.c | 37 ++++++++++++++++++++----------------- - src/cairoint.h | 1 - - 6 files changed, 71 insertions(+), 39 deletions(-) - -commit f82f1ba380d9c2b4e9f41092ee149ccac0881f2e -Author: Carl Worth -Date: Fri May 28 12:47:00 2004 +0000 - - These two fixes are from David Reveman : - Move NULL test from create_similar_scratch to create_similar_solid. - Fix for when surface->backend != image->backend, but the backend does use images for similar surfaces. - - src/cairo-font.c | 6 ++++-- - src/cairo-surface.c | 14 ++++++-------- - src/cairo_font.c | 6 ++++-- - src/cairo_surface.c | 14 ++++++-------- - 4 files changed, 20 insertions(+), 20 deletions(-) - -commit 41f549a870aee35840e6e76f82d4d625c5b8ff25 -Author: Keith Packard -Date: Fri May 28 12:37:15 2004 +0000 - - Add WARN_CFLAGS, autodetection for 64/128 bit ints and cairo_wideint.[ch] - Check status return from _cairo_gstate_glyph_extents - Quiet compiler warnings about uninitialized variables - Switch to alternate exact line intersection code. - Add 64/128-bit wide integer arithmetic. - Switch to stdint.h types (and new wide types). - - ChangeLog | 44 +++ - configure.in | 16 + - src/Makefile.am | 4 +- - src/cairo-pattern.c | 4 + - src/cairo-surface.c | 2 +- - src/cairo-traps.c | 118 +++++-- - src/cairo-wideint.c | 986 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-wideint.h | 272 +++++++++++++ - src/cairo_pattern.c | 4 + - src/cairo_png_surface.c | 3 + - src/cairo_surface.c | 2 +- - src/cairo_traps.c | 118 +++++-- - src/cairo_wideint.c | 986 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_wideint.h | 272 +++++++++++++ - src/cairoint.h | 31 +- - 15 files changed, 2785 insertions(+), 77 deletions(-) - -commit 878c76807ab6c4eae60701d50a1bc7c9fadce2da -Author: David Reveman -Date: Mon May 24 02:44:59 2004 +0000 - - Moved CAIRO_CHECK_SANITY below declarations - - ChangeLog | 4 ++++ - src/cairo.c | 6 +++--- - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit cdad6472111848e5167f3d71c7b4e7c3e9b2ebb6 -Author: David Reveman -Date: Mon May 24 02:28:05 2004 +0000 - - Added glyph caching - - ChangeLog | 53 ++++++++++ - NEWS | 6 + - src/cairo-font.c | 221 +++++++++++++++++++++++++++++++++++++++- - src/cairo-ft-font.c | 248 +++++++++++++++++++++++++++++++-------------- - src/cairo-gstate.c | 41 ++++---- - src/cairo-image-surface.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-surface.c | 28 ++++- - src/cairo-xcb-surface.c | 3 +- - src/cairo-xlib-surface.c | 3 +- - src/cairo_font.c | 221 +++++++++++++++++++++++++++++++++++++++- - src/cairo_ft_font.c | 248 +++++++++++++++++++++++++++++++-------------- - src/cairo_gl_surface.c | 18 +++- - src/cairo_gstate.c | 41 ++++---- - src/cairo_image_surface.c | 1 + - src/cairo_png_surface.c | 1 + - src/cairo_ps_surface.c | 1 + - src/cairo_surface.c | 28 ++++- - src/cairo_xcb_surface.c | 3 +- - src/cairo_xlib_surface.c | 3 +- - src/cairoint.h | 84 +++++++++++++++- - 21 files changed, 1032 insertions(+), 222 deletions(-) - -commit 23026d5ab65201793ac19b459e3e7e05a090e435 -Author: Graydon Hoare -Date: Thu May 20 16:42:56 2004 +0000 - - Add sanity checking feature configury. - Add sanity checking feature. - Add sanity checking. - Add prototypes. - New functions. - New function. - Use fixed functions. (_cairo_gstate_clip): Arithmetic fixes. (_cairo_gstate_clip_and_composite_trapezoids): (_cairo_gstate_show_surface): (_cairo_gstate_show_text): (_cairo_gstate_show_glyphs): Corrections to clipping. - Add XCopyArea fast path. (_cairo_xlib_surface_set_clip_region): Drive clip to drawable. - - ChangeLog | 29 ++++ - configure.in | 14 ++ - src/cairo-features.h.in | 2 + - src/cairo-fixed.c | 11 ++ - src/cairo-gstate.c | 351 +++++++++++++++++++++++++++++++++++++-------- - src/cairo-matrix.c | 24 +++ - src/cairo-xlib-surface.c | 52 +++++++- - src/cairo.c | 187 ++++++++++++++++++++++++- - src/cairo_fixed.c | 11 ++ - src/cairo_gstate.c | 351 +++++++++++++++++++++++++++++++++++++-------- - src/cairo_matrix.c | 24 +++ - src/cairo_xlib_surface.c | 52 +++++++- - src/cairoint.h | 9 ++ - 13 files changed, 982 insertions(+), 135 deletions(-) - -commit aab2fe8c059cc41451ddf5e0719f18d77ef354f4 -Author: Carl Worth -Date: Mon May 17 08:03:17 2004 +0000 - - Do nothing when passed a NULL string. - - ChangeLog | 5 +++++ - src/cairo.c | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 4511a6cc7f52f461fb79635a6fc1ba9cafdcc66d -Author: Øyvind Kolås -Date: Tue May 11 13:59:09 2004 +0000 - - changed CAIRO_FILTER_DEFAULT to CAIRO_FILTER_BEST to make gradients easier. - - ChangeLog | 5 +++++ - src/cairoint.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit cdf8739c0968831d12a3b7c22e34296488eb1fa9 -Author: David Reveman -Date: Tue May 11 11:20:06 2004 +0000 - - Removed pattern_offset - - ChangeLog | 12 ++++++++++++ - src/cairo-gstate.c | 8 -------- - src/cairo-pattern.c | 10 ++-------- - src/cairo-surface.c | 8 +++----- - src/cairo_gstate.c | 8 -------- - src/cairo_pattern.c | 10 ++-------- - src/cairo_surface.c | 8 +++----- - src/cairoint.h | 1 - - 8 files changed, 22 insertions(+), 43 deletions(-) - -commit 2f7b4a3ad7a0760af023d350685d1acfdc528d2c -Author: Carl Worth -Date: Tue May 11 08:19:47 2004 +0000 - - Increment CAIRO_VERSION to 0.1.23. - Added notes for snapshot 0.1.23. - Add reminder to mention incompatible API changes in NEWS. Re-order steps to avoid clobbering pre-existing tar files. - - ChangeLog | 10 ++++++++++ - NEWS | 41 +++++++++++++++++++++++++++++++++++++++++ - RELEASING | 28 +++++++++++++++------------- - configure.in | 2 +- - 4 files changed, 67 insertions(+), 14 deletions(-) - -commit b743ed0342d0e6696df159e9739781fbcb1fac33 -Author: Carl Worth -Date: Tue May 11 06:52:19 2004 +0000 - - Several people have reported that cairo_clip is not working right now. And it's always been slow. - - BUGS | 6 ++++++ - ChangeLog | 5 +++++ - 2 files changed, 11 insertions(+), 0 deletions(-) - -commit 4162e1f16b6ea9d162872dcc2b6b612e0dcb7523 -Author: David Reveman -Date: Tue May 11 05:31:16 2004 +0000 - - Better surface pattern support - - ChangeLog | 10 ++++++ - configure.in | 2 +- - src/cairo_gl_surface.c | 77 +++++++++++++++++++++++++++++++++++------------ - 3 files changed, 68 insertions(+), 21 deletions(-) - -commit 1e20a2db0fa26c6882bc00f8ea00cbf1e4619884 -Author: Carl Worth -Date: Fri May 7 18:52:01 2004 +0000 - - Bail on NULL utf8 string. - Don't add two consecutive, identical points when decomposing the spline, (which was leading to an infinte loop in the stroke algorithm when it found a slope of (0,0)). - - ChangeLog | 9 +++++++++ - TODO | 4 ++-- - src/cairo-ft-font.c | 2 +- - src/cairo-spline.c | 7 +++++++ - src/cairo.h | 1 + - src/cairo_ft_font.c | 2 +- - src/cairo_spline.c | 7 +++++++ - 7 files changed, 28 insertions(+), 4 deletions(-) - -commit 9faef192afc6a1606518a8e6a0a8e4e27351d920 -Author: Carl Worth -Date: Thu May 6 05:50:23 2004 +0000 - - Leave clientClipType as CT_NONE if region is NULL (thanks to Vladimir Vukicevic ). - - pixman/AUTHORS | 1 + - pixman/ChangeLog | 6 ++++++ - pixman/src/icimage.c | 6 ++++-- - 3 files changed, 11 insertions(+), 2 deletions(-) - -commit c7230543b06d3ec4070073fbc55f344d09b26ea5 -Author: Carl Worth -Date: Tue May 4 12:00:22 2004 +0000 - - (_cairo_png_surface_copy_page): Don't close a file we didn't open. - - ChangeLog | 1 + - src/cairo_png_surface.c | 1 - - 2 files changed, 1 insertions(+), 1 deletions(-) - -commit 7398aa8e1e4328a85f8d2de0c5180712cfa842e8 -Author: Carl Worth -Date: Tue May 4 09:25:54 2004 +0000 - - Move all libpng-related code into copy_page. (unpremultiply_data): Add missing unpremultiply step. (_cairo_png_surface_copy_page): Move PNG output to copy_page. Add support for A8 and A1 images. Remove time from header (we may want to add it again later, but for now it messes up my test suite). (_cairo_png_surface_destroy): Call copy_page if it hasn't been called already. (_cairo_png_surface_show_page): Add implementation. - - BUGS | 4 + - ChangeLog | 12 +++ - src/cairo_png_surface.c | 232 ++++++++++++++++++++++++++++------------------- - 3 files changed, 153 insertions(+), 95 deletions(-) - -commit 423ea55410d86c8c8cc4fb5219941bcbdeab2a33 -Author: David Reveman -Date: Tue May 4 04:01:18 2004 +0000 - - Corrected some confusing comments about the math used for radial gradients - - ChangeLog | 5 +++++ - src/cairo-pattern.c | 24 ++++++++++++++++-------- - src/cairo_pattern.c | 24 ++++++++++++++++-------- - 3 files changed, 37 insertions(+), 16 deletions(-) - -commit 1876568f208f3067449988bad896be756eacacaf -Author: David Reveman -Date: Sat May 1 05:50:46 2004 +0000 - - cairo_surface_t pointer to cairo_surface_set_matrix - - ChangeLog | 5 +++++ - src/cairo_gl_surface.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit c0df5d4b1a28bb95e83cbfa232b1f4722d999c93 -Author: Carl Worth -Date: Thu Apr 29 22:09:05 2004 +0000 - - Don't set pattern_offset by the current point. Perhaps we can eliminate pattern_offset altogether now? - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 4 ---- - src/cairo_gstate.c | 4 ---- - 3 files changed, 6 insertions(+), 8 deletions(-) - -commit f516564f987b7030f52273d66c69acef4222ef29 -Author: David Reveman -Date: Thu Apr 29 20:26:56 2004 +0000 - - Updated linear and radial patterns - - ChangeLog | 25 ++++++ - configure.in | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-pattern.c | 226 +++++++++++++++++++++++++++--------------------- - src/cairo_gl_surface.c | 80 +++++++---------- - src/cairo_gstate.c | 2 +- - src/cairo_pattern.c | 226 +++++++++++++++++++++++++++--------------------- - src/cairoint.h | 7 +- - 8 files changed, 315 insertions(+), 255 deletions(-) - -commit c9c882d2b28f8bb9656224eed8adba5a5395b294 -Author: Carl Worth -Date: Thu Apr 29 07:26:53 2004 +0000 - - Added a BUG and a TODO item - - BUGS | 9 ++++++++- - TODO | 3 +++ - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit 09698566e1b238830eca1085a65f6292195805a9 -Author: David Reveman -Date: Wed Apr 28 02:14:23 2004 +0000 - - Support compositing with mask surface when mask is solid or multi-texturing is available - - ChangeLog | 8 ++++++++ - src/cairo_gl_surface.c | 17 ++++++++++++----- - 2 files changed, 20 insertions(+), 5 deletions(-) - -commit 37f6590708061a79f1b3b34efe550935b3a03d8c -Author: David Reveman -Date: Sun Apr 25 05:11:07 2004 +0000 - - Fixed conversion of pixman_box16_t to glitz_rectangle_t - - ChangeLog | 3 +++ - src/cairo_gl_surface.c | 8 ++++---- - 2 files changed, 7 insertions(+), 4 deletions(-) - -commit f870f16e98d4a3dcfdc2ab28f532fb510dc59124 -Author: David Reveman -Date: Sun Apr 25 04:02:37 2004 +0000 - - Converted shading routines to use fixed point values. - - ChangeLog | 31 ++++++ - src/cairo-pattern.c | 237 ++++++++++++++++++++++++------------------------ - src/cairo-surface.c | 8 +- - src/cairo_gl_surface.c | 36 +++++-- - src/cairo_pattern.c | 237 ++++++++++++++++++++++++------------------------ - src/cairo_surface.c | 8 +- - src/cairoint.h | 25 +++++- - 7 files changed, 327 insertions(+), 255 deletions(-) - -commit c82011dddd3d7f5ac50d61077cfa2c5dcb17a952 -Author: Carl Worth -Date: Fri Apr 23 10:08:53 2004 +0000 - - Fixed several function prototype mismatches between internal header file and implementation (thanks to Carlos Romero and gcc-3.4). - - ChangeLog | 8 ++++++++ - src/cairo-gstate.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo_gstate.c | 2 +- - src/cairo_surface.c | 2 +- - src/cairoint.h | 16 ++++++++-------- - 6 files changed, 20 insertions(+), 12 deletions(-) - -commit e172b7cec739ca57f9034d62029e00283a9ab84c -Author: David Reveman -Date: Thu Apr 22 02:22:36 2004 +0000 - - Fixed pattern source offset - - ChangeLog | 10 ++++++++++ - src/cairo-gstate.c | 8 ++++---- - src/cairo-pattern.c | 30 ++++++++++++++---------------- - src/cairo-surface.c | 14 +++++++------- - src/cairo_gl_surface.c | 10 +++++----- - src/cairo_gstate.c | 8 ++++---- - src/cairo_pattern.c | 30 ++++++++++++++---------------- - src/cairo_surface.c | 14 +++++++------- - src/cairoint.h | 2 +- - 9 files changed, 66 insertions(+), 60 deletions(-) - -commit c15c7b93647d997b7ba13e9fb511d5a5505cdc22 -Author: David Reveman -Date: Tue Apr 20 12:35:44 2004 +0000 - - Fixed missing limits.h includes - - ChangeLog | 11 +++++++++++ - src/cairo-pattern.c | 2 +- - src/cairo-traps.c | 4 ++-- - src/cairo_pattern.c | 2 +- - src/cairo_traps.c | 4 ++-- - src/cairoint.h | 4 ++++ - 6 files changed, 21 insertions(+), 6 deletions(-) - -commit eff1670123efce23f09d8015a9db00a9b7ae98a5 -Author: Carl Worth -Date: Fri Apr 16 08:56:45 2004 +0000 - - Added notes for snapshot 0.1.22. - Now depends on libpixman 0.1.1. Bump version to 0.1.22. - - ChangeLog | 5 +++++ - NEWS | 5 +++++ - configure.in | 4 ++-- - 3 files changed, 12 insertions(+), 2 deletions(-) - -commit b0f8dcdc83d3487a5016d813a4ee3284784b78c1 -Author: Carl Worth -Date: Fri Apr 16 08:52:00 2004 +0000 - - Add RELEASING file - - pixman/RELEASING | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 71 insertions(+), 0 deletions(-) - -commit a8106bae111dddf240ceb071bfb686a8d3cac782 -Author: Carl Worth -Date: Fri Apr 16 08:50:11 2004 +0000 - - Add notes for snapshot 0.1.1 - Increment LIBPIXMAN_VERSION to 0.1.1 - - pixman/ChangeLog | 4 ++++ - pixman/NEWS | 23 +++++++++++++++++++++++ - pixman/configure.in | 2 +- - 3 files changed, 28 insertions(+), 1 deletions(-) - -commit 3a29d7a5310b0e4bc76eb7a852a41d9b4634de31 -Author: Carl Worth -Date: Fri Apr 16 08:33:20 2004 +0000 - - Track pixman fixes to PIXMAN_FORMAT_NAME_*. - Explicitly add cases for all enum values to eliminate compiler warnings. - Remove proposal for surface_clip interface as cairo_clip should be able to cover this case now. - Added bug concerning negative ref_counts. - - BUGS | 6 ++++++ - ChangeLog | 13 +++++++++++++ - src/cairo-image-surface.c | 4 ++-- - src/cairo.h | 13 ------------- - src/cairo_image_surface.c | 4 ++-- - src/cairo_png_surface.c | 8 ++++++++ - 6 files changed, 31 insertions(+), 17 deletions(-) - -commit 821a9f2f6c663429abbacce89383af6171f65225 -Author: Carl Worth -Date: Fri Apr 16 08:32:53 2004 +0000 - - Fix bogus names such as PIXMAN_FORMAT_NAME_AR_GB32 that were left over from a broken search-and-replace. Normalize structure defintions, (eg. struct _pixman_region16_t -> struct pixman_region16). Normalize indentation. - Fix alphabetization. - - pixman/AUTHORS | 2 +- - pixman/ChangeLog | 16 ++++ - pixman/src/icformat.c | 6 +- - pixman/src/icimage.c | 4 +- - pixman/src/icimage.h | 30 ++++---- - pixman/src/icint.h | 6 +- - pixman/src/icrect.c | 8 +- - pixman/src/ictrap.c | 2 +- - pixman/src/pixman.h | 177 +++++++++++++++++++++++---------------------- - pixman/src/pixregion.c | 70 +++++++++--------- - pixman/src/pixregionint.h | 16 ++-- - 11 files changed, 177 insertions(+), 160 deletions(-) - -commit aa83e5c2c1fee1eb52f829f6cfd2e170e369e720 -Author: David Reveman -Date: Fri Apr 9 14:30:38 2004 +0000 - - Bump version to 0.1.21 - - ChangeLog | 4 ++++ - NEWS | 16 ++++++++++++++++ - configure.in | 2 +- - 3 files changed, 21 insertions(+), 1 deletions(-) - -commit 73df0e81cb6a5d43a1325f4722a7236bd554738f -Author: David Reveman -Date: Fri Apr 9 14:19:47 2004 +0000 - - Added OpenGL surface backend - - AUTHORS | 1 + - ChangeLog | 12 + - cairo.pc.in | 2 +- - configure.in | 26 ++ - src/Makefile.am | 9 +- - src/cairo-features.h.in | 2 + - src/cairo-pattern.c | 14 +- - src/cairo-surface.c | 12 +- - src/cairo.h | 16 + - src/cairo_gl_surface.c | 821 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_pattern.c | 14 +- - src/cairo_surface.c | 12 +- - 12 files changed, 912 insertions(+), 29 deletions(-) - -commit f713fe43cf18c221a840caab710dfdb25aaf6898 -Author: David Reveman -Date: Fri Apr 9 14:14:56 2004 +0000 - - Automatically detect available backends - - ChangeLog | 4 ++++ - configure.in | 55 ++++++++++++++++++++++++++++++++++++++++--------------- - 2 files changed, 44 insertions(+), 15 deletions(-) - -commit 69b9f89da7c510fafc172fd30d1a970e7c8ca69b -Author: Carl Worth -Date: Wed Apr 7 11:03:40 2004 +0000 - - Add note that announcement needs to include the URL - - RELEASING | 12 ++++++++---- - 1 files changed, 8 insertions(+), 4 deletions(-) - -commit 2e891bdd33e9b3d2c8b9297d01eacde317ebae22 -Author: Carl Worth -Date: Tue Apr 6 20:13:11 2004 +0000 - - Added notes for snapshot 0.1.20. - Added new RELEASING file. - - ChangeLog | 6 ++++ - NEWS | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - RELEASING | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 149 insertions(+), 2 deletions(-) - -commit b26a742bcfe2c81b99c2c5e26acc10ad259cb4ef -Author: David Reveman -Date: Tue Apr 6 09:45:17 2004 +0000 - - Added new pattern API - - src/cairo-pattern.c | 716 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_pattern.c | 716 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 1432 insertions(+), 0 deletions(-) - -commit e309090d2a18a896c67e731151b973b530f76980 -Author: David Reveman -Date: Tue Apr 6 09:36:12 2004 +0000 - - Added new pattern API - - ChangeLog | 82 +++++++ - cairo.pc.in | 2 +- - configure.in | 7 +- - src/Makefile.am | 4 +- - src/cairo-ft-font.c | 21 ++- - src/cairo-gstate.c | 528 +++++++++++++++++++++++++-------------------- - src/cairo-image-surface.c | 23 ++- - src/cairo-ps-surface.c | 10 +- - src/cairo-surface.c | 108 +++++++++ - src/cairo-traps.c | 37 ++++ - src/cairo-xcb-surface.c | 11 +- - src/cairo-xlib-surface.c | 15 +- - src/cairo.c | 33 +++- - src/cairo.h | 75 ++++++- - src/cairo_ft_font.c | 21 ++- - src/cairo_gstate.c | 528 +++++++++++++++++++++++++-------------------- - src/cairo_image_surface.c | 23 ++- - src/cairo_png_surface.c | 10 +- - src/cairo_ps_surface.c | 10 +- - src/cairo_surface.c | 108 +++++++++ - src/cairo_traps.c | 37 ++++ - src/cairo_xcb_surface.c | 11 +- - src/cairo_xlib_surface.c | 15 +- - src/cairoint.h | 150 ++++++++++++- - 24 files changed, 1339 insertions(+), 530 deletions(-) - -commit b17b04aa388541c0880698aed0f03796a3146d49 -Author: Carl Worth -Date: Fri Apr 2 08:01:09 2004 +0000 - - Move weight after slant to match the order in cairo_select_font. - Added notes on DPI for image-based backends and on proposal for new cairo_text_glyphs function. - Added BUG about cairo_show_text not advancing the current point. - - BUGS | 4 ++++ - ChangeLog | 11 +++++++++++ - TODO | 22 ++++++++++++++++++++++ - src/cairo.h | 11 +++++------ - 4 files changed, 42 insertions(+), 6 deletions(-) - -commit 72667ec5680c77fc0e89fcfe71e6fa72467991ff -Author: Carl Worth -Date: Tue Mar 30 18:55:48 2004 +0000 - - Add -lz. - - ChangeLog | 4 ++++ - src/Makefile.am | 3 ++- - src/cairo-ft-font.c | 2 +- - src/cairo_ft_font.c | 2 +- - 4 files changed, 8 insertions(+), 3 deletions(-) - -commit 9459871bbf4f027354c781b7d6bc1b9f6a4d1e05 -Author: Carl Worth -Date: Tue Mar 30 18:45:00 2004 +0000 - - Add checks for Xrender.h in xrender.pc is not found. Remove AC_HELP_STRING to be compatible with older versions of autoconf (thanks to Bill Spitzak ). - - AUTHORS | 1 + - ChangeLog | 4 ++++ - cairo.pc.in | 2 +- - configure.in | 18 ++++++++++++------ - 4 files changed, 18 insertions(+), 7 deletions(-) - -commit 76478e4ad004e25d1f0e71be660983eb85b8285e -Author: Carl Worth -Date: Tue Mar 30 17:49:30 2004 +0000 - - Add question on semantics with empty region. Fix missing return value. - Export for internal use. (_cairo_image_abstract_surface_set_clip_region): Add silly wrapper to match the backend interface. - Remove unused variables. - - ChangeLog | 12 ++++++++++++ - src/cairo-gstate.c | 4 ---- - src/cairo-image-surface.c | 17 +++++++++++++---- - src/cairo-xlib-surface.c | 7 +++++-- - src/cairo_gstate.c | 4 ---- - src/cairo_image_surface.c | 17 +++++++++++++---- - src/cairo_xlib_surface.c | 7 +++++-- - src/cairoint.h | 6 +++++- - 8 files changed, 53 insertions(+), 21 deletions(-) - -commit c7d2b0e0531633630823090a7d85c14b916275c0 -Author: Carl Worth -Date: Tue Mar 30 17:24:29 2004 +0000 - - Add proposal for cairo_xlib_surface_set_size. - Added note about problem with cairo_scale_font. - - AUTHORS | 2 +- - BUGS | 27 +++++++++++++++++++++++++++ - ChangeLog | 6 ++++++ - TODO | 13 ++++++++----- - src/cairo.h | 5 +++++ - 5 files changed, 47 insertions(+), 6 deletions(-) - -commit 3cd25474937c1ae2dbd17d28aaa5c7868f3902ef -Author: Olivier Andrieu -Date: Tue Mar 23 10:33:32 2004 +0000 - - Implement _set_clip_region by delegating it to the image backend. - Add a stub. - Add missing (?) cairo_init_clip - - ChangeLog | 11 +++++++++++ - src/cairo-ps-surface.c | 5 +++-- - src/cairo-xcb-surface.c | 11 ++++++++++- - src/cairo.h | 3 +++ - src/cairo_png_surface.c | 13 ++++++++++++- - src/cairo_ps_surface.c | 5 +++-- - src/cairo_xcb_surface.c | 11 ++++++++++- - 7 files changed, 52 insertions(+), 7 deletions(-) - -commit e576aeb222b5f7378cb01fd6df05e6daf43094dd -Author: Øyvind KolÃ¥s -Date: Mon Mar 22 17:56:35 2004 +0000 - - cairo usage is crashing Xnest - - BUGS | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 1d51df571348d8ebd8f978cfc5cff06e7b35b248 -Author: Dave Beckett -Date: Sat Mar 20 09:54:15 2004 +0000 - - Move the PNG_CFLAGS/_LIBS substitutes outside the conditional, to match what is already done for XCB. Do the same for XRENDER_CFLAGS/LIBS. - - ChangeLog | 4 ++++ - configure.in | 7 ++++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -commit ad255ad599d607ed1b16f2ac87ce64546a76bd16 -Author: Dave Beckett -Date: Sat Mar 20 08:20:40 2004 +0000 - - Substitute PNG_CFLAGS, PNG_LIBS on the configure path when use_png is not enabled to prevent the substituions being undefined. - - ChangeLog | 6 ++++++ - configure.in | 3 +++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 94551db67c610582be115bdc18ad4169c9f7db92 -Author: Graydon Hoare -Date: Fri Mar 19 15:47:25 2004 +0000 - - Add. - finalize and copy clip.region. Detect rectangular clips and push down to backend. - Add set_clip_region slot. (cairo_clip_rec_t): Add region slot. (_cairo_gstate_init_clip) (_cairo_surface_set_clip_region): Prototype. - Add. - Add. - Add. - not implemented. - - ChangeLog | 25 +++++++++ - src/cairo-gstate.c | 133 ++++++++++++++++++++++++++++++++++++++++++--- - src/cairo-image-surface.c | 12 ++++- - src/cairo-ps-surface.c | 12 ++++- - src/cairo-surface.c | 5 ++ - src/cairo-xlib-surface.c | 50 ++++++++++++++++- - src/cairo.c | 9 +++ - src/cairo_gstate.c | 133 ++++++++++++++++++++++++++++++++++++++++++--- - src/cairo_image_surface.c | 12 ++++- - src/cairo_ps_surface.c | 12 ++++- - src/cairo_surface.c | 5 ++ - src/cairo_xlib_surface.c | 50 ++++++++++++++++- - src/cairoint.h | 11 ++++ - 13 files changed, 445 insertions(+), 24 deletions(-) - -commit 9e793ee5fceb1c6d41438f304eb01b481962fcb8 -Author: Jamey Sharp -Date: Wed Mar 17 09:44:26 2004 +0000 - - Fixed for latest XCB API. XCB headers can co-exist with Xlib headers now, so Cairo may be compiled with both backends in the same library. http://freedesktop.org/Software/XCBCompletedTasks#17_Mar_2004 - - ChangeLog | 10 ++++ - src/cairo-surface.c | 1 + - src/cairo-xcb-surface.c | 123 ++++++++++++++++++++++++---------------------- - src/cairo.h | 4 +- - src/cairo_surface.c | 1 + - src/cairo_xcb_surface.c | 123 ++++++++++++++++++++++++---------------------- - 6 files changed, 142 insertions(+), 120 deletions(-) - -commit e7f3335baf9cb7955e27115a2975db1eed71434a -Author: Thomas Hunger -Date: Thu Feb 26 14:47:21 2004 +0000 - - added missing links for rectangle and curve_to function - - doc/reference/doc.xml | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit f1b56497b10efe7cf70f6a9768dbeeff12efa031 -Author: Thomas Hunger -Date: Thu Feb 26 14:32:12 2004 +0000 - - added functions to describe the new backends, added text_extents function - - doc/reference/doc.xml | 12 +++++ - doc/reference/xml/cairo_set_target_drawable.xml | 45 +++++++++++++++++ - doc/reference/xml/cairo_set_target_png.xml | 51 ++++++++++++++++++++ - doc/reference/xml/cairo_set_target_ps.xml | 52 ++++++++++++++++++++ - doc/reference/xml/cairo_set_target_surface.xml | 2 +- - doc/reference/xml/cairo_set_target_xcb.xml | 58 +++++++++++++++++++++++ - doc/reference/xml/cairo_text_extents.xml | 47 ++++++++++++++++++ - doc/reference/xml/cairo_text_extents_t.xml | 29 +++++++++++ - 8 files changed, 295 insertions(+), 1 deletions(-) - -commit 02329029583bbc481b76ff3ce149c2bbec1bc096 -Author: Carl Worth -Date: Thu Feb 26 08:55:03 2004 +0000 - - Fix typo - - ChangeLog | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 529b16f119fb2c203a10c1d46c3810fd177da2fc -Author: Carl Worth -Date: Thu Feb 26 08:54:42 2004 +0000 - - Add Jordi and Olvier to the AUTHORS file. - Fix broken return value for nchars (thanks to Jordi Mas ). - - AUTHORS | 2 ++ - ChangeLog | 7 +++++++ - TODO | 6 +++--- - src/cairo-ft-font.c | 2 +- - src/cairo_ft_font.c | 2 +- - 5 files changed, 14 insertions(+), 5 deletions(-) - -commit bd5c27207aaa89ac4c55c55006f6253006c2a8b8 -Author: Olivier Andrieu -Date: Tue Feb 24 12:39:29 2004 +0000 - - forgot the SUBST for PNG_REQUIRES - - configure.in | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 995097752e18dffbbbdf4c80d29efb02e1bfdecf -Author: Olivier Andrieu -Date: Tue Feb 24 12:29:25 2004 +0000 - - PNG backend - - ChangeLog | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit 3b85dd1f9da71f886e48cb4cbe5a4edd0c9e6024 -Author: Olivier Andrieu -Date: Tue Feb 24 12:28:49 2004 +0000 - - Add PNG backend (cairo_set_target_png and cairo_png_surface_create). - - src/cairo-features.h.in | 2 + - src/cairo.h | 25 ++++ - src/cairo_png_surface.c | 314 +++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 341 insertions(+), 0 deletions(-) - -commit 0a07e28683ef94f393fbc20aedf6d21bd58c9aa9 -Author: Olivier Andrieu -Date: Tue Feb 24 12:27:52 2004 +0000 - - autoconf support for the PNG backend. Bump version to 0.1.19. - - cairo.pc.in | 2 +- - configure.in | 22 +++++++++++++++++++++- - 2 files changed, 22 insertions(+), 2 deletions(-) - -commit 13911e3d67f272920fa0a66ec6dcb8f910f771cd -Author: Olivier Andrieu -Date: Tue Feb 24 12:27:13 2004 +0000 - - PNG backend support, removed references to X_LIBS and X_CFLAGS. - - src/Makefile.am | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit cf069c127a5721f15876485c717a45f5e1d9f4e1 -Author: Carl Worth -Date: Tue Feb 24 12:22:56 2004 +0000 - - Fix email address for Anders Carlsson. - - pixman/AUTHORS | 2 +- - pixman/ChangeLog | 1 + - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit 0e02e71cf54331aa54eee2d39433be117bae1b7d -Author: Carl Worth -Date: Tue Feb 24 10:45:26 2004 +0000 - - Add attribution for many people who have made generous contributions to cairo. This list was generated by sifting through the ChangeLog. Please let me know if I have missed anyone. - Add some historical notes on cairo development, prior to when we began to maintain this NEWS file. - Add pointer to cairographics.org. Fix to use cairo rather than Cairo when not at the beginning of a sentence. - Remove cairo_current_path, cairo_current_path_flat, cairo_text_extents, cairo_glyph_extents, cairo_text_path, and cairo_glyph_path from the TODO list as they have all been implemented now. - - AUTHORS | 16 +++++++++++++++- - ChangeLog | 18 ++++++++++++++++++ - NEWS | 35 ++++++++++++++++++++++++++++++++++- - README | 3 ++- - TODO | 5 +---- - 5 files changed, 70 insertions(+), 7 deletions(-) - -commit 431548c3d8a998d9b8b5615469b500d3e11edc06 -Author: Carl Worth -Date: Tue Feb 24 10:41:11 2004 +0000 - - Added attribution for several authors after sifting through the ChangeLog. - - pixman/AUTHORS | 24 ++++++++++++++++-------- - pixman/ChangeLog | 5 +++++ - 2 files changed, 21 insertions(+), 8 deletions(-) - -commit faa43926612d6edcdf6caf895399a459cf55f72e -Author: Thomas Hunger -Date: Tue Feb 24 07:18:45 2004 +0000 - - applied patch from Ravindra fixing missing lines in doc.xml - - doc/reference/doc.xml | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 554726563f67d3a8428b03e2af41f4a88baffc5e -Author: Thomas Hunger -Date: Fri Feb 20 14:23:17 2004 +0000 - - added missing xml/cairo_set_target_image.xml - - doc/reference/xml/cairo_arc.xml | 4 +- - doc/reference/xml/cairo_arc_negative.xml | 4 +- - doc/reference/xml/cairo_current_font.xml | 4 +- - doc/reference/xml/cairo_current_font_extents.xml | 2 +- - doc/reference/xml/cairo_curve_to.xml | 2 +- - doc/reference/xml/cairo_rectangle.xml | 4 +- - doc/reference/xml/cairo_rel_curve_to.xml | 10 ++-- - doc/reference/xml/cairo_set_font.xml | 4 +- - doc/reference/xml/cairo_set_target_image.xml | 58 ++++++++++++++++++++++ - doc/reference/xml/cairo_set_target_surface.xml | 2 +- - doc/reference/xml/cairo_show_glyphs.xml | 2 +- - doc/reference/xml/cairo_show_text.xml | 2 +- - doc/reference/xml/cairo_transform_font.xml | 2 +- - 13 files changed, 79 insertions(+), 21 deletions(-) - -commit c3fe1bbe33f65b28cc6fdcc3945a77a6cd233c3f -Author: Carl Worth -Date: Tue Feb 17 18:47:34 2004 +0000 - - Add comment indication cairo_copy will be going away at some point. Some indentation fixes. - - ChangeLog | 3 +++ - src/cairo.h | 6 +++--- - 2 files changed, 6 insertions(+), 3 deletions(-) - -commit 122b2d850459b3acfcd5194018bd78da1dde14b7 -Author: Carl Worth -Date: Tue Feb 17 18:38:23 2004 +0000 - - Bump version to 0.1.18. Includes new functions cairo_current_path, cairo_current_path_flat, cairo_surface_get_filter. Support for XCB backend. Fixes for building in cygwin. Adds cairo_surface_get_filter. - Add new path query functions. - Implement support for cairo_current_path and cairo_current_path_flat. These functions just provide an interface to _cairo_path_interpret and take care of mapping from device space back to user space. - - ChangeLog | 20 +++++++ - configure.in | 2 +- - src/cairo-gstate.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.c | 37 +++++++++++++ - src/cairo.h | 25 ++++++++- - src/cairo_gstate.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 8 +++ - 7 files changed, 392 insertions(+), 4 deletions(-) - -commit 9349c95f28f574747ec24b010f9a9e40327dc466 -Author: Carl Worth -Date: Fri Feb 13 06:13:19 2004 +0000 - - Add some notes from JG's TODO list on the wiki: http://cairographics.org/CairoToDoList. (Also testing automated mailing to cairo-commit list). - - ChangeLog | 6 ++++++ - TODO | 12 +++++++++++- - 2 files changed, 17 insertions(+), 1 deletions(-) - -commit b55f1076793229d182463100ed9de2a68dd3c77b -Author: Carl Worth -Date: Thu Feb 12 19:02:33 2004 +0000 - - Add typedefs for new callbacks to be used by cairo_current_path: cairo_move_to_func, cairo_line_to_func, cairo_curve_to_func, and cairo_close_path_func. - cairo_path.last_move_point and cairo_path.current_point are now fixed-point not doubles for consistency. - Now accept 4 explicit function pointers rather than a structure. Eliminate unnecessary done_path callback. - Track change in _cairo_path_interpret. Code previously in done_path callback is now here immediately after call to _cairo_path_interpret. - Internal _cairo_path API modified to accept fixed-point data everywhere. Much cleaner this way. - Have to convert doubles to fixed-point to track changes in _cairo_path API. - Keep data in fixed-point rather than going through intermediate doubles. Track changes in _cairo_path API. - New function to help when working with freetype. - - ChangeLog | 47 ++++++++++++++++++++ - src/cairo-fixed.c | 7 +++ - src/cairo-ft-font.c | 56 ++++++++++++++++-------- - src/cairo-gstate.c | 88 +++++++++++++++++++++++++++++-------- - src/cairo-path-bounds.c | 23 +++------- - src/cairo-path-fill.c | 58 ++++++++---------------- - src/cairo-path-stroke.c | 107 ++++++++++++++++++++------------------------- - src/cairo-path.c | 111 +++++++++++++++++++++-------------------------- - src/cairo-traps.c | 2 +- - src/cairo.h | 13 ++++++ - src/cairo_fixed.c | 7 +++ - src/cairo_ft_font.c | 56 ++++++++++++++++-------- - src/cairo_gstate.c | 88 +++++++++++++++++++++++++++++-------- - src/cairo_path.c | 111 +++++++++++++++++++++-------------------------- - src/cairo_path_bounds.c | 23 +++------- - src/cairo_path_fill.c | 58 ++++++++---------------- - src/cairo_path_stroke.c | 107 ++++++++++++++++++++------------------------- - src/cairo_traps.c | 2 +- - src/cairoint.h | 63 ++++++++++++++++----------- - 19 files changed, 573 insertions(+), 454 deletions(-) - -commit 810037bc7c7707337fb1e7682b36651f6a7c4e04 -Author: Jamey Sharp -Date: Mon Feb 2 23:24:14 2004 +0000 - - Ported the Xlib surface backend to XCB. - - ChangeLog | 9 + - configure.in | 19 ++ - src/Makefile.am | 9 +- - src/cairo-features.h.in | 2 + - src/cairo-xcb-surface.c | 776 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 13 + - src/cairo_xcb_surface.c | 776 +++++++++++++++++++++++++++++++++++++++++++++++ - 7 files changed, 1602 insertions(+), 2 deletions(-) - -commit 34e0e7eec8a1a8434c5ad52fb754f2bbaf224ced -Author: Graydon Hoare -Date: Mon Feb 2 11:20:44 2004 +0000 - - New predicate. (_cairo_xlib_surface_set_filter): Skip filterless servers. (_cairo_xlib_surface_clone_similar): Fix typo. - - ChangeLog | 7 +++++++ - src/cairo-xlib-surface.c | 8 +++++--- - src/cairo_xlib_surface.c | 8 +++++--- - 3 files changed, 17 insertions(+), 6 deletions(-) - -commit b66bbf48790238174efd1491bfcd8c0d77f43f13 -Author: Graydon Hoare -Date: Fri Jan 30 14:44:18 2004 +0000 - - New "filter" field. - New function. (cairo_surface_set_filter): Store filter in surface. - Declare. - Copy filter setting. (_cairo_xlib_surface_set_filter): Use constants from Xrender.h - - ChangeLog | 11 +++++++++++ - src/cairo-surface.c | 7 +++++++ - src/cairo-xlib-surface.c | 18 ++++++++---------- - src/cairo.h | 3 +++ - src/cairo_surface.c | 7 +++++++ - src/cairo_xlib_surface.c | 18 ++++++++---------- - src/cairoint.h | 1 + - 7 files changed, 45 insertions(+), 20 deletions(-) - -commit 62520eb2d15808934c0e76dc8f4fe02b01b11e64 -Author: Carl Worth -Date: Sat Jan 24 01:56:26 2004 +0000 - - Fix to use tessellate_polygon instead of tessellate_rectangle as the matrix may have skewed the coordinates into a non-rectangular shape. - - ChangeLog | 5 +++++ - src/cairo-path-stroke.c | 25 +++++++++++++++++++------ - src/cairo_path_stroke.c | 25 +++++++++++++++++++------ - 3 files changed, 43 insertions(+), 12 deletions(-) - -commit f1d98d27a65ec2c7e04a018e69aee44e1d525ed7 -Author: Carl Worth -Date: Sat Jan 24 01:50:55 2004 +0000 - - Remove dead-code (useless n++). - - pixman/ChangeLog | 5 +++++ - pixman/src/iccompose.c | 4 ---- - 2 files changed, 5 insertions(+), 4 deletions(-) - -commit f05248faefe3d3c2e4445faf373f826ded496b8b -Author: Carl Worth -Date: Sat Jan 24 01:46:20 2004 +0000 - - Add missing break statements to switch. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 6 ++++++ - src/cairo_xlib_surface.c | 6 ++++++ - 3 files changed, 17 insertions(+), 0 deletions(-) - -commit 6d465f4e439f2b01214618040af7a5cf7e230c2a -Author: Thomas Hunger -Date: Fri Jan 23 14:13:20 2004 +0000 - - added and updated documentation concerning text handling - - doc/reference/doc.xml | 4 + - doc/reference/xml/cairo_arc.xml | 40 ++++++++++++ - doc/reference/xml/cairo_arc_negative.xml | 40 ++++++++++++ - doc/reference/xml/cairo_current_font.xml | 37 +++++++++++ - doc/reference/xml/cairo_current_font_extents.xml | 40 ++++++++++++ - doc/reference/xml/cairo_curve_to.xml | 70 ++++++++++++++++++++++ - doc/reference/xml/cairo_operator_t.xml | 54 ++++------------ - doc/reference/xml/cairo_rectangle.xml | 47 +++++++++++++++ - doc/reference/xml/cairo_rel_curve_to.xml | 70 ++++++++++++++++++++++ - doc/reference/xml/cairo_select_font.xml | 18 +++++- - doc/reference/xml/cairo_set_font.xml | 40 ++++++++++++ - doc/reference/xml/cairo_show_glyphs.xml | 46 ++++++++++++++ - doc/reference/xml/cairo_show_text.xml | 4 +- - doc/reference/xml/cairo_transform_font.xml | 41 +++++++++++++ - 14 files changed, 506 insertions(+), 45 deletions(-) - -commit 077fcb36da9d7edf8f7689ca913abce2c311925f -Author: Richard Worth -Date: Thu Jan 22 21:05:08 2004 +0000 - - Add '-no-undefined' to end of libpixman_la_LDFLAGS tp enable building shared libary under cygwin. - Remove all 'extern ' and ' __external_linkage' (macro for __declspec(dllexport) and __declspec(dllimport)) from function declarations. These are no longer needed for cygwin. - - pixman/ChangeLog | 10 ++++ - pixman/src/Makefile.am | 2 +- - pixman/src/pixman.h | 107 +++++++++++++++++++++--------------------------- - 3 files changed, 58 insertions(+), 61 deletions(-) - -commit 5c490d216050fc5261811805d81dc5de98004794 -Author: Richard Worth -Date: Thu Jan 22 20:47:24 2004 +0000 - - Add '-no-undefined' to end of libcairo_la_LDFLAGS to enable building shared library under cygwin. - Remove all 'extern ' and ' __external_linkage' (macro for __declspec(dllexport) and __declspec(dllimport)) from function declarations. These are no longer needed for cygwin. - Changed type of _line_segs_intersect_ceil from 'static cairo_fixed_t' to 'static int' to match definition. This was necessary to compile under cygwin. - - ChangeLog | 14 +++ - src/Makefile.am | 2 +- - src/cairo-traps.c | 2 +- - src/cairo.h | 249 +++++++++++++++++++++++++---------------------------- - src/cairo_traps.c | 2 +- - 5 files changed, 135 insertions(+), 134 deletions(-) - -commit 22792e2e7a118c7ef97f89617a5932e412453fe4 -Author: Carl Worth -Date: Wed Dec 17 13:17:13 2003 +0000 - - Remove trailing commas from enum, (some compilers like to complain about this). - - pixman/ChangeLog | 5 +++++ - pixman/src/pixman.h | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit decf8b395cc277d60267c75e3685ac4ead731d63 -Author: Carl Worth -Date: Wed Dec 17 12:59:37 2003 +0000 - - Remove trailing commas from enums, (some compilers like to complain about them). - - ChangeLog | 5 +++++ - README | 13 ++++++------- - src/cairo.h | 4 ++-- - 3 files changed, 13 insertions(+), 9 deletions(-) - -commit 2eb2408ca786fab6234239d4ade689af8589ac1b -Author: Dave Beckett -Date: Tue Dec 16 09:42:19 2003 +0000 - - Replace requiring libpixregion, libic with libpixman. - - ChangeLog | 4 ++++ - README | 4 +--- - 2 files changed, 5 insertions(+), 3 deletions(-) - -commit 75a7541cf1a8456780dbf446624a2a751fc24346 -Author: Carl Worth -Date: Tue Dec 16 08:29:01 2003 +0000 - - Fix typo - - NEWS | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit aa7c663ea844b8caf230b428ee593e785172d66d -Author: Carl Worth -Date: Tue Dec 16 08:27:17 2003 +0000 - - Add more notes culled from the ChangeLog. - - ChangeLog | 4 ++++ - NEWS | 35 ++++++++++++++++++++++++++++++----- - 2 files changed, 34 insertions(+), 5 deletions(-) - -commit a194d9ecd43e164e93899bad9ce82b63cd8712c7 -Author: Carl Worth -Date: Tue Dec 16 08:06:49 2003 +0000 - - Begin maintaining NEWS file. Add notes on 0.1.17. - - ChangeLog | 2 ++ - NEWS | 19 +++++++++++++++++++ - 2 files changed, 21 insertions(+), 0 deletions(-) - -commit fb93261e3739fd15f8001c8d3631c4baabf3482c -Author: Carl Worth -Date: Tue Dec 16 07:20:20 2003 +0000 - - Bump version to 0.1.17 for new functions: cairo_text_extents, cairo_glyph_extents, cairo_text_path, cairo_glyph_path. - Re-enable cairo_text_path and cairo_glyph_path. - Add missing transformation. - Initial implementation of glyph_path. - - ChangeLog | 19 +++++++++ - configure.in | 2 +- - src/cairo-ft-font.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++----- - src/cairo-gstate.c | 10 ++++- - src/cairo.c | 3 - - src/cairo.h | 8 +--- - src/cairo_ft_font.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++----- - src/cairo_gstate.c | 10 ++++- - src/cairoint.h | 3 +- - 9 files changed, 236 insertions(+), 37 deletions(-) - -commit bf40046a4ea5c92de6afbf8b77ba0610ff8c05ba -Author: Carl Worth -Date: Tue Dec 16 07:10:48 2003 +0000 - - Move all current_point state fields from cairo_gstate_t to cairo_path_t. - Add current_point state. (_cairo_path_current_point): New function. (_cairo_path_rel_move_to): (_cairo_path_rel_line_to): (_cairo_path_rel_curve_to): New functions. - Eliminate current_point state. (_cairo_gstate_show_text): (_cairo_gstate_text_path): Use new _cairo_path_current_point. - - ChangeLog | 31 ++++++++++++ - src/cairo-gstate.c | 130 ++++++++-------------------------------------------- - src/cairo-path.c | 110 ++++++++++++++++++++++++++++++++++++++++++-- - src/cairo_gstate.c | 130 ++++++++-------------------------------------------- - src/cairo_path.c | 110 ++++++++++++++++++++++++++++++++++++++++++-- - src/cairoint.h | 23 ++++++++-- - 6 files changed, 302 insertions(+), 232 deletions(-) - -commit b5983fab84409209c4af6bdd7cd5bdcf8cc7bb93 -Author: Carl Worth -Date: Tue Dec 16 06:58:10 2003 +0000 - - A couple of changes missed in the last batch of commits (reordering so that path is final argument). - - ChangeLog | 4 ++++ - src/cairo-ft-font.c | 12 ++++++------ - src/cairo_ft_font.c | 12 ++++++------ - 3 files changed, 16 insertions(+), 12 deletions(-) - -commit 368b4d269b48f19af5ba0d01613356f3bfa5e982 -Author: Carl Worth -Date: Tue Dec 16 06:50:37 2003 +0000 - - Change cairo_font_backend_t to use a void * for the abstract font. Put create, copy, and destroy as the first functions in the list. Fix text_path and glyph_path so that the path to be returned is the last argument. Add x,y arguments to text_path. - Compute x,y now needed by cairo_font_text_path. (_cairo_gstate_glyph_path): Track change in cairo_font_text/glyph_path (path argument is now last). - Switch to new macro-based mechanism for including freetype headers. (cairo_ft_font_face): (cairo_ft_font_pattern): Minor cleanup. (_cairo_ft_font_copy): (_cairo_ft_font_destroy): (_utf8_to_glyphs): (_cairo_ft_font_font_extents): (_cairo_ft_font_glyph_extents): (_cairo_ft_font_text_extents): (_cairo_ft_font_show_glyphs): (_cairo_ft_font_show_text): Track changes to cairo_font_backend_t interface. - Track changes to cairo_font_backend_t interface. - - ChangeLog | 31 +++++++++++ - src/cairo-font.c | 15 +++--- - src/cairo-ft-font.c | 148 ++++++++++++++++++++++++++------------------------- - src/cairo-gstate.c | 30 +++++++++-- - src/cairo_font.c | 15 +++--- - src/cairo_ft_font.c | 148 ++++++++++++++++++++++++++------------------------- - src/cairo_gstate.c | 30 +++++++++-- - src/cairoint.h | 90 ++++++++++++++++--------------- - 8 files changed, 295 insertions(+), 212 deletions(-) - -commit c18a81e25259100c28c384333578fa6ce1374d21 -Author: Carl Worth -Date: Tue Dec 16 06:15:53 2003 +0000 - - Change instances of Cairo to cairo where necessary. Add note about broken dashing on splines. - - ChangeLog | 5 ++++ - TODO | 64 +++++++++++++++++++++++++++++++----------------------------- - 2 files changed, 38 insertions(+), 31 deletions(-) - -commit dea75c833335f05230bb0c3d252553ce369909eb -Author: Carl Worth -Date: Mon Dec 15 19:00:15 2003 +0000 - - Rename cairo_text_exextents_t fields: left_side_bearing -> x_bearing ascent -> y_bearing right_side_bearing (replaced by) width descent (replaced by) height - - ChangeLog | 12 ++++++++++++ - src/cairo-ft-font.c | 16 ++++++++-------- - src/cairo-gstate.c | 16 ++++++++-------- - src/cairo.h | 8 ++++---- - src/cairo_ft_font.c | 16 ++++++++-------- - src/cairo_gstate.c | 16 ++++++++-------- - 6 files changed, 48 insertions(+), 36 deletions(-) - -commit 39bb4f1d99a23c8668fd73f4616f8811b9db1f4b -Author: Carl Worth -Date: Mon Dec 15 18:26:51 2003 +0000 - - Need to divide out the scale factor to return user-space extents. (_cairo_gstate_glyph_extents): Don't transform glyph locations as they're not relevant to extents. - Clean up implementation. (_cairo_ft_font_glyph_extents): Initial implementation. Thanks to John Ellson for most of the work on this function. (_cairo_ft_font_show_text): Clean to use num_glyphs not nglyphs. - Re-enable cairo_text/glyph_extents. - - ChangeLog | 19 ++++++++++ - src/cairo-ft-font.c | 98 +++++++++++++++++++++++++++++++++++++++++---------- - src/cairo-gstate.c | 45 +++++++++++++---------- - src/cairo.c | 2 - - src/cairo.h | 5 +-- - src/cairo_ft_font.c | 98 +++++++++++++++++++++++++++++++++++++++++---------- - src/cairo_gstate.c | 45 +++++++++++++---------- - src/cairoint.h | 3 ++ - 8 files changed, 232 insertions(+), 83 deletions(-) - -commit 9d4fe7e36990e39f849b0983daff6bf0b690458a -Author: Carl Worth -Date: Mon Dec 15 18:02:03 2003 +0000 - - Move this function from cairo_ft_font.c (_get_scale_factors). - - ChangeLog | 3 +++ - src/cairo-ft-font.c | 18 ++---------------- - src/cairo-matrix.c | 19 +++++++++++++++++++ - src/cairo_ft_font.c | 18 ++---------------- - src/cairo_matrix.c | 19 +++++++++++++++++++ - 5 files changed, 45 insertions(+), 32 deletions(-) - -commit 0095dcb49d5a10f8ab62aeff1809587250a09575 -Author: Carl Worth -Date: Mon Dec 15 17:26:25 2003 +0000 - - Fix minor errors in fixed/floating-point conversion. - - ChangeLog | 3 +++ - src/cairo-ft-font.c | 10 ++++------ - src/cairo_ft_font.c | 10 ++++------ - 3 files changed, 11 insertions(+), 12 deletions(-) - -commit 1cd1330aa3967fb57a646a60e4fcb478c631cda6 -Author: Carl Worth -Date: Mon Dec 15 14:20:56 2003 +0000 - - font->show_glyphs no longer accepts an offset point. - _utf8_to_glyphs now accepts a point by which each glyph should be offset. (cairo_ft_font_backend): Remove evil void * casts on function pointers. - Fix to not require a current point. - Move initialization of current device-space point from setup_text_rendering_context to _cairo_gstate_show_text. (_cairo_gstate_show_glyphs): Fix to not reference current point. - - ChangeLog | 22 ++++++++++++++++++++++ - src/cairo-font.c | 4 +--- - src/cairo-ft-font.c | 40 ++++++++++++++++++++-------------------- - src/cairo-gstate.c | 34 ++++++++++++++++------------------ - src/cairo_font.c | 4 +--- - src/cairo_ft_font.c | 40 ++++++++++++++++++++-------------------- - src/cairo_gstate.c | 34 ++++++++++++++++------------------ - src/cairoint.h | 4 ---- - 8 files changed, 96 insertions(+), 86 deletions(-) - -commit 8b00a61e8b2f6dbbe7e19a40959fada69469106c -Author: Dave Beckett -Date: Fri Dec 12 16:00:19 2003 +0000 - - Add compatibility defines FONTCONFIG_LIBS, X_LIBS, XRENDER_LIBS to keep automake happy - they look like automake variable names. - - ChangeLog | 6 ++++++ - src/Makefile.am | 8 ++++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -commit b694e4d1ffa480c0ec151a3030eb2dfca63b5b93 -Author: Dave Beckett -Date: Fri Dec 12 15:11:23 2003 +0000 - - (libpixman_la_SOURCES): slim_export.h slim_import.h gone. - - pixman/ChangeLog | 1 + - pixman/src/Makefile.am | 2 -- - 2 files changed, 1 insertions(+), 2 deletions(-) - -commit d9febe2fb4e14efefb4463a74bb9e6758c8cccfc -Author: Dave Beckett -Date: Fri Dec 12 15:10:12 2003 +0000 - - src/Makefile.am: Remove LIBPIXMAN_CFLAGS/LIBS cruft. - - pixman/ChangeLog | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 09abb6df40522318f106a0d612fa2b7c98ddca8c -Author: Dave Beckett -Date: Fri Dec 12 15:09:55 2003 +0000 - - Remove LIBPIXMAN_CFLAGS/LIBS cruft. - - pixman/src/Makefile.am | 4 +--- - 1 files changed, 1 insertions(+), 3 deletions(-) - -commit 2309a8b98ace453aabcc955df369ca19bc3f4f54 -Author: Carl Worth -Date: Fri Dec 12 12:00:50 2003 +0000 - - Add comment about building in a font. - Check for NULL return value from cairo_ft_font_create. - - ChangeLog | 6 ++++++ - src/cairo-font.c | 6 ++++++ - src/cairo-ft-font.c | 3 +++ - src/cairo_font.c | 6 ++++++ - src/cairo_ft_font.c | 3 +++ - 5 files changed, 24 insertions(+), 0 deletions(-) - -commit e232072c12d5bd4bc1d093658428007e47114a2e -Author: Carl Worth -Date: Fri Dec 12 11:44:16 2003 +0000 - - Add conditionals for ps_surface functions, etc. - Get rid of AC_PATH_XTRA. Instead, find X includes/libraries only via pkg-config xrender. Switch option from --without-x to --disable-xlib Add option --disable-ps - Add -lz only if ps_surface backend is compiled. - - ChangeLog | 12 ++++++++++++ - cairo.pc.in | 2 +- - configure.in | 28 +++++++++++++++++++++++----- - src/Makefile.am | 8 +++++--- - src/cairo-features.h.in | 2 ++ - src/cairo.h | 10 ++++++++++ - 6 files changed, 53 insertions(+), 9 deletions(-) - -commit a02d8aaa595b4893f9b25715c0bd5fbc8ee7b3c8 -Author: Carl Worth -Date: Fri Dec 12 11:02:07 2003 +0000 - - Add missing definitions from slim_import.h. - - ChangeLog | 5 +++++ - src/cairo.h | 10 +++++++--- - 2 files changed, 12 insertions(+), 3 deletions(-) - -commit 47000a1737c02fc2cebcdfbefb9eb505f8824341 -Author: Carl Worth -Date: Fri Dec 12 10:51:21 2003 +0000 - - Updated .cvsignore - - pixman/.cvsignore | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 0278468fc1f68bc40348a3a387baa72dca357256 -Author: Carl Worth -Date: Fri Dec 12 10:47:59 2003 +0000 - - Fold contents of slim_export/import.h directly into this file to avoid dependence on external slim package. - Use quote-based include now that slim_internal is an internal file. - Follow convention of other files for multi-inclusion guard (_IC_INT_H_) - Remove cruft. - - pixman/ChangeLog | 15 ++++++++++++ - pixman/configure.in | 8 ------ - pixman/src/icint.h | 8 +++--- - pixman/src/pixman.h | 13 +++++++--- - pixman/src/pixregion.c | 2 +- - pixman/src/slim_export.h | 54 ---------------------------------------------- - pixman/src/slim_import.h | 53 --------------------------------------------- - 7 files changed, 29 insertions(+), 124 deletions(-) - -commit 849c780a63ecb0733f0cbe5cc90f2e9a1b77b7f7 -Author: Carl Worth -Date: Thu Dec 11 13:04:39 2003 +0000 - - Rename surface->ic_image to surface->pixman_image. - Rename functions and indentifiers with ic_ in the name that were missed by the recent renaming. Fix indentation problems left by the recent renaming. - Shift everything over from libic/libpixregion/slim to libpixman. Many thanks to Dave Beckett for all of the heavy lifting with this renaming effort. - - ChangeLog | 24 +++++++ - src/cairo-image-surface.c | 160 ++++++++++++++++++++++---------------------- - src/cairo_image_surface.c | 160 ++++++++++++++++++++++---------------------- - src/cairoint.h | 2 +- - 4 files changed, 185 insertions(+), 161 deletions(-) - -commit 5b38b14ff2bf8cfc74f5f14339d3aeff0d01a769 -Author: Carl Worth -Date: Thu Dec 11 12:43:58 2003 +0000 - - Directly fold in slim stuff rather than depending on it from an external package. - Switch from libic to libpixman. - Include pixman.h not ic.h. (__external_linkage): Directly fold in slim stuff rather than depending on it from an external package. - Look for libpixman instead of libic and slim. - - ChangeLog | 16 ++++++ - cairo.pc.in | 2 +- - configure.in | 2 +- - src/Makefile.am | 2 +- - src/cairo-image-surface.c | 120 ++++++++++++++++++++++---------------------- - src/cairo-ps-surface.c | 2 +- - src/cairo.h | 15 +++--- - src/cairo_image_surface.c | 120 ++++++++++++++++++++++---------------------- - src/cairo_ps_surface.c | 2 +- - src/cairoint.h | 30 ++++++++++- - 10 files changed, 177 insertions(+), 134 deletions(-) - -commit 18ae004832b6bf3d12a8ee4e9199bc847a46031f -Author: Andrew Chant -Date: Thu Dec 11 11:12:59 2003 +0000 - - cairo_select_font: _cairo_font_create: _cairo_gstate_select_font: cairo_ft_font_create: change char * family to const char * family - - ChangeLog | 8 ++++++++ - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairo_font.c | 2 +- - src/cairo_ft_font.c | 2 +- - src/cairo_gstate.c | 2 +- - src/cairoint.h | 4 ++-- - 10 files changed, 18 insertions(+), 10 deletions(-) - -commit c2696a7d8d6158345f0d386b8aa90c4634a7e254 -Author: Carl Worth -Date: Thu Dec 11 10:01:10 2003 +0000 - - Replace mysterious image->depth == 32 ? 24 : image->depth with simply image->depth. - - ChangeLog | 6 ++++++ - src/cairo-xlib-surface.c | 2 +- - src/cairo_xlib_surface.c | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 6cd6ac5a0572666990c6db9492ddf9fc0579a71a -Author: Carl Worth -Date: Thu Dec 11 09:35:07 2003 +0000 - - Add xrender to cairo.pc Renders line if needed. - - ChangeLog | 5 +++++ - cairo.pc.in | 2 +- - configure.in | 2 ++ - 3 files changed, 8 insertions(+), 1 deletions(-) - -commit b95d2066a56f656df0a1be5fe32115a186d4e46a -Author: Carl Worth -Date: Thu Dec 11 07:03:41 2003 +0000 - - Fix to use shifts and masks for endianness-correct PS image generation. Rename bgr to rgb now that the byte order issues are clear. - - ChangeLog | 7 +++++++ - src/cairo-ps-surface.c | 27 +++++++++++++-------------- - src/cairo_ps_surface.c | 27 +++++++++++++-------------- - 3 files changed, 33 insertions(+), 28 deletions(-) - -commit 9da5af44f4e999cf4394e114cdb799bb4dd054ad -Author: Dave Beckett -Date: Wed Dec 10 15:42:01 2003 +0000 - - Correct some more renames where the order of the renaming caused later renames to fail due to earlier prefixes failing. - - pixman/ChangeLog | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit b24029f4d05b2ba6951f0442dc68033f9727bda4 -Author: Dave Beckett -Date: Wed Dec 10 15:41:14 2003 +0000 - - fixes for wrong order of renames - - pixman/update.pl | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit af1ab1a9f25bf7465ae5d4addcfa99a82bddd5e0 -Author: Dave Beckett -Date: Wed Dec 10 15:39:45 2003 +0000 - - Correct some more renames where the order of the renaming caused later renames to fail due to earlier prefixes failing. - - pixman/src/ic.c | 2 +- - pixman/src/icformat.c | 12 ++++++------ - pixman/src/icimage.c | 4 ++-- - pixman/src/ictrap.c | 2 +- - pixman/src/ictri.c | 6 +++--- - pixman/src/pixman.h | 20 ++++++++++---------- - pixman/src/pixregion.c | 12 ++++++------ - 7 files changed, 29 insertions(+), 29 deletions(-) - -commit 4409b9fff97a34256c70de0c579d279557cd6017 -Author: Dave Beckett -Date: Wed Dec 10 15:27:11 2003 +0000 - - Add rename fixes - - pixman/update.pl | 37 +++++++++++++++++++++++++++++++++++++ - 1 files changed, 37 insertions(+), 0 deletions(-) - -commit 22b133453dbf54ada09399535b632b2e66f97e73 -Author: Dave Beckett -Date: Wed Dec 10 15:25:38 2003 +0000 - - Correct over-eager renames of the form pixman_thing_tName into pixman_thing_name. It was inevitable really this would happen! - - pixman/ChangeLog | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 4ecffdf8b9d7cf0a9bbd46d140d8b552957ee485 -Author: Dave Beckett -Date: Wed Dec 10 15:23:11 2003 +0000 - - Correct over-eager renames of the form pixman_thing_tName into pixman_thing_name. It was inevitable really this would happen! - - pixman/src/iccolor.c | 4 +- - pixman/src/iccompose.c | 4 +- - pixman/src/icformat.c | 24 +++++----- - pixman/src/icimage.c | 48 +++++++++--------- - pixman/src/icimage.h | 4 +- - pixman/src/icint.h | 16 +++--- - pixman/src/icpixels.c | 8 ++-- - pixman/src/icrect.c | 10 ++-- - pixman/src/ictransform.c | 2 +- - pixman/src/ictrap.c | 32 ++++++------ - pixman/src/ictri.c | 42 ++++++++-------- - pixman/src/pixman.h | 34 +++++++------- - pixman/src/pixregion.c | 116 ++++++++++++++++++++++---------------------- - pixman/src/pixregionint.h | 4 +- - 14 files changed, 174 insertions(+), 174 deletions(-) - -commit 0070bd372cdc8c2383c78e1d0f90552f9167526b -Author: Dave Beckett -Date: Wed Dec 10 14:28:55 2003 +0000 - - Added helper script for updating names in source. - - pixman/ChangeLog | 2 + - pixman/update.pl | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 113 insertions(+), 0 deletions(-) - -commit c2d04cfb0b83ddc90f8fce58c53228abf4ca6d9f -Author: Dave Beckett -Date: Wed Dec 10 14:26:22 2003 +0000 - - Rename exported Ic* and PixRegion* functions, types, enums to be prefixed pixman (or PIXMAN for enum values) - - pixman/ChangeLog | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 94988dbe09e93e0de0ee1706b8f2e1caf79b5238 -Author: Dave Beckett -Date: Wed Dec 10 14:20:05 2003 +0000 - - Rename exported Ic* and PixRegion* functions, types, enums to be prefixed pixman (or PIXMAN for enum values) - - pixman/src/ic.c | 190 ++++++------ - pixman/src/icblt.c | 74 +++--- - pixman/src/icbltone.c | 42 ++-- - pixman/src/iccolor.c | 14 +- - pixman/src/iccompose.c | 714 +++++++++++++++++++++--------------------- - pixman/src/icformat.c | 40 ++-- - pixman/src/icimage.c | 156 +++++----- - pixman/src/icimage.h | 110 ++++---- - pixman/src/icint.h | 290 +++++++++--------- - pixman/src/icpixels.c | 20 +- - pixman/src/icrect.c | 64 ++-- - pixman/src/icrop.h | 22 +- - pixman/src/icstipple.c | 6 +- - pixman/src/ictransform.c | 6 +- - pixman/src/ictrap.c | 82 +++--- - pixman/src/ictri.c | 110 ++++---- - pixman/src/icutil.c | 28 +- - pixman/src/pixman.h | 332 ++++++++++---------- - pixman/src/pixregion.c | 770 ++++++++++++++++++++++---------------------- - pixman/src/pixregionint.h | 26 +- - 20 files changed, 1548 insertions(+), 1548 deletions(-) - -commit e39e756403b44bd77aa89f17b1241249565431e2 -Author: Dave Beckett -Date: Wed Dec 10 14:04:15 2003 +0000 - - libpixman is the pixel manipulation library - - pixman/ChangeLog | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2841a7184299882c45f8364fb6c0798ffdb00471 -Author: Dave Beckett -Date: Wed Dec 10 13:29:40 2003 +0000 - - libpixman is the pixel manipulation library - - pixman/README | 6 +++--- - pixman/libpixman.pc.in | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 05bcf7a4b50f7c711ab66971912d0d752a59fcd6 -Author: Dave Beckett -Date: Tue Dec 9 16:10:29 2003 +0000 - - Initial version with the following changes to do the merging: - Change ic.h/pixregion.h headers inclusions to be pixman.h - Removed ic.h, merged into pixman.h - Merged pixregion.h (former name and CVS history of this file) and ic.h (now CVS deleted here). - Updated for libpixregion,libic to libpixman source merges. Added -I$(srcdir) so we get internal headers from here even when srcdir != builddir. - Updated for libpixregion,libic to libpixman package name, dependencies. - Merge of libic, slim AUTHORS, COPYING, README - Initial repository copy of libpixregion, libic, slim CVS. - Constructed a merged ChangeLog below via emacs VC mode (which rocks!) - - pixman/ChangeLog | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 351 insertions(+), 0 deletions(-) - -commit 7ba9ad29733e25399bf6f70232ce97f065d43d91 -Author: Dave Beckett -Date: Tue Dec 9 16:09:33 2003 +0000 - - Change ic.h/pixregion.h headers inclusions to be pixman.h - - pixman/src/icint.h | 4 ++-- - pixman/src/pixregionint.h | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit b76a5ccf7f78b68ff7eeea84af7930e09854581b -Author: Dave Beckett -Date: Tue Dec 9 16:08:36 2003 +0000 - - Removed ic.h, merged into pixman.h - - pixman/src/ic.h | 304 ------------------------------------------------------- - 1 files changed, 0 insertions(+), 304 deletions(-) - -commit 08e0943c9f175df5647258937977fc584cb15a94 -Author: Dave Beckett -Date: Tue Dec 9 16:08:16 2003 +0000 - - Merged pixregion.h (former name and CVS history of this file) and ic.h (now CVS deleted here). - - pixman/src/pixman.h | 309 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 304 insertions(+), 5 deletions(-) - -commit 9b086c333057d824aabcc7af1a66fa707152835c -Author: Dave Beckett -Date: Tue Dec 9 16:06:52 2003 +0000 - - Updated for libpixregion,libic to libpixman source merges. Added -I$(srcdir) so we get internal headers from here even when srcdir != builddir. - - pixman/src/Makefile.am | 36 ++++++++++++++++++++++++++++-------- - 1 files changed, 28 insertions(+), 8 deletions(-) - -commit d5bcf9e4f03017c474eae8c96a673f7348c8959c -Author: Dave Beckett -Date: Tue Dec 9 16:05:24 2003 +0000 - - Updated for libpixregion,libic to libpixman package name, dependencies. - - pixman/Makefile.am | 7 +++++-- - pixman/configure.in | 18 +++++++++--------- - pixman/libpixman.pc.in | 7 +++---- - 3 files changed, 17 insertions(+), 15 deletions(-) - -commit 43129191fe6d829cd0ebb5da9bdbbf5aac3a4b3c -Author: Dave Beckett -Date: Tue Dec 9 15:59:18 2003 +0000 - - Merge of libic, slim AUTHORS, COPYING, README - - pixman/AUTHORS | 6 ++++++ - pixman/COPYING | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - pixman/README | 32 ++++++++++++++++++++++++++++++++ - 3 files changed, 88 insertions(+), 0 deletions(-) - -commit f59f92836c610dd27c24d75fcc17bfdb4921f336 -Author: Carl Worth -Date: Mon Dec 8 18:07:56 2003 +0000 - - Allow names of all autofoo programs to be overridden via environment variables. - - pixman/ChangeLog.libic | 5 +++++ - pixman/ChangeLog.libpixregion | 5 +++++ - pixman/autogen.sh | 18 +++++++++++++----- - 3 files changed, 23 insertions(+), 5 deletions(-) - -commit 0949a86dd1cbe301c2d6ffc1aa4606d31b62cc39 -Author: Carl Worth -Date: Mon Dec 8 17:39:32 2003 +0000 - - Track change in cairo_path_callbacks interface. - - ChangeLog | 6 ++++++ - src/cairo-path-bounds.c | 46 ++++++++++++++++++++++++++++++---------------- - src/cairo_path_bounds.c | 46 ++++++++++++++++++++++++++++++---------------- - 3 files changed, 66 insertions(+), 32 deletions(-) - -commit 08553e75b7db97a3176e40768231c88f9b8eeabd -Author: Carl Worth -Date: Mon Dec 8 13:38:26 2003 +0000 - - Clean up cairo_path_callbacks to have move_to, line_to, curve_to, abd close_path instead of add_edge, add_spline, and done_sub_path. Much, much nicer. - Provide cairo_polygon_move_to and cairo_polygon_line_to instead of cairo_polygon_add_point. - Track change in cairo_polygon interface. - - ChangeLog | 16 +++ - src/cairo-path-fill.c | 101 ++++++++++++++----- - src/cairo-path-stroke.c | 253 +++++++++++++++++++++++++++++------------------ - src/cairo-path.c | 56 ++--------- - src/cairo-pen.c | 2 +- - src/cairo-polygon.c | 56 +++++------ - src/cairo_path.c | 56 ++--------- - src/cairo_path_fill.c | 101 ++++++++++++++----- - src/cairo_path_stroke.c | 253 +++++++++++++++++++++++++++++------------------ - src/cairo_pen.c | 2 +- - src/cairo_polygon.c | 56 +++++------ - src/cairoint.h | 22 ++--- - 12 files changed, 554 insertions(+), 420 deletions(-) - -commit 6aff3cbf96dca64e755075add11acc7fc35d6ebd -Author: Carl Worth -Date: Mon Dec 8 12:31:22 2003 +0000 - - Bump version to 0.1.16 since it actually has a hope of building, (due to fix for broken cairo-xlib.h includes). - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 76e2cd9a743538222fe77f11e95e174fadd1b308 -Author: Carl Worth -Date: Fri Dec 5 10:47:42 2003 +0000 - - Don't include obsolete cairo-xlib.h. - - ChangeLog | 2 ++ - src/cairo-xlib-surface.c | 1 - - src/cairo_xlib_surface.c | 1 - - 3 files changed, 2 insertions(+), 2 deletions(-) - -commit 97666464c0a38d5904869af1c742c87c3be15067 -Author: Carl Worth -Date: Fri Dec 5 10:30:39 2003 +0000 - - Allow names of all autofoo programs to be overridden via environment variables. - - ChangeLog | 3 +++ - autogen.sh | 18 +++++++++++++----- - 2 files changed, 16 insertions(+), 5 deletions(-) - -commit 928095693bff00e38b6d369ee0e7931f136f9082 -Author: Carl Worth -Date: Fri Dec 5 08:53:07 2003 +0000 - - Bump version to 0.1.15 for new CAIRO_HAS_XLIB_SURFACE macro. - Add missing #include - Rename cairo-config.h to cairo-features.h. - Rename XLIB_BACKEND_DEFINE to XLIB_SURFACE_FEATURE. Rename AM_CONDITIONAL HAVE_XLIB_BACKEND to CAIRO_HAS_XLIB_SURFACE. Rename user-visibile macro CAIRO_HAS_XLIB_BACKEND to CAIRO_HAS_XLIB_SURFACE. - - ChangeLog | 14 ++++++++++++++ - configure.in | 12 ++++++------ - src/.cvsignore | 2 +- - src/Makefile.am | 4 ++-- - src/cairo-config.h.in | 33 --------------------------------- - src/cairo-features.h.in | 33 +++++++++++++++++++++++++++++++++ - src/cairo.h | 10 ++++++---- - 7 files changed, 62 insertions(+), 46 deletions(-) - -commit aae17d3b6b15881f7bd8c4fac6a14a0c7b6729e6 -Author: Carl Worth -Date: Wed Dec 3 12:27:44 2003 +0000 - - Bumped version to 0.1.14 to indicate dropped cairo-xlib.h and new cairo-config.h. - New support for "./configure --without-x" to compile without the xlib backend. Many thanks to Sasha V. . - We do three things here: Make the pkg-config check for xrender conditional, set XLIB_BACKEND_DEFINE to either CAIRO_HAS_XLIB_BACKEND or CAIRO_HAS_NO_XLIB_BACKEND to be substituted into cairo-config.h, and set an AM_CONDITIONAL for HAVE_XLIB_BACKEND to enable conditional compilation of cairo_xlib_surface.c. Perhaps that could be simplified a tad, but it's what we have working now. Also split up various PKG_CHECK_MODULES into separate checks. - Remove errant reference to cairo_gstate_set_drawable. - Move xlib-specific calls in from old cairo-xlib.h, now guarded in #ifdef CAIRO_HAS_XLIB_BACKEND. - Make compilation of cairo_xlib_surface.c conditional. (INCLUDES, libcairo_la_LIBADD): Add the new variables from splitting up the PKG_CHECK_MODULES calls. - - ChangeLog | 28 ++++++++++++++++++++ - configure.in | 19 ++++++++++++- - src/.cvsignore | 1 + - src/Makefile.am | 14 +++++++--- - src/cairo-config.h.in | 33 ++++++++++++++++++++++++ - src/cairo-xlib.h | 67 ------------------------------------------------- - src/cairo.h | 28 ++++++++++++++++++++ - src/cairoint.h | 5 --- - 8 files changed, 117 insertions(+), 78 deletions(-) - -commit 9cf63b0390b71693a0eb3ba2e6065f7d3f6e240c -Author: Carl Worth -Date: Wed Dec 3 07:14:59 2003 +0000 - - Add -lz for the compress function used in the PS backend. - - ChangeLog | 5 +++++ - cairo.pc.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit ae96c8ab929513710cb11d71697759c4c3484aff -Author: Keith Packard -Date: Mon Dec 1 10:59:57 2003 +0000 - - Add note about degenerate path caps being broken - - ChangeLog | 5 +++++ - TODO | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 3369c676f0c8a6ce1e7531250a29726b650ecfcf -Author: Carl Worth -Date: Tue Nov 25 07:45:34 2003 +0000 - - Bump version to 0.1.5 for new 64-bit fixes. - One more fix needed for 64-bit machine (alpha in this case). Thanks to Jakub Bogusz . - - pixman/ChangeLog.libic | 8 ++++++++ - pixman/src/icutil.c | 4 ++-- - 2 files changed, 10 insertions(+), 2 deletions(-) - -commit 765a1ad0fd63abb055bb1cc2e1e2f48541cc5d81 -Author: Carl Worth -Date: Fri Nov 21 06:22:02 2003 +0000 - - Use 0 and 1 not False and True, (to avoid false dependency on X headers). - Use cairo_point_double_t not XPointDouble, (to avoid false dependency on X headers). Thanks to "Sasha V." for pointing these out. - - ChangeLog | 10 ++++++++++ - src/cairo-path-stroke.c | 2 +- - src/cairo-polygon.c | 4 ++-- - src/cairo_path_stroke.c | 2 +- - src/cairo_polygon.c | 4 ++-- - 5 files changed, 16 insertions(+), 6 deletions(-) - -commit 567f28e62a6d8dee7edd7357f01dd04562b3d071 -Author: Carl Worth -Date: Tue Nov 18 13:21:29 2003 +0000 - - Bump version to 0.1.13 for new freetype header compatibility. Fix comments regarding freetype version checking. - - ChangeLog | 6 ++++++ - configure.in | 6 +++--- - 2 files changed, 9 insertions(+), 3 deletions(-) - -commit a26c3d4a5925bf971dfac5be0ee492e5c7cb51a2 -Author: James Henstridge -Date: Tue Nov 18 07:28:16 2003 +0000 - - add FREETYPE_CFLAGS/LIBS to Libs/Cflags rather than requiring "freetype2", which doesn't exist in anything but the most recent version of freetype. - add freetype cflags/libs substitutions. - - ChangeLog | 9 +++++++++ - cairo.pc.in | 6 +++--- - configure.in | 9 +++++++-- - 3 files changed, 19 insertions(+), 5 deletions(-) - -commit 97cfea914d5276bd575264827293c3dfe458e678 -Author: Carl Worth -Date: Tue Nov 18 06:18:05 2003 +0000 - - Fix build for new freetype header include mechanism, (thanks to Christof Petig ) - - ChangeLog | 5 +++++ - src/cairo.h | 3 ++- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit 75ced44ae08358f1e8f64ecd1e93b69996e4b595 -Author: Carl Worth -Date: Mon Nov 17 07:43:06 2003 +0000 - - Fixes needed to compile libic on x86_64. Many thanks to David R Bacon . - - pixman/ChangeLog.libic | 6 ++++++ - pixman/src/icrop.h | 2 +- - pixman/src/icutil.c | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit f27af5d98d90395b6bddceecfec0d12181af5a50 -Author: Carl Worth -Date: Mon Nov 17 07:04:15 2003 +0000 - - Remove infinite looping when stroking with a line width at or close to 0.0. Thanks to Rob Buis and Noah Levitt for providing in-the-wild examples of SVG files with stroke-width:0 that demonstrated the problem, (cowboy.svg and albania.svg). - Do nothing if the pen is a degenerate, single point. This happens when the line width is a very small, non-zero value. - Do nothing when asked to stroke a path with a line_width of 0.0. Previously, this would lead to an infinite loop. - Force negative line width to 0.0. - Updated TODO list. - - ChangeLog | 21 +++++++++++++++++++++ - TODO | 18 +++++++++++++----- - src/cairo-gstate.c | 3 +++ - src/cairo-pen.c | 5 +++++ - src/cairo.c | 2 ++ - src/cairo_gstate.c | 3 +++ - src/cairo_pen.c | 5 +++++ - 7 files changed, 52 insertions(+), 5 deletions(-) - -commit 399803d067ab60d11cd20fd5826fae281c4081ae -Author: Carl Worth -Date: Mon Nov 10 08:16:34 2003 +0000 - - Fix typo (thanks to John Ellson ) - Add TODO items for intersection problem, programmatic patterns, missing text functions. - - ChangeLog | 8 ++++++++ - TODO | 19 +++++++++++++------ - configure.in | 2 +- - 3 files changed, 22 insertions(+), 7 deletions(-) - -commit 9aa2d445b7de7a8ebdf98c8bb6a13f985ee11b86 -Author: Dave Beckett -Date: Sat Nov 8 10:28:04 2003 +0000 - - Use freetype-config to get the freetype2 compiling and linking flags rather than use pkg-config which requires a quite new freetype2 to get freetype2.pc - - configure.in | 42 +++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 41 insertions(+), 1 deletions(-) - -commit f0d9ab5b2963bf2a35f09944de0d7084c4cfaa71 -Author: Carl Worth -Date: Fri Nov 7 11:03:09 2003 +0000 - - Move declaration to beginning of function to avoid requiring a C99-compatible compiler. - - ChangeLog | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit f86a979b49d3a737afea4697eeb9bce965587e3f -Author: Carl Worth -Date: Thu Nov 6 18:33:28 2003 +0000 - - Bumped version to 0.1.12 for new cairo_in_stroke and cairo_in_fill functions. - Added new cairo_in_stroke and cairo_in_fill. - * src/cairo_gstate.c (_cairo_gstate_in_stroke): (_cairo_gstate_in_fill): New functions to support for cairo_in_stroke and cairo_in_fill. Many thanks to Thomas Hunger for the initial implementation which demonstrated how easy this would be and pushed me to go and write it already. - Fixed to use _cairo_fixed_from_double instead of XDoubleToFixed. - - ChangeLog | 25 +++++++++++++++++++++++ - configure.in | 2 +- - src/cairo-gstate.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-path.c | 20 +++++++++--------- - src/cairo-traps.c | 44 +++++++++++++++++++++++++++++++++++++++- - src/cairo.c | 32 +++++++++++++++++++++++++++++ - src/cairo.h | 7 ++++++ - src/cairo_gstate.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo_path.c | 20 +++++++++--------- - src/cairo_traps.c | 44 +++++++++++++++++++++++++++++++++++++++- - src/cairoint.h | 15 +++++++++++++ - 11 files changed, 294 insertions(+), 27 deletions(-) - -commit a3ad0527950b7e161382d25a4891f403fcd87477 -Author: Carl Worth -Date: Thu Nov 6 13:32:15 2003 +0000 - - Move declaration to beginning of function to avoid requiring a C99-compatible compiler. - - src/cairo.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 7262e1554f83d011c77603298615a25102adf414 -Author: Carl Worth -Date: Thu Nov 6 12:53:39 2003 +0000 - - Add comment pondering memory management semantics of cairo_current_target_surface. - NULL out pen->vertices after free. - NULL out durface->data after free. - - ChangeLog | 12 ++++++++++++ - src/cairo-gstate.c | 5 +++++ - src/cairo-image-surface.c | 4 +++- - src/cairo-pen.c | 2 ++ - src/cairo.h | 2 ++ - src/cairo_gstate.c | 5 +++++ - src/cairo_image_surface.c | 4 +++- - src/cairo_pen.c | 2 ++ - 8 files changed, 34 insertions(+), 2 deletions(-) - -commit 3262cd9f9501b91d57b54a2bf4743138bea179ee -Author: Carl Worth -Date: Thu Nov 6 07:56:10 2003 +0000 - - Removed stale version from ic.h. Better to have no version listed than the wrong one. - - pixman/ChangeLog.libic | 9 +++++++++ - pixman/src/ic.h | 5 ----- - 2 files changed, 9 insertions(+), 5 deletions(-) - -commit 443b8cb6a295495b293cd65a62177f5d9799dec4 -Author: Carl Worth -Date: Tue Nov 4 10:46:45 2003 +0000 - - Enable cairo_set_target_surface (cr, NULL) to work. This can be useful to force the current target surface to be finalized. - - ChangeLog | 4 ++++ - src/cairo-gstate.c | 7 +++++++ - src/cairo_gstate.c | 7 +++++++ - 3 files changed, 18 insertions(+), 0 deletions(-) - -commit 05b399242937a79b8f2242220ff8ba27041cec23 -Author: Carl Worth -Date: Tue Nov 4 08:58:53 2003 +0000 - - Add explicit fontconfig and freetype2 dependencies that were implicitly dropped along with Xft. - - ChangeLog | 6 ++++++ - cairo.pc.in | 2 +- - configure.in | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 9e25bb231cbe6f4a18f786cd21b59099d09fbbe2 -Author: Carl Worth -Date: Tue Nov 4 08:36:03 2003 +0000 - - TODO: Note that cairo_show_page, cairo_copy_page, PostScript backend, real text API, and text support for the image backend have now all been implemented. - - ChangeLog | 6 ++++++ - TODO | 15 ++++----------- - 2 files changed, 10 insertions(+), 11 deletions(-) - -commit 8d88d5da1758732a995669e46ae10f2703331e29 -Author: Carl Worth -Date: Tue Nov 4 08:33:45 2003 +0000 - - Fix configure.in and cairo.pc.in now that cairo no longer depends on Xft. - - ChangeLog | 6 ++++++ - cairo.pc.in | 2 +- - configure.in | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 7765a3c6767203ca47df34822d529ad2dd4ef970 -Author: Carl Worth -Date: Mon Nov 3 19:17:31 2003 +0000 - - Add support for cairo_copy_page. Fixes so PS output can be more than one page. Bump version to 0.1.11 for new cairo_copy_page. - - ChangeLog | 23 ++++++++++ - configure.in | 2 +- - src/cairo-gstate.c | 9 ++++ - src/cairo-image-surface.c | 7 +++ - src/cairo-ps-surface.c | 101 +++++++++++++++++++++++++++++--------------- - src/cairo-surface.c | 15 +++++++ - src/cairo-xlib-surface.c | 7 +++ - src/cairo.c | 9 ++++ - src/cairo.h | 3 + - src/cairo_gstate.c | 9 ++++ - src/cairo_image_surface.c | 7 +++ - src/cairo_ps_surface.c | 101 +++++++++++++++++++++++++++++--------------- - src/cairo_surface.c | 15 +++++++ - src/cairo_xlib_surface.c | 7 +++ - src/cairoint.h | 13 +++++- - 15 files changed, 255 insertions(+), 73 deletions(-) - -commit aa40d2e2e1d3069d5225d046f1760855c9af4132 -Author: Carl Worth -Date: Mon Nov 3 18:24:45 2003 +0000 - - Add several missing checks for out of memory - - ChangeLog | 14 ++++++++++++++ - src/cairo-image-surface.c | 26 ++++++++++++++++++++------ - src/cairo-ps-surface.c | 4 ++++ - src/cairo_image_surface.c | 26 ++++++++++++++++++++------ - src/cairo_ps_surface.c | 4 ++++ - 5 files changed, 62 insertions(+), 12 deletions(-) - -commit cbc1ea78d6209d9a1fbdaa806d16797644ab0a18 -Author: Carl Worth -Date: Mon Nov 3 13:44:53 2003 +0000 - - Added __external_linkage to a few functions that were missing it. - - ChangeLog | 5 +++++ - src/cairo.h | 10 +++++----- - 2 files changed, 10 insertions(+), 5 deletions(-) - -commit 0819fbb164442f0feb69617275859e5c2af3c0a1 -Author: Carl Worth -Date: Sat Nov 1 05:23:55 2003 +0000 - - Add IcImageGetDepth. Bump version to 0.1.3 - - pixman/ChangeLog.libic | 6 ++++++ - pixman/src/ic.h | 3 +++ - pixman/src/icimage.c | 6 ++++++ - 3 files changed, 15 insertions(+), 0 deletions(-) - -commit 51da155707f207691cdcc39ac46bd93bdc3a61c9 -Author: Carl Worth -Date: Fri Oct 31 21:56:14 2003 +0000 - - Fix misplacement of PS origin, (was translating vertically by width instead of height). - - ChangeLog | 4 ++++ - src/cairo-ps-surface.c | 2 +- - src/cairo_ps_surface.c | 2 +- - 3 files changed, 6 insertions(+), 2 deletions(-) - -commit c6255f9c295dc2b273b8aa4c5ce558d6d2a05887 -Author: Carl Worth -Date: Fri Oct 31 21:30:35 2003 +0000 - - Implemented preliminary PostScript output support. Added cairo_show_page. Bumped version number to 0.1.10 - - ChangeLog | 29 ++++ - configure.in | 2 +- - src/Makefile.am | 1 + - src/cairo-gstate.c | 9 + - src/cairo-image-surface.c | 18 ++- - src/cairo-ps-surface.c | 377 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-surface.c | 15 ++ - src/cairo-xlib-surface.c | 7 +- - src/cairo.c | 9 + - src/cairo.h | 49 +++++- - src/cairo_gstate.c | 9 + - src/cairo_image_surface.c | 18 ++- - src/cairo_ps_surface.c | 377 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_surface.c | 15 ++ - src/cairo_xlib_surface.c | 7 +- - src/cairoint.h | 16 ++- - 16 files changed, 942 insertions(+), 16 deletions(-) - -commit 9736375a7a106b9fd6745dcea26572a63f1334f5 -Author: Carl Worth -Date: Fri Oct 31 19:27:33 2003 +0000 - - Do nothing when radius <= 0.0, (which is much better than the current infinite loop). - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 6 ++++++ - src/cairo_gstate.c | 6 ++++++ - 3 files changed, 18 insertions(+), 0 deletions(-) - -commit 32df4d217d968123de3c03760b951b9cc891e850 -Author: Carl Worth -Date: Fri Oct 31 10:41:37 2003 +0000 - - Moved all libic-related drawing into cairo_image_surface.c - - ChangeLog | 66 +++++++ - configure.in | 2 +- - src/Makefile.am | 43 +++--- - src/cairo-ft-font.c | 97 ++++++----- - src/cairo-gstate.c | 118 +++++++++---- - src/cairo-image-surface.c | 429 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-surface.c | 348 ++++++++++++------------------------- - src/cairo-xlib-surface.c | 386 ++++++++++++++++++++++++----------------- - src/cairo-xlib.h | 2 + - src/cairo.c | 6 +- - src/cairo.h | 92 +++++------ - src/cairo_ft_font.c | 97 ++++++----- - src/cairo_gstate.c | 118 +++++++++---- - src/cairo_image_surface.c | 429 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_surface.c | 348 ++++++++++++------------------------- - src/cairo_xlib_surface.c | 386 ++++++++++++++++++++++++----------------- - src/cairoint.h | 109 ++++++++---- - 17 files changed, 1999 insertions(+), 1077 deletions(-) - -commit 6dca2ab9d3c6e3801ce7887b9ad40f45385f00f0 -Author: Carl Worth -Date: Thu Oct 30 18:39:20 2003 +0000 - - Fixed a few memory leaks - - ChangeLog | 8 ++++++++ - src/cairo-xlib-surface.c | 40 ++++++++++++++++++++++++++++++++++------ - src/cairo_xlib_surface.c | 40 ++++++++++++++++++++++++++++++++++------ - 3 files changed, 76 insertions(+), 12 deletions(-) - -commit eb40d4b82e9e2b103d12064101b5026b1781794d -Author: Carl Worth -Date: Thu Oct 30 13:28:34 2003 +0000 - - Update copyright information in COPYING - - COPYING | 37 +++++++++++++++++++------------------ - 1 files changed, 19 insertions(+), 18 deletions(-) - -commit 5a9cf4f1a1c096d729cf50b8c0422325d44a5018 -Author: Carl Worth -Date: Thu Oct 30 12:39:49 2003 +0000 - - A set of changes to eliminate the static FT_Library field, (which could introduce nasty problems with respect to threading). With the new code, each font created with the toy API will own its own FT_Library. Meanwhile, cairo_ft_font_create now accepts an FT_Library parameter. - Bumped version number to 0.1.9 - - ChangeLog | 24 +++++++++++++++++++ - configure.in | 2 +- - src/cairo-ft-font.c | 62 ++++++++++++++++++++++++++++---------------------- - src/cairo.h | 2 +- - src/cairo_ft_font.c | 62 ++++++++++++++++++++++++++++---------------------- - 5 files changed, 96 insertions(+), 56 deletions(-) - -commit fb46d7390e0776e888d75533304fb5ce26dca04f -Author: Carl Worth -Date: Thu Oct 30 10:55:04 2003 +0000 - - A few cleanups to eliminate a memory leak. - - ChangeLog | 2 ++ - src/cairo-font.c | 40 +++++----------------------------------- - src/cairo-ft-font.c | 4 ++-- - src/cairo-gstate.c | 8 ++++---- - src/cairo_font.c | 40 +++++----------------------------------- - src/cairo_ft_font.c | 4 ++-- - src/cairo_gstate.c | 8 ++++---- - src/cairoint.h | 8 +------- - 8 files changed, 25 insertions(+), 89 deletions(-) - -commit 5edcd47a91456bbf0ea0313685a31862e8d452e3 -Author: Carl Worth -Date: Thu Oct 30 10:55:04 2003 +0000 - - A few cleanups to eliminate a memory leak. - - ChangeLog | 20 ++++++++++++++++++++ - 1 files changed, 20 insertions(+), 0 deletions(-) - -commit 249ff3fb3813f69603a75c7aaa39bb8db5510c49 -Author: Carl Worth -Date: Wed Oct 29 12:50:02 2003 +0000 - - Drop AC_CONFIG_AUX_DIR(config) as it was confusing "make distcheck" - - pixman/ChangeLog.libpixregion | 5 +++++ - pixman/configure.in | 2 -- - 2 files changed, 5 insertions(+), 2 deletions(-) - -commit fb811db0d2742231510a210b356530aed66f20d5 -Author: Carl Worth -Date: Wed Oct 29 12:21:14 2003 +0000 - - Drop AC_CONFIG_AUX_DIR(config) as it was confusing "make distcheck" - - pixman/ChangeLog.libic | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 22c167e00fd7ad6ff3383d4235fec7894b84f4a2 -Author: Carl Worth -Date: Wed Oct 29 10:54:26 2003 +0000 - - Fix memory leak of image->transform. Remove currently unused DevUnion type and IcImageChange function. - - pixman/ChangeLog.libic | 9 +++++++++ - pixman/src/icimage.c | 3 +++ - pixman/src/icimage.h | 21 --------------------- - 3 files changed, 12 insertions(+), 21 deletions(-) - -commit b806ea9d1b42c9b48b9e7f917b43a115afd88c48 -Author: Carl Worth -Date: Wed Oct 29 10:46:10 2003 +0000 - - Bumped version to 0.1.2 to indicate new IcOperator type. - - pixman/ChangeLog.libic | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit ece5507937f0a8e9cda7829f5e614597e4668a8a -Author: Carl Worth -Date: Wed Oct 29 10:45:02 2003 +0000 - - Patch from Bryan Worth to eliminate lots of leftover, undesired dependencies on X header files. - - pixman/ChangeLog.libic | 41 ++++++++++++++++++++++ - pixman/src/ic.c | 51 ++++++++++++++------------- - pixman/src/ic.h | 33 ++++++++++++++---- - pixman/src/icblt.c | 34 +++++++++--------- - pixman/src/icbltone.c | 32 ++++++++-------- - pixman/src/iccolor.c | 10 +++--- - pixman/src/iccompose.c | 34 +++++++++--------- - pixman/src/icimage.c | 86 +++++++++++++++++++++++----------------------- - pixman/src/icimage.h | 41 ++++++++++------------ - pixman/src/icint.h | 43 ++++++++++++++++------ - pixman/src/icrect.c | 16 ++++---- - pixman/src/ictransform.c | 10 +++--- - pixman/src/ictrap.c | 26 +++++++------- - pixman/src/ictri.c | 6 ++-- - 14 files changed, 271 insertions(+), 192 deletions(-) - -commit cf882f5d73ee0b630168f66e7fcfcb1cd96f1d2d -Author: Carl Worth -Date: Tue Oct 28 17:32:44 2003 +0000 - - Updated stale text in README - - ChangeLog | 5 +++++ - README | 49 ++++++++++++++++++++++++------------------------- - 2 files changed, 29 insertions(+), 25 deletions(-) - -commit 859bfd03a6132558ad08aeb0c28ae55874a695d5 -Author: Carl Worth -Date: Tue Oct 28 12:18:29 2003 +0000 - - Rename gstate->ppm to gstate->pixels_per_inch. Add new pixels_per_inch to the surface backend. - - ChangeLog | 12 ++++++++++++ - src/cairo-gstate.c | 11 ++++------- - src/cairo-surface.c | 12 +++++++++--- - src/cairo-xlib-surface.c | 8 ++++++++ - src/cairo_gstate.c | 11 ++++------- - src/cairo_surface.c | 12 +++++++++--- - src/cairo_xlib_surface.c | 8 ++++++++ - src/cairoint.h | 10 ++++++++-- - 8 files changed, 62 insertions(+), 22 deletions(-) - -commit 8bb3f7664d2a25be0dd57348fe78e268f40def4e -Author: Carl Worth -Date: Tue Oct 28 12:15:03 2003 +0000 - - Drop cairo_surface_create_similar_solid - - ChangeLog | 15 ++++++++++++ - src/cairo-gstate.c | 64 +++++++++++++++++++++++++++----------------------- - src/cairo-surface.c | 34 +++++++++++---------------- - src/cairo.h | 14 ----------- - src/cairo_gstate.c | 64 +++++++++++++++++++++++++++----------------------- - src/cairo_surface.c | 34 +++++++++++---------------- - src/cairoint.h | 8 +++++- - 7 files changed, 120 insertions(+), 113 deletions(-) - -commit 01378dab3e85cc9bfdd34f59bea246062d363cc4 -Author: Carl Worth -Date: Tue Oct 28 12:13:35 2003 +0000 - - Fix bug from previous commit. Must check for NULL backend function pointers before calling them. - - ChangeLog | 8 ++++++++ - src/cairo-surface.c | 46 ++++++++++++++++++++++++++-------------------- - src/cairo_surface.c | 46 ++++++++++++++++++++++++++-------------------- - 3 files changed, 60 insertions(+), 40 deletions(-) - -commit 9d052aa9ca733d7c4008453d00c1a579fab74f92 -Author: Carl Worth -Date: Mon Oct 27 18:40:55 2003 +0000 - - Cleanup of surface->backend interface. Better type-safety and more consistent return-value handling. - - ChangeLog | 26 +++++++++ - src/cairo-surface.c | 28 ++++++++-- - src/cairo-xlib-surface.c | 133 +++++++++++++++++++++++++-------------------- - src/cairo_surface.c | 28 ++++++++-- - src/cairo_xlib_surface.c | 133 +++++++++++++++++++++++++-------------------- - src/cairoint.h | 83 ++++++++++++++++++---------- - 6 files changed, 271 insertions(+), 160 deletions(-) - -commit 75282a5e21e2f83cf7ed50b9aa3a4c52bb3815f9 -Author: Carl Worth -Date: Mon Oct 27 18:32:44 2003 +0000 - - Default to normal slant/weight on out-of-range values. Add missing include of fontconfig/fcfreetype.h - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 15 +++++++++------ - src/cairo_ft_font.c | 15 +++++++++------ - 3 files changed, 24 insertions(+), 12 deletions(-) - -commit 99fd32a8d67157a9ae09faf178bdbcfe8f9e10f0 -Author: Keith Packard -Date: Fri Oct 24 14:43:58 2003 +0000 - - A HORRIBLE KLUDGE to repad glyph images from freetype to meet libic requirements. - - ChangeLog | 6 ++++++ - src/cairo-ft-font.c | 38 ++++++++++++++++++++++++++++++++++++-- - src/cairo_ft_font.c | 38 ++++++++++++++++++++++++++++++++++++-- - 3 files changed, 78 insertions(+), 4 deletions(-) - -commit 965ab2ff553a12a64e10047f82658a6957a0f706 -Author: Carl Worth -Date: Fri Oct 24 11:01:37 2003 +0000 - - Fixes to eliminate a few compiler warnings. Bump version to 0.1.8 for recent font API changes. - - ChangeLog | 19 +++++++++++++++++++ - configure.in | 2 +- - src/cairo-ft-font.c | 21 +++++++-------------- - src/cairo-xlib-surface.c | 9 --------- - src/cairo.c | 7 +++++-- - src/cairo.h | 2 +- - src/cairo_ft_font.c | 21 +++++++-------------- - src/cairo_xlib_surface.c | 9 --------- - 8 files changed, 40 insertions(+), 50 deletions(-) - -commit 6498351f495f4ce5a9153f6043f501c0cebc86be -Author: Carl Worth -Date: Fri Oct 24 10:01:34 2003 +0000 - - Create a font by default. Remove bogus NULL_POINTER status errors leaking to the outside. - - ChangeLog | 21 +++++++++++++++ - src/cairo-font.c | 70 +++++++++++++-------------------------------------- - src/cairo-gstate.c | 15 +++------- - src/cairo_font.c | 70 +++++++++++++-------------------------------------- - src/cairo_gstate.c | 15 +++------- - src/cairoint.h | 10 ++++--- - 6 files changed, 73 insertions(+), 128 deletions(-) - -commit c5aace21fbf67d27b433472e6070fee98761463c -Author: Graydon Hoare -Date: Thu Oct 23 15:27:40 2003 +0000 - - missing file from commit - - src/cairo-ft-font.c | 574 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_ft_font.c | 574 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 1148 insertions(+), 0 deletions(-) - -commit c11a49a69e7d717c6c080198f568774047a21120 -Author: Graydon Hoare -Date: Thu Oct 23 15:22:28 2003 +0000 - - New file. - Add cairo_ft_font.c - Change to virtual font interface. - - ChangeLog | 11 ++ - src/Makefile.am | 1 + - src/cairo-font.c | 236 ++++++++++++++++++++---------- - src/cairo-gstate.c | 375 ++++++++++++++++++++++++++++++++++++--------- - src/cairo-xlib-surface.c | 215 ++------------------------- - src/cairo.c | 98 ++++++++++-- - src/cairo.h | 135 +++++++++++++++-- - src/cairo_font.c | 236 ++++++++++++++++++++---------- - src/cairo_gstate.c | 375 ++++++++++++++++++++++++++++++++++++--------- - src/cairo_xlib_surface.c | 215 ++------------------------- - src/cairoint.h | 222 ++++++++++++++++++++------- - 11 files changed, 1322 insertions(+), 797 deletions(-) - -commit 223da5ea188ba7755aa6257452316b2330e981ae -Author: Carl Worth -Date: Thu Oct 23 07:51:41 2003 +0000 - - Updated TODO file - - ChangeLog | 5 +++++ - TODO | 39 +++++++++++++++++++++++---------------- - 2 files changed, 28 insertions(+), 16 deletions(-) - -commit 2c9d1913ccc6df9adc07d77781e68d5124535fa2 -Author: Carl Worth -Date: Thu Oct 23 07:47:29 2003 +0000 - - Fixed copyright attribution to refer to "University of Southern California - - ChangeLog | 6 ++++++ - src/cairo-color.c | 2 +- - src/cairo-fixed.c | 2 +- - src/cairo-font.c | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-hull.c | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-path-bounds.c | 2 +- - src/cairo-path-fill.c | 2 +- - src/cairo-path-stroke.c | 2 +- - src/cairo-path.c | 2 +- - src/cairo-pen.c | 2 +- - src/cairo-polygon.c | 2 +- - src/cairo-slope.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo-xlib.h | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairo_color.c | 2 +- - src/cairo_fixed.c | 2 +- - src/cairo_font.c | 2 +- - src/cairo_gstate.c | 2 +- - src/cairo_hull.c | 2 +- - src/cairo_matrix.c | 2 +- - src/cairo_path.c | 2 +- - src/cairo_path_bounds.c | 2 +- - src/cairo_path_fill.c | 2 +- - src/cairo_path_stroke.c | 2 +- - src/cairo_pen.c | 2 +- - src/cairo_polygon.c | 2 +- - src/cairo_slope.c | 2 +- - src/cairo_spline.c | 2 +- - src/cairo_surface.c | 2 +- - src/cairo_xlib_surface.c | 2 +- - src/cairoint.h | 2 +- - 37 files changed, 42 insertions(+), 36 deletions(-) - -commit 6aaa9dff25e7ff2e21af0eefd1a644029b9914d9 -Author: Thomas Hunger -Date: Sun Oct 19 08:46:21 2003 +0000 - - added some types and enums, documented more functions - - doc/reference/xml/cairo_current_fill_rule.xml | 2 +- - doc/reference/xml/cairo_current_line_cap.xml | 2 +- - doc/reference/xml/cairo_current_operator.xml | 2 +- - doc/reference/xml/cairo_fill_rule_t.xml | 40 ++++++++++++++ - doc/reference/xml/cairo_format_t.xml | 52 ++++++++++++++++++ - doc/reference/xml/cairo_line_cap_t.xml | 43 +++++++++++++++ - doc/reference/xml/cairo_matrix_t.xml | 23 ++++++++ - doc/reference/xml/cairo_operator_t.xml | 73 +++++++++++++++++++++++++ - doc/reference/xml/cairo_set_alpha.xml | 7 ++- - doc/reference/xml/cairo_set_fill_rule.xml | 2 +- - doc/reference/xml/cairo_set_line_cap.xml | 10 ++-- - doc/reference/xml/cairo_set_line_width.xml | 6 +- - doc/reference/xml/cairo_set_operator.xml | 9 ++-- - doc/reference/xml/cairo_set_pattern.xml | 8 ++-- - doc/reference/xml/cairo_set_rgb_color.xml | 11 ++-- - doc/reference/xml/cairo_set_tolerance.xml | 8 ++-- - doc/reference/xml/cairo_surface_t.xml | 17 ++++++ - doc/reference/xml/cairo_t.xml | 23 ++++++++ - 18 files changed, 306 insertions(+), 32 deletions(-) - -commit 007bbe56dba5a4c83017caa4d00d697436c9cce1 -Author: Thomas Hunger -Date: Thu Oct 16 10:54:34 2003 +0000 - - started to document from top to bottom. most things are obvious - - doc/reference/ChangeLog | 4 ++++ - doc/reference/xml/cairo_copy.xml | 21 +++++++++++++++++---- - doc/reference/xml/cairo_create.xml | 4 ++-- - doc/reference/xml/cairo_destroy.xml | 9 ++++++--- - doc/reference/xml/cairo_in_fill.xml | 2 +- - doc/reference/xml/cairo_in_stroke.xml | 2 +- - doc/reference/xml/cairo_reference.xml | 6 +++--- - doc/reference/xml/cairo_restore.xml | 3 ++- - doc/reference/xml/cairo_save.xml | 5 +++-- - doc/reference/xml/cairo_set_target_surface.xml | 7 ++++--- - doc/reference/xml/skeleton.xml | 6 +++--- - 11 files changed, 46 insertions(+), 23 deletions(-) - -commit 8f7106a9523cf4350db29cbe413bb992c1b7a960 -Author: Thomas Hunger -Date: Thu Oct 16 05:31:56 2003 +0000 - - updated xml files to look more like gtk refence and introduced crossreferencing via script - - doc/reference/ChangeLog | 8 ++ - doc/reference/README | 6 ++ - doc/reference/crossreference.rb | 30 +++++++ - doc/reference/doc.xml | 23 +++-- - doc/reference/xml/cairo_clip.xml | 63 ++++++++------- - doc/reference/xml/cairo_close_path.xml | 63 ++++++++------- - doc/reference/xml/cairo_copy.xml | 70 +++++++++------- - doc/reference/xml/cairo_create.xml | 62 ++++++++------- - doc/reference/xml/cairo_current_alpha.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_fill_rule.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_line_cap.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_line_join.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_line_width.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_matrix.xml | 70 +++++++++------- - doc/reference/xml/cairo_current_miter_limit.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_operator.xml | 63 ++++++++------- - doc/reference/xml/cairo_current_point.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_current_rgb_color.xml | 84 ++++++++++++-------- - doc/reference/xml/cairo_current_target_surface.xml | 62 ++++++++------- - doc/reference/xml/cairo_current_tolerance.xml | 63 ++++++++------- - doc/reference/xml/cairo_default_matrix.xml | 63 ++++++++------- - doc/reference/xml/cairo_destroy.xml | 63 ++++++++------- - doc/reference/xml/cairo_fill.xml | 63 ++++++++------- - doc/reference/xml/cairo_hit.xml | 62 ++++++++------- - doc/reference/xml/cairo_identity_matrix.xml | 63 ++++++++------- - .../xml/cairo_inverse_transform_distance.xml | 77 +++++++++++-------- - .../xml/cairo_inverse_transform_point.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_line_to.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_matrix_copy.xml | 70 +++++++++------- - doc/reference/xml/cairo_matrix_create.xml | 62 ++++++++------- - doc/reference/xml/cairo_matrix_destroy.xml | 63 ++++++++------- - doc/reference/xml/cairo_matrix_invert.xml | 63 ++++++++------- - doc/reference/xml/cairo_matrix_multiply.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_matrix_rotate.xml | 70 +++++++++------- - doc/reference/xml/cairo_matrix_scale.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_matrix_set_identity.xml | 63 ++++++++------- - .../xml/cairo_matrix_transform_distance.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_matrix_transform_point.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_matrix_translate.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_move_to.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_new_path.xml | 63 ++++++++------- - doc/reference/xml/cairo_pop_group.xml | 63 ++++++++------- - doc/reference/xml/cairo_push_group.xml | 63 ++++++++------- - doc/reference/xml/cairo_reference.xml | 63 ++++++++------- - doc/reference/xml/cairo_rel_line_to.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_rel_move_to.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_restore.xml | 63 ++++++++------- - doc/reference/xml/cairo_rotate.xml | 70 +++++++++------- - doc/reference/xml/cairo_save.xml | 63 ++++++++------- - doc/reference/xml/cairo_scale.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_scale_font.xml | 70 +++++++++------- - doc/reference/xml/cairo_select_font.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_alpha.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_dash.xml | 84 ++++++++++++-------- - doc/reference/xml/cairo_set_fill_rule.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_line_cap.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_line_join.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_line_width.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_miter_limit.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_operator.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_pattern.xml | 70 +++++++++------- - doc/reference/xml/cairo_set_rgb_color.xml | 84 ++++++++++++-------- - doc/reference/xml/cairo_set_target_surface.xml | 69 +++++++++------- - doc/reference/xml/cairo_set_tolerance.xml | 70 +++++++++------- - doc/reference/xml/cairo_show_text.xml | 70 +++++++++------- - doc/reference/xml/cairo_status.xml | 63 ++++++++------- - doc/reference/xml/cairo_status_string.xml | 63 ++++++++------- - doc/reference/xml/cairo_stroke.xml | 63 ++++++++------- - doc/reference/xml/cairo_stroke_path.xml | 63 ++++++++------- - doc/reference/xml/cairo_surface_clip_restore.xml | 63 ++++++++------- - doc/reference/xml/cairo_surface_destroy.xml | 63 ++++++++------- - doc/reference/xml/cairo_surface_get_matrix.xml | 70 +++++++++------- - doc/reference/xml/cairo_surface_reference.xml | 63 ++++++++------- - doc/reference/xml/cairo_surface_set_filter.xml | 70 +++++++++------- - doc/reference/xml/cairo_surface_set_matrix.xml | 70 +++++++++------- - doc/reference/xml/cairo_surface_set_repeat.xml | 70 +++++++++------- - doc/reference/xml/cairo_transform_distance.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_transform_point.xml | 77 +++++++++++-------- - doc/reference/xml/cairo_translate.xml | 77 +++++++++++-------- - 79 files changed, 2907 insertions(+), 2321 deletions(-) - -commit 227bf48eff8e25dba592fbe2fcb48bfdf5d93dc3 -Author: Carl Worth -Date: Wed Oct 15 12:26:51 2003 +0000 - - Added bug about self-intersecting paths. (Really, I'm just testing the cairo-commit mailing list) - - BUGS | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8ca1f1a8258daaf2380b794735a424e872600c31 -Author: Thomas Hunger -Date: Wed Oct 15 08:51:06 2003 +0000 - - commited documentation skeleton - - doc/reference/.cvsignore | 20 +++ - doc/reference/ChangeLog | 4 + - doc/reference/README | 5 + - doc/reference/doc.xml | 173 ++++++++++++++++++++ - doc/reference/xml/cairo_clip.xml | 32 ++++ - doc/reference/xml/cairo_close_path.xml | 32 ++++ - doc/reference/xml/cairo_copy.xml | 33 ++++ - doc/reference/xml/cairo_create.xml | 32 ++++ - doc/reference/xml/cairo_current_alpha.xml | 32 ++++ - doc/reference/xml/cairo_current_fill_rule.xml | 32 ++++ - doc/reference/xml/cairo_current_line_cap.xml | 32 ++++ - doc/reference/xml/cairo_current_line_join.xml | 32 ++++ - doc/reference/xml/cairo_current_line_width.xml | 32 ++++ - doc/reference/xml/cairo_current_matrix.xml | 33 ++++ - doc/reference/xml/cairo_current_miter_limit.xml | 32 ++++ - doc/reference/xml/cairo_current_operator.xml | 32 ++++ - doc/reference/xml/cairo_current_point.xml | 34 ++++ - doc/reference/xml/cairo_current_rgb_color.xml | 35 ++++ - doc/reference/xml/cairo_current_target_surface.xml | 32 ++++ - doc/reference/xml/cairo_current_tolerance.xml | 32 ++++ - doc/reference/xml/cairo_default_matrix.xml | 32 ++++ - doc/reference/xml/cairo_destroy.xml | 32 ++++ - doc/reference/xml/cairo_fill.xml | 32 ++++ - doc/reference/xml/cairo_hit.xml | 32 ++++ - doc/reference/xml/cairo_identity_matrix.xml | 32 ++++ - doc/reference/xml/cairo_in_fill.xml | 34 ++++ - doc/reference/xml/cairo_in_stroke.xml | 34 ++++ - .../xml/cairo_inverse_transform_distance.xml | 34 ++++ - .../xml/cairo_inverse_transform_point.xml | 34 ++++ - doc/reference/xml/cairo_line_to.xml | 34 ++++ - doc/reference/xml/cairo_matrix_copy.xml | 33 ++++ - doc/reference/xml/cairo_matrix_create.xml | 32 ++++ - doc/reference/xml/cairo_matrix_destroy.xml | 32 ++++ - doc/reference/xml/cairo_matrix_invert.xml | 32 ++++ - doc/reference/xml/cairo_matrix_multiply.xml | 34 ++++ - doc/reference/xml/cairo_matrix_rotate.xml | 33 ++++ - doc/reference/xml/cairo_matrix_scale.xml | 34 ++++ - doc/reference/xml/cairo_matrix_set_identity.xml | 32 ++++ - .../xml/cairo_matrix_transform_distance.xml | 34 ++++ - doc/reference/xml/cairo_matrix_transform_point.xml | 34 ++++ - doc/reference/xml/cairo_matrix_translate.xml | 34 ++++ - doc/reference/xml/cairo_move_to.xml | 34 ++++ - doc/reference/xml/cairo_new_path.xml | 32 ++++ - doc/reference/xml/cairo_pop_group.xml | 32 ++++ - doc/reference/xml/cairo_push_group.xml | 32 ++++ - doc/reference/xml/cairo_reference.xml | 32 ++++ - doc/reference/xml/cairo_rel_line_to.xml | 34 ++++ - doc/reference/xml/cairo_rel_move_to.xml | 34 ++++ - doc/reference/xml/cairo_restore.xml | 32 ++++ - doc/reference/xml/cairo_rotate.xml | 33 ++++ - doc/reference/xml/cairo_save.xml | 32 ++++ - doc/reference/xml/cairo_scale.xml | 34 ++++ - doc/reference/xml/cairo_scale_font.xml | 33 ++++ - doc/reference/xml/cairo_select_font.xml | 33 ++++ - doc/reference/xml/cairo_set_alpha.xml | 33 ++++ - doc/reference/xml/cairo_set_dash.xml | 35 ++++ - doc/reference/xml/cairo_set_fill_rule.xml | 33 ++++ - doc/reference/xml/cairo_set_line_cap.xml | 33 ++++ - doc/reference/xml/cairo_set_line_join.xml | 33 ++++ - doc/reference/xml/cairo_set_line_width.xml | 33 ++++ - doc/reference/xml/cairo_set_miter_limit.xml | 33 ++++ - doc/reference/xml/cairo_set_operator.xml | 33 ++++ - doc/reference/xml/cairo_set_pattern.xml | 33 ++++ - doc/reference/xml/cairo_set_rgb_color.xml | 35 ++++ - doc/reference/xml/cairo_set_target_surface.xml | 33 ++++ - doc/reference/xml/cairo_set_tolerance.xml | 33 ++++ - doc/reference/xml/cairo_show_text.xml | 33 ++++ - doc/reference/xml/cairo_status.xml | 32 ++++ - doc/reference/xml/cairo_status_string.xml | 32 ++++ - doc/reference/xml/cairo_stroke.xml | 32 ++++ - doc/reference/xml/cairo_stroke_path.xml | 32 ++++ - doc/reference/xml/cairo_surface_clip_restore.xml | 32 ++++ - doc/reference/xml/cairo_surface_destroy.xml | 32 ++++ - doc/reference/xml/cairo_surface_get_matrix.xml | 33 ++++ - doc/reference/xml/cairo_surface_reference.xml | 32 ++++ - doc/reference/xml/cairo_surface_set_filter.xml | 33 ++++ - doc/reference/xml/cairo_surface_set_matrix.xml | 33 ++++ - doc/reference/xml/cairo_surface_set_repeat.xml | 33 ++++ - doc/reference/xml/cairo_transform_distance.xml | 34 ++++ - doc/reference/xml/cairo_transform_point.xml | 34 ++++ - doc/reference/xml/cairo_translate.xml | 34 ++++ - doc/reference/xml/skeleton.xml | 30 ++++ - 82 files changed, 2763 insertions(+), 0 deletions(-) - -commit 5f48214ad24ace45276f15111fa5b15c2956f38f -Author: Carl Worth -Date: Sat Oct 11 13:49:13 2003 +0000 - - Add extern "C" stuff to cairo-xlib.h - - ChangeLog | 5 +++++ - src/cairo-xlib.h | 19 ++++++++++++++----- - 2 files changed, 19 insertions(+), 5 deletions(-) - -commit cdc84283e321a3fd14c430b8f991f60ac624204c -Author: Carl Worth -Date: Thu Oct 9 20:10:36 2003 +0000 - - Stub out NULL_POINTER error so drawing to off-screen memory still works even though text does not yet. - - ChangeLog | 6 ++++++ - src/cairo-font.c | 14 +++++++------- - src/cairo_font.c | 14 +++++++------- - 3 files changed, 20 insertions(+), 14 deletions(-) - -commit 61726a88f24efcbabdff980abdfe1ff8301315b2 -Author: Carl Worth -Date: Sat Oct 4 14:34:42 2003 +0000 - - Generate convex hull of pen before stroking. - - ChangeLog | 8 ++ - src/Makefile.am | 1 + - src/cairo-hull.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-path-stroke.c | 4 +- - src/cairo-pen.c | 115 ++++++++--------------------- - src/cairo-slope.c | 40 ++++++++++- - src/cairo_hull.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_path_stroke.c | 4 +- - src/cairo_pen.c | 115 ++++++++--------------------- - src/cairo_slope.c | 40 ++++++++++- - src/cairoint.h | 6 +- - 11 files changed, 534 insertions(+), 179 deletions(-) - -commit a249bd717c194d03d480d7803351ee6f21daf0c2 -Author: Carl Worth -Date: Sat Oct 4 09:06:15 2003 +0000 - - Remove abbreviation of "point" as "pt". Fix cairo_destrot, cairo_set_target_surface, and cairo_set_target_image to act appropriately in the face of non-zero status. - - ChangeLog | 12 +++++++ - src/cairo-gstate.c | 70 ++++++++++++++++++++-------------------- - src/cairo-path-bounds.c | 38 +++++++++++----------- - src/cairo-path-fill.c | 4 +- - src/cairo-path-stroke.c | 54 ++++++++++++++++---------------- - src/cairo-path.c | 78 +++++++++++++++++++++++----------------------- - src/cairo-pen.c | 50 +++++++++++++++--------------- - src/cairo-polygon.c | 36 ++++++++++---------- - src/cairo-spline.c | 44 +++++++++++++------------- - src/cairo-xlib-surface.c | 2 +- - src/cairo.c | 14 ++++---- - src/cairo_gstate.c | 70 ++++++++++++++++++++-------------------- - src/cairo_path.c | 78 +++++++++++++++++++++++----------------------- - src/cairo_path_bounds.c | 38 +++++++++++----------- - src/cairo_path_fill.c | 4 +- - src/cairo_path_stroke.c | 54 ++++++++++++++++---------------- - src/cairo_pen.c | 50 +++++++++++++++--------------- - src/cairo_polygon.c | 36 ++++++++++---------- - src/cairo_spline.c | 44 +++++++++++++------------- - src/cairo_xlib_surface.c | 2 +- - src/cairoint.h | 39 ++++++++++++---------- - 21 files changed, 416 insertions(+), 401 deletions(-) - -commit b466e068b99c71acd26ca10b8e70ad34c7e34881 -Author: Carl Worth -Date: Wed Oct 1 17:34:19 2003 +0000 - - Fix to gracefully handle a NULL pointer for gstate->font - - ChangeLog | 15 +++++++++++++++ - src/cairo-font.c | 44 +++++++++++++++++++++++++++++++++++--------- - src/cairo-gstate.c | 12 +++++++----- - src/cairo_font.c | 44 +++++++++++++++++++++++++++++++++++--------- - src/cairo_gstate.c | 12 +++++++----- - src/cairoint.h | 17 +++++++++-------- - 6 files changed, 108 insertions(+), 36 deletions(-) - -commit 973ee8998377f09aee66664ddf93725d6ffd416e -Author: Jamey Sharp -Date: Tue Sep 30 18:56:22 2003 +0000 - - Virtualized the font and surface backend implementations. - - ChangeLog | 7 + - TODO | 3 - - src/Makefile.am | 3 +- - src/cairo-font.c | 121 +++------ - src/cairo-gstate.c | 67 +---- - src/cairo-surface.c | 489 ++++++-------------------------- - src/cairo-xlib-surface.c | 719 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-xlib.h | 56 ++++ - src/cairo.c | 24 -- - src/cairo.h | 17 -- - src/cairo_font.c | 121 +++------ - src/cairo_gstate.c | 67 +---- - src/cairo_surface.c | 489 ++++++-------------------------- - src/cairo_xlib_surface.c | 719 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 130 ++++++--- - 15 files changed, 1881 insertions(+), 1151 deletions(-) - -commit 9c964b8f8afe03f2cf37073fc8f313fae24d58c6 -Author: Carl Worth -Date: Tue Sep 30 14:15:28 2003 +0000 - - Don't copy a gstate if src->status != 0 - - ChangeLog | 2 ++ - src/cairo.c | 4 +++- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit b1ade55559b9deb350dc3fb28ee10cbde11c3476 -Author: Carl Worth -Date: Tue Sep 30 13:15:09 2003 +0000 - - Fixed horribly botched implementation of cairo_copy. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 21 +++++++++++++++++++++ - src/cairo.c | 11 ++++++----- - src/cairo_gstate.c | 21 +++++++++++++++++++++ - src/cairoint.h | 3 +++ - 5 files changed, 58 insertions(+), 5 deletions(-) - -commit 0cd47881bd62bc8600bd29c459036105f956d3c6 -Author: Carl Worth -Date: Tue Sep 30 11:39:07 2003 +0000 - - Changed cairo_copy to copy graphics state from one cairo_t to another rather than allocating a new cairo_t. - - ChangeLog | 7 +++++++ - configure.in | 2 +- - src/cairo.c | 30 +++++++++++------------------- - src/cairo.h | 6 +++--- - 4 files changed, 22 insertions(+), 23 deletions(-) - -commit 6b582a836abe9d44034e97e5ded55a983932e022 -Author: Carl Worth -Date: Tue Sep 30 07:58:58 2003 +0000 - - Fix to delay XFreePixmap until cairo_surface_destroy. - - ChangeLog | 6 ++++++ - src/cairo-surface.c | 7 ++++++- - src/cairo_surface.c | 7 ++++++- - src/cairoint.h | 1 + - 4 files changed, 19 insertions(+), 2 deletions(-) - -commit 9edacaf78075c3ed3a5e27da81f41ddc265acfc1 -Author: Carl Worth -Date: Mon Sep 29 11:55:56 2003 +0000 - - Bugfix from Graydon Hoare. - - ChangeLog | 8 +++++ - TODO | 84 --------------------------------------------------- - src/cairo-surface.c | 2 +- - src/cairo_surface.c | 2 +- - 4 files changed, 10 insertions(+), 86 deletions(-) - -commit 6f87c8bc6c4b539049b089a0f90559eac0f2ffa2 -Author: Carl Worth -Date: Mon Sep 29 08:36:29 2003 +0000 - - Added cairo_arc and cairo_arc_negative. - - ChangeLog | 21 ++++- - TODO | 52 +++++++++-- - configure.in | 2 +- - src/cairo-font.c | 11 ++- - src/cairo-gstate.c | 268 +++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo.c | 47 +++++++++ - src/cairo.h | 20 ++++ - src/cairo_font.c | 11 ++- - src/cairo_gstate.c | 268 +++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairoint.h | 12 +++ - 10 files changed, 698 insertions(+), 14 deletions(-) - -commit 2e19ebf7663e77c9a01787fe7dd70896c62e2743 -Author: Carl Worth -Date: Sat Sep 27 05:08:38 2003 +0000 - - Removed two _print_svg headers that had been included accidentally. - - ChangeLog | 4 +++- - src/cairoint.h | 6 ------ - 2 files changed, 3 insertions(+), 7 deletions(-) - -commit 60d541ee6a85a63638e2d30623f703d0c8e474c7 -Author: Carl Worth -Date: Sat Sep 27 05:00:47 2003 +0000 - - Fixed some internal enums that had been mistakenly converted to lowercase at some point. - - ChangeLog | 7 +++++++ - src/cairo-path-bounds.c | 2 +- - src/cairo-path-fill.c | 4 ++-- - src/cairo-path-stroke.c | 8 ++++---- - src/cairo-path.c | 37 ++++++++++++++++++------------------- - src/cairo-pen.c | 10 +++++----- - src/cairo-spline.c | 2 +- - src/cairo_path.c | 37 ++++++++++++++++++------------------- - src/cairo_path_bounds.c | 2 +- - src/cairo_path_fill.c | 4 ++-- - src/cairo_path_stroke.c | 8 ++++---- - src/cairo_pen.c | 10 +++++----- - src/cairo_spline.c | 2 +- - src/cairoint.h | 36 ++++++++++++++++++------------------ - 14 files changed, 87 insertions(+), 82 deletions(-) - -commit 4dc8b3a312d0f390306131006e6d87a25e41ce58 -Author: Carl Worth -Date: Thu Sep 25 15:01:28 2003 +0000 - - Removed support for cairo_path_t and related functions. Bumped version to 0.1.5 - - ChangeLog | 7 ++ - configure.in | 2 +- - src/cairo-gstate.c | 190 +++++++++++++++++++++++++++++----------------------- - src/cairo-path.c | 188 +++------------------------------------------------ - src/cairo.c | 20 +----- - src/cairo.h | 49 +------------- - src/cairo_gstate.c | 190 +++++++++++++++++++++++++++++----------------------- - src/cairo_path.c | 188 +++------------------------------------------------ - src/cairoint.h | 58 +++++++--------- - 9 files changed, 273 insertions(+), 619 deletions(-) - -commit ca1cec0f49f837dbe541fed97280952315d2876c -Author: Carl Worth -Date: Thu Sep 25 08:01:38 2003 +0000 - - Expose a cairo_path_t object with related functions: cairo_set_path, cairo_current_path, cairo_path_move_to, cairo_path_line_to, etc. - - ChangeLog | 35 ++++++++++ - configure.in | 2 +- - src/cairo-gstate.c | 190 +++++++++++++++++++++++----------------------------- - src/cairo-path.c | 188 ++++++++++++++++++++++++++++++++++++++++++++++++--- - src/cairo.c | 20 +++++- - src/cairo.h | 49 +++++++++++++- - src/cairo_gstate.c | 190 +++++++++++++++++++++++----------------------------- - src/cairo_path.c | 188 ++++++++++++++++++++++++++++++++++++++++++++++++--- - src/cairoint.h | 58 +++++++++------- - 9 files changed, 654 insertions(+), 266 deletions(-) - -commit 17f5e712e217be701cf6555528cb81dfd22e49f8 -Author: Carl Worth -Date: Wed Sep 24 06:20:38 2003 +0000 - - Require __GNUC__ >= 3 before defining slim_hidden_def macro - - pixman/ChangeLog.slim | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit ba03c60ce95130e211ab9fd71c8a769f28a9fc74 -Author: Carl Worth -Date: Tue Sep 23 07:58:02 2003 +0000 - - Require __GNUC__ >= 3 before defining slim_hidden_def macro - - pixman/src/slim_internal.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e3d81a872cbc6a2113f9e54dffa0f6f27bba52d7 -Author: Carl Worth -Date: Wed Sep 17 08:48:41 2003 +0000 - - Updated description of PostScript comparison - - TODO | 16 +++++++++++++++- - 1 files changed, 15 insertions(+), 1 deletions(-) - -commit 3f9a062bc62e5d66b9e984bbdce5d3b642faecdd -Author: Carl Worth -Date: Wed Sep 17 08:41:30 2003 +0000 - - Added "A comparison with PostScript" to TODO - - TODO | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 121 insertions(+), 0 deletions(-) - -commit d3db983ab2c66e9a53ecbd53f04f56d0723cd3ee -Author: Carl Worth -Date: Tue Sep 16 10:28:46 2003 +0000 - - Fixed massive pixmap leak - - ChangeLog | 3 +++ - src/cairo-surface.c | 4 ---- - src/cairo_surface.c | 4 ---- - 3 files changed, 3 insertions(+), 8 deletions(-) - -commit 7e46e8e6caab34f4f2be9a694d8c15d1942bff7e -Author: Carl Worth -Date: Tue Sep 16 06:45:19 2003 +0000 - - Add cairo_reference and cairo_surface_reference - - ChangeLog | 15 +++++++++++++++ - configure.in | 2 +- - src/cairo-gstate.c | 10 +++++----- - src/cairo-surface.c | 2 +- - src/cairo.c | 38 ++++++++++++++++++++++++++++---------- - src/cairo.h | 12 +++++++++--- - src/cairo_gstate.c | 10 +++++----- - src/cairo_surface.c | 2 +- - src/cairoint.h | 4 +--- - 9 files changed, 66 insertions(+), 29 deletions(-) - -commit ee4bb020152525daa8ce880b0c739bdea2b92a01 -Author: Carl Worth -Date: Mon Sep 15 13:17:32 2003 +0000 - - Force explicit dependency on Xrender >= 0.6. Make _cairo_x11_surface_put_image static. - - ChangeLog | 6 ++++++ - configure.in | 2 +- - src/cairo-surface.c | 22 +++++++++++----------- - src/cairo_surface.c | 22 +++++++++++----------- - 4 files changed, 29 insertions(+), 23 deletions(-) - -commit 9c5be2cf317cdac454af3566a30fa6bb74db6e14 -Author: Carl Worth -Date: Mon Sep 15 07:55:10 2003 +0000 - - Fix for invalid restore from keithp. Began adding notes on arc support. - - ChangeLog | 6 ++++++ - TODO | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.c | 8 +++----- - 3 files changed, 55 insertions(+), 5 deletions(-) - -commit 1154ac5b59a3530c3f74a54ea559908816cb7e83 -Author: Carl Worth -Date: Mon Sep 15 07:29:44 2003 +0000 - - Don't try to create depth-32 pixmaps on non-Render servers. Fix massive memory leask in _cairo_surface_push_image. - - ChangeLog | 6 ++++++ - src/cairo-surface.c | 12 ++++++++---- - src/cairo_surface.c | 12 ++++++++---- - 3 files changed, 22 insertions(+), 8 deletions(-) - -commit 4b30a924c9a61915a286c1cdf9c63e7d2b43a8db -Author: Carl Worth -Date: Fri Sep 12 10:53:03 2003 +0000 - - Added a few items to BUGS/TODO - - BUGS | 13 +++++++++++++ - TODO | 58 +++++++--------------------------------------------------- - 2 files changed, 20 insertions(+), 51 deletions(-) - -commit e540d4c44f7d38881c40a2eff1dab6469968b380 -Author: Carl Worth -Date: Tue Sep 9 17:38:10 2003 +0000 - - Updated calls to slim_hidden_def to track changes in slim 0.2.0 - - ChangeLog | 5 +++++ - configure.in | 2 +- - src/cairo-matrix.c | 16 ++++++++-------- - src/cairo-surface.c | 16 ++++++++-------- - src/cairo.c | 12 ++++++------ - src/cairo_matrix.c | 16 ++++++++-------- - src/cairo_surface.c | 16 ++++++++-------- - 7 files changed, 44 insertions(+), 39 deletions(-) - -commit 1abf6689e18f2fbde965efcf1b6b3bd4d6fa22f5 -Author: Carl Worth -Date: Tue Sep 9 17:35:42 2003 +0000 - - Updated calls to slim_hidden_def to track cahnges in slim 0.2.0 - - pixman/ChangeLog.libic | 5 +++++ - pixman/ChangeLog.libpixregion | 5 +++++ - pixman/configure.in | 2 +- - pixman/src/ic.c | 2 +- - pixman/src/iccolor.c | 2 +- - pixman/src/icformat.c | 2 +- - pixman/src/icimage.c | 6 +++--- - pixman/src/icrect.c | 2 +- - pixman/src/pixregion.c | 6 +++--- - 9 files changed, 21 insertions(+), 11 deletions(-) - -commit be113ebc4ab3c597e3b2a4f924397f66e5d83ada -Author: Carl Worth -Date: Tue Sep 9 17:33:52 2003 +0000 - - Bump version number to 0.2.0 - - pixman/ChangeLog.slim | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 5d1bf0b96b7ef6eed5fb0b9089d9950d28c1c75a -Author: Carl Worth -Date: Tue Sep 9 17:32:07 2003 +0000 - - Remove ';' from slim_hidden_def. Bump version to 0.1.1 - - pixman/ChangeLog.slim | 8 ++++++++ - pixman/src/slim_internal.h | 6 +++--- - 2 files changed, 11 insertions(+), 3 deletions(-) - -commit 5b5c172803887e59bf86f351d60930fd10f6063b -Author: Carl Worth -Date: Fri Sep 5 15:29:49 2003 +0000 - - Preliminary support for running Cairo with X servers without the Render extension. This is still horribly slow. Removed many uses of X-specific macros, (eg. XDoubleToFixed) - - ChangeLog | 34 +++++++ - configure.in | 2 +- - src/Makefile.am | 1 + - src/cairo-fixed.c | 46 ++++++++++ - src/cairo-font.c | 1 + - src/cairo-gstate.c | 78 +++++++++++------ - src/cairo-path-bounds.c | 8 +- - src/cairo-path-stroke.c | 32 ++++---- - src/cairo-pen.c | 4 +- - src/cairo-spline.c | 12 ++-- - src/cairo-surface.c | 225 ++++++++++++++++++++++++++--------------------- - src/cairo-traps.c | 14 ++-- - src/cairo.h | 7 -- - src/cairo_fixed.c | 46 ++++++++++ - src/cairo_font.c | 1 + - src/cairo_gstate.c | 78 +++++++++++------ - src/cairo_path_bounds.c | 8 +- - src/cairo_path_stroke.c | 32 ++++---- - src/cairo_pen.c | 4 +- - src/cairo_spline.c | 12 ++-- - src/cairo_surface.c | 225 ++++++++++++++++++++++++++--------------------- - src/cairo_traps.c | 14 ++-- - src/cairoint.h | 33 +++++-- - 23 files changed, 573 insertions(+), 344 deletions(-) - -commit 4551d78c8f5579a563a446ee745a04472d372823 -Author: Carl Worth -Date: Fri Sep 5 15:24:45 2003 +0000 - - Expose functions for creating IcFormat based on IcFormatName or masks. The actual IcFormat struct is no longer exposed. Bump version number to 0.1.1 - - pixman/ChangeLog.libic | 22 +++++ - pixman/src/ic.c | 36 ++++---- - pixman/src/ic.h | 33 ++++--- - pixman/src/icblt.c | 1 - - pixman/src/icbltone.c | 1 - - pixman/src/iccolor.c | 36 +++----- - pixman/src/iccompose.c | 222 +-------------------------------------------- - pixman/src/icformat.c | 117 ++++++++++++++++-------- - pixman/src/icimage.c | 6 +- - pixman/src/icimage.h | 11 +-- - pixman/src/icint.h | 49 ++++++---- - pixman/src/icpixels.c | 3 +- - pixman/src/icrect.c | 4 +- - pixman/src/icrop.h | 1 - - pixman/src/icstipple.c | 1 - - pixman/src/ictransform.c | 2 - - pixman/src/ictrap.c | 20 ++-- - pixman/src/ictri.c | 16 ++-- - pixman/src/icutil.c | 1 - - 19 files changed, 208 insertions(+), 374 deletions(-) - -commit 7e9a0f9cf30f507b50cbf3fc97c387bd05b534cd -Author: Keith Packard -Date: Fri Sep 5 13:25:46 2003 +0000 - - comment face computations, check for reflecting transformation to select correct face orientations - check for reflecting transform when computing pen to ensure consistent pen orientation - - ChangeLog | 8 ++++++ - src/cairo-path-stroke.c | 65 +++++++++++++++++++++++++++++------------------ - src/cairo-pen.c | 43 +++++++++++++++++++++---------- - src/cairo_path_stroke.c | 65 +++++++++++++++++++++++++++++------------------ - src/cairo_pen.c | 43 +++++++++++++++++++++---------- - 5 files changed, 146 insertions(+), 78 deletions(-) - -commit 36307e49d44a3712767749c450199b7a1ce0dea9 -Author: Carl Worth -Date: Fri Sep 5 10:17:22 2003 +0000 - - Portability fix for OpenBSD (from Michael Schubert) - - pixman/ChangeLog.libic | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 67275336bf0a89357fc4fda38dc5fb80a8cb90e8 -Author: Carl Worth -Date: Fri Sep 5 08:35:08 2003 +0000 - - Added cairo_copy. Bumbed version to 0.1.2. - - ChangeLog | 20 ++++++++++++++++++ - configure.in | 2 +- - src/cairo-gstate.c | 3 ++ - src/cairo.c | 55 ++++++++++++++++++++++++--------------------------- - src/cairo.h | 3 ++ - src/cairo_gstate.c | 3 ++ - 6 files changed, 56 insertions(+), 30 deletions(-) - -commit 196388abe67283364e774a75167a2e83e3884036 -Author: Carl Worth -Date: Fri Sep 5 07:16:45 2003 +0000 - - Fix crash in show_text due to missing call to ensure_source. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 19 +++++++++++++++++++ - src/cairo_gstate.c | 19 +++++++++++++++++++ - 3 files changed, 43 insertions(+), 0 deletions(-) - -commit acb8ef11ceba696312b9e52dd45318833dffb80f -Author: Carl Worth -Date: Thu Sep 4 16:32:21 2003 +0000 - - Changed DEPRECATE method to preseve binary compatibility, but break source-level compatibility. - - src/cairoint.h | 18 +++++++++--------- - 1 files changed, 9 insertions(+), 9 deletions(-) - -commit c25eea6f10473fd1e2d61faf60289f58475b85fd -Author: Carl Worth -Date: Thu Sep 4 16:27:34 2003 +0000 - - Fixed bugs if cairo_stroke/fill called before cairo_set_rgb_color or cairo_set_target. Also fixed bug when cairo_set_rgb_color is called before cairo_set_target. - - BUGS | 2 - - ChangeLog | 23 +++++++++ - src/cairo-gstate.c | 136 +++++++++++++++++++++++++++++++--------------------- - src/cairo.c | 8 ++- - src/cairo.h | 3 +- - src/cairo_gstate.c | 136 +++++++++++++++++++++++++++++++--------------------- - src/cairoint.h | 7 ++- - 7 files changed, 198 insertions(+), 117 deletions(-) - -commit 6f731e27580870a5954ca21331b15746e371c8d3 -Author: Keith Packard -Date: Thu Sep 4 11:54:09 2003 +0000 - - added comments describing miter join code and miter limit computation. Replace XFoo with cairo_foo for double and fixed - add cairo_fixed_to_double and cairo_double_to_fixed Carl says he's got similar code, so he'll have to fix things if I get this committed quickly enough. - - ChangeLog | 10 +++++ - src/cairo-path-stroke.c | 100 ++++++++++++++++++++++++++++++++++------------ - src/cairo_path_stroke.c | 100 ++++++++++++++++++++++++++++++++++------------ - src/cairoint.h | 3 + - 4 files changed, 161 insertions(+), 52 deletions(-) - -commit 66c091e70661f8a87658fd20707b899f9b85970c -Author: Carl Worth -Date: Thu Sep 4 11:21:15 2003 +0000 - - Fixed DEPRECATE macro so that old programs will still work - - src/cairo.h | 2 ++ - src/cairoint.h | 8 ++++---- - 2 files changed, 6 insertions(+), 4 deletions(-) - -commit bbe8f9330bca8a1266cd3cea27742481eb2ae7e8 -Author: Carl Worth -Date: Thu Sep 4 06:53:02 2003 +0000 - - Added cairo-api-update script. - - ChangeLog | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit b9c3be767896c817786e115a0a4856a419d6ce55 -Author: Carl Worth -Date: Thu Sep 4 06:52:01 2003 +0000 - - Changed names of all cairo_get_* functions to cairo_current_*. Added magic DEPRECATE macro so that using the old names will give useful warnings/errors. Bumped version number to 0.1.1 - - ChangeLog | 18 +++++++++++++ - configure.in | 2 +- - src/cairo-gstate.c | 30 +++++++++++----------- - src/cairo.c | 67 +++++++++++++++++++++++++++++------------------- - src/cairo.h | 57 ++++++++++++++++++++++++++++++----------- - src/cairo_gstate.c | 30 +++++++++++----------- - src/cairoint.h | 46 +++++++++++++++++++++++++--------- - util/cairo-api-update | 40 +++++++++++++++++++++++++++++ - 8 files changed, 204 insertions(+), 86 deletions(-) - -commit 1568c818dacf70463e4b71550bbf24d26f894b70 -Author: Carl Worth -Date: Wed Sep 3 07:14:18 2003 +0000 - - Add implementation of cairo_get_matrix - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 6 ++++++ - src/cairo.c | 6 ++++++ - src/cairo.h | 5 +---- - src/cairo_gstate.c | 6 ++++++ - src/cairoint.h | 3 +++ - 6 files changed, 29 insertions(+), 4 deletions(-) - -commit 1a6496eaec0e94a59008c3a205f92e308fbafe38 -Author: Carl Worth -Date: Tue Sep 2 13:36:17 2003 +0000 - - Portability fix for OpenBSD (from Michael Schubert) - - pixman/src/ic.h | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 44b3c4ca7875c20429d983c47437e16a01c45d3a -Author: Carl Worth -Date: Fri Aug 29 17:57:08 2003 +0000 - - Optimized _cairo_surface_composite for compositing local memory surface with an X11 server surface. - - ChangeLog | 7 +++++++ - src/cairo-surface.c | 28 +++++++++++++++++++++++++--- - src/cairo.h | 18 +++++++++--------- - src/cairo_surface.c | 28 +++++++++++++++++++++++++--- - 4 files changed, 66 insertions(+), 15 deletions(-) - -commit 0ed4d32d87695599f66568e3f966f08ca060c9c6 -Author: Carl Worth -Date: Fri Aug 29 17:48:48 2003 +0000 - - Fixed to use fabs not abs. Added pointer to Hobby's intersection paper. - - ChangeLog | 9 +++++++++ - src/cairo-font.c | 3 ++- - src/cairo-traps.c | 21 +++++++++++++++++++++ - src/cairo_font.c | 3 ++- - src/cairo_traps.c | 21 +++++++++++++++++++++ - 5 files changed, 55 insertions(+), 2 deletions(-) - -commit 2ee2cfe14a446bc928d5a0945cc2a68657f8c825 -Author: Keith Packard -Date: Thu Aug 28 14:12:08 2003 +0000 - - font pixel size is always non-negative - - ChangeLog | 3 +++ - src/cairo-font.c | 2 +- - src/cairo_font.c | 2 +- - 3 files changed, 5 insertions(+), 2 deletions(-) - -commit 4d399b9aca39f60793957e581664a968f35aee5d -Author: Carl Worth -Date: Tue Aug 26 07:40:17 2003 +0000 - - Added missing underscores to several internal functions. - - ChangeLog | 12 +++++ - src/cairo-font.c | 6 +- - src/cairo-gstate.c | 28 ++++++------ - src/cairo-matrix.c | 6 +- - src/cairo-path-fill.c | 6 +- - src/cairo-path-stroke.c | 20 ++++---- - src/cairo-pen.c | 2 +- - src/cairo-traps.c | 116 +++++++++++++++++++++++----------------------- - src/cairo.h | 32 +++++++------- - src/cairo_font.c | 6 +- - src/cairo_gstate.c | 28 ++++++------ - src/cairo_matrix.c | 6 +- - src/cairo_path_fill.c | 6 +- - src/cairo_path_stroke.c | 20 ++++---- - src/cairo_pen.c | 2 +- - src/cairo_traps.c | 116 +++++++++++++++++++++++----------------------- - src/cairoint.h | 53 ++++++++++------------ - 17 files changed, 236 insertions(+), 229 deletions(-) - -commit daf4141a03fa36b4ff9a45c92cc217afe1d5172c -Author: Carl Worth -Date: Tue Aug 26 07:14:40 2003 +0000 - - Fixed anchoring/transformation of pattern for stroke/fill. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 32 ++++++++++++++++++++++++++------ - src/cairo_gstate.c | 32 ++++++++++++++++++++++++++------ - 3 files changed, 59 insertions(+), 12 deletions(-) - -commit 596d081d47920298ccb91ee34d867661f31f067c -Author: Carl Worth -Date: Mon Aug 18 18:53:16 2003 +0000 - - Add --enable-maintainer-mode to autogen.sh - - pixman/autogen.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 48db57aea654fbd57afb627aa9ff2004358ee0c8 -Author: Carl Worth -Date: Mon Aug 18 18:52:46 2003 +0000 - - Added better warning if pkg-config is not installed. Add --enable-maintainer-mode to autogen.sh - - autogen.sh | 25 +++++++++++++++++++++---- - 1 files changed, 21 insertions(+), 4 deletions(-) - -commit e7eecebc271bfde162bad48b6f2c6063a9b6982e -Author: Carl Worth -Date: Mon Aug 18 18:45:24 2003 +0000 - - Fixed to give a better warning if pkg-config is not installed - - pixman/autogen.sh | 17 ++++++++++++++++- - 1 files changed, 16 insertions(+), 1 deletions(-) - -commit 9a68366825015b66afd8496fb4eb42ce08e9849b -Author: Carl Worth -Date: Tue Aug 5 05:04:27 2003 +0000 - - Removed version requirements from dependencies on slim, libic, and Xft. - - configure.in | 6 +----- - 1 files changed, 1 insertions(+), 5 deletions(-) - -commit 83d5f0352ca54adb5fa5caa12dbba6c7f5e7755d -Author: Richard Henderson -Date: Thu Jul 31 22:49:09 2003 +0000 - - Mark const. - Likewise. - Likewise. - Likewise for cb. - - ChangeLog | 7 +++++++ - src/cairo-color.c | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-path-bounds.c | 2 +- - src/cairo-path.c | 2 +- - src/cairo_color.c | 2 +- - src/cairo_matrix.c | 2 +- - src/cairo_path.c | 2 +- - src/cairo_path_bounds.c | 2 +- - 9 files changed, 15 insertions(+), 8 deletions(-) - -commit 9289e8a77af5a2cd7faa18c90cced6d90adad66a -Author: Richard Henderson -Date: Thu Jul 31 22:41:44 2003 +0000 - - Depend on slim. - Check for slim. - Include slim_{export,import}.h as needed; mark all symbols __external_linkage. - Include slim_internal.h; mark all symbols __internal_linkage. Provide slim_hidden_proto symbols as needed. - Provide slim_hidden_def symbols as needed. - Mark static. (cairo_traps_add_trap_from_points): Likewise. - - ChangeLog | 14 +++ - cairo.pc.in | 2 +- - configure.in | 3 +- - src/cairo-matrix.c | 8 ++ - src/cairo-surface.c | 7 ++ - src/cairo-traps.c | 8 +- - src/cairo.c | 6 + - src/cairo.h | 188 ++++++++++++++++++---------------- - src/cairo_matrix.c | 8 ++ - src/cairo_surface.c | 7 ++ - src/cairo_traps.c | 8 +- - src/cairoint.h | 280 ++++++++++++++++++++++++++++----------------------- - 12 files changed, 312 insertions(+), 227 deletions(-) - -commit b7483e81a745d0cb933535346e35305bb2b06f2d -Author: Richard Henderson -Date: Thu Jul 31 20:46:21 2003 +0000 - - Define as __builtin_popcount when available. - - pixman/ChangeLog.libic | 4 ++++ - pixman/src/iccolor.c | 18 ++++++++++++++---- - 2 files changed, 18 insertions(+), 4 deletions(-) - -commit 2d51c71a79005c70249eedb191fa59732a358789 -Author: Richard Henderson -Date: Thu Jul 31 10:00:08 2003 +0000 - - Check for slim revision. - Depend on slim. - Don't include icimage.h. - Don't include ic.h. - Include slim_{export,import}.h as appropriate. Mark all symbols __external_linkage. - Include slim_import.h; mark symbols __internal_linkage; add slim hidden_proto declarations. - Mark all symbols __internal_linkage. - Likewise. - Provide hidden definition. - Likewise. - Likewise. - Likewise. - Likewise. - Make static. - - pixman/ChangeLog.libic | 23 ++++++++++++++++ - pixman/src/ic.c | 3 +- - pixman/src/ic.h | 66 +++++++++++++++++++++++++++-------------------- - pixman/src/iccolor.c | 1 + - pixman/src/iccompose.c | 1 - - pixman/src/icformat.c | 1 + - pixman/src/icimage.c | 3 ++ - pixman/src/icimage.h | 29 ++++++++++----------- - pixman/src/icint.h | 50 ++++++++++++++++++++++-------------- - pixman/src/icrect.c | 1 + - pixman/src/icrop.h | 7 +++-- - pixman/src/ictri.c | 8 +----- - 12 files changed, 118 insertions(+), 75 deletions(-) - -commit f4dc2f2ee031b117aacbf4f4262ad548b8e0498a -Author: Richard Henderson -Date: Thu Jul 31 02:14:10 2003 +0000 - - Attribute visibility not present until gcc 3.3. - - pixman/ChangeLog.slim | 5 +++++ - pixman/src/slim_internal.h | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 7b1d999679d6ccc08c10d6b6c8a0a41ff7176892 -Author: Richard Henderson -Date: Thu Jul 31 02:11:33 2003 +0000 - - Make everything but IcComposite static. - Make everything except IcBuildCompositeOperand and IcCompositeGeneral static. - Make static. (IcLaneTable): Turn into a function. (IcBltOne): Make IcLane const. (icStipple24Bits): Make static. - Remove lots of now static declarations. - Likewise. - Make static. (icStipple2Bits, icStipple1Bits): Make static. (IcStippleTable): Turn into a function. - - pixman/ChangeLog.libic | 15 + - pixman/src/ic.c | 32 +- - pixman/src/icbltone.c | 42 ++- - pixman/src/iccompose.c | 294 +++++++++--------- - pixman/src/icimage.h | 801 ------------------------------------------------ - pixman/src/icrop.h | 8 +- - pixman/src/icutil.c | 47 ++-- - 7 files changed, 231 insertions(+), 1008 deletions(-) - -commit a1e7245d74187e21f36211762f09b1ba1b59f566 -Author: Carl Worth -Date: Wed Jul 30 11:50:38 2003 +0000 - - Committing missed ChangeLog entry - - pixman/ChangeLog.libic | 7 ++++++- - pixman/src/ic.h | 2 +- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 713f550a938c8a492d6a40b70664af5fa6a87f80 -Author: Carl Worth -Date: Wed Jul 30 11:21:54 2003 +0000 - - fixed some typos in the libic PKG_CHECK - - ChangeLog | 3 +++ - configure.in | 10 ++++------ - 2 files changed, 7 insertions(+), 6 deletions(-) - -commit f4017c58575be26ab0ae5e41a9d5233e358969d8 -Author: Carl Worth -Date: Wed Jul 30 10:54:44 2003 +0000 - - Fixed IcRectangle to be compatible with XRectangle. - - pixman/ChangeLog.libic | 4 ++++ - pixman/src/ic.h | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit b86e8f5a0c8a2ddac9742e229e34c81d522c4c5a -Author: Carl Worth -Date: Wed Jul 30 10:48:27 2003 +0000 - - Fixed a disagreement over whether some internal cairo_gstate_t functions had an '_' prefix or not. - - ChangeLog | 4 ++++ - src/cairo.c | 12 ++++++------ - src/cairoint.h | 22 +++++++++++----------- - 3 files changed, 21 insertions(+), 17 deletions(-) - -commit 1ec2cb30f5862f1677670999e48475c02508d50d -Author: Carl Worth -Date: Wed Jul 30 10:36:50 2003 +0000 - - Removed false dependency on X. - - pixman/ChangeLog.libpixregion | 8 ++++++++ - pixman/configure.in | 4 ---- - pixman/src/pixman.h | 13 ++++++++----- - 3 files changed, 16 insertions(+), 9 deletions(-) - -commit e82a135aac039eb73436137b924d00726ef87119 -Author: Richard Henderson -Date: Wed Jul 30 10:09:53 2003 +0000 - - New. - Add slim.pc. - New file. - - pixman/ChangeLog.slim | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit b9be119a3f3258df58067d24f5133b3e19dde91a -Author: Richard Henderson -Date: Wed Jul 30 10:06:34 2003 +0000 - - Run PKG_CHECK_MODULES on slim. - Require slim. - Mark hidden. (PixRegionCopy, PixRegionUnion): Mark hidden. - Include and use X11/Xfuncproto.h. Include slim_{export,import}.h as appropriate. Mark all functions with __external_linkage. - Rename include protect to _PIXREGIONINT_H_. - - pixman/ChangeLog.libpixregion | 11 +++++++ - pixman/configure.in | 3 ++ - pixman/libpixman.pc.in | 1 + - pixman/src/pixman.h | 63 ++++++++++++++++++++++++---------------- - pixman/src/pixregion.c | 8 +++++ - pixman/src/pixregionint.h | 8 ++-- - 6 files changed, 65 insertions(+), 29 deletions(-) - -commit 9fecd258a68a915cdac26c2fce14b8706d308df0 -Author: Richard Henderson -Date: Wed Jul 30 09:14:22 2003 +0000 - - New file. - New file. - New file. - Add them. - Check for src/slim_export.h - - pixman/ChangeLog.slim | 11 +++++ - pixman/src/slim_export.h | 54 ++++++++++++++++++++++++ - pixman/src/slim_import.h | 53 +++++++++++++++++++++++ - pixman/src/slim_internal.h | 99 ++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 217 insertions(+), 0 deletions(-) - -commit e97cfd5eae9874cd665646403a6f8e5fbdf5621e -Author: Carl Worth -Date: Wed Jul 30 08:30:50 2003 +0000 - - Made all changes necessary to abandon the Xc library, (sucking the functionality up into cairo_surface_t instead). Eliminated most of the remaining X datatypes (XFixed, XPointFixed, XLineFixed, XTrapezoid). Fixed some numerical problems relating to pen initialization and intersection calculation. - - ChangeLog | 71 ++++++++ - cairo.pc.in | 2 +- - configure.in | 4 +- - src/Makefile.am | 8 +- - src/cairo-color.c | 38 +++-- - src/cairo-font.c | 2 +- - src/cairo-gstate.c | 178 ++++++++++--------- - src/cairo-path-bounds.c | 22 ++- - src/cairo-path-fill.c | 12 +- - src/cairo-path-stroke.c | 68 ++++---- - src/cairo-path.c | 34 ++-- - src/cairo-pen.c | 134 +++++++-------- - src/cairo-polygon.c | 9 +- - src/cairo-slope.c | 58 ++++++ - src/cairo-spline.c | 40 +++-- - src/cairo-surface.c | 439 ++++++++++++++++++++++++++++++++++++++++------- - src/cairo-traps.c | 122 ++++++++------ - src/cairo.c | 160 +++++++++-------- - src/cairo.h | 116 ++++++++----- - src/cairo_color.c | 38 +++-- - src/cairo_font.c | 2 +- - src/cairo_gstate.c | 178 ++++++++++--------- - src/cairo_misc.c | 36 ---- - src/cairo_path.c | 34 ++-- - src/cairo_path_bounds.c | 22 ++- - src/cairo_path_fill.c | 12 +- - src/cairo_path_stroke.c | 68 ++++---- - src/cairo_pen.c | 134 +++++++-------- - src/cairo_polygon.c | 9 +- - src/cairo_slope.c | 58 ++++++ - src/cairo_spline.c | 40 +++-- - src/cairo_surface.c | 439 ++++++++++++++++++++++++++++++++++++++++------- - src/cairo_traps.c | 122 ++++++++------ - src/cairoint.h | 245 ++++++++++++++++++-------- - 34 files changed, 1958 insertions(+), 996 deletions(-) - -commit 2026b1c44aeeb09e7015efadd508aeec28d778fa -Author: Carl Worth -Date: Tue Jul 29 19:52:08 2003 +0000 - - Initial commit of slim shell - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit f605294dd31feb88261d4629ddd9cb7e8793c60f -Author: Carl Worth -Date: Tue Jul 29 14:45:20 2003 +0000 - - Replaced CARD*/INT* datatypes with stdint types (vektor@dumbterm.net). - - pixman/src/ic.c | 456 +++++++++++++------------- - pixman/src/ic.h | 28 +- - pixman/src/iccompose.c | 828 ++++++++++++++++++++++++------------------------ - pixman/src/icimage.h | 534 ++++++++++++++++---------------- - pixman/src/icint.h | 152 +++++----- - 5 files changed, 999 insertions(+), 999 deletions(-) - -commit 47844ba222600301bf46c521fc84d27e93586bc7 -Author: Carl Worth -Date: Sat Jul 26 20:38:58 2003 +0000 - - Fixed to not munge some internal cairot names, (such as cairo_traps_*) - - util/xr2cairo | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 953b708e2c483f41bb45a3694833dd8b62b4f415 -Author: Carl Worth -Date: Fri Jul 25 23:16:31 2003 +0000 - - Do nothing in cairo_show_text when using libic. - - src/cairo-gstate.c | 3 +++ - src/cairo_gstate.c | 3 +++ - src/cairoint.h | 1 - - 3 files changed, 6 insertions(+), 1 deletions(-) - -commit 91739aa148b078fe9e2f1da4a16a076bc7af68e5 -Author: Carl Worth -Date: Fri Jul 25 13:29:07 2003 +0000 - - Fix error correction on intersection test to avoid needless spinning. - - ChangeLog | 6 ++++++ - src/.cvsignore | 1 + - src/cairo-traps.c | 9 ++++++--- - src/cairo_traps.c | 9 ++++++--- - 4 files changed, 19 insertions(+), 6 deletions(-) - -commit cf24f32a5154269518369e7d10d22956da4192f3 -Author: Carl Worth -Date: Thu Jul 24 01:40:16 2003 +0000 - - Massive cleanup of polygon tessellation - - ChangeLog | 6 ++ - src/cairo-traps.c | 199 +++++++++++++++++------------------------------------ - src/cairo_traps.c | 199 +++++++++++++++++------------------------------------ - src/cairoint.h | 1 - - 4 files changed, 134 insertions(+), 271 deletions(-) - -commit ee146c47403520815aaac8c4b1b9bf6807c7cef0 -Author: Carl Worth -Date: Wed Jul 23 21:20:24 2003 +0000 - - Introduced cairo_fixed_*_t types. Converted several functions from floating to fixed point. - - ChangeLog | 18 +++++++++++++++ - src/cairo-pen.c | 8 +----- - src/cairo-traps.c | 64 ++++++++++++++++++++++++++++++---------------------- - src/cairo.c | 8 +++--- - src/cairo_pen.c | 8 +----- - src/cairo_traps.c | 64 ++++++++++++++++++++++++++++++---------------------- - src/cairoint.h | 24 +++++++++++++++++++ - 7 files changed, 124 insertions(+), 70 deletions(-) - -commit 6ef8b5cdf46e376f917797c0cd97758e31cec8b7 -Author: Carl Worth -Date: Sat Jul 19 14:02:43 2003 +0000 - - Better fix for the previous bug. More complete and more efficient. - - ChangeLog | 9 +++++++++ - src/cairo-traps.c | 18 +++++++----------- - src/cairo_traps.c | 18 +++++++----------- - 3 files changed, 23 insertions(+), 22 deletions(-) - -commit 92284e4ac81e92c108b60efe0ce7c5301b419d11 -Author: Carl Worth -Date: Sat Jul 19 05:19:32 2003 +0000 - - Fixed polygon tesselattion for some cases of incorrect sorting when two intersections are very near the same vertical position. - - src/cairo-traps.c | 6 +++--- - src/cairo_traps.c | 6 +++--- - 2 files changed, 6 insertions(+), 6 deletions(-) - -commit 84ed2d465fecd2d2fcf0a68a9c654f220f9119d7 -Author: Carl Worth -Date: Fri Jul 18 12:42:49 2003 +0000 - - Fixed some inconsistent tag/typedef names I missed the first time. - - ChangeLog | 5 +++++ - src/cairo-path-bounds.c | 26 +++++++++++++------------- - src/cairo-path-fill.c | 26 +++++++++++++------------- - src/cairo-path-stroke.c | 38 +++++++++++++++++++------------------- - src/cairo-path.c | 12 ++++++------ - src/cairo-pen.c | 20 ++++++++++---------- - src/cairo-spline.c | 2 +- - src/cairo.h | 18 +++++++++--------- - src/cairo_path.c | 12 ++++++------ - src/cairo_path_bounds.c | 26 +++++++++++++------------- - src/cairo_path_fill.c | 26 +++++++++++++------------- - src/cairo_path_stroke.c | 38 +++++++++++++++++++------------------- - src/cairo_pen.c | 20 ++++++++++---------- - src/cairo_spline.c | 2 +- - src/cairoint.h | 32 ++++++++++++++++---------------- - 15 files changed, 154 insertions(+), 149 deletions(-) - -commit dc1e96ae3502a81729839f4bcafcbc1fd00fc1bc -Author: Carl Worth -Date: Fri Jul 18 11:34:19 2003 +0000 - - Renamed everything from Xr* to cairo_* - - .cvsignore | 3 +- - BUGS | 5 +- - ChangeLog | 7 + - Makefile.am | 4 +- - README | 30 +- - cairo.pc.in | 13 + - configure.in | 14 +- - src/Makefile.am | 47 +- - src/Xr.h | 476 -------------------- - src/cairo-color.c | 80 ++++ - src/cairo-font.c | 171 +++++++ - src/cairo-gstate.c | 1123 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-matrix.c | 380 ++++++++++++++++ - src/cairo-path-bounds.c | 168 +++++++ - src/cairo-path-fill.c | 158 +++++++ - src/cairo-path-stroke.c | 715 ++++++++++++++++++++++++++++++ - src/cairo-path.c | 436 ++++++++++++++++++ - src/cairo-pen.c | 398 +++++++++++++++++ - src/cairo-polygon.c | 175 ++++++++ - src/cairo-spline.c | 271 ++++++++++++ - src/cairo-surface.c | 391 ++++++++++++++++ - src/cairo-traps.c | 593 +++++++++++++++++++++++++ - src/cairo.c | 715 ++++++++++++++++++++++++++++++ - src/cairo.h | 494 +++++++++++++++++++++ - src/cairo_color.c | 80 ++++ - src/cairo_font.c | 171 +++++++ - src/cairo_gstate.c | 1123 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo_matrix.c | 380 ++++++++++++++++ - src/cairo_misc.c | 36 ++ - src/cairo_path.c | 436 ++++++++++++++++++ - src/cairo_path_bounds.c | 168 +++++++ - src/cairo_path_fill.c | 158 +++++++ - src/cairo_path_stroke.c | 715 ++++++++++++++++++++++++++++++ - src/cairo_pen.c | 398 +++++++++++++++++ - src/cairo_polygon.c | 175 ++++++++ - src/cairo_spline.c | 271 ++++++++++++ - src/cairo_surface.c | 391 ++++++++++++++++ - src/cairo_traps.c | 593 +++++++++++++++++++++++++ - src/cairoint.h | 710 ++++++++++++++++++++++++++++++ - src/xr.c | 654 --------------------------- - src/xrcolor.c | 78 ---- - src/xrfiller.c | 103 ----- - src/xrfont.c | 169 ------- - src/xrgstate.c | 1120 ---------------------------------------------- - src/xrint.h | 708 ----------------------------- - src/xrmatrix.c | 378 ---------------- - src/xrmisc.c | 34 -- - src/xrpath.c | 434 ------------------ - src/xrpathbounds.c | 168 ------- - src/xrpathfill.c | 156 ------- - src/xrpathstroke.c | 713 ------------------------------ - src/xrpen.c | 389 ---------------- - src/xrpolygon.c | 173 -------- - src/xrspline.c | 269 ----------- - src/xrstate.c | 108 ----- - src/xrstroker.c | 643 --------------------------- - src/xrsurface.c | 386 ---------------- - src/xrtraps.c | 589 ------------------------- - util/xr2cairo | 49 ++ - xr.pc.in | 13 - - 60 files changed, 12194 insertions(+), 7812 deletions(-) - -commit 4a57fd0881b242d98ea74abb46c8c402faeb1960 -Author: Anders Carlsson -Date: Thu Jul 10 11:05:24 2003 +0000 - - Pass --enable-maintainer-mode to configure - Add compiler warning flags to CFLAGS. - - pixman/ChangeLog.libic | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit eefc5d5ec762881e8b59ebca4d8dbcc6d3c5e1ff -Author: Anders Carlsson -Date: Tue Jul 8 17:06:15 2003 +0000 - - Add accessor for getting a pointer to the image data. - - pixman/ChangeLog.libic | 6 ++++++ - pixman/src/ic.h | 3 +++ - pixman/src/icimage.c | 6 ++++++ - 3 files changed, 15 insertions(+), 0 deletions(-) - -commit 42529a2c7295a55005d172d2d5ed16531d0989f4 -Author: Anders Carlsson -Date: Tue Jul 8 16:00:55 2003 +0000 - - Add accessors. - - pixman/ChangeLog.libic | 7 +++++++ - pixman/src/ic.h | 12 ++++++++++++ - pixman/src/icimage.c | 18 ++++++++++++++++++ - 3 files changed, 37 insertions(+), 0 deletions(-) - -commit a18f4ea75b43b4be130caf02e2a03e8d6570ce2f -Author: Carl Worth -Date: Thu Jul 3 08:22:44 2003 +0000 - - Added XrMatrixGetAffine - - ChangeLog | 3 +++ - src/Xr.h | 6 ++++++ - src/xrmatrix.c | 13 +++++++++++++ - 3 files changed, 22 insertions(+), 0 deletions(-) - -commit 1fc2dabbd0ee2f21ee46160cc113de4a89c94742 -Author: Carl Worth -Date: Thu Jul 3 08:12:51 2003 +0000 - - Added XrGetRGBColor and XrGetAlpha - - ChangeLog | 5 +++++ - src/Xr.h | 6 ++++++ - src/xr.c | 18 +++++++++++++++++- - src/xrcolor.c | 8 ++++++++ - src/xrgstate.c | 14 ++++++++++++++ - src/xrint.h | 9 +++++++++ - 6 files changed, 59 insertions(+), 1 deletions(-) - -commit 991d4447542440ac1dde67db3b8e824bda6319a9 -Author: Carl Worth -Date: Wed Jun 11 23:43:29 2003 +0000 - - Scaling by 0 now causes an InvalidMatrix error - - ChangeLog | 5 +++++ - src/xrgstate.c | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit bfdd0ab71b64e371ed48f667af95131d697ff9d8 -Author: Carl Worth -Date: Wed May 28 19:31:30 2003 +0000 - - Cleanup of some stale unused code. - - pixman/src/ic.c | 17 ----------------- - pixman/src/iccompose.c | 1 - - 2 files changed, 0 insertions(+), 18 deletions(-) - -commit 528c1aceb1e17b52017182b154399b14ed6219a1 -Author: Carl Worth -Date: Wed May 28 19:28:53 2003 +0000 - - Added XrSurfacePutImage. Fixed missing translation of clip region. - - ChangeLog | 10 ++++++++++ - src/Xr.h | 10 ++++++++++ - src/xrfont.c | 4 ++-- - src/xrgstate.c | 50 ++++++++++++++++++++++++++++++++++++++------------ - src/xrint.h | 7 ------- - src/xrmatrix.c | 18 +++--------------- - src/xrsurface.c | 19 +++++++++++++++++++ - 7 files changed, 82 insertions(+), 36 deletions(-) - -commit c988feb05dfe63f25c37a36dce6ac76b7ee1f7c6 -Author: Carl Worth -Date: Thu May 15 21:16:26 2003 +0000 - - Changed default matrix to be 3780 user units per 1 meter physical device - - ChangeLog | 14 ++++++++++++++ - src/Xr.h | 4 ---- - src/xr.c | 2 +- - src/xrgstate.c | 28 ++++++++++++++++++++++++++-- - src/xrint.h | 6 ++++++ - src/xrsurface.c | 6 ++++++ - 6 files changed, 53 insertions(+), 7 deletions(-) - -commit dfc84ef8299a256264b6849ecca8392a60bdcea0 -Author: Carl Worth -Date: Wed May 14 21:59:42 2003 +0000 - - Added XrSetTargetImage. Removed _XrGStateSetTargetDrawable, (now implemented as a convenience function in xr.c) - - ChangeLog | 8 ++++++++ - src/Xr.h | 8 ++++++++ - src/xr.c | 44 ++++++++++++++++++++++++++++++++++++++++---- - src/xrgstate.c | 24 ------------------------ - src/xrint.h | 7 ------- - 5 files changed, 56 insertions(+), 35 deletions(-) - -commit b3b306dfd91b4126812254380dc3a7ae77f33935 -Author: Carl Worth -Date: Wed May 14 18:30:57 2003 +0000 - - Added toplevel functions for setting surface matrix, filter. Introduced new XrMatrix object. Fixed to properly hint scaled fonts. - - ChangeLog | 31 +++++ - README | 56 +++++--- - src/Makefile.am | 4 +- - src/Xr.h | 125 ++++++++++++------ - src/xr.c | 107 ++++++++------- - src/xrfont.c | 51 ++++---- - src/xrgstate.c | 272 ++++++++++++++++++------------------- - src/xrint.h | 122 ++++++----------- - src/xrmatrix.c | 377 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/xrpathstroke.c | 14 +- - src/xrpen.c | 8 +- - src/xrsurface.c | 39 +++++- - src/xrtransform.c | 301 ----------------------------------------- - 13 files changed, 831 insertions(+), 676 deletions(-) - -commit 7e1f3f1798eace4f5a48079a949717da8b5a0d50 -Author: Carl Worth -Date: Wed May 14 18:09:09 2003 +0000 - - Fixed transform/filter support - - pixman/ChangeLog.libic | 4 ++++ - pixman/src/ic.h | 16 ++++++++++++++++ - pixman/src/iccompose.c | 38 ++++++++++++++++++++------------------ - pixman/src/icimage.c | 12 +++++++++--- - pixman/src/icimage.h | 4 ++-- - pixman/src/icint.h | 6 ++++++ - pixman/src/ictransform.c | 6 ++---- - 7 files changed, 59 insertions(+), 27 deletions(-) - -commit 8f10ce30138ba541b71a2bb38a5d8a4249a8a478 -Author: Carl Worth -Date: Mon May 12 09:46:57 2003 +0000 - - Added XrSetPattern - - ChangeLog | 2 ++ - src/Xr.h | 7 +++++++ - src/xr.c | 9 +++++++++ - src/xrgstate.c | 13 ++++++++++++- - src/xrint.h | 3 +++ - 5 files changed, 33 insertions(+), 1 deletions(-) - -commit 078e552da81600f58d53e7ac5f8ba971e0ea767a -Author: Carl Worth -Date: Mon May 12 09:24:17 2003 +0000 - - XrStroke and XrFill now both go through the same clipping. Cleaned up the three path interpreters (stroke, fill, and bounds), to each be in their own files - - ChangeLog | 16 ++ - src/Makefile.am | 5 +- - src/xrgstate.c | 140 +++++------ - src/xrint.h | 83 +------ - src/xrpath.c | 132 +---------- - src/xrpathbounds.c | 168 ++++++++++++ - src/xrpathfill.c | 156 ++++++++++++ - src/xrpathstroke.c | 713 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 8 files changed, 1135 insertions(+), 278 deletions(-) - -commit 9d4a8db55c751e093353f7f3b48d27244d5973b7 -Author: Noah Levitt -Date: Thu May 8 14:21:48 2003 +0000 - - Lowercase pkg-config module name and distribution tarball name. - - .cvsignore | 4 +++- - Makefile.am | 6 +++--- - configure.in | 6 +++--- - xr.pc.in | 13 +++++++++++++ - 4 files changed, 22 insertions(+), 7 deletions(-) - -commit 5f61782a7ebeccef7d551c625eb60ade18f9539e -Author: Carl Worth -Date: Mon May 5 09:27:09 2003 +0000 - - Avoid crash in IcCompositeTrapezoids when there's nothing to draw. - - pixman/ChangeLog.libic | 5 +++++ - pixman/src/ictrap.c | 3 +++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 292d7bd9baf996d45275e848f258a4dbdd36cd73 -Author: Carl Worth -Date: Fri May 2 14:07:41 2003 +0000 - - Changed XrFormatRGB32 to XrFormatRGB24 - - ChangeLog | 8 ++++++++ - src/Makefile.am | 2 +- - src/Xr.h | 2 +- - src/xrsurface.c | 7 ++++--- - 4 files changed, 14 insertions(+), 5 deletions(-) - -commit 9c814d23d6b42794e9278ac7518dc4d99c77e408 -Author: Carl Worth -Date: Thu May 1 08:18:25 2003 +0000 - - Added several query functions. Experimental clip support (still incomplete) - - ChangeLog | 36 ++++++++++++ - src/Xr.h | 47 +++++++++++++++- - src/xr.c | 67 +++++++++++++++++++++-- - src/xrgstate.c | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- - src/xrint.h | 50 ++++++++++++++++- - src/xrpath.c | 132 +++++++++++++++++++++++++++++++++++++++++++++ - src/xrtraps.c | 2 +- - 7 files changed, 474 insertions(+), 23 deletions(-) - -commit cb1e64d7bcd96da04839eb5841feeed257cf21f3 -Author: Noah Levitt -Date: Mon Apr 28 16:00:40 2003 +0000 - - Get rid of all mention of Xrender. - - pixman/src/icimage.h | 2 +- - pixman/src/icint.h | 3 --- - 2 files changed, 1 insertions(+), 4 deletions(-) - -commit 7b5270441b19a68323137034db621e0a194300aa -Author: Carl Worth -Date: Sat Apr 26 09:57:54 2003 +0000 - - Fixed memory leak - - pixman/ChangeLog.libic | 5 +++++ - pixman/src/icimage.c | 8 +++++++- - pixman/src/icimage.h | 1 + - src/xrsurface.c | 4 ++++ - 4 files changed, 17 insertions(+), 1 deletions(-) - -commit b2e30d233eafd0d3bb26d2db45ef1d3505327e81 -Author: Carl Worth -Date: Fri Apr 25 14:24:38 2003 +0000 - - Remove X datatypes from public interface - - pixman/ChangeLog.libic | 3 +++ - pixman/src/ic.h | 37 +++++++++++++++++++++++++++++++------ - pixman/src/icint.h | 4 +++- - pixman/src/icrect.c | 6 +++--- - pixman/src/ictrap.c | 23 ++++++++++++----------- - pixman/src/ictri.c | 26 +++++++++++++------------- - 6 files changed, 65 insertions(+), 34 deletions(-) - -commit c5b28ba63cba596e1c5644de5df5f5d126535773 -Author: Carl Worth -Date: Fri Apr 25 13:34:00 2003 +0000 - - Fixed libtool versioning - - BUGS | 1 + - ChangeLog | 4 ++++ - configure.in | 24 ++++++++++++++++-------- - src/Makefile.am | 2 +- - 4 files changed, 22 insertions(+), 9 deletions(-) - -commit 140285ed9b246ebca15f7810696131c54bff8dd9 -Author: Carl Worth -Date: Fri Apr 25 13:21:42 2003 +0000 - - Fixed libtool versioning - - pixman/configure.in | 25 +++++++++++++++++-------- - pixman/src/Makefile.am | 3 ++- - pixman/src/pixman.h | 3 +-- - pixman/src/pixregionint.h | 2 +- - 4 files changed, 21 insertions(+), 12 deletions(-) - -commit b4d3b8e928c43d022e3a0d9ba978be91cfc02988 -Author: Carl Worth -Date: Fri Apr 25 13:18:13 2003 +0000 - - Fixed to not reference XFixed. Fixed libtool versioning - - pixman/ChangeLog.libic | 7 +++++++ - pixman/src/ic.h | 9 ++++++++- - 2 files changed, 15 insertions(+), 1 deletions(-) - -commit cdb85050b706b2845ef8a618c033b69d5b15c6b7 -Author: Carl Worth -Date: Wed Apr 23 07:23:46 2003 +0000 - - Cleanup whitespace in configure output - - configure.in | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 5a4f65a774d833d1ef8b2a59270b0076e0760e54 -Author: Carl Worth -Date: Wed Apr 23 07:17:57 2003 +0000 - - extern "C" stuff to support C++ (Fredrik Höglund) - - pixman/src/ic.h | 12 ++++++++++++ - src/Xr.h | 6 +++++- - src/xr.c | 4 ++-- - 3 files changed, 19 insertions(+), 3 deletions(-) - -commit 189b01b4fd4647f6d64e7c73ecb3ccf9ed180072 -Author: Keith Packard -Date: Tue Apr 22 22:08:58 2003 +0000 - - Require proper Xft version - - configure.in | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 8bb54c2b2d4b6df4ec23a442159065277d303f30 -Author: Carl Worth -Date: Tue Apr 22 16:38:45 2003 +0000 - - Fixed typo (Owen Taylor) - - pixman/ChangeLog.libpixregion | 4 ++++ - pixman/configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit e712a21abe4027abdb41180512d9c8bd5420206e -Author: Carl Worth -Date: Mon Apr 21 12:46:41 2003 +0000 - - Added Makefile.am - - src/.cvsignore | 1 - - src/Makefile.am | 27 +++++++++++++++++++++++++++ - 2 files changed, 27 insertions(+), 1 deletions(-) - -commit 8d930fee2c5c5434084fabb7852d7921223fc5d3 -Author: Carl Worth -Date: Mon Apr 21 12:41:30 2003 +0000 - - Added Makefile.am - - .cvsignore | 1 - - Makefile.am | 8 ++++++++ - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit ee738deaf6ff2cf7391d813876241b389a0dedaf -Author: Carl Worth -Date: Thu Apr 17 13:24:29 2003 +0000 - - Switched to autotools. Dropped XrPush/PopGroup. Supports non-X Xc rendering. - - .cvsignore | 19 +- - AUTHORS | 1 + - BUGS | 1 + - COPYING | 21 ++ - ChangeLog | 17 + - INSTALL | 9 + - Imakefile | 63 ---- - Xr.h | 278 ----------------- - autogen.sh | 28 ++ - configure.in | 51 +++ - local.def | 53 ---- - src/.cvsignore | 7 + - src/Xr.h | 91 +++++- - src/xr.c | 50 +++- - src/xrfont.c | 4 +- - src/xrgstate.c | 240 +++++++++------ - src/xrint.h | 123 +++----- - src/xrstate.c | 9 +- - src/xrsurface.c | 434 +++++++++++++------------- - src/xrtransform.c | 10 +- - xr.c | 513 ------------------------------- - xrcolor.c | 70 ----- - xrfiller.c | 103 ------- - xrfont.c | 170 ---------- - xrgstate.c | 885 ----------------------------------------------------- - xrint.h | 794 ----------------------------------------------- - xrmisc.c | 34 -- - xrpath.c | 432 -------------------------- - xrpen.c | 389 ----------------------- - xrpolygon.c | 173 ----------- - xrspline.c | 269 ---------------- - xrstate.c | 109 ------- - xrstroker.c | 643 -------------------------------------- - xrsurface.c | 323 ------------------- - xrtransform.c | 301 ------------------ - xrtraps.c | 589 ----------------------------------- - 36 files changed, 691 insertions(+), 6615 deletions(-) - -commit b61b9ffc2322e09873b9e2dfb0c1da56ec1ffd61 -Author: Carl Worth -Date: Thu Apr 17 08:48:22 2003 +0000 - - Removed reliance on server headers. Reowrked IcFormat - - pixman/ChangeLog.libic | 50 +++++++++ - pixman/src/ic.c | 40 +++---- - pixman/src/ic.h | 161 +++++++++++++++++----------- - pixman/src/iccolor.c | 85 ++++++++++++++ - pixman/src/iccompose.c | 26 ++++- - pixman/src/icformat.c | 67 +++++------ - pixman/src/icimage.c | 115 +++++++------------ - pixman/src/icimage.h | 86 ++++++--------- - pixman/src/icint.h | 285 +++++++++++++++++++++++++++++++++++++++++++----- - pixman/src/icpixels.c | 22 ++-- - pixman/src/icrect.c | 107 +++++++++++-------- - pixman/src/ictrap.c | 48 +++++---- - pixman/src/ictri.c | 102 ++++++++++-------- - 13 files changed, 798 insertions(+), 396 deletions(-) - -commit 2d8dfcec1bb166f8335300bd3850847a5bb1396e -Author: Carl Worth -Date: Wed Mar 5 10:19:48 2003 +0000 - - Updated to use libpixregion - - pixman/ChangeLog.libic | 21 +++++++++++++++++++++ - pixman/src/ic.h | 22 +++++++++++++++++++++- - pixman/src/icimage.h | 3 +++ - pixman/src/icint.h | 41 +++-------------------------------------- - 4 files changed, 48 insertions(+), 39 deletions(-) - -commit 88bd3a9799fd2225d84d1abed922204b3e1885e6 -Author: Carl Worth -Date: Tue Feb 25 10:33:10 2003 +0000 - - updated to use libpixregion instead of Xlib region code - - pixman/src/ic.c | 19 ++++------- - pixman/src/ic.h | 2 + - pixman/src/iccompose.c | 8 ++-- - pixman/src/icimage.c | 81 ++++++++++++++++++++++++----------------------- - pixman/src/icimage.h | 12 +++--- - pixman/src/icint.h | 4 -- - pixman/src/ictrap.c | 20 ++--------- - pixman/src/ictri.c | 20 +++++++----- - 8 files changed, 76 insertions(+), 90 deletions(-) - -commit 3eaa7a73e7ef8e24caa09a3e0318a5254c55d56f -Author: Carl Worth -Date: Tue Feb 25 10:28:05 2003 +0000 - - API cleanup - - pixman/ChangeLog.libpixregion | 9 ++++++++ - pixman/src/pixman.h | 27 +++++++++---------------- - pixman/src/pixregion.c | 43 +++++++++++++++++++++-------------------- - 3 files changed, 41 insertions(+), 38 deletions(-) - -commit a837f75a8b9dafb373bcc828dcc5ade6a1d84674 -Author: Carl Worth -Date: Tue Feb 25 08:05:26 2003 +0000 - - Initial import of libpixregion - - pixman/.cvsignore | 13 + - pixman/AUTHORS | 2 + - pixman/COPYING | 42 + - pixman/INSTALL | 9 + - pixman/Makefile.am | 8 + - pixman/NEWS | 1 + - pixman/README | 15 + - pixman/autogen.sh | 30 + - pixman/configure.in | 46 + - pixman/libpixman.pc.in | 10 + - pixman/src/.cvsignore | 6 + - pixman/src/Makefile.am | 12 + - pixman/src/pixman.h | 157 +++ - pixman/src/pixregion.c | 2538 +++++++++++++++++++++++++++++++++++++++++ - pixman/src/pixregionint.h | 83 ++ - 15 files changed, 2972 insertions(+), 0 deletions(-) - -commit 56e193eaf2c24aa3799b8440708a9448de3a94e9 -Author: Carl Worth -Date: Fri Feb 21 14:08:28 2003 +0000 - - Added triangle support - - pixman/src/ic.h | 32 +++++++++++ - pixman/src/icimage.h | 51 ------------------ - pixman/src/icint.h | 10 ++++ - pixman/src/ictrap.c | 6 -- - pixman/src/ictri.c | 140 +++++++++++++++++++++++++++----------------------- - 5 files changed, 118 insertions(+), 121 deletions(-) - -commit 8bb4eb1beb020ed679a7644579253bd21f8bc970 -Author: Carl Worth -Date: Fri Feb 21 13:34:50 2003 +0000 - - Some reorganization and cruft removal - - pixman/ChangeLog.libic | 5 + - pixman/src/ic.c | 1973 +++++++++++++++++++++++----------------------- - pixman/src/icbltone.c | 130 --- - pixman/src/iccompose.c | 1 + - pixman/src/icformat.c | 20 - - pixman/src/icimage.c | 1639 +++++++------------------------------- - pixman/src/icimage.h | 18 - - pixman/src/icint.h | 221 ------ - pixman/src/ictransform.c | 70 ++ - pixman/src/icutil.c | 81 -- - 10 files changed, 1351 insertions(+), 2807 deletions(-) - -commit 18edad04edf860211260a1db4a7b58fd75715cf7 -Author: Carl Worth -Date: Fri Feb 21 10:07:17 2003 +0000 - - Started cleaning up public libic interface - - pixman/src/ic.c | 14 +- - pixman/src/ic.h | 1008 +++--------------------------------------------- - pixman/src/icimage.c | 24 +- - pixman/src/icint.h | 956 ++++++++++++++++++++++++++++++++++++++++++++- - pixman/src/icpixels.c | 4 +- - pixman/src/icstipple.c | 2 +- - pixman/src/ictrap.c | 6 +- - 7 files changed, 1010 insertions(+), 1004 deletions(-) - -commit c9bf4bab84e6c1abbdcb2b7888918fc01e5cf063 -Author: Carl Worth -Date: Fri Feb 21 06:51:08 2003 +0000 - - Initial import of libic code, (still very preliminary). - - pixman/ChangeLog.libic | 4 + - pixman/src/ic.c | 1183 ++++++++++++++++++++ - pixman/src/ic.h | 1024 +++++++++++++++++ - pixman/src/icblt.c | 926 +++++++++++++++ - pixman/src/icbltone.c | 867 +++++++++++++++ - pixman/src/iccompose.c | 2900 ++++++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/icformat.c | 139 +++ - pixman/src/icimage.c | 1641 +++++++++++++++++++++++++++ - pixman/src/icimage.h | 1243 +++++++++++++++++++++ - pixman/src/icint.h | 68 ++ - pixman/src/icpixels.c | 118 ++ - pixman/src/icrect.c | 152 +++ - pixman/src/icrop.h | 139 +++ - pixman/src/icstipple.c | 80 ++ - pixman/src/ictrap.c | 1517 +++++++++++++++++++++++++ - pixman/src/ictri.c | 342 ++++++ - pixman/src/icutil.c | 363 ++++++ - 17 files changed, 12706 insertions(+), 0 deletions(-) - -commit d084434770b77d0751978bf6774eca00a6e7d646 -Author: Carl Worth -Date: Fri Feb 14 07:22:19 2003 +0000 - - Fixed transformed images to not be 1 pixel too big - - ChangeLog | 5 +++++ - src/xrgstate.c | 4 ++-- - xrgstate.c | 4 ++-- - 3 files changed, 9 insertions(+), 4 deletions(-) - -commit d4ba730ba26d6a58ba81d733a75e4ce01a4bda72 -Author: Carl Worth -Date: Thu Feb 6 08:06:28 2003 +0000 - - Fixed algebra used by XrPenVerticesNeeded to avoid sqrt() of negative numbers. - - ChangeLog | 6 ++++++ - src/xrint.h | 3 +++ - src/xrpen.c | 15 +++++++-------- - src/xrtransform.c | 21 ++++++++++++++------- - xrint.h | 3 +++ - xrpen.c | 15 +++++++-------- - xrtransform.c | 21 ++++++++++++++------- - 7 files changed, 54 insertions(+), 30 deletions(-) - -commit a4b439eb69710a3c2053e68f7716bbf76b5ceb7f -Author: Carl Worth -Date: Tue Jan 28 13:49:57 2003 +0000 - - Added round caps/joins. Fixed initial cap. Fixed disabling of dashing. - - ChangeLog | 22 ++++++ - src/xrgstate.c | 46 +++++++------ - src/xrint.h | 33 +++++----- - src/xrpen.c | 96 +++++++++++++++++++++------ - src/xrstroker.c | 201 +++++++++++++++++++++++++++++++++++++------------------ - src/xrtraps.c | 62 +++++++++++++---- - xrgstate.c | 46 +++++++------ - xrint.h | 33 +++++----- - xrpen.c | 96 +++++++++++++++++++++------ - xrstroker.c | 201 +++++++++++++++++++++++++++++++++++++------------------ - xrtraps.c | 62 +++++++++++++---- - 11 files changed, 624 insertions(+), 274 deletions(-) - -commit 1507f1c795478c9cde970d1a750d0602407f6986 -Author: Carl Worth -Date: Tue Jan 28 07:23:54 2003 +0000 - - Added triangle tessellation. Converted bevel joins from polygons to triangles. - - ChangeLog | 8 ++++++++ - src/xrint.h | 3 +++ - src/xrstroker.c | 26 +++++++++++++++++--------- - src/xrtraps.c | 31 +++++++++++++++++++++++++++++++ - xrint.h | 3 +++ - xrstroker.c | 26 +++++++++++++++++--------- - xrtraps.c | 31 +++++++++++++++++++++++++++++++ - 7 files changed, 110 insertions(+), 18 deletions(-) - -commit f93c88efbf84d6a2dab3a37608ae5c73c6dd22d3 -Author: Carl Worth -Date: Sat Jan 25 11:12:39 2003 +0000 - - Fixed round joins to not fall through to miter case - - src/xrstroker.c | 13 +++++-------- - xrstroker.c | 13 +++++-------- - 2 files changed, 10 insertions(+), 16 deletions(-) - -commit 341c446ba2c4d9833c3366edaa9b725b3ab2c8f6 -Author: Carl Worth -Date: Fri Jan 24 13:56:30 2003 +0000 - - Fixed xrpolygon for multiple sub-polygons - - src/xrpolygon.c | 2 ++ - xrpolygon.c | 2 ++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit 214662761e7ea372073f4a1a496c3859f893d6ac -Author: Carl Worth -Date: Fri Jan 24 13:52:01 2003 +0000 - - Fixed miter limit handling. Added local.def - - ChangeLog | 9 +++++++++ - Imakefile | 5 +++-- - README | 7 +++++-- - local.def | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/xrstroker.c | 4 ++-- - xrstroker.c | 4 ++-- - 6 files changed, 74 insertions(+), 8 deletions(-) - -commit cdae3ba6155a7c883e52f1617edd9f6ab61df830 -Author: Carl Worth -Date: Tue Dec 3 12:37:59 2002 +0000 - - Fixed holes in self-intersecting splines, (from change to winding rule parameter interface) - - ChangeLog | 10 ++++++++++ - TODO | 14 +++++++++++--- - src/xrpen.c | 2 +- - src/xrstroker.c | 4 ++-- - xrpen.c | 2 +- - xrstroker.c | 4 ++-- - 6 files changed, 27 insertions(+), 9 deletions(-) - -commit 7f49b9ee83e277c5615e5e7a0c64f9df53ea5c85 -Author: Keith Packard -Date: Thu Nov 21 11:12:20 2002 +0000 - - Make Xr use XFTINCLUDES as it now uses Xft - - Imakefile | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6c8533a2ad96080889be9b2255c3236200dcb858 -Author: Carl Worth -Date: Mon Nov 11 12:46:17 2002 +0000 - - Fixes for transformed images - - ChangeLog | 20 ++++++++++++++++ - Xr.h | 19 ++++++++++++++- - src/Xr.h | 19 ++++++++++++++- - src/xr.c | 32 ++++++++++++++++++++++++++ - src/xrfiller.c | 4 ++- - src/xrgstate.c | 64 +++++++++++++++++++++++++++++++++++++++++---------- - src/xrint.h | 16 ++++++++++++- - src/xrpen.c | 5 +++- - src/xrsurface.c | 10 ++++---- - src/xrtransform.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++--- - xr.c | 32 ++++++++++++++++++++++++++ - xrfiller.c | 4 ++- - xrgstate.c | 64 +++++++++++++++++++++++++++++++++++++++++---------- - xrint.h | 16 ++++++++++++- - xrpen.c | 5 +++- - xrsurface.c | 10 ++++---- - xrtransform.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++--- - 17 files changed, 398 insertions(+), 52 deletions(-) - -commit 405598e4e0699bf5d4e2e0e7366a780219430cc8 -Author: Carl Worth -Date: Mon Nov 4 00:24:44 2002 +0000 - - Added group support. - - ChangeLog | 31 ++++++++++++ - Xr.h | 7 +++ - src/Xr.h | 7 +++ - src/xr.c | 30 +++++++++++- - src/xrfont.c | 4 +- - src/xrgstate.c | 148 +++++++++++++++++++++++++++++++++++++++++++++---------- - src/xrint.h | 48 ++++++++++++++++-- - src/xrstate.c | 1 + - src/xrsurface.c | 113 +++++++++++++++++++++++++++++++++++++----- - xr.c | 30 +++++++++++- - xrfont.c | 4 +- - xrgstate.c | 148 +++++++++++++++++++++++++++++++++++++++++++++---------- - xrint.h | 48 ++++++++++++++++-- - xrstate.c | 1 + - xrsurface.c | 113 +++++++++++++++++++++++++++++++++++++----- - 15 files changed, 639 insertions(+), 94 deletions(-) - -commit ea0104b2c04e12e16b8243b3762b6e53c58f0a72 -Author: Carl Worth -Date: Sat Nov 2 10:24:12 2002 +0000 - - Fix memory leak of image pixmap - - ChangeLog | 5 +++++ - src/xrsurface.c | 6 ++++++ - xrsurface.c | 6 ++++++ - 3 files changed, 17 insertions(+), 0 deletions(-) - -commit e39a088a29cd7676ad6f33ac0f0f2c4d5035580b -Author: Carl Worth -Date: Fri Nov 1 19:45:30 2002 +0000 - - Partial image support. - - ChangeLog | 24 ++++++++ - Xr.h | 27 +++++++++- - src/Xr.h | 27 +++++++++- - src/xr.c | 56 +++++++++++++++++++ - src/xrfont.c | 2 +- - src/xrgstate.c | 141 +++++++++++++++++++++++++++++++++++++---------- - src/xrint.h | 56 ++++++++++++++++--- - src/xrsurface.c | 166 ++++++++++++++++++++++++++++++++++++++++--------------- - xr.c | 56 +++++++++++++++++++ - xrfont.c | 2 +- - xrgstate.c | 141 +++++++++++++++++++++++++++++++++++++---------- - xrint.h | 56 ++++++++++++++++--- - xrsurface.c | 166 ++++++++++++++++++++++++++++++++++++++++--------------- - 13 files changed, 752 insertions(+), 168 deletions(-) - -commit fec91ede9e8bc725551e39619b65c32ad9abf3ce -Author: Carl Worth -Date: Wed Oct 30 21:54:50 2002 +0000 - - Moved Xft/fontconfig code up from Xc to Xr. Added XrTextExtents - - ChangeLog | 12 ++++++++ - Xr.h | 7 +++++ - src/Xr.h | 7 +++++ - src/xr.c | 14 ++++++++++ - src/xrcolor.c | 8 +++--- - src/xrfont.c | 44 +++++++++++++++++++------------- - src/xrgstate.c | 76 +++++++++++++++++++++++++++++++++++++++++++++--------- - src/xrint.h | 30 +++++++++++++++------ - src/xrsurface.c | 41 ++++++++++++++++++----------- - xr.c | 14 ++++++++++ - xrcolor.c | 8 +++--- - xrfont.c | 44 +++++++++++++++++++------------- - xrgstate.c | 76 +++++++++++++++++++++++++++++++++++++++++++++--------- - xrint.h | 30 +++++++++++++++------ - xrsurface.c | 41 ++++++++++++++++++----------- - 15 files changed, 332 insertions(+), 120 deletions(-) - -commit f207f1db6489742c1061349f547ba34523969482 -Author: Carl Worth -Date: Tue Oct 29 17:27:01 2002 +0000 - - Added basic font support - - ChangeLog | 9 +++ - Imakefile | 2 + - Xr.h | 15 +++++- - src/Xr.h | 15 +++++- - src/xr.c | 32 +++++++++++- - src/xrfont.c | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/xrgstate.c | 64 +++++++++++++++++----- - src/xrint.h | 54 ++++++++++++++++++- - src/xrsurface.c | 3 + - xr.c | 32 +++++++++++- - xrfont.c | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - xrgstate.c | 64 +++++++++++++++++----- - xrint.h | 54 ++++++++++++++++++- - xrsurface.c | 3 + - 14 files changed, 631 insertions(+), 36 deletions(-) - -commit f64ebf489ba101ff99fb7910924f04291d272057 -Author: Carl Worth -Date: Mon Oct 28 09:00:10 2002 +0000 - - Added XrStatusInvalidRestore. Fixed XrSurface memory leak. - - ChangeLog | 9 +++++++++ - Xr.h | 3 ++- - src/Xr.h | 3 ++- - src/xr.c | 3 --- - src/xrgstate.c | 23 +++++++++++++++++------ - src/xrint.h | 9 ++++++++- - src/xrstate.c | 11 ++++++----- - src/xrsurface.c | 29 +++++++++++++++++++---------- - xr.c | 3 --- - xrgstate.c | 23 +++++++++++++++++------ - xrint.h | 9 ++++++++- - xrstate.c | 11 ++++++----- - xrsurface.c | 29 +++++++++++++++++++---------- - 13 files changed, 113 insertions(+), 52 deletions(-) - -commit 84da6c1f7f1877662ad3e83858e77872426e2f14 -Author: Carl Worth -Date: Sat Oct 26 08:00:39 2002 +0000 - - Added TODO, README, and .cvsignore - - .cvsignore | 2 ++ - README | 42 ++++++++++++++++++++++++++++++++++++++++++ - TODO | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 92 insertions(+), 0 deletions(-) - -commit 06ddeffeb7f41ba535453bcbcff0c452420dfd51 -Author: Carl Worth -Date: Sat Oct 26 07:59:31 2002 +0000 - - Moved current point state to XrGState and dropped relative operators from XrPath. This is all in preparation for XrShowText, (which needs access to the current point) - - ChangeLog | 57 +++++++++++++- - Xr.h | 8 ++- - src/Xr.h | 8 ++- - src/xr.c | 190 ++++++++++++++++++++++++++++------------------ - src/xrgstate.c | 221 ++++++++++++++++++++++++++++++++++++++++------------- - src/xrint.h | 87 ++++++++++++++------- - src/xrpath.c | 121 ++++++++++++++++++------------ - src/xrpen.c | 12 ++-- - src/xrstate.c | 4 +- - src/xrstroker.c | 79 ++++++++++--------- - src/xrtransform.c | 22 +++--- - xr.c | 190 ++++++++++++++++++++++++++++------------------ - xrgstate.c | 221 ++++++++++++++++++++++++++++++++++++++++------------- - xrint.h | 87 ++++++++++++++------- - xrpath.c | 121 ++++++++++++++++++------------ - xrpen.c | 12 ++-- - xrstate.c | 4 +- - xrstroker.c | 79 ++++++++++--------- - xrtransform.c | 22 +++--- - 19 files changed, 1016 insertions(+), 529 deletions(-) - -commit 0b6fd5b4d11a6557b762696bbfb3ea7ec5233ed3 -Author: Carl Worth -Date: Thu Oct 24 11:27:29 2002 +0000 - - Added XrSetFillRule - - ChangeLog | 4 ++++ - Xr.h | 5 +++++ - src/Xr.h | 5 +++++ - src/xr.c | 6 ++++++ - src/xrfiller.c | 2 +- - src/xrgstate.c | 8 +++++++- - src/xrint.h | 10 ++++++---- - src/xrtraps.c | 6 +++--- - xr.c | 6 ++++++ - xrfiller.c | 2 +- - xrgstate.c | 8 +++++++- - xrint.h | 10 ++++++---- - xrtraps.c | 6 +++--- - 13 files changed, 60 insertions(+), 18 deletions(-) - -commit 8379c09a5b7111235da02e6cd74bcbe06e120bcd -Author: Carl Worth -Date: Wed Oct 23 18:30:53 2002 +0000 - - Fix for paths with multiple polygons disjoint in Y - - ChangeLog | 5 +++++ - src/xrtraps.c | 5 ++++- - xrtraps.c | 5 ++++- - 3 files changed, 13 insertions(+), 2 deletions(-) - -commit f07852454c2f34b9582d9a74ea83d74dcdb40dcc -Author: Carl Worth -Date: Wed Oct 23 11:58:38 2002 +0000 - - Added XrConcatMatrix, XrGetStatus. Properly clip color, alpha, and tolerance values from the user. Renamed _XrTransformPointWithoutTranslate to _XrTransformDistance. Added new XrIntStatus type for error codes that are not exported. - - Xr.h | 16 +++++++++++++ - src/Xr.h | 16 +++++++++++++ - src/xr.c | 37 +++++++++++++++++++++++++++++++ - src/xrfiller.c | 2 +- - src/xrgstate.c | 22 +++++++++++++++--- - src/xrint.h | 26 +++++++++++++-------- - src/xrpen.c | 2 +- - src/xrspline.c | 4 +- - src/xrstroker.c | 16 ++++++------ - src/xrtransform.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++---- - xr.c | 37 +++++++++++++++++++++++++++++++ - xrfiller.c | 2 +- - xrgstate.c | 22 +++++++++++++++--- - xrint.h | 26 +++++++++++++-------- - xrpen.c | 2 +- - xrspline.c | 4 +- - xrstroker.c | 16 ++++++------ - xrtransform.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++---- - 18 files changed, 312 insertions(+), 62 deletions(-) - -commit 88237e451e9719a211c3f2292f7679d4ac25654a -Author: Carl Worth -Date: Wed Oct 16 12:57:00 2002 +0000 - - Various cleanups, (no functional changes). Changed arguments for XrRel* from x,y to dx,dy. Changed XrError to XrStatus. Added a prefix of '_' to all internal functions - - Xr.h | 10 +- - src/Xr.h | 10 +- - src/xr.c | 146 ++++++++++++++------------- - src/xrcolor.c | 8 +- - src/xrfiller.c | 54 +++++----- - src/xrgstate.c | 264 ++++++++++++++++++++++++------------------------ - src/xrint.h | 290 ++++++++++++++++++++++++++--------------------------- - src/xrmisc.c | 2 +- - src/xrpath.c | 76 +++++++------- - src/xrpen.c | 114 +++++++++++----------- - src/xrpolygon.c | 52 +++++----- - src/xrspline.c | 88 ++++++++-------- - src/xrstate.c | 40 ++++---- - src/xrstroker.c | 224 ++++++++++++++++++++-------------------- - src/xrsurface.c | 12 +- - src/xrtransform.c | 66 ++++++------ - src/xrtraps.c | 98 +++++++++--------- - xr.c | 146 ++++++++++++++------------- - xrcolor.c | 8 +- - xrfiller.c | 54 +++++----- - xrgstate.c | 264 ++++++++++++++++++++++++------------------------ - xrint.h | 290 ++++++++++++++++++++++++++--------------------------- - xrmisc.c | 2 +- - xrpath.c | 76 +++++++------- - xrpen.c | 114 +++++++++++----------- - xrpolygon.c | 52 +++++----- - xrspline.c | 88 ++++++++-------- - xrstate.c | 40 ++++---- - xrstroker.c | 224 ++++++++++++++++++++-------------------- - xrsurface.c | 12 +- - xrtransform.c | 66 ++++++------ - xrtraps.c | 98 +++++++++--------- - 32 files changed, 1544 insertions(+), 1544 deletions(-) - -commit fe0606c7635ec666c3ea0695d30adefe3f47caad -Author: Carl Worth -Date: Tue Oct 1 04:37:42 2002 +0000 - - Standardized bracing-style and indentation - - src/xrpath.c | 8 +++----- - src/xrpen.c | 30 +++++++++++++++--------------- - src/xrstroker.c | 19 ++++++------------- - xrpath.c | 8 +++----- - xrpen.c | 30 +++++++++++++++--------------- - xrstroker.c | 19 ++++++------------- - 6 files changed, 48 insertions(+), 66 deletions(-) - -commit cf44ac0f7a2a91b11cf614bdf916f2d46234826c -Author: Carl Worth -Date: Tue Oct 1 04:28:20 2002 +0000 - - Fixed pen when it has more than 2 duplicate vertices. Imposed minimum value on tolerance to avoid infinite recursion. - - src/xrgstate.c | 2 ++ - src/xrint.h | 1 + - src/xrpen.c | 2 ++ - xrgstate.c | 2 ++ - xrint.h | 1 + - xrpen.c | 2 ++ - 6 files changed, 10 insertions(+), 0 deletions(-) - -commit c5e37af245f02d7c2a40dd2cf457cfac25f253b5 -Author: Carl Worth -Date: Fri Sep 20 09:43:42 2002 +0000 - - Fixed rounding bug in _ComputeX. Use if statement instead of while loop to increment intersection Y value - - src/xrtraps.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++---------- - xrtraps.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++---------- - 2 files changed, 112 insertions(+), 26 deletions(-) - -commit e9255b4688fe516ade5a83a41c87036e686e3d1c -Author: Carl Worth -Date: Tue Sep 17 14:44:52 2002 +0000 - - Fixed intersection test for parallel lines - - src/xrtraps.c | 32 ++++++++++++++++++-------------- - xrtraps.c | 32 ++++++++++++++++++-------------- - 2 files changed, 36 insertions(+), 28 deletions(-) - -commit a2265c8e1bb35c649f2606f82caefdbf8cd86272 -Author: Carl Worth -Date: Tue Sep 17 14:21:36 2002 +0000 - - Added comments describing polygon tessellation algorithm - - src/xrtraps.c | 25 +++++++++++++++++++++++++ - xrtraps.c | 25 +++++++++++++++++++++++++ - 2 files changed, 50 insertions(+), 0 deletions(-) - -commit d334c8bf8f6814976ba12a31643917d0ede86088 -Author: Carl Worth -Date: Tue Sep 17 13:38:55 2002 +0000 - - Cleaned up polygon tessellation code. Fixes all known problems. - - src/xrint.h | 3 - - src/xrtraps.c | 119 ++++++++++++++++++++++++++++++++------------------------ - xrint.h | 3 - - xrtraps.c | 119 ++++++++++++++++++++++++++++++++------------------------ - 4 files changed, 136 insertions(+), 108 deletions(-) - -commit 546b33d3627639b5ef38615ab2797f36e5d18939 -Author: Carl Worth -Date: Fri Sep 13 19:01:01 2002 +0000 - - Fixed some broken polygons by adding another sort to polygon tessellation code. - - src/xrtraps.c | 92 ++++++++++++++++++++++++++++++++------------------------- - xrtraps.c | 92 ++++++++++++++++++++++++++++++++------------------------- - 2 files changed, 104 insertions(+), 80 deletions(-) - -commit b2d0004956a17c0cfa6ee2fd6a5a4dbacc6846b9 -Author: Carl Worth -Date: Fri Sep 13 13:27:51 2002 +0000 - - Fixed _XrPenVerticesNeeded to not return negative numbers under scaling - - src/xrpen.c | 19 ++++++++++--------- - xrpen.c | 19 ++++++++++--------- - 2 files changed, 20 insertions(+), 18 deletions(-) - -commit 1fa0a496bb9689a5ebeacabd9cc3d05d48a1f4c3 -Author: Carl Worth -Date: Fri Sep 13 12:55:37 2002 +0000 - - Removed state from XrFiller that was redundant with state in XrPolygon. Fixed state update in XrStroker so that paths with multiple subpaths work. Simplified error-prone sorting in XrPenAddPoints. Renamed XrPenVertexTag to XrPenVertexFlag, (to allow for a single vertex that is the starting point for both the forward and reverse half-path). - - Xr.h | 2 - - src/Xr.h | 2 - - src/xrfiller.c | 17 +-------- - src/xrint.h | 26 ++++++-------- - src/xrpen.c | 104 +++++++++++++++++++++++++----------------------------- - src/xrstroker.c | 26 ++++++------- - src/xrtraps.c | 12 ++++--- - xrfiller.c | 17 +-------- - xrint.h | 26 ++++++-------- - xrpen.c | 104 +++++++++++++++++++++++++----------------------------- - xrstroker.c | 26 ++++++------- - xrtraps.c | 12 ++++--- - 12 files changed, 158 insertions(+), 216 deletions(-) - -commit 2ba3786b272b89da4f7fd264db55dc0a4744aad9 -Author: Carl Worth -Date: Tue Sep 10 09:51:14 2002 +0000 - - Fixed rendering of degenerate splines. Changed XrStrokeFace to define everything in terms of the direction of the path - - src/xrfiller.c | 5 +++- - src/xrint.h | 5 ++- - src/xrspline.c | 16 +++++--------- - src/xrstroker.c | 58 +++++++++++++++++++------------------------------------ - xrfiller.c | 5 +++- - xrint.h | 5 ++- - xrspline.c | 16 +++++--------- - xrstroker.c | 58 +++++++++++++++++++------------------------------------ - 8 files changed, 66 insertions(+), 102 deletions(-) - -commit 5f1938f26ff64d9036a5f78cdc47641427924a1d -Author: Carl Worth -Date: Tue Sep 10 08:01:00 2002 +0000 - - Fixed spline error calculation. New effort to compute spline initial/final slopes even for degenerate splines, (degenerate splines are still broken somewhere though). - - Imakefile | 2 + - src/xrgstate.c | 25 ++++++++--- - src/xrint.h | 20 +++++++--- - src/xrmisc.c | 34 ++++++++++++++++ - src/xrpath.c | 2 - - src/xrpen.c | 22 +++------- - src/xrpolygon.c | 1 + - src/xrspline.c | 118 +++++++++++++++++++++++++++++++++++++++++++----------- - src/xrtraps.c | 1 + - xrgstate.c | 25 ++++++++--- - xrint.h | 20 +++++++--- - xrmisc.c | 34 ++++++++++++++++ - xrpath.c | 2 - - xrpen.c | 22 +++------- - xrpolygon.c | 1 + - xrspline.c | 118 +++++++++++++++++++++++++++++++++++++++++++----------- - xrtraps.c | 1 + - 17 files changed, 340 insertions(+), 108 deletions(-) - -commit 44ca388c90aea7ed1b04784ddf3e53b339e0eb32 -Author: Carl Worth -Date: Thu Sep 5 13:12:23 2002 +0000 - - Fix polygon stroking so last final face is rendered exactly. Fix bug in which XrPolygonAddPt with horizontal edge would then drop the next edge. - - src/xrint.h | 2 +- - src/xrpen.c | 49 +++++++++++++++++++++++++++++-------------------- - src/xrpolygon.c | 3 ++- - src/xrstroker.c | 6 +----- - xrint.h | 2 +- - xrpen.c | 49 +++++++++++++++++++++++++++++-------------------- - xrpolygon.c | 3 ++- - xrstroker.c | 6 +----- - 8 files changed, 66 insertions(+), 54 deletions(-) - -commit bc362fc2e4bcf2324eda74c5d6290f4da6645e20 -Author: Carl Worth -Date: Thu Sep 5 10:06:44 2002 +0000 - - Corrected XrPenVerticesNeeded for handling transformed pens - - src/xrint.h | 3 +++ - src/xrpen.c | 26 ++++++++++++++++---------- - src/xrtransform.c | 32 ++++++++++++++++++++++++++++++++ - xrint.h | 3 +++ - xrpen.c | 26 ++++++++++++++++---------- - xrtransform.c | 32 ++++++++++++++++++++++++++++++++ - 6 files changed, 102 insertions(+), 20 deletions(-) - -commit 34ab06281fe53dde2d9b12780221b91dbafe940a -Author: Carl Worth -Date: Wed Sep 4 16:11:35 2002 +0000 - - Fixed brain-damaged XrPenVertexCompareByTheta. Correctly handle degenerate miter joins - - src/xrpen.c | 9 ++++++++- - src/xrstroker.c | 10 ++++++++++ - xrpen.c | 9 ++++++++- - xrstroker.c | 10 ++++++++++ - 4 files changed, 36 insertions(+), 2 deletions(-) - -commit 13216da122ba167d8a2c0a5bca37c844ccea2026 -Author: Carl Worth -Date: Wed Sep 4 07:28:56 2002 +0000 - - Fixed pen to transform user-space radius to device space, (vertices_needed computation still broken). Pen now behaves well when an extra point is coincident with an original vertex point. - - Xr.h | 4 ---- - src/Xr.h | 4 ---- - src/xrgstate.c | 5 ++++- - src/xrint.h | 2 +- - src/xrpen.c | 36 +++++++++++++++++++++++++++--------- - src/xrstroker.c | 47 ++++++++++++++++++++++++++++++----------------- - xrgstate.c | 5 ++++- - xrint.h | 2 +- - xrpen.c | 36 +++++++++++++++++++++++++++--------- - xrstroker.c | 47 ++++++++++++++++++++++++++++++----------------- - 10 files changed, 124 insertions(+), 64 deletions(-) - -commit cf6f2e67d9ff908054779480699440ea2736fe68 -Author: Carl Worth -Date: Tue Sep 3 08:42:25 2002 +0000 - - Added initial spline support. Added XrSetTolerance - - Xr.h | 5 +- - src/Xr.h | 5 +- - src/xr.c | 11 ++- - src/xrfiller.c | 29 +++++- - src/xrgstate.c | 10 ++ - src/xrint.h | 66 ++++++++++++--- - src/xrpen.c | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- - src/xrpolygon.c | 58 ++++++++++++ - src/xrspline.c | 164 +++++++++++++++++++++++++++++++++- - src/xrstroker.c | 136 +++++++++++++++++++++-------- - src/xrtraps.c | 6 +- - xr.c | 11 ++- - xrfiller.c | 29 +++++- - xrgstate.c | 10 ++ - xrint.h | 66 ++++++++++++--- - xrpen.c | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- - xrpolygon.c | 58 ++++++++++++ - xrspline.c | 164 +++++++++++++++++++++++++++++++++- - xrstroker.c | 136 +++++++++++++++++++++-------- - xrtraps.c | 6 +- - 20 files changed, 1354 insertions(+), 144 deletions(-) - -commit 25011eade4e33030bd86392e44bc02c945c5c0c3 -Author: Keith Packard -Date: Sun Aug 18 22:55:58 2002 +0000 - - Add dashed line support. Needs work to simplify some case analysis. - - src/xrgstate.c | 10 ++- - src/xrint.h | 8 ++ - src/xrstroker.c | 225 +++++++++++++++++++++++++++++++++++++++++++++++++------ - xrgstate.c | 10 ++- - xrint.h | 8 ++ - xrstroker.c | 225 +++++++++++++++++++++++++++++++++++++++++++++++++------ - 6 files changed, 436 insertions(+), 50 deletions(-) - -commit f20a4a96c77a251e18dc65f1ab9c24a10007b466 -Author: Carl Worth -Date: Thu Aug 15 17:33:00 2002 +0000 - - Fixed XrPen stubs - - Imakefile | 2 ++ - src/xrpen.c | 5 ++++- - xrpen.c | 5 ++++- - 3 files changed, 10 insertions(+), 2 deletions(-) - -commit 2d8f2f4946b789b5d14731e8eed77dc63dee035c -Author: Carl Worth -Date: Thu Aug 15 17:30:03 2002 +0000 - - Added xrpen/xrspline - - src/xrpen.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/xrspline.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ - xrpen.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - xrspline.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 208 insertions(+), 0 deletions(-) - -commit c1c7ee62bcf7e412fb74552ce171fbe44f5b4e7b -Author: Carl Worth -Date: Thu Aug 15 17:29:26 2002 +0000 - - Cleaned up XrPathInterpret. Prepare for splines - - Imakefile | 4 ++ - src/xrfiller.c | 94 +++++++++++++++++++++++++++++++++++++++ - src/xrgstate.c | 51 +++++++++++++--------- - src/xrint.h | 113 ++++++++++++++++++++++++++++++++++++++++++----- - src/xrpath.c | 126 +++++++++++++++++++++++++---------------------------- - src/xrpolygon.c | 54 ++++++++++------------- - src/xrstroker.c | 46 +++++++++++++++++++- - src/xrtransform.c | 8 --- - xrfiller.c | 94 +++++++++++++++++++++++++++++++++++++++ - xrgstate.c | 51 +++++++++++++--------- - xrint.h | 113 ++++++++++++++++++++++++++++++++++++++++++----- - xrpath.c | 126 +++++++++++++++++++++++++---------------------------- - xrpolygon.c | 54 ++++++++++------------- - xrstroker.c | 46 +++++++++++++++++++- - xrtransform.c | 8 --- - 15 files changed, 706 insertions(+), 282 deletions(-) - -commit 20f631ce22d1189410d21db077e3b38a70e06bf7 -Author: Keith Packard -Date: Thu Aug 15 17:19:28 2002 +0000 - - Add dashes, collapse stroke_style/fill_style into gstate - - Xr.h | 3 ++ - src/Xr.h | 3 ++ - src/xr.c | 9 ++++++++ - src/xrgstate.c | 62 +++++++++++++++++++++++++++++++++++++++++++++--------- - src/xrint.h | 23 ++++++++++--------- - src/xrstroker.c | 19 ++++++++-------- - xr.c | 9 ++++++++ - xrgstate.c | 62 +++++++++++++++++++++++++++++++++++++++++++++--------- - xrint.h | 23 ++++++++++--------- - xrstroker.c | 19 ++++++++-------- - 10 files changed, 168 insertions(+), 64 deletions(-) - -commit ba6c4971300181f64084437ba190e90c6c21cc5e -Author: Keith Packard -Date: Thu Aug 15 16:48:16 2002 +0000 - - Fix combined transforms, fix caps/joins under transform - - src/xrgstate.c | 2 +- - src/xrpath.c | 2 + - src/xrstroker.c | 75 +++++++++++++++++++++++++++++++++++++++++++---------- - src/xrtransform.c | 12 +++++--- - xrgstate.c | 2 +- - xrpath.c | 2 + - xrstroker.c | 75 +++++++++++++++++++++++++++++++++++++++++++---------- - xrtransform.c | 12 +++++--- - 8 files changed, 144 insertions(+), 38 deletions(-) - -commit 91f09687e5bebd8436e2e1c34ec153b976a3cc30 -Author: Carl Worth -Date: Thu Aug 15 05:22:59 2002 +0000 - - Added error handling (Xr shutdown) for out-of-memory handling. Started adding spline functions. - - Xr.h | 12 +++++ - src/Xr.h | 12 +++++ - src/xr.c | 93 +++++++++++++++++++++++++++++++++++++---- - src/xrgstate.c | 116 +++++++++++++++++++++++++++++++++++---------------- - src/xrint.h | 59 +++++++++++++------------- - src/xrpath.c | 124 +++++++++++++++++++++++++++++++++---------------------- - src/xrpolygon.c | 31 +++++++++----- - src/xrstate.c | 22 ++++++++-- - src/xrstroker.c | 92 +++++++++++++++-------------------------- - src/xrtraps.c | 94 ++++++++++++++++++++++------------------- - xr.c | 93 +++++++++++++++++++++++++++++++++++++---- - xrgstate.c | 116 +++++++++++++++++++++++++++++++++++---------------- - xrint.h | 59 +++++++++++++------------- - xrpath.c | 124 +++++++++++++++++++++++++++++++++---------------------- - xrpolygon.c | 31 +++++++++----- - xrstate.c | 22 ++++++++-- - xrstroker.c | 92 +++++++++++++++-------------------------- - xrtraps.c | 94 ++++++++++++++++++++++------------------- - 18 files changed, 804 insertions(+), 482 deletions(-) - -commit ba3bce9d7e3ad45db5a2ce115404bd332d868ac7 -Author: Keith Packard -Date: Thu Aug 15 03:50:28 2002 +0000 - - Note that the only rectangles could be quickly converted to traps. Add miter joins - - src/xrint.h | 6 +--- - src/xrstroker.c | 78 ++++++++++++++++++++++++++++++++++++++++++------------ - src/xrtraps.c | 16 +---------- - xrint.h | 6 +--- - xrstroker.c | 78 ++++++++++++++++++++++++++++++++++++++++++------------ - xrtraps.c | 16 +---------- - 6 files changed, 126 insertions(+), 74 deletions(-) - -commit e55de618e7386364032fc4985a67942cd7a825eb -Author: Keith Packard -Date: Wed Aug 14 19:19:33 2002 +0000 - - Add bevel joins - - src/xrgstate.c | 4 +- - src/xrint.h | 3 ++ - src/xrpath.c | 5 ---- - src/xrpolygon.c | 6 +++++ - src/xrstroker.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++-------- - xrgstate.c | 4 +- - xrint.h | 3 ++ - xrpath.c | 5 ---- - xrpolygon.c | 6 +++++ - xrstroker.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++-------- - 10 files changed, 130 insertions(+), 34 deletions(-) - -commit 6b1903c40e74d13a9387ff1afa5fa5d19c1b8a29 -Author: Keith Packard -Date: Wed Aug 14 18:32:42 2002 +0000 - - Prepare for joins and caps - - Imakefile | 4 +++ - src/xrint.h | 18 ++++++++++++++ - src/xrpath.c | 21 +++++++++++++++- - src/xrstroker.c | 67 ++++++++++++++++++++++++++++++++++++++++++++---------- - xrint.h | 18 ++++++++++++++ - xrpath.c | 21 +++++++++++++++- - xrstroker.c | 67 ++++++++++++++++++++++++++++++++++++++++++++---------- - 7 files changed, 186 insertions(+), 30 deletions(-) - -commit 71b804a30163404eb30df6d81a9ee3477e0d5bcb -Author: Carl Worth -Date: Wed Aug 14 17:32:22 2002 +0000 - - Fixed XrFill to implicitly call ClosePath. Broke off XrFillStyle/XrStrokeStyle - - src/xr.c | 1 + - src/xrgstate.c | 37 +++++++++++++++++++++++++------------ - src/xrint.h | 26 ++++++++++++++------------ - src/xrpath.c | 27 --------------------------- - src/xrstroker.c | 5 +++-- - xr.c | 1 + - xrgstate.c | 37 +++++++++++++++++++++++++------------ - xrint.h | 26 ++++++++++++++------------ - xrpath.c | 27 --------------------------- - xrstroker.c | 5 +++-- - 10 files changed, 86 insertions(+), 106 deletions(-) - -commit 466fc8700f22e6635997a5b427732d51b9d6b5cd -Author: Carl Worth -Date: Wed Aug 14 00:44:28 2002 +0000 - - Handle degenerate polygons (no edges) - - src/xrtraps.c | 5 ++++- - xrtraps.c | 5 ++++- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit 48bd9e5d30be831e71f12def2e521a7fa713e06a -Author: Carl Worth -Date: Wed Aug 14 00:39:43 2002 +0000 - - Total rewrite of path storage/interpretation in preparation for splines. - - Imakefile | 6 +- - Xr.h | 33 ++--- - src/Xr.h | 33 ++--- - src/xr.c | 41 +++--- - src/xrcolor.c | 33 ++--- - src/xrgstate.c | 289 ++++++--------------------------------- - src/xrint.h | 206 ++++++++++++++-------------- - src/xrpath.c | 393 ++++++++++++++++++++++++++++++++++++++++++----------- - src/xrpolygon.c | 104 ++++++++++++++ - src/xrstate.c | 33 ++--- - src/xrstroker.c | 141 +++++++++++++++++++ - src/xrsurface.c | 33 ++--- - src/xrtransform.c | 33 ++--- - src/xrtraps.c | 210 +++++++++-------------------- - xr.c | 41 +++--- - xrcolor.c | 33 ++--- - xrgstate.c | 289 ++++++--------------------------------- - xrint.h | 206 ++++++++++++++-------------- - xrpath.c | 393 ++++++++++++++++++++++++++++++++++++++++++----------- - xrpolygon.c | 104 ++++++++++++++ - xrstate.c | 33 ++--- - xrstroker.c | 141 +++++++++++++++++++ - xrsubpath.c | 150 -------------------- - xrsurface.c | 33 ++--- - xrtransform.c | 33 ++--- - xrtraps.c | 210 +++++++++-------------------- - 26 files changed, 1718 insertions(+), 1536 deletions(-) - -commit 9824dc894440bc2566206bb5f04d403d68bf24c0 -Author: Carl Worth -Date: Mon Aug 12 11:43:56 2002 +0000 - - Fixed XrPathClose to deal with empty path - - src/xrpath.c | 6 ++++-- - xrpath.c | 6 ++++-- - 2 files changed, 8 insertions(+), 4 deletions(-) - -commit c2824c4ded348a6cfa56ab55db5857d3021f54ca -Author: Carl Worth -Date: Mon Aug 12 09:38:05 2002 +0000 - - Stabilized the sort used to generate traps. Discard degenerate traps - - Imakefile | 13 ++++--------- - src/xrgstate.c | 2 +- - src/xrtraps.c | 10 +++++++++- - xrgstate.c | 2 +- - xrtraps.c | 10 +++++++++- - 5 files changed, 24 insertions(+), 13 deletions(-) - -commit c44bf18e78f502fb30fa62db171216289d5ee5d3 -Author: Carl Worth -Date: Wed Aug 7 19:49:36 2002 +0000 - - Fixed missing semicolon. - - src/xrsurface.c | 2 +- - xrsurface.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 9ee45ab8164593f1e368b99c0d63bd4b21a4daa1 -Author: Carl Worth -Date: Wed Aug 7 19:48:49 2002 +0000 - - Fixed missing xrtraps.c - - src/xrtraps.c | 494 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - xrtraps.c | 494 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 988 insertions(+), 0 deletions(-) - -commit f7f194c47dbf20a9ba56bb928be78530c98bc16c -Author: Carl Worth -Date: Tue Jul 23 07:22:56 2002 +0000 - - Added ChangeLog - - ChangeLog | 28 ++++++++++++++++++++++++++++ - 1 files changed, 28 insertions(+), 0 deletions(-) - -commit f8fef556d7b5eb391ce52d4307252e4a1a30b024 -Author: Carl Worth -Date: Tue Jul 23 07:22:23 2002 +0000 - - See ChangeLog for 2002-07-16 - - Imakefile | 10 ++- - Xr.h | 79 +++++++++++++++-- - src/Xr.h | 79 +++++++++++++++-- - src/xr.c | 26 +++++- - src/xrcolor.c | 16 ++-- - src/xrgstate.c | 264 ++++++++++++++++++++++++++++++++++++------------------- - src/xrint.h | 110 ++++++++++++++++++------ - src/xrpath.c | 6 +- - src/xrsurface.c | 134 ++++++++++++++++++++++++++++ - xr.c | 26 +++++- - xrcolor.c | 16 ++-- - xrgstate.c | 264 ++++++++++++++++++++++++++++++++++++------------------- - xrint.h | 110 ++++++++++++++++++------ - xrpath.c | 6 +- - xrpicture.c | 134 ---------------------------- - xrsubpath.c | 5 +- - xrsurface.c | 134 ++++++++++++++++++++++++++++ - 17 files changed, 1015 insertions(+), 404 deletions(-) - -commit 093b754cb1014ed95baaa1bde579d033d7856e46 -Author: Carl Worth -Date: Fri Jun 14 15:13:44 2002 +0000 - - Added XrSetVisual, XrSetFormat. Fixed XrSetAlpha. Fixed transformed line widths, (added inverse CTM). - - Xr.h | 16 ++++++++-- - src/Xr.h | 16 ++++++++-- - src/xr.c | 27 +++++++++++------ - src/xrcolor.c | 1 + - src/xrgstate.c | 82 +++++++++++++++++++++++++++++++++++++--------------- - src/xrint.h | 38 ++++++++++++++++++------ - src/xrtransform.c | 77 +++++++++++++++++++++++++++++++++++--------------- - xr.c | 27 +++++++++++------ - xrcolor.c | 1 + - xrgstate.c | 82 +++++++++++++++++++++++++++++++++++++--------------- - xrint.h | 38 ++++++++++++++++++------ - xrpicture.c | 60 +++++++++++++++++++++++++++++--------- - xrsubpath.c | 6 ++- - xrtransform.c | 77 +++++++++++++++++++++++++++++++++++--------------- - 14 files changed, 394 insertions(+), 154 deletions(-) diff -Nru libgdiplus-4.0-2.10.9/cairo/ChangeLog.pre-1.2 libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.pre-1.2 --- libgdiplus-4.0-2.10.9/cairo/ChangeLog.pre-1.2 2012-01-31 17:28:35.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.pre-1.2 1970-01-01 00:00:00.000000000 +0000 @@ -1,11746 +0,0 @@ -commit 61404bd5022b913f58ecda8dc9e8922b4fc6f80b -Author: Carl Worth -Date: Tue Jun 27 15:44:52 2006 +0200 - - Update version to 1.2.0 and add notes to NEWS file. - - Also update libtool version information to 11:0:9. - - NEWS | 40 ++++++++++++++++++++++++++++++++++++++++ - ROADMAP | 8 ++++---- - configure.in | 8 ++++---- - 3 files changed, 48 insertions(+), 8 deletions(-) - -commit cea70741e851993fe181a76872fb97549d0769d5 -Author: Carl Worth -Date: Sat Jul 1 03:24:21 2006 +0200 - - Add src/cairo-features.h and test/*.ps to CLEANFILES - - src/Makefile.am | 2 +- - test/Makefile.am | 1 + - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit 55b5fedbc1df32e4dc9d1fccf40e12e14f7b6cd0 -Author: Carl Worth -Date: Sat Jul 1 02:54:22 2006 +0200 - - Add many references images (and a font) missing from EXTRA_DIST - - test/Makefile.am | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 74 insertions(+), 3 deletions(-) - -commit 3d4a8fd741df328bd969454791163bc945d3ad8b -Author: Carl Worth -Date: Sat Jul 1 02:53:26 2006 +0200 - - Don't remove INSTALL during maintainer-clean - - Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit cfddf93afb692819548adb85c5b75f60be7e7349 -Author: Behdad Esfahbod -Date: Sat Jul 1 01:55:12 2006 +0200 - - Make CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD not crash on surface patterns, - - but return error. - - src/cairo-surface.c | 30 ++++++++++++++++++++++++++++++ - src/cairo.h | 5 +++-- - 2 files changed, 33 insertions(+), 2 deletions(-) - -commit 01b1f3572c3c15a08dd6f32788106c0e42fd2436 -Author: Behdad Esfahbod -Date: Fri Jun 30 22:01:24 2006 +0200 - - Detect and report crashes in tests. - - test/cairo-test.c | 59 +++++++++++++++++++++++++++++++++++++++++----------- - test/cairo-test.h | 3 +- - 2 files changed, 48 insertions(+), 14 deletions(-) - -commit 19c4700101bfce7d73a50017021b4ec198ddd783 -Author: Carl Worth -Date: Sat Jul 1 01:05:30 2006 +0200 - - Even _more_ valgrind suppresions for Xrm (XrmGetFileDatabase this time) - - test/.valgrind-suppressions | 190 +++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 176 insertions(+), 14 deletions(-) - -commit 84b06eed4e53eb34b0ec378216fa246286998acd -Author: Carl Worth -Date: Sat Jul 1 00:47:59 2006 +0200 - - SVG: Fix leak in _cairo_svg_surface_mask - - src/cairo-svg-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 35ec5747ca5eb8a63ec334d61eb13357b4aa3802 -Author: Carl Worth -Date: Sat Jul 1 00:38:06 2006 +0200 - - Add yet another XrmGetStringDatabase valgrind suppression. - - test/.valgrind-suppressions | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) - -commit 80cb0d5ba1e3622b4b71639cf03e7dc277cbb457 -Author: Carl Worth -Date: Sat Jul 1 00:37:44 2006 +0200 - - Fix some leaks in the test suite itself. - - test/cairo-test.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 14e7883fae58e51c2deab5b97c9a405c5dbb3aeb -Author: Carl Worth -Date: Sat Jul 1 00:00:43 2006 +0200 - - Fix a memory leak by removing accidentally duplicated code. - - test/cairo-test.c | 5 ----- - 1 files changed, 0 insertions(+), 5 deletions(-) - -commit 8919b6b3243db5db59a73f804854364a00a8586d -Author: Carl Worth -Date: Fri Jun 30 23:24:23 2006 +0200 - - Add valgrind suppressions for pthread initialization still reachable/possibly lost memory - - test/.valgrind-suppressions | 39 +++++++++++++++++++++++++++++++++++++++ - 1 files changed, 39 insertions(+), 0 deletions(-) - -commit 98cc1651cf19699a0c90e8e2e7f2c2da2ae83760 -Author: Carl Worth -Date: Fri Jun 30 23:21:06 2006 +0200 - - Add valgrind suppressions for still-reachable memory from XGetDefault and XrmGetStringDatabase - - test/.valgrind-suppressions | 142 +++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 142 insertions(+), 0 deletions(-) - -commit f6b10a6aabb121e1a4ca092ca175aad39b3c828d -Author: Carl Worth -Date: Fri Jun 30 23:06:56 2006 +0200 - - Add another suppression due to mysterious occurences in libc - - test/.valgrind-suppressions | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit c6c943f3cfefa535e6c2da6adcac15507a8f0952 -Author: Carl Worth -Date: Fri Jun 30 23:00:39 2006 +0200 - - ps: Fix to not walk off the end of the data array. - - This fixes a bug recently introduced with the special case for the ~> sequence. - - src/cairo-ps-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 0853ccd05314d618afd0d640a33f0a744842a0d2 -Author: Carl Worth -Date: Fri Jun 30 22:58:36 2006 +0200 - - Add new libz/libpng suppressions. - - It would appear we have to keep updating these for new library versions. - - test/.valgrind-suppressions | 27 +++++++++++++++++++++++++++ - 1 files changed, 27 insertions(+), 0 deletions(-) - -commit ee75e1e6853ada5c4218788148e2f5a09669a2b3 -Author: Carl Worth -Date: Fri Jun 30 17:07:42 2006 +0200 - - Add ps-specific reference image for test/degenerate-path - - test/degenerate-path-ps-argb32-ref.png | Bin 0 -> 197 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit e0db22c6bc40d4576d9c1131d3192f1df3b942ca -Author: Carl Worth -Date: Fri Jun 30 16:54:16 2006 +0200 - - ps: Fix degenerate-path test failure. - - This is as simple as simply not emitting any degenerate sub-paths when the cap - style is CAIRO_LINE_CAP_SQUARE or CAIRO_LINE_CAP_BUTT. - - src/cairo-ps-surface.c | 84 ++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 68 insertions(+), 16 deletions(-) - -commit 057c0abeea1ee80c7156be5a1c15594765d88fe0 -Author: Carl Worth -Date: Fri Jun 30 16:07:11 2006 +0200 - - ps: Fix transformation of source surfaces. - - This makes the following four tests pass, (which were previously - failing on the ps backend). - - move-to-show-surface - scale-source-surface-paint - source-surface-scale-paint - translate-show-surface - - src/cairo-ps-surface.c | 63 +++++++++++++++++++++++++++++------------------ - 1 files changed, 39 insertions(+), 24 deletions(-) - -commit 54ce585817d78ffeeb0ba6b03b868e63b9552cb8 -Author: Carl Worth -Date: Thu Jun 29 23:34:29 2006 +0200 - - Update PDF-specific reference image for scale-source-surface-paint - - test/scale-source-surface-paint-pdf-argb32-ref.png | Bin 152 -> 182 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit a6fc321d1793e97e4601429a98c36bed9af365a0 -Author: Carl Worth -Date: Thu Jun 29 23:28:48 2006 +0200 - - Add PDF-specific reference image for paint-source-alpha - - test/paint-source-alpha-pdf-argb32-ref.png | Bin 0 -> 475 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit aaef92f8307fedd864fca66054b06c8bfe7ae40d -Author: Carl Worth -Date: Thu Jun 29 23:27:05 2006 +0200 - - Add PDF-specific reference image for composite-integer-translate-over - - ...osite-integer-translate-over-pdf-argb32-ref.png | Bin 0 -> 12946 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 45ebf2d1f3c6cb4588c3bebf6acf1818eb723515 -Author: Behdad Esfahbod -Date: Fri Jun 30 01:45:47 2006 +0200 - - Fix an oops. - - src/cairo-xlib-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit e5d18d7696eb9a48369b89517738dbaa101106d7 -Author: Behdad Esfahbod -Date: Fri Jun 30 01:44:55 2006 +0200 - - Use $no_x in configure.in. - - configure.in | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 6c3deb0be1b9d6db0104af02fb193849a8329133 -Author: Behdad Esfahbod -Date: Fri Jun 30 01:33:14 2006 +0200 - - Minor doc syntax fixes. - - src/cairo-surface.c | 2 +- - src/cairo.h | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 8860263c6a18a0b196e2b462a538dfc166fbea04 -Author: Behdad Esfahbod -Date: Fri Jun 30 01:29:54 2006 +0200 - - Remove CAIRO_SVG_VERSION_LAST from public header file. - - src/cairo-svg-surface.c | 8 ++++++-- - src/cairo-svg.h | 13 ++++++++++--- - 2 files changed, 16 insertions(+), 5 deletions(-) - -commit 6672529541e01b0da53fff279cb1f8030c931ffb -Author: Behdad Esfahbod -Date: Fri Jun 30 00:58:01 2006 +0200 - - Hook some more symbols into docs. - - doc/public/cairo-sections.txt | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 66436d132772af627447a929ced3a8a18cc6915f -Author: Behdad Esfahbod -Date: Fri Jun 30 00:46:48 2006 +0200 - - Update lots of docs. - - doc/public/Makefile.am | 9 ++++- - doc/public/cairo-sections.txt | 90 +++++++++++++++++++++++------------------ - src/cairo-pdf-surface.c | 10 ++-- - src/cairo-ps-surface.c | 16 +++---- - src/cairo-svg-surface.c | 14 +++--- - src/cairo-win32-font.c | 19 ++++++++- - src/cairo-win32-surface.c | 3 + - src/cairo-xlib-surface.c | 72 ++++++++++++++++++++++++++++++++ - src/cairo.h | 18 ++++----- - 9 files changed, 177 insertions(+), 74 deletions(-) - -commit de939f52061ba9a1c739c193e3e4f549668855cc -Author: Behdad Esfahbod -Date: Thu Jun 29 18:54:02 2006 +0200 - - Require gtk-doc 1.6, and make it ignore cairo_public and cairo_private - - decorators. - - configure.in | 2 +- - doc/public/Makefile.am | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 647ca37ca3d4b1954f7400deeeaaf245b5c90e69 -Author: Behdad Esfahbod -Date: Thu Jun 29 18:47:35 2006 +0200 - - Mark enum additions as "Since 1.2" too. - - src/cairo.h | 14 ++++++++++---- - 1 files changed, 10 insertions(+), 4 deletions(-) - -commit 320ce67d630e4aac1f0007982aef27c831b04b66 -Author: Behdad Esfahbod -Date: Thu Jun 29 18:36:53 2006 +0200 - - Add "Since: 1.2" to docs for most new API functions. - - src/cairo-font.c | 2 ++ - src/cairo-image-surface.c | 6 ++++++ - src/cairo-pattern.c | 2 ++ - src/cairo-pdf-surface.c | 6 ++++++ - src/cairo-ps-surface.c | 14 +++++++++++++- - src/cairo-scaled-font.c | 12 ++++++++++++ - src/cairo-surface.c | 14 +++++++------- - src/cairo-svg-surface.c | 14 ++++++++++---- - src/cairo.c | 14 ++++++++++++++ - 9 files changed, 72 insertions(+), 12 deletions(-) - -commit bd92eb7f3c58fdcbe05f67b9a879798246c616bc -Author: Carl Worth -Date: Thu Jun 29 19:47:26 2006 +0200 - - Move device_transform of path to before floating->fixed conversion. - - This is an attempt to fix the following bug: - - http://bugzilla.gnome.org/show_bug.cgi?id=332266 - - With the recent rewrite of the device-offset code, which pushed things - from the gstate to the surface layer, the 16-bit limitations on coordinates - which previously applied to device space only, have lately been applying to - user space. This commit moves the device_transform back up above the conversion - from floating-point to fixed-point values so that once again the limitation - only applies to device space. - - src/cairo-clip.c | 10 ------- - src/cairo-gstate.c | 8 ++++-- - src/cairo-surface-fallback.c | 1 + - src/cairo-surface.c | 54 ++++++++++++++++++------------------------ - src/cairo-xlib-surface.c | 1 + - src/cairoint.h | 1 + - 6 files changed, 31 insertions(+), 44 deletions(-) - -commit 29caf8915f822778f0e59add7d364a03bcdb8327 -Author: Behdad Esfahbod -Date: Thu Jun 29 16:09:46 2006 +0200 - - Fix support for non-pkg-config cflags and libs (needed for supporting - freetype-config) - - configure.in | 20 ++++++++++++-------- - src/cairo-backend.pc.in | 4 ++-- - 2 files changed, 14 insertions(+), 10 deletions(-) - -commit 195b1142e7a1652e0f65cfd822bba7ea8b6ba505 -Author: Behdad Esfahbod -Date: Thu Jun 29 15:22:44 2006 +0200 - - Prefix "cairo_*_test_*" symbols with underscore. - - src/cairo-pdf-surface.c | 4 ++-- - src/cairo-pdf-test.h | 4 ++-- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-ps-test.h | 4 ++-- - src/cairo-scaled-font-test.h | 4 ++-- - src/cairo-scaled-font.c | 2 +- - src/cairo-svg-surface.c | 4 ++-- - src/cairo-svg-test.h | 4 ++-- - src/cairo-xlib-surface.c | 4 ++-- - src/cairo-xlib-test.h | 4 ++-- - test/fallback-resolution.c | 6 +++--- - test/glyph-cache-pressure.c | 2 +- - test/xlib-surface.c | 2 +- - 13 files changed, 24 insertions(+), 24 deletions(-) - -commit f26da6c464c60ab2ed87175ab0a9b81e3cf363fb -Author: Behdad Esfahbod -Date: Thu Jun 29 12:32:58 2006 +0200 - - Remove cairo_public from source files. - - src/cairo-atsui-font.c | 2 +- - src/cairo-svg-surface.c | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 8effd25c1b05607ff6501821f1d80745677d8e72 -Author: Carl Worth -Date: Thu Jun 29 06:25:24 2006 +0200 - - Update PDF and PS reference images for test/text-pattern. - - test/text-pattern-pdf-argb32-ref.png | Bin 0 -> 1632 bytes - test/text-pattern-ps-argb32-ref.png | Bin 0 -> 1681 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit a64b946ee0512d85d3c790c67aad8a882c5c3533 -Author: Carl Worth -Date: Thu Jun 29 06:24:44 2006 +0200 - - Mark test/leaky-dash as an expected failure. - - test/Makefile.am | 1 + - test/leaky-dash.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit 734e10709f5c62c0b64e51a03df8e109e7eebe0d -Author: Carl Worth -Date: Thu Jun 29 06:12:48 2006 +0200 - - Add several more stress tests to test/dash-zero-length - - test/dash-zero-length-ps-argb32-ref.png | Bin 214 -> 272 bytes - test/dash-zero-length-ref.png | Bin 235 -> 238 bytes - test/dash-zero-length-rgb24-ref.png | Bin 222 -> 218 bytes - test/dash-zero-length.c | 85 ++++++++++++++++++++----------- - 4 files changed, 56 insertions(+), 29 deletions(-) - -commit 8aa306caac99ebe074a6cde8b424b1780cafefee -Author: Carl Worth -Date: Thu Jun 29 05:13:37 2006 +0200 - - PS: Fix for dash-zero-length - - src/cairo-ps-surface.c | 79 +++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 75 insertions(+), 4 deletions(-) - -commit 7285499700a4f0f4bb95f003d0c730246bf3eabd -Author: Carl Worth -Date: Thu Jun 29 05:07:51 2006 +0200 - - Squelch some bogus compiler warnings about possibly uninitialized values. - - pixman/src/fbcompose.c | 9 +++++---- - src/cairo-font-subset.c | 4 ++-- - 2 files changed, 7 insertions(+), 6 deletions(-) - -commit 20e3a99bbaa2624ecad7b505158edc8dce706ea8 -Author: Keith Packard -Date: Thu Jun 29 04:10:35 2006 +0200 - - Skip TrueType font output for PS/PDF until it handles vertical layout. - - The TrueType font subsetting code fails to emit VHEA/VMTX headers for the - font, so WMode 1 doesn't work to switch to vertical metrics. Added a bug - about this, and changed the PS/PDF output code to just use Type3 in this - case until the bug is fixed. Updated the reference images to match the - output for PDF/PS backends for the vertical font check. - - BUGS | 7 +++++++ - src/cairo-font-subset.c | 3 +++ - src/cairo-ft-font.c | 16 +++++++++++++++- - src/cairo-ft-private.h | 3 +++ - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 1018 -> 956 bytes - test/ft-text-vertical-layout-pdf-rgb24-ref.png | Bin 1037 -> 0 bytes - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 351 -> 349 bytes - test/ft-text-vertical-layout-ps-rgb24-ref.png | Bin 1086 -> 0 bytes - 8 files changed, 28 insertions(+), 1 deletions(-) - -commit 2e2799d4f921b22030eb63585dcec2ed4503fd5b -Author: Carl Worth -Date: Thu Jun 29 02:41:46 2006 +0200 - - Ignore degenerate-path - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c90cc4e33f1549cde1d7a6a94599dbb3de84d387 -Author: Carl Worth -Date: Thu Jun 29 02:41:17 2006 +0200 - - Update reference images for ft-text-vertical-layout - - test/ft-text-vertical-layout-ref.png | Bin 1130 -> 1130 bytes - test/ft-text-vertical-layout-svg-rgb24-ref.png | Bin 1100 -> 1098 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 92021d169fea48eed9349e5821353f976df56be1 -Author: Behdad Esfahbod -Date: Wed Jun 28 04:14:07 2006 +0200 - - Make docs not build by "make all", but by "make doc", "make dist", and "make - install". - - Makefile.am | 4 ++++ - doc/Makefile.am | 4 +++- - doc/public/tmpl/cairo-types.sgml | 4 +--- - doc/public/tmpl/cairo-version.sgml | 7 +++++++ - gtk-doc.make | 8 ++++++-- - 5 files changed, 21 insertions(+), 6 deletions(-) - -commit 0d073c2e86ced3a94ef76e7e4c2a00f8fb76efb1 -Author: Behdad Esfahbod -Date: Wed Jun 28 03:25:08 2006 +0200 - - Use $RELEASE_OR_SNAPSHOT to determine upload directory. - Turn distcheck on release-check on again, as CAIRO_TEST_TARGET="" can be used - to disable all failures now. - - Makefile.am | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit b37562868d2254d2dbd93a8808d32f0a0d769195 -Author: Behdad Esfahbod -Date: Wed Jun 28 03:16:33 2006 +0200 - - Ignore *.bak - - doc/public/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 9fe0ea16d344d5b9bed1cd7f6046e378ce76ae1f -Author: Behdad Esfahbod -Date: Wed Jun 28 03:15:41 2006 +0200 - - Update list of ignored header files. - - doc/public/Makefile.am | 44 ++++++++++++++++++++++++++++---------------- - 1 files changed, 28 insertions(+), 16 deletions(-) - -commit ddb81d3cade326fecfe1ed05037542e958e734b5 -Author: Behdad Esfahbod -Date: Tue Jun 27 16:55:53 2006 +0200 - - Report Xlib Xrender status. - - configure.in | 29 +++++++++++++++-------------- - 1 files changed, 15 insertions(+), 14 deletions(-) - -commit 34f24d2aad90d4a737b513ac6858ed879316e132 -Author: Carl Worth -Date: Tue Jun 27 15:38:45 2006 +0200 - - ROADMAP: Note that degenerate path stuff has been pushed out now. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 988a28e259924e7ce50f4d3119bcef7a3b18c931 -Merge: 973c9ab... ce2b9e1... -Author: Carl Worth -Date: Tue Jun 27 15:37:58 2006 +0200 - - Merge branch 'degenerate-path' into cairo - -commit 973c9abd53df4e6d6583de045514e003827bc7b9 -Author: Jeff Muizelaar -Date: Tue Jun 27 15:33:47 2006 +0200 - - PS: Workaround to avoid splitting final ~> terminating sequence. - - src/cairo-ps-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 5d60ceb9b85a6b39865bc760ef7467c10f2ec7b6 -Author: Michael Emmel -Date: Mon Jun 26 22:27:14 2006 -0700 - - Added major updates fixes and enhancements by - Claudio Ciccani klan@directfb.org - Almost a full rewrite - - src/cairo-directfb-surface.c | 2175 +++++++++++++++++++++++++++++------------- - 1 files changed, 1523 insertions(+), 652 deletions(-) - -commit 289e8b8af30ae3f00e7649109a933a673f346b37 -Author: Behdad Esfahbod -Date: Mon Jun 26 12:26:15 2006 +0200 - - Remove config.cache in make distclean. - - Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 73a0e792b4115a1012c5f618650a6265377cc6e5 -Author: Behdad Esfahbod -Date: Mon Jun 26 12:21:18 2006 +0200 - - More configure foo fixes for .pc files. - - configure.in | 14 ++++++++------ - src/Makefile.am | 9 ++++++++- - src/cairo-backend.pc.in | 4 ++-- - 3 files changed, 18 insertions(+), 9 deletions(-) - -commit 5ba974ea0b7974e8c985d7414fcf6a8a5e415c12 -Author: Behdad Esfahbod -Date: Mon Jun 26 11:54:04 2006 +0200 - - Fix circular dependency in cairo.pc and cairo-xlib.pc. - - configure.in | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 53a478d233e7b8e02ecbc93bf102fb4dc29e0d57 -Author: Behdad Esfahbod -Date: Sun Jun 25 17:43:27 2006 +0200 - - Rewrite configure caching. - - configure.in | 285 ++++++++++++++++++++++++------------------------------ - src/cairo.pc.in | 2 +- - 2 files changed, 128 insertions(+), 159 deletions(-) - -commit ce2b9e1b5cc816e4a6a4345daab539cc58e2d043 -Author: Carl Worth -Date: Sun Jun 25 16:57:59 2006 +0200 - - Prefer TRUE and FALSE over 1 and 0 for assigning cairo_bool_t values - - src/cairo-path-stroke.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit 58a60ed9fdd53a4cf29d33624b866bf6ccd637ae -Author: Carl Worth -Date: Sun Jun 25 16:53:13 2006 +0200 - - Prefer sub-path over subpath in documentation. - - src/cairo.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit 773cb6475b68199e5ef0839cd22c9f3445d7d5d3 -Author: Carl Worth -Date: Sun Jun 25 16:51:25 2006 +0200 - - Prefer sub_path over subpath in identifiers. - - src/cairo-path-stroke.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 8f0dd658b1fff3f4e9225b8fb23884f0bbcdb822 -Author: Carl Worth -Date: Sun Jun 25 16:49:45 2006 +0200 - - Add documentation for how degenerate segments and sub-paths are treated. - - src/cairo.c | 26 ++++++++++++++++++++++++++ - 1 files changed, 26 insertions(+), 0 deletions(-) - -commit 15caa88c6416ce8e0c4c026e76f84ccaf7a3c840 -Author: Jeff Muizelaar -Date: Sun Jun 25 16:12:38 2006 +0200 - - Initial support for degenerate-path stroking - - This follows the PDF and SVG specifications which only draw degenerate paths when - round caps are in effect. - - With this commit, the degenerate-path test passes with the image, xlib, and pdf - backends, (but still fails with ps and svg backends). - - src/cairo-path-stroke.c | 54 +++++++++++++++++++++++++++++----------------- - 1 files changed, 34 insertions(+), 20 deletions(-) - -commit 20df4af12617ad6459dcb234dfd98954282710f5 -Author: Jeff Muizelaar -Date: Sun Jun 25 15:48:48 2006 +0200 - - Add new test case degenerate-path to show current 'bug' - - test/Makefile.am | 4 ++ - test/degenerate-path-ref.png | Bin 0 -> 193 bytes - test/degenerate-path-rgb24-ref.png | Bin 0 -> 174 bytes - test/degenerate-path.c | 68 ++++++++++++++++++++++++++++++++++++ - 4 files changed, 72 insertions(+), 0 deletions(-) - -commit e747bbd350e9630c18849dd7975036d1260264be -Author: Torsten Schoenfeld -Date: Sun Jun 25 15:07:19 2006 +0200 - - Fix build after recent pixman.h change. - - The recent pixman.h change to use configure-generated defines - accidentally broke the build. Pulling in config.h fixes it. - - pixman/src/pixman.h | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit e32138aa93ba37d760af87294fbb47046bfe6dec -Author: Carl Worth -Date: Sun Jun 25 14:42:27 2006 +0200 - - Prefer using configure-generated variable for finding stdint.h or similar. - - We were doing something more complicated originally, and that was because - pixman.h was an installed public header file at one time. But that hasn't - been the case for quite a long time. - - pixman/src/pixman.h | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit 14ffde038038deda66973856a5f3b9442c8d3c7d -Author: Carl Worth -Date: Sun Jun 25 12:16:36 2006 +0200 - - ROADMAP: Note that bug 6759 is now fixed. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d2ea21b4aef8ab5338718ddd6ccdff35609e9f6c -Author: Carl Worth -Date: Sun Jun 25 11:48:32 2006 +0200 - - ft-text-antialias-none: Update reference images and igore list. - - Add a new ps reference image due to slightly different rasterization. Also - update pdf and svg backends to ignore this test since those backends do not - support ANTIALIAS_NONE. - - Note in ROADMAP that bug 6759 is fixed now. - - test/cairo-test.c | 2 ++ - test/ft-text-antialias-none-ps-argb32-ref.png | Bin 0 -> 335 bytes - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit 7e0e503fba80767dc68556054e937123fdcea359 -Author: Carl Worth -Date: Sun Jun 25 11:32:36 2006 +0200 - - xlib: Fix failure path to do cache thawing cleanup. - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4bff3d559e1d931cd47701f11765b1a574a7eac4 -Author: Carl Worth -Date: Sun Jun 25 11:28:03 2006 +0200 - - ROADMAP: Note that cairo_xlib_surface_get_width/height exist now. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ddead8e0612162e121868ba561498b8565112f8b -Author: Robert O'Callahan -Date: Wed Jun 21 15:47:03 2006 +1200 - - Surface size getters for xlib - - When accessing the underlying drawable etc of an xlib surface, it is - also helpful to be able to get the width and height without a server - round trip. This patch provides those functions. - - src/cairo-xlib-surface.c | 26 ++++++++++++++++++++++++++ - src/cairo-xlib.h | 6 ++++++ - test/xlib-surface.c | 7 ++++++- - 3 files changed, 38 insertions(+), 1 deletions(-) - -commit 113bef399a2ca27f4c49a3d917ac1e6075449616 -Author: Carl Worth -Date: Sun Jun 25 11:20:50 2006 +0200 - - ROADMAP: Note that bug 6617 might already be fixed. - - ROADMAP | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 9ab5678e53219f95de7183e300bba3edac7fe72d -Author: Carl Worth -Date: Sun Jun 25 10:02:10 2006 +0200 - - Fix bug 7268: Fix coordinate space for _cairo_surface_get_extents - - Previously this function was attempting to return values in surface - space, (but even then it was doing it wrong). However, all callers - actually expect values in backend space. Fixing this cleans up bug - 7268 quite nicely. - - ROADMAP | 2 +- - src/cairo-surface.c | 31 +++++++++++++------------------ - 2 files changed, 14 insertions(+), 19 deletions(-) - -commit 95355c854f1894e7bbcd370f3bb0d00223c077b6 -Author: Carl Worth -Date: Sun Jun 25 02:25:16 2006 +0200 - - ROADMAP: Note that SVG bitmap glyphs now work. Move some bugs to a punt list. - - ROADMAP | 22 ++++++++++++++-------- - 1 files changed, 14 insertions(+), 8 deletions(-) - -commit 4c7074ceb42c50fc55929291330658f693c66bc7 -Author: Carl Worth -Date: Sun Jun 25 02:23:14 2006 +0200 - - Remove comment which had been incorrectly copied - - src/cairo-ft-font.c | 16 +--------------- - 1 files changed, 1 insertions(+), 15 deletions(-) - -commit 3a313070e5b5a1168225dec008f63ff68ed20559 -Author: Emmanuel Pacaud -Date: Fri Jun 23 20:13:58 2006 +0200 - - SVG: fix bit order for bitmap font data and use a group with matrix - - transformation instead of applying the same matrix on each rect - coordinates. - - src/cairo-svg-surface.c | 55 +++++++++++++++++++--------------------------- - 1 files changed, 23 insertions(+), 32 deletions(-) - -commit 8b6fcaf8ff17786ab5394a4aa2d6289f5d9601c2 -Author: Jonathon Jongsma -Date: Fri Jun 23 08:29:17 2006 -0500 - - Fix a minor documentation typo in cairo_pop_group_to_source - - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bfa133f9e6dbe511ab696cb1d4b1cea59451f1c1 -Author: Carl Worth -Date: Thu Jun 22 22:39:39 2006 -0700 - - ROADMAP: Note that bug 6955 is fixed. - - ROADMAP | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 5488c3b462260126a000928aa599684d7b1041e7 -Author: Carl Worth -Date: Thu Jun 22 22:38:17 2006 -0700 - - xlib: Prefer BAIL over FAIL when the cleanup code is also used in succesful cases. - - src/cairo-xlib-surface.c | 28 ++++++++++++++-------------- - 1 files changed, 14 insertions(+), 14 deletions(-) - -commit 7e457cb4c1e69670f27e3e8e134a9e32a8f75788 -Author: Carl Worth -Date: Thu Jun 22 22:32:57 2006 -0700 - - Bug 6955: Fix by adding freeze/thaw around scaled_font glyph cache in _cairo_xlib_surface_show_glyphs - - src/cairo-scaled-font.c | 12 ++++++++++++ - src/cairo-xlib-surface.c | 15 ++++++++++++++- - src/cairoint.h | 6 ++++++ - test/glyph-cache-pressure.c | 7 +++++++ - 4 files changed, 39 insertions(+), 1 deletions(-) - -commit 6a58658b73924fa6897bd1e290d754ce1df44b0d -Author: Carl Worth -Date: Thu Jun 22 22:05:20 2006 -0700 - - Add test/glyph-cache-pressure to demonstrate xlib failure (bug 6955) - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/glyph-cache-pressure-pdf-argb32-ref.png | Bin 0 -> 2879 bytes - test/glyph-cache-pressure-ps-argb32-ref.png | Bin 0 -> 591 bytes - test/glyph-cache-pressure-ref.png | Bin 0 -> 3223 bytes - test/glyph-cache-pressure-svg-argb32-ref.png | Bin 0 -> 3635 bytes - test/glyph-cache-pressure-svg-rgb24-ref.png | Bin 0 -> 3165 bytes - test/glyph-cache-pressure.c | 89 ++++++++++++++++++++++++++ - 8 files changed, 92 insertions(+), 0 deletions(-) - -commit 333ac8f4d9ccc356cb91e7118ed56bfc07e78c2f -Author: Carl Worth -Date: Thu Jun 22 22:03:06 2006 -0700 - - Add 'private' cairo_scaled_font_test_set_max_glyphs_cached_per_font for testing - - src/Makefile.am | 1 + - src/cairo-scaled-font-test.h | 49 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo-scaled-font.c | 17 +++++++++++++- - 3 files changed, 66 insertions(+), 1 deletions(-) - -commit d5197c1e0defc1018320efcb461977557a7d5d6e -Author: Emmanuel Pacaud -Date: Thu Jun 22 22:32:47 2006 +0200 - - SVG: dumb implementation of bitmap glyphs. - - Bitmap glyphs are emited as tiny svg rectangles. An improvement would be - to calculate glyph outline from bitmap data. - - src/cairo-svg-surface.c | 39 ++++++++++++++++++++++++++++++++------- - 1 files changed, 32 insertions(+), 7 deletions(-) - -commit cd5eb70e4e45962c88b4bfe13de6f26211601e55 -Author: Carl Worth -Date: Wed Jun 21 22:36:27 2006 -0700 - - ROADMAP: Update with 1.1.10 notes as well as new blockers and fixes - - ROADMAP | 23 +++++++++++++++++++---- - 1 files changed, 19 insertions(+), 4 deletions(-) - -commit 25e0acfee0ae790329c2f558ce6a9f997eeace6d -Author: Carl Worth -Date: Wed Jun 21 17:23:35 2006 -0700 - - PDF: Fix display of bitmapped glyphs (bitmap-font test now passes) - - src/cairo-pdf-surface.c | 37 ++++++++++++++++++++++++++++++++----- - 1 files changed, 32 insertions(+), 5 deletions(-) - -commit b4720ca51d4b1de02d6beb898b7d04a33e1d99fd -Author: Carl Worth -Date: Tue Jun 20 23:12:58 2006 -0700 - - PDF: Push glyph stream creation down from emit glyph to outline/bitmap variants - - src/cairo-pdf-surface.c | 42 +++++++++++++++++++++++++----------------- - 1 files changed, 25 insertions(+), 17 deletions(-) - -commit 83a8a50735746a4591c3bcc1aaa46fb7a0f87224 -Author: Behdad Esfahbod -Date: Wed Jun 21 19:57:40 2006 -0400 - - Pass --cache-file=config.cache and --disable-static to configure from - autogen.sh. - - autogen.sh | 2 +- - src/Makefile.am | 6 ++++++ - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit f5ee9557c3dc7bc72098cd08698f147ed685ccb2 -Author: Behdad Esfahbod -Date: Wed Jun 21 07:22:50 2006 -0400 - - Removed excess mkdir. - - configure.in | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit f71313d427565cb37a25393ff8a5a2ffdcfb798b -Author: Behdad Esfahbod -Date: Wed Jun 21 07:00:34 2006 -0400 - - Minor refinements, mostly to configure.in. - - configure.in | 113 +++++++++++++++++++++++++++++------------------------ - test/.gitignore | 1 + - test/Makefile.am | 3 +- - 3 files changed, 65 insertions(+), 52 deletions(-) - -commit c88bab66ab258e0bbd2cb80eaf4edc9e5f1ad6f0 -Author: Behdad Esfahbod -Date: Wed Jun 21 06:25:01 2006 -0400 - - Make configure generate cairo-features.h. Generate AC_DEFINE and AM_CONDITIONALS - - for all CAIRO_HAS_* in CAIRO_BACKEND_ENABLE. - - configure.in | 198 ++++++++++++++++++++++------------------------- - src/Makefile.am | 2 + - src/cairo-features.h.in | 86 -------------------- - 3 files changed, 96 insertions(+), 190 deletions(-) - -commit c6c1da2a2346de6c1df82fab2e7bafec7f37db50 -Author: Carl Worth -Date: Tue Jun 20 17:49:05 2006 -0700 - - PS: Add support for emitting bitmapped glyphs into type3 fonts. - - The bitmap-font now passes when run against the ps backend. - - src/cairo-ps-surface.c | 45 +++++++++++++++++++++++++++++++++++++++------ - 1 files changed, 39 insertions(+), 6 deletions(-) - -commit cca08d9bce1647444acdb78aedb6ad6967c07661 -Author: Carl Worth -Date: Tue Jun 20 17:48:06 2006 -0700 - - New bitmap-font test with bundled 6x13 font. - - The 6x13 font is a public-domain terminal font from the X - distribution. - - test/.gitignore | 1 + - test/6x13.pcf | Bin 10560 -> 5239 bytes - test/Makefile.am | 3 + - test/bitmap-font-ref.png | Bin 0 -> 552 bytes - test/bitmap-font-rgb24-ref.png | Bin 0 -> 513 bytes - test/bitmap-font.c | 106 ++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 110 insertions(+), 0 deletions(-) - -commit ab8ae66f9d5c92af96b4a530957537ec7d33c128 -Author: Carl Worth -Date: Tue Jun 20 17:15:07 2006 -0700 - - SVG: Fix to not crash on bitmapped glyphs - - This is similar to a change that was recently made to the PDF and PS backends. - Bitmap glyphs are not yet drawn correctly, (drawn as filled rectangles instead), - but the crash is at least eliminated. - - src/cairo-svg-surface.c | 87 ++++++++++++++++++++++++++++++++++------------- - test/6x13.pcf | Bin 0 -> 10560 bytes - 2 files changed, 63 insertions(+), 24 deletions(-) - -commit 2f43a79e4e87341dd0df49fc6c11fd17a21350c2 -Author: Carl Worth -Date: Tue Jun 20 11:28:23 2006 -0700 - - ft-font: Use compile-time test (WORDS_BIGENDIAN) rather than run-time function to test endian-ness. - - src/cairo-ft-font.c | 11 ++--------- - 1 files changed, 2 insertions(+), 9 deletions(-) - -commit b806b50cfe890b534dbf86f0b4d2cc0c22b880ff -Author: Carl Worth -Date: Tue Jun 20 10:59:22 2006 -0700 - - Add new CAIRO_BITSWAP8 macro for swapping the bits within a byte. - - This uses a technique devised by Sean Anderson, July 13, 2001 as found - at http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits - This technique uses 3 multiplies rather than just shifts and masks, but - performance seems comparable to the old approach, (but more significantly, - the new approach is easier to implement as a macro, and I plan to start - using this bit-swapping elsewhere very soon). - - src/cairo-ft-font.c | 9 +++------ - src/cairoint.h | 12 ++++++++++++ - 2 files changed, 15 insertions(+), 6 deletions(-) - -commit 3465ae1c58a87382c33117f6c5dec52403c9694e -Author: Carl Worth -Date: Tue Jun 20 10:43:53 2006 -0700 - - output-stream: Support %X in addition to %x - - src/cairo-output-stream.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit bb11980f14560ea16174c6531678b9b7a623f813 -Author: Kristian Høgsberg -Date: Tue Jun 20 02:16:17 2006 -0400 - - Add 'x' case to printf switch so we actually implement %02x. - - src/cairo-output-stream.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 651b2a9ab0bdb5f8fa952e47e95c21d2f530950d -Author: Carl Worth -Date: Mon Jun 19 21:16:03 2006 -0700 - - test/fallback-resolution: Remove extra call to cairo_show_page - - test/fallback-resolution.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 7026e24548fd0e4fbfb2bd3af7cffab8eab88d44 -Author: Carl Worth -Date: Mon Jun 19 21:15:26 2006 -0700 - - PS PDF: Drop unused hex_digit functions, (now that output stream supports %02x) - - src/cairo-pdf-surface.c | 8 -------- - src/cairo-ps-surface.c | 8 -------- - 2 files changed, 0 insertions(+), 16 deletions(-) - -commit cd5e08a9fee70b1ed2252d24e04db806769babcd -Author: Kristian Høgsberg -Date: Mon Jun 19 22:42:32 2006 -0400 - - Implement 0-padding and field width for _cairo_output_stream_printf(). - - Use it instead of %c%c in PS and PDF surfaces. - - src/cairo-output-stream.c | 46 +++++++++++++++++++++++++++++--------------- - src/cairo-pdf-surface.c | 5 +-- - src/cairo-ps-surface.c | 5 +-- - 3 files changed, 34 insertions(+), 22 deletions(-) - -commit a3f2d92f11a1ab4d30dd0e33a0cd5ee19495eeb1 -Author: Carl Worth -Date: Mon Jun 19 11:03:32 2006 -0700 - - PDF: Don't fallback due to CAIRO_ANTIALIAS_NONE - - This was a gratuitous thing that was causing excessive fallbacks in - mozilla printing to PDF. The only reason it was ever there was to - get some of the tests that rely on CAIRO_ANTIALIAS_NONE to pass. - Instead we now simply don't run those tests against the PDF backend. - - src/cairo-pdf-surface.c | 16 ++-------------- - test/cairo-test.c | 15 ++++++++++++++- - 2 files changed, 16 insertions(+), 15 deletions(-) - -commit 72e7667ed904b93475d7e4540778c498aa781cdf -Author: Behdad Esfahbod -Date: Mon Jun 19 04:29:49 2006 -0400 - - Replace noinst_ with check_, such that nothing is built with default make - target. - - test/Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit fdc109dc5902f362bfec2f90b5d357c2d16b96d6 -Author: Behdad Esfahbod -Date: Mon Jun 19 04:17:19 2006 -0400 - - Add create-for-stream.* to .gitignore. - - test/.gitignore | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit d12afb7eac80d66cc140721031940feddc2586c6 -Author: Behdad Esfahbod -Date: Mon Jun 19 04:10:56 2006 -0400 - - Update .gitignore - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit a28557f55a49ac812e69b59fe803fd0cba10d10b -Author: Behdad Esfahbod -Date: Mon Jun 19 04:10:19 2006 -0400 - - Reference images for new test... - - test/device-offset-positive-ref.png | Bin 0 -> 139 bytes - test/device-offset-positive-rgb24-ref.png | Bin 0 -> 130 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 2f59dd4a5e9f4ce3853b055620bbada4526e3f58 -Author: Jinghua Luo -Date: Mon Jun 19 15:52:36 2006 +0800 - - Turn hinting off to get consistent results for ft-text-vertical-layout test case. - - test/ft-text-vertical-layout-ref.png | Bin 1145 -> 1130 bytes - test/ft-text-vertical-layout-rgb24-ref.png | Bin 1059 -> 0 bytes - test/ft-text-vertical-layout-svg-argb32-ref.png | Bin 1106 -> 1021 bytes - test/ft-text-vertical-layout-svg-rgb24-ref.png | Bin 1106 -> 1100 bytes - test/ft-text-vertical-layout.c | 5 +++++ - 5 files changed, 5 insertions(+), 0 deletions(-) - -commit f5b6fc139c8e455b27df52139578d2546a826e6d -Author: Jinghua Luo -Date: Mon Jun 19 15:51:43 2006 +0800 - - Turn hinting off to get consistent results for ft-text-antialias-none test case. - - test/ft-text-antialias-none-ref.png | Bin 332 -> 336 bytes - test/ft-text-antialias-none.c | 3 +++ - 2 files changed, 3 insertions(+), 0 deletions(-) - -commit ddc01a3c5530aa9480eb19aded7ba08f97529440 -Author: Behdad Esfahbod -Date: Mon Jun 19 03:22:53 2006 -0400 - - Correct comment about expected result in device-offset-positive test. - - test/device-offset-positive.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 70d3719ec9d0dbe7e37f3ad3c5cfbe596be4f409 -Author: Behdad Esfahbod -Date: Mon Jun 19 03:13:56 2006 -0400 - - Add test device-offset-positive. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/device-offset-positive.c | 88 +++++++++++++++++++++++++++++++++++++++++ - test/device-offset.c | 2 +- - 4 files changed, 92 insertions(+), 1 deletions(-) - -commit fde08da55f293cd40927c8a1d41db0e478785e8e -Author: Jinghua Luo -Date: Mon Jun 19 14:49:46 2006 +0800 - - freetype: Don't ignore antialias in some cases. - - src/cairo-ft-font.c | 57 ++++++++++++++++++++++++++------------------------- - 1 files changed, 29 insertions(+), 28 deletions(-) - -commit c9de7b1286309fc2da1a5ea798674b528aa2eab6 -Author: Jinghua Luo -Date: Mon Jun 19 14:17:24 2006 +0800 - - freetype: Compare all elements in ft_options but not use memcmp. - - src/cairo-ft-font.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit e4736fcf76855c7ca5c9e8b922622dfffe08e4e1 -Author: Jinghua Luo -Date: Sun Jun 18 23:50:51 2006 +0800 - - freetype: Clear target mode correctly in _cairo_ft_options_merge. - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1e0e56e0223116bf48e5acd4a974f16fae824df2 -Author: Jinghua Luo -Date: Sun Jun 18 17:30:39 2006 +0800 - - freetype: Fix warnings in _decompose_glyph_outline. - - src/cairo-ft-font.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 117b062756de9fc99f635b3e712ea3e258c53165 -Author: Jinghua Luo -Date: Sun Jun 18 17:26:19 2006 +0800 - - freetype: cleanup _cairo_ft_scaled_glyph_init. - - src/cairo-ft-font.c | 32 ++++++++++++++++++-------------- - 1 files changed, 18 insertions(+), 14 deletions(-) - -commit 54b4a2fccdcaa4fbc126818c7cb7b96a1a8acf35 -Author: Jinghua Luo -Date: Sun Jun 18 17:20:38 2006 +0800 - - freetype: Respect configurations in font pattern. - - cairo freetype font backend doesn't handle fontconfig configurations - quiet well, it always renders glyphs using configurations in - scaled_font->base.options which usually isn't corresponding to - font pattern used to create the font face and the load flags. As a - result, turning antialias off with fontconfig doesn't work with cairo - HEAD, subpixel order either. - - This commit make cairo respect configurations in font pattern and handle - load flags correctly. The ft-text-antialias-none test case passess now. - And should fix bug #6759 and #4792. - - src/cairo-ft-font.c | 232 ++++++++++++++++++++++++++++----------------------- - 1 files changed, 129 insertions(+), 103 deletions(-) - -commit 4b2b8f939a9e786ead080f85d1b101680230f168 -Author: Jinghua Luo -Date: Sat Jun 17 16:29:54 2006 +0800 - - Add ft-text-antilaias-none test case demonstrating bug #6759. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/ft-text-antialias-none-ref.png | Bin 0 -> 332 bytes - test/ft-text-antialias-none.c | 128 +++++++++++++++++++++++++++++++++++ - 4 files changed, 130 insertions(+), 0 deletions(-) - -commit efaf88d4092db5e4ca37508d87fdb8ac39496018 -Author: Jinghua Luo -Date: Sat Jun 17 15:52:05 2006 +0800 - - Add missing prototype for _cairo_lzw_compress. - - src/cairoint.h | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 6f0a85c8f76ba2fb77862f2da506bfd405ce218d -Author: Ian Osgood -Date: Fri Jun 16 08:18:37 2006 -0700 - - Update the XCB backend for screen sensitivity. - - src/cairo-xcb-surface.c | 87 +++++++++++++++++++++++++++++++++++----------- - src/cairo-xcb-xrender.h | 1 + - src/cairo-xcb.h | 1 + - test/cairo-test.c | 2 +- - 4 files changed, 69 insertions(+), 22 deletions(-) - -commit bc4a6796f851a9f10764feb783988641d26cf2ce -Author: Behdad Esfahbod -Date: Fri Jun 16 19:01:20 2006 -0400 - - Accept CAIRO_TEST_TARGET being empty or containing a list of backends to test. - The list can be separated by any of space, tab, comma, colon, or semicolon. - Moreover, a CAIRO_TEST_TARGET of e.g. "glitz" matches any subtarget like - "glitz-glx". - - test/cairo-test.c | 33 ++++++++++++++++++++++++--------- - 1 files changed, 24 insertions(+), 9 deletions(-) - -commit 8bc05f15ab3f2054f802cfbc9564476a4acbb4a8 -Author: Behdad Esfahbod -Date: Fri Jun 16 18:39:36 2006 -0400 - - Note that create_similar clears surface. - - src/cairo-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 3bad1f0b0c431f1e5832d8755d0e22fe31120007 -Author: Carl Worth -Date: Fri Jun 16 10:09:54 2006 -0700 - - Increment CAIRO_VERSION to 1.1.11 after making the 1.1.10 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 65e73c81b83222de873935cf384e514ea20ac854 -Author: Carl Worth -Date: Fri Jun 16 09:45:44 2006 -0700 - - Update version to 1.1.10 and add notes to NEWS file. - - Also update libtool version information to 10:0:8. - - NEWS | 17 +++++++++++++++++ - configure.in | 6 +++--- - 2 files changed, 20 insertions(+), 3 deletions(-) - -commit b992e1e29d6d63de2a6b5b48b93d23be50fc29ca -Author: Carl Worth -Date: Fri Jun 16 09:44:33 2006 -0700 - - Annoying doc template churn. - - doc/public/tmpl/cairo-image.sgml | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4a5111695c25ce9178f1eb69acd825b3466fcb11 -Author: Carl Worth -Date: Fri Jun 16 09:22:36 2006 -0700 - - Update release rules in Makefile to add git signature information. - - Makefile.am | 25 ++++++++++++++++++++++--- - RELEASING | 2 +- - 2 files changed, 23 insertions(+), 4 deletions(-) - -commit c6164d0d2a9ca16a00c2768f24a0230de6cbc6f6 -Author: Carl Worth -Date: Thu Jun 15 16:22:52 2006 -0700 - - New API: Add support for new CAIRO_FORMAT_RGB16_565 - - pixman/src/icformat.c | 6 ++++++ - pixman/src/pixman.h | 3 ++- - src/cairo-image-surface.c | 17 ++++++++++++++++- - src/cairo.h | 6 +++++- - 4 files changed, 29 insertions(+), 3 deletions(-) - -commit 36e59ca5f854de2740c7ef4f0b6022785dd9dc4c -Author: Jinghua Luo -Date: Fri Jun 16 21:13:21 2006 +0800 - - xlib: free resources before return if looking up glyph surface fails. - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bf2c0e44d8c8e1e692eafba7bccddd26f1f31c1b -Merge: b8231f8... a8b736c... -Author: Behdad Esfahbod -Date: Fri Jun 16 00:13:18 2006 -0400 - - Merge branch 'cairo' into cairo-origin - -commit a8b736c1608c3d0b98b81f79ab1f5607cce245ed -Author: Behdad Esfahbod -Date: Fri Jun 16 00:08:44 2006 -0400 - - Use enum time instead of int (shuts intel compiler up.) - - pixman/src/pixregion.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b8231f8949818099c4e6ed4e0669de6f8c8bf856 -Author: Kristian Høgsberg -Date: Thu Jun 15 22:07:17 2006 -0400 - - Add cairo-output-stream-private.h to libcairo_la_SOURCES. - - We now pass distcheck again. - - src/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit abe1bfad8d8a3252bdc65da40bf303626881b163 -Author: Carl Worth -Date: Thu Jun 15 15:43:00 2006 -0700 - - Add missing breaks in switch statement. - - Yes, I am an idiot. - - src/cairo-image-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 9fa24975b4b9cc9983331991d2a3c53a37272162 -Author: Carl Worth -Date: Thu Jun 15 15:33:45 2006 -0700 - - Drop _cairo_surface_is_opaque now that we have cairo_surface_get_content - - src/cairo-pattern.c | 2 +- - src/cairo-surface.c | 37 +------------------------------------ - src/cairoint.h | 1 + - 3 files changed, 3 insertions(+), 37 deletions(-) - -commit 0ba040d7f63c62e482d40fc6db0e1f0714806839 -Author: Carl Worth -Date: Thu Jun 15 14:56:59 2006 -0700 - - Remove _cairo_image_surface_is_alpha_only in favor of just looking at content value. - - src/cairo-image-surface.c | 16 +--------------- - 1 files changed, 1 insertions(+), 15 deletions(-) - -commit 82496a6f7c5b0a9f91db6abc9e34202b8ffa77c4 -Author: Carl Worth -Date: Thu Jun 15 14:15:42 2006 -0700 - - _cairo_format_from_pixman_format: Add useful error mesage and assertion when failing. - - src/cairo-image-surface.c | 62 ++++++++++++++++++++++++++------------------- - 1 files changed, 36 insertions(+), 26 deletions(-) - -commit dedc51ba51eaa61e4b11f274fac06c6f0acd8a87 -Author: Kristian Høgsberg -Date: Wed Jun 14 19:25:37 2006 -0400 - - Only call close function for output streams if it's non-NULL. - - src/cairo-output-stream.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 9ef99d10bb7eb6cde421e0d93ae55988882d9b56 -Author: Kristian Høgsberg -Date: Wed Jun 14 19:15:50 2006 -0400 - - Add test case for the PDF, PS and SVG stream constructors. - - test/Makefile.am | 1 + - test/create-for-stream.c | 218 ++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 219 insertions(+), 0 deletions(-) - -commit 8c8bcaf99b1c8d6cb26dfc89751d71de535c11e7 -Author: Emmanuel Pacaud -Date: Wed Jun 14 20:57:42 2006 +0200 - - SVG: Update of reference images. - - test/linear-gradient-svg-argb32-ref.png | Bin 947 -> 1000 bytes - test/linear-gradient-svg-rgb24-ref.png | Bin 947 -> 1000 bytes - test/mask-svg-argb32-ref.png | Bin 87715 -> 87728 bytes - test/mask-svg-rgb24-ref.png | Bin 81874 -> 81753 bytes - test/paint-source-alpha-svg-argb32-ref.png | Bin 353 -> 505 bytes - test/paint-source-alpha-svg-rgb24-ref.png | Bin 353 -> 505 bytes - test/paint-with-alpha-svg-argb32-ref.png | Bin 420 -> 516 bytes - test/paint-with-alpha-svg-rgb24-ref.png | Bin 420 -> 516 bytes - test/push-group-svg-argb32-ref.png | Bin 2945 -> 2935 bytes - test/push-group-svg-rgb24-ref.png | Bin 2901 -> 2887 bytes - test/scale-source-surface-paint-svg-argb32-ref.png | Bin 146 -> 182 bytes - test/scale-source-surface-paint-svg-rgb24-ref.png | Bin 158 -> 192 bytes - test/text-pattern-svg-argb32-ref.png | Bin 1720 -> 1708 bytes - test/text-pattern-svg-rgb24-ref.png | Bin 1567 -> 1563 bytes - test/trap-clip-svg-argb32-ref.png | Bin 71765 -> 71728 bytes - test/trap-clip-svg-rgb24-ref.png | Bin 73066 -> 73082 bytes - 16 files changed, 0 insertions(+), 0 deletions(-) - -commit 2cea3a2710cd4c6eb68e25eadaaf96cdc921ef14 -Merge: 17ea755... 4932d09... -Author: Kristian Høgsberg -Date: Wed Jun 14 15:00:33 2006 -0400 - - Merge branch 'svg-rewrite' - -commit 4932d09a06228a08d1c8f4d2892378c004ff3313 -Author: Kristian Høgsberg -Date: Wed Jun 14 14:12:55 2006 -0400 - - Actually add src/cairo-output-stream-private.h. - - src/cairo-output-stream-private.h | 156 +++++++++++++++++++++++++++++++++++++ - 1 files changed, 156 insertions(+), 0 deletions(-) - -commit 17ea7552355d9925fb99cd4ca98cf38946f99421 -Author: Torsten Schönfeld -Date: Wed Jun 14 11:09:00 2006 -0700 - - Add missing cairo_public tag for cairo_image_surface_get_stride - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1599ab8fa91fd2b5b611825d1e1b46fcacfb7982 -Author: Carl Worth -Date: Wed Jun 14 10:41:29 2006 -0700 - - Increment CAIRO_VERSION to 1.1.9 after making the 1.1.8 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit dd859b8736bb4d1bcf3ed78d0bd1f72a7aad9ca9 -Author: Carl Worth -Date: Wed Jun 14 08:14:43 2006 -0700 - - Update version to 1.1.8 and add notes to NEWS file. - - Also update libtool version information to 9:0:7. - - NEWS | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 6 +- - 2 files changed, 135 insertions(+), 3 deletions(-) - -commit 65c9c072d207b04cac8da21b40b2dd5c14791547 -Author: Carl Worth -Date: Wed Jun 14 06:39:23 2006 -0700 - - Update refefence images due to pattern source shift. - - The commit that introduced this change is: - - commit b104a79502e2c01c508e40d83613ecfa001a2a4e - Author: Bertram Felgenhauer - Date: Tue Jun 13 20:07:28 2006 -0400 - - Patch to fix pixman samping location bug (#2488). - - test/gradient-alpha-ref.png | Bin 155 -> 147 bytes - test/gradient-alpha-rgb24-ref.png | Bin 142 -> 142 bytes - test/linear-gradient-ref.png | Bin 972 -> 1023 bytes - test/mask-ref.png | Bin 87837 -> 87890 bytes - test/mask-rgb24-ref.png | Bin 71069 -> 70978 bytes - test/operator-source-ref.png | Bin 19684 -> 19726 bytes - test/operator-source-rgb24-ref.png | Bin 14699 -> 14701 bytes - test/push-group-ref.png | Bin 3012 -> 2996 bytes - test/push-group-rgb24-ref.png | Bin 2858 -> 2840 bytes - test/text-pattern-ref.png | Bin 1721 -> 1721 bytes - test/text-pattern-rgb24-ref.png | Bin 1423 -> 1418 bytes - test/trap-clip-ref.png | Bin 71785 -> 71753 bytes - test/trap-clip-rgb24-ref.png | Bin 63087 -> 63049 bytes - 13 files changed, 0 insertions(+), 0 deletions(-) - -commit 4bdfff477a1d7fa19890f0a5c4f3cc6533e39149 -Author: Carl Worth -Date: Wed Jun 14 06:00:11 2006 -0700 - - PS PDF: Update reference images due to truetype subsetting - - test/select-font-face-pdf-argb32-ref.png | Bin 2782 -> 2237 bytes - test/select-font-face-ps-argb32-ref.png | Bin 528 -> 481 bytes - test/show-text-current-point-pdf-argb32-ref.png | Bin 3838 -> 2157 bytes - test/show-text-current-point-ps-argb32-ref.png | Bin 645 -> 602 bytes - test/text-antialias-gray-pdf-argb32-ref.png | Bin 1004 -> 950 bytes - test/text-antialias-gray-ps-argb32-ref.png | Bin 306 -> 310 bytes - test/text-antialias-none-pdf-argb32-ref.png | Bin 1004 -> 950 bytes - test/text-antialias-none-ps-argb32-ref.png | Bin 306 -> 310 bytes - test/text-antialias-subpixel-pdf-argb32-ref.png | Bin 1004 -> 950 bytes - test/text-antialias-subpixel-ps-argb32-ref.png | Bin 306 -> 310 bytes - 10 files changed, 0 insertions(+), 0 deletions(-) - -commit 7e0be461b595c3561fa75472fdfd5954e4666cfc -Author: Behdad Esfahbod -Date: Tue Jun 13 22:40:50 2006 -0400 - - Rename cairo-wideint.h to cairo-wideint-private.h. - - RELEASING | 2 +- - src/Makefile.am | 2 +- - src/cairo-wideint-private.h | 313 +++++++++++++++++++++++++++++++++++++++++++ - src/cairo-wideint.h | 313 ------------------------------------------- - src/cairoint.h | 2 +- - 5 files changed, 316 insertions(+), 316 deletions(-) - -commit b9cfe941c8e1ae427780117fedfd47d458e29f02 -Author: Behdad Esfahbod -Date: Tue Jun 13 22:37:34 2006 -0400 - - Add backend-specific pkg-config files. - - .gitignore | 1 - - configure.in | 56 +++++++++++++++++++++++++++++++--------------- - src/.gitignore | 1 + - src/Makefile.am | 35 ++++++++++++++++++++++------ - src/cairo-backend.pc.in | 12 ++++++++++ - 5 files changed, 78 insertions(+), 27 deletions(-) - -commit 2249fb89ae36859d1d3f6c9d0b72e95e45726170 -Author: Behdad Esfahbod -Date: Tue Jun 13 19:13:05 2006 -0400 - - Move cairo.pc into src/. - - Makefile.am | 8 ++------ - cairo.pc.in | 12 ------------ - configure.in | 2 +- - src/Makefile.am | 3 +++ - src/cairo.pc.in | 12 ++++++++++++ - 5 files changed, 18 insertions(+), 19 deletions(-) - -commit e346eca1386e8ec14f9bda7d76662a16706f1e7c -Author: Carl Worth -Date: Wed Jun 14 04:58:54 2006 -0700 - - Add zero-alpha reference image to Makefile.am for the sake of make dist - - test/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 211741cce61075b526edfacd728c9c5de8dd1aac -Author: Bertram Felgenhauer -Date: Wed Jun 14 04:51:27 2006 -0700 - - Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b8e93f9c5598d5452e08728546677a977e41617f -Author: Brian Cameron -Date: Wed Jun 14 04:44:01 2006 -0700 - - Bug 4882: Flag Sun's X server has having buggy_repeat. - - This is the Sun labelling of Xorg 6.8 as shipped with Solaris 10. - - src/cairo-xlib-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 32d049a7bf9549f8c797c50654546b6526518f0a -Author: Dom Lachowicz -Date: Wed Jun 14 04:37:08 2006 -0700 - - Bug 5306: test/pdf2png: Add missing include of stdio.h - - test/pdf2png.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit e9269aefcbc96a417012107c17ec2bc4de608cc1 -Author: Behdad Esfahbod -Date: Wed Jun 14 04:07:29 2006 -0700 - - Bug 7075: Fix make clean to remove cairo.def - - src/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit c8e7ff096648a53b780f14c2cd2467157fae8385 -Author: Carl Worth -Date: Wed Jun 14 04:04:21 2006 -0700 - - ROADMAP: Update with PDF bugs from minefield test. Slip non-1.0 regressions off of 1.2. - - ROADMAP | 32 +++++++++++++++++++------------- - 1 files changed, 19 insertions(+), 13 deletions(-) - -commit c515b15cfc8c88b330f16a9263841476c29ded99 -Author: Carl Worth -Date: Wed Jun 14 03:53:18 2006 -0700 - - ft: If glyph->format is not OUTLINE use _render_glyph_bitmap to coerce to a bitmap - - src/cairo-ft-font.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 61a3260e44b40b8aa344f806979b60a82400105e -Author: Jinghua Luo -Date: Wed Jun 14 15:57:23 2006 +0800 - - ROADMAP: Mark bugs FC_ADVANCE and _transform_glyph_bitmap as fixed. - - ROADMAP | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0d2900477cd6edfe6025be06c3f1eda63cbe5230 -Author: Jinghua Luo -Date: Wed Jun 14 15:56:17 2006 +0800 - - freetype: Return an error if the glyph format isn't outline or bitmap - while getting glyph surface. - - src/cairo-ft-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b104a79502e2c01c508e40d83613ecfa001a2a4e -Author: Bertram Felgenhauer -Date: Tue Jun 13 20:07:28 2006 -0400 - - Patch to fix pixman samping location bug (#2488). - - pixman/src/fbcompose.c | 21 +++++++++++++++------ - test/pixman-rotate-rgb24-ref.png | Bin 385 -> 244 bytes - test/pixman-rotate-svg-argb32-ref.png | Bin 0 -> 258 bytes - test/pixman-rotate-svg-rgb24-ref.png | Bin 0 -> 358 bytes - 4 files changed, 15 insertions(+), 6 deletions(-) - -commit 0ee64b84689c22bba1d9bb2758170bbc104f5cf1 -Author: Carl Worth -Date: Tue Jun 13 16:50:43 2006 -0700 - - Bug 4196: undef MIN an MAX before defining to avoid duplicate definition - - pixman/src/icint.h | 2 ++ - pixman/src/pixregion.c | 2 ++ - 2 files changed, 4 insertions(+), 0 deletions(-) - -commit 1b11d3830b26f6ce7f0d8ddcc315a9c19f56658a -Author: Carl Worth -Date: Tue Jun 13 16:42:06 2006 -0700 - - test/zero-alpha: Drop REPS from 100 to 10 for a faster test. - - Hopefully this still triggers the bug of interest. I think it should. - - test/zero-alpha.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2d269664f166c4fc835e70a176ad46b2d7ccb41d -Author: Carl Worth -Date: Tue Jun 13 16:13:23 2006 -0700 - - Add new zero-alpha test to demonstrate (X server?) bug found by Paul Giblock - - test/.gitignore | 1 + - test/Makefile.am | 3 +- - test/zero-alpha-ref.png | Bin 0 -> 115 bytes - test/zero-alpha.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 100 insertions(+), 1 deletions(-) - -commit 1d18af9f5adb0ce2e01bc42578fe117c4e924ce8 -Merge: c7b194c... 27e9e3c... -Author: Carl Worth -Date: Tue Jun 13 15:51:57 2006 -0700 - - Merge branch 'type1-subsetting' into cairo - - Conflicts: - - src/cairo-ps-surface.c - -commit c7b194c59544ff441d1e83827242667c0e86dc5a -Merge: 4b063c6... 127fab4... -Author: Carl Worth -Date: Tue Jun 13 15:46:14 2006 -0700 - - Merge branch 'truetype-subsetting' into cairo - - Conflicts: - - src/Makefile.am - src/cairo-font-subset.c - src/cairo-pdf-surface.c - src/cairo-ps-surface.c - -commit cdf07a9be87515b75156a6f02f050bc5b1e6b5d1 -Author: Kristian Høgsberg -Date: Tue Jun 13 17:45:55 2006 -0400 - - Remove libxml2 checks from configure.in. - - configure.in | 14 -------------- - 1 files changed, 0 insertions(+), 14 deletions(-) - -commit ed60128bd0822e56c8002f3503044d5b0efaec79 -Author: Kristian Høgsberg -Date: Tue Jun 13 17:25:24 2006 -0400 - - Rewrite SVG backend to just use cairo output stream instead of libxml2. - - src/cairo-svg-surface.c | 1161 +++++++++++++++++++---------------------------- - 1 files changed, 471 insertions(+), 690 deletions(-) - -commit 17d41d1f71a5d5af489bc395e3bb3cf414aeda57 -Author: Kristian Høgsberg -Date: Tue Jun 13 17:24:36 2006 -0400 - - Only run fallback-resolution test case when all of PDF, PS and SVG are enabled. - - test/Makefile.am | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 4b063c607208935fad040d481d42085c4ed6e64d -Author: Carl Worth -Date: Tue Jun 13 12:48:00 2006 -0700 - - PS, PDF: Re-organize handling of bitmapped fonts to avoid invalid output. - - Previously, using the ps or pdf backend with a bitmapped font would - result in a coorupt output file, filled with uninitialized values and - missing procedures for drawing the glyphs. - - Now, the file should actually be valid, but it's simply drawing black - boxes instead of the correct glyphs. - - src/cairo-pdf-surface.c | 92 ++++++++++++++++++++++++++++++++-------------- - src/cairo-ps-surface.c | 91 +++++++++++++++++++++++++++++++++------------- - 2 files changed, 129 insertions(+), 54 deletions(-) - -commit d2045c1f7465f7f3625ce14a7b0e395b35ba8dc0 -Author: Carl Worth -Date: Tue Jun 13 12:45:16 2006 -0700 - - Change return type of _cairo_scaled_glyph_lookup to allow UNSUPPORTED. - - This allows graceful recovery when first requesting a path from a font - that only supports bitmapped glyph. The changed return type is also - pushed down into the scaled_glyph_init function of the - cairo_scaled_font backend. - - src/cairo-atsui-font.c | 2 +- - src/cairo-ft-font.c | 4 ++-- - src/cairo-scaled-font.c | 10 ++++++++-- - src/cairoint.h | 4 ++-- - 4 files changed, 13 insertions(+), 7 deletions(-) - -commit 0e30fc44363435c52c762fa8a353de43fe087822 -Author: Carl Worth -Date: Mon Jun 12 08:45:58 2006 -0700 - - Add aliases for deprecated cairo_{pdf,ps,svg}_surface_set_dpi - - The aliases should allow binaries with the old symbols to continue to run. - - Meanwhile, the macros in cairo.h prevent any code from being compiled without - using the new, future-proof function names. - - This is a temporary, transition strategy and the aliases will be dropped - before the next major release. - - src/cairo-surface.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 7015cc0b90f99898852ca276368854f9465f4c82 -Author: Carl Worth -Date: Mon Jun 12 08:18:09 2006 -0700 - - Add cairo-ps-test.h and cairo-svg-test.h to Makefile.am - - src/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8581447e7b26f34c7be43fef7dfa5458f2278556 -Author: Kristian Høgsberg -Date: Mon Jun 12 03:15:33 2006 -0400 - - Add an in-memory output-stream implementation. - - src/cairo-output-stream.c | 59 +++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 59 insertions(+), 0 deletions(-) - -commit d43321066081eacca2e0c86258c68bae49036087 -Author: Kristian Høgsberg -Date: Mon Jun 12 03:10:40 2006 -0400 - - Convert the word wrap stream, the base85 stream and the ps string stream. - - src/cairo-base85-stream.c | 27 ++++++++++++--------------- - src/cairo-ps-surface.c | 44 +++++++++++++++++++++----------------------- - 2 files changed, 33 insertions(+), 38 deletions(-) - -commit 45cbe055d9cf4ac2cf2fbcd21b020c8f869a0380 -Author: Kristian Høgsberg -Date: Mon Jun 12 03:08:51 2006 -0400 - - Convert the stdio output stream to use the new output stream interface. - - src/cairo-output-stream.c | 50 +++++++++++++++++++++++++++++++++----------- - 1 files changed, 37 insertions(+), 13 deletions(-) - -commit 3575c942f81d54c88fd48aee2352ecd29406e711 -Author: Kristian Høgsberg -Date: Mon Jun 12 03:07:19 2006 -0400 - - Make cairo_output_stream_t an embeddable type. - - Most internal cairo types are transparent within cairo and have init and fini - functions to intialize and finialize them in place. This way they can be - easily be embedded in other structs or derived from. Initially, the - cairo_output_stream_t type was proposed as a publically visible type and - thus kept opaque. However, now it's only used internally and derived from - in a number of places so let's make it an embeddable type for consistency - and ease of use. - - The patch keeps _cairo_output_stream_create() and _cairo_output_stream_close() - around for (internal) backwards compatibility by deriving a - cairo_output_stream_with_closure_t stream type. - - The patch also moves all cairo_output_stream_t functions out of cairoint.h - and into new file cairo-output-stream-private.h, thus chipping away at the - monolithic cairoint.h. - - src/cairo-base85-stream.c | 1 + - src/cairo-output-stream.c | 76 ++++++++++++++++++++++++++++++----------- - src/cairo-pdf-surface.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-svg-surface.c | 1 + - src/cairoint.h | 84 --------------------------------------------- - 6 files changed, 60 insertions(+), 104 deletions(-) - -commit 9d3443e86ab32711d332b1474bc2fe23f9796723 -Author: Jinghua Luo -Date: Mon Jun 12 14:18:25 2006 +0800 - - xlib: bugfix for #7172. - - When the glyph format does not match the font format, the glyph will - be rendered incorrectly. Setting the {x, y}_offset correctly when - converting glyph format fix that. - - src/cairo-xlib-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 79928101352a84af1884e993fd06bf6cd44f2af3 -Author: Emmanuel Pacaud -Date: Sun Jun 11 20:56:09 2006 +0200 - - SVG: Sets fallback resolution when compositing a meta surface. - - For doing so, I've changed document owner to be the paginated surface, - instead of the svg surface like previously. That's because fallback - resolution is stored in paginated surface. - - src/cairo-svg-surface.c | 29 ++++++++++++++--------------- - 1 files changed, 14 insertions(+), 15 deletions(-) - -commit 7e1a01092c94c7b67e95f4f4ff27c76fb5b21295 -Author: Jinghua Luo -Date: Sun Jun 11 18:37:59 2006 +0800 - - freetype: build fix for _transform_glyph_bitmap. - - I sorry for this noise, I didn't notice cworth's device_{x, y}_offset - changes. Now cairo builds again. - paths... - - src/cairo-ft-font.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -commit 4af28e639dcf7fe3332c0302295e6d590a505af7 -Author: Jinghua Luo -Date: Sun Jun 11 18:16:46 2006 +0800 - - ignore FC_MATRIX in font pattern. - - With previous commit, freetype font backend is able to transform - both bitmap and outline glyphs, so ignores FC_MATRIX from now, - cairo doesn't need this for artificial oblique. And cairo doesn't - use FC_MATRIX direct anyway, it has its own font matrix that may be not - equal to FC_MATRIX in the font pattern! You should pass the matrix - (usually the matrix is multiplied by font's pixel size) to cairo when - creating scaled font. - - src/cairo-ft-font.c | 11 +---------- - 1 files changed, 1 insertions(+), 10 deletions(-) - -commit f5bc26b75dd030ada70f87113e2d132dfcb0b0f3 -Author: Jinghua Luo -Date: Sun Jun 11 18:09:05 2006 +0800 - - freetype: rework _transform_glyph_bitmap. - - This function is used to shape bitmap glyphs(outline glyphs are - transformed by freetype). That means freetype backend is able to - tranform both bitmap & outline glyphs now. This is needed for glyph - rotating, artificial oblique etc. - - src/cairo-ft-font.c | 58 +++++++++++++++++++++++++++++---------------------- - 1 files changed, 33 insertions(+), 25 deletions(-) - -commit da9cd55afbb55ae70991e3f5b4c0dc5b9a58e0d6 -Author: Carl Worth -Date: Sat Jun 10 16:31:05 2006 -0700 - - ROADMAP: Note that cairo_surface_set_fallback_resolution is in place now. - - ROADMAP | 32 +++++++++++++++++--------------- - 1 files changed, 17 insertions(+), 15 deletions(-) - -commit 2f4210d346d10a2bff9a1ba74e6e9279cd4dddc3 -Author: Carl Worth -Date: Sat Jun 10 11:20:21 2006 -0700 - - Change _cairo_meta_surface_get_extents to return a bounded size. - - The old behavior of returning "infinite" extents is inconsistent with - the current usage of meta-surface where it is always created for - replay against a particular (sized) target surface and that size is - passed to _cairo_meta_surface_create. - - Also clarify documentation of _cairo_surface_get_extents to eliminate - the possibility of inifinite extents. - - src/cairo-meta-surface.c | 25 ++++++++++++++++--------- - src/cairo-surface.c | 20 +++++++++++--------- - 2 files changed, 27 insertions(+), 18 deletions(-) - -commit d758d5104a09019b65c1b2e93fd5ab80b0e4d056 -Author: Carl Worth -Date: Sat Jun 10 10:42:32 2006 -0700 - - Don't create a new scaled_font if there's a device_offset but no device_scale. - - (This is covering up my mistake from the last batch of 12 commits which - wasn't ready to be pushed yet. This fixes some of the crashes which - were introduced, and is a good thing to do regardless.) - - src/cairo-surface.c | 34 ++++++++++++++++------------------ - 1 files changed, 16 insertions(+), 18 deletions(-) - -commit 0662928e4fd7bd432fdd815b95271d5c74eaba70 -Author: Carl Worth -Date: Sat Jun 10 09:44:30 2006 -0700 - - Clarify that fallback_resolution acts on a per-page granularity. - - This explains why the SVG result from the fallback-resolution test - doesn't actually show multiple resolutions in effect at the same time. - - src/cairo-surface.c | 5 +++++ - test/fallback-resolution.c | 16 ++++++++++++++++ - 2 files changed, 21 insertions(+), 0 deletions(-) - -commit 13ba5316fbc4b9d2aac13da644f4c87069447246 -Author: Carl Worth -Date: Sat Jun 10 09:15:31 2006 -0700 - - Test PS and SVG backends in addition to PDF in test/fallback-resolution. - - test/.gitignore | 2 + - test/fallback-resolution.c | 112 +++++++++++++++++++++++++++++++------------ - 2 files changed, 83 insertions(+), 31 deletions(-) - -commit 6ca30e108f32862948fa332b31f60fa79b566d77 -Author: Carl Worth -Date: Sat Jun 10 09:14:47 2006 -0700 - - Add cairo_{ps,svg}_test_force_fallbacks so tests can force fallbacks. - - src/cairo-ps-surface.c | 24 ++++++++++++++++++++ - src/cairo-ps-test.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-svg-surface.c | 24 ++++++++++++++++++++ - src/cairo-svg-test.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 156 insertions(+), 0 deletions(-) - -commit 100b30d1c09cb7fe73414c4d3466032a8c99b088 -Author: Carl Worth -Date: Sat Jun 10 08:35:01 2006 -0700 - - Fix font size when drawing text with a device_scale. - - The trick is to create a new scaled_font with the device_transform - multiplied into the CTM within _cairo_surface_show_glyphs before - calling into the backend. The fallback-resolution test shows that - the font size is now correct. - - src/cairo-surface.c | 27 +++++++++++++++++++++++++-- - 1 files changed, 25 insertions(+), 2 deletions(-) - -commit 74857181c96c734d7e735cfc9862e22b01599913 -Author: Carl Worth -Date: Sat Jun 10 08:29:14 2006 -0700 - - Fix line width for stroking with a device_scale. - - The trick is to simply multiply the device_transform into the CTM - within _cairo_surface_stroke before passing the CTM down to the - backend. The fallback-resolution test shows that the stroke width is - now correct. - - src/cairo-surface.c | 13 +++++++++++-- - 1 files changed, 11 insertions(+), 2 deletions(-) - -commit ebb53b2572cc74f90d2afd03807b7d4f41a4965a -Author: Carl Worth -Date: Sat Jun 10 08:21:18 2006 -0700 - - Add text and stroke to falback-resolution test (showing bugs in each). - - test/fallback-resolution.c | 42 +++++++++++++++++++++++++++++++++++------- - 1 files changed, 35 insertions(+), 7 deletions(-) - -commit 6efeb1e19b4c30d6a88bd9248a1d67b791b8df0d -Author: Carl Worth -Date: Sat Jun 10 08:19:41 2006 -0700 - - Hook up device scaling so fallback_resolution starts working. - - Add new, private _cairo_surface_set_device_scale for getting at the - scaling components of device_transform. Use this in paginated surface - when replaying to an image surface. The fallback-resolution test now - clearly shows that image fallback resolution can be controlled by the - user. Hurrah! - - src/cairo-paginated-surface.c | 11 +++++++++-- - src/cairo-surface.c | 39 +++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 5 +++++ - 3 files changed, 53 insertions(+), 2 deletions(-) - -commit b129f747c5c7edc37982f286940d3583c74cfee9 -Author: Carl Worth -Date: Sat Jun 10 00:12:51 2006 -0700 - - Change {x,y}_device_offset values to a device_transform matrix. - - This is a step toward allowing device scaling in addition to device offsets. - So far, the scale values are still always 1.0 so only the translation is - actually being used. But most of the code is in place for doing scaling as - well and it just needs to be hooked up. - - There are some fragile parts in this code, all of which involve using the - translation without the scale, (so grep for device_transform.x0 or - device_transform->x0). Some of these are likely bugs that will hopefully - be obvious once we start using the scale. Others are OK if only because - we 'know' that we aren't ever setting device scaling on a surface that - has a device offset (we only set device scaling on surfaces we create - internally and we don't export device scaling to the user). - - All of these fragile parts in the code have been marked with comments of - the form: XXX: FRAGILE. - - src/cairo-clip.c | 15 +++-- - src/cairo-directfb-surface.c | 5 +- - src/cairo-ft-font.c | 12 ++-- - src/cairo-glitz-surface.c | 8 +- - src/cairo-gstate.c | 13 +--- - src/cairo-matrix.c | 8 +++ - src/cairo-path.c | 29 ++++++++-- - src/cairo-scaled-font.c | 5 +- - src/cairo-surface-fallback.c | 3 +- - src/cairo-surface.c | 129 ++++++++++++++++++++++------------------- - src/cairo-xlib-surface.c | 8 +- - src/cairo.c | 4 +- - src/cairoint.h | 13 ++-- - 13 files changed, 144 insertions(+), 108 deletions(-) - -commit 24da744d03e961078e68691225fb1363e47b2b22 -Author: Carl Worth -Date: Fri Jun 9 23:59:24 2006 -0700 - - doc: SGML template churn - - doc/public/tmpl/cairo-pdf.sgml | 7 +++++++ - doc/public/tmpl/cairo-ps.sgml | 7 +++++++ - doc/public/tmpl/cairo-status.sgml | 7 ------- - doc/public/tmpl/cairo-svg.sgml | 7 +++++++ - 4 files changed, 21 insertions(+), 7 deletions(-) - -commit 999315cc0ad326d31c66f2e6fa1ae72dfb9bb57e -Author: Carl Worth -Date: Fri Jun 9 21:12:44 2006 -0700 - - Rename device_{x,y}_offset to {x,y}_device_offset for better consitency/grepability - - src/cairo-clip.c | 4 +- - src/cairo-directfb-surface.c | 4 +- - src/cairo-ft-font.c | 8 +++--- - src/cairo-glitz-surface.c | 8 +++--- - src/cairo-gstate.c | 8 +++--- - src/cairo-scaled-font.c | 4 +- - src/cairo-surface-fallback.c | 4 +- - src/cairo-surface.c | 56 +++++++++++++++++++++--------------------- - src/cairo-xlib-surface.c | 8 +++--- - src/cairo.c | 4 +- - src/cairoint.h | 4 +- - 11 files changed, 56 insertions(+), 56 deletions(-) - -commit 6f6bdb6663fc439387db6b410bf742de6b501015 -Author: Carl Worth -Date: Fri Jun 9 16:54:09 2006 -0700 - - Add REPLACED_BY macros to help porting to new set_fallback_resolution - - src/cairo.h | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit b2f274b3e86983b312ec19e33b3a1231bd3e51d0 -Author: Carl Worth -Date: Fri Jun 9 16:52:17 2006 -0700 - - New API: Replace cairo_{ps,pdf,svg}_set_dpi with new cairo_surface_set_fallback_resolution. - - This just provides the mechanics for storing the value and removing the old - function calls. The new value is still not used anywhere (though nor where - the old values), so there should be no functional change (other than forcing - any programs calling the old API to be updated). - - src/cairo-pdf-surface.c | 35 ----------------------------------- - src/cairo-pdf.h | 5 ----- - src/cairo-ps-surface.c | 35 ----------------------------------- - src/cairo-ps.h | 5 ----- - src/cairo-surface.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-svg-surface.c | 38 -------------------------------------- - src/cairo-svg.h | 5 ----- - src/cairo.h | 5 +++++ - src/cairoint.h | 5 +++++ - test/cairo-test.c | 6 +++--- - test/fallback-resolution.c | 2 +- - 11 files changed, 58 insertions(+), 127 deletions(-) - -commit a812b3c4908ff296877a648915d5f06696eebe9e -Author: Carl Worth -Date: Fri Jun 9 15:37:50 2006 -0700 - - Ignore ft-text-vertical-layout binary - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ac20c80960ccf233f9582da88f0d7aa4a181099e -Author: Jinghua Luo -Date: Fri Jun 9 07:06:51 2006 +0800 - - freetype: Ignore global advance unconditionally. - - Global advance exists for historical reasons. Nowadays, most of fonts - support unicode, means it's no guaranteed to every glyphs in the font - has the same advance.Sometimes it maybe is biger/smaller then the global - advance even for monospace fonts!So forcing their advance to global - advance, it's obviously wrong. - - src/cairo-ft-font.c | 3 +++ - src/cairo-xlib-surface.c | 3 +++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit d3c782320a76d8e79099e5c5dc03c7dd819573d7 -Author: Carl Worth -Date: Wed Jun 7 17:38:09 2006 -0700 - - Rename ft-text-vertical-layout reference image according to standard convention. - - The standard convention is that the ARGB32 reference image has no - -argb32- component in its name (no real important reason, just - historical). So let's be consist and rename: - test/ft-text-vertical-layout-argb32-ref.png -> test/ft-text-vertical-layout-ref.png - - test/ft-text-vertical-layout-argb32-ref.png | Bin 1145 -> 0 bytes - test/ft-text-vertical-layout-ref.png | Bin 0 -> 1145 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit b7b3d05d78f22b6b45c6a54f2647dbdaeb034d37 -Author: Carl Worth -Date: Wed Jun 7 13:51:58 2006 -0700 - - Fix bug in get-group-target (in the test itself) letting it now pass. - - test/get-group-target.c | 14 ++++++++++++-- - 1 files changed, 12 insertions(+), 2 deletions(-) - -commit 45ca22e5e1a177a4dc9854cd310e5c683df058cb -Author: Jinghua Luo -Date: Thu Jun 8 04:06:30 2006 +0800 - - Make image-*-ref.png image as reference image. - - test/ft-text-vertical-layout-argb32-ref.png | Bin 0 -> 1145 bytes - test/ft-text-vertical-layout-image-argb32-ref.png | Bin 1145 -> 0 bytes - test/ft-text-vertical-layout-image-rgb24-ref.png | Bin 1059 -> 0 bytes - test/ft-text-vertical-layout-rgb24-ref.png | Bin 0 -> 1059 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit 5ae2a78a297730cd9d2f45be9f23fbf6e2bffe7d -Author: Jinghua Luo -Date: Thu Jun 8 03:45:38 2006 +0800 - - freetype: Fix for test case ft-text-vertial-layout. - - Fix scaled font metrics and glyph metrics calculation for vertical - layout. Test case ft-text-vertial-layout passes now. - - src/cairo-ft-font.c | 130 ++++++++++++++++++++++++++++++++++++++------------- - 1 files changed, 97 insertions(+), 33 deletions(-) - -commit 6b5be506ed160675232bea31b17f458040f6b2d8 -Author: Jinghua Luo -Date: Thu Jun 8 03:33:38 2006 +0800 - - Add ft-text-vertical-layout test case for vertical layout. - - test/Makefile.am | 1 + - test/ft-text-vertical-layout-image-argb32-ref.png | Bin 0 -> 1145 bytes - test/ft-text-vertical-layout-image-rgb24-ref.png | Bin 0 -> 1059 bytes - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 0 -> 1018 bytes - test/ft-text-vertical-layout-pdf-rgb24-ref.png | Bin 0 -> 1037 bytes - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 0 -> 351 bytes - test/ft-text-vertical-layout-ps-rgb24-ref.png | Bin 0 -> 1086 bytes - test/ft-text-vertical-layout-svg-argb32-ref.png | Bin 0 -> 1106 bytes - test/ft-text-vertical-layout-svg-rgb24-ref.png | Bin 0 -> 1106 bytes - test/ft-text-vertical-layout.c | 131 +++++++++++++++++++++ - 10 files changed, 132 insertions(+), 0 deletions(-) - -commit bb66d15a7998740b6ce2525ab5d852fb2966f8f8 -Merge: 3594fd2... b7c7d2e... -Author: Jinghua Luo -Date: Thu Jun 8 02:38:17 2006 +0800 - - Merge branch 'master' of git+ssh://jinghua@git.cairographics.org/git/cairo - -commit 3594fd2d273398b10748c8ed03c7a9da7af377fa -Author: Jinghua Luo -Date: Thu Jun 8 02:35:42 2006 +0800 - - glitz: Don't hardcode content type when initializing cairo surface - since we can compute it from glitz format. - - src/cairo-glitz-surface.c | 23 ++++++++++++++++++++--- - 1 files changed, 20 insertions(+), 3 deletions(-) - -commit b7c7d2e57c2721c3a900694d5620b3f45f495233 -Author: Carl Worth -Date: Wed Jun 7 10:37:29 2006 -0700 - - Add new test get-group-target (currently failing with paginated). - - This test exercises the combination of cairo_get_group_target along - with cairo_surface_get_device_offset. Something funny is currently - going on with the surfaces based on the paginated surface. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/get-group-target-ref.png | Bin 0 -> 134 bytes - test/get-group-target.c | 80 +++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 83 insertions(+), 0 deletions(-) - -commit 53bf2f8d5dd82e9cff0960ebec536597bc7701e9 -Author: Carl Worth -Date: Wed Jun 7 10:29:33 2006 -0700 - - Remove debugging "prints" of images from test/device-offset.c - - test/device-offset.c | 8 +------- - 1 files changed, 1 insertions(+), 7 deletions(-) - -commit 32c0e85d45ee26c34ba1af0e4ba6ced044e469cc -Author: Zakharov Mikhail -Date: Wed Jun 7 18:32:16 2006 +0400 - - pixman: fix compilation on HP-UX 11.11 - - pixman/src/pixman.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3690eeb44cd86ac02eb21163d9a5e84784f6417d -Author: Carl Worth -Date: Wed Jun 7 02:59:51 2006 -0700 - - Change all instances of UINT16_MAX to INT16_MAX to avoid new bug. - - A recent renaming from CAIRO_MAXSHORT also changed the range of some - values from INT16_MAX to UINT16_MAX. The test suite shows one case - where this introduces a bug, (push/pop_group with SVG and RGB24 - surfaces). - - I haven't tracked the bug down, (presumably there's overflow of the - unsigned value at some point), but I'm now reverting this to avoid - triggering the bug. - - src/cairo-meta-surface.c | 4 ++-- - src/cairo-pattern.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 7f2cf378d595fa559401c76f051ca9b5e6809763 -Author: Carl Worth -Date: Wed Jun 7 01:17:53 2006 -0700 - - Fix MAX vs. MIN bug introduced with rename away from CAIRO_MINSHORT - - src/cairo-traps.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bf458c9c67120a2d175f18447dd710060f0ba014 -Author: Carl Worth -Date: Tue Jun 6 17:06:57 2006 -0700 - - win32: Add conditional definitions for INT16_{MIN,MAX} and UINT16_MAX now that we use them. - - src/cairo-wideint.h | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit c1855f17624c62e1f7451b3c673bca23a4575ff7 -Author: Carl Worth -Date: Tue Jun 6 16:59:59 2006 -0700 - - Remove CAIRO_{MIN,MAX}SHORT which did not distinguish signed vs. unsigned. - - Instead, use the standard INT16_{MIN,MAX} and UINT16_{MIN,MAX} as - appropriate. - - src/cairo-meta-surface.c | 4 ++-- - src/cairo-pattern.c | 8 ++++---- - src/cairo-scaled-font.c | 4 ++-- - src/cairo-traps.c | 4 ++-- - src/cairoint.h | 3 --- - 5 files changed, 10 insertions(+), 13 deletions(-) - -commit 746f66c3fce6de39ac9afa7be8bcf8f74c750e85 -Author: Carl Worth -Date: Tue Jun 6 16:54:03 2006 -0700 - - Fix bogus cairo_rectangle_fixed_t to be cairo_rectangle_int16_t. - - This rectangle has regular integer values, not fixed-point values. - So the old name was horribly wrong and misleading, (and yes I think - it was even I that had suggested it). - - src/cairo-analysis-surface.c | 2 +- - src/cairo-atsui-font.c | 2 +- - src/cairo-clip-private.h | 6 ++-- - src/cairo-clip.c | 6 ++-- - src/cairo-directfb-surface.c | 16 ++++++------ - src/cairo-glitz-surface.c | 16 ++++++------ - src/cairo-image-surface.c | 12 ++++---- - src/cairo-meta-surface.c | 2 +- - src/cairo-paginated-surface.c | 6 ++-- - src/cairo-pattern.c | 4 +- - src/cairo-pdf-surface.c | 4 +- - src/cairo-ps-surface.c | 4 +- - src/cairo-quartz-private.h | 2 +- - src/cairo-quartz-surface.c | 10 ++++---- - src/cairo-rectangle.c | 10 ++++---- - src/cairo-region.c | 8 +++--- - src/cairo-scaled-font.c | 2 +- - src/cairo-surface-fallback-private.h | 2 +- - src/cairo-surface-fallback.c | 42 ++++++++++++++++---------------- - src/cairo-surface.c | 36 ++++++++++++++-------------- - src/cairo-svg-surface.c | 2 +- - src/cairo-win32-private.h | 4 +- - src/cairo-win32-surface.c | 12 ++++---- - src/cairo-xcb-surface.c | 18 +++++++------- - src/cairo-xlib-surface.c | 20 +++++++------- - src/cairo.c | 2 +- - src/cairoint.h | 44 +++++++++++++++++----------------- - src/test-fallback-surface.c | 10 ++++---- - src/test-meta-surface.c | 4 +- - src/test-paginated-surface.c | 2 +- - 30 files changed, 155 insertions(+), 155 deletions(-) - -commit 5570bf0a9e99019ac24b2b856455afcf360c14fc -Author: Carl Worth -Date: Tue Jun 6 16:36:24 2006 -0700 - - CODING_STYLE: Fix misspellings. - - CODING_STYLE | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit a21a2e935d3a75b045ce5f7e917524052f018758 -Author: Carl Worth -Date: Tue Jun 6 16:28:15 2006 -0700 - - CODING_STYLE: Add notes on avoiding trailing whitespace. - - CODING_STYLE | 20 +++++++++++++++++--- - 1 files changed, 17 insertions(+), 3 deletions(-) - -commit ef10a0403a8a466199615e34a34df9ea860ef9c0 -Author: Carl Worth -Date: Tue Jun 6 15:50:33 2006 -0700 - - Remove initial, final, and duplicate blank lines. - - This patch was produced by running git-stripspace on all *.[ch] files - within cairo. Note that this script would have also created all the changes - from the previous commits to remove trailing whitespace. - - doc/tutorial/src/include/cairo-tutorial.h | 1 - - pixman/src/fbcompose.c | 15 --------------- - pixman/src/fbedge.c | 1 - - pixman/src/fbmmx.c | 7 ------- - pixman/src/fbpict.c | 4 ---- - pixman/src/fbpict.h | 1 - - pixman/src/icbltone.c | 1 - - pixman/src/icimage.c | 1 - - pixman/src/icimage.h | 1 - - pixman/src/icint.h | 11 ----------- - pixman/src/icpixels.c | 1 - - pixman/src/icrect.c | 2 -- - pixman/src/ictransform.c | 1 - - pixman/src/ictri.c | 1 - - pixman/src/icutil.c | 1 - - pixman/src/pixman-xserver-compat.h | 1 - - pixman/src/pixman.h | 10 ---------- - pixman/src/pixregion.c | 12 ------------ - pixman/src/pixregionint.h | 1 - - pixman/src/renderedge.c | 1 - - src/cairo-analysis-surface.c | 2 -- - src/cairo-array.c | 1 - - src/cairo-atsui-font.c | 6 ------ - src/cairo-base85-stream.c | 1 - - src/cairo-beos.h | 1 - - src/cairo-cache.c | 2 -- - src/cairo-clip.c | 2 -- - src/cairo-debug.c | 1 - - src/cairo-directfb-surface.c | 11 ----------- - src/cairo-directfb.h | 9 --------- - src/cairo-font-subset-private.h | 1 - - src/cairo-font-subset.c | 2 -- - src/cairo-ft-font.c | 1 - - src/cairo-glitz-surface.c | 1 - - src/cairo-matrix.c | 3 --- - src/cairo-output-stream.c | 2 -- - src/cairo-path-fill.c | 1 - - src/cairo-path.c | 1 - - src/cairo-pdf-surface.c | 2 -- - src/cairo-pdf-test.h | 1 - - src/cairo-png.c | 1 - - src/cairo-ps-surface.c | 1 - - src/cairo-quartz-surface.c | 1 - - src/cairo-quartz.h | 1 - - src/cairo-region.c | 1 - - src/cairo-scaled-font-subsets.c | 1 - - src/cairo-scaled-font.c | 1 - - src/cairo-slope.c | 4 ---- - src/cairo-spline.c | 1 - - src/cairo-stroke-style.c | 1 - - src/cairo-svg-surface.c | 1 - - src/cairo-traps.c | 1 - - src/cairo-unicode.c | 3 --- - src/cairo-win32-font.c | 3 --- - src/cairo-win32-surface.c | 2 -- - src/cairo-xcb-surface.c | 1 - - src/cairo-xlib-surface.c | 3 --- - src/cairo-xlib-test.h | 1 - - src/cairo-xlib-xrender.h | 1 - - src/cairo-xlib.h | 1 - - src/cairo.c | 3 --- - src/cairo.h | 3 --- - src/cairoint.h | 4 ---- - test/buffer-diff.c | 1 - - test/buffer-diff.h | 2 -- - test/cairo-test-directfb.c | 4 ---- - test/cairo-test.c | 2 -- - test/font-face-get-type.c | 4 ---- - test/push-group.c | 2 -- - test/read-png.c | 1 - - test/surface-finish-twice.c | 1 - - test/text-cache-crash.c | 1 - - test/xmalloc.c | 1 - - 73 files changed, 0 insertions(+), 184 deletions(-) - -commit 5278de09973c3e41028dc80a8862db01fc70cf11 -Author: Carl Worth -Date: Tue Jun 6 15:41:31 2006 -0700 - - Remove all remaining trailing whitespace. - - This patch was produced with the following (GNU) sed script: - - sed -i -r -e 's/[ \t]+$//' - - run on all *.[ch] files within cairo. - - Note that the above script would have also created all the changes - from the previous commits to remove trailing whitespace. - - doc/tutorial/src/include/cairo-tutorial-gtk.h | 6 +- - doc/tutorial/src/include/cairo-tutorial-pdf.h | 2 +- - doc/tutorial/src/include/cairo-tutorial-png.h | 2 +- - pixman/src/fbcompose.c | 2 +- - pixman/src/fbmmx.c | 8 +- - pixman/src/fbpict.c | 10 +- - pixman/src/icblt.c | 42 ++++---- - pixman/src/icbltone.c | 8 +- - pixman/src/icformat.c | 4 +- - pixman/src/icimage.c | 6 +- - pixman/src/icimage.h | 2 +- - pixman/src/icint.h | 8 +- - pixman/src/icrect.c | 16 ++-- - pixman/src/ictransform.c | 2 +- - pixman/src/ictrap.c | 4 +- - pixman/src/ictri.c | 4 +- - pixman/src/pixman-xserver-compat.h | 2 +- - pixman/src/pixman.h | 8 +- - pixman/src/pixregion.c | 22 ++-- - pixman/src/pixregionint.h | 8 +- - pixman/src/slim_internal.h | 2 +- - src/cairo-atsui-font.c | 18 ++-- - src/cairo-clip.c | 4 +- - src/cairo-directfb-surface.c | 60 ++++++------ - src/cairo-directfb.h | 4 +- - src/cairo-font-options.c | 4 +- - src/cairo-font-subset.c | 4 +- - src/cairo-font.c | 8 +- - src/cairo-ft-font.c | 34 ++++---- - src/cairo-gstate.c | 32 +++--- - src/cairo-hash.c | 6 +- - src/cairo-matrix.c | 28 +++--- - src/cairo-meta-surface.c | 4 +- - src/cairo-path.c | 2 +- - src/cairo-pattern.c | 4 +- - src/cairo-pen.c | 6 +- - src/cairo-polygon.c | 2 +- - src/cairo-ps-surface.c | 8 +- - src/cairo-quartz-surface.c | 6 +- - src/cairo-scaled-font-subsets.c | 2 +- - src/cairo-scaled-font.c | 34 ++++---- - src/cairo-slope.c | 2 +- - src/cairo-surface-fallback.c | 12 +- - src/cairo-surface.c | 8 +- - src/cairo-svg-surface.c | 126 ++++++++++++------------ - src/cairo-traps.c | 2 +- - src/cairo-unicode.c | 2 +- - src/cairo-wideint.c | 2 +- - src/cairo-win32-font.c | 30 +++--- - src/cairo-win32-surface.c | 12 +- - src/cairo-xcb-surface.c | 4 +- - src/cairo-xlib-surface.c | 32 +++--- - src/cairo.c | 18 ++-- - src/cairo.h | 14 ++-- - src/cairoint.h | 56 ++++++------ - test/cairo-test-directfb.c | 16 ++-- - test/cairo-test.c | 28 +++--- - test/cairo-test.h | 2 +- - test/imagediff.c | 2 +- - test/write-png.c | 2 +- - 60 files changed, 404 insertions(+), 404 deletions(-) - -commit 00592e075754594605fddfb2a702f3d2caa7c55c -Author: Carl Worth -Date: Tue Jun 6 15:38:58 2006 -0700 - - Remove trailing whitespace from lines with a single brace. - - This patch was produced with the following (GNU) sed script: - - sed -i -r -e '/^[ \t]*[{}][ \t]*/ s/[ \t]+$//' - - run on all *.[ch] files within cairo. - - pixman/src/fbmmx.c | 6 +++--- - pixman/src/icimage.c | 4 ++-- - src/cairo-atsui-font.c | 2 +- - src/cairo-clip.c | 2 +- - src/cairo-directfb-surface.c | 4 ++-- - src/cairo-font-options.c | 2 +- - src/cairo-font-subset.c | 2 +- - src/cairo-font.c | 2 +- - src/cairo-ft-font.c | 2 +- - src/cairo-hash.c | 4 ++-- - src/cairo-image-surface.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-png.c | 2 +- - src/cairo-rectangle.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-svg-surface.c | 4 ++-- - src/cairo-win32-surface.c | 4 ++-- - test/clip-operator.c | 2 +- - test/operator-clear.c | 4 ++-- - test/operator-source.c | 4 ++-- - test/unbounded-operator.c | 4 ++-- - 21 files changed, 31 insertions(+), 31 deletions(-) - -commit 4670366ede0b0ed1abf47f4595a64bc5cd3c19fc -Author: Carl Worth -Date: Tue Jun 6 15:35:48 2006 -0700 - - Remove trailing whitespace from lines that look like comments. - - This patch was produced with the following (GNU) sed script: - - sed -i -r -e '/^[ \t]*\/?\*/ s/[ \t]+$//' - - run on all *.[ch] files within cairo, (though I manually excluded - src/cairo-atsui-font.c which has a code line that appears as a comment - to this script). - - doc/tutorial/src/include/cairo-tutorial-xlib.h | 2 +- - pixman/src/fbmmx.c | 8 +- - pixman/src/fbmmx.h | 2 +- - pixman/src/icbltone.c | 10 +- - pixman/src/iccolor.c | 2 +- - pixman/src/icformat.c | 2 +- - pixman/src/icimage.c | 4 +- - pixman/src/icint.h | 8 +- - pixman/src/icrop.h | 2 +- - pixman/src/ictransform.c | 2 +- - pixman/src/pixregion.c | 12 +- - pixman/src/slim_internal.h | 2 +- - src/cairo-arc.c | 4 +- - src/cairo-array.c | 32 +++--- - src/cairo-base85-stream.c | 2 +- - src/cairo-cache.c | 30 ++-- - src/cairo-clip-private.h | 2 +- - src/cairo-debug.c | 2 +- - src/cairo-font-options.c | 46 ++++---- - src/cairo-font.c | 22 ++-- - src/cairo-ft-font.c | 22 ++-- - src/cairo-gstate.c | 14 +- - src/cairo-hash.c | 30 ++-- - src/cairo-hull.c | 2 +- - src/cairo-image-surface.c | 30 ++-- - src/cairo-matrix.c | 28 ++-- - src/cairo-meta-surface.c | 6 +- - src/cairo-output-stream.c | 2 +- - src/cairo-path-data.c | 14 +- - src/cairo-path-stroke.c | 6 +- - src/cairo-pattern.c | 60 +++++----- - src/cairo-pdf-surface.c | 2 +- - src/cairo-pen.c | 2 +- - src/cairo-png.c | 20 ++-- - src/cairo-ps-surface.c | 16 +- - src/cairo-region.c | 6 +- - src/cairo-scaled-font-subsets-private.h | 12 +- - src/cairo-scaled-font.c | 38 +++--- - src/cairo-surface-fallback.c | 6 +- - src/cairo-surface.c | 68 +++++----- - src/cairo-svg-surface.c | 18 ++-- - src/cairo-svg.h | 2 +- - src/cairo-traps.c | 8 +- - src/cairo-unicode.c | 10 +- - src/cairo-win32-font.c | 14 +- - src/cairo-win32-surface.c | 16 +- - src/cairo-xcb-surface.c | 20 ++-- - src/cairo-xlib-surface.c | 24 ++-- - src/cairo.c | 166 ++++++++++++------------ - src/cairo.h | 6 +- - src/cairoint.h | 8 +- - test/buffer-diff.c | 2 +- - test/buffer-diff.h | 2 +- - test/cairo-test.c | 4 +- - test/cairo-test.h | 2 +- - test/imagediff.c | 2 +- - test/rectangle-rounding-error.c | 8 +- - 57 files changed, 446 insertions(+), 446 deletions(-) - -commit 80b8deb1e4f9d0b856106031c6a7a629cca7552c -Author: Carl Worth -Date: Tue Jun 6 15:25:49 2006 -0700 - - Remove extraneous whitespace from "blank" lines. - - This patch was produced with the following (GNU) sed script: - - sed -i -r -e 's/^[ \t]+$//' - - run on all *.[ch] files within cairo. - - doc/tutorial/src/include/cairo-tutorial-gtk.h | 2 +- - doc/tutorial/src/include/cairo-tutorial-pdf.h | 2 +- - doc/tutorial/src/include/cairo-tutorial-png.h | 2 +- - doc/tutorial/src/lca.c | 6 +- - pixman/src/fbcompose.c | 6 +- - pixman/src/fbedge.c | 4 +- - pixman/src/fbedgeimp.h | 8 +- - pixman/src/fbmmx.c | 530 ++++++++++++------------ - pixman/src/fbpict.c | 8 +- - pixman/src/fbpict.h | 2 +- - pixman/src/fbtrap.c | 24 +- - pixman/src/icblt.c | 54 ++-- - pixman/src/icbltone.c | 38 +- - pixman/src/icformat.c | 24 +- - pixman/src/icimage.c | 18 +- - pixman/src/icimage.h | 6 +- - pixman/src/icint.h | 26 +- - pixman/src/icrect.c | 12 +- - pixman/src/icrop.h | 4 +- - pixman/src/icstipple.c | 6 +- - pixman/src/ictrap.c | 8 +- - pixman/src/ictri.c | 26 +- - pixman/src/icutil.c | 2 +- - pixman/src/pixregion.c | 32 +- - pixman/src/renderedge.c | 12 +- - src/cairo-analysis-surface.c | 2 +- - src/cairo-arc.c | 2 +- - src/cairo-atsui-font.c | 24 +- - src/cairo-base85-stream.c | 2 +- - src/cairo-clip.c | 26 +- - src/cairo-directfb-surface.c | 6 +- - src/cairo-font-options.c | 8 +- - src/cairo-font-subset.c | 6 +- - src/cairo-font.c | 10 +- - src/cairo-ft-font.c | 196 +++++----- - src/cairo-gstate-private.h | 2 +- - src/cairo-gstate.c | 80 ++-- - src/cairo-hash.c | 14 +- - src/cairo-image-surface.c | 28 +- - src/cairo-lzw.c | 2 +- - src/cairo-matrix.c | 84 ++-- - src/cairo-meta-surface.c | 10 +- - src/cairo-operator.c | 8 +- - src/cairo-output-stream.c | 14 +- - src/cairo-paginated-surface.c | 8 +- - src/cairo-path-bounds.c | 8 +- - src/cairo-path-fill.c | 2 +- - src/cairo-path-stroke.c | 16 +- - src/cairo-pattern.c | 44 +- - src/cairo-pen.c | 10 +- - src/cairo-png.c | 12 +- - src/cairo-ps-surface.c | 36 +- - src/cairo-quartz-surface.c | 16 +- - src/cairo-region.c | 2 +- - src/cairo-scaled-font-subsets.c | 2 +- - src/cairo-scaled-font.c | 90 ++-- - src/cairo-spline.c | 2 +- - src/cairo-surface-fallback.c | 82 ++-- - src/cairo-surface.c | 44 +- - src/cairo-svg-surface.c | 100 +++--- - src/cairo-traps.c | 38 +- - src/cairo-unicode.c | 30 +- - src/cairo-wideint.c | 16 +- - src/cairo-wideint.h | 2 +- - src/cairo-win32-font.c | 106 +++--- - src/cairo-win32-private.h | 6 +- - src/cairo-win32-surface.c | 96 +++--- - src/cairo-xcb-surface.c | 36 +- - src/cairo-xlib-private.h | 4 +- - src/cairo-xlib-screen.c | 32 +- - src/cairo-xlib-surface.c | 154 ++++---- - src/cairo.c | 18 +- - src/cairo.h | 8 +- - src/cairoint.h | 34 +- - src/test-fallback-surface.c | 4 +- - src/test-meta-surface.c | 2 +- - test/cairo-test.c | 24 +- - test/caps-joins.c | 2 +- - test/clip-all.c | 2 +- - test/clip-nesting.c | 4 +- - test/clip-operator.c | 12 +- - test/dash-offset-negative.c | 8 +- - test/fill-and-stroke.c | 2 +- - test/filter-nearest-offset.c | 2 +- - test/font-face-get-type.c | 2 +- - test/get-and-set.c | 2 +- - test/gradient-alpha.c | 2 +- - test/linear-gradient.c | 8 +- - test/mask.c | 8 +- - test/operator-clear.c | 12 +- - test/operator-source.c | 14 +- - test/ps-features.c | 2 +- - test/rectangle-rounding-error.c | 2 +- - test/rel-path.c | 4 +- - test/self-copy.c | 6 +- - test/source-clip.c | 2 +- - test/surface-pattern.c | 2 +- - test/svg-clip.c | 2 +- - test/text-pattern.c | 10 +- - test/text-rotate.c | 2 +- - test/transforms.c | 2 +- - test/trap-clip.c | 4 +- - test/unbounded-operator.c | 12 +- - test/user-data.c | 2 +- - test/write-png.c | 2 +- - test/xlib-surface.c | 18 +- - 106 files changed, 1311 insertions(+), 1311 deletions(-) - -commit 28d47d332aafa81bcbc669603357298cb0a14322 -Author: Carl Worth -Date: Mon Jun 5 14:25:13 2006 -0700 - - Move rectangle functions to new cairo-rectangle.c - - src/Makefile.am | 1 + - src/cairo-gstate.c | 46 -------------------------- - src/cairo-rectangle.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 86 insertions(+), 46 deletions(-) - -commit 3d9dc96d186c9093da24c7bbf36614f3d8df1758 -Author: Carl Worth -Date: Thu May 25 02:28:09 2006 -0700 - - New API: Add cairo_image_surface_get_{data,format,stride} - - src/cairo-image-surface.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 9 ++++++ - 2 files changed, 78 insertions(+), 0 deletions(-) - -commit 0c49666231e42a3f968ad46a0aa58fc7b854b258 -Author: Jeff Muizelaar -Date: Sat May 27 02:23:09 2006 -0400 - - Only destroy scaled glyphs if they are not in the cache. - - Previously, when scaled_glyph_init failed we would destroy the scaled glyph in - CLEANUP. However, this causes trouble later because there is still a reference - to the glyph in the cache. This remaining reference causes a number of bad things, - including a double destruction when the cache is destroyed. - - src/cairo-scaled-font.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit bafdded8ee43632e5f60307e53f0489be0afc3c4 -Author: Kristian Høgsberg -Date: Sun May 28 13:25:57 2006 -0400 - - Remove cairo_public from _cairo_lzw_compress() definition. - - src/cairo-lzw.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 84c6f879631b3d3ca63c3fd99b9cb68b111d283f -Author: Kristian Høgsberg -Date: Sun May 28 13:38:50 2006 -0400 - - Clarify licensing of float formatting code. - - src/cairo-output-stream.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 79c86b04a7848830998e1a5344c6a9ecf9113789 -Author: Christian Biesinger -Date: Sun May 28 16:50:54 2006 +0200 - - Add "html" Makefile target to run make-html.pl - - test/Makefile.am | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 508d0955fb3a851919233f27b5fe9408c85fa053 -Author: Christian Biesinger -Date: Thu May 25 21:54:54 2006 +0200 - - Distribute make-html.pl - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f072d4ed66f78bd4fba4fb44e30f3ddd3f10fc33 -Author: Christian Biesinger -Date: Thu May 25 21:21:31 2006 +0200 - - Add missing reference images to EXTRA_DIST - - test/Makefile.am | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 0b63baba6e8c3f2f6da52d4476ec595ff87dfc93 -Author: Christian Biesinger -Date: Thu May 25 17:29:01 2006 +0200 - - Make BeOS compile again - - ..by passing the cairo_content_t to _cairo_surface_init - - src/cairo-beos-surface.cpp | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 22232be7592dadc22fef614aefee9c9398a8510c -Author: Carl Worth -Date: Wed May 24 17:24:52 2006 -0700 - - Note the changed semantics of cairo_surface_set_device_offset - - Specifically, device offsets now affect using the offset surface in - a source pattern as well as drawing to the surface. This behavior - os also verified with a new test case: test/device-offset.c - - src/cairo-surface.c | 4 +- - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/device-offset-ref.png | Bin 0 -> 137 bytes - test/device-offset-rgb24-ref.png | Bin 0 -> 130 bytes - test/device-offset.c | 93 ++++++++++++++++++++++++++++++++++++++ - 6 files changed, 97 insertions(+), 2 deletions(-) - -commit d0dd3b822e98358e88f8c9261ef633331548ccfd -Author: Carl Worth -Date: Wed May 24 17:05:51 2006 -0700 - - New API: Add new function cairo_surface_get_content - - This assumes that the directfb, glitz, and quartz backends - always create surfaces with content of COLOR_ALPHA which might - be totally wrong. - - src/cairo-analysis-surface.c | 5 ++- - src/cairo-directfb-surface.c | 4 +- - src/cairo-glitz-surface.c | 4 +- - src/cairo-image-surface.c | 3 +- - src/cairo-meta-surface.c | 6 ++- - src/cairo-paginated-surface.c | 3 +- - src/cairo-pdf-surface.c | 3 +- - src/cairo-ps-surface.c | 3 +- - src/cairo-quartz-surface.c | 4 +- - src/cairo-surface.c | 22 +++++++++- - src/cairo-svg-surface.c | 3 +- - src/cairo-win32-surface.c | 6 ++- - src/cairo-xcb-surface.c | 29 ++++++++++++- - src/cairo-xlib-surface.c | 93 ++++++++++++++++++++++------------------ - src/cairo.h | 3 + - src/cairoint.h | 5 ++- - src/test-fallback-surface.c | 3 +- - src/test-meta-surface.c | 3 +- - src/test-paginated-surface.c | 3 +- - test/cairo-test.c | 18 ++++++++ - 20 files changed, 162 insertions(+), 61 deletions(-) - -commit 0796845ae6923f3ccef5df231b7d9a2c145063fd -Author: Carl Worth -Date: Wed May 24 14:03:49 2006 -0700 - - Add new fallback-resolution test for bug in cairo_pdf_surface_set_dpi - - test/.gitignore | 2 + - test/Makefile.am | 1 + - test/fallback-resolution.c | 84 ++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 87 insertions(+), 0 deletions(-) - -commit 11b2481862e15a2cdedae347eab4347f7b63f715 -Author: Carl Worth -Date: Wed May 24 14:02:30 2006 -0700 - - PDF: Add new, private test function: cairo_pdf_test_force_fallbacks - - doc/public/Makefile.am | 1 + - src/Makefile.am | 2 +- - src/cairo-pdf-surface.c | 26 +++++++++++++++++++++- - src/cairo-pdf-test.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 82 insertions(+), 2 deletions(-) - -commit 65b9217cadcd09f1ed18aa0da38d0b72b6438780 -Author: Carl Worth -Date: Wed May 24 11:37:05 2006 -0700 - - cairo-xlib-test: Rename cairo_test_xlib function prefix to cairo_xlib_test - - src/cairo-xlib-surface.c | 4 ++-- - src/cairo-xlib-test.h | 2 +- - test/xlib-surface.c | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -commit 5acce60291fe0b61a67ff1e803b6226db576c233 -Author: Carl Worth -Date: Wed May 24 10:35:24 2006 -0700 - - Typo fixes - - test/pdf-features.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit a5a72676bd34ac6bfdf5e0bcfd3fb21fcbada673 -Author: Carl Worth -Date: Tue May 23 13:41:44 2006 -0700 - - ROADMAP: Note that the cairo_set_line_width issue is resolved - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e4476dda49b709875b8204567168752c15927480 -Author: Carl Worth -Date: Tue May 23 13:41:00 2006 -0700 - - PDF: Move dash operator before path construction operators. - - I don't recall anything about this in the PDF reference, (though I - also didn't look specifically for it), but without this acroread - is quite unhappy with cairo's PDF output when it includes dashing. - - src/cairo-pdf-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 59885c6a122f593b417cb47dbd676eeac0cd8f69 -Author: Carl Worth -Date: Tue May 23 12:08:20 2006 -0700 - - Clarify the documentation for cairo_set_dash - - Note that dash length units are evaluated in the user space - at the time of the stroke operation, (not the user space at - the time of cairo_set_dash). - - src/cairo.c | 10 +++++++--- - 1 files changed, 7 insertions(+), 3 deletions(-) - -commit 68b41cfd06dd6c798f8045ba1580342669ef5539 -Author: Carl Worth -Date: Tue May 23 11:23:27 2006 -0700 - - PDF: Share path callbacks for fill and stroke. - - src/cairo-pdf-surface.c | 112 +++++++++++++++-------------------------------- - 1 files changed, 36 insertions(+), 76 deletions(-) - -commit 7e5bef2439be93e46583c0922f68ad770179fa1e -Author: Carl Worth -Date: Tue May 23 11:17:01 2006 -0700 - - PDF: Rename pdf_stroke_t to pdf_path_into_t for future sharing with fill - - src/cairo-pdf-surface.c | 38 +++++++++++++++++++------------------- - 1 files changed, 19 insertions(+), 19 deletions(-) - -commit 1b1b59a4a9cdeab0f3c360c09721aff23154015f -Author: Carl Worth -Date: Tue May 23 11:12:09 2006 -0700 - - New test: dash-scale - - Tests interactions of cairo_set_dash and cairo_scale, (in particular with a - non-uniformly scaled pen). - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/dash-scale-ps-argb32-ref.png | Bin 0 -> 2950 bytes - test/dash-scale-ref.png | Bin 0 -> 7791 bytes - test/dash-scale.c | 125 +++++++++++++++++++++++++++++++++++++ - 5 files changed, 128 insertions(+), 0 deletions(-) - -commit 0755a619a101b89f5c5439f12e0544ab5ecac997 -Author: Carl Worth -Date: Tue May 23 10:54:54 2006 -0700 - - SVG: Fix for line-width-scale - - Use the same approach as the PDF backend: emit the pen matrix as the - SVG transform for the stroke, and compensate by first transforming all path - coordinates by the ctm_inverse. - - src/cairo-svg-surface.c | 63 ++++++++++++++++++++++++++++++---------------- - 1 files changed, 41 insertions(+), 22 deletions(-) - -commit b1231e2ef349af1c0b130880603a924ff67b2967 -Author: Carl Worth -Date: Tue May 23 10:45:18 2006 -0700 - - Codify 1.0 behavior of cairo_set_line_width as a feature, not a bug. - - Clarify the documentation of cairo_set_line_width to indicate that the - value will be interpreted within the user space at the time of the - stroke. - - Also adjust the comments in test/line-width-scale as well as the - reference images for that test to match. - - src/cairo.c | 25 +++++++++++++++++++------ - test/line-width-scale-ps-argb32-ref.png | Bin 1470 -> 1599 bytes - test/line-width-scale-ref.png | Bin 4884 -> 6445 bytes - test/line-width-scale.c | 28 +++++++++++++++------------- - 4 files changed, 34 insertions(+), 19 deletions(-) - -commit 0a1ec91977ef05f04e2cc52895fd98a903f1c8eb -Author: Carl Worth -Date: Mon May 22 09:22:42 2006 -0700 - - Move prototype of cairo_debug_reset_static_data from uninstalled cairo-debug.h to cairo.h - - src/Makefile.am | 4 +--- - src/cairo-debug.h | 48 ------------------------------------------------ - src/cairo.h | 4 ++++ - src/cairoint.h | 1 - - test/cairo-test.h | 1 - - 5 files changed, 5 insertions(+), 53 deletions(-) - -commit 27e9e3cecd354475047ac268d5ef52eba3f041f1 -Author: Kristian Høgsberg -Date: Fri May 19 02:17:35 2006 -0400 - - Handle seac charstring commands correctly. - - - Include PS standard encoding table so we can map from standard - encoding indices to glyph names and then make sure to include the - glyph of that name. - - Cut out verbose debugging code. - - Fix a couple of bugs in glyph name to index lookup code. - - src/cairo-type1-subset.c | 218 +++++++++++++++++++--------------------------- - 1 files changed, 90 insertions(+), 128 deletions(-) - -commit 89384ae12474c257fb47e4231229235207ab8f85 -Author: Carl Worth -Date: Thu May 18 21:48:38 2006 -0700 - - PDF: Squelch a couple of bogus "may be used uninitialized" warnings. - - src/cairo-pdf-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit e2713057f80c412a3ba947f9c7af2f18dd26105e -Author: Vladimir Vukicevic -Date: Wed Mar 15 14:10:59 2006 -0800 - - Define kCGBitmapByteOrder32Host for when the SDK doesn't define it - (cherry picked from bd9b5d29e39f424e912184dcd0dc2610637d5fdf commit) - - src/cairo-atsui-font.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 5bdcfd14136d02ccaec275b2bcd5fb2744352f87 -Author: Vladimir Vukicevic -Date: Thu Mar 16 14:14:35 2006 -0800 - - Whitespace fix - (cherry picked from 0bb567a2f1807d83508e2d7598a8bd8f4d94208d commit) - - src/cairo-win32-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit e8069da97bc5c09d9bac91cf401d9e3c3ba91607 -Author: Vladimir Vukicevic -Date: Thu Mar 16 17:00:37 2006 -0800 - - CAIRO_SCALED_FONT_TYPE_* -> CAIRO_FONT_TYPE_* - - Some of these were missed when CAIRO_SCALED_FONT_TYPE_* was renamed. - (cherry picked from 33dba4a690a5e4ec13ed294307b89cceac1ca696 commit) - - src/cairo-win32-surface.c | 2 +- - src/cairo.h | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit fb7ae2a28e46895f764754c6961cb99989be7a04 -Author: Kristian Høgsberg -Date: Thu May 18 21:01:20 2006 -0400 - - Remember to call cairo_type1_font_subset_destroy(). - - src/cairo-type1-subset.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 1d2b60454fb1e7a1e4b7614029f02dfb0e33acb3 -Author: Kristian Høgsberg -Date: Thu May 18 20:50:36 2006 -0400 - - Consolidate a few arrays into a array of structs. - - src/cairo-type1-subset.c | 76 ++++++++++++++++++++++----------------------- - 1 files changed, 37 insertions(+), 39 deletions(-) - -commit 9b84b3da58a62b25c129626f918713036e41cc88 -Author: Vladimir Vukicevic -Date: Fri Mar 17 00:06:21 2006 -0800 - - [win32] GDI is nearly always faster than pixman; use it whenever possible - - Remove local image check from fill_rectangles and fix check for whether - we can AlphaBlend or not (ARGB->ARGB AlphaBlend works fine) - (cherry picked from f099783b3e7f895a59d4d4a67a8534f1d21d44e1 commit) - - src/cairo-win32-surface.c | 22 +++++++++++++--------- - 1 files changed, 13 insertions(+), 9 deletions(-) - -commit 2a89526edf1f42dfc3e8592b82a51b9970015bda -Author: Vladimir Vukicevic -Date: Thu Mar 16 14:04:49 2006 -0800 - - [win32] Add GdiFlush() calls after DIB creation, as per MSDN docs - - Also fixes some spacing/tab issues - (cherry picked from 123ca7c9f9d8984be5ed4fb42a2897508e8ff44a commit) - - src/cairo-win32-surface.c | 38 +++++++++++++++++++++----------------- - 1 files changed, 21 insertions(+), 17 deletions(-) - -commit a9c42e8fc264e3d07e4888d5965eea130c1e9d0a -Author: Stuart Parmenter -Date: Wed Mar 15 14:20:35 2006 -0800 - - [win32] fix win32_show_glyphs glyph offsets - (cherry picked from 947a4a1bc6a0a0ee78c44b71fef32c924ebc9397 commit) - - src/cairo-win32-surface.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit 59a45f1c4a914c9640bbea37c72b1ec222f56ff3 -Author: Stuart Parmenter -Date: Fri Mar 10 12:25:07 2006 -0800 - - [win32] implement win32 show_glyphs - (cherry picked from 9c7d0cbde415d02b6e8298a02b3b62cf4513a59e commit) - - src/cairo-win32-font.c | 14 ++--- - src/cairo-win32-private.h | 1 + - src/cairo-win32-surface.c | 115 ++++++++++++++++++++++++++++++++++++++++++++- - 3 files changed, 121 insertions(+), 9 deletions(-) - -commit a10bbecaf8f122726c3e5b55b07bcd7882f6f319 -Author: Stuart Parmenter -Date: Fri Mar 10 12:12:36 2006 -0800 - - [win32] Allow for creating a font from a HFONT - (cherry picked from 677f6c84f9beae3afd375663fed0a440007ebca2 commit) - - src/cairo-win32-font.c | 35 +++++++++++++++++++++++++++++++---- - src/cairo-win32.h | 3 +++ - 2 files changed, 34 insertions(+), 4 deletions(-) - -commit 244c111fca042b15d6718295ca2f7c7843fa7ab5 -Author: Vladimir Vukicevic -Date: Fri Mar 10 11:56:27 2006 -0800 - - [win32] Add SHADEBLENDCAPS and SB_NONE definitions for older SDKs - (cherry picked from 7a68b7d035b1c63076d6fa6c54d40944459d206d commit) - - src/cairo-win32-surface.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 92a015ff8ec5c11aac6d9c0c6702fa4873c04381 -Author: Vladimir Vukicevic -Date: Mon Mar 27 13:49:58 2006 -0800 - - [xlib] only do glyph extents computation if non-solid source. - - xlib_show_glyphs was always calculating the glyph extents, even when it - didn't need to; this only does it when necessary. - - Also adds an implementation of surface_flush() for xlib that just calls - XSync. - (cherry picked from 8770ac5b5cdba8007c4c6a6a980e6e06acf6aeb6 commit) - - src/cairo-xlib-surface.c | 49 +++++++++++++++++++++++++++++---------------- - 1 files changed, 31 insertions(+), 18 deletions(-) - -commit 108431414faa8792659616bae35584b8fced3b21 -Author: Vladimir Vukicevic -Date: Wed Mar 8 21:08:57 2006 -0800 - - [xlib] implement _cairo_xlib_surface_show_glyphs - - Avoid using the fallback paths as much as possible; implement real - show_glyphs, falling back for OPERATOR_SOURCE (due to Render bug), and all - unbounded operators (let the fallback code deal with fixup). Also fall - back if we have a fallback mask clip set. - - (cherry picked from 3225a4ec820fd4051dd893ffc4258b182bd62dca commit) - - src/cairo-xlib-surface.c | 276 +++++++++++++++++++++++++--------------------- - 1 files changed, 152 insertions(+), 124 deletions(-) - -commit 6d53687058dc35bb1abd1f9552f43fccad61474f -Author: Kristian Høgsberg -Date: Thu May 18 20:03:53 2006 -0400 - - Look for /-| or /RD tokens to determine the charstring delimiter tokens. - - src/cairo-type1-subset.c | 35 +++++++++++++++++++++++++++++------ - 1 files changed, 29 insertions(+), 6 deletions(-) - -commit 3487191b2230571323201ed045263433e77e5345 -Author: Carl Worth -Date: Thu May 18 15:36:43 2006 -0700 - - xlib: Style cleanups for _cairo_xlib_surface_create_similar - - Including style cleanups for _xrender_format_matches_content. - - There's even a bug fix here as well. Previously, we would miss compatibility - if the existing xlib surface had a NULL visual, (even if it had a compatible - xrender_format). We now catch this case, and don't bother even trying to - store a visual into the resulting surface. - - src/cairo-xlib-surface.c | 97 +++++++++++++++++++++++++--------------------- - 1 files changed, 53 insertions(+), 44 deletions(-) - -commit a96bd2b4f9ab399eee5198c0d27a6cd67798931b -Author: Carl Worth -Date: Thu May 18 15:20:25 2006 -0700 - - xlib: Rename surface->format to surface->xrender_format to avoid confusion - - With both XRenderPictFormat* and cairo_format_t values being manipulated in the same - functions, this really needed to be done. - - src/cairo-xlib-surface.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) - -commit ea05e027111d5f336b7e3f2170f929b0b1e37692 -Author: Robert O'Callahan -Date: Fri May 19 08:26:08 2006 +1200 - - [xlib] Have create_similar try harder to create the right surface - - I recently discovered that cairo_create_similar on a 16-bit xlib surface - creates a surface backed by a 24-bit pixmap. This results in absymal - performance --- I can actually watch a copy from the similar to the - original move down the screen, on my dual Xeon, NVidia vendor driver - machine. It also means xlib-based code like GTK themes can't render to - the surface because it doesn't match the screen depth. - - The attached patch makes _cairo_xlib_surface_create_similar match the - characteristics of the input surface as closely as I know how, and fixes - my issues. - - src/cairo-xlib-surface.c | 54 +++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 51 insertions(+), 3 deletions(-) - -commit d09d95a3231d9137c00da72e5bf56fe246671e15 -Author: Kristian Høgsberg -Date: Thu May 18 15:10:05 2006 -0400 - - Track glyph subset indices and use them in the output. - - src/cairo-type1-subset.c | 50 +++++++++++++++++++++++---------------------- - 1 files changed, 26 insertions(+), 24 deletions(-) - -commit 5f55ae7d91174d29f83b2a15e4def0f6baea7344 -Author: Kristian Høgsberg -Date: Thu May 18 13:57:03 2006 -0400 - - Make ps surface use type1 subset code. - - - Add _cairo_ps_surface_emit_type1_font_subset() which just dumps the - type1 subset into the ps document. - - Add a 'name' parameter to _cairo_type1_subset_init() so it will be - defined under the right name in the ps document. - - Quiet down debug output from type1 subset code. - - Reenable code to output custom /Encoding table. - - src/cairo-pdf-surface.c | 5 +++- - src/cairo-ps-surface.c | 34 +++++++++++++++++++++++++++++++ - src/cairo-scaled-font-subsets-private.h | 1 + - src/cairo-type1-subset.c | 26 ++++++++++++++++++----- - 4 files changed, 59 insertions(+), 7 deletions(-) - -commit fe58e7a81fe9f787ef262615bc1802243770a432 -Author: Kristian Høgsberg -Date: Thu May 18 13:35:57 2006 -0400 - - Only use the word wrap stream when emitting paths. - - This patch also factors the word wrap stream setup and teardown - and the call to _cairo_path_fixed_interpret() out into a new function, - _cairo_ps_surface_emit_path(). - - src/cairo-ps-surface.c | 287 +++++++++++++++++++++++------------------------ - 1 files changed, 140 insertions(+), 147 deletions(-) - -commit 2fafbac390f13c8c47464defc8c30e705be98bbb -Author: Kristian Høgsberg -Date: Thu May 18 02:24:02 2006 -0400 - - Use RD and ND for delimiting glyph data instead of -| and |-. - - We probably should figure out from the private dictionary which of the two - pairs the font defines and uses, but I don't actually have fonts that - use -| and |-, so for now for flip the default. - - src/cairo-type1-subset.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 466d3da4ef2267287095e67342da8eb360198542 -Author: Kristian Høgsberg -Date: Wed May 17 17:17:02 2006 -0400 - - Add code to emit type1 dicts to the pdf backend. - - src/cairo-pdf-surface.c | 110 +++++++++++++++++++++++++++++++ - src/cairo-scaled-font-subsets-private.h | 2 + - src/cairo-type1-subset.c | 12 ++- - 3 files changed, 120 insertions(+), 4 deletions(-) - -commit c36de5b7c5173639712074d0f98365b107707ae7 -Author: Kristian Høgsberg -Date: Wed May 17 12:05:16 2006 -0400 - - Pull in type1 subset code from the cvs repo it was sitting in. - - src/Makefile.am | 1 + - src/cairo-font-subset.c | 1 - - src/cairo-scaled-font-subsets-private.h | 41 ++ - src/cairo-type1-subset.c | 1035 +++++++++++++++++++++++++++++++ - 4 files changed, 1077 insertions(+), 1 deletions(-) - -commit 127fab4695ef849364e755e10c2b960add78782b -Author: Kristian Høgsberg -Date: Thu May 18 02:12:06 2006 -0400 - - Remember to call _cairo_truetype_subset_fini() after outputting subset. - - src/cairo-ps-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit b16c29ff0c38b8fa8e5753770bb93ad9ff084579 -Author: Kristian Høgsberg -Date: Wed May 17 01:30:43 2006 -0400 - - Set libcairo_font_subset_sources for ps, pdf, and svg backends. - - Backends that use the font subsetting code should add the font subsetting - sources to the build. This is dont by setting libcairo_font_subset_sources, - in the conditional section for each backend. If any one is enabled, the - sources will be added to the build. - - src/Makefile.am | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit d42b2c7a89451e95e6e9ec6bc439f06855c66802 -Author: Kristian Høgsberg -Date: Tue May 16 23:56:38 2006 -0400 - - Remember to destroy cairo_pdf_ft_font_t once we've generated the subset. - - Also, remove cairo_private from function definitions. - - src/cairo-font-subset.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit f3209660c33bc128c58ec487c51440271f30a923 -Author: Kristian Høgsberg -Date: Tue May 16 23:24:09 2006 -0400 - - Print out ps comment in the truetype emit code and update type3 ps comment. - - src/cairo-ps-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 3975d7f8a26b53d4d2c7d587fbcfe9ed6ddf78d8 -Author: Kristian Høgsberg -Date: Tue May 16 23:20:08 2006 -0400 - - Add support for truetype subset to ps backend. - - Same story as for the pdf backend: try to output a truetype subset if - possible, otherwise fall back to a type3 font. Ajdust text output code - to scale font accordingly and scale type3 fonts to unity. - - src/cairo-ps-surface.c | 113 ++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 105 insertions(+), 8 deletions(-) - -commit 2c6e799ee64cfc00145ecbe0d0b93256c237dcf4 -Author: Kristian Høgsberg -Date: Tue May 16 22:53:05 2006 -0400 - - Switch to using Tm for text positioning and scale type3 fonts to unit size. - - This change changes the text output code to use the Tm operator for - positioning the glyphs. This allows us to set the scale matrix from - the cairo_scaled_font_t so truetype glyphs get transformed correctly. - However, we now need to scale type3 glyph to unity to compensate. - Longer term we should just only output one unit sized type3 subset for - a cairo_font_face_t and use that for all cairo_scaled_font_t's coming from - that font face. - - Also, this fixes a num_glyphs initialization bug. - - src/cairo-font-subset.c | 2 +- - src/cairo-pdf-surface.c | 25 ++++++++++++++++++++++--- - 2 files changed, 23 insertions(+), 4 deletions(-) - -commit e846dca44e8c60bf45ab84d7adaf7eefe3088f43 -Author: Kristian Høgsberg -Date: Tue May 16 21:41:07 2006 -0400 - - Hook _cairo_truetype_subset_init() up to existing truetype subset code. - - This is a minimal first change to get things working. The truetype - subset code still needs to be renamed and moved around a bit. - - src/cairo-font-subset.c | 151 ++++++++++++++++++++++++++++------------------- - 1 files changed, 91 insertions(+), 60 deletions(-) - -commit f4f11eba5b6daa6f82b967dcb21715b7f16d9719 -Author: Kristian Høgsberg -Date: Tue May 16 19:01:15 2006 -0400 - - Output pdf dicts for truetype subset fonts. - - src/cairo-font-subset.c | 21 +++++++ - src/cairo-pdf-surface.c | 97 ++++++++++++++++++++++++++++++- - src/cairo-scaled-font-subsets-private.h | 41 +++++++++++++ - 3 files changed, 158 insertions(+), 1 deletions(-) - -commit 13a05830f5e524cd69b75796888c7a99ba9ce106 -Author: Kristian Høgsberg -Date: Tue May 16 16:42:44 2006 -0400 - - Update pdf font emit code to try to emit a truetype subset before type3. - - src/cairo-pdf-surface.c | 34 +++++++++++++++++++++++++++++----- - 1 files changed, 29 insertions(+), 5 deletions(-) - -commit 05b1d2f9c5b827d52f3eb837c6c591c877dde419 -Author: Carl Worth -Date: Tue May 16 01:04:16 2006 -0700 - - PDF: Fix broken per-page sizes in PDF output. - - This was first broken in: - - PDF: Fold (unused) cairo_pdf_document_t into cairo_pdf_surface_t - f500cef19f049a4a0ed296172618db2f26794932 - - Thanks, git bisect! - - src/cairo-pdf-surface.c | 17 +++++------------ - 1 files changed, 5 insertions(+), 12 deletions(-) - -commit d70ade00fb67c6f77d23653481079996ec1e1292 -Merge: 41d4354... c7ef4cb... -Author: Kristian Høgsberg -Date: Mon May 15 17:53:56 2006 -0400 - - Merge branch 'master' of git://git.freedesktop.org/git/cairo - -commit 41d435418c414405035eb911239dc6580edabd6b -Author: Kristian Høgsberg -Date: Mon May 15 17:36:12 2006 -0400 - - Documentation fixes (cairo_font_create -> cairo_scaled_font_create). - - src/cairo-ft-font.c | 18 ++++++++++-------- - 1 files changed, 10 insertions(+), 8 deletions(-) - -commit c7ef4cb3f3b14543842bf538dcb216d1ea51d89f -Author: Carl Worth -Date: Mon May 15 10:25:44 2006 -0700 - - ROADMAP: Note that PDF type 3 font support is done - - ROADMAP | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit 621ebc4726c075c183028818af1944f67a60b7ce -Author: Carl Worth -Date: Mon May 15 10:16:06 2006 -0700 - - pixman: Remove unused code to quiet compiler warnings - - pixman/src/fbpict.c | 14 ---------- - pixman/src/icimage.c | 66 -------------------------------------------------- - 2 files changed, 0 insertions(+), 80 deletions(-) - -commit 636cbe5a191cf8065facfbe45f32620cea2009a5 -Author: Carl Worth -Date: Mon May 15 10:14:39 2006 -0700 - - pixman: Add default case to quiet compiler warning - - pixman/src/fbpict.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 2e4c8924ad1c27d807e86a155c6582fd506c66c0 -Author: Carl Worth -Date: Mon May 15 10:07:57 2006 -0700 - - pixman: Fix build to enable warnings again - - configure.in | 2 ++ - pixman/src/Makefile.am | 4 ++-- - 2 files changed, 4 insertions(+), 2 deletions(-) - -commit bf2ab0de927dae4a1dd67a0cbacefabaf0e4255b -Author: Carl Worth -Date: Mon May 15 10:04:53 2006 -0700 - - PDF: Add Type3 font support to PDF output. - - This uses the recently added cairo-scaled-font-subsets interface in a - style very similar to what the PS surface does. - - src/cairo-pdf-surface.c | 242 ++++++++++++++++++++++++++++-- - test/select-font-face-pdf-argb32-ref.png | Bin 2781 -> 2782 bytes - 2 files changed, 231 insertions(+), 11 deletions(-) - -commit 6f417fed51672ccca305b7fcc8b1bc3af7609534 -Author: Carl Worth -Date: Mon May 15 10:00:18 2006 -0700 - - PDF: Move Resources dictionary up from Page objects to Pages object. - - This allows for more sharing of resource objects. It also avoids some - confusion in trying to set independent resources at a global and a - per-page level, (which doesn't work since the inheritance only works - for an entire resources object---it can only be overriden in its - entirety, not for subsets of the resources). - - src/cairo-pdf-surface.c | 118 +++++++++++++++++++++++------------------------ - 1 files changed, 58 insertions(+), 60 deletions(-) - -commit 049100fb870bee89b28bd14a9625add33f38a2bd -Author: Carl Worth -Date: Mon May 15 09:52:57 2006 -0700 - - PDF: Use consistent style for typedef struct and macro naming. - - src/cairo-pdf-surface.c | 22 +++++++++------------- - 1 files changed, 9 insertions(+), 13 deletions(-) - -commit 45d0540c3375bfdb09973a809c08b5dec1ae2219 -Author: Carl Worth -Date: Mon May 15 09:41:36 2006 -0700 - - PS: Remove the fallback case from _cairo_ps_surface_show_glyphs - - The only expected errors that would lead to this fallback are serious - problems such as out of memory. There's no reason to go to heroic - efforts to draw as much as possible in face of an error like that. - - Prefer simpler code instead. - - src/cairo-ps-surface.c | 26 ++++++-------------------- - 1 files changed, 6 insertions(+), 20 deletions(-) - -commit cb32b41a4e24df612dc0cabbe1e22098584759e9 -Author: Carl Worth -Date: Mon May 15 09:39:16 2006 -0700 - - PS: Fix arguments to setcachedevice - - Since we are only ever displaying a single glyph at a time we don't - care about the width values passed to setcachedevice at all---we only - care about the bounding box. - - That's what the code was trying to do before, but the arguments were - misaligned and we were instead passing bounding-box values for the - widths and hard-coding half of the bounding-box values as 0. - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e2c03d51daa60bf18b66ace148e6f8df7c454e2c -Author: Carl Worth -Date: Mon May 15 09:28:32 2006 -0700 - - Change scaled_font_subsets_callback to have return type of void. - - The return of status from this callback was misleading. The function - actually calling the callback was also a hash table callback function, - which itself is void---so any status value returned was being lost. - - Instead, we now stash any errors that occur during the fallback into - surface->status. - - src/cairo-ps-surface.c | 30 +++++++++++++++--------------- - src/cairo-scaled-font-subsets-private.h | 2 +- - src/cairo-svg-surface.c | 25 ++++++++++--------------- - 3 files changed, 26 insertions(+), 31 deletions(-) - -commit f500cef19f049a4a0ed296172618db2f26794932 -Author: Carl Worth -Date: Fri May 12 14:56:11 2006 -0700 - - PDF: Fold (unused) cairo_pdf_document_t into cairo_pdf_surface_t - - src/cairo-pdf-surface.c | 932 ++++++++++++++++++++--------------------------- - 1 files changed, 392 insertions(+), 540 deletions(-) - -commit d84a1cac1cc2da8a34fb6aa91c3c4f4058527207 -Author: Carl Worth -Date: Fri May 12 13:31:12 2006 -0700 - - PDF: Use cairo_pdf_resource_t more consistently. - - Eliminate the named structure cairo_pdf_stream_t. This structure was - being dynamically allocated, passed around, and leaked when only an ID - was actually needed to be passed around. - - Similarly, many other uses of PDF resources were passing bare unsigned - int types rather than the safer and more legible cairo_pdf_resource_t. - - src/cairo-pdf-surface.c | 487 +++++++++++++++++++++++------------------------ - 1 files changed, 236 insertions(+), 251 deletions(-) - -commit b7e9506707878367493a8a45c74bb6eb048b7e88 -Author: Tim Mooney -Date: Wed May 10 20:51:53 2006 -0700 - - bug #6890: fix the signature for main() in pthread-show-text - - test/pthread-show-text.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1ba537be18316154781e36fb66545f82afb3c3a0 -Author: Carl Worth -Date: Wed May 10 19:01:40 2006 -0700 - - Fix memory leak in _cairo_scaled_font_subsets_foreach - - src/cairo-scaled-font-subsets.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7bd3a037daadaed5b720d9590a479320de533af5 -Author: Carl Worth -Date: Wed May 10 18:52:36 2006 -0700 - - Add documentation for the _cairo_scaled_font_subsets interface. - - src/cairo-scaled-font-subsets-private.h | 109 ++++++++++++++++++++++++++++++- - 1 files changed, 106 insertions(+), 3 deletions(-) - -commit 7c137b7e2ccbe76bb7870756a8fd29458b571a71 -Author: Carl Worth -Date: Wed May 10 15:14:10 2006 -0700 - - SVG: Discard custom font subsetting in favor of sharing cairo-scaled-font-subsets - - ROADMAP | 2 +- - src/cairo-svg-surface.c | 272 ++++++++--------------------------------------- - 2 files changed, 45 insertions(+), 229 deletions(-) - -commit f459c1f0de1d874da55ab9eff075834c4b8633b8 -Author: Carl Worth -Date: Wed May 10 15:12:53 2006 -0700 - - Tweak names to match those of cairo-scaled-font-subsets - - Also, remove a now obsolete field from cairo_ps_surface_t - - src/cairo-ps-surface.c | 19 ++++++++----------- - 1 files changed, 8 insertions(+), 11 deletions(-) - -commit 8a209e6ad9a77b8b922687e08731c4b3bbd5621b -Author: Carl Worth -Date: Wed May 10 14:50:31 2006 -0700 - - Fix cairo_output_stream_destroy to do nothing on nil stream objects. - - src/cairo-output-stream.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 0544515279f9051a418f2079dd4fbeafd256b3ac -Author: Carl Worth -Date: Wed May 10 14:47:28 2006 -0700 - - Generalize font subsetting code in cairo-scaled-font-subsets for use by more than just PS backend - - ROADMAP | 1 + - src/Makefile.am | 2 +- - src/cairo-ps-surface.c | 228 ++++++++----------- - src/cairo-scaled-font-subsets-private.h | 82 +++----- - src/cairo-scaled-font-subsets.c | 378 +++++++++++++++++++++++------- - 5 files changed, 416 insertions(+), 275 deletions(-) - -commit 906a17a6b1ba1fc120d90f9f3cec29b914300a93 -Author: Carl Worth -Date: Wed May 10 14:40:32 2006 -0700 - - Rename cairo-ps-font to cairo-scaled-font-subsets (file names only) - - src/cairo-ps-font-private.h | 101 ----------------- - src/cairo-ps-font.c | 181 ------------------------------- - src/cairo-scaled-font-subsets-private.h | 101 +++++++++++++++++ - src/cairo-scaled-font-subsets.c | 181 +++++++++++++++++++++++++++++++ - 4 files changed, 282 insertions(+), 282 deletions(-) - -commit f7f9bdc05bd0afc4b709ab6a83074b7e66b1cc60 -Author: Carl Worth -Date: Tue May 9 10:05:44 2006 -0700 - - PS: Put functions in more logical order. - - src/cairo-ps-surface.c | 17 +++++++++-------- - 1 files changed, 9 insertions(+), 8 deletions(-) - -commit f3703b1806d1086be30323ca0576819b70a47771 -Author: Carl Worth -Date: Tue May 9 09:55:23 2006 -0700 - - PS: Move type 3 support out into cairo-ps-font.c - - This is in preparation for generalizing this code for sharing among - several backends. - - src/Makefile.am | 2 +- - src/cairo-ps-font-private.h | 101 ++++++++++++++++++++++++ - src/cairo-ps-font.c | 181 +++++++++++++++++++++++++++++++++++++++++++ - src/cairo-ps-surface.c | 181 +++---------------------------------------- - 4 files changed, 295 insertions(+), 170 deletions(-) - -commit 7ebdf4825d677b3b63671eb44298ea2764df2966 -Author: Carl Worth -Date: Mon May 8 17:47:31 2006 -0700 - - PS: Remove stale comment (the stuff TODO is done already) - - src/cairo-ps-surface.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -commit 172fd2f6a668b6b0e4a7cbce24e006b65417d9b1 -Author: Carl Worth -Date: Tue May 9 14:39:08 2006 -0700 - - Fix typo in select-font-face.c and update reference images - - test/select-font-face-pdf-argb32-ref.png | Bin 0 -> 2781 bytes - test/select-font-face-ps-argb32-ref.png | Bin 0 -> 528 bytes - test/select-font-face-ref.png | Bin 2460 -> 2481 bytes - test/select-font-face-svg-argb32-ref.png | Bin 0 -> 3064 bytes - test/select-font-face-svg-rgb24-ref.png | Bin 0 -> 3064 bytes - test/select-font-face.c | 4 ++-- - 6 files changed, 2 insertions(+), 2 deletions(-) - -commit f0d7e3f858858937168c6cfdfae12dbe751ee683 -Author: Carl Worth -Date: Tue May 9 14:15:27 2006 -0700 - - Add select-font-face test for whosing multiple faces at once. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/select-font-face-ref.png | Bin 0 -> 2460 bytes - test/select-font-face.c | 83 +++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 86 insertions(+), 0 deletions(-) - -commit 9595de96ac96bbfdc20177c0228c1673ad701d96 -Author: Carl Worth -Date: Mon May 8 17:41:17 2006 -0700 - - ROADMAP: non-substantive changes - - ROADMAP | 19 +++++++------------ - 1 files changed, 7 insertions(+), 12 deletions(-) - -commit 7d0bcc3f1cf5dff292289420c3e5e73410997993 -Author: Emmanuel Pacaud -Date: Sat May 6 15:31:53 2006 +0200 - - SVG: Emit glyphs at the beginning of defs section. - - src/cairo-svg-surface.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 1da2ca0f3575fe00e7e3f2ce27cf0e3416517573 -Author: Emmanuel Pacaud -Date: Sat May 6 14:56:20 2006 +0200 - - SVG: Implementation of glyph cache - - This is an adaptation of Keith ps-type3 branch for SVG backend. - Main differences with ps stuff are font cache is a property of - document, and there's no need of subfonts. - - src/cairo-svg-surface.c | 571 +++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 450 insertions(+), 121 deletions(-) - -commit 09e94c6a31e58ff85c597d4791b6ec5006f73797 -Author: Emmanuel Pacaud -Date: Fri May 5 20:31:48 2006 +0200 - - SVG: Add reference images for fill-and-stroke-alpha. - - It fails on a one digit color error. - - test/fill-and-stroke-alpha-svg-argb32-ref.png | Bin 0 -> 509 bytes - test/fill-and-stroke-alpha-svg-rgb24-ref.png | Bin 0 -> 509 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit ac470b02384528f9fda3ee7c80b64d27825b927a -Author: Carl Worth -Date: Fri May 5 07:57:10 2006 -0700 - - Don't build pdf2svg until we start depending on newer poppler - - test/Makefile.am | 5 ----- - 1 files changed, 0 insertions(+), 5 deletions(-) - -commit 44572fdcc8627a5c13d8fc68b55290f414166095 -Author: Carl Worth -Date: Fri May 5 07:51:59 2006 -0700 - - Revert "pdf2png: Use new poppler_page_render to render directly through cairo." - - This introduced a rather gratuitous dependency on a newer version of - poppler, which caused a fair amount of pain for no significant - benefit. - - This reverts 253472492ee2a690646a30b32cf8180f5b6e3299 commit. - - test/pdf2png.c | 38 +++++++++++--------------------------- - 1 files changed, 11 insertions(+), 27 deletions(-) - -commit d76701f465669f843c12aee6b533c9fb6399ec99 -Author: Emmanuel Pacaud -Date: Fri May 5 16:47:06 2006 +0200 - - Use CLEAR operator for initialisation of similar surface with a transparent color. - - src/cairo-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 36fcaa76d66c16fcedddf3c3e967afa3f4a96615 -Author: Emmanuel Pacaud -Date: Fri May 5 16:02:04 2006 +0200 - - SVG: Fix cairo_svg_surface_restrict_to_version. - - surface parameter is actually a paginated surface. - Use the same logic as pdf backend. - - src/cairo-svg-surface.c | 62 +++++++++++++++++++++++++++++++---------------- - src/cairo-svg.h | 2 +- - 2 files changed, 42 insertions(+), 22 deletions(-) - -commit 6b40ba283b6d09a7bf3bd0ec795a19b05b9bfec4 -Author: Emmanuel Pacaud -Date: Fri May 5 12:59:29 2006 +0200 - - SVG: Remove special case for unclipped CLEAR and SOURCE in paint when - we're in analysis mode. - - intersect_clip_path is not analyzed, so we can't know if we're clipped - when we're in analysis mode. - - src/cairo-svg-surface.c | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit fb269aac0887711298241113717aa8bddecbd097 -Author: Emmanuel Pacaud -Date: Fri May 5 11:10:02 2006 +0200 - - SVG: Sets something sane in width and height if acquire source image fails. - - In composite_image_pattern. - - src/cairo-svg-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit c399b7a04777823fc32c65020616b39196795214 -Author: Carl Worth -Date: Thu May 4 23:48:28 2006 -0700 - - Increment CAIRO_VERSION to 1.1.7 after making the 1.1.6 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7ba3b75efd56113411ed141a86675099ae82d5d5 -Author: Carl Worth -Date: Thu May 4 23:44:07 2006 -0700 - - Fix typos in EXTRA_DIST list of reference images. - - test/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 5b3425972dd8864a754ca4551f375151b409fdb5 -Author: Carl Worth -Date: Thu May 4 23:39:12 2006 -0700 - - Update version to 1.1.6 and add notes to NEWS file. - - Also update libtool version information to 8:0:6. - - NEWS | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - ROADMAP | 16 +++++---- - configure.in | 6 ++-- - 3 files changed, 108 insertions(+), 11 deletions(-) - -commit cfdb9a1c5372f261e6d495392aa6c052a6ebdee3 -Author: Carl Worth -Date: Thu May 4 23:33:44 2006 -0700 - - RELEASING: Add a few more steps that we've been somtimes forgetting - - RELEASING | 19 ++++++++++++++----- - ROADMAP | 2 +- - 2 files changed, 15 insertions(+), 6 deletions(-) - -commit b948683917e26315fdec773db8780662071554a1 -Author: Carl Worth -Date: Thu May 4 22:43:22 2006 -0700 - - Flesh out the documentation for cairo_push_group, cairo_pop_group and friends - - src/cairo.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 99 insertions(+), 20 deletions(-) - -commit 344c2c7acd0a87a7a28b4a73ba340b333fefb2bf -Author: Carl Worth -Date: Thu May 4 21:35:23 2006 -0700 - - Add a couple more group-using tests: fill-and-stroke-alpha[-add] - - test/.gitignore | 2 + - test/Makefile.am | 4 + - test/fill-and-stroke-alpha-add-ref.png | Bin 0 -> 588 bytes - test/fill-and-stroke-alpha-add.c | 112 ++++++++++++++++++++++++++++++++ - test/fill-and-stroke-alpha-ref.png | Bin 0 -> 532 bytes - test/fill-and-stroke-alpha.c | 106 ++++++++++++++++++++++++++++++ - 6 files changed, 224 insertions(+), 0 deletions(-) - -commit a16f0b4223a5cc9faa68d844b8fd3ff1bfb996b7 -Author: Carl Worth -Date: Thu May 4 15:34:15 2006 -0700 - - Add push-group to test/.gitignore - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 57a0242d0621020279bd33c3b0312463bf78cc42 -Author: Ian Osgood -Date: Thu May 4 14:29:03 2006 -0700 - - Additional piece of "Fix the XCB backend build for the XCB 0.9 release." - - test/cairo-test.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8c9da52dc285576e47b4e527487f0b2451ab87cc -Author: Ian Osgood -Date: Thu May 4 14:29:03 2006 -0700 - - Fix the XCB backend build for the XCB 0.9 release. - - * use split out xcb-render package - * fix deprecated calls - * use XCB-specific symbols - - configure.in | 2 +- - src/cairo-xcb-surface.c | 12 ++++++------ - 2 files changed, 7 insertions(+), 7 deletions(-) - -commit 450e29ce091e352569518bb5d6a9bf5236f14bfe -Author: Carl Worth -Date: Thu May 4 14:24:18 2006 -0700 - - pixman: Remove potential memory leak in failure path. - - Thanks to Petr Kobalicek for pointing this out. - - pixman/src/ictri.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit ec94f0a7e2e82bee3973f4c64eb23bb60cac846c -Author: Carl Worth -Date: Thu May 4 12:50:50 2006 -0700 - - Remove trailing comma in enum to pander to non-C99-conformant compilers - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 457132fc2b1380cfd189ecec2f4ab1c02cd22fe4 -Author: Emmanuel Pacaud -Date: Thu May 4 21:41:36 2006 +0200 - - SVG: Don't test rectangle-rounding-error. - - This test uses CAIRO_ANTIALIAS_NONE, which is not supported yet by - the SVG backend. - - test/cairo-test.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit f6748ad030a6b6b7fdf5e43d7636c6641c48c673 -Author: Emmanuel Pacaud -Date: Thu May 4 21:40:17 2006 +0200 - - SVG: Add reference image for tests failing on composited image misplacement. - - There's a bug in librsvg/cairo that offsets composited images by half a pixel. - http://bugzilla.gnome.org/show_bug.cgi?id=330055 - - ...osite-integer-translate-over-svg-argb32-ref.png | Bin 0 -> 15465 bytes - ...posite-integer-translate-over-svg-rgb24-ref.png | Bin 0 -> 15465 bytes - test/paint-source-alpha-svg-argb32-ref.png | Bin 0 -> 353 bytes - test/paint-source-alpha-svg-rgb24-ref.png | Bin 0 -> 353 bytes - test/paint-with-alpha-svg-argb32-ref.png | Bin 0 -> 420 bytes - test/paint-with-alpha-svg-rgb24-ref.png | Bin 0 -> 420 bytes - test/scale-source-surface-paint-svg-argb32-ref.png | Bin 0 -> 146 bytes - test/scale-source-surface-paint-svg-rgb24-ref.png | Bin 0 -> 158 bytes - 8 files changed, 0 insertions(+), 0 deletions(-) - -commit 720edfe865fde9dff49198edaa9029a989045334 -Author: Emmanuel Pacaud -Date: Thu May 4 18:53:51 2006 +0200 - - SVG: Add reference images for push-groups test. - - Tests just fail for a one digit color on error. - - test/push-group-svg-argb32-ref.png | Bin 0 -> 2945 bytes - test/push-group-svg-rgb24-ref.png | Bin 0 -> 2901 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit a3997501fad548988135e1aff6b906e96a9b744c -Author: Emmanuel Pacaud -Date: Thu May 4 18:40:37 2006 +0200 - - SVG: Update reference images for shrinked tests. - - test/linear-gradient-svg-argb32-ref.png | Bin 12707 -> 947 bytes - test/linear-gradient-svg-rgb24-ref.png | Bin 12707 -> 947 bytes - test/text-pattern-svg-argb32-ref.png | Bin 2643 -> 1720 bytes - test/text-pattern-svg-rgb24-ref.png | Bin 2490 -> 1567 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit 135449ae03e74910c9ac359772d4ad790f6b7bed -Author: Emmanuel Pacaud -Date: Thu May 4 18:06:06 2006 +0200 - - SVG: Fix the previous fix for xlink namespace. - - It seems libxml2 2.6.24 now requires a node using xlink - namespace to be linked to a node where it can find this - namespace. - - src/cairo-svg-surface.c | 34 +++++++++++++++++++--------------- - 1 files changed, 19 insertions(+), 15 deletions(-) - -commit a428f11738a52ffabbde3925254278585a72aadb -Author: Emmanuel Pacaud -Date: Thu May 4 14:18:59 2006 +0200 - - SVG: Fix bug in test suite causing SVG to fail with rgb24 and device offsets. - - Same fix as for PDF and PS surfaces. - - test/cairo-test.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -commit 1431a9d4d3655f488b6f6698fdc18c6d65d733b5 -Author: Carl Worth -Date: Thu May 4 04:01:06 2006 -0700 - - Clean up error management of xlib surface getter functions. - - src/cairo-xlib-surface.c | 61 ++++++++++++++++++++++----------------------- - src/cairo-xlib.h | 8 +++--- - 2 files changed, 34 insertions(+), 35 deletions(-) - -commit 4a4603d5517f4e0b014a34ec05bee42fc3640ed3 -Author: Robert O'Callahan -Date: Thu May 4 03:59:56 2006 -0700 - - Add Xlib surface getter functions. - - Add the following five functions: - - cairo_public Display * - cairo_xlib_surface_get_display (cairo_surface_t *surface); - - cairo_public Drawable - cairo_xlib_surface_get_drawable (cairo_surface_t *surface); - - cairo_public Screen * - cairo_xlib_surface_get_screen (cairo_surface_t *surface); - - cairo_public Visual * - cairo_xlib_surface_get_visual (cairo_surface_t *surface); - - cairo_public int - cairo_xlib_surface_get_depth (cairo_surface_t *surface); - - src/cairo-xlib-surface.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-xlib.h | 15 ++++++++++ - 2 files changed, 81 insertions(+), 0 deletions(-) - -commit 68915fdfcb7a1c99ebd237b08192732a7409b5ec -Author: Emmanuel Pacaud -Date: Thu May 4 12:56:06 2006 +0200 - - SVG: Fix xml namespace declaration. - - It looks like since libxml2 2.6.24, we can't just use xmlSetProp - for namespace declaration anymore. - - src/cairo-svg-surface.c | 24 ++++++++++++++---------- - 1 files changed, 14 insertions(+), 10 deletions(-) - -commit 7aa2b05e48f4431639b821661c91103d2b60b482 -Author: Carl Worth -Date: Thu May 4 03:44:26 2006 -0700 - - Add missing prototype for _cairo_clip_translate - - src/cairo-clip-private.h | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 7bcf957b4e2a986a94bbc29192f61b8c9c0067be -Author: Robert O'Callahan -Date: Thu May 4 03:43:34 2006 -0700 - - Rename cairo_rectangle_t to cairo_rectangle_fixed_t. - - This is in preparation for a later function addition for extracting - clip rectangles from a cairo_t, (which will add a public - cairo_rectangle_t). - - src/cairo-analysis-surface.c | 4 +- - src/cairo-atsui-font.c | 2 +- - src/cairo-beos-surface.cpp | 44 +++++----- - src/cairo-clip-private.h | 18 ++-- - src/cairo-clip.c | 18 ++-- - src/cairo-directfb-surface.c | 42 +++++----- - src/cairo-glitz-surface.c | 42 +++++----- - src/cairo-gstate.c | 10 +- - src/cairo-image-surface.c | 28 +++--- - src/cairo-meta-surface.c | 4 +- - src/cairo-paginated-surface.c | 8 +- - src/cairo-pattern.c | 6 +- - src/cairo-pdf-surface.c | 6 +- - src/cairo-ps-surface.c | 6 +- - src/cairo-quartz-private.h | 2 +- - src/cairo-quartz-surface.c | 26 +++--- - src/cairo-region.c | 10 +- - src/cairo-scaled-font.c | 8 +- - src/cairo-surface-fallback-private.h | 6 +- - src/cairo-surface-fallback.c | 164 +++++++++++++++++----------------- - src/cairo-surface.c | 58 ++++++------ - src/cairo-svg-surface.c | 4 +- - src/cairo-win32-private.h | 4 +- - src/cairo-win32-surface.c | 20 ++-- - src/cairo-xcb-surface.c | 32 ++++---- - src/cairo-xlib-surface.c | 40 ++++---- - src/cairo.c | 2 +- - src/cairoint.h | 72 ++++++++-------- - src/test-fallback-surface.c | 24 +++--- - src/test-meta-surface.c | 4 +- - src/test-paginated-surface.c | 4 +- - 31 files changed, 358 insertions(+), 360 deletions(-) - -commit d71ddec8dfcfd4a8eb39edc9f34f93dc1683a62d -Author: Carl Worth -Date: Thu May 4 03:05:12 2006 -0700 - - ROADMAP: Note that device-offset and push-pop-group have landed. - - ROADMAP | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit fb7f7c2f27f0823d7702f960204d6e638d697624 -Author: Vladimir Vukicevic -Date: Tue Mar 14 15:56:08 2006 -0800 - - Fix up clip at pop_group time, to keep it in surface backend coordinates - - We keep the clip in surface-backend coordinates always, so it needs - fixing whenever we change the target surface out in the gstate. The - only place this happens is in push_group, so fix it as part of - gstate_redirect(). - - src/cairo-clip-private.h | 5 +++ - src/cairo-clip.c | 77 +++++++++++++++++++++++++++++++++++++++++++-- - src/cairo-gstate.c | 32 +++++-------------- - src/cairo.c | 9 ++++- - 4 files changed, 93 insertions(+), 30 deletions(-) - -commit 7fa3c6eee5a19d3486a200a6a14b96210f2b6dab -Author: Vladimir Vukicevic -Date: Wed Mar 1 17:19:45 2006 +0100 - - Add push-group test and reference images - - test/push-group-ref.png | Bin 0 -> 3012 bytes - test/push-group-rgb24-ref.png | Bin 0 -> 2858 bytes - test/push-group.c | 119 +++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 119 insertions(+), 0 deletions(-) - -commit ee02c1b91452e5b34af4f02d7132840a4bf44fe1 -Author: Vladimir Vukicevic -Date: Wed Feb 15 13:46:53 2006 -0800 - - Implement push_group/pop_group - - This patch adds the following API calls: - - cairo_push_group - cairo_push_group_with_content - cairo_pop_group - cairo_pop_group_to_source - cairo_get_group_target - - These methods support implementing layers on top of a cairo context, - allowing for drawing with transparency and temporary buffering. - cairo_get_group_target allows an app to get access to the actual surface - created by the last push_group call, in case itneeds to perform native - drawing to it. - - src/cairo-gstate-private.h | 4 +- - src/cairo-gstate.c | 214 +++++++++++++++++++++++++++++--------------- - src/cairo.c | 150 ++++++++++++++++++++++++++++--- - src/cairo.h | 51 ++++++----- - src/cairoint.h | 19 ++++ - test/Makefile.am | 3 +- - 6 files changed, 332 insertions(+), 109 deletions(-) - -commit 5e708b38e00f6b2066028c60a5526bf5d5e66356 -Merge: a6b1b01... 99719bd... -Author: Carl Worth -Date: Thu May 4 01:46:34 2006 -0700 - - Merge branch 'device-offset-history' into cairo - -commit a6b1b014bbd12be0f20c44d38d8847181be6d3ae -Author: Carl Worth -Date: Thu May 4 01:45:41 2006 -0700 - - Implement the device_offset functionality at surface, not gstate layer - - This is a mega-patch that has the advantage that the entire test suite - passes both immediately before and immediately after this commit. - - The disadvantage of the mega-patch is that it does not reflect the - development history of the device-offset branch, (with its various - fumblings and flailings). To capture that history, we will next merge - in that branch. - - src/cairo-clip.c | 11 ++ - src/cairo-gstate.c | 61 +++------- - src/cairo-path.c | 46 +++++++ - src/cairo-ps-surface.c | 6 +- - src/cairo-scaled-font.c | 8 +- - src/cairo-surface-fallback.c | 64 ++++----- - src/cairo-surface.c | 292 ++++++++++++++++++++++++++++++++++-------- - src/cairo-traps.c | 49 +++++++- - src/cairo-xlib-surface.c | 4 +- - src/cairo.h | 5 + - src/cairoint.h | 19 +++- - test/buffer-diff.c | 8 +- - test/cairo-test.c | 23 ++++ - 13 files changed, 444 insertions(+), 152 deletions(-) - -commit 99719bde9ee0697bd43d97f034ccf4058c9484a0 -Author: Carl Worth -Date: Fri Mar 10 14:57:08 2006 -0800 - - Move device-offset touchups from the surface layer up to the gstate. - - This fixes the self-copy test which was the last one that was really - failing due to device offsets. - - src/cairo-gstate.c | 16 ++++++++++++++++ - src/cairo-surface.c | 12 ------------ - 2 files changed, 16 insertions(+), 12 deletions(-) - -commit ee687d722a315ff9cefd8755ca38b194187a693c -Author: Carl Worth -Date: Thu Mar 9 14:39:44 2006 -0800 - - Add support to handle the device-offset of a source surface. - - This change caused all self-copy failures to now pass. - But, it also causes all previous self-copy passes to now fail. - - src/cairo-surface.c | 15 +++++++++++++-- - 1 files changed, 13 insertions(+), 2 deletions(-) - -commit ea2faa5fae619a6b813348eda925060f3ed16ee3 -Author: Carl Worth -Date: Thu Mar 9 14:38:20 2006 -0800 - - Rip out device_{x,y}_scale. - - This device scale stuff is currently not being used. However it is also adding - complexity to the current device-offset rework. And since it's not being tested - I'm sure we're getting it wrong. It's better to not even have it here rather - than having it be broken. - - src/cairo-clip.c | 8 ++--- - src/cairo-path.c | 25 ++++++++++++------ - src/cairo-ps-surface.c | 6 +--- - src/cairo-surface-fallback.c | 2 - - src/cairo-surface.c | 56 ++++++++++------------------------------- - src/cairoint.h | 12 +++----- - 6 files changed, 41 insertions(+), 68 deletions(-) - -commit 0e230727f8f925b85fffd0359195be4a704fed69 -Author: Carl Worth -Date: Thu Mar 9 14:01:30 2006 -0800 - - Prefer classic C style comments rather than C++/C99-style - - src/cairo-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f9333e9975cbb3a0e167de1f78076eb779da4317 -Author: Carl Worth -Date: Thu Mar 9 14:01:10 2006 -0800 - - Remove dead code from _cairo_surface_{acquire,release}_dest_image - - src/cairo-surface.c | 35 ++++------------------------------- - 1 files changed, 4 insertions(+), 31 deletions(-) - -commit f66ce88e0ec1ef91bb85e795fd53a99f71877e4a -Author: Carl Worth -Date: Thu Mar 9 13:42:16 2006 -0800 - - cairo_surface_mark_dirty_rectangle: correct sense of device-offset handling - - src/cairo-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 460820cb58b9a9e893cdb2d48d1457defe797246 -Author: Carl Worth -Date: Thu Mar 9 13:39:55 2006 -0800 - - Remove undesired device-offset handling during unbounded fixups. - - This code was already commented as being suspicious and its removal causes some - tests to start passing once again. - - src/cairo-surface.c | 12 ------------ - 1 files changed, 0 insertions(+), 12 deletions(-) - -commit b0c047ad95957b46922bbb4f6320a4a7b0c32726 -Author: Carl Worth -Date: Thu Mar 9 13:37:32 2006 -0800 - - _cairo_surface_show_glyphs: Fix reversed device-offset handling so text works again. - - src/cairo-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit ee1c642cd85fc4d5408d65578cc9ca48ee4b58cc -Author: Carl Worth -Date: Thu Mar 9 13:36:30 2006 -0800 - - cairo-surface.c: Correct reversed semantics of SURFACE_TO_BACKEND and BACKEND_TO_SURFACE - - src/cairo-surface.c | 56 +++++++++++++++++++++++++------------------------- - 1 files changed, 28 insertions(+), 28 deletions(-) - -commit a5cb54621259d0a6057543bc0e4edd4d16216007 -Author: Carl Worth -Date: Wed Mar 8 15:02:35 2006 -0800 - - _cairo_surface_set_clip_region: Remove device-offset handling that is - - now taken care of in _cairo_clip_clip. - - src/cairo-surface.c | 36 ------------------------------------ - 1 files changed, 0 insertions(+), 36 deletions(-) - -commit 69affa5fafe41edf6c88af7722538b550804284c -Author: Carl Worth -Date: Wed Mar 8 14:51:57 2006 -0800 - - Move device-offset handling for clipping from _cairo_surface_interesect_clip_path - - to the more general _cairo_clip_clip to handle more cases correctly. - - src/cairo-clip.c | 13 +++++++++++++ - src/cairo-surface.c | 17 +---------------- - src/cairoint.h | 3 +++ - 3 files changed, 17 insertions(+), 16 deletions(-) - -commit 50dcd4d1ac3d4b90bcea04e53836d73b8e7c1aa4 -Author: Carl Worth -Date: Wed Mar 8 12:58:13 2006 -0800 - - _cairo_surface_copy_pattern_for_destination: Don't do any transform if there is no offset - - src/cairo-surface.c | 20 +++++++++++--------- - 1 files changed, 11 insertions(+), 9 deletions(-) - -commit 6d212c9e391ad8fc5b273269a54740790cbb1ee3 -Author: Carl Worth -Date: Wed Mar 8 12:51:46 2006 -0800 - - _cairo_surface_copy_pattern_for_destination: Remove leaking second call to pattern_init_copy - - src/cairo-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 81e469523fbc83b9ddcd74a6be5d8137a6d71c38 -Author: Carl Worth -Date: Wed Mar 8 12:44:49 2006 -0800 - - Abstract away repeated test as _cairo_surface_has_device_offset_or_scale - - src/cairo-surface.c | 34 ++++++++++++++-------------------- - 1 files changed, 14 insertions(+), 20 deletions(-) - -commit 4ed3e60a25a877f65b82cf7c426659a89d195728 -Author: Carl Worth -Date: Wed Mar 8 11:56:27 2006 -0800 - - _cairo_surface_copy_pattern_for_destination: Fix transformation sign/order. - - This allows the scale-source-surface-paint test to start passing again - at least. - - src/cairo-surface.c | 26 ++++++++++++-------------- - 1 files changed, 12 insertions(+), 14 deletions(-) - -commit d3ff6f0e4b17972361c28f490eaf05222ac97e10 -Author: Carl Worth -Date: Wed Mar 8 11:54:33 2006 -0800 - - _cairo_surface_fallback_composite_trapezoids: Remove unused variable. - - src/cairo-surface-fallback.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 46a1f40b7d1787b570a8381a914a372400ef39a9 -Author: Vladimir Vukicevic -Date: Thu Mar 2 15:05:32 2006 +0100 - - Move device offsets handling into high-level operations only (stroke/fill/paint/etc) - - Remove all device offsets handling from internal cairo_surface methods, - which will become truly internal shortly. Have all device offsets - handled by top-level entry points (stroke/fill/paint/show_glyphs/mask, and - clipping). - - src/cairo-scaled-font.c | 3 +- - src/cairo-surface.c | 402 +++++++++++++++++++++++------------------------ - 2 files changed, 201 insertions(+), 204 deletions(-) - -commit 6197d5a7618900f25155af16b91f082ee05ddd03 -Author: Carl Worth -Date: Wed Mar 1 11:54:21 2006 +0100 - - Fix bug in test suite causing PS and PDF to fail with rgb24 and device offsets. - - Patch from cworth@cworth.org. - - The trick with this one is that the test suite is using device offsets - in a rather fabricated way, and the final copy from an offset surface - to a non-offset surface is between two surfaces of the same size, so - must be 1:1. To get this we turn the device offset off before the - copy. - - In a more conventional use of device offsets the surfaces would be of - different sizes, and the offset would be desired during the copy. - - test/cairo-test.c | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 51cf7900e4987d18173ded806988d412752717f5 -Author: Vladimir Vukicevic -Date: Wed Mar 1 11:23:15 2006 +0100 - - Take device offsets into account when compositing scaled glyph images - - Scaled glyph image surfaces have device offsets set on them to indicate - the location of the glyph origin; however, those offsets weren't being - taken into account for the call to composite, so the glyphs were - being doubly-offset by this amount. - - src/cairo-scaled-font.c | 11 ++++++----- - src/cairo-xlib-surface.c | 4 ++-- - 2 files changed, 8 insertions(+), 7 deletions(-) - -commit 4894f5a234959a0e50269c1adcc6b4faf08ba053 -Author: Vladimir Vukicevic -Date: Wed Feb 15 13:46:52 2006 -0800 - - Implement device offset/scale at cairo-surface layer - - This patch implements device offset/scale at the cairo-surface layer, - instead of them just being multiplied into the CTM at operation time. - This allows identical drawing operations/clips/paths/etc. to operate - identically on a surface with or without a device offset (and still - have things end up in the same place relative to the dev offset). - - src/cairo-gstate.c | 47 +----- - src/cairo-path.c | 37 ++++ - src/cairo-surface-fallback.c | 65 ++++---- - src/cairo-surface.c | 375 ++++++++++++++++++++++++++++++++++++++---- - src/cairo-traps.c | 49 ++++++- - src/cairo.h | 5 + - src/cairoint.h | 14 ++ - test/buffer-diff.c | 8 +- - test/cairo-test.c | 5 + - 9 files changed, 488 insertions(+), 117 deletions(-) - -commit 40b39dddf9cd919fb2f456a8e296a60cc8296fbf -Author: Carl Worth -Date: Fri Mar 10 16:37:50 2006 -0800 - - Shrink the size of a couple of tests (and update reference images). - - Shrink linear-gradient and text-pattern test outuput. - - The real motivation for this is to hide an annoying difference in the - gradient output that occurs when under the influence of a device - offsets. My opinion is that the gradient output should not change due - to just an integer offset, but we currently don't have a precise - gradient specification, so this minor deviation really isn't relevant. - - A better fix for this might have been to make the test suite more - forgiving of tiny differences, (perhaps on a per-test basis), but - another advantage of shrinking these tests is that they now run a lot - faster. - - It is true that these tests now also exercise fewer different output - values, but that's not the designed purpose of the tests so I don't - feel bad about losing that characteristic. - - test/linear-gradient-ref.png | Bin 12750 -> 972 bytes - test/linear-gradient.c | 6 +++--- - test/text-pattern-ref.png | Bin 2725 -> 1721 bytes - test/text-pattern-rgb24-ref.png | Bin 2339 -> 1423 bytes - test/text-pattern.c | 4 ++-- - 5 files changed, 5 insertions(+), 5 deletions(-) - -commit b3e2252b94297b7fbdbd3a3776781ea6df7c8bc6 -Author: Vladimir Vukicevic -Date: Wed Feb 15 13:46:52 2006 -0800 - - Augment test framework to test everything under device offsets as well. - - [With this change, two tests with gradients exhibit subtle differences - under device offsets. I don't think we actually care about them - though. -cworth] - - test/.gitignore | 36 ++------------- - test/buffer-diff.c | 98 +++++++++++++++++++++++++++++----------- - test/buffer-diff.h | 21 +++++++-- - test/cairo-test.c | 111 +++++++++++++++++++++++++++++----------------- - test/imagediff.c | 45 +++++-------------- - test/make-html.pl | 124 ++++++++++++++++++++++++++++----------------------- - test/xlib-surface.c | 4 ++ - 7 files changed, 244 insertions(+), 195 deletions(-) - -commit 7beb3e27a552c724bbdb147bc27b775af0d61063 -Author: Carl Worth -Date: Wed May 3 16:45:33 2006 -0700 - - Quiet some 'may be used uninitialized' warnings. - - src/cairo-lzw.c | 4 ++-- - src/cairo-pdf-surface.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 8a174a11395af97bf1bffeca7a6ee8e5c1d50281 -Author: Carl Worth -Date: Wed May 3 13:20:07 2006 -0700 - - Add test/pdf-features.c missing from an earlier commit - - test/pdf-features.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 150 insertions(+), 0 deletions(-) - -commit 7c825797c85fca79ea1229d49cf3ae1b24b6daf2 -Author: Carl Worth -Date: Wed May 3 13:18:40 2006 -0700 - - Add pdf2svg utility for manual testing (not used in test suite) - - test/.gitignore | 1 + - test/Makefile.am | 5 +++ - test/pdf2svg.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 107 insertions(+), 0 deletions(-) - -commit 6f9aa014aeee03bd6acc31124de05cfd931a88e1 -Author: Carl Worth -Date: Wed May 3 13:13:10 2006 -0700 - - ROADMAP: Note that PDF per-page size setting is done. Sort things that appear in 1.1.4 - - ROADMAP | 14 ++++++++------ - 1 files changed, 8 insertions(+), 6 deletions(-) - -commit c35bfffa1057cfe2aeca6fe681ea59aa628f5315 -Author: Carl Worth -Date: Wed May 3 12:39:45 2006 -0700 - - Add new pdf-features test to exercise cairo_pdf_surface_set_size - - test/.gitignore | 2 ++ - test/Makefile.am | 5 +++++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit eb1b102e9a9e16cfc38948f8d37e08f263d10f7c -Author: Carl Worth -Date: Wed May 3 12:39:23 2006 -0700 - - PDF: Add new cairo_pdf_surface_set_size for doing per-page size changes - - src/cairo-pdf-surface.c | 90 +++++++++++++++++++++++++++++++++++++++-------- - src/cairo-pdf.h | 5 +++ - 2 files changed, 80 insertions(+), 15 deletions(-) - -commit 5448278d6e9c7452f855f8b262295818b27c5a11 -Author: Carl Worth -Date: Wed May 3 12:38:49 2006 -0700 - - ps-features: Minor touchups (missing include, typo in error message) - - test/ps-features.c | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit a4fc0c2e2c9ce52750f43dabc2be5daeb8aee9c4 -Author: Carl Worth -Date: Wed May 3 11:10:24 2006 -0700 - - PS: Use ceil, not rounding when computing integers for BoundingBox - - src/cairo-ps-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit e91b2c87ccf75e1c4935f1593dfdd10b1992de34 -Author: Emmanuel Pacaud -Date: Wed May 3 14:53:25 2006 +0200 - - SVG: Emit "svg" version in document_finish. - - At least when there's something valid in document->svg_version. - - src/cairo-svg-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 5336cf5a984cdeb4d4887cd3c643a3e051aca338 -Author: Emmanuel Pacaud -Date: Wed May 3 14:47:01 2006 +0200 - - SVG: Only "comp-op" property when svg_version >= 1.2 - - src/cairo-svg-surface.c | 13 ++++++++----- - 1 files changed, 8 insertions(+), 5 deletions(-) - -commit 57ddc7a8699eac61af2086546130081b897aa3a2 -Author: Emmanuel Pacaud -Date: Wed May 3 14:29:54 2006 +0200 - - SVG: Emit correct version property of "svg" element. - - src/cairo-svg-surface.c | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit 3ee4bae92071b63ace5570795cf57cb94b06257d -Author: Carl Worth -Date: Wed May 3 01:58:03 2006 -0700 - - Increment CAIRO_VERSION to 1.1.5 after making the 1.1.4 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 044bc5b2a51558046bc2d0bc3a8a50897571674a -Author: Carl Worth -Date: Wed May 3 01:31:51 2006 -0700 - - Update version to 1.1.4 and add notes to NEWS file. - - Also update libtool version information to 7:0:5. - - NEWS | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 65 insertions(+), 0 deletions(-) - -commit 7cf6bcaeca168394074413925c35c0cf2f3fb12a -Author: Carl Worth -Date: Wed May 3 01:29:24 2006 -0700 - - RELEASING: Replace references to ChangeLog with git log commands (and improve those) - - RELEASING | 25 ++++++++++++++----------- - configure.in | 6 +++--- - 2 files changed, 17 insertions(+), 14 deletions(-) - -commit 65dd361c49a984a508cb53153a45612028fa49ef -Author: Carl Worth -Date: Wed May 3 01:18:06 2006 -0700 - - SVG: Enable the SVG backend to be built by default (if dependencies are met) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6acc836df28e0e97e4d0a146c96f04f9a4db30c4 -Author: Carl Worth -Date: Wed May 3 00:57:28 2006 -0700 - - Add backend-specific reference images to EXTRA_DIST so they'll go out in the tar file. - - test/Makefile.am | 29 +++++++++++++++++++++++++++++ - 1 files changed, 29 insertions(+), 0 deletions(-) - -commit b6fefaef9bd280715366a44d9f0bef91471e8e3a -Author: Carl Worth -Date: Wed May 3 00:56:34 2006 -0700 - - ROADMAP: Indicate that PS printing-oriented API is done now. - - ROADMAP | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 09dfd6c3c16ed36b0e9693cfcbb3b679bd18f585 -Author: Carl Worth -Date: Wed May 3 00:26:22 2006 -0700 - - PS: Add three new public functions for emitting DSC comments. - - This commit adds the following new functions to the cairo-ps API: - - cairo_ps_surface_dsc_comment - cairo_ps_surface_dsc_begin_setup - cairo_ps_surface_dsc_begin_page_setup - - Many thanks are due to Michael Sweet who provided invaluble guidance - during the design of this API. - - It is hoped that with this API in place, basically all printer control - that is likely to be desired to be performed with cairo PostScript - output is now possible. - - This commit augments the ps-features test to exercise the new API. - - doc/public/tmpl/cairo-status.sgml | 1 + - src/cairo-array.c | 4 +- - src/cairo-ps-surface.c | 271 ++++++++++++++++++++++++++++++++++++- - src/cairo-ps.h | 12 ++- - src/cairo.c | 4 +- - src/cairo.h | 4 +- - test/ps-features.c | 54 +++++--- - 7 files changed, 325 insertions(+), 25 deletions(-) - -commit 253472492ee2a690646a30b32cf8180f5b6e3299 -Author: Carl Worth -Date: Tue May 2 16:54:49 2006 -0700 - - pdf2png: Use new poppler_page_render to render directly through cairo. - - ...as opposed to using poppler_page_render_to_pixbuf. - - test/pdf2png.c | 38 +++++++++++++++++++++++++++----------- - 1 files changed, 27 insertions(+), 11 deletions(-) - -commit e7459428dc87f7372dd7d5bd903341d619ee726f -Author: Emmanuel Pacaud -Date: Tue May 2 23:37:23 2006 +0200 - - SVG: Convert SVG file with a resolution of 72 dpi. - - That means 1 point = 1 pixel - - test/svg2png.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 1264ae9af4f4aa3bc9f6495e84a7888cd16809da -Author: Emmanuel Pacaud -Date: Tue May 2 23:35:06 2006 +0200 - - SVG: Really use width and height in point unit. - - I guess it makes more sense to use a unit for - specifying image size that doesn't depend on context. - - src/cairo-svg-surface.c | 25 +++++++++++++++++++++++-- - 1 files changed, 23 insertions(+), 2 deletions(-) - -commit 773692b7df9f0ccf250f259c1bc430c343765651 -Merge: bd85701... 8488aae... -Author: Emmanuel Pacaud -Date: Tue May 2 21:52:41 2006 +0200 - - Merge branch 'master' of git+ssh://emmanuel@git.cairographics.org/git/cairo - -commit bd85701b4f97f0750df050c1a8d995f103a52fc1 -Author: Emmanuel Pacaud -Date: Tue May 2 21:48:11 2006 +0200 - - SVG: Minor documentation fixes. - - src/cairo-svg-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 8488aaee1a8f25d3cc9bf2af986b32710cea91f0 -Author: Carl Worth -Date: Tue May 2 12:36:23 2006 -0700 - - PS: Add cairo_ps_surface_set_size along with ps-features test - - Add a new cairo_ps_surface_set_size which can be used to produce a - PostScript file consisting of pages of various different sizes (or - orientations). - - Also add a new test (ps-features.c) for testing this and subsequent - ps-specific function calls. - - src/.gitignore | 1 + - src/cairo-ps-surface.c | 113 +++++++++++++++++++++++++++++++++------ - src/cairo-ps.h | 5 ++ - test/.gitignore | 2 + - test/Makefile.am | 5 ++ - test/ps-features.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 243 insertions(+), 18 deletions(-) - -commit e59f35291fa5f97acfe408b7bce8652ec20566c8 -Author: Carl Worth -Date: Tue May 2 11:36:41 2006 -0700 - - atsui: Add missing check of return-value of malloc. - - This addresses the original problem noted in mozilla's bug #336129: - - Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185 - https://bugzilla.mozilla.org/show_bug.cgi?id=336129 - - This also adds a comment pointing out another malloc that is not - checked, (but does not fix it). - - src/cairo-atsui-font.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 41e288a88023cac9ced77099bceced41cf526a99 -Author: Carl Worth -Date: Mon May 1 15:44:58 2006 -0700 - - Make backend-specific function set a surface error on type mismatch. - - If any backend-specific, surface-modifying function is called with - the wrong surface type we set an error on that surface. - - src/cairo-surface.c | 2 +- - src/cairo-xcb-surface.c | 5 +++-- - src/cairo-xlib-surface.c | 19 +++++++++++-------- - src/cairoint.h | 4 ++++ - 4 files changed, 19 insertions(+), 11 deletions(-) - -commit 0e4527c67e623801544be05de32f21a0c10e5b5d -Author: Emmanuel Pacaud -Date: Tue May 2 14:50:40 2006 +0200 - - SVG: Rework of API for SVG selection. - - I've removed cairo_svg_surface_create_xxx functions, and instead implemented - the following ones: - - cairo_svg_surface_restrict_to_version - cairo_svg_get_versions - cairo_svg_version_to_string - - doc/public/cairo-sections.txt | 7 +- - doc/public/tmpl/cairo-svg.sgml | 79 --------------- - src/cairo-svg-surface.c | 209 ++++++++++++++++----------------------- - src/cairo-svg.h | 41 ++++---- - 4 files changed, 109 insertions(+), 227 deletions(-) - -commit 32f120e4888fd9344f699fd47c1aea6a5ec3df8e -Author: Carl Worth -Date: Mon May 1 15:12:46 2006 -0700 - - Don't return void from void-returning function (fix #6792). - - It's a dumb part of the C standard and it's even dumber when compilers are - picky about it. But oh, well. - - src/cairo-paginated-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit df2f05876d754ecc4fbc5aee53080bdd672d0de9 -Author: Carl Worth -Date: Mon May 1 14:54:57 2006 -0700 - - ROADMAP: Mark bug #4705 as fixed. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 87bd00326e0b6ac2ac29939d0ab1e59d9ab05a47 -Author: Carl Worth -Date: Mon May 1 14:52:25 2006 -0700 - - Fix silly typo from previous commit. - - src/cairo-xlib-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 8dff692db6e7083633fc9b81548b0554a985fabd -Author: Carl Worth -Date: Mon May 1 10:17:08 2006 -0700 - - Support multiple glyph image formats within the same font (fix #4705). - - If we find a glyph image of a format that is different from the font's - format, then we use a temporary image and convert to the font's - format. - - This provides a simple fix for the crash identified in bug #4705: - - crash at XRenderAddGlyphs - https://bugs.freedesktop.org/show_bug.cgi?id=4705 - - A later improvement would guarantee that the "font's format" was - carefully chosen to be able to contain all glyphs in the font without - information loss. - - src/cairo-xlib-surface.c | 61 ++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 48 insertions(+), 13 deletions(-) - -commit 0c927c53880f9ece2903a9b2c7843aaff1c78dec -Author: Emmanuel Pacaud -Date: Mon May 1 23:23:02 2006 +0200 - - SVG: Add reference images for tests failing on 1 digit error on color. - - test/caps-joins-alpha-svg-argb32-ref.png | Bin 0 -> 2454 bytes - test/caps-joins-alpha-svg-rgb24-ref.png | Bin 0 -> 2454 bytes - test/linear-gradient-svg-argb32-ref.png | Bin 0 -> 12707 bytes - test/linear-gradient-svg-rgb24-ref.png | Bin 0 -> 12707 bytes - test/mask-ctm-svg-argb32-ref.png | Bin 0 -> 108 bytes - test/mask-ctm-svg-rgb24-ref.png | Bin 0 -> 118 bytes - test/mask-surface-ctm-svg-argb32-ref.png | Bin 0 -> 108 bytes - test/mask-surface-ctm-svg-rgb24-ref.png | Bin 0 -> 118 bytes - test/mask-svg-argb32-ref.png | Bin 0 -> 87715 bytes - test/mask-svg-rgb24-ref.png | Bin 0 -> 81874 bytes - test/set-source-svg-argb32-ref.png | Bin 0 -> 104 bytes - test/set-source-svg-rgb24-ref.png | Bin 0 -> 104 bytes - test/trap-clip-svg-argb32-ref.png | Bin 0 -> 71765 bytes - test/trap-clip-svg-rgb24-ref.png | Bin 0 -> 73066 bytes - 14 files changed, 0 insertions(+), 0 deletions(-) - -commit e3b3402eb82786c4b1faf0d25b6ed322bf5545aa -Author: Emmanuel Pacaud -Date: Mon May 1 23:21:37 2006 +0200 - - SVG: Correct use of paginated surface. Fix emit of alpha filter. - - src/cairo-svg-surface.c | 25 +++++++++++++------------ - 1 files changed, 13 insertions(+), 12 deletions(-) - -commit 8e5ada5201dd8a39026e8973d2590fec5ebf2d00 -Author: Emmanuel Pacaud -Date: Mon May 1 22:53:46 2006 +0200 - - SVG: Trivial indentation and comment fixes. - - src/cairo-svg-surface.c | 31 ++++++++++++++++++------------- - 1 files changed, 18 insertions(+), 13 deletions(-) - -commit 62831dc10ec7601869a01041c845d5dc2f15db49 -Author: Emmanuel Pacaud -Date: Mon May 1 22:53:12 2006 +0200 - - SVG: Remove outdated comment. - - src/cairo-svg-surface.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit 22c799d5b3cae2a98ab927b2b38911ac89cac61e -Author: Emmanuel Pacaud -Date: Mon May 1 22:52:47 2006 +0200 - - SVG: Fix error handling in create_for_document and in composite_image_pattern. - - src/cairo-svg-surface.c | 20 ++++++++++++-------- - 1 files changed, 12 insertions(+), 8 deletions(-) - -commit 6f49f7b76d69c185d6f97e50d8a57914a9a9fca1 -Author: Emmanuel Pacaud -Date: Mon May 1 22:51:25 2006 +0200 - - SVG: Add an additionnal API for creating SVG 1.1 or 1.2 files. - - And update documentation. - - doc/public/cairo-sections.txt | 4 + - doc/public/tmpl/cairo-svg.sgml | 46 +++++++++++ - src/cairo-svg-surface.c | 164 +++++++++++++++++++++++++++++++++------ - src/cairo-svg.h | 18 +++++ - 4 files changed, 206 insertions(+), 26 deletions(-) - -commit 2e4d0e5ba71fc320e2b96526a28b654231cb9dbe -Author: Emmanuel Pacaud -Date: Mon May 1 22:50:42 2006 +0200 - - SVG: Some variable/type renaming. - - src/cairo-svg-surface.c | 50 +++++++++++++++++++++++----------------------- - 1 files changed, 25 insertions(+), 25 deletions(-) - -commit e5ea8268b0c693b7b0940d2f638c94dff93e8d9b -Author: Emmanuel Pacaud -Date: Mon May 1 22:49:58 2006 +0200 - - SVG: Reenable optimisation of CLEAR and SOURCE in paint when there's - no active clipping path. - - src/cairo-svg-surface.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 55685d7173adc2e13c21f8830aa38ffc7d1e026f -Author: Emmanuel Pacaud -Date: Mon May 1 22:49:29 2006 +0200 - - SVG: Code cleanup. - - src/cairo-svg-surface.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 926bb6480c0542a0928e8b109009be4b24c81344 -Author: Emmanuel Pacaud -Date: Mon May 1 22:47:41 2006 +0200 - - SVG: Initial support of operators support via image fallbacks. - - We need to add a public API that will let user select - a compatibility level regarding produced SVG files. - - This patch also plugs a memleak. - - src/cairo-svg-surface.c | 100 +++++++++++++++++++++++++++++++--------------- - 1 files changed, 67 insertions(+), 33 deletions(-) - -commit 061d5088985a5e0b16202a4f031938772749940a -Author: Emmanuel Pacaud -Date: Mon May 1 22:43:15 2006 +0200 - - SVG: Sort of working implementation of a SVG backend with paginated surface - support. - - Unoptimized and with memory leaks. - - src/cairo-svg-surface.c | 134 ++++++++++++++++++++++++++++++++++------------- - 1 files changed, 97 insertions(+), 37 deletions(-) - -commit 59dcb95ce5fed8264bc161979e615609c38ace2d -Author: Emmanuel Pacaud -Date: Mon May 1 22:41:12 2006 +0200 - - SVG: First pass for analyze-surface support - - src/cairo-svg-surface.c | 92 +++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 85 insertions(+), 7 deletions(-) - -commit 0625d4cd3fb6145e7f9a7474d03945a497b12406 -Author: Emmanuel Pacaud -Date: Mon May 1 22:15:38 2006 +0200 - - SVG: Ignore SVG test files. - - test/.gitignore | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit d1dcbbb8c34ed160d2b24a9afc8f30ac9de87d91 -Author: Emmanuel Pacaud -Date: Tue Apr 25 22:48:21 2006 +0200 - - SVG: Update rgb24 reference files. - (cherry picked from 7173951535f4b95da37cbf3d51143deeec95e47a commit) - - test/show-text-current-point-svg-rgb24-ref.png | Bin 4236 -> 2398 bytes - test/text-antialias-gray-svg-rgb24-ref.png | Bin 1077 -> 1033 bytes - test/text-antialias-none-svg-rgb24-ref.png | Bin 1077 -> 1033 bytes - test/text-antialias-subpixel-svg-rgb24-ref.png | Bin 1077 -> 1033 bytes - test/text-pattern-svg-rgb24-ref.png | Bin 2428 -> 2490 bytes - 5 files changed, 0 insertions(+), 0 deletions(-) - -commit bdc1c1ac783f1d2bda742ea7150de2c4b0751a29 -Author: Emmanuel Pacaud -Date: Mon May 1 22:12:20 2006 +0200 - - Copy content property when doing a snapshot of a meta surface. - - src/cairo-meta-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 6a33993b1510d1c0d311f4a10832ab2bc5ea8f4e -Merge: b920dfd... 3aa5d76... -Author: Emmanuel Pacaud -Date: Mon May 1 22:01:38 2006 +0200 - - Merge branch 'origin' - -commit b920dfd3df7ac1a0e49b7417b710f111a3780700 -Author: Emmanuel Pacaud -Date: Mon May 1 21:59:53 2006 +0200 - - SVG: Reenable operator tests, and rgb24 surface are meta-surfaces. - - test/cairo-test.c | 10 +--------- - 1 files changed, 1 insertions(+), 9 deletions(-) - -commit 3aa5d76d23ad9005d296fbb852e75924b0933c82 -Author: Carl Worth -Date: Sat Apr 29 14:28:21 2006 -0700 - - Add missing file leaky-dash-ref.png - - test/leaky-dash-ref.png | Bin 0 -> 241 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 516ac16de1ac0cab8e2972e2ac1443fd58c39746 -Author: Henning Noren -Date: Fri Apr 28 07:04:56 2006 -0700 - - Fix PS Surface Memleak - - Fixes leak of 16 bytes when calling _cairo_ps_surface_finish by never freeing - the closure allocated in _word_wrap_stream_create. - - src/cairo-ps-surface.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit 9729fe60246c7d98ddc1f690b924cd10daabf096 -Author: Carl Worth -Date: Thu Apr 27 09:54:58 2006 -0700 - - Add line-width-scale test to demonstrate cairo_set_line_width bug - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/line-width-scale-ps-argb32-ref.png | Bin 0 -> 1470 bytes - test/line-width-scale-ref.png | Bin 0 -> 4884 bytes - test/line-width-scale.c | 184 +++++++++++++++++++++++++++++++ - 5 files changed, 187 insertions(+), 0 deletions(-) - -commit 5821d88119740dbbd489909f3bde2f41c7e7ce71 -Author: Carl Worth -Date: Thu Apr 27 11:45:26 2006 -0700 - - Correct documentation to say "user space", not "user-space" where appropriate. - - src/cairo.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 5515191f84bb837383278495f1f7034e7a97bdce -Author: Emmanuel Pacaud -Date: Tue Apr 25 21:55:56 2006 +0200 - - Use CLEAR operator in mask.c in order to not trig image fallback - for polygon masking. - (cherry picked from 30b2d1c5df9d1c6b536838a6a3407fdfa7198e29 commit) - - test/mask.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 9bca27a1adc89b12905ec95ebb4e006830010df1 -Author: Emmanuel Pacaud -Date: Sun Apr 23 22:55:37 2006 +0200 - - Optimisation of CLEAR operator in meta-surface. - - This optimisation takes care to not replay what was done - before surface is cleared. We don't erase recorded commands - since we may have earlier snapshots of this surface. - (cherry picked from 926e2494ca2211e9117ab70fc427208d125e1bd5 commit) - - src/cairo-meta-surface-private.h | 3 +++ - src/cairo-meta-surface.c | 14 +++++++++++++- - 2 files changed, 16 insertions(+), 1 deletions(-) - -commit a7320589207088351c035df55644f1d94600f313 -Author: Emmanuel Pacaud -Date: Thu Apr 20 22:07:52 2006 +0200 - - Implement paginated create_similar, moving similar images down to PS and PDF. - - The new paginated create_similar simply forwards to target backend create_similar. - - We maintain the fact that PS and PDF surfaces are returning image - surfaces for create_similar by moving that explicitly to their own - create_similar functions. - - (This commit is the combination of the following original commits: - - 6b69e8c012adb4f2fc2ee9c1579fed8214e8f510 - 2589db92a4395f8e900dbc4eafc45982f0d985d3 - ) - - src/cairo-paginated-surface.c | 9 +-------- - src/cairo-pdf-surface.c | 7 ++++--- - src/cairo-ps-surface.c | 15 ++++++++++++++- - 3 files changed, 19 insertions(+), 12 deletions(-) - -commit e1be80b02080955e29d17c50118471158593b86f -Author: Carl Worth -Date: Thu Apr 27 06:02:46 2006 -0700 - - paginated: Remove memory leak of analysis surface from _paint_page - - Thanks to Henning Noren for pointing this out. - - src/cairo-paginated-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 09a51a4e037473fc104c788c87730b7e97d9fd26 -Author: Carl Worth -Date: Thu Apr 27 05:44:57 2006 -0700 - - Add reference to cairo_surface_set_user_data in docs. for cairo_image_surface_create_for_data - - src/cairo-image-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 08733a2228ac4b2739355b536adf955d982a40f0 -Author: Carl Worth -Date: Wed Apr 26 21:22:58 2006 -0700 - - Move 1.4 schedule up. Add more bugs from sunmoon1997 - - To hit the Firefox 3 schedule in early 2007 we'll need to have a 1.4 release - out much sooner. Let's shoot for October 2006 which gives 6 months between - 1.2 and 1.4. - - Also, sunmoon1997 has identified a couple more important issues to be fixed - before 1.2 releases. - - ROADMAP | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit b10a0a9a21216bd4ddcc53a566aac409333ef294 -Author: Carl Worth -Date: Wed Apr 26 15:13:41 2006 -0700 - - Add a couple more items to the 1.2.0 ROADMAP - - ROADMAP | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit c7a45ab49b98225152542370905b593bb8a14188 -Author: Carl Worth -Date: Wed Apr 26 14:42:20 2006 -0700 - - Update ROADMAP with suggestions from discussion of 1.1.2 snapshot - - ROADMAP | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 9ab4b81a096bd5f9839b90cb2a3cdafa2460fd55 -Author: Christian Biesinger -Date: Thu Apr 27 00:51:01 2006 +0200 - - Use a single LDADD variable instead of a per-test one - to avoid repeating the list of tests. - - test/Makefile.am | 93 ++++------------------------------------------------- - 1 files changed, 7 insertions(+), 86 deletions(-) - -commit 7601a07ae942be8e63263ab7c7e559d7665c3b81 -Author: Carl Worth -Date: Wed Apr 26 14:34:02 2006 -0700 - - Remove cairo.def from the generated tar file. It's not useful there. - - ROADMAP | 230 ++++++++++++++++++++++++++++--------------------------- - src/Makefile.am | 3 - - 2 files changed, 118 insertions(+), 115 deletions(-) - -commit 74ec21b2a7f3435cb4f8ab152fdfb9381bb9eef6 -Author: Behdad Esfahbod -Date: Wed Mar 15 14:02:14 2006 -0500 - - WIN32: Define SHADEBLENDCAPS and SB_NONE if they are not defined. (from Tor Lillqvist) - (cherry picked from d3ff5228a205ffb29e85907830d5fc72e2ef5358 commit) - - src/cairo-win32-private.h | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit e0a2e1fd14a53e646fb6b1a861fd9ca78aa6b603 -Author: Carl Worth -Date: Wed Apr 26 12:51:54 2006 -0700 - - Add leaky-dash test case demonstrating bug #4863. - - Test case for bug #4863: - - stroking problems with wide dashed lines - https://bugs.freedesktop.org/show_bug.cgi?id=4863 - - test/.gitignore | 1 + - test/Makefile.am | 3 ++ - test/leaky-dash.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 72 insertions(+), 0 deletions(-) - -commit e4b3cb1e71549af6910665e99d2a0dd57e30cede -Author: Carl Worth -Date: Wed Apr 26 12:49:58 2006 -0700 - - Remove deleted reference images from Makefile.am - - test/Makefile.am | 33 +-------------------------------- - 1 files changed, 1 insertions(+), 32 deletions(-) - -commit 7110c168f7edadcedaea74a73b7ac6f095165931 -Author: Carl Worth -Date: Wed Apr 26 12:36:22 2006 -0700 - - Remove redeundant -rgb24-ref.png images. - - In several cases the -rgb24 reference images were identical to the -ref images. - So we change the logic to find the latter if the former doesn't exist, and then - we remove the redundant images. - - test/a8-mask-rgb24-ref.png | Bin 128 -> 0 bytes - test/cairo-test.c | 20 +++++++++++++------- - test/caps-joins-alpha-rgb24-ref.png | Bin 2283 -> 0 bytes - test/caps-joins-rgb24-ref.png | Bin 1398 -> 0 bytes - test/caps-sub-paths-rgb24-ref.png | Bin 186 -> 0 bytes - test/clip-all-rgb24-ref.png | Bin 114 -> 0 bytes - ...ite-integer-translate-over-repeat-rgb24-ref.png | Bin 353 -> 0 bytes - .../composite-integer-translate-over-rgb24-ref.png | Bin 13041 -> 0 bytes - ...omposite-integer-translate-source-rgb24-ref.png | Bin 14017 -> 0 bytes - test/create-from-png-rgb24-ref.png | Bin 115 -> 0 bytes - test/create-from-png-stream-rgb24-ref.png | Bin 115 -> 0 bytes - test/dash-caps-joins-rgb24-ref.png | Bin 2465 -> 0 bytes - test/dash-offset-negative-rgb24-ref.png | Bin 170 -> 0 bytes - test/filter-nearest-offset-rgb24-ref.png | Bin 254 -> 0 bytes - test/imagediff.c | 15 +++++++++------ - test/leaky-polygon-rgb24-ref.png | Bin 344 -> 0 bytes - test/line-width-rgb24-ref.png | Bin 199 -> 0 bytes - test/linear-gradient-rgb24-ref.png | Bin 11700 -> 0 bytes - test/move-to-show-surface-rgb24-ref.png | Bin 115 -> 0 bytes - test/paint-rgb24-ref.png | Bin 116 -> 0 bytes - test/paint-source-alpha-rgb24-ref.png | Bin 248 -> 0 bytes - test/paint-with-alpha-rgb24-ref.png | Bin 255 -> 0 bytes - test/path-data-rgb24-ref.png | Bin 523 -> 0 bytes - test/rectangle-rounding-error-rgb24-ref.png | Bin 298 -> 0 bytes - test/self-copy-rgb24-ref.png | Bin 291 -> 0 bytes - test/show-glyphs-many-rgb24-ref.png | Bin 115 -> 0 bytes - test/show-text-current-point-rgb24-ref.png | Bin 2173 -> 0 bytes - test/source-clip-rgb24-ref.png | Bin 180 -> 0 bytes - test/surface-pattern-rgb24-ref.png | Bin 194 -> 0 bytes - test/text-antialias-gray-rgb24-ref.png | Bin 995 -> 0 bytes - test/text-antialias-none-rgb24-ref.png | Bin 284 -> 0 bytes - test/text-antialias-subpixel-rgb24-ref.png | Bin 1121 -> 0 bytes - test/transforms-rgb24-ref.png | Bin 318 -> 0 bytes - test/translate-show-surface-rgb24-ref.png | Bin 115 -> 0 bytes - test/unantialiased-shapes-rgb24-ref.png | Bin 4449 -> 0 bytes - 35 files changed, 22 insertions(+), 13 deletions(-) - -commit fe8bf47afc11b12034fd2c92caf424c8911d630b -Author: Zhe Su -Date: Tue Apr 25 10:20:42 2006 -0700 - - Support fontconfig embeddedbitmap option/handle transformation issue as well. - - src/cairo-ft-font.c | 24 +++++++++++++++++++++--- - 1 files changed, 21 insertions(+), 3 deletions(-) - -commit 90b7a2d5fc5d195a0e521e48d17a78a98b53b224 -Author: Carl Worth -Date: Tue Apr 25 09:47:30 2006 -0700 - - Increment CAIRO_VERSION to 1.1.3 after making the 1.1.2 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d5dd5e6ebc43db103071b8b86284f4e38572b053 -Author: Carl Worth -Date: Tue Apr 25 09:12:30 2006 -0700 - - Remove from EXTRA_DIST reference images which don't exist - - test/Makefile.am | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -commit e89de1030eae71da469c9c4c7176d0fdfe0df595 -Author: Carl Worth -Date: Tue Apr 25 08:56:23 2006 -0700 - - Change release targets as appropriate for a snapshot, not a release. - - The big change here is to change the upload directory to be the snapshots directory - rather than the releases directory. We also use make dist rather than make distcheck - since there are currently a few tests still failing. - - Makefile.am | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 3d6cdc996f3a3f4d54d0d8926daa3973d69e4dc2 -Author: Carl Worth -Date: Tue Apr 25 08:54:59 2006 -0700 - - Add release vs. snapshot distinction to version increment instructions - - RELEASING | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 68c5382b6cdc442f3057b8e4eed2dfe7084ef7f1 -Author: Carl Worth -Date: Tue Apr 25 08:51:08 2006 -0700 - - Increment CAIRO_VERSION to 1.1.2 and libtool versioning to 6:0:4 - - configure.in | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 3002c6cc8b4722a324de27a20f04ae810b6dc573 -Author: Carl Worth -Date: Tue Apr 25 08:44:45 2006 -0700 - - Add some notes for the 1.1.2 snapshot - - NEWS | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - RELEASING | 4 ++- - 2 files changed, 116 insertions(+), 1 deletions(-) - -commit a0df6fa696d44533adec1ecec7398e851b2eb37a -Author: Carl Worth -Date: Tue Apr 25 07:07:48 2006 -0700 - - Update PS and PDF reference images for change in font options - - test/show-text-current-point-pdf-argb32-ref.png | Bin 2143 -> 3838 bytes - test/show-text-current-point-ps-argb32-ref.png | Bin 638 -> 645 bytes - test/text-antialias-gray-pdf-argb32-ref.png | Bin 945 -> 1004 bytes - test/text-antialias-gray-ps-argb32-ref.png | Bin 305 -> 306 bytes - test/text-antialias-none-pdf-argb32-ref.png | Bin 945 -> 1004 bytes - test/text-antialias-none-ps-argb32-ref.png | Bin 305 -> 306 bytes - test/text-antialias-subpixel-pdf-argb32-ref.png | Bin 945 -> 1004 bytes - test/text-antialias-subpixel-ps-argb32-ref.png | Bin 305 -> 306 bytes - 8 files changed, 0 insertions(+), 0 deletions(-) - -commit 6237437f412d9d007e1c49c33f6e81117b612d39 -Merge: 22ab0e5... f1c3754... -Author: Carl Worth -Date: Tue Apr 25 07:02:41 2006 -0700 - - Merge branch 'behdad-colored-fails' into cairo - -commit f1c37547530c0c6c134526ea4bac7d11013160f1 -Author: Behdad Esfahbod -Date: Tue Apr 25 09:58:48 2006 -0400 - - Use white on red for failures. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9668b6592f805b6e05f9e75354956e4119483b6a -Author: Behdad Esfahbod -Date: Tue Apr 25 09:03:26 2006 -0400 - - Set background color to red for test failures printing on a terminal. - - test/cairo-test.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 22ab0e5f1615e28f77d8dc0c8a26929e0f0279b6 -Author: Carl Worth -Date: Tue Apr 25 05:44:08 2006 -0700 - - Fix default font options for PS and PDF backends. - - The paginated surface layer was missing its get_font_options function. - It now defers to the target surface. The PDF backend already had a - get_font_options function, but the PS backend was also missing it. - - This should fix the problem with 72DPI hinting seen in glyph paths in - PostScript output. - - Thanks to Owen Taylor for identifying this problem and the correct - fix. - - src/cairo-paginated-surface.c | 11 ++++++++++- - src/cairo-pdf-surface.c | 6 +++--- - src/cairo-ps-surface.c | 12 +++++++++++- - 3 files changed, 24 insertions(+), 5 deletions(-) - -commit 6723547f0035e6c41abee165ebefb7406e40b7d8 -Merge: 8d635a3... e912512... -Author: Behdad Esfahbod -Date: Tue Apr 25 08:28:59 2006 -0400 - - Merge branch 'configure-backends' - -commit e912512c6ddff517f3afa4635bbaa81a869475c8 -Author: Behdad Esfahbod -Date: Tue Apr 25 08:26:35 2006 -0400 - - Better message when backends are disabled. - - configure.in | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 05fc4ca32363366a3637443d525834bc91b5203d -Author: Behdad Esfahbod -Date: Tue Apr 25 07:30:16 2006 -0400 - - Unified handling of --enable-backend options. - - configure.in | 203 +++++++++++++++++++++++++++------------------------------ - 1 files changed, 96 insertions(+), 107 deletions(-) - -commit 8d635a3aa967b16de5047eceadf3d350d1169a76 -Author: Keith Packard -Date: Tue Apr 25 04:04:10 2006 -0700 - - PDF: Execute entire path in user coordinates when stroking so that line params are interpreted correctly - - src/cairo-pdf-surface.c | 95 ++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 86 insertions(+), 9 deletions(-) - -commit 134c508bf04d8674af632644095b78256f2e350d -Author: Carl Worth -Date: Tue Apr 25 03:45:37 2006 -0700 - - PDF: Add SMask output and simplify analysis to support all OVER operations. - - With this SMask support, the PDF backend is now able to handle a very - large subset of the things that are likely to be thrown at it in - common operation, (for example, when handling images and text from web - pages). - - src/cairo-pdf-surface.c | 289 ++++++++++++++++++++++++++++++++--------------- - 1 files changed, 199 insertions(+), 90 deletions(-) - -commit c0721190438826d7222ed87c36b4e48e57ad0323 -Author: Carl Worth -Date: Tue Apr 25 02:33:18 2006 -0700 - - PDF: Remove unused backend functions. - - Since the switch to using paginated, we have a guarantee that the following functions - will never be called. So we drop them now: - - _cairo_pdf_surface_composite - _cairo_pdf_surface_fill_rectangles - _cairo_pdf_surface_composite_trapezoids - _cairo_pdf_surface_old_show_glyphs - - src/cairo-pdf-surface.c | 366 +---------------------------------------------- - 1 files changed, 4 insertions(+), 362 deletions(-) - -commit bef621e870e3d4038e00ed56ad40d726d5a7ca77 -Author: Carl Worth -Date: Tue Apr 25 01:56:51 2006 -0700 - - Augment tests to do better testing of paths/images with alpha. - - Add a new cairo_test_paint_checkered function so that tests that draw - with alpha can easily put an easy-to-see checkered background in place - first. - - Add new tests caps-joins-alpha and paint-source-alpha that do simple - tests of strokes and image painting with source pattern alpha. - - Also, add the checkered background to paint-with-alpha for - consistency. - - test/.gitignore | 2 + - test/Makefile.am | 8 +++ - test/cairo-test.c | 45 ++++++++++++++++ - test/cairo-test.h | 3 + - test/caps-joins-alpha-ref.png | Bin 0 -> 2434 bytes - test/caps-joins-alpha-rgb24-ref.png | Bin 0 -> 2283 bytes - test/caps-joins-alpha.c | 94 +++++++++++++++++++++++++++++++++ - test/paint-source-alpha-ref.png | Bin 0 -> 258 bytes - test/paint-source-alpha-rgb24-ref.png | Bin 0 -> 248 bytes - test/paint-source-alpha.c | 67 +++++++++++++++++++++++ - test/paint-with-alpha-ref.png | Bin 164 -> 268 bytes - test/paint-with-alpha-rgb24-ref.png | Bin 142 -> 255 bytes - test/paint-with-alpha.c | 9 ++- - 13 files changed, 225 insertions(+), 3 deletions(-) - -commit a5afc59d0ad90125c0593ab60c8e1e01f51bdc3c -Author: Carl Worth -Date: Mon Apr 24 16:16:19 2006 -0700 - - Add PDF-specific reference image for scale-source-surface-paint - - It only fails because the PDF ouput doesn't preserve the NEAREST filter attribute. - There might be a way to get something like this in the PDF, but it's not the point - of the test. - - test/scale-source-surface-paint-pdf-argb32-ref.png | Bin 0 -> 152 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 32a7edc42dae507678e4eed98fcb41802b8ee69c -Author: Carl Worth -Date: Mon Apr 24 16:11:21 2006 -0700 - - PDF: Fix surface pattern transformation and support for EXTEND_NONE. - - There's a bunch of careful matrix transformation here needed to - resolve the differences between cairo and PDF pattern matrices, - (primarily due to the different location for the origin). - - This fixes the several PDF test suite failures that recently appeared - when we switched from ARGB32 to RGB24 source surface patterns. - - src/cairo-pdf-surface.c | 85 +++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 72 insertions(+), 13 deletions(-) - -commit a1bba71eb9442a1c3a5f9fb227353971d58cecba -Author: Carl Worth -Date: Mon Apr 24 14:51:31 2006 -0700 - - Trivial indentation fix - - test/mask-ctm.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 893239248a9a6ef1a7b9f770aec334f20c5c0861 -Author: Carl Worth -Date: Mon Apr 24 14:50:52 2006 -0700 - - Prefer RGB24 over ARGB32 for source surfaces in tests. - - Some tests were using source surfaces created as ARGB32 even though all - alpha values are entirely opaque. This meant these tests were triggering - more fallbacks than strictly necessary for what the tests are ttrying to - do. - - test/filter-nearest-offset.c | 2 +- - test/move-to-show-surface.c | 2 +- - test/paint-with-alpha.c | 2 +- - test/scale-source-surface-paint.c | 2 +- - test/source-surface-scale-paint.c | 2 +- - test/translate-show-surface.c | 2 +- - 6 files changed, 6 insertions(+), 6 deletions(-) - -commit 28e25e1cce0a4e4c612743effb8927c5cb6b3c5b -Author: Carl Worth -Date: Mon Apr 24 12:40:30 2006 -0700 - - Fix broken error-checking in cairo_{ps,pdf}_surface_set_dpi - - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 12c4c375af7efe367bb6128babd14b4c1d05be65 -Author: Carl Worth -Date: Fri Apr 21 02:46:20 2006 -0700 - - Fix invalid restore that was causing subsequent pages after first to be inverted - - src/cairo-pdf-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit e0bf1378044d606273ee876663498878e0b2edd4 -Author: Christian Biesinger -Date: Sun Apr 23 21:20:55 2006 +0200 - - Fix create_xcb_surface signature - - test/cairo-test.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 810d9d19854f671d6a5d985b950d7442e59176e3 -Author: Carl Worth -Date: Thu Apr 20 10:54:01 2006 -0700 - - PDF: Fix reference images inadvertently committed as PDF not PNG - - test/text-antialias-gray-pdf-argb32-ref.png | Bin 7264 -> 945 bytes - test/text-antialias-none-pdf-argb32-ref.png | Bin 7264 -> 945 bytes - test/text-antialias-subpixel-pdf-argb32-ref.png | Bin 7264 -> 945 bytes - 3 files changed, 0 insertions(+), 0 deletions(-) - -commit 7fa8bfd738f939c06480c40162e347a2ecadd4d6 -Author: Carl Worth -Date: Thu Apr 20 10:01:45 2006 -0700 - - PDF: Cleanup error handling of emit_image_rgb_data - - src/cairo-pdf-surface.c | 37 ++++++++++++++++++++----------------- - 1 files changed, 20 insertions(+), 17 deletions(-) - -commit c5d5687ac09049ca5b942993fc259e54ad5b6721 -Author: Carl Worth -Date: Wed Apr 19 11:04:37 2006 -0700 - - PDF: Add simple implementation of _cairo_pdf_surface_show_glyphs (text as paths). - - This isn't very exciting text output---it simply turns every call to - cairo_show_glyphs into a single filled path. But at the very least, - text will no longer trigger image fallbacks for the PDF backend. - - With this commit, the following tests change from all-fallback to - all-native for the PDF backend: - - show-text-current-point - text-antialias-gray - text-antialias-none - text-antialias-subpixel - text-cache-crash - text-rotate - - There are rasterization differences in the output (cairo vs. freetype) - so this commit also adds new PDF-specific reference images for some of - those tests so that the suite continues to report PASS. - - src/cairo-pdf-surface.c | 27 +++++++- - test/show-text-current-point-pdf-argb32-ref.png | Bin 0 -> 2143 bytes - test/text-antialias-gray-pdf-argb32-ref.png | 80 +++++++++++++++++++++++ - test/text-antialias-none-pdf-argb32-ref.png | 80 +++++++++++++++++++++++ - test/text-antialias-subpixel-pdf-argb32-ref.png | 80 +++++++++++++++++++++++ - 5 files changed, 264 insertions(+), 3 deletions(-) - -commit ab2546009ff246bd0e7bbc07437330cf307e00f7 -Author: Carl Worth -Date: Tue Apr 18 23:31:16 2006 -0700 - - Use fallbacks in PDF backend for CAIRO_ANTIALIAS_NONE. - - Perhaps there's a way to preserve that hint in PDF output, but until - we have code that actually does that, the correct thing to do is to - call it unsupported and let the fallbacks do their thing. - - With this commit, the two regressions that were recently introduced - now pass again. Specifically: - - rectangle-rounding-error - unantialiased-shapes - - src/cairo-pdf-surface.c | 16 ++++++++++++++-- - 1 files changed, 14 insertions(+), 2 deletions(-) - -commit 241c6480cd9a5f63ea67f8cb1407f22503697ca3 -Author: Carl Worth -Date: Tue Apr 18 23:24:14 2006 -0700 - - Add implementation of _cairo_pdf_surface_paint (and fix emit_surface_pattern). - - Fix general broken-ness in emit_surface_pattern, enough so that a new - implementation of _cairo_pdf_surface_paint does something useful. With - this commit, the following tests switch from all-fallback to - all-native and still pass the test suite with flying colors: - - caps-joins - caps-sub-paths - clip-fill-rule - clip-fill-rule-pixel-aligned - clip-nesting - clip-twice - dash-caps-joins - dash-offset-negative - leaky-polygon - line-width - paint - path-data - transforms - - Meanwhile, the following two tests also switch from fallback to - native, but cause the test suite to complain about failures. These - both look like a mostly harmless failure to respect the ANTIALIAS_NONE - hint in the PDF output: - - rectangle-rounding-error-pdf-argb32-out.pdf - unantialiased-shapes-pdf-argb32-out.pdf - - src/cairo-pdf-surface.c | 65 +++++++++++++++++++++++++++++++++------------- - 1 files changed, 46 insertions(+), 19 deletions(-) - -commit 8be1697f2bd8026b28f2f24c2fab967ee01b6d8c -Author: Carl Worth -Date: Tue Apr 18 23:18:39 2006 -0700 - - Fix stale code in comment. - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a98b44a1deab5fd15607b50df63189a74a269909 -Author: Christian Biesinger -Date: Wed Apr 19 02:34:24 2006 +0200 - - Fixing bad merge - - The merge in 66ed9811cc542d99cb5a6b6b792c9a9f0832fbf9 - re-added this line, which makes cairo link to C++ - libraries even on non-BeOS systems. - - This was originally fixed in 69acfa6576e8d2b97e3e3b8c06badf5486ae0315 - - src/Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit b1b699593b820ac4e011f89ad700f052b2f20205 -Author: Carl Worth -Date: Tue Apr 18 16:53:23 2006 -0700 - - Add support for _cairo_pdf_surface_stroke. - - Generalize all functions that emit a source pattern to emit both - for the stroking and non-stroking PDF properties. Also add an - implementation of _cairo_pdf_surface_stroke. - - With this commit in place, the following tests change from - all-fallback to all-native output while no tests report any new - failures: - - dash-zero-legnth - fill-and-stroke - multi-page - new-sub-path - rel-path - self-intersecting - - src/cairo-pdf-surface.c | 144 ++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 130 insertions(+), 14 deletions(-) - -commit efbe40bb8f770fbf60de794488803d3edacd7ed6 -Author: Christian Biesinger -Date: Wed Apr 19 00:29:48 2006 +0200 - - Use calloc rather than malloc+memset - - pixman/src/icpixels.c | 3 +-- - pixman/src/ictrap.c | 6 +----- - src/cairo-glitz-surface.c | 4 +--- - 3 files changed, 3 insertions(+), 10 deletions(-) - -commit eadb26a1c13da1af292f0262e108878133cbadf0 -Author: Carl Worth -Date: Tue Apr 18 15:19:36 2006 -0700 - - Add new PS-specific reference image for new-sub-path. - - test/new-sub-path-ps-argb32-ref.png | Bin 0 -> 316 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 448e904b2a64769aa9cfd8ea011c2b5fb6ec883b -Merge: cb77876... ffab259... -Author: Carl Worth -Date: Tue Apr 18 15:18:31 2006 -0700 - - Merge branch 'cairo' into new-sub-path - - Conflicts: - - src/cairo-path-stroke.c - src/cairo-pdf-surface.c - src/cairo-ps-surface.c - -commit ffab2592fc5d0ccd498aff2f4e645eefe351b61b -Author: Emmanuel Pacaud -Date: Tue Apr 18 21:52:06 2006 +0200 - - Clear completely the temporary surface between each subtest in mask.c - - That helps SVG backend to pass this test, since CAIRO_OPERATOR_CLEAR on a part of a surface use "comp-op" element which is not supported with current librsvg. - - test/mask.c | 8 +++----- - 1 files changed, 3 insertions(+), 5 deletions(-) - -commit 9c65dee86b469c1eedf2690334d5a2b4afc849c8 -Merge: 36fb36f... 3f84df9... -Author: Emmanuel Pacaud -Date: Tue Apr 18 21:23:59 2006 +0200 - - Merge branch 'master' of git+ssh://emmanuel@git.cairographics.org/git/cairo - -commit 36fb36fe8c4d8b2ac2b2de3f53842ae196bdca04 -Author: Emmanuel Pacaud -Date: Tue Apr 18 21:22:58 2006 +0200 - - SVG: Add validating ref file for unantialias tests. - - Antialias property is not directly supported by SVG, and probably not the most wanted feature. In the future, we could use an image fallback in order to emulate it, or try to use text-rendering, shape-rendering and image-rendering - properties (http://www.w3.org/TR/SVG/painting.html#RenderingProperties). - - test/text-antialias-none-svg-argb32-ref.png | Bin 0 -> 1077 bytes - test/text-antialias-none-svg-rgb24-ref.png | Bin 0 -> 1077 bytes - test/text-antialias-subpixel-svg-argb32-ref.png | Bin 0 -> 1077 bytes - test/text-antialias-subpixel-svg-rgb24-ref.png | Bin 0 -> 1077 bytes - test/unantialiased-shapes-svg-argb32-ref.png | Bin 0 -> 19689 bytes - test/unantialiased-shapes-svg-rgb24-ref.png | Bin 0 -> 19689 bytes - 6 files changed, 0 insertions(+), 0 deletions(-) - -commit 3f84df97ddd639c9e1d3706be7c9c86eba22c5bb -Author: Carl Worth -Date: Tue Apr 18 11:31:59 2006 -0700 - - Enable real analysis for _cairo_pdf_surface_paint. - - After this patch we have three PDF tests passing with native output: - - clip-all - fill-rule - nil-surface - - src/cairo-pdf-surface.c | 61 ++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 55 insertions(+), 6 deletions(-) - -commit 170a028bfa00286324d8598d831e570d868a26f1 -Author: Emmanuel Pacaud -Date: Mon Apr 17 23:26:30 2006 +0200 - - SVG: Fix mask and try to support CAIRO_CONTENT_ALPHA. - - Cairo and SVG differ in their implementation of mask. Cairo only uses alpha channel where SVG uses all channels. So, before using a surface for masking, we use a filter that sets RGB channels to 1.0. - - Support for CAIRO_CONTENT_ALPHA is similar and use the same filter when a SVG alpha surface is composited. - - src/cairo-svg-surface.c | 49 ++++++++++++++++++++++++++++++++++++++++++---- - 1 files changed, 44 insertions(+), 5 deletions(-) - -commit 9e2a2ea0da93065c46a6d6249f98a319ee6158dd -Author: Emmanuel Pacaud -Date: Mon Apr 17 11:07:15 2006 +0200 - - SVG: Don't insert /n/r in base64 encoded image data - - That doesn't work since libxml replace them by - They were intended to ease readability of generated files. - - src/cairo-svg-surface.c | 7 ------- - 1 files changed, 0 insertions(+), 7 deletions(-) - -commit c01805bafd5ad68263a3e644787cd7c04838124b -Author: Emmanuel Pacaud -Date: Mon Apr 17 10:21:50 2006 +0200 - - SVG: Don't check for content type in create_similar, and mark surface as modified when clearing it. - - src/cairo-svg-surface.c | 5 +---- - 1 files changed, 1 insertions(+), 4 deletions(-) - -commit 62d2f7cbf3718cfc982286ec62878c9d6eff09fa -Author: Emmanuel Pacaud -Date: Mon Apr 17 09:54:03 2006 +0200 - - SVG: Return UNTESTED for test involving operators. - - unbounded-operator, operator-clear, operator-source, clip-operator - - test/cairo-test.c | 15 ++++++++++++++- - 1 files changed, 14 insertions(+), 1 deletions(-) - -commit 347083b3f0be2f07d1953278b8516774253752f1 -Author: Emmanuel Pacaud -Date: Sun Apr 16 16:00:27 2006 +0200 - - SVG: Add reference files for antialiased text tests. - - Currently, text are rendered as paths in SVG files, so, when rendered to png through librsvg, they don't match general reference images. - - test/show-text-current-point-svg-argb32-ref.png | Bin 0 -> 4236 bytes - test/show-text-current-point-svg-rgb24-ref.png | Bin 0 -> 4236 bytes - test/text-antialias-gray-svg-argb32-ref.png | Bin 0 -> 1077 bytes - test/text-antialias-gray-svg-rgb24-ref.png | Bin 0 -> 1077 bytes - test/text-pattern-svg-argb32-ref.png | Bin 0 -> 2643 bytes - test/text-pattern-svg-rgb24-ref.png | Bin 0 -> 2428 bytes - 6 files changed, 0 insertions(+), 0 deletions(-) - -commit 714bb88832f0e6324cd4737aaa37a4ba39f8d14e -Author: Emmanuel Pacaud -Date: Sun Apr 16 15:42:49 2006 +0200 - - SVG: Add support for CAIRO_CONTENT_COLOR in create_similar. - - Also add support for testing this feature in test/cairo-test.c - And a bunch of unwanted commit of sgml files. - - doc/public/tmpl/cairo-beos.sgml | 3 + - doc/public/tmpl/cairo-font-options.sgml | 3 + - doc/public/tmpl/cairo-font.sgml | 3 + - doc/public/tmpl/cairo-ft.sgml | 3 + - doc/public/tmpl/cairo-glitz.sgml | 3 + - doc/public/tmpl/cairo-image.sgml | 3 + - doc/public/tmpl/cairo-matrix.sgml | 3 + - doc/public/tmpl/cairo-paths.sgml | 3 + - doc/public/tmpl/cairo-pattern.sgml | 3 + - doc/public/tmpl/cairo-pdf.sgml | 3 + - doc/public/tmpl/cairo-png.sgml | 3 + - doc/public/tmpl/cairo-ps.sgml | 3 + - doc/public/tmpl/cairo-quartz.sgml | 3 + - doc/public/tmpl/cairo-scaled-font.sgml | 3 + - doc/public/tmpl/cairo-status.sgml | 3 + - doc/public/tmpl/cairo-surface.sgml | 3 + - doc/public/tmpl/cairo-text.sgml | 3 + - doc/public/tmpl/cairo-transforms.sgml | 3 + - doc/public/tmpl/cairo-types.sgml | 3 + - doc/public/tmpl/cairo-version.sgml | 3 + - doc/public/tmpl/cairo-win32-fonts.sgml | 3 + - doc/public/tmpl/cairo-win32.sgml | 3 + - doc/public/tmpl/cairo-xcb-xrender.sgml | 3 + - doc/public/tmpl/cairo-xcb.sgml | 3 + - doc/public/tmpl/cairo-xlib-xrender.sgml | 3 + - doc/public/tmpl/cairo-xlib.sgml | 3 + - doc/public/tmpl/cairo.sgml | 3 + - src/cairo-svg-surface.c | 69 ++++++++++++++++++++++++------- - test/cairo-test.c | 36 ++++++++++++++-- - 29 files changed, 167 insertions(+), 19 deletions(-) - -commit d0356a87f7b274a0721c2644c4a62a8424923eb9 -Author: Behdad Esfahbod -Date: Sat Apr 15 03:58:42 2006 -0400 - - Implement cairo_set_scaled_font(). - - doc/public/tmpl/cairo-beos.sgml | 3 -- - doc/public/tmpl/cairo-font-options.sgml | 3 -- - doc/public/tmpl/cairo-font.sgml | 3 -- - doc/public/tmpl/cairo-ft.sgml | 3 -- - doc/public/tmpl/cairo-glitz.sgml | 3 -- - doc/public/tmpl/cairo-image.sgml | 3 -- - doc/public/tmpl/cairo-matrix.sgml | 3 -- - doc/public/tmpl/cairo-paths.sgml | 3 -- - doc/public/tmpl/cairo-pattern.sgml | 3 -- - doc/public/tmpl/cairo-pdf.sgml | 3 -- - doc/public/tmpl/cairo-png.sgml | 3 -- - doc/public/tmpl/cairo-ps.sgml | 3 -- - doc/public/tmpl/cairo-quartz.sgml | 3 -- - doc/public/tmpl/cairo-scaled-font.sgml | 3 -- - doc/public/tmpl/cairo-status.sgml | 3 -- - doc/public/tmpl/cairo-surface.sgml | 3 -- - doc/public/tmpl/cairo-text.sgml | 3 -- - doc/public/tmpl/cairo-transforms.sgml | 3 -- - doc/public/tmpl/cairo-types.sgml | 3 -- - doc/public/tmpl/cairo-version.sgml | 3 -- - doc/public/tmpl/cairo-win32-fonts.sgml | 3 -- - doc/public/tmpl/cairo-win32.sgml | 3 -- - doc/public/tmpl/cairo-xcb-xrender.sgml | 3 -- - doc/public/tmpl/cairo-xcb.sgml | 3 -- - doc/public/tmpl/cairo-xlib-xrender.sgml | 3 -- - doc/public/tmpl/cairo-xlib.sgml | 3 -- - doc/public/tmpl/cairo.sgml | 3 -- - src/cairo.c | 40 +++++++++++++++++++++++++++++++ - src/cairo.h | 4 +++ - 29 files changed, 44 insertions(+), 81 deletions(-) - -commit db111197ac436ace0c3aceb88a6d7c1abca03b02 -Author: Carl Worth -Date: Fri Apr 14 17:29:19 2006 -0700 - - Fix _cairo_surface_is_opaque to return FALSE not TRUE for non-image surfaces. - - src/cairo-surface.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit e890bfd2bf04a973ead9f5d53d06728165faa28d -Author: Carl Worth -Date: Fri Apr 14 17:26:23 2006 -0700 - - Ignore dash-zero-length - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b7309d065e49ae73ff8d90feca35f6b8f35922d2 -Author: Carl Worth -Date: Fri Apr 14 17:25:54 2006 -0700 - - Farm out the surface and pattern analysis functions away from cairo-ps-surface.c. - - We're setting things up here for better sharing as PDF surface (and - others) now want to do some of the same analysis. - - src/cairo-pattern.c | 44 ++++++++++++++++++++++++++++- - src/cairo-pdf-surface.c | 6 +++- - src/cairo-ps-surface.c | 69 +---------------------------------------------- - src/cairo-surface.c | 28 +++++++++++++++++++ - src/cairoint.h | 8 +++++- - 5 files changed, 83 insertions(+), 72 deletions(-) - -commit a7f4f1b350e158eca394da63eed0e14a97480a5a -Author: Carl Worth -Date: Fri Apr 14 17:03:39 2006 -0700 - - Move analysis of operators from cairo-ps-surface.c to cairo-operator.c - - src/Makefile.am | 1 + - src/cairo-operator.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-ps-surface.c | 73 ++--------------------------- - src/cairoint.h | 7 +++ - 4 files changed, 132 insertions(+), 68 deletions(-) - -commit c7fd35fac2bc7c93e85ccbe50b20529ae4d9479d -Author: Carl Worth -Date: Fri Apr 14 16:50:16 2006 -0700 - - Add tests for PAGINATED_MODE_ANALYZE to PDF (no real analysis yet) - - src/cairo-pdf-surface.c | 39 +++++++++++++++++++++++++++++++++++---- - 1 files changed, 35 insertions(+), 4 deletions(-) - -commit 0e44e798b5f6fd58cc586e40f926d363cd8fff50 -Author: Dom Lachowicz -Date: Fri Apr 14 16:15:29 2006 -0700 - - Change cairo_image_surface_create to zero out surface contents. - - This closes bug #5816: - - Image surfaces do not start out blank by default - https://bugs.freedesktop.org/show_bug.cgi?id=5816 - - This also fixes all of the test suite failures introduced by moving - the CLEAR on blank page optimization up to the paginated surface from - the PS surface. - - pixman/src/icpixels.c | 1 + - src/cairo-image-surface.c | 7 ++++--- - 2 files changed, 5 insertions(+), 3 deletions(-) - -commit e8a0da637fda4a29281cfb4f463169e51c300c42 -Author: Carl Worth -Date: Fri Apr 14 16:18:36 2006 -0700 - - Move optimization of CLEAR on blank page up from PS to paginated surface. - - src/cairo-paginated-surface-private.h | 8 ++++++++ - src/cairo-paginated-surface.c | 30 ++++++++++++++++++++++++++++++ - src/cairo-ps-surface.c | 27 --------------------------- - 3 files changed, 38 insertions(+), 27 deletions(-) - -commit b8fb8dc375d2828a962bac2e1f50f44d8ec8cbee -Author: Carl Worth -Date: Fri Apr 14 15:23:30 2006 -0700 - - Add stub implementations of drawing operations for the PDF backend. - - These new stubs explicitly return UNSUPPORTED unconditionally. This is - no different than the implicit UNSUPPORTED which the analysis surface - was inferring from NULL for 4 of the functions before. - - However, _cairo_pdf_surface_fill was actually trying to draw things, - but without correctly characterizing it during the analysis stage. - This was just an oversight, as the PDF surface was always triggereing - full page fall backs anway due to the initial unsupported paint with - CLEAR. - - Now, we explicitly return UNSUPPORTED for all drawing operations so we - get image fallbacks by design and not by accident. - - src/cairo-pdf-surface.c | 160 ++++++++++++++++++++++++++++++----------------- - 1 files changed, 103 insertions(+), 57 deletions(-) - -commit 2726f684547de7d381e56dce13bb7c025cd75b80 -Author: Carl Worth -Date: Fri Apr 14 14:53:13 2006 -0700 - - Update documentation of cairo_paginated_surface - - src/cairo-paginated-surface-private.h | 12 ++++++++++++ - src/cairo-paginated-surface.c | 29 ++--------------------------- - 2 files changed, 14 insertions(+), 27 deletions(-) - -commit 8d3a800b82ccd4a39bf04cc1d602eb84d90f81d1 -Author: Carl Worth -Date: Fri Apr 14 14:46:59 2006 -0700 - - Add a start_page function to the paginated_surface_backend. - - This allows for any surface using the paginated_surface backend to - easily do stuff at the beginning of each page, (such as writing out - any per-page header necessary). - - This replaces some of the per-page state tracking that the PS surface - was doing, (though it still has some left for its optimization of - CLEAR on a blank page). - - src/cairo-paginated-surface-private.h | 60 ++++++++++++++++++++++++- - src/cairo-paginated-surface.c | 19 ++++++++ - src/cairo-pdf-surface.c | 1 + - src/cairo-ps-surface.c | 78 ++++++++++++++------------------- - src/test-paginated-surface.c | 1 + - 5 files changed, 112 insertions(+), 47 deletions(-) - -commit 687802cca67ce4157725316d769fc28bc75f5dcd -Author: Carl Worth -Date: Fri Apr 14 14:44:16 2006 -0700 - - Obnoxious churn of gtk-doc templates. - - We really need to get these built files out from under version control, (or - else abandon gtk-doc altogether). - - doc/public/tmpl/cairo-svg.sgml | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit d284c2b5a475ff1672dad10e7bf76763877690a3 -Author: Emmanuel Pacaud -Date: Fri Apr 14 23:11:35 2006 +0200 - - SVG: enable SVG backend API documentation in /doc - - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 8 ++++++ - doc/public/tmpl/cairo-svg.sgml | 54 ++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 63 insertions(+), 0 deletions(-) - -commit b9eb4f018e77a3f797116f0915f261d8453b3993 -Author: Emmanuel Pacaud -Date: Fri Apr 14 22:55:48 2006 +0200 - - PDF: Fix typo in documentation. - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e952e0aff89412e67fb72ba2cf3a30c3ddd332b4 -Author: Emmanuel Pacaud -Date: Fri Apr 14 22:53:58 2006 +0200 - - SVG: Add documentation for public API. Fix test filenames and add testing of CAIRO_CONTENT_COLOR - - src/cairo-svg-surface.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - test/cairo-test.c | 6 +++++- - 2 files changed, 52 insertions(+), 1 deletions(-) - -commit f919ba858f405aa5c1cc64e7c25c3de5ffbce88f -Author: Emmanuel Pacaud -Date: Fri Apr 14 22:06:28 2006 +0200 - - SVG: Emulate CLEAR and SOURCE operators on paint call when no clipping region is defined. - - src/cairo-svg-surface.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 8f3c60096d88b3c0368970273828e7a011c5e9dd -Author: Carl Worth -Date: Fri Apr 14 11:33:48 2006 -0700 - - Add a new cairo_paginated_surface_backend_t rather than just a single function pointer. - - src/cairo-paginated-surface-private.h | 17 ++++++++++------- - src/cairo-paginated-surface.c | 29 +++++++++++++++-------------- - src/cairo-pdf-surface.c | 17 +++++++++-------- - src/cairo-ps-surface.c | 27 ++++++++++++++------------- - src/test-paginated-surface.c | 25 +++++++++++++++---------- - 5 files changed, 63 insertions(+), 52 deletions(-) - -commit 5461f25df9888aa5fd79e1e371cd1af2cf8964ab -Author: Carl Worth -Date: Fri Apr 14 11:01:39 2006 -0700 - - Fix _composite_trap_region to restore the original clip when done. - - src/cairo-surface-fallback.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit c81569d2f1b8c396f789f4c49d87772a596862d9 -Author: Carl Worth -Date: Fri Apr 14 10:38:11 2006 -0700 - - Flesh test-paginated-surface out into a complete surface. - - This adds an aactual test_paginated_surface_backend rather than just - having this test surface create a paginated surface around an image - surface. This is a more realistic test of what a paginated surface is - and should be more useful as an example of how to use the paginated - surface, (and in particular the analysis portions). - - src/cairo-image-surface.c | 2 +- - src/cairoint.h | 13 +++ - src/test-paginated-surface.c | 219 +++++++++++++++++++++++++++++++++++++++--- - test/cairo-test.c | 4 +- - 4 files changed, 222 insertions(+), 16 deletions(-) - -commit 41dc06d7111d246d4b5802c700a83e4be9091449 -Author: Carl Worth -Date: Fri Apr 14 10:08:31 2006 -0700 - - Add new PS-specific image for dash-zero-length test. - - This reference image demonstrates the bug that occurs when we emit zero-length - dash segments into a PostScript file with butt caps. - - test/dash-zero-length-ps-argb32-ref.png | Bin 222 -> 214 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 11b4d24671a0527a45971e9fdf245ac28facc822 -Author: Carl Worth -Date: Thu Apr 13 12:56:58 2006 -0700 - - Move cairo_pdf_surface_backend to file end so it's easier to find. - - src/cairo-pdf-surface.c | 66 +++++++++++++++++++++++----------------------- - 1 files changed, 33 insertions(+), 33 deletions(-) - -commit 2078557c5c9e10cf8ae16fb3fa8a225f908ab528 -Author: Jeff Muizelaar -Date: Sun Apr 9 23:11:27 2006 -0400 - - Fix skipping zero length dash segments in dash_start. - - The extra check makes sure zero length segments are not skipped when computing - the dash start state. This is needed so that we get proper line capping if, for - example, the first dash segment has zero length and we have a dash offset of - zero. - - src/cairo-path-stroke.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 5eaf71e77bd975f5865cc059b4aa4d57c096688e -Author: Jeff Muizelaar -Date: Sun Apr 9 23:11:11 2006 -0400 - - Move the test for zero length sub edges below the computation of faces. - - Face computation still works if a line has zero length, all that is needed is a - slope and a point. This patch fixes bug #5561 because the faces are initialized - even if the segment has zero length as expected by - _cairo_stroker_line_to_dashed. - - src/cairo-path-stroke.c | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 20fca01a2cc539df017e442be0cc6ad35353571f -Author: Jeff Muizelaar -Date: Sun Apr 9 23:10:59 2006 -0400 - - Move calculation of slope outside of _cairo_stroker_add_sub_edge. - - This makes the slope calculation more accurate for dashed lines by computing it - once for the entire line instead for each individual dash segment. It also - adjusts stroker_line_to() to match the new convention for - stroker_add_sub_edge(). - - src/cairo-path-stroke.c | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) - -commit 8a2ea660fb59beb4eacaf73978368c8db7a6b584 -Author: Jeff Muizelaar -Date: Sun Apr 9 23:10:46 2006 -0400 - - Check for zero length dashed lines. - - This makes line_to_dashed more like line_to by returning immediately on - degenerate paths. This is needed so that we can do the slope calculation for - the entire line. - - src/cairo-path-stroke.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 584109d5e6160c1e74da0e79b6e024701a354293 -Author: Jeff Muizelaar -Date: Sun Apr 9 23:11:47 2006 -0400 - - Add test case for dashed lines. - - The new test case tests a variety of circumstances involved with zero length dashing. - - test/Makefile.am | 4 ++ - test/dash-zero-length-ps-argb32-ref.png | Bin 0 -> 222 bytes - test/dash-zero-length-ref.png | Bin 0 -> 235 bytes - test/dash-zero-length-rgb24-ref.png | Bin 0 -> 222 bytes - test/dash-zero-length.c | 88 +++++++++++++++++++++++++++++++ - 5 files changed, 92 insertions(+), 0 deletions(-) - -commit f17b347ab443fcc12f9098f9b601334f85d20a30 -Author: Carl Worth -Date: Thu Apr 13 07:59:52 2006 -0700 - - Fix page numbers in PostScript output to start at 1 - - src/cairo-ps-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 6beababd47aabfb4896a878de09d729f287aa714 -Author: Carl Worth -Date: Wed Apr 12 16:19:08 2006 -0700 - - Optimize PostScript file size with procedures instead of builtin operators. - - This is based on a suggestion by Michael Sweet. - - src/cairo-ps-surface.c | 42 +++++++++++++++++++++++++++--------------- - 1 files changed, 27 insertions(+), 15 deletions(-) - -commit d60eaab222fb1ce19ef7bbbf496ad444f07aa703 -Author: Carl Worth -Date: Wed Apr 12 15:48:59 2006 -0700 - - Add simple word wrapping to keep PostScript output within 80 columns or less. - - src/cairo-ps-surface.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 109 insertions(+), 0 deletions(-) - -commit 6a5d8fc7ffb5f425ceffd313b8a875f38126b324 -Merge: b30e281... 0727e3c... -Author: Carl Worth -Date: Wed Apr 12 14:15:08 2006 -0700 - - Merge branch 'ps-type3' into cairo (no bitmap support for type 3 yet). - - Conflicts: - - src/cairo-hash.c - src/cairo-ps-surface.c - -commit b30e281627d86f3c0d0f4d5008bbbf7e77c09350 -Author: Carl Worth -Date: Wed Apr 12 13:55:24 2006 -0700 - - Add documentation for _cairo_output_stream_create_for_file. - - src/cairoint.h | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 193b43001de11945b0ae7ca4ee685590d9f79137 -Author: Carl Worth -Date: Wed Apr 12 14:06:26 2006 -0700 - - Propagate stream status values through _cairo_ps_surface_finish - - src/cairo-ps-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit d9137e56b6a8f1ddb44a01bf34301117b0696f0b -Author: Carl Worth -Date: Wed Apr 12 13:44:14 2006 -0700 - - Use ferror to get error checking for stdio-based output streams. - - src/cairo-output-stream.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 32994379db92ef8208ba11b825b1246e2b442566 -Author: Carl Worth -Date: Wed Apr 12 13:40:05 2006 -0700 - - Fix missing argument to printf in _cairo_ps_surface_stat_page - - src/cairo-ps-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 5444aa55b35aff7d6cff8b5e8a5ab020711562ac -Author: Carl Worth -Date: Wed Apr 12 13:34:03 2006 -0700 - - Clean up output_stream error handling in _cairo_ps_surface_create. - - We teach the output stream to catch a NULL file error here, which - allows for less checking in ps_surface_create. We also fix the ps - surface code to look for the status of a nil stream rather than - checking for NULL. - - src/cairo-output-stream.c | 3 +++ - src/cairo-ps-surface.c | 23 ++++++++++++----------- - 2 files changed, 15 insertions(+), 11 deletions(-) - -commit a7abf8e4513a7ca03cdb7db6f80a438a4897d208 -Merge: 0386a72... ade195c... -Author: Carl Worth -Date: Wed Apr 12 12:54:28 2006 -0700 - - Merge 'Save PS output in temp file' from ps-type3 branch - -commit 0386a728957bdb3549da8e772c31b86295175a4b -Author: Carl Worth -Date: Wed Apr 12 11:06:06 2006 -0700 - - Add some documentation to string_array_stream - - src/cairo-ps-surface.c | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit 39592788b38a8e8db5335d836a8eaa7ace08fc1c -Author: Carl Worth -Date: Wed Apr 12 10:56:42 2006 -0700 - - Print both page label and number in PostScript %%Page headers. - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 523f9e46d87392a539c26ade18d99a3db7ed833d -Author: Kristian Høgsberg -Date: Tue Apr 11 20:49:55 2006 -0400 - - Make cairo_t and cairo_output_stream_t destructors handle NULL. - All other cairo destructors and reference functions accept and ignore NULL, - so fix up cairo_destroy(), cairo_reference(), and cairo_output_stream_destroy() - to do so too. - - src/cairo-output-stream.c | 3 +++ - src/cairo.c | 6 ++++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 6e77a0e248c337bf3f39c0de239a7743c6969efe -Author: Keith Packard -Date: Tue Apr 11 12:28:41 2006 -0700 - - Allow hash entry deletion during cairo_hash_foreach - - I discovered that _cairo_hash_table_foreach walks over the hash table - without preventing it from being resized as a result of deletions - occuring from the callback. - - Kinda nasty when you're trying to free everything from a hash table. - - It was also easy to fix; just prevent the table from being resized while - iterating and clean it up after the iteration is completed. - - src/cairo-hash.c | 43 ++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 38 insertions(+), 5 deletions(-) - -commit 9231ab40437e70818c9525fa9648ff7a5d11e44a -Merge: 1e5f5ae... baa3436... -Author: Anders Carlsson -Date: Tue Apr 11 01:09:30 2006 +0200 - - Merge with git+ssh://git.cairographics.org/git/cairo - -commit 1e5f5aed07137d3a823c2d22e29eb0e53e359fef -Author: Anders Carlsson -Date: Tue Apr 11 01:07:33 2006 +0200 - - Make the API more like Vlad's new API.# - - src/cairo-quartz-private.h | 2 +- - src/cairo-quartz-surface.c | 11 ++++++----- - src/cairo-quartz.h | 4 ++-- - 3 files changed, 9 insertions(+), 8 deletions(-) - -commit 3ed576522df8a4e41e856a500539ca3e6f69e2da -Author: Anders Carlsson -Date: Mon Apr 10 22:29:51 2006 +0200 - - Remove unused function - - src/cairo-quartz-surface.c | 8 -------- - 1 files changed, 0 insertions(+), 8 deletions(-) - -commit 8ba59b0336ddc581c8f43b4aa5cf9acdb2c001ad -Author: Anders Carlsson -Date: Mon Apr 10 22:24:02 2006 +0200 - - Rework the quartz backend to not always hold an image but instead to create it on demand.# - - src/cairo-quartz-private.h | 8 +- - src/cairo-quartz-surface.c | 220 ++++++++++++++++++++++---------------------- - 2 files changed, 111 insertions(+), 117 deletions(-) - -commit df3c02c9ca0c704df3960416fbe689af0cedf2fa -Author: Anders Carlsson -Date: Mon Apr 10 22:23:39 2006 +0200 - - Don't set can_draw_directly to FALSE. - - src/cairo-atsui-font.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit baa3436e9d8ea37c1204f752cac78a8cbc891f18 -Author: Laxmi Harikumar -Date: Mon Apr 10 12:04:01 2006 -0700 - - Simple fix for build failure on DEC/OSF1. - - Apparently this platform also requires inttypes.h rather than - stdint.h. - - This should fix the bug reported here: - - https://bugzilla.mozilla.org/show_bug.cgi?id=331428 - - pixman/src/pixman.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 08b109fb9a8c54f4764fe7a94ce7833e832bc157 -Author: Carl Worth -Date: Mon Apr 10 11:00:26 2006 -0700 - - Add new ps-specific reference image for dash-caps-joins test. - - With the recent fix to the treatment of sub-paths with respect to - dashing, this test is now correct except for slight difference in - ghostscript vs. cairo rasterization. This commit records the - ghostscript output as the new reference image against which the ps - output should be tested. - - test/dash-caps-joins-ps-argb32-ref.png | Bin 0 -> 1247 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 65e706ee14b9bfbc2ce0e83b35a813d51d97592f -Author: Jeff Muizelaar -Date: Sun Apr 9 23:13:36 2006 -0400 - - Reset dashing for new subpaths. - - Fixes the bug mentioned in b87726ee2aa0220b66ee4d97513c0ac89ffc4621 by reseting - the dash pattern for each new subpath. This is correct behaviour according to - the end of PDF Reference v1.6 section 4.3.2. - - This commit now makes the dash-caps-joins test case pass for all - backends except for the PostScript backend. - - src/cairo-path-stroke.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) - -commit f02aacbb5f8068f6b0101b3200bd3a0d73746dd4 -Author: Carl Worth -Date: Mon Apr 10 10:54:24 2006 -0700 - - Update dash-caps-joins test cases to show independent dashing of sub-paths. - - We would like to be compatible with PostScript/PDF dash semantics. And - according to the description of the setdash operator in section 8.2 of - the PostScript Language Reference Manual, (as well as the description - of the line dash pattern in section 4.3.2 of the PDF Reference), each - sub-path should be treated independently with respect to dashing. - - With this change, this test now fails for most backends for which it - previously passed. - - test/dash-caps-joins-ref.png | Bin 3219 -> 2583 bytes - test/dash-caps-joins-rgb24-ref.png | Bin 2946 -> 2465 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 807f64d57c616e2ce8a61202cd9b59ac7a6a26cb -Merge: 5ee26e3... 732e062... -Author: Anders Carlsson -Date: Mon Apr 10 19:32:47 2006 +0200 - - Merge with git+ssh://git.cairographics.org/git/cairo - -commit 5ee26e3b0eec85ac2e9c07d828eae0c8e1a57364 -Author: Anders Carlsson -Date: Mon Apr 10 19:18:36 2006 +0200 - - * Save and restore state when drawing glyphs using the short circuit. - - src/cairo-atsui-font.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 0727e3c1a980f57d48f3dfaee801f05e5395a71a -Author: Keith Packard -Date: Sun Apr 9 00:38:43 2006 -0700 - - Use Type3 fonts for PostScript output. No bitmap support yet. - - src/cairo-ps-surface.c | 737 +++++++++++++++++++++++++++++------------------- - 1 files changed, 440 insertions(+), 297 deletions(-) - -commit da2c5e44abd98f1f1aed4f716b7e9bc97a667058 -Author: Keith Packard -Date: Sun Apr 9 00:37:58 2006 -0700 - - Allow hash entry deletion during cairo_hash_foreach - - src/cairo-hash.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit ade195cdba5b0d13c121e44709151bfbb0c44085 -Author: Keith Packard -Date: Sat Apr 8 21:29:14 2006 -0700 - - Save PS output in temp file so we can prepend global data (like fonts) - - src/cairo-output-stream.c | 20 +++++++++++++- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 59 ++++++++++++++++++++++++++++++++++++-------- - src/cairo-svg-surface.c | 2 +- - src/cairoint.h | 5 +++- - 5 files changed, 72 insertions(+), 16 deletions(-) - -commit 732e06258c81427cf7fedfca98107e21244264eb -Author: Carl Worth -Date: Fri Apr 7 15:46:32 2006 -0700 - - Rename write_data to write_func in cairo_output_stream_t. - - src/cairo-base85-stream.c | 8 ++++---- - src/cairo-output-stream.c | 12 ++++++------ - 2 files changed, 10 insertions(+), 10 deletions(-) - -commit bfd467453c5213341ae2c396ac3d32ba76df8de9 -Author: Anders Carlsson -Date: Fri Apr 7 17:40:30 2006 +0200 - - * Fix build - - * Add shortcut to cairo-atsui-font.c for the common case. - - src/cairo-atsui-font.c | 148 ++++++++++++++++++++++++------------------- - src/cairo-quartz-surface.c | 1 + - 2 files changed, 84 insertions(+), 65 deletions(-) - -commit b87726ee2aa0220b66ee4d97513c0ac89ffc4621 -Author: Carl Worth -Date: Thu Apr 6 09:43:39 2006 -0700 - - Tweak initial erase so it doesn't trigger fallbacks for every PS test case. - - Add an optimization to cairo-ps-surface.c so that it ignores any - CAIRO_OPERATOR_CLEAR drawing operation that occurs on a blank page. - Also change the test suite to erase with OPERATOR_CLEAR instead of - OPERATOR_SOURCE with an all-0 source pattern. - - With this change, 32 of the 61 test cases change from all-fallback to - all-native for the ps backend. - - Of these 32 test cases, 13 pass the test suite with the original - reference images. Another 18 cases differ only in the single-pixel - boundary of objects due to cairo vs. ghostscript rasterization - differences. We ignore these by adding new ps-specific reference - images, (included in this commit). - - Finally, there appears to be one genuine failure, (dash-caps-joins), - in which the PostScript dashes (at least as rendered by ghostscript) - differ significantly from the cairo-rendered dashes. - - src/cairo-ps-surface.c | 69 ++++++++++++++++------- - test/cairo-test.c | 3 +- - test/caps-joins-ps-argb32-ref.png | Bin 0 -> 995 bytes - test/caps-sub-paths-ps-argb32-ref.png | Bin 0 -> 170 bytes - test/clip-fill-rule-ps-argb32-ref.png | Bin 0 -> 280 bytes - test/clip-nesting-ps-argb32-ref.png | Bin 0 -> 488 bytes - test/clip-twice-ps-argb32-ref.png | Bin 0 -> 460 bytes - test/dash-offset-negative-ps-argb32-ref.png | Bin 0 -> 170 bytes - test/fill-and-stroke-ps-argb32-ref.png | Bin 0 -> 243 bytes - test/fill-rule-ps-argb32-ref.png | Bin 0 -> 1078 bytes - test/leaky-polygon-ps-argb32-ref.png | Bin 0 -> 233 bytes - test/line-width-ps-argb32-ref.png | Bin 0 -> 201 bytes - test/path-data-ps-argb32-ref.png | Bin 0 -> 322 bytes - test/rectangle-rounding-error-ps-argb32-ref.png | Bin 0 -> 258 bytes - test/show-text-current-point-ps-argb32-ref.png | Bin 0 -> 638 bytes - test/text-antialias-gray-ps-argb32-ref.png | Bin 0 -> 305 bytes - test/text-antialias-none-ps-argb32-ref.png | Bin 0 -> 305 bytes - test/text-antialias-subpixel-ps-argb32-ref.png | Bin 0 -> 305 bytes - test/transforms-ps-argb32-ref.png | Bin 0 -> 287 bytes - test/unantialiased-shapes-ps-argb32-ref.png | Bin 0 -> 4076 bytes - 20 files changed, 50 insertions(+), 22 deletions(-) - -commit c4fc7b06b53c811ddc20def91aaccd756c28a924 -Author: Carl Worth -Date: Thu Apr 6 08:54:59 2006 -0700 - - Revert "Use ghostscript's pngalpha rather than png16m target for PS->PNG" - - This reverts 3b873c66be54522d6cc3f025572a78bbef0efba7 commit. - - It seemed like a good idea at the time, but... - The pngalpha target only gets the fully transparent regions correct. - But we still need to get the partially translucent regions correct. - The pngalpha target doesn't help here---instead we were already - flattening the reference image during testing. And in that case, - having anything other than alpha==1 in the output png doesn't really - help, (and meanwhile it was tripping up the current buffer_diff code). - - test/cairo-test.c | 15 ++++++--------- - 1 files changed, 6 insertions(+), 9 deletions(-) - -commit e01047a76a5c44302c24e2ab285cf1b1cd490677 -Author: Carl Worth -Date: Wed Apr 5 17:15:48 2006 -0700 - - Build fix for typo from recent commit. - - test/Makefile.am | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 3b873c66be54522d6cc3f025572a78bbef0efba7 -Author: Carl Worth -Date: Wed Apr 5 17:03:23 2006 -0700 - - Use ghostscript's pngalpha rather than png16m target for PS->PNG - - This target allows the output files to actually be transparent where - there is no PostScript "ink", which allows for much better testing. - - test/cairo-test.c | 15 +++++++++------ - 1 files changed, 9 insertions(+), 6 deletions(-) - -commit 6d5627ca2a5b96edf0b37fe6e16002726f72d86d -Author: Carl Worth -Date: Wed Apr 5 17:00:13 2006 -0700 - - Add a call to _cairo_ps_surface_start_page in _cairo_ps_surface_intersect_clip_path. - - If clipping occurs before any drawing, then we still need to issue a start page call. - Otherwise, the clip ends up being inverted since the scaling - transformation that puts PostScript into a cairo-oriented coordinate - system only happens in start_page. - - src/cairo-ps-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 341d61cda0247eebd26da1e3b71c43ee8f761833 -Author: Carl Worth -Date: Wed Apr 5 16:55:51 2006 -0700 - - Disable show-glyphs-many test to avoid abusing ghostscript too badly. - - test/Makefile.am | 22 ++++++++++++++++++++-- - 1 files changed, 20 insertions(+), 2 deletions(-) - -commit 5baae7ff21a4236ebc9eaff087eb29fd1432c7ff -Author: Emmanuel Pacaud -Date: Wed Apr 5 21:24:06 2006 +0200 - - SVG: Fix typo and stream status handling - - src/cairo-svg-surface.c | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit 4fd30e6f402ae031c2084c20f136b84307a128cc -Merge: a8e5a77... 66ed981... -Author: Carl Worth -Date: Tue Apr 4 15:04:36 2006 -0700 - - Merge branch 'analysis-surface' into cairo - -commit a8e5a77ad496c1716acdd279d5d5bebf1bc71eee -Author: Carl Worth -Date: Thu Mar 23 16:02:02 2006 -0800 - - Add attribution for Bdale Garbee to the AUTHORS file. - - AUTHORS | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 66ed9811cc542d99cb5a6b6b792c9a9f0832fbf9 -Merge: edb83e3... 45bbdf9... -Author: Carl Worth -Date: Tue Apr 4 14:58:52 2006 -0700 - - Merge branch 'cairo-origin' into analysis-surface - - With the string-array-stream stuff that this merge picks up, the - analysis-surface branch is now passing all of the test suite again. - -commit 45bbdf94cbac736c9f854012581e8f914a6e27df -Author: Carl Worth -Date: Tue Apr 4 12:50:44 2006 -0700 - - Break PostScript image data into chunks that each fit into a string. - - This solves the problem with the previous commit that made strings - longer than the "standard" 65k implementation limit for strings. - It's achieved by removing the line-wrapping from the base85 stream and - instead adding a new string-array stream between the base85 stream and - the output stream (the string-array stream does the line wrapping and - enforces the 65k characters per string limit). - - src/cairo-base85-stream.c | 30 +++------- - src/cairo-ps-surface.c | 129 ++++++++++++++++++++++++++++++++++++++++----- - 2 files changed, 124 insertions(+), 35 deletions(-) - -commit d1134cd7e25a78c70819df879336f895134bafe1 -Author: Carl Worth -Date: Tue Apr 4 11:21:17 2006 -0700 - - Emit images into PostScript output as strings rather than inline. - - This is a baby step toward having shared source patterns in the - PostScript output. This patch is based on original work by Keith - Packard in the following commit: - - 06b83b89fc4271060c63b284d7909162b92152f1 - - One problem with this approach is that it attempts to put an entire - image into a PostScript string object. However, PostScript strings are - typically limited to 65k bytes. So, as is, this commit causes a few - failures for tests in the suite with large output images. - - src/cairo-ps-surface.c | 58 +++++++++++++++++++++++++++++++++++------------ - 1 files changed, 43 insertions(+), 15 deletions(-) - -commit 0114393a132471cbf87bc3abc2f298b4ca38c69c -Author: Carl Worth -Date: Tue Apr 4 11:17:25 2006 -0700 - - Explicitly remove the output png image before creating it during testing. - - What was happening here is that some backends (such as the PS surface - backend) directly generate an output file, and then run a conversion - process to generate the png file. Some bugs were such that a broken - file would successfully be generated, the conversion would fail (the - failure was unnoticed), and the test suite would happily verify the - old image from a previously successful run. - - This fix eliminates this source of false positives. - - test/cairo-test.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit dd67cf6616c2e819e7e8e4452c1e14e68b4a66bd -Author: Carl Worth -Date: Tue Apr 4 10:45:38 2006 -0700 - - Implement proper cairo-style error-handling for cairo_output_stream_t. - - The cairo_output_stream_t object already had an internal status value, - but it was annoyingly returning status values from various functions. - It also was missing proper shutdown-on-error as well as nil-create - semantics. - - This fixes those shortcomings and adjusts all callers for the new - semantics, (leading to simpler and more correct calling - code---particularly in the case of cairo-base85-stream.c). - - src/cairo-base85-stream.c | 40 ++++++---------------- - src/cairo-output-stream.c | 82 +++++++++++++++++++++++++++++--------------- - src/cairo-pdf-surface.c | 12 ++++-- - src/cairo-ps-surface.c | 27 +++++++-------- - src/cairo-svg-surface.c | 16 ++++++-- - src/cairoint.h | 35 +++++++++++++++---- - 6 files changed, 125 insertions(+), 87 deletions(-) - -commit 5a06133eb2e13a4c0354dad7f7da414c85733c4e -Author: Carl Worth -Date: Mon Apr 3 23:44:51 2006 -0700 - - Implement cairo-base85-stream as a filtering output stream not just a write function. - - Now _cairo_output_stream_create accepts a new close callback, (which - the base85 stream uses to write its trailer). This eliminates the - former kludge used to fclose the stdio output streams, and required a - bit of touchup to the pdf, ps, and svg-surface usage of streams. - - src/cairo-base85-stream.c | 142 ++++++++++++++++++++++++++++++++------------- - src/cairo-output-stream.c | 52 ++++++++++------ - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 22 +++++-- - src/cairo-svg-surface.c | 2 +- - src/cairoint.h | 23 +++++-- - 6 files changed, 169 insertions(+), 74 deletions(-) - -commit 57fe9b17b0a1a36acf0d8d524df05215ea48361f -Author: Carl Worth -Date: Mon Apr 3 15:26:17 2006 -0700 - - Move base85 code out of cairo-output-stream.c into new cairo-base85-stream.c - - src/Makefile.am | 1 + - src/cairo-base85-stream.c | 98 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-output-stream.c | 63 ----------------------------- - 3 files changed, 99 insertions(+), 63 deletions(-) - -commit 9bdb4f6ff713db0d101a0c0735dbb27e54fd7846 -Author: Christian Biesinger -Date: Sun Apr 2 15:55:27 2006 +0200 - - Use more portable shell syntax - - Reported by Dave Yeo in - http://lists.freedesktop.org/archives/cairo/2006-April/006600.html - - Fixed for the other tests in 0883155111ab9597d335c7d43ae47c163b5c0e4d - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 03eb1b85a906fac4acfbf3ee2839d13ccac97668 -Author: Vladimir Vukicevic -Date: Fri Mar 10 11:57:41 2006 -0800 - - [win32] Add missing depth-16 format check - (cherry picked from 969d624db8d32d35361bbcc89dbcc354f3d48eaa commit) - - src/cairo-win32-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6a430478f508361767bff91132c3978234b76e95 -Author: Christian Biesinger -Date: Tue Mar 14 13:25:51 2006 +0100 - - Add an assert for the unsupported image surface formats - - src/cairo-beos-surface.cpp | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 8fbd0d448dbdf8f556315366b64abe2468588ea6 -Author: Christian Biesinger -Date: Mon Mar 27 02:31:51 2006 +0200 - - Implement create_similar for BeOS - - src/cairo-beos-surface.cpp | 202 ++++++++++++++++++++++++++++++++++---------- - 1 files changed, 158 insertions(+), 44 deletions(-) - -commit edb83e306bda8a78a8a72006f257922cda7adc69 -Author: Carl Worth -Date: Fri Mar 24 12:07:21 2006 -0800 - - cairo-ps-surface: Simplify operation analysis. - - Introduce a new pattern_operation_analyze function which allows a much - simpler idiom to be used by all of the drawing operations. This also - provides new assertions that when we are not analyzing we are never - called to perform an operation that we would analyze as - unsupported. - - src/cairo-ps-surface.c | 57 +++++++++++++++++++++++++++++------------------ - 1 files changed, 35 insertions(+), 22 deletions(-) - -commit 29dad9867aa5f00f4f38da5da7df6aded794682c -Author: Carl Worth -Date: Fri Mar 24 11:58:45 2006 -0800 - - cairo-ps-surface: Don't support meta-surfaces. This isn't ready yet. - - src/cairo-ps-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 7cee03957b805db55df6f54deef5012535dfa7f4 -Author: Carl Worth -Date: Fri Mar 24 11:57:18 2006 -0800 - - cairo-ps-surface: Fix characterization of CLEAR and SOURCE operators. - - CLEAR should always be considered a translucent operator, while SOURCE is not - necessarily always opaque. - - src/cairo-ps-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 498094027e18fbc8f190a225a87787a5b445e547 -Author: Carl Worth -Date: Fri Mar 24 11:49:48 2006 -0800 - - Back out use of meta-surface for similar-paginated-surface. It's not ready yet. - - src/cairo-paginated-surface.c | 11 +---------- - 1 files changed, 1 insertions(+), 10 deletions(-) - -commit ecb062a6792d39f7ddb670ef35ea89b868e79353 -Author: Carl Worth -Date: Fri Mar 24 11:48:35 2006 -0800 - - Update PDF backend for new paginated API so it at least doesn't crash. - - src/cairo-pdf-surface.c | 19 ++++++++++++++++++- - 1 files changed, 18 insertions(+), 1 deletions(-) - -commit 3259efed7690670754d7c1e76176ff26464111c3 -Author: Carl Worth -Date: Thu Mar 23 15:36:41 2006 -0800 - - _cairo_lzw_compress: Remove unused code which we had for testing - conformance with the LZW compression from libtiff. - - src/cairo-lzw.c | 13 ------------- - 1 files changed, 0 insertions(+), 13 deletions(-) - -commit bcfe344608150aa56b1cb37dbc774455bfcf6830 -Author: Carl Worth -Date: Thu Mar 23 15:27:00 2006 -0800 - - Optimize the implementation of _cairo_lzw_compress. - - This switches the implementation of _cairo_lzw_compress from using - cairo-hash.c to a custom implementation of the same algorithm that - takes advantage of the specific details of what is needed here. - - This final version now has comparable performance to the libtiff code, - but should hopefully be easier to understand. - - Add a bunch of comments explaining how the various pieces work. - - src/cairo-lzw.c | 377 ++++++++++++++++++++++++++++++++----------------------- - 1 files changed, 217 insertions(+), 160 deletions(-) - -commit 639c2fe4df880546d71b2c73ea972fb08b609603 -Author: Carl Worth -Date: Thu Mar 23 15:23:29 2006 -0800 - - cairo-lzw: Replace LZW code from libtiff with an original implementation. - - This new implementation is an entirely original work directly from the - description of the LZWDecode filter in the PostScript Language - Reference, (and in spite of the bugs in the examples provided in that - reference). - - This implementation uses the existing cairo-hash.c for the symbol - table. This implementation is somewhat easier to read than the libtiff - code, and avoids any code that may have an advertising clause - attached. This new implementation is the simplest thing I could - implement. It is not as efficient as the libtiff code, (though I did - expect better things from cairo-hash.c). - - src/cairo-lzw.c | 709 ++++++++++++++++++++++--------------------------------- - src/cairoint.h | 4 +- - 2 files changed, 285 insertions(+), 428 deletions(-) - -commit ec60bb0a606cadf3120d1cebc88e248a3e056c19 -Author: Carl Worth -Date: Thu Mar 23 15:00:40 2006 -0800 - - Rename _cairo_compress_lzw to _cairo_lzw_compress and tighten the parameter list. - - src/cairo-lzw.c | 8 ++++---- - src/cairo-ps-surface.c | 3 ++- - src/cairoint.h | 4 +--- - 3 files changed, 7 insertions(+), 8 deletions(-) - -commit cabe94a15c277bb8a5f0c71f25cc8bc9e22ecb41 -Author: Carl Worth -Date: Wed Mar 22 23:12:23 2006 -0800 - - Make all hash/cache keys_equal function accept const pointers. - - src/cairo-cache-private.h | 2 +- - src/cairo-font.c | 12 ++++++------ - src/cairo-ft-font.c | 12 ++++++------ - src/cairo-hash-private.h | 2 +- - src/cairo-scaled-font.c | 14 +++++++------- - 5 files changed, 21 insertions(+), 21 deletions(-) - -commit a193f70b94667808f573caa5b82a1bf50281555e -Author: Emmanuel Pacaud -Date: Wed Mar 22 11:48:44 2006 +0100 - - SVG: return len in _cairo_svg_document_write when operation succeed. - - src/cairo-svg-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ef04471b1b90057c00ec51e1f3d7c7ed4ab1e34c -Author: Christian Biesinger -Date: Sat Mar 18 18:08:20 2006 +0100 - - More consistent naming for the BeOS surface functions - - src/cairo-beos-surface.cpp | 44 ++++++++++++++++++++++---------------------- - 1 files changed, 22 insertions(+), 22 deletions(-) - -commit 69acfa6576e8d2b97e3e3b8c06badf5486ae0315 -Author: Christian Biesinger -Date: Fri Mar 17 21:26:27 2006 +0100 - - Don't link to C++ libraries on non-BeOS systems - - src/Makefile.am | 13 +++++++------ - 1 files changed, 7 insertions(+), 6 deletions(-) - -commit 0623f8a7d1452c27892f938fe28e6e173e67e136 -Merge: 26b06b3... a7f58f8... -Author: Behdad Esfahbod -Date: Wed Mar 15 15:25:59 2006 -0500 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo - -commit 26b06b3638ec768da01839cfa3c75e9807b14ee8 -Author: Behdad Esfahbod -Date: Wed Mar 15 15:17:26 2006 -0500 - - Clarify that git tag -s does GPG signing. - (cherry picked from e94251861565ed154e15ca3a7198ffe3828536fe commit) - - RELEASING | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit f5013b6dc6442493ea38949fdcc137e5c44b6872 -Author: Behdad Esfahbod -Date: Wed Mar 15 14:19:08 2006 -0500 - - Add a release-publish-message target to only get the message. - (cherry picked from 98facc6c2d0f57f05de7b98c2aaa592c895d1a09 commit) - - Makefile.am | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 46e5ed66d3329f1608950d817e7248c91087893a -Author: Behdad Esfahbod -Date: Wed Mar 15 11:25:02 2006 -0500 - - Note using "git diff" instead of "git status" as the latter is a bit tricky when it says nothing to commit... - (cherry picked from a1621eadb655806de8bb47c2e701de6eaa9d2090 commit) - - RELEASING | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f00a1833341699135e792e3a77e19dca0d1dba86 -Author: Behdad Esfahbod -Date: Wed Mar 15 11:18:40 2006 -0500 - - Update release infra to reflect git transition. - (cherry picked from 508b0be5f2023dabe9561f4ca62481d6a4c8c5ae commit) - - INSTALL | 2 +- - Makefile.am | 4 ++-- - RELEASING | 21 +++++++++------------ - configure.in | 2 +- - 4 files changed, 13 insertions(+), 16 deletions(-) - -commit 037732cac9ff402e51d80d6ed54cc32d669aa0d9 -Author: Behdad Esfahbod -Date: Wed Mar 15 10:59:59 2006 -0500 - - Add make bits to autogenerate ChangeLog - (cherry picked from 393000021c2e082d4b3c235939009a90035b0daf commit) - - .gitignore | 1 + - Makefile.am | 39 +++++++++++++++++++++++++++++++++++++++ - 2 files changed, 40 insertions(+), 0 deletions(-) - -commit a7f58f886253f4ae66c9b0ed4472f575eaf2ec1d -Author: Alexander Larsson -Date: Wed Mar 15 10:44:09 2006 -0800 - - Add LZW image compression and ASCII85 encoding for PostScript image output. - - * src/Makefile.am: - Add cairo-lzw.c to sources - Remove erronous space at start of line - - * src/cairo-lzw.c: - New file implementing _cairo_compress_lzw which does Lempel-Ziv & Welch - compression as used by postscript. Based on code from libtiff. - - * src/cairo-output-stream.c: - Add _cairo_output_stream_write_base85_string which implements - an encoder for the ASCII85Decode postscript filter. - - * src/cairoint.h: - Add _cairo_compress_lzw and _cairo_output_stream_write_base85_string. - - * src/cairo-ps-surface.c: - Write Images LZW + Base85 encoded. - Change ps level to 2 (we only needed level 3 for FlateDecode). - Change DocumentData to Clean7Bit as we don't include binary data - anymore. - - src/Makefile.am | 3 +- - src/cairo-lzw.c | 499 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-output-stream.c | 63 ++++++ - src/cairo-ps-surface.c | 37 +--- - src/cairoint.h | 10 + - 5 files changed, 582 insertions(+), 30 deletions(-) - -commit d6f8df7417bdab75dbcfe9658616dd3367276ed0 -Author: Carl Worth -Date: Wed Mar 15 07:31:48 2006 -0800 - - Remove annoyinc RCS magic lines that are not being used, but cause conflicts. - - pixman/src/fbedge.c | 2 -- - pixman/src/fbedgeimp.h | 2 -- - pixman/src/fbpict.c | 2 -- - pixman/src/fbpict.h | 2 -- - pixman/src/icpixels.c | 2 -- - pixman/src/ictrap.c | 2 -- - pixman/src/pixman.h | 2 -- - pixman/src/pixregionint.h | 2 -- - pixman/src/renderedge.c | 2 -- - pixman/src/renderedge.h | 2 -- - 10 files changed, 0 insertions(+), 20 deletions(-) - -commit 2af29f720faac0a9ee3961a81b81acae9a716220 -Author: Emmanuel Pacaud -Date: Tue Mar 14 23:02:39 2006 +0100 - - SVG: use xmlOutputBuffer for file creation, instead of dumping xml tree in a memory buffer. - - src/cairo-svg-surface.c | 23 +++++++++++++++++------ - 1 files changed, 17 insertions(+), 6 deletions(-) - -commit 5d89faf6b37bb0367c8ba8f8637fc80bd745c888 -Author: Carl Worth -Date: Mon Mar 13 13:20:29 2006 -0800 - - fbCompositeTrans_0888xnx0888: Fix suspicious logical negation of pointer value. - - Surely, the ! instead of ~ here was just a typo. I'd feel better if I - had a failing test case for this though, (time to break out gcov - again). - - Fixes bug #6185: - - Strange pointer operations in fbCompositeTrans_0888xnx0888 (pixman/src/fbpict.c) - https://bugs.freedesktop.org/show_bug.cgi?id=6185 - - pixman/src/fbpict.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6f0d8eedc504e8af2224c502be25dc82b5df70f4 -Author: Carl Worth -Date: Mon Mar 13 12:25:25 2006 -0800 - - _clip_and_composite_trapezoids: Avoid NULL pointer dereference due to OOM. - - This closes bug #6197: - - Null pointer dereference on OOM in _clip_and_composite_trapezoids() - https://bugs.freedesktop.org/show_bug.cgi?id=6197 - - src/cairo-surface-fallback.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 79075b2cb1ce1397506fc10572df96f6fd00ecc3 -Author: Carl Worth -Date: Mon Mar 13 12:20:23 2006 -0800 - - cairo-clip: Fix memory leak during OOM handling. - - This closes bug #6196: - - Memory leak in _cairo_clip_intersect_path (src/cairo-clip.c) - https://bugs.freedesktop.org/show_bug.cgi?id=6196 - - src/cairo-clip.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit fc51a78a1ed5f7649ce55ab30fc42939a9b295d1 -Author: Carl Worth -Date: Mon Mar 13 12:14:47 2006 -0800 - - cairo-pdf-surface: Close memory leak during OOM handling. - - This fixes bug #6186: - - Memory leak in emit_image_rgb_data (src/cairo-pdf-surface.c) - https://bugs.freedesktop.org/show_bug.cgi?id=6186 - - src/cairo-pdf-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 25cccaaa1f6d337a1a0423a298f94456e72a820a -Merge: c780f4a... 118f71b... -Author: Carl Worth -Date: Mon Mar 13 12:05:37 2006 -0800 - - Merge branch 'cairo-origin' into cairo - -commit c780f4a5624f27a6cbf7829e10e8cd3544ae4f38 -Author: Carl Worth -Date: Mon Mar 13 12:05:13 2006 -0800 - - cairo-output-stream: Don't dereference a NULL pointer due to OOM. - - This close bug #6176: - - Null pointer dereference on OOM in _cairo_output_stream_create_for_file() - https://bugs.freedesktop.org/show_bug.cgi?id=6176 - - src/cairo-output-stream.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 118f71b43870551db520ad56234c650aa4b61296 -Merge: 6659991... 92e09ee... -Author: Emmanuel Pacaud -Date: Sun Mar 12 19:30:29 2006 +0100 - - Merge branch 'master' of git+ssh://emmanuel@git.cairographics.org/git/cairo - -commit 66599911e0664afd145975e3afb0f580e6d1bb3c -Author: Emmanuel Pacaud -Date: Thu Mar 9 22:09:14 2006 +0100 - - Don't duplicate unmodified SVG surfaces - - src/cairo-svg-surface.c | 30 ++++++++++++++++++++++++------ - 1 files changed, 24 insertions(+), 6 deletions(-) - -commit 92e09ee72fdde9059300b2b63d87e2bbd4286605 -Author: Mart Raudsepp -Date: Thu Mar 9 08:23:43 2006 -0800 - - Complete the CAIRO_PATTERN_TYPE renaming - - This fixes compilation of the glitz backend, and also fixes missing - renames in win32, atsui, and directfb backends. - - src/cairo-atsui-font.c | 2 +- - src/cairo-directfb-surface.c | 6 +++--- - src/cairo-glitz-surface.c | 14 +++++++------- - src/cairo-win32-surface.c | 4 ++-- - 4 files changed, 13 insertions(+), 13 deletions(-) - -commit 1cffb39ff04bbb29bb070e42c51aa1ae6aaf5a4c -Author: Carl Worth -Date: Wed Mar 8 08:16:49 2006 -0800 - - cairo_show_glyphs: Do nothing if num_glyphs == 0 - - src/cairo.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 7563a23921a4d6f9f826a13b42d61f3ba3c31c10 -Author: Emmanuel Pacaud -Date: Sun Mar 5 23:49:38 2006 +0100 - - Fix self-copy test - - src/cairo-svg-surface.c | 31 ++++++++++++++++++------------- - 1 files changed, 18 insertions(+), 13 deletions(-) - -commit 3333bba82d26a0b11961af3cb5c29c79a1a0d07b -Merge: 62812b2... 3370cd6... -Author: Carl Worth -Date: Fri Mar 3 15:41:14 2006 -0800 - - Merge branch 'show-glyphs-many' into cairo - -commit 3370cd631858cac0fd3ce33c74db3af40991e6f1 -Author: Carl Worth -Date: Fri Mar 3 15:40:58 2006 -0800 - - _cairo_xlib_surface_old_show_glyphs: Break up rendering into chunks to fit - into X max request length protocol limits. - - This fixes bug #5528: - - _XError from XRenderCompositeText8 - https://bugs.freedesktop.org/show_bug.cgi?id=5528 - (cherry picked from 7d498ca91279a4e793d704c5b878f070be4c878f commit) - - src/cairo-xlib-surface.c | 49 ++++++++++++++++++++++++++++++++------------- - 1 files changed, 35 insertions(+), 14 deletions(-) - -commit 34a4ad1e5bca8db34933718db245a232ebe30ce2 -Author: Carl Worth -Date: Thu Mar 2 10:32:38 2006 -0800 - - test/show-glyphs-many: New test case to demonstrate bug #5528 - - This demonstrates an Xlib crash when rendering many glyphs. See: - - _XError from XRenderCompositeText8 - https://bugs.freedesktop.org/show_bug.cgi?id=5528 - - for more details. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/show-glyphs-many-ref.png | Bin 0 -> 118 bytes - test/show-glyphs-many-rgb24-ref.png | Bin 0 -> 115 bytes - test/show-glyphs-many.c | 127 +++++++++++++++++++++++++++++++++++ - 5 files changed, 130 insertions(+), 0 deletions(-) - -commit 62812b25c7f0c11aa6c973b722fa8e1bd088d4b8 -Author: Emmanuel Pacaud -Date: Thu Mar 2 14:54:37 2006 +0100 - - Fix gcc 4.0 signedness warnings - - src/cairo-svg-surface.c | 30 +++++++++++++++--------------- - 1 files changed, 15 insertions(+), 15 deletions(-) - -commit 3490ed989672eaf2c08468ba81e3376fa362e41f -Author: Christian Biesinger -Date: Wed Mar 1 19:16:01 2006 +0100 - - Remove trailing comma in enumeration - - This fixes a gcc -pedantic warning and compilation with the xlc compiler. - - src/cairo-meta-surface-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2fb016c75b950b3b1fe077dc349713f61118fd7c -Merge: 8176c93... 3490ed9... -Author: Vladimir Vukicevic -Date: Wed Mar 1 11:26:48 2006 +0100 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo - -commit 8176c93bc481414c1584bf4721ac1680ed827d97 -Author: Vladimir Vukicevic -Date: Wed Mar 1 11:26:30 2006 +0100 - - Revert "Remove ft-font's usage of device offset surface fields for storing bearings" - - Bogus fix; misunderstood the relationship between the font bearings - and the computed device offsets. Real fix on my device offsets branch. - - This reverts 49b4fe10d0acdf6b9776d2908e98f2f0c596fbe5 commit. - - src/cairo-ft-font.c | 22 +++++++++++++++++++++- - src/cairo-scaled-font.c | 6 +++--- - src/cairo-xlib-surface.c | 4 ++-- - 3 files changed, 26 insertions(+), 6 deletions(-) - -commit e2855502f2f2e701b96a2a7eee4cda8c374bcbb9 -Author: Carl Worth -Date: Tue Feb 28 14:10:36 2006 -0800 - - Fix last piece of merge resolution missing from previous commit - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e3017c3c8de2b90e1d3470866f9bd6cc2cd313fa -Merge: ce683a2... 2984f60... -Author: Carl Worth -Date: Tue Feb 28 12:07:14 2006 -0800 - - Merge in upstream 'ps-surface' changes - -commit f5566c9b20edf04b44f60bba164c226f2718a935 -Merge: 49b4fe1... d985a9d... -Author: Vladimir Vukicevic -Date: Tue Feb 28 16:29:45 2006 +0100 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo - -commit d985a9d6696f1ed653a48d95bc401ede3ba86d5f -Author: Christian Biesinger -Date: Wed Mar 1 00:40:35 2006 +0100 - - Fixing BeOS surface part II - - src/cairo-beos-surface.cpp | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 566bb18dfee2daaaaf86e7a22e8a7883e81efd97 -Author: Christian Biesinger -Date: Wed Mar 1 00:06:43 2006 +0100 - - Updating BeOS surface per the get_type changes - - src/cairo-beos-surface.cpp | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit a69b3f211654d1f221859f8e7f9608f8030e1ac4 -Author: manu -Date: Tue Feb 28 23:44:01 2006 +0100 - - s/CAIRO_PATTERN/CAIRO_PATTERN_TYPE/ - - src/cairo-svg-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 0341305fd2f303a23d10b448ac385a981b8b35fe -Author: manu -Date: Tue Feb 28 23:33:00 2006 +0100 - - Revert "Git test" - - This reverts ef1c5c3961c2dff1a48606a45a6c9877924e5f15 commit. - - src/cairo-svg-surface.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit ef1c5c3961c2dff1a48606a45a6c9877924e5f15 -Author: manu -Date: Tue Feb 28 22:52:45 2006 +0100 - - Git test - - src/cairo-svg-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 49b4fe10d0acdf6b9776d2908e98f2f0c596fbe5 -Author: Vladimir Vukicevic -Date: Tue Feb 28 16:21:46 2006 +0100 - - Remove ft-font's usage of device offset surface fields for storing bearings - - cairo-ft-font was being naughty and storing glyph bearings in the - surface device_[xy]_offset fields -- this had no effect previously, - because _cairo_surface_composite ignored those fields, but once it - starts handling device offsets itself, this causes ft text rendering - to break. - - src/cairo-ft-font.c | 22 +--------------------- - src/cairo-scaled-font.c | 6 +++--- - src/cairo-xlib-surface.c | 4 ++-- - 3 files changed, 6 insertions(+), 26 deletions(-) - -commit 6fe93cbf5b368a9a6daf54370aa0e7735b411474 -Merge: f2245a7... 210dd59... -Author: Carl Worth -Date: Tue Feb 28 02:36:45 2006 -0800 - - Merge branch 'get-type' into cairo - -commit 210dd59a7441424f71658ca248f6657482c74c7e -Author: Carl Worth -Date: Tue Feb 28 02:30:27 2006 -0800 - - Add some basic testing of cairo_font_face_get_type and - cairo_scaled_font_get_type. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/font-face-get-type.c | 64 +++++++++++++++++++++++++++++++++++++ - test/ft-font-create-for-ft-face.c | 14 ++++++++ - 4 files changed, 81 insertions(+), 0 deletions(-) - -commit bd2136a23f8a3d5f6a1306d18499fdcfc1e87f48 -Author: Carl Worth -Date: Tue Feb 28 01:31:15 2006 -0800 - - Correct copyright date - - test/pattern-get-type.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f9534c856a71b0f56a1e5bc58141b7bc192a27e8 -Author: Carl Worth -Date: Tue Feb 28 01:30:58 2006 -0800 - - test/pattern-get-type: Add new test case for cairo_pattern_get_type. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/pattern-get-type.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 77 insertions(+), 0 deletions(-) - -commit 1dd6e417c10c90894c87565d4f7fa3f63e97f212 -Author: Carl Worth -Date: Tue Feb 28 00:55:27 2006 -0800 - - Add testing for cairo_surface_get_type. - - All test targets now list an expected cairo_surface_type_t. Add notes - on current limitations of PDF/PS/meta-surface support that causes - CAIRO_CONTENT_COLOR similar surfaces of PDF and PS surfaces to be - returned as image surfaces. - - Add cairo_internal_surface_type_t for the meta, paginated, and various - test surfaces. - - src/cairo-paginated-surface.c | 20 +++++++- - src/cairoint.h | 6 ++- - src/test-fallback-surface.c | 1 + - src/test-meta-surface.c | 1 + - test/cairo-test.c | 107 ++++++++++++++++++++++++++++++----------- - 5 files changed, 103 insertions(+), 32 deletions(-) - -commit cd84e2ab32fe4648f9d172cdefe08798336938d2 -Author: Carl Worth -Date: Mon Feb 27 23:15:45 2006 -0800 - - Add documentation for cairo_font_face_get_type, - cairo_scaled_font_get_type, cairo_surface_get_type, and - cairo_pattern_get_type. - - src/cairo-font.c | 6 ++++++ - src/cairo-pattern.c | 6 ++++++ - src/cairo-scaled-font.c | 6 ++++++ - src/cairo-surface.c | 6 ++++++ - 4 files changed, 24 insertions(+), 0 deletions(-) - -commit 5797f814852bb4f6ef559890640b8cd24ec5fa45 -Author: Carl Worth -Date: Mon Feb 27 23:12:43 2006 -0800 - - Implement cairo_pattern_get_type - - src/cairo-pattern.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 5ae0b9f912b7f5fd1700cbf18763a05493f55b62 -Author: Carl Worth -Date: Mon Feb 27 23:11:32 2006 -0800 - - Implement cairo_surface_get_type - - src/cairo-directfb-surface.c | 1 + - src/cairo-glitz-surface.c | 1 + - src/cairo-image-surface.c | 1 + - src/cairo-meta-surface.c | 1 + - src/cairo-paginated-surface.c | 5 +++++ - src/cairo-pdf-surface.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-surface.c | 15 +++++++++++++++ - src/cairo-svg-surface.c | 1 + - src/cairo-win32-surface.c | 1 + - src/cairo-xcb-surface.c | 1 + - src/cairo-xlib-surface.c | 1 + - src/cairoint.h | 12 ++++++++++++ - 13 files changed, 42 insertions(+), 0 deletions(-) - -commit 2984f60a3a4571a8d4179fdc64a9e67ce9854f21 -Author: Keith Packard -Date: Mon Feb 27 20:09:24 2006 -0800 - - Need cairo_analyze_surface_get_extents - - src/cairo-analyze-surface.c | 11 ++++++++++- - 1 files changed, 10 insertions(+), 1 deletions(-) - -commit 9ca67992a5816db49e8dca866816481483896814 -Author: Keith Packard -Date: Mon Feb 27 20:05:57 2006 -0800 - - Support meta surface patterns - - src/cairo-paginated-surface.c | 11 ++++++++++- - src/cairo-ps-surface.c | 39 ++++++++++++++++++++++++++------------- - 2 files changed, 36 insertions(+), 14 deletions(-) - -commit ad247974ebcfc5ede9fd3856eeaee4860318d118 -Author: Keith Packard -Date: Mon Feb 27 19:34:32 2006 -0800 - - Release pattern source image when done with it - - src/cairo-ps-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 59e4a32d550d14cfaa0687e716c7df0cadf56adc -Author: Keith Packard -Date: Mon Feb 27 19:23:47 2006 -0800 - - Primitive ps glyph support. Fix ps strokes to not leave path defined - - src/cairo-ps-surface.c | 52 +++++++++++++++++++++++++++++++++++++++++++--- - src/cairo-scaled-font.c | 2 +- - src/cairoint.h | 2 +- - 3 files changed, 50 insertions(+), 6 deletions(-) - -commit 06b83b89fc4271060c63b284d7909162b92152f1 -Author: Keith Packard -Date: Mon Feb 27 17:49:53 2006 -0800 - - Support image surface patterns - - src/cairo-ps-surface.c | 39 +++++++++++++++++++++++++++++++-------- - 1 files changed, 31 insertions(+), 8 deletions(-) - -commit 1769830e6eea08744830c1c7ea9220d56808831a -Author: Carl Worth -Date: Mon Feb 27 17:22:45 2006 -0800 - - Implement cairo_scaled_font_get_type - - src/cairo-atsui-font.c | 1 + - src/cairo-ft-font.c | 1 + - src/cairo-scaled-font.c | 6 ++++++ - src/cairo-win32-font.c | 1 + - src/cairoint.h | 2 ++ - 5 files changed, 11 insertions(+), 0 deletions(-) - -commit f2245a7932b857ff70dc0476490090d906ae61f8 -Author: Carl Worth -Date: Mon Feb 27 17:07:22 2006 -0800 - - Remove unused RCS $Id:$ tags. - - src/cairo-wideint.c | 3 +-- - src/cairo-wideint.h | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) - -commit ce683a240236fbe8083f284195acf0f78aa05048 -Author: Carl Worth -Date: Mon Feb 27 15:12:15 2006 -0800 - - Drop gratuitous structure with single function pointer. Rename - paginated_set_mode to set_paginated_mode. - - src/cairo-paginated-surface-private.h | 10 +++------- - src/cairo-paginated-surface.c | 12 ++++++------ - src/cairo-ps-surface.c | 31 +++++++++++++++---------------- - 3 files changed, 24 insertions(+), 29 deletions(-) - -commit aecb07a26d1db73cf6eee183de0f77615dea6830 -Author: Carl Worth -Date: Mon Feb 27 14:58:51 2006 -0800 - - cairo_analysis_surface: Rename region_[un]supported() to get_[un]supported(). - - src/cairo-analysis-surface-private.h | 4 ++-- - src/cairo-analysis-surface.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -commit 2660e79e674a55e71014f83e9247372edd9ab531 -Author: Carl Worth -Date: Mon Feb 27 14:56:41 2006 -0800 - - Rename cairo_analyze_surface_t to cairo_analysis_surface_t. - - src/Makefile.am | 6 +- - src/cairo-analysis-surface-private.h | 55 ++++++++ - src/cairo-analysis-surface.c | 246 ++++++++++++++++++++++++++++++++++ - src/cairo-analyze-surface-private.h | 55 -------- - src/cairo-analyze-surface.c | 246 ---------------------------------- - src/cairo-paginated-surface.c | 18 ++-- - 6 files changed, 313 insertions(+), 313 deletions(-) - -commit f9d4482137e7f13e634cc578c64d84ffdea16bca -Author: Keith Packard -Date: Mon Feb 27 17:14:57 2006 -0500 - - rename evaluate surface to analyze surface, pull to separate files - - src/Makefile.am | 2 + - src/cairo-analyze-surface-private.h | 55 ++++++++ - src/cairo-analyze-surface.c | 246 +++++++++++++++++++++++++++++++++ - src/cairo-paginated-surface-private.h | 2 +- - src/cairo-paginated-surface.c | 210 ++-------------------------- - src/cairo-ps-surface.c | 10 +- - 6 files changed, 319 insertions(+), 206 deletions(-) - -commit cb3a445150e3771d23854849c2a1c991eaee712c -Author: Keith Packard -Date: Mon Feb 27 19:47:14 2006 +0100 - - Primitive "real" postscript output for stroke/fill/paint - - src/cairo-paginated-surface-private.h | 15 +- - src/cairo-paginated-surface.c | 241 ++++++++++++++++- - src/cairo-pdf-surface.c | 3 +- - src/cairo-ps-surface.c | 470 +++++++++++++++----------------- - 4 files changed, 467 insertions(+), 262 deletions(-) - -commit 1a1441912604c89e2912ec764fe26b7a9db995a3 -Author: Vladimir Vukicevic -Date: Fri Feb 17 23:37:54 2006 -0800 - - Win32: Handle BitBlt in get_image failure and AlphaBlend not being supported - - If the BitBlt in get_image fails, we pretty much can't do anything -- so - fill the destination with white and hope for the best. This enables - somewhat accurate printing of complex operations. Also, check the - destination device caps before calling AlphaBlend; return UNSUPPORTED if - the destination DC can't do AlphaBlend. - (cherry picked from 9831de538e347a624af5b0ca38242b198b64bd45 commit) - - src/cairo-win32-surface.c | 18 +++++++++++++++--- - 1 files changed, 15 insertions(+), 3 deletions(-) - -commit 2d784815ffac1ca8c10dac12525f2e8d0b412c1a -Author: Vladimir Vukicevic -Date: Fri Feb 17 23:34:51 2006 -0800 - - Win32: Set surface format based on device caps - - If the DC is a display DC, inspect its depth and set out local format - appropriately. If it's not a display DC, assume RGB24. - (cherry picked from 6dd0a70d271f93df95f4bcaff5073b9bf90cecb6 commit) - - src/cairo-win32-surface.c | 27 +++++++++++++++++++++++++-- - 1 files changed, 25 insertions(+), 2 deletions(-) - -commit 68ed40b6da242816a43cd68cc2c7feb779cf0acf -Author: Vladimir Vukicevic -Date: Fri Feb 17 23:24:06 2006 -0800 - - Win32: Fix up src coords before calling AlphaBlend/BitBlt to avoid invalid calls - - Fixes up src coords and width/height before calling AlphaBlend/BitBlt; it's - an error to try to use a region that extents outside of the source surface - as a source DC. - - Doesn't repair the extra region relative to the operator -- e.g. regions - outside of an ARGB source surface with SOURCE operator should be cleared - to fully transparent black in the destination. - (cherry picked from bc19c5b64b0e38e9d20045907d7b47d79f6afc60 commit) - - src/cairo-win32-surface.c | 31 +++++++++++++++++++++++++++++-- - 1 files changed, 29 insertions(+), 2 deletions(-) - -commit 0852cd449259eb9a52bfa63f19428c47c78baf91 -Author: Vladimir Vukicevic -Date: Mon Feb 27 12:49:27 2006 +0100 - - Win32: rename cairo_surface_create_dib to cairo_surface_create_with_dib - - Also adds some documentation for the win32 creation functions. - (cherry picked from 3a148bd620d709237d98a72f65118759bfc5a76d commit) - - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 55 +++++++++++++++++++++++++++----------------- - src/cairo-win32.h | 6 ++-- - 3 files changed, 38 insertions(+), 25 deletions(-) - -commit 0fe8a93d95ab0b2235133fa089be8ec99d1a5248 -Author: Vladimir Vukicevic -Date: Fri Feb 17 23:17:23 2006 -0800 - - Win32: expose win32 DIB (image) surface creation function, and DC getter - - Adds cairo_win32_surface_create_dib() for creating a win32 DIB-backed - surface with a particular format. Also exposes - cairo_win32_surface_get_dc() to obtain the DC of a win32 surface. - (cherry picked from 0813a1b9b6f35d786fe8cb0d4748771023956cde commit) - - src/cairo-win32-font.c | 2 +- - src/cairo-win32-private.h | 5 ----- - src/cairo-win32-surface.c | 31 ++++++++++++++++++++++++++++--- - src/cairo-win32.h | 8 ++++++++ - 4 files changed, 37 insertions(+), 9 deletions(-) - -commit f4b34df6b6c07024a1b552236d8e0db959771b15 -Author: Vladimir Vukicevic -Date: Wed Feb 15 13:14:52 2006 -0800 - - Have mark_dirty always invalidate the last clip set on the surface - - mark_dirty will force cairo to set its own clip the next time the cairo clip - is applied after mark_dirty; otherwise we run the risk of cairo's cached - clip and the device clip getting out of sync if any clip-related functions - are used on the native device back-end. - (cherry picked from 1935a28949da8569f924e37714ec19571fa95987 commit) - (cherry picked from ef8b472f0ffab7b8b828d7297c7e454bb22bd5ec commit) - - src/cairo-surface.c | 19 ++++++++++++++++++- - 1 files changed, 18 insertions(+), 1 deletions(-) - -commit e0f4eecb91c8f7f09ef4977703d4ca21b06797a9 -Author: Vladimir Vukicevic -Date: Wed Feb 15 12:43:01 2006 -0800 - - Win32: Rework clip and extents handling - - - Save extents at surface creation and always return these - - Simplify clipping paths - (cherry picked from a67722b3d7280e6c2375778c2d46556cca261bfc commit) - (cherry picked from 7ce09732a978749a4da814feb77f50161dc42c91 commit) - - src/cairo-win32-private.h | 2 +- - src/cairo-win32-surface.c | 92 +++++++++++++++++---------------------------- - 2 files changed, 36 insertions(+), 58 deletions(-) - -commit f6b4fabaf59227d6cafcdd7e27cf0d8e26b4eeb8 -Author: Vladimir Vukicevic -Date: Tue Feb 14 11:55:00 2006 -0800 - - Misc compilation fixes (C++-style comments, M_PI decls, etc.) - (cherry picked from d0cc56b9a24fa59febc15ac5de073da0e785e1cc commit) - (cherry picked from a6a054abe45287eb950c294e20366594313138f5 commit) - - pixman/src/fbcompose.c | 8 ++++++++ - pixman/src/pixregion.c | 6 +++--- - src/cairo-atsui-font.c | 10 ++++++++++ - src/cairoint.h | 4 ++++ - 4 files changed, 25 insertions(+), 3 deletions(-) - -commit dba214b944a16dd7ee781f495cd5fbe83f678451 -Author: Christian Biesinger -Date: Sun Feb 26 10:46:04 2006 +0100 - - Use C-style comments rather than C++-style - - pixman/src/fbcompose.c | 4 ++-- - pixman/src/pixman-xserver-compat.h | 2 +- - src/cairo-atsui-font.c | 23 ++++++++++++----------- - src/cairo-directfb-surface.c | 2 +- - src/cairo-quartz-surface.c | 11 ++++++----- - 5 files changed, 22 insertions(+), 20 deletions(-) - -commit 5a3c30eafe0b77f69434e139a2e247c8eb4230d7 -Author: Carl Worth -Date: Fri Feb 24 15:32:26 2006 -0800 - - Implement cairo_font_face_get_type. - - Add font type to font_face_backend. - Also export new CAIRO_FONT_TYPE_TOY. - - src/cairo-atsui-font.c | 1 + - src/cairo-font.c | 7 +++++++ - src/cairo-ft-font.c | 1 + - src/cairo-win32-font.c | 1 + - src/cairo.h | 1 + - src/cairoint.h | 3 +++ - 6 files changed, 14 insertions(+), 0 deletions(-) - -commit 5928d03b496420b2d0a89cf8e2d294081a60cc67 -Author: Carl Worth -Date: Fri Feb 24 15:25:19 2006 -0800 - - Remove private cairo_pattern_type in favor of new public one. Rename - all values to now include TYPE. Drop _GRADIENT from LINEAR and RADIAL. - - src/cairo-meta-surface.c | 2 +- - src/cairo-pattern.c | 68 +++++++++++++++++++++--------------------- - src/cairo-pdf-surface.c | 10 +++--- - src/cairo-ps-surface.c | 26 ++++++++-------- - src/cairo-surface-fallback.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo.h | 12 ++++---- - src/cairoint.h | 7 ---- - 8 files changed, 61 insertions(+), 68 deletions(-) - -commit f58f39d7afee8d8a663569f149651c789aa95da8 -Author: Carl Worth -Date: Fri Feb 24 15:06:50 2006 -0800 - - cairo.h: Fix typo (thanks to Torsten Schoenfeld) - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2fc9fd79e794129b26cc8f9b62a5aa4604cb99d9 -Author: Carl Worth -Date: Fri Feb 24 11:37:50 2006 -0800 - - cairo.h: Fix two typos in the documentation. - - src/cairo.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 9287d60d60f55ae3838a7cecfa9fa04a5f95e8de -Author: Carl Worth -Date: Fri Feb 24 11:24:03 2006 -0800 - - Add get_type functions: cairo_surface_get_type, - cairo_pattern_get_type, cairo_font_face_get_type, and - cairo_scaled_font_get_type. - - src/cairo-surface.c | 3 +- - src/cairo.h | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 134 insertions(+), 3 deletions(-) - -commit d0e02a948e83e3b1b330c9cb0aa4930b42bf485c -Author: Carl Worth -Date: Fri Feb 24 09:18:17 2006 -0800 - - autogen.sh: Pass --foreign option to automake so that it doesn't - complain that ChangeLog does not exist. - - autogen.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit cb778760cb87e727a701603bcea3a2cdc063d785 -Author: Carl Worth -Date: Thu Feb 23 22:07:13 2006 -0800 - - cairo_close_path: Document that there will be a current point after - cairo_close_path. - - src/cairo.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 1dc1b57b4eaa55b7a5cafe39f818f7c87352ea6d -Author: Carl Worth -Date: Thu Feb 23 22:01:07 2006 -0800 - - cairo_new_sub_path: Making cairo_arc easier to use and more. - - This adds a new function which has as its only effect the elimination - of - the current point. This makes it much easier to use the various - cairo_arc calls when the initial line_to is not actually desired. - - This function also unifies and generalizes the long-existing behavior - of cairo_line_to being treated as cairo_move_to when there is no - current point. With the addition of cairo_new_sub_path this becomes a - documented feature with similar behavior in cairo_curve_to as well. - - .gitignore | 1 + - src/cairo-path-stroke.c | 24 +++--------- - src/cairo-path.c | 40 +++++++++++++++----- - src/cairo-pdf-surface.c | 48 ++++++------------------ - src/cairo-ps-surface.c | 53 +++++++------------------- - src/cairo-svg-surface.c | 17 +------- - src/cairo.c | 60 ++++++++++++++++++++++++++--- - src/cairo.h | 3 + - src/cairoint.h | 3 + - test/.gitignore | 1 + - test/Makefile.am | 4 ++ - test/new-sub-path-ref.png | Bin 0 -> 386 bytes - test/new-sub-path-rgb24-ref.png | Bin 0 -> 355 bytes - test/new-sub-path.c | 79 +++++++++++++++++++++++++++++++++++++++ - 14 files changed, 209 insertions(+), 124 deletions(-) - -commit 0354956a09cf5a45feed256c1d880bbb9b7c7c42 -Author: Carl Worth -Date: Thu Feb 23 20:45:30 2006 -0800 - - Remove ChangeLog as it is no longer maintained as a separate file (instead it is implicitly generated) - - ChangeLog |13825 ------------------------------------------------------------- - 1 files changed, 0 insertions(+), 13825 deletions(-) - -commit 07205ddc4b3f7ee0416e487fffcf59d324d18bfe -Author: Christian Biesinger -Date: Fri Feb 24 00:04:05 2006 +0100 - - Mark private functions as cairo_private - (cherry picked from a1c72cd8f244e97d4b6fe3e5d3efa622c8b3f7f9 commit) - - src/cairo-paginated-surface-private.h | 2 +- - src/cairoint.h | 14 +++++++------- - 2 files changed, 8 insertions(+), 8 deletions(-) - -commit b2912241f63bf3f8ee14ab4309fc820afdf33e1c -Author: Christian Biesinger -Date: Tue Feb 21 21:00:48 2006 +0100 - - Add missing gradient functions to pixman-remap.h - - pixman/src/pixman-remap.h | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 0fc25c9853441f1fc2e49e7c77dbf9a99f590868 -Author: Christian Biesinger -Date: Sat Feb 18 21:45:58 2006 +0100 - - Don't call _cairo_error when returning an error - - Only return it when returning a nil surface. - - src/cairo-beos-surface.cpp | 26 +++++++------------------- - 1 files changed, 7 insertions(+), 19 deletions(-) - -commit 5c5ea6d5233a669f6a7dff57ed0afba01131b7b5 -Author: Christian Biesinger -Date: Sat Feb 18 19:36:18 2006 +0100 - - Fix typo. - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f4d9e5596258284fa7fef01c91ad854544e2b9a2 -Author: Christian Biesinger -Date: Thu Feb 16 23:37:16 2006 +0100 - - Use TRUE/FALSE instead of 1/0 for boolean values - (cherry picked from e1703520169e0cf972a6edcaa8660d14806d8c6f commit) - - src/cairo-xcb-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 57edf3f28fa09d2ec24d85dcc91a220d901a4452 -Author: Carl Worth -Date: Thu Feb 16 09:05:52 2006 -0800 - - Normalize indentation after previous commit. - - src/cairo-ft-font.c | 312 +++++++++++++++++++++++++-------------------------- - 1 files changed, 155 insertions(+), 157 deletions(-) - -commit 0152bd3a562442853ab930eaea316c08b34f6ba6 -Author: Carl Worth -Date: Thu Feb 16 09:02:29 2006 -0800 - - Allow _get_bitmap_surface to work for 0x0 glyphs, (fix for bug #5734). - - Patch from: Behdad Esfahbod - Reviewed by: Carl Worth - - src/cairo-ft-font.c | 11 ++++------- - 1 files changed, 4 insertions(+), 7 deletions(-) - -commit f12aa15466844b67ec22544c4feee17389ba4aeb -Author: Carl Worth -Date: Wed Feb 15 16:50:57 2006 -0800 - - Add Mozilla patches to ROADMAP - - ROADMAP | 17 +++++++++++++++++ - 1 files changed, 17 insertions(+), 0 deletions(-) - -commit fd9566ebd921f1d5b06ac25d466e15f28fd3112b -Author: Carl Worth -Date: Wed Feb 15 16:36:12 2006 -0800 - - Slip 1.2.0 release date out to 2006-03-08 - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 32ec3ccf1729fbf6da73924238e4a30f1975bbd2 -Author: Carl Worth -Date: Wed Feb 15 15:40:41 2006 -0800 - - Annoying churn of tmpl file. (We really need to get all of these built files out of version control.) - - doc/public/tmpl/cairo-beos.sgml | 19 ------------------- - 1 files changed, 0 insertions(+), 19 deletions(-) - -commit d88c19071f6748b190cb17e6724b67705863a9b0 -Author: Carl Worth -Date: Wed Feb 15 15:00:26 2006 -0800 - - Rename .cvsignore to .gitignore. Add *~ and *.o. - - .cvsignore | 20 ------- - .gitignore | 24 ++++++++ - doc/.cvsignore | 2 - - doc/.gitignore | 3 + - doc/public/.cvsignore | 16 ------ - doc/public/.gitignore | 17 ++++++ - doc/public/tmpl/.cvsignore | 1 - - doc/public/tmpl/.gitignore | 3 + - doc/tutorial/slides/.cvsignore | 7 --- - doc/tutorial/slides/.gitignore | 7 +++ - doc/tutorial/src/.cvsignore | 7 --- - doc/tutorial/src/.gitignore | 8 +++ - pixman/.cvsignore | 19 ------- - pixman/.gitignore | 20 +++++++ - pixman/src/.cvsignore | 8 --- - pixman/src/.gitignore | 10 ++++ - src/.cvsignore | 11 ---- - src/.gitignore | 13 +++++ - test/.cvsignore | 114 --------------------------------------- - test/.gitignore | 116 ++++++++++++++++++++++++++++++++++++++++ - 20 files changed, 221 insertions(+), 205 deletions(-) - -commit f4270b3dfc5e6905c58adb2f6b5d9a049dc616fa -Author: Emmanuel Pacaud -Date: Mon Feb 13 14:11:36 2006 +0000 - - convert _cairo_svg_surface_old_show_glyphs to _cairo_svg_surface_show_glyphs. - - ChangeLog | 5 +++++ - src/cairo-svg-surface.c | 22 ++++++++-------------- - 2 files changed, 13 insertions(+), 14 deletions(-) - -commit 921dcc16f980fcf9a8df4c193720e8ec1e53f1dd -Author: Emmanuel Pacaud -Date: Mon Feb 13 12:41:10 2006 +0000 - - Add mask support and switch to SVG 1.2 for compositing operators. - return xml node instead of cairo status. (emit_composite_svg_pattern): ditto. (emit_composite_pattern): ditto. (emit_operator): use SVG 1.2 operators, since feComposite filter always composite resulting surface to current canvas. (_cairo_svg_surface_composite): removed. (_cairo_svg_surface_fill_rectangles): removed. (intersect): removed. (_cairo_svg_surface_composite_trapezoids): removed. (emit_paint): new. (_cairo_svg_surface_paint): new. (_cairo_svg_surface_mask): new. (_cairo_svg_surface_stroke): emit operator. - - ChangeLog | 19 +++ - src/cairo-svg-surface.c | 294 ++++++++++++++--------------------------------- - 2 files changed, 105 insertions(+), 208 deletions(-) - -commit 8ff1866724a8c82a3332db828ffada4ebd4ca144 -Author: Christian Biesinger -Date: Sat Feb 11 12:57:56 2006 +0000 - - Adds the BeOS surface functions to the list of functions for which to generate documentation. - - ChangeLog | 10 ++++++++++ - doc/public/cairo-docs.xml | 1 + - doc/public/cairo-sections.txt | 7 +++++++ - doc/public/language-bindings.xml | 1 + - doc/public/tmpl/cairo-beos.sgml | 38 ++++++++++++++++++++++++++++++++++++++ - 5 files changed, 57 insertions(+), 0 deletions(-) - -commit 9c05d2aab15b589197436af5287ae9297c0314bd -Author: Emmanuel Pacaud -Date: Thu Feb 2 12:47:58 2006 +0000 - - fix filename. - shh! - - ChangeLog | 5 +++++ - test/.cvsignore | 4 ++-- - test/cairo-test.c | 2 +- - 3 files changed, 8 insertions(+), 3 deletions(-) - -commit be7b6251f3ff6b86df3456fad561f4c0acb3c3ab -Author: Emmanuel Pacaud -Date: Sun Jan 29 13:25:10 2006 +0000 - - fix offset of pattern stops. - - ChangeLog | 5 +++++ - src/cairo-svg-surface.c | 6 ++---- - 2 files changed, 7 insertions(+), 4 deletions(-) - -commit d157e1fcd5f74e51587fc9eb342ce38ccbf73433 -Author: Keith Packard -Date: Wed Jan 25 19:17:34 2006 +0000 - - Make watermark consistently translucent Use fill for dung outline Fix text locations - - ChangeLog | 12 ++++ - doc/tutorial/slides/cairo-code.svg | 4 +- - doc/tutorial/slides/cairo-large-content.svg | 2 +- - doc/tutorial/slides/cairo-separator.svg | 8 ++-- - doc/tutorial/slides/cairo-title.svg | 4 +- - doc/tutorial/slides/cairo.svg | 79 +++++++++++---------------- - 6 files changed, 54 insertions(+), 55 deletions(-) - -commit 3bcaab9fe1cd05ace2073922975d07f6fb01a20f -Author: Carl Worth -Date: Wed Jan 25 15:34:30 2006 +0000 - - Add a CONTROL-Q keybinding to quit. - - ChangeLog | 5 +++++ - doc/tutorial/src/include/cairo-tutorial-gtk.h | 17 +++++++++++++++++ - 2 files changed, 22 insertions(+), 0 deletions(-) - -commit 29479a8b12e3f2575de6ef899142dcd0cd8e21a4 -Author: Keith Packard -Date: Wed Jan 25 15:29:25 2006 +0000 - - Adopt proposed new cairo color scheme. Recolor scarab, eliminate gradient in dung Use new blue background color. Rework font sizes, use bold for titles. Change tutorial title. - reviewed by: cworth - - ChangeLog | 17 + - doc/tutorial/slides/cairo-blank.svg | 22 +- - doc/tutorial/slides/cairo-code.svg | 114 ++++-- - doc/tutorial/slides/cairo-large-content.svg | 102 ++++-- - doc/tutorial/slides/cairo-separator.svg | 97 ++++- - doc/tutorial/slides/cairo-title.svg | 563 ++++++++++++++++++++++++++- - doc/tutorial/slides/cairo.svg | 113 ++++-- - doc/tutorial/slides/tutorial.xml | 4 +- - 8 files changed, 869 insertions(+), 163 deletions(-) - -commit 2d2c5fd5b003d681b57380a5d11ffc4dd3903b35 -Author: Carl Worth -Date: Wed Jan 25 14:31:17 2006 +0000 - - Shrink the font size to make the tutorial instructions fit. - Format text to solve all problematic line wrapping. - Add my name to the README. - - ChangeLog | 10 ++++ - doc/tutorial/slides/cairo-blank.svg | 2 +- - doc/tutorial/slides/tutorial.xml | 89 ++++++++++++++++++----------------- - doc/tutorial/src/README | 4 +- - 4 files changed, 58 insertions(+), 47 deletions(-) - -commit dc64fcc68ccbe92392a88167e83cc5994f69cf66 -Author: Carl Worth -Date: Wed Jan 25 10:22:32 2006 +0000 - - Move the magic header files to be down in an include directory and more out of the way. - Look for the headers in -I./include. - Make the circle track the width and height of the window dynamically. - Remove boring expander example. - Add more interesting LCA exmaple. - Add some notes about how to use this stuff. - - ChangeLog | 28 +++ - doc/tutorial/src/Makefile | 12 +- - doc/tutorial/src/README | 66 ++++++ - doc/tutorial/src/cairo-tutorial-gtk.h | 116 ----------- - doc/tutorial/src/cairo-tutorial-pdf.h | 74 ------- - doc/tutorial/src/cairo-tutorial-png.h | 74 ------- - doc/tutorial/src/cairo-tutorial-xlib.h | 219 --------------------- - doc/tutorial/src/cairo-tutorial.h | 41 ---- - doc/tutorial/src/circle.c | 13 +- - doc/tutorial/src/expander.c | 13 -- - doc/tutorial/src/include/cairo-tutorial-gtk.h | 116 +++++++++++ - doc/tutorial/src/include/cairo-tutorial-pdf.h | 74 +++++++ - doc/tutorial/src/include/cairo-tutorial-png.h | 74 +++++++ - doc/tutorial/src/include/cairo-tutorial-xlib.h | 251 ++++++++++++++++++++++++ - doc/tutorial/src/include/cairo-tutorial.h | 41 ++++ - doc/tutorial/src/lca.c | 32 +++ - 16 files changed, 696 insertions(+), 548 deletions(-) - -commit 9abe21ac70e0d1ae75397f40455f1d55fc5b5018 -Author: Carl Worth -Date: Wed Jan 25 08:41:14 2006 +0000 - - Here's the actual template I was referring to in my previous commit. - Add a bunch more slides. Most of the text is in place now---just missing some formatting and a bunch of examples. - - ChangeLog | 9 + - doc/tutorial/slides/cairo-large-content.svg | 855 +++++++++++++++++++++++++++ - doc/tutorial/slides/tutorial.xml | 434 +++++++------- - 3 files changed, 1084 insertions(+), 214 deletions(-) - -commit 649d8a09187490c68c9b110385f043ceb13a8972 -Author: Carl Worth -Date: Wed Jan 25 07:33:56 2006 +0000 - - Add Red Hat logos to slide templates. - Add header/footer-less slide variant for slides needed an extra bit of space. - Start getting slides ready for linux.conf.au 2006 tutorial, updating for cairo 1.0 API, and adding better organization. Verify and fix all the little example shell programs. - Really remove the building of the - -pdf programs this time. - - ChangeLog | 18 ++ - doc/tutorial/slides/cairo-blank.svg | 2 +- - doc/tutorial/slides/cairo-code.svg | 367 ++++++++++++++++++++++++++++++- - doc/tutorial/slides/cairo-separator.svg | 367 ++++++++++++++++++++++++++++++- - doc/tutorial/slides/cairo.svg | 368 ++++++++++++++++++++++++++++++- - doc/tutorial/slides/rendering-model.png | Bin 0 -> 63917 bytes - doc/tutorial/slides/tutorial.xml | 105 +++++++-- - doc/tutorial/src/Makefile | 2 +- - 8 files changed, 1200 insertions(+), 29 deletions(-) - -commit ea9f65b0d4cc88b504a6c104b242477264fef1e7 -Author: Carl Worth -Date: Wed Jan 25 02:10:23 2006 +0000 - - A few random changes to the slides. - Remove pdf build by default, (since it is disabled by defalt in cairo 1.0.2). - Change draw interface to accept a width and height. - Fix the destroy event handler so that clicking on the window manager's 'close window' button works. - - ChangeLog | 20 ++++++++++++++++++++ - doc/tutorial/slides/tutorial.xml | 29 ++++++++++++++++------------- - doc/tutorial/src/Makefile | 1 + - doc/tutorial/src/cairo-tutorial-gtk.h | 6 +++--- - doc/tutorial/src/cairo-tutorial-pdf.h | 4 ++-- - doc/tutorial/src/cairo-tutorial-png.h | 4 ++-- - doc/tutorial/src/cairo-tutorial-xlib.h | 4 ++-- - doc/tutorial/src/circle.c | 5 +---- - doc/tutorial/src/expander.c | 5 +---- - 9 files changed, 48 insertions(+), 30 deletions(-) - -commit d6ff77c297ebfd97707479d3850f4c2c86f0678f -Author: Behdad Esfahbod -Date: Sun Jan 22 02:33:26 2006 +0000 - - Add cairo_scaled_font_text_extents. - New function. - Improve documentation. - - ChangeLog | 11 +++++++++ - src/cairo-scaled-font.c | 55 +++++++++++++++++++++++++++++++++++++++++++--- - src/cairo.h | 5 ++++ - 3 files changed, 67 insertions(+), 4 deletions(-) - -commit bfc2b49ad921c62a36154dd761ebca7490a57d9f -Author: Christian Biesinger -Date: Sat Jan 21 11:54:17 2006 +0000 - - Updating BeOS reference images, the tests use a black background now. - - ChangeLog | 13 +++++++++++++ - test/mask-beos-rgb24-ref.png | Bin 73512 -> 71028 bytes - test/mask-beos_bitmap-argb32-ref.png | Bin 87641 -> 87641 bytes - test/mask-beos_bitmap-rgb24-ref.png | Bin 73512 -> 71028 bytes - test/set-source-beos-rgb24-ref.png | Bin 124 -> 124 bytes - test/set-source-beos_bitmap-rgb24-ref.png | Bin 124 -> 124 bytes - test/trap-clip-beos-rgb24-ref.png | Bin 64729 -> 63088 bytes - test/trap-clip-beos_bitmap-rgb24-ref.png | Bin 64729 -> 63088 bytes - 8 files changed, 13 insertions(+), 0 deletions(-) - -commit 9fe49346354e1785ff83be69bc1b775a41b7960a -Author: Christian Biesinger -Date: Sat Jan 21 09:46:13 2006 +0000 - - Update BeOS test code per the cairo_format_t -> cairo_content_t changes. - - ChangeLog | 9 +++++++++ - test/cairo-test-beos.cpp | 8 ++++---- - test/cairo-test-beos.h | 4 ++-- - 3 files changed, 15 insertions(+), 6 deletions(-) - -commit 2afe78c0c2c61186d532d3fa5717e295c8c6272b -Author: Christian Biesinger -Date: Sat Jan 21 09:39:10 2006 +0000 - - Don't mix declarations and code. This makes the code valid ISO C, fixes a gcc -pedantic warning, and unbreaks the build with the compiler Zeta ships with. - - ChangeLog | 11 +++++++++++ - pixman/src/fbpict.c | 6 +++--- - src/cairo-paginated-surface.c | 5 +++-- - test/cairo-test.c | 2 +- - 4 files changed, 18 insertions(+), 6 deletions(-) - -commit f1fd1cc7a9043ae277e4abe421b13812214a3c64 -Author: Carl Worth -Date: Fri Jan 20 15:25:54 2006 +0000 - - Add getter functions for cairo_scaled_font_t. - - ChangeLog | 8 +++++ - src/cairo-scaled-font.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo.h | 15 +++++++++ - 3 files changed, 99 insertions(+), 1 deletions(-) - -commit a6ad853ee1a78585859ed77d5d8707fcfd448eab -Author: Carl Worth -Date: Fri Jan 20 15:15:40 2006 +0000 - - Fix test to use fontconfig properly so that the test no longer fails. Fixes bug #4674. (Thnks to sunmoon1997 for the fix). - - ChangeLog | 6 ++++++ - test/ft-font-create-for-ft-face.c | 24 +++++++++++++++++++----- - 2 files changed, 25 insertions(+), 5 deletions(-) - -commit 13511972b612c322815a2849fa8f812249d71d8e -Author: Carl Worth -Date: Fri Jan 20 14:48:07 2006 +0000 - - Check font_face->status and return a nil scaled font if it is in an error state. (Thanks to Christian Biesinger and sunmoon1997 who pointed this out as part of bug #4674). - With this bug fix, the ft-font-create-for-ft-face test fails (as it should) since it is abusing fontconfig. - - ChangeLog | 10 ++++++++++ - src/cairo-scaled-font.c | 5 ++++- - 2 files changed, 14 insertions(+), 1 deletions(-) - -commit 074f886c00d560daec90f1d6f6212ecf923f4d66 -Author: Carl Worth -Date: Thu Jan 19 17:48:22 2006 +0000 - - Rip the cairo_content_t argument out of ps/pdf_surface_create as per discussion on cairo mailing list. Instead these surface will behave as if CONTENT_COLOR_ALPHA had been passed (that is, compositing operators will behave as if destination alpha were available). - This also has the benefit of preserving the API that has been in place for PS/PDF surface since the (experimental) stuff in 1.0.0. - Track API change. - Continue testing PS/PDF surfaces in the CAIRO_CONTENT_COLOR mode but do it by rendering to an intermediate similar surface rather than constructing the target surface differently. - - ChangeLog | 29 +++++++++++++++++++ - src/cairo-pdf-surface.c | 27 +++-------------- - src/cairo-pdf.h | 2 - - src/cairo-ps-surface.c | 24 +-------------- - src/cairo-ps.h | 2 - - test/cairo-test.c | 71 +++++++++++++++++++++++++++++++++++++++------- - test/multi-page.c | 4 +- - 7 files changed, 98 insertions(+), 61 deletions(-) - -commit 14acc7f132fd90d1ba37ddf7ffe9688261cd587b -Author: Emmanuel Pacaud -Date: Thu Jan 19 12:44:00 2006 +0000 - - add missing header. Fix #5544. - - ChangeLog | 4 ++++ - test/svg2png.c | 1 + - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit ec45efa57cded99f70e65b23989625243d57eb1e -Author: Carl Worth -Date: Wed Jan 18 16:44:19 2006 +0000 - - Fix compilation-breaking typo. - - ChangeLog | 5 +++++ - src/cairo-pdf-surface.c | 6 ++++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit c634e547758aa73d229ed209a8c6e56f06a90d0d -Author: Carl Worth -Date: Wed Jan 18 16:40:17 2006 +0000 - - Change documentation to recommend cairo_paint rather than cairo_rectangle;cairo_fill for clearing a surface. - Add documentation. Add a cairo_content_t argument to PDF surface constructors. - Add documentation. Add a cairo_content_t argument to PS surface constructors. - Track changes in PS/PDF surface constructor API. - - ChangeLog | 20 +++++++++++ - src/cairo-image-surface.c | 4 +- - src/cairo-pdf-surface.c | 79 ++++++++++++++++++++++++++++++++++++-------- - src/cairo-pdf.h | 2 + - src/cairo-ps-surface.c | 70 ++++++++++++++++++++++++++++++++++----- - src/cairo-ps.h | 2 + - test/cairo-test.c | 4 +- - test/multi-page.c | 4 +- - 8 files changed, 155 insertions(+), 30 deletions(-) - -commit ba69dfefa793d26805ba2ffb17c67d31f5a99ad1 -Author: Carl Worth -Date: Wed Jan 18 09:46:42 2006 +0000 - - Fix documentation of cairo_arc which erroneously claimed M_PI radians == 90 degrees to correctly say that M_PI/2.0 radians == 90 degrees. This closes bug #5649 (with thanks to kengruven@gmail.com). - - ChangeLog | 7 +++++++ - src/cairo.c | 4 ++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit b5c5fb613d5d554f6ebb3e1a10dbb1e7038b47c7 -Author: Carl Worth -Date: Tue Jan 17 16:59:08 2006 +0000 - - Big change to the test infrastructure and supporting internals. The goal now is to test both a COLOR_ALPHA and a COLOR content for each surface backend, (since the semantics are different and we probably need to support both in each backend. - The PS/PDF backends don't allow a content to be passed in right now, so they fail against the rgb24 tests, but the trivial addition to the constructors will allow them to pass all tests with both content values. - And new constructors (currently internal only) to create an image surface with a cairo_content_t rather than a cairo_format_t. - Add a cairo_content_t argument to the constructor. - Add a cairo_content_t to the constructor and use this content value when constructing intermediate image surfaces in acquire_source, show_page, copy_page, and snapshot. - Add image flattening by compositing over white, as is done in cairo-ps-surface.c. - Track changes to cairo-paginates-surface which now requires a cairo_content_t value (no change to public PS/PDF constructors yet). - Track change in meta-surface and paginated-surface interfaces by now accepting a cairo_content_t rather than a cairo_format_t. - Ignore new output files (argb32 from pdf and ps as well as rgb24 from test-fallback, test-meta, and test-paginated). - Add new utility for flattening PNG images in order to generate the -argbf-ref.png images. - Add image_diff_flattened for comparing flattened output from PS and PDF backend with ARGB reference images by first blending the reference images over white. - Get rid of conditional, format-specific background-color initialization before running tests. Now uses ARGB(0,0,0,0) in all cases. Switch from specifying tests with a format value to specifying tests with a content value. Add support for a 'fake' COLOR_ALPHA_FLATTENED content for testing the PS and PDF output against a flattened version of the argb32 reference images (first blended over white). - Track change in cairo_ps_surface_create (now requires cairo_content_t value). - Adjust tests that draw in default (black) to first paint white so that the results are visible. - Adjust ARGB32 reference images for new white background for changed tests. - Adjust RGB24 reference images for new black background due to changed initialization (and the tests themselves being unchanged). - - ChangeLog | 143 +++++++++++ - src/cairo-image-surface.c | 31 +++- - src/cairo-meta-surface-private.h | 6 +- - src/cairo-meta-surface.c | 7 +- - src/cairo-paginated-surface-private.h | 1 + - src/cairo-paginated-surface.c | 25 ++- - src/cairo-pdf-surface.c | 87 ++++++-- - src/cairo-pdf.h | 6 +- - src/cairo-ps-surface.c | 16 +- - src/cairo-ps.h | 6 +- - src/cairoint.h | 12 + - src/test-fallback-surface.c | 6 +- - src/test-fallback-surface.h | 2 +- - src/test-meta-surface.c | 11 +- - src/test-meta-surface.h | 2 +- - src/test-paginated-surface.c | 17 +- - src/test-paginated-surface.h | 10 +- - test/.cvsignore | 8 + - test/Makefile.am | 3 +- - test/buffer-diff.c | 94 ++++++++ - test/buffer-diff.h | 7 + - test/cairo-test.c | 287 ++++++++++++++--------- - test/caps-joins-ref.png | Bin 1262 -> 1488 bytes - test/caps-joins.c | 6 + - test/caps-sub-paths-ref.png | Bin 164 -> 197 bytes - test/caps-sub-paths.c | 6 + - test/clip-fill-rule-pixel-aligned-rgb24-ref.png | Bin 194 -> 184 bytes - test/clip-fill-rule-rgb24-ref.png | Bin 495 -> 380 bytes - test/clip-nesting-rgb24-ref.png | Bin 846 -> 955 bytes - test/clip-operator-rgb24-ref.png | Bin 20991 -> 16507 bytes - test/clip-twice-rgb24-ref.png | Bin 1278 -> 1120 bytes - test/dash-caps-joins-ref.png | Bin 2347 -> 3219 bytes - test/dash-caps-joins.c | 6 + - test/dash-offset-negative-ref.png | Bin 155 -> 171 bytes - test/dash-offset-negative.c | 6 + - test/fill-and-stroke-rgb24-ref.png | Bin 299 -> 257 bytes - test/fill-rule-rgb24-ref.png | Bin 2320 -> 1722 bytes - test/gradient-alpha-rgb24-ref.png | Bin 152 -> 142 bytes - test/leaky-polygon-ref.png | Bin 255 -> 368 bytes - test/leaky-polygon.c | 6 + - test/line-width-ref.png | Bin 171 -> 201 bytes - test/line-width.c | 4 + - test/mask-ctm-rgb24-ref.png | Bin 140 -> 124 bytes - test/mask-rgb24-ref.png | Bin 73292 -> 71069 bytes - test/mask-surface-ctm-rgb24-ref.png | Bin 140 -> 124 bytes - test/multi-page.c | 2 +- - test/nil-surface-rgb24-ref.png | Bin 106 -> 106 bytes - test/operator-clear-rgb24-ref.png | Bin 5677 -> 4218 bytes - test/operator-source-rgb24-ref.png | Bin 16746 -> 14699 bytes - test/paint-with-alpha-rgb24-ref.png | Bin 146 -> 142 bytes - test/path-data-ref.png | Bin 387 -> 579 bytes - test/path-data.c | 6 + - test/png-flatten.c | 77 ++++++ - test/rel-path-rgb24-ref.png | Bin 115 -> 228 bytes - test/scale-source-surface-paint-rgb24-ref.png | Bin 146 -> 136 bytes - test/set-source-rgb24-ref.png | Bin 114 -> 120 bytes - test/show-text-current-point-ref.png | Bin 1606 -> 2411 bytes - test/show-text-current-point.c | 6 + - test/source-surface-scale-paint-rgb24-ref.png | Bin 136 -> 133 bytes - test/text-antialias-gray-ref.png | Bin 740 -> 1084 bytes - test/text-antialias-gray.c | 6 + - test/text-antialias-none-ref.png | Bin 276 -> 298 bytes - test/text-antialias-none.c | 6 + - test/text-pattern-rgb24-ref.png | Bin 2704 -> 2339 bytes - test/transforms-ref.png | Bin 302 -> 361 bytes - test/transforms.c | 6 + - test/trap-clip-rgb24-ref.png | Bin 64728 -> 63087 bytes - test/unbounded-operator-rgb24-ref.png | Bin 7555 -> 6047 bytes - 68 files changed, 756 insertions(+), 174 deletions(-) - -commit 0b48d620f11a1efb611d2ad6888c8e5d8f64db03 -Author: Christian Biesinger -Date: Sun Jan 15 04:44:45 2006 +0000 - - Update BeOS reference images per the recent gradient changes - - ChangeLog | 9 +++++++++ - test/mask-beos-rgb24-ref.png | Bin 73554 -> 73512 bytes - test/mask-beos_bitmap-argb32-ref.png | Bin 87543 -> 87641 bytes - test/mask-beos_bitmap-rgb24-ref.png | Bin 73554 -> 73512 bytes - test/trap-clip-beos-rgb24-ref.png | Bin 64724 -> 64729 bytes - test/trap-clip-beos_bitmap-rgb24-ref.png | Bin 64724 -> 64729 bytes - 6 files changed, 9 insertions(+), 0 deletions(-) - -commit c79cda6150a71846ce546b27f243d858ec5fd037 -Author: Christian Biesinger -Date: Sat Jan 14 06:53:43 2006 +0000 - - Ignore glitz-glx test output - - ChangeLog | 4 ++++ - test/.cvsignore | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 59eff46fdf201f6269daf5fa101eafdf4f881e30 -Author: Carl Worth -Date: Fri Jan 13 13:41:45 2006 +0000 - - Fix things up to conform with Adobe PostScript Document Structuring Conventions Specification. Thanks to Michael Sweet for bringing several items to our attention. Things that are fixed: Add Pages: (atend) to header, add Pages: N to trailer, properly advertise DocumentData of Binary rather than Clean7Bit, remove fictitious EndPage, move showpage to after the grestore. - - ChangeLog | 12 ++++++++++++ - src/cairo-ps-surface.c | 25 +++++++++---------------- - 2 files changed, 21 insertions(+), 16 deletions(-) - -commit 6f3cb04d9c8bb1e72de3b6ea71b475f9457ffcb9 -Author: Carl Worth -Date: Fri Jan 13 11:02:25 2006 +0000 - - Rip out the misguided paint-with-white and RGB24 surface code and go back to using ARGB32. It turns out that the PS backend already has its own blend-with-white code, and the test-paginated-surface really wants ARGB32. - - ChangeLog | 10 ++++++++++ - src/cairo-paginated-surface.c | 28 ++++------------------------ - 2 files changed, 14 insertions(+), 24 deletions(-) - -commit b4e4568962e53c6b85027165da62b73020ec4586 -Author: Carl Worth -Date: Fri Jan 13 09:25:28 2006 +0000 - - Eliminate cast of state->dx.elements which has been wrong since the internals of cairo_array_t changed on 2005-12-21. Now, hopefully less than all text will be broken on win32. - - ChangeLog | 7 +++++++ - src/cairo-win32-font.c | 4 +++- - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 4e4b38e75930e3da8c33a02eae77fb736659ff44 -Author: Carl Worth -Date: Thu Jan 12 16:47:05 2006 +0000 - - Add a call to cairo_copy_page, so that that gets called at least once within the test suite. - Fix broken implementation of copy_page in the paginated surface by hiding it from the target surface which sees only show_page operations. (It's hard to do better than that unless we can guarantee thathe subsequent page won't trigger any image fallbacks.) - - ChangeLog | 13 +++++++++++++ - src/cairo-paginated-surface.c | 29 ++++++++--------------------- - test/multi-page.c | 20 ++++++++++++++------ - 3 files changed, 35 insertions(+), 27 deletions(-) - -commit 25882cd5e9d51f84338af6278c50d268b3d0091c -Author: Carl Worth -Date: Thu Jan 12 16:35:12 2006 +0000 - - Add a new CAIRO_HAS_MULTI_PAGE_SURFACES automake conditional. - Remove backend-specific tests (ps-surface, pdf-surface, and pdf-clip) that are now redundant with the ps and pdf support in the rest of the test suite. - Add a new one-off test for testing show_page with both the ps and pdf backends. - - ChangeLog | 17 +++++ - configure.in | 2 + - test/.cvsignore | 9 +-- - test/Makefile.am | 21 ++---- - test/multi-page.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - test/pdf-clip.c | 134 ----------------------------------------- - test/pdf-surface.c | 111 ---------------------------------- - test/ps-surface.c | 122 ------------------------------------- - 8 files changed, 199 insertions(+), 387 deletions(-) - -commit 3647ff95f968a68f938fa7cdea9d48880f1064bd -Author: Carl Worth -Date: Thu Jan 12 13:36:36 2006 +0000 - - Some fixes for the fact that multi-page output was totally broken for cairo_ps_surface_t (at least): - Move the Y-axis-flipping to be on a per-page basis (as it was before and as it must be). Put page number back in, (still missing th number of pages from the header). - Add multi-page output for better testing. - - ChangeLog | 20 +++++++++++++ - src/cairo-ps-surface.c | 72 ++++++++++++++++++++++++++++++++++------------- - test/ps-surface.c | 29 +++++++++++++------ - 3 files changed, 92 insertions(+), 29 deletions(-) - -commit 107a52ed6190a72882598eec5f2cf0fab24f4cb1 -Author: Carl Worth -Date: Wed Jan 11 16:29:17 2006 +0000 - - Paint with white to intermediate RGB24 images before replaying meta-surface to preserve default white background instead of forcing a black background instead. - - ChangeLog | 9 +++++++++ - src/cairo-paginated-surface.c | 22 +++++++++++++++++++++- - 2 files changed, 30 insertions(+), 1 deletions(-) - -commit ebeaeeccece1a6cbe68db347ad782f2dd482afc3 -Author: Carl Worth -Date: Wed Jan 11 16:01:25 2006 +0000 - - Note that PS backend has now been switched over to use cairo_paginated_surface_t. - Switch from ARGB32 to RGB24 for intermediate image surface since that's all that the current users of cairo_paginated_surface support anyway. - Switch cairo_ps_surface_t over to use the new cairo_paginated_surface_t. This drastically simplifies the implementation, but temporarily puts the PostScript output back into the land of one-image-per-page. To be fixed soon though with improvements to cairo_paginated_surface_t. Everything still passes the test suite which is good. The test suite currently does no testing of multi-page output, which is quite bad. - - ChangeLog | 34 ++ - ROADMAP | 11 +- - src/cairo-paginated-surface.c | 6 +- - src/cairo-ps-surface.c | 758 ++++++++++++----------------------------- - 4 files changed, 254 insertions(+), 555 deletions(-) - -commit c23d7d4758c7915505437b0fc8b57df9ef628289 -Author: Carl Worth -Date: Wed Jan 11 11:53:33 2006 +0000 - - Note that from here on out, the PDF output should always pass the entire test suite! - Add new functions needed by users of cairo_paginated_surface_t. - Always snapshot a paginated surface to an image surface, rather than a surface similar to the target. We do this since paginated target surfaces are allowed to not be complete surfaces, (such as not implementing acquire_source_surface). - Switch the implementation of cairo_pdf_surface_t to use cairo_paginated_surface_t. For now this means that all PDF output is fallback images, but this can change incrementally as we go forward. - - ChangeLog | 25 +++++++++++++++++++++++++ - ROADMAP | 22 ++++++++++++---------- - src/cairo-paginated-surface-private.h | 6 ++++++ - src/cairo-paginated-surface.c | 24 ++++++++++++++++++++---- - src/cairo-pdf-surface.c | 32 +++++++++++++++++++++++++++----- - 5 files changed, 90 insertions(+), 19 deletions(-) - -commit 953561ebbd7e58ecb3e6cec0e2446cf3dac3f146 -Author: Anders Carlsson -Date: Tue Jan 10 07:54:17 2006 +0000 - - Remove old scale matrix since it exists in our base class. - (_cairo_atsui_font_set_metrics): Fix descent calculation. - - ChangeLog | 12 ++++++++++++ - src/cairo-atsui-font.c | 18 +++++++----------- - 2 files changed, 19 insertions(+), 11 deletions(-) - -commit ae807fc9361fcb77b1cefc09cb180f045510768b -Author: Anders Carlsson -Date: Tue Jan 10 05:28:59 2006 +0000 - - Add cairo-quartz-private.h - If the destination surface is a quartz surface, get the clip mask from it. - Added. - Keep a copy of the clip mask around. - (_cairo_surface_is_quartz): New function which determines if a given surface is a quartz surface. - - ChangeLog | 21 +++++++++++++++ - src/Makefile.am | 2 +- - src/cairo-atsui-font.c | 33 +++++++++++++++++++++++- - src/cairo-quartz-private.h | 61 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-quartz-surface.c | 37 +++++++++++++++----------- - 5 files changed, 136 insertions(+), 18 deletions(-) - -commit d6cb82c37284aa0b5fb8e427faf0b360c9b26168 -Author: Carl Worth -Date: Mon Jan 9 17:18:12 2006 +0000 - - Add printf format attribute to cairo_test_log. - - ChangeLog | 4 ++++ - test/cairo-test.h | 9 ++++++++- - 2 files changed, 12 insertions(+), 1 deletions(-) - -commit ff5207ed11ed04df8f436c5d59e04ed0c3f4cc7f -Author: Anders Carlsson -Date: Mon Jan 9 10:29:22 2006 +0000 - - Use uint32_t instead of uint; - - pixman/ChangeLog | 7 +++++++ - pixman/src/icimage.c | 8 ++++---- - 2 files changed, 11 insertions(+), 4 deletions(-) - -commit 7ce7b20a821c93c0edb9b2899c52b13f8067d860 -Author: Carl Worth -Date: Fri Jan 6 14:24:55 2006 +0000 - - Reviewed by keithp - Change the paginated surface to force all output to come from an image surface (to be refined incrementally as we hook real surface backends up to it). - - ChangeLog | 10 ++++++++++ - src/cairo-paginated-surface.c | 24 ++++++++++++++++++++++-- - 2 files changed, 32 insertions(+), 2 deletions(-) - -commit fbb8a62797657a98905b92bd01bfa995cc823def -Author: Carl Worth -Date: Fri Jan 6 14:11:07 2006 +0000 - - Reviewed by keithp - Implement copy_page for paginated surface. Fix show_page to destroy the meta-surface and create a new one. - Change these functions to advertise when they are not supported, so that _cairo_paginated_copy_page can implement things differently depending on whether or not it is personal. - Check return values from _cairo_surface_show/copy_page. - - ChangeLog | 21 ++++++++++++++++ - src/cairo-gstate.c | 20 +++++++++++++- - src/cairo-paginated-surface.c | 54 ++++++++++++++++++++++++++++++++++++++++- - src/cairo-surface.c | 16 +++++++---- - src/cairoint.h | 4 +- - 5 files changed, 104 insertions(+), 11 deletions(-) - -commit 88875100d6910d62edcaf7fadc2146594ad3268b -Author: Carl Worth -Date: Thu Jan 5 15:17:02 2006 +0000 - - Slip 1.2.0 projected data (again) out to 2006-01-13. Note that win32 is now incorporated into the test suite and is only failing two tests (self-copy and trap-clip). Note new progress on cairo_push/pop_group. Add item to support pango's hex-box drawing. Note that gradient computation performance has been improved. Note that experimental SVG backend has been added. - - ChangeLog | 10 ++++++++++ - ROADMAP | 28 ++++++++++++++++++++++++---- - 2 files changed, 34 insertions(+), 4 deletions(-) - -commit 6995a83597217bd422e74d79ce3c989334ada871 -Author: David Reveman -Date: Thu Jan 5 15:00:37 2006 +0000 - - Gradient updates in SVG backend and no sorting of color stops in SVG or PDF backend - - ChangeLog | 7 ++++ - src/cairo-pdf-surface.c | 20 ------------- - src/cairo-svg-surface.c | 73 ++++++++++++++++++++++------------------------- - 3 files changed, 41 insertions(+), 59 deletions(-) - -commit 421504802570978aa6a107a96587cc8014fbd58c -Author: David Reveman -Date: Thu Jan 5 05:14:14 2006 +0000 - - Update gradient code in glitz backend - - ChangeLog | 3 +++ - src/cairo-glitz-surface.c | 30 +++++++++++++++--------------- - 2 files changed, 18 insertions(+), 15 deletions(-) - -commit 5ac6e85455fce862989033d5ff98576d159664bd -Author: David Reveman -Date: Thu Jan 5 05:06:50 2006 +0000 - - Update gradient code in PDF backend - - ChangeLog | 5 +++++ - src/cairo-pdf-surface.c | 30 +++++++++++++++--------------- - 2 files changed, 20 insertions(+), 15 deletions(-) - -commit 9737b4de39162a86844e07f50aa76e881063dab9 -Author: Carl Worth -Date: Wed Jan 4 17:59:03 2006 +0000 - - 2005-10-10 David Reveman - Throw away old gradient code from within cairo-pattern.c in favor of using new support in pixman for gradients. - Update reference images for all tests involving gradients since the gradient output has changed slightly. - - ChangeLog | 40 +++ - src/cairo-image-surface.c | 14 +- - src/cairo-matrix.c | 17 + - src/cairo-pattern.c | 594 ++++++++------------------------- - src/cairoint.h | 29 +- - test/clip-operator-ref.png | Bin 37134 -> 36956 bytes - test/clip-operator-rgb24-ref.png | Bin 21014 -> 20991 bytes - test/gradient-alpha-ref.png | Bin 154 -> 155 bytes - test/gradient-alpha-rgb24-ref.png | Bin 147 -> 152 bytes - test/linear-gradient-ref.png | Bin 12719 -> 12750 bytes - test/linear-gradient-rgb24-ref.png | Bin 12719 -> 11700 bytes - test/mask-ref.png | Bin 87846 -> 87837 bytes - test/mask-rgb24-ref.png | Bin 73124 -> 73292 bytes - test/operator-clear-ref.png | Bin 4971 -> 4933 bytes - test/operator-clear-rgb24-ref.png | Bin 5704 -> 5677 bytes - test/operator-source-ref.png | Bin 19982 -> 19684 bytes - test/operator-source-rgb24-ref.png | Bin 16909 -> 16746 bytes - test/text-pattern-ref.png | Bin 2731 -> 2725 bytes - test/text-pattern-rgb24-ref.png | Bin 2686 -> 2704 bytes - test/trap-clip-ref.png | Bin 71701 -> 71785 bytes - test/trap-clip-rgb24-ref.png | Bin 64724 -> 64728 bytes - test/unbounded-operator-ref.png | Bin 11994 -> 11964 bytes - test/unbounded-operator-rgb24-ref.png | Bin 7581 -> 7555 bytes - 23 files changed, 221 insertions(+), 473 deletions(-) - -commit 19441311e471b661b6b2a6854f030aafa7715d5d -Author: Carl Worth -Date: Wed Jan 4 16:39:23 2006 +0000 - - 2005-10-10 David Reveman - Some major performance improvements to the general composite code used for gradients and transformed images. Like fetching of mask scanline before source scanline so that only the necessary pixels from source needs to be computed in case of gradients or transformed images as source. This patch also include some gradient specific fixes and performance improvement. - - pixman/ChangeLog | 22 +- - pixman/src/fbcompose.c | 1187 ++++++++++++++++++++++++++++++------------------ - pixman/src/icimage.c | 17 +- - pixman/src/icimage.h | 9 + - 4 files changed, 776 insertions(+), 459 deletions(-) - -commit 305a83721f5c6423fc1e7fbb0cf1d67c0f92ecb7 -Author: Carl Worth -Date: Wed Jan 4 16:26:10 2006 +0000 - - Originally: 2005-10-10 David Reveman - Add entries for gradient support. - Add PictureGradientColor. - Add necessary functionality for gradient support. - Enable gradient support. - - pixman/ChangeLog | 13 ++ - pixman/src/fbcompose.c | 91 +++++++++----- - pixman/src/icimage.c | 334 +++++++++++++++++++++++++++++++++++++++++++++--- - pixman/src/icimage.h | 72 +++++++++++ - pixman/src/icint.h | 7 + - pixman/src/pixman.h | 48 ++++++-- - 6 files changed, 510 insertions(+), 55 deletions(-) - -commit c6cdfc5770c6bfb5d708cb1c13921079f611299a -Author: Vladimir Vukicevic -Date: Tue Jan 3 09:23:48 2006 +0000 - - Clamp surface dimensions to a minimum of 1. (_cairo_glitz_surface_get_image): Set the glitz clip to NULL before calling glitz_get_pixels, to return the full surface contents. Restore clip afterwards. (_cairo_glitz_surface_composite_trapezoid): Return UNSUPPORTED if the antialias is anything other than DEFAULT/GRAY. - Try to recover a standard cairo_format_t from given pixman format masks, so that various things that only work with a standard format work correctly. - Remove cairo_glitz_surface_write_to_png, replace with generic cairo_surface_write_to_png (since it works with image-surface create_with_masks fix) - - ChangeLog | 19 ++++++++++++++++++ - src/cairo-glitz-surface.c | 30 +++++++++++++++++++++++++++- - src/cairo-image-surface.c | 45 +++++++++++++++++++++++++++++++++++++++++++- - test/cairo-test.c | 46 ++++++++++++-------------------------------- - 4 files changed, 104 insertions(+), 36 deletions(-) - -commit bd265e008b6cb48565569733d48cb5bd2d4ba1b9 -Author: Vladimir Vukicevic -Date: Tue Jan 3 07:29:57 2006 +0000 - - Clean up output some; show only images that fail, otherwise just show pass/fail squares. - - ChangeLog | 5 +++ - test/make-html.pl | 81 +++++++++++++++++++++++++++++++++++++++++------------ - 2 files changed, 68 insertions(+), 18 deletions(-) - -commit 71369489d831ef0ec050f3e9da6226617e2ffa1b -Author: Emmanuel Pacaud -Date: Fri Dec 30 14:16:10 2005 +0000 - - no more has_clip boolean. Init clip_level. (_cairo_surface_intersect_clip_path): a NULL path means reset of clipping region, not back to previous clipping level. - - ChangeLog | 11 +++++++++-- - src/cairo-svg-surface.c | 12 ++++++------ - 2 files changed, 15 insertions(+), 8 deletions(-) - -commit 23e5e558414cbbb5e20a6b8b5e68f21c6a3ed15d -Author: Michael Emmel -Date: Thu Dec 29 07:17:01 2005 +0000 - - New directfb backend for cairo includes test suite and example to run the test is in the comment at the top of cairo-test-directfb.c enable with - --enable-directfb - - configure.in | 25 ++ - src/Makefile.am | 9 +- - src/cairo-directfb-surface.c | 804 ++++++++++++++++++++++++++++++++++++++++++ - src/cairo-directfb.h | 60 ++++ - src/cairo-features.h.in | 2 + - test/Makefile.am | 4 + - test/cairo-test-directfb.c | 127 +++++++ - test/cairo-test-directfb.h | 23 ++ - test/cairo-test.c | 11 + - 9 files changed, 1064 insertions(+), 1 deletions(-) - -commit f7236b84603c45d9c67cc5dfed6305a8a1241f6c -Author: Emmanuel Pacaud -Date: Wed Dec 28 02:28:56 2005 +0000 - - namespace declarations for SVG and XLINK (#5411). - - ChangeLog | 5 +++++ - src/cairo-svg-surface.c | 5 ++++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 78d892d70eb28a92f3300727ecc753cd564a5fe7 -Author: Christian Biesinger -Date: Tue Dec 27 09:47:58 2005 +0000 - - Add BeOS-specific reference images for tests where the maximum color difference is 1. - - ChangeLog | 13 +++++++++++++ - test/mask-beos-rgb24-ref.png | Bin 0 -> 73554 bytes - test/mask-beos_bitmap-argb32-ref.png | Bin 0 -> 87543 bytes - test/mask-beos_bitmap-rgb24-ref.png | Bin 0 -> 73554 bytes - test/set-source-beos-rgb24-ref.png | Bin 0 -> 124 bytes - test/set-source-beos_bitmap-rgb24-ref.png | Bin 0 -> 124 bytes - test/trap-clip-beos-rgb24-ref.png | Bin 0 -> 64724 bytes - test/trap-clip-beos_bitmap-rgb24-ref.png | Bin 0 -> 64724 bytes - 8 files changed, 13 insertions(+), 0 deletions(-) - -commit f036c28fa3aa7f9d18cd47b4b5dc7f728af04d5f -Author: Christian Biesinger -Date: Mon Dec 26 19:08:53 2005 +0000 - - Implement composite for the beos backend. Don't map CAIRO_OPERATOR_ADD to B_OP_ADD for now, something's broken there. - - ChangeLog | 6 +++ - src/cairo-beos-surface.cpp | 99 +++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 104 insertions(+), 1 deletions(-) - -commit 4fe93bcf92f4aeb5ea78bf48e109b4f5b7555181 -Author: Christian Biesinger -Date: Mon Dec 26 16:44:41 2005 +0000 - - Don't require that the caller locks the view; do it in cairo code. - Remove the now-unneeded locking - - ChangeLog | 6 +++++ - src/cairo-beos-surface.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++- - test/cairo-test-beos.cpp | 19 ++++++--------- - 3 files changed, 65 insertions(+), 12 deletions(-) - -commit 36850c7f32c25031a1ed8387a78c6edc43d9f67d -Author: Carl Worth -Date: Wed Dec 21 17:08:28 2005 +0000 - - Remove some unneeded backend functions (composite, fill_rectangles, composite_trapezoids, old_show_glyphs). - - ChangeLog | 6 ++ - src/cairo-ps-surface.c | 128 ++---------------------------------------------- - 2 files changed, 10 insertions(+), 124 deletions(-) - -commit 0a009c925f34ad82f2130a6dae731c7cda0bcb35 -Author: Carl Worth -Date: Wed Dec 21 17:04:01 2005 +0000 - - Don't implement create_similar for the test-meta or the paginated surface. This was slowing things down a _lot_ (about 11× for the mask test for example) without any improvement in output quality. We can revisit this again later if there's any output improvement to be had down the road. - - ChangeLog | 10 ++++++++++ - src/cairo-paginated-surface.c | 11 +---------- - src/test-meta-surface.c | 14 +------------- - 3 files changed, 12 insertions(+), 23 deletions(-) - -commit e71e2fc4f186eecde0b987c3e82ffbecafeebcad -Author: Carl Worth -Date: Wed Dec 21 16:46:44 2005 +0000 - - Add a private cairo_paginated_surface_t which builds on top of the meta surface and is intended to provide an easy interface with common functionality for the various paginated surface types (ps, pdf, etc.). - Add test_paginated_surface_t which is another test surface enabled with --enable-test-surfaces. The test_meta_surface code served as the basis for cairo_paginated_surface_t so that test surface may be entirely superfluous now. - - ChangeLog | 32 +++ - src/Makefile.am | 5 +- - src/cairo-paginated-surface-private.h | 46 +++++ - src/cairo-paginated-surface.c | 337 +++++++++++++++++++++++++++++++++ - src/test-paginated-surface.c | 67 +++++++ - src/test-paginated-surface.h | 52 +++++ - test/cairo-test.c | 85 +++++++++ - 7 files changed, 623 insertions(+), 1 deletions(-) - -commit c78685399307431903613733ddc936a104376943 -Author: Carl Worth -Date: Wed Dec 21 16:35:32 2005 +0000 - - Here is a cleaner implementation of the _cairo_array_t change which was previously committed inadvertently. - Fix buggy implementation of _cairo_array_snapshot by changing array->elements to be a pointer to a pointer. This extra level of indirection allows the snapshot array to point to a pointer which will itself get changed when new storage is needed for a growing array. Previously, the snapshot would be left pointing at stale storage. - Fix to call _cairo_array_index rather than grabbing array->elements directly and casting (which cast is now wrong with the change in implementation of array->index). - - ChangeLog | 23 +++++++++++++++++++++++ - src/cairo-array.c | 42 ++++++++++++++++++++++++++++++++++-------- - src/cairo-meta-surface.c | 4 ++-- - src/cairo-win32-font.c | 4 +++- - src/cairoint.h | 2 +- - 5 files changed, 63 insertions(+), 12 deletions(-) - -commit 122a83643b79ec197979e01620dd5dc21620e0e0 -Author: Carl Worth -Date: Wed Dec 21 12:20:06 2005 +0000 - - Revert inadvertent commit (immediately previous). - - ChangeLog | 13 +++++++++++ - src/cairo-array.c | 53 ++++++++++++++------------------------------- - src/cairo-meta-surface.c | 15 ++++-------- - src/cairo-win32-font.c | 18 +++++++-------- - src/cairoint.h | 2 +- - 5 files changed, 44 insertions(+), 57 deletions(-) - -commit 5280c09b7d5d903455cad75dd4885478e8fa2761 -Author: Carl Worth -Date: Wed Dec 21 12:08:57 2005 +0000 - - Fix indentation. - - ChangeLog | 4 +++ - src/cairo-array.c | 53 +++++++++++++++++++++++++++++++-------------- - src/cairo-meta-surface.c | 15 ++++++++---- - src/cairo-win32-font.c | 18 ++++++++------- - src/cairoint.h | 2 +- - src/test-meta-surface.h | 4 +- - test/.cvsignore | 1 + - 7 files changed, 64 insertions(+), 33 deletions(-) - -commit 3eb2a252ad22295725281908448e88a2c53462ae -Author: Carl Worth -Date: Wed Dec 21 12:07:25 2005 +0000 - - Remove cruft from old commands that the meta surface no longer implements (composite, fill_rectangles, composite_trapezoids, and set_clip_region). - - ChangeLog | 6 ++++ - src/cairo-meta-surface-private.h | 49 -------------------------------------- - 2 files changed, 6 insertions(+), 49 deletions(-) - -commit 088c664b9c891580b4f92bf5419f6757a09e96cc -Author: Christian Biesinger -Date: Wed Dec 21 08:19:47 2005 +0000 - - Fix some typos - - ChangeLog | 8 ++++++++ - src/cairo-ft-font.c | 2 +- - src/cairo-gstate.c | 4 ++-- - src/cairoint.h | 2 +- - 4 files changed, 12 insertions(+), 4 deletions(-) - -commit 90c1837e175f3380b29ad8bb929f9e5787371e24 -Author: Emmanuel Pacaud -Date: Wed Dec 21 07:25:01 2005 +0000 - - store surfaces in a node, and clip to surface area. Now SVG backend should pass pixman-rotate test. (emit_composite_svg_pattern): emit transformation matrix. (_cairo_svg_surface_intersect_clip_path): don't use xmlBuffer here. - - ChangeLog | 8 +++++ - src/cairo-svg-surface.c | 72 ++++++++++++++++++++++++++++------------------ - 2 files changed, 52 insertions(+), 28 deletions(-) - -commit e95376c1c3d586d52808e16a4b13a8eef9a9abad -Author: Carl Worth -Date: Tue Dec 20 10:30:11 2005 +0000 - - Add some comments describing what a cairo_meta_surface_t is. - Remove unused _test_fallback_surface_create_for_data. - Remove unused _test_meta_surface_create_for_data. Add missing source file src/test-meta-surface.h. - - ChangeLog | 14 ++++++++++++ - src/cairo-meta-surface.c | 19 ++++++++++++++++ - src/test-fallback-surface.c | 28 ------------------------ - src/test-fallback-surface.h | 7 ------ - src/test-meta-surface.c | 38 -------------------------------- - src/test-meta-surface.h | 50 +++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 83 insertions(+), 73 deletions(-) - -commit 7cc38be7d1e5967cf4f09bd6c0a1ac8f7b059ad8 -Author: Carl Worth -Date: Tue Dec 20 09:37:15 2005 +0000 - - Move more fallback code from cairo-gstate.c to cairo-surface-fallback.c where it belongs. In the process, clean up the function names a bit and make the whole mess static. - - ChangeLog | 16 ++ - src/cairo-gstate.c | 538 ------------------------------------- - src/cairo-surface-fallback.c | 607 +++++++++++++++++++++++++++++++++++++++--- - src/cairoint.h | 25 -- - 4 files changed, 592 insertions(+), 594 deletions(-) - -commit ff486bec0fb1f991217ac9023c0559176ba19a0f -Author: Carl Worth -Date: Mon Dec 19 22:45:41 2005 +0000 - - Begin moving fallback code out of cairo-surface.c and into cairo-surface-fallback.c. - - ChangeLog | 22 ++ - src/Makefile.am | 2 + - src/cairo-surface-fallback-private.h | 119 +++++++ - src/cairo-surface-fallback.c | 625 +++++++++++++++++++++++++++++++++ - src/cairo-surface.c | 644 ++-------------------------------- - 5 files changed, 797 insertions(+), 615 deletions(-) - -commit 75b2fe93f09324b509630d86e0b01de830d853cf -Author: Carl Worth -Date: Mon Dec 19 22:01:39 2005 +0000 - - Use _cairo_surface_paint rather than _cairo_surface_fill_rectangle as only the former is guaranteed to work with all backends. - Refine the comment describing this test surface. - Add new test surface for exercising cairo_meta_surface. - Simplify the image and test_fallback targets by not using create_for_data. Allow for NULL cleanup target functions. Add support for the test_meta_surface. - - ChangeLog | 31 ++++ - src/Makefile.am | 3 +- - src/cairo-surface.c | 15 ++- - src/test-fallback-surface.c | 8 +- - src/test-meta-surface.c | 375 +++++++++++++++++++++++++++++++++++++++++++ - test/.cvsignore | 1 + - test/cairo-test.c | 53 ++---- - 7 files changed, 444 insertions(+), 42 deletions(-) - -commit 606d23b2874288c18f7373ffa47b0fb6b63b3451 -Author: Christian Biesinger -Date: Mon Dec 19 17:16:28 2005 +0000 - - Use correct color when OPERATOR_SOURCE is used on a surface without alpha information. - - ChangeLog | 5 +++++ - src/cairo-beos-surface.cpp | 11 +++++++++++ - 2 files changed, 16 insertions(+), 0 deletions(-) - -commit d0eaab305c69b386fde72fb0a325df2c5d62385d -Author: Emmanuel Pacaud -Date: Mon Dec 19 15:33:32 2005 +0000 - - fix stroke linewidth and dashes, I hope. Emit stroke-dashoffset. - - ChangeLog | 5 +++++ - src/cairo-svg-surface.c | 12 ++++++++++-- - 2 files changed, 15 insertions(+), 2 deletions(-) - -commit a83a42b248a8fe22e513b0b61dd7ca1981d7b4dd -Author: Keith Packard -Date: Mon Dec 19 15:08:05 2005 +0000 - - Use NULL clip instead of special serial zero cairo_clip_t Should make using surfaces easier. - - ChangeLog | 11 +++++++++++ - src/cairo-clip.c | 6 ++++++ - src/cairo-gstate.c | 31 ++++++++++++++++++------------- - src/cairo-surface.c | 28 +++++++++++++++++++--------- - 4 files changed, 54 insertions(+), 22 deletions(-) - -commit ffe10b7c877ef71ee4e982fcf4a1de5b4476b243 -Author: Emmanuel Pacaud -Date: Mon Dec 19 14:18:06 2005 +0000 - - Shhhh... - - test/.cvsignore | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ec574cd6f0a4244a45d69894f41db1910585e05d -Author: Emmanuel Pacaud -Date: Mon Dec 19 13:59:34 2005 +0000 - - CAIRO_CAN_TEST_SVG_SURFACE depends on librsvg. - cairo_svg_surface_t owns a xml node, for support of svg_surface_composite. (_cairo_svg_surface_create_for_document): init xml_node. All surfaces except first one are stored in defs node. (emit_composite_image_pattern): returns pattern size, and don't call emit_transform if is_pattern == TRUE. (emit_composite_svg_pattern): do something. (emit_composite_pattern): returns pattern size. (_cairo_svg_surface_composite): xml_node is stored in cairo_svg_surface_t now. (emit_surface_pattern): emit surface pattern width here. Fix property names. (_cairo_svg_path_close_path): don't close path if no current point. (_cairo_svg_surface_fill_rectangles): new. (_cairo_svg_surface_fill): emit fill rule. xml_node is in surface now. (_cairo_svg_surface_composite_trapezoids): xml_node is in surface now. (_cairo_svg_surface_stroke): ditto. (_cairo_svg_surface_intersect_clip_path): ditto. Emit fill rule. - ignore svg2png. - build svg2png utility. - test SVG backend if CAIRO_HAS_SVG_SURFACE && CAIRO_CAN_TEST_SVG_SURFACE. - new. - - ChangeLog | 30 ++++++++ - configure.in | 10 +++ - src/cairo-svg-surface.c | 178 +++++++++++++++++++++++++++++++++++++++-------- - test/.cvsignore | 1 + - test/Makefile.am | 8 ++- - test/cairo-test.c | 69 ++++++++++++++++++ - test/svg2png.c | 62 ++++++++++++++++ - 7 files changed, 329 insertions(+), 29 deletions(-) - -commit 70c45dd5020af78ee2532ceb8d55eea619bc4aaa -Author: Christian Biesinger -Date: Mon Dec 19 11:01:42 2005 +0000 - - Some final changes to the beos backend before checkin were wrong, fixing. - - ChangeLog | 6 ++++++ - configure.in | 2 +- - src/cairo-beos-surface.cpp | 4 ++-- - 3 files changed, 9 insertions(+), 3 deletions(-) - -commit 9af7220b68f97db4dd2b91ce414d2d7ac3194410 -Author: Christian Biesinger -Date: Mon Dec 19 10:17:22 2005 +0000 - - Use gtk-doc syntax rather than doxygen syntax for internal functions (to avoid warnings from gtk-doc when it processes this file) - - ChangeLog | 6 ++++++ - src/cairo-beos-surface.cpp | 30 +++++++++++++++++++++--------- - 2 files changed, 27 insertions(+), 9 deletions(-) - -commit 6142bc534850dda7ecf823c2a672ed65c13978eb -Author: Christian Biesinger -Date: Sun Dec 18 17:20:06 2005 +0000 - - Mention new --enable-svg option - Add notes for the new BeOS backend - Add disabled by default BeOS backend - Add BeOS files - New - New - BEOS_SURFACE_FEATURE - BeOS mutex functions - Ignore files generates by the BeOS tests - Add cairo-test-beos.* - New. - Test BeOS backend. - - ChangeLog | 17 + - INSTALL | 1 + - README | 5 + - configure.in | 44 +++ - src/Makefile.am | 11 + - src/cairo-beos-surface.cpp | 731 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-beos.h | 61 ++++ - src/cairo-features.h.in | 2 + - src/cairoint.h | 11 + - test/.cvsignore | 3 + - test/Makefile.am | 6 + - test/cairo-test-beos.cpp | 239 +++++++++++++++ - test/cairo-test-beos.h | 26 ++ - test/cairo-test.c | 13 + - 14 files changed, 1170 insertions(+), 0 deletions(-) - -commit 93da7fa203a8e4bce40aab590a8c245400013787 -Author: Christian Biesinger -Date: Sun Dec 18 16:37:14 2005 +0000 - - Move enum to cairoint.h - add CAIRO_BEGIN_DECLS and CAIRO_END_DECLS, and move an enum from cairo-clip-private.h here (C++ doesn't like forward-declarations of enums). Final patch for allowing C++ backends. - reviewed by: cworth - - ChangeLog | 10 ++++++++++ - src/cairo-clip-private.h | 6 ------ - src/cairoint.h | 10 +++++++++- - 3 files changed, 19 insertions(+), 7 deletions(-) - -commit 2c8859c8b51b10fd52b032aef54bb394e9acb011 -Author: Christian Biesinger -Date: Fri Dec 16 16:23:04 2005 +0000 - - make the SVG backend freetype message actually mention SVG rather than PDF. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 464d3fc563442ebe0efcdd1689e4b83cc92c794b -Author: Carl Worth -Date: Fri Dec 16 11:48:48 2005 +0000 - - Return a test_fallback_surface_t rather than a cairo_image_surface_t for better testing, (otherwise, an image surface would meet the semantic demands of create_similar just fine). - - ChangeLog | 8 ++++++++ - src/test-fallback-surface.c | 10 +++++++--- - 2 files changed, 15 insertions(+), 3 deletions(-) - -commit c75232f8abfb1dc56ff669d3b102f71f9cd892c1 -Author: Carl Worth -Date: Fri Dec 16 11:31:10 2005 +0000 - - Add a new option --enable-test-surfaces. - New surface backend for testing only. It has as many NULL backend entries as possible. - Add support to test the new test_fallback backend. - - ChangeLog | 22 ++++ - configure.in | 19 ++++- - src/Makefile.am | 11 ++- - src/test-fallback-surface.c | 225 +++++++++++++++++++++++++++++++++++++++++++ - src/test-fallback-surface.h | 57 +++++++++++ - test/.cvsignore | 1 + - test/Makefile.am | 18 ++-- - test/cairo-test.c | 34 +++++++ - 8 files changed, 373 insertions(+), 14 deletions(-) - -commit 79eee2c303c09c33d2f5bc4fc4d88b9608c201d6 -Author: Carl Worth -Date: Fri Dec 16 11:21:24 2005 +0000 - - Don't export cairo_image_surface_set_clip_region. - Eliminate some unnecessary _cairo_image_abstract_surface variations of backend function. - Remove errant include of cairo-pdf.h. - - ChangeLog | 11 +++++++++++ - src/cairo-font-subset.c | 4 ++-- - src/cairo-image-surface.c | 32 +++++++++----------------------- - src/cairoint.h | 4 ---- - 4 files changed, 22 insertions(+), 29 deletions(-) - -commit 6ba7772138d5ce64cef13b296cb61f94b49f9c24 -Author: Christian Biesinger -Date: Fri Dec 16 03:02:35 2005 +0000 - - Globally rename "operator" to "op", to allow writing backends in C++ - reviewed by: cworth - - CODING_STYLE | 2 +- - ChangeLog | 88 +++++++++++++++++++++++++++ - src/cairo-atsui-font.c | 2 +- - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 4 +- - src/cairo-ft-font.c | 2 +- - src/cairo-gstate-private.h | 2 +- - src/cairo-gstate.c | 90 ++++++++++++++-------------- - src/cairo-image-surface.c | 24 ++++---- - src/cairo-meta-surface-private.h | 16 +++--- - src/cairo-meta-surface.c | 30 +++++----- - src/cairo-pdf-surface.c | 10 ++-- - src/cairo-ps-surface.c | 90 ++++++++++++++-------------- - src/cairo-scaled-font.c | 10 ++-- - src/cairo-surface.c | 122 +++++++++++++++++++------------------- - src/cairo-svg-surface.c | 20 +++--- - src/cairo-win32-font.c | 8 +- - src/cairo-win32-surface.c | 16 +++--- - src/cairo-xcb-surface.c | 18 +++--- - src/cairo-xlib-surface.c | 80 ++++++++++++------------ - src/cairoint.h | 56 +++++++++--------- - test/get-and-set.c | 8 +- - 22 files changed, 394 insertions(+), 306 deletions(-) - -commit 11d20940b28906af2d9dac687b96d38895c7eec1 -Author: Carl Worth -Date: Thu Dec 15 08:58:08 2005 +0000 - - Make poppler check require poppler >= 0.4.1. - - ChangeLog | 4 ++++ - configure.in | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 88615148caa317200efcb9768a9f310323546697 -Author: Stuart Parmenter -Date: Wed Dec 14 19:56:09 2005 +0000 - - #define access _access and #define F_OK to 0 on for MSVC - add CAIRO_BEGIN_DECLS and CAIRO_END_DECLS - - ChangeLog | 6 ++++++ - test/cairo-test.c | 2 ++ - test/cairo-test.h | 4 ++++ - 3 files changed, 12 insertions(+), 0 deletions(-) - -commit 9becae35c085d5f7afe08781c4e2546ee7c7287c -Author: Carl Worth -Date: Wed Dec 14 16:45:39 2005 +0000 - - Remove dead code from cairo-meta-surface: vestiges of meta-surface backend implementations of composite, fill_rectangles, composite_trapezoids, set_clip_region, and old_show_glyphs. - - ChangeLog | 9 ++ - pixman/src/.cvsignore | 2 + - src/cairo-meta-surface-private.h | 6 +- - src/cairo-meta-surface.c | 233 +------------------------------------- - 4 files changed, 15 insertions(+), 235 deletions(-) - -commit 77540a2dfafeea1de9d45847bd93621d7cafa92d -Author: Carl Worth -Date: Wed Dec 14 16:22:06 2005 +0000 - - Add preliminary support for --enable-gcov. Thanks to Pierre-Alain Joye (with inspiration from the PHP gcov support by Jani Taskinen and Ilia Alshanetsky). - Ignore *.gcda and *.gcno gcov data files. - - ChangeLog | 9 ++++++ - configure.in | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- - src/.cvsignore | 2 + - test/.cvsignore | 1 + - 4 files changed, 85 insertions(+), 3 deletions(-) - -commit bb418ab4e538b035f3a5d7a56d142198d8e432ff -Author: Carl Worth -Date: Tue Dec 13 16:31:14 2005 +0000 - - Make creator be cairo, not Cairo. - - ChangeLog | 5 +++++ - src/cairo-ps-surface.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit c2c4f0bb251423737d46fcde7ffe8711547abf09 -Author: Vladimir Vukicevic -Date: Mon Dec 12 11:56:40 2005 +0000 - - bump glitz req to 0.5.1, test for backends - Add glitz backend (original patches from sunmoon1997@gmail.com), including glx, wgl, and agl support. Add CAIRO_TEST_TARGET environment variable for limiting backends to test. - Takes all *.log files and spits out html to stdout that can be used to view all test results at once. - - ChangeLog | 12 ++ - configure.in | 31 +++- - src/Makefile.am | 21 ++- - test/Makefile.am | 14 ++ - test/cairo-test.c | 540 +++++++++++++++++++++++++++++++++++++++++++++++++++-- - test/make-html.pl | 161 ++++++++++++++++ - 6 files changed, 753 insertions(+), 26 deletions(-) - -commit 840f93698d5a89634c573f25911e9dc6020a46e1 -Author: Emmanuel Pacaud -Date: Thu Dec 8 13:22:09 2005 +0000 - - shhh... - - ChangeLog | 4 ++++ - test/.cvsignore | 4 ++++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit b2f973e7f4a5bf4d953d52dfb71cb84472d32770 -Author: Emmanuel Pacaud -Date: Thu Dec 8 13:09:26 2005 +0000 - - add optionnal disabled by default SVG backend. - include SVG backend files. - include SVG_SURFACE_FEATURE. - rename dtostr to _cairo_dtostr for use in cairo-svg-surface.c. - _cairo_dtostr declaration. - new. - new. - build svg-surface and svg-clip. - new. - new. - - ChangeLog | 16 + - configure.in | 50 ++- - src/Makefile.am | 7 + - src/cairo-features.h.in | 2 + - src/cairo-output-stream.c | 6 +- - src/cairo-svg-surface.c | 1330 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-svg.h | 63 +++ - src/cairoint.h | 3 + - test/Makefile.am | 10 +- - test/svg-clip.c | 134 +++++ - test/svg-surface.c | 115 ++++ - 11 files changed, 1723 insertions(+), 13 deletions(-) - -commit 73df5f2d6222d4847e4a4b821867be6b6963abf6 -Author: Carl Worth -Date: Wed Dec 7 16:16:20 2005 +0000 - - Note that that PDF backend has been incorporated into the test suite. - - ChangeLog | 5 +++++ - ROADMAP | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 45c350e32810fecc09adecf5941ce9640543fb75 -Author: Carl Worth -Date: Wed Dec 7 16:06:11 2005 +0000 - - Add checks for poppler and friends which are needed by pdf2png. Set CAIRO_CAN_TEST_PDF_SURFACE as both a #define and an automake conditional. - Build pdf2png if possible. - Add support for testing the PDF backend. - New utility program to convert a PDF file into a PNG image using poppler (thanks to Kristian Høgsberg). - Ignore new stuff generated by PDF backend testing. - - ChangeLog | 18 +++++++++++ - configure.in | 11 ++++++ - test/.cvsignore | 3 ++ - test/Makefile.am | 6 +++ - test/cairo-test.c | 70 +++++++++++++++++++++++++++++++++++++++++- - test/pdf2png.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 194 insertions(+), 2 deletions(-) - -commit 964c56e72bf5d4b1911b59070413e3424b88b6f4 -Author: Carl Worth -Date: Wed Dec 7 12:19:10 2005 +0000 - - Note that self-copy now works with the PS backend. - Add _cairo_array_init_snapshot and checks for is_snapshot throughout. - Add a new surface->backend->snapshot function. - Implement _cairo_meta_surface_snapshot and _cairo_meta_surface_acquire/release_source_image. Change _cairo_meta_surface_create to require the width and height in pixels to be used when replaying for purposed of _cairo_meta_surface_aquire_source_image. - Track change in prototype of _cairo_meta_surface_create. Implement _cairo_ps_surface_snapshot by deferring down into _cairo_meta_surface_snapshot. - - ChangeLog | 35 +++++++++++ - ROADMAP | 6 +- - src/cairo-array.c | 36 ++++++++++++ - src/cairo-meta-surface-private.h | 12 +++- - src/cairo-meta-surface.c | 116 +++++++++++++++++++++++++++++++++++-- - src/cairo-ps-surface.c | 23 +++++++- - src/cairo-surface.c | 53 ++++++++++------- - src/cairoint.h | 12 ++++ - 8 files changed, 257 insertions(+), 36 deletions(-) - -commit 96be55124f3abcb03ed3a901bc4f099185ab8864 -Author: Carl Worth -Date: Wed Dec 7 11:53:30 2005 +0000 - - Fix to check cairo_surface_status rather than !surface which is always false. (cleanup_ps): Fix leak of filename memory. - - ChangeLog | 6 ++++++ - test/cairo-test.c | 4 +++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 0883155111ab9597d335c7d43ae47c163b5c0e4d -Author: Carl Worth -Date: Wed Dec 7 11:44:28 2005 +0000 - - Use more portable shell syntax, ('test =' rather than 'test =='). Thanks to Richard Lloyd and Klaus Heinz. Closes bug #4823. - - ChangeLog | 6 ++++++ - configure.in | 8 ++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit 4484830d6cbb5792304e3b6e4c4a07b6172f1a72 -Author: David Reveman -Date: Mon Dec 5 08:33:04 2005 +0000 - - glitz backend gradient fix - - ChangeLog | 5 +++++ - src/cairo-glitz-surface.c | 6 +++--- - 2 files changed, 8 insertions(+), 3 deletions(-) - -commit 57fe7920195474a865cc18f0c976f3ae5df87973 -Author: David Reveman -Date: Sun Dec 4 07:47:44 2005 +0000 - - More updates to track latest changes to glitz - - ChangeLog | 6 ++++++ - src/cairo-glitz-surface.c | 3 +++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 2802950123c808246d0e9c40b1b7cc45043f9335 -Author: David Reveman -Date: Tue Nov 29 15:48:34 2005 +0000 - - Track changes to glitz - - ChangeLog | 5 +++ - src/cairo-glitz-surface.c | 68 ++++++++++++++++----------------------------- - 2 files changed, 29 insertions(+), 44 deletions(-) - -commit 9e7076fd27b69b4de21a617a9cb0fa74f91f6bec -Author: Carl Worth -Date: Mon Nov 21 11:46:40 2005 +0000 - - Remove duplicate definitions of pixman_color_to_pixel and pixman_composite. - - ChangeLog | 5 +++++ - pixman/ChangeLog | 5 +++++ - pixman/src/pixman-remap.h | 2 -- - 3 files changed, 10 insertions(+), 2 deletions(-) - -commit 674ed1932e2264493e5f746989f02a6f2e0259a9 -Author: Carl Worth -Date: Mon Nov 21 10:50:20 2005 +0000 - - Add reminder to fix all memory leaks (as determined by the test suite) before release 1.2.0. - Patch leak of patterns as noted in bug #5100 (thanks to Richard Stellingwerff ). - - ChangeLog | 9 +++++++++ - ROADMAP | 4 ++++ - src/cairo-gstate.c | 4 ++++ - 3 files changed, 17 insertions(+), 0 deletions(-) - -commit 345ba540b1977db7e1a31f88aa8c8b2cdb32f11d -Author: Carl Worth -Date: Fri Nov 18 09:15:43 2005 +0000 - - Remove spurios INT_ prefixes which break the build with very recent binutils. - - ChangeLog | 5 +++++ - pixman/ChangeLog | 5 +++++ - pixman/src/pixman-remap.h | 4 ++-- - 3 files changed, 12 insertions(+), 2 deletions(-) - -commit 49136c04f2fcbf463334bf256c72b7b280e2e819 -Author: Stuart Parmenter -Date: Thu Nov 17 11:55:20 2005 +0000 - - Hooked up tests to run on Windows with a Windows surface - - ChangeLog | 6 ++++++ - test/cairo-test.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 52 insertions(+), 7 deletions(-) - -commit a16d93f367af721a535ed13fc5bc07636e6549d2 -Author: Anders Carlsson -Date: Mon Nov 14 12:57:31 2005 +0000 - - If the surface is flipped, flip the CG coordinate system before drawing the images. - (cairo_quartz_surface_create): - Add "flipped" argument to cairo_quartz_surface_create. - - ChangeLog | 11 +++++++++++ - src/cairo-quartz-surface.c | 13 +++++++++++++ - src/cairo-quartz.h | 1 + - 3 files changed, 25 insertions(+), 0 deletions(-) - -commit b5759f9e0746b48064c031009be8cd203f9bbaa5 -Author: Carl Worth -Date: Thu Nov 10 16:25:18 2005 +0000 - - Change scheduled release date of 1.2.0 out to 2005-12-15. - - ChangeLog | 5 +++++ - ROADMAP | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 5b6c912667f62f808b9cf533b4486ce906197543 -Author: Carl Worth -Date: Tue Nov 8 17:43:13 2005 +0000 - - Note that PS is now passing all tests except for self-copy. - Add missing glue to hook up PS backend with new meta-surface support for the 5 basic drawing operations. Currently, this forces image fallbacks for all operations. - Switch from gs device of pngalpha to png16m which for some reason gives the correct result for nil-surface now, while pngalpha does not. - Key off of N_OPERATORS as the loop control for easier trimming down of this test case when debugging. - Rename stroke_style parameter to style in backend->stroke parameter list. - Remove PS-specific reference images for many tests which are now using more fallback paths than before. - - ChangeLog | 46 ++++++ - ROADMAP | 10 +- - src/cairo-ps-surface.c | 196 +++++++++++++++++++++--- - src/cairoint.h | 2 +- - test/cairo-test.c | 2 +- - test/caps-joins-ps-rgb24-ref.png | Bin 1420 -> 0 bytes - test/caps-sub-paths-ps-rgb24-ref.png | Bin 237 -> 0 bytes - test/clip-fill-rule-ps-rgb24-ref.png | Bin 309 -> 0 bytes - test/clip-nesting-ps-rgb24-ref.png | Bin 517 -> 0 bytes - test/clip-operator.c | 2 +- - test/clip-twice-ps-rgb24-ref.png | Bin 605 -> 0 bytes - test/dash-caps-joins-ps-rgb24-ref.png | Bin 2362 -> 0 bytes - test/dash-offset-negative-ps-rgb24-ref.png | Bin 202 -> 0 bytes - test/fill-and-stroke-ps-rgb24-ref.png | Bin 328 -> 0 bytes - test/fill-rule-ps-rgb24-ref.png | Bin 2167 -> 0 bytes - test/leaky-polygon-ps-rgb24-ref.png | Bin 353 -> 0 bytes - test/line-width-ps-rgb24-ref.png | Bin 242 -> 0 bytes - test/path-data-ps-rgb24-ref.png | Bin 440 -> 0 bytes - test/rectangle-rounding-error-ps-rgb24-ref.png | Bin 365 -> 0 bytes - test/show-text-current-point-ps-rgb24-ref.png | Bin 1477 -> 0 bytes - test/text-antialias-gray-ps-rgb24-ref.png | Bin 714 -> 0 bytes - test/text-antialias-none-ps-rgb24-ref.png | Bin 714 -> 0 bytes - test/text-antialias-subpixel-ps-rgb24-ref.png | Bin 714 -> 0 bytes - test/transforms-ps-rgb24-ref.png | Bin 418 -> 0 bytes - test/unantialiased-shapes-ps-rgb24-ref.png | Bin 9899 -> 0 bytes - 25 files changed, 231 insertions(+), 27 deletions(-) - -commit 48218fec48d1bfa2a93cc21f8f9df569e40ca79e -Author: Carl Worth -Date: Tue Nov 8 17:16:21 2005 +0000 - - Add support to cairo_meta_surface for the 5 basic drawing operations. Remove _cairo_meta_surface_get_extents and _cairo_meta_surface_old_show_glyphs. - Remove size for _cairo_meta_surface_create. It is no longer needed now that get_extents is not a required backend function. - Track change in cairo_meta_surface_create no longer requiring a size - Qualify the glyphs argument to backend->show_glyphs as const. - Whitespace style cleanup. - - ChangeLog | 31 +++ - src/cairo-meta-surface-private.h | 99 +++++--- - src/cairo-meta-surface.c | 553 +++++++++++++++++++++++--------------- - src/cairo-ps-surface.c | 6 +- - src/cairo-scaled-font.c | 4 +- - src/cairo-surface.c | 10 +- - src/cairoint.h | 8 +- - 7 files changed, 451 insertions(+), 260 deletions(-) - -commit c66a3db4c3e33f10ebadfa818f532e21e9b8927f -Author: Carl Worth -Date: Tue Nov 8 11:44:18 2005 +0000 - - Split the 1.2.0 features into "essential" and "desired". - - ChangeLog | 5 +++++ - ROADMAP | 12 ++++++++++-- - 2 files changed, 15 insertions(+), 2 deletions(-) - -commit 75881041f009af01a7f13b3488db493d7a91b456 -Author: Carl Worth -Date: Tue Nov 8 11:39:21 2005 +0000 - - Slip the 1.2 release by two weeks to 2005-11-15. - - ChangeLog | 4 ++++ - ROADMAP | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 632b948c8c162b90c8d8bc5eb56c505af89e61de -Author: Carl Worth -Date: Mon Nov 7 13:23:31 2005 +0000 - - Add new _cairo_array_allocate function for growing the array and getting a pointer to the buffer of new data. This is intended to be used in place of the abuse of passing data=NULL to _cairo_array_append_multiple. - Add new function to be used instead of the abuse of pasing data=NULL to cairo_pdf_ft_font_write. - Just return a status now instead of a pointer to the written buffer, since cairo_pdf_ft_font_allocate_write_buffer should now be used instead when a pointer is needed. - Switch to use cairo_pdf_ft_font_allocate_write_buffer. - Fix use of uninitialized status value. - initialization just to keep the compiler quiet about possibly uninitialized variables. - - ChangeLog | 39 ++++++++++++++++++++++++++++++++ - src/cairo-array.c | 46 ++++++++++++++++++++++++++++--------- - src/cairo-font-subset.c | 56 ++++++++++++++++++++++++++++++++++++---------- - src/cairo-meta-surface.c | 6 +--- - src/cairo-pattern.c | 3 +- - src/cairoint.h | 10 ++++++- - 6 files changed, 130 insertions(+), 30 deletions(-) - -commit 3930b6ab775113cbeae7375cab3ed5854a795755 -Author: Carl Worth -Date: Mon Nov 7 10:50:39 2005 +0000 - - Use field-by-field copying rather than whole structure copying. This avoids the hidden copies being overlooked in future code modifications. - - ChangeLog | 7 +++++++ - src/cairo-gstate.c | 28 +++++++++++++++++++--------- - 2 files changed, 26 insertions(+), 9 deletions(-) - -commit 9cf7fafffc4a6275f30bd946626ec9932a74caa0 -Author: Carl Worth -Date: Mon Nov 7 10:48:01 2005 +0000 - - Fix to copy region if NULL. - - ChangeLog | 5 +++++ - src/cairo-clip.c | 4 +++- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit 80e4c6307d0967b2a9ab0f1ca95443d5b00540e5 -Author: Carl Worth -Date: Mon Nov 7 10:46:23 2005 +0000 - - Reorder function bodies to match the order of fields in the structure definition. Some style cleanups. - Fix bug in that several fields were not being copied. - - ChangeLog | 9 +++++++++ - src/cairo-clip.c | 43 ++++++++++++++++++++++++++----------------- - 2 files changed, 35 insertions(+), 17 deletions(-) - -commit 8d09247fcd456881ede2ef277baa7a9c71721b2c -Author: Carl Worth -Date: Mon Nov 7 10:29:37 2005 +0000 - - Two more instances of copy-and-reference in a single step. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 66e69f18ec4e61a195039dc100ac5db3f389f476 -Author: Carl Worth -Date: Mon Nov 7 10:26:18 2005 +0000 - - Perform copy and reference in a single step. - Remove unnecessary checks for NULL before _destroy() functions. Reset pointers to NULL after _destroy(). - - ChangeLog | 9 +++++++++ - src/cairo-gstate.c | 21 +++++++++------------ - 2 files changed, 18 insertions(+), 12 deletions(-) - -commit 36523b96565a4b4015ddb3172c14690774edb92c -Author: Carl Worth -Date: Mon Nov 7 10:17:37 2005 +0000 - - Reorder function bodies to match to match the order of the fields in the structure definition. - - ChangeLog | 6 ++++++ - src/cairo-gstate.c | 14 +++++++------- - 2 files changed, 13 insertions(+), 7 deletions(-) - -commit 9796a54fa197206df914252a3511bfb30ce95039 -Author: Carl Worth -Date: Mon Nov 7 10:02:06 2005 +0000 - - Style fix: test-and-bail rather than making the working body conditional. - Allow destroy to work on a NULL object. - - ChangeLog | 9 +++++++++ - src/cairo-gstate.c | 44 +++++++++++++++++++++++++------------------- - 2 files changed, 34 insertions(+), 19 deletions(-) - -commit 201d4e2ce76fe534009c6910cf42c5456b497047 -Author: Carl Worth -Date: Mon Nov 7 09:49:51 2005 +0000 - - Add functions to initialize and copy cairo_stroke_style_t objects. - Use new _cairo_stroke_style functions rather than direct modification. - Add missing prototype for _cairo_font_options_init_copy. - - ChangeLog | 15 ++++++++ - src/Makefile.am | 1 + - src/cairo-gstate.c | 26 ++++---------- - src/cairo-stroke-style.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 16 ++++++++ - 5 files changed, 126 insertions(+), 19 deletions(-) - -commit a9e2cf8d9b6e49375cb6051b749c72b8dea97bfd -Author: Carl Worth -Date: Mon Nov 7 09:33:38 2005 +0000 - - Remove unused prototypes for _cairo_gstate_begin_group and _cairo_gstate_end_group. - - ChangeLog | 5 +++++ - src/cairoint.h | 6 ------ - 2 files changed, 5 insertions(+), 6 deletions(-) - -commit ed160b63a12a8018f6fa40a026c8b9bb942523c7 -Author: Carl Worth -Date: Mon Nov 7 09:30:38 2005 +0000 - - Add documentation for _cairo_gstate_create, _cairo_gstate_init_copy, and _cairo_gstate_clone. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 31 +++++++++++++++++++++++++++++++ - 2 files changed, 36 insertions(+), 0 deletions(-) - -commit fe324c44153cf37a51b51883780daee5500173be -Author: Carl Worth -Date: Mon Nov 7 09:26:47 2005 +0000 - - Add a function for copying font options rather than just using direct structure copying. - - ChangeLog | 6 ++++++ - src/cairo-font-options.c | 12 +++++++++++- - 2 files changed, 17 insertions(+), 1 deletions(-) - -commit f79d48640f26fd5c02d949ac759090dafaa002ec -Author: Carl Worth -Date: Sat Nov 5 22:43:06 2005 +0000 - - Add missing declarations for status variables. Thanks to Mikael Hallendal for pointing this out. - - ChangeLog | 6 ++++++ - src/cairo-ps-surface.c | 2 ++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 9341c254a00c732c9ce415233447ed47a7cbce7c -Author: Carl Worth -Date: Fri Nov 4 16:13:30 2005 +0000 - - Rename old, rarely used _cairo_array_append to _cairo_array_append_multiple. Add much more common _cairo_array_append. Fix both to return a cairo_status_t. Remove undocumented code to allow a non-copying append when elements is NULL, (let's not encourage unintialized data, shall we?) - Cleanup to not rely on undocumented copy-avoidance in _cairo_array_append. - Track change in number of arguments and return value of _cairo_array_append. - - ChangeLog | 31 +++++++++++++++ - src/cairo-array.c | 96 +++++++++++++++++++++++++++++---------------- - src/cairo-font-subset.c | 11 +++-- - src/cairo-meta-surface.c | 57 +++++++++++++++++++--------- - src/cairo-pdf-surface.c | 29 ++++++++++---- - src/cairo-ps-surface.c | 9 +++- - src/cairo-win32-font.c | 19 ++++++--- - src/cairoint.h | 9 +++- - 8 files changed, 185 insertions(+), 76 deletions(-) - -commit feef096e2586d162c4ccd072bfadc39f1de4502a -Author: Carl Worth -Date: Fri Nov 4 15:15:30 2005 +0000 - - Add documentation for all _cairo_array interface functions. - - ChangeLog | 5 +++ - src/cairo-array.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 78 insertions(+), 0 deletions(-) - -commit 39eca22bfe2af91c926d00a4c3f19c03280b6c8b -Author: Carl Worth -Date: Fri Nov 4 11:16:38 2005 +0000 - - Rework support in the surface backend for the five basic drawing operations (paint, mask, stroke, fill, and show_glyphs). Now, all 5 operations have backend functions, and all use a consistent convention for argument naming and ordering. The old fill_path has been replaced with a new fill. The old show_glyphs function was recently renamed to old_show_glyphs and has not yet been ported to the new show_glyphs, (so all backends have a NULL show_glyphs function). In fact, of the 5 new backend functions, fill is the only one that has an implementation in any backend. As part of this cleanup a new cairo_stroke_style_t object is introduced to capture the many settings unique to the stroke operation, (line_width, line_cap, line_join, miter_limit, dash, num_dashes, and dash_offset). - Track changes in surface backend from fill_path to fill. - Track the new canonical argument naming and ordering for the 5 drawing operations. - Move various stroke style settings into new cairo_stroke_style_t. - Drop NULL fill_path backend function which no longer exists. - - ChangeLog | 57 ++++++++ - src/cairo-glitz-surface.c | 1 - - src/cairo-gstate-private.h | 10 +-- - src/cairo-gstate.c | 161 ++++++++++------------- - src/cairo-meta-surface-private.h | 8 +- - src/cairo-meta-surface.c | 71 ++++++---- - src/cairo-path-stroke.c | 142 +++++++------------- - src/cairo-pdf-surface.c | 31 +++-- - src/cairo-ps-surface.c | 87 +++++++------ - src/cairo-surface.c | 265 +++++++++++++++++--------------------- - src/cairo-win32-surface.c | 1 - - src/cairo-xcb-surface.c | 1 - - src/cairo-xlib-surface.c | 1 - - src/cairoint.h | 142 ++++++++++++-------- - 14 files changed, 497 insertions(+), 481 deletions(-) - -commit 719334c52cd8dd8aaf10284632b018fd1a3b9d6c -Author: Carl Worth -Date: Tue Nov 1 16:40:37 2005 +0000 - - Rename surface->backend->show_glyphs to surface->backend->old_show_glyphs. - Move show_glyphs fallback from gstate to surface where it belongs. - Reviewed by: keithp - - ChangeLog | 29 +++++++ - src/cairo-atsui-font.c | 26 +++--- - src/cairo-glitz-surface.c | 26 +++--- - src/cairo-gstate.c | 109 +++------------------------ - src/cairo-image-surface.c | 2 +- - src/cairo-meta-surface.c | 28 ++++---- - src/cairo-pdf-surface.c | 26 +++--- - src/cairo-ps-surface.c | 78 ++++++++++---------- - src/cairo-quartz-surface.c | 2 +- - src/cairo-surface.c | 180 +++++++++++++++++++++++++++++++++++++++----- - src/cairo-win32-surface.c | 2 +- - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 104 +++++++++++++------------- - src/cairoint.h | 34 +++++--- - 14 files changed, 372 insertions(+), 276 deletions(-) - -commit a3ae0aecc47863145e5dd9f461d696e89c9e7c30 -Author: Keith Packard -Date: Tue Nov 1 10:33:34 2005 +0000 - - Clean up argument order for _fallback_stroke to match other functions - - ChangeLog | 6 ++++++ - src/cairo-surface.c | 6 +++--- - 2 files changed, 9 insertions(+), 3 deletions(-) - -commit a7228cc37a0cd967296e41639e624e9af1520a22 -Author: Carl Worth -Date: Mon Oct 31 16:55:21 2005 +0000 - - Originally 2005-10-28 Keith Packard : - Remove pen_regular field from the gstate. - Move stroke fallback from gstate to surface where it belongs. - Eliminate dependence on cairo_gstate_t object. - Fix to include just cairo-clip-private.h rather than cairo-gstate.private.h. - - ChangeLog | 28 +++++++ - src/cairo-gstate-private.h | 2 - - src/cairo-gstate.c | 113 +++++++++++--------------- - src/cairo-meta-surface.c | 2 +- - src/cairo-path-stroke.c | 185 +++++++++++++++++++++++++++++--------------- - src/cairo-pen.c | 27 ++---- - src/cairo-surface.c | 90 +++++++++++++++++++++- - src/cairoint.h | 41 +++++++++- - 8 files changed, 335 insertions(+), 153 deletions(-) - -commit 3cae05c4c503ce71c4967bd3f748cdfa3bb76ebc -Author: Tor Lillqvist -Date: Mon Oct 31 11:10:13 2005 +0000 - - Call _cairo_scaled_glyph_set_path(). - - ChangeLog | 5 +++++ - src/cairo-win32-font.c | 4 ++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 1a25220634013c4ef475f92110ede366e0847572 -Author: Keith Packard -Date: Fri Oct 28 21:00:42 2005 +0000 - - Use _cairo_pattern_get_extents in _fallback_paint to bound paint operators. - - ChangeLog | 6 ++++++ - src/cairo-surface.c | 27 ++++++++++++++++++--------- - 2 files changed, 24 insertions(+), 9 deletions(-) - -commit 83ff8ea194763659be84e7cfa59ad2e1711fb3da -Author: Keith Packard -Date: Fri Oct 28 20:49:59 2005 +0000 - - Bound mask fallback operation by transformed mask and source. This should speed up any applications calling cairo_mask with a bounded source or mask operand. - - ChangeLog | 9 +++++ - src/cairo-pattern.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-surface.c | 23 +++++++++---- - src/cairoint.h | 4 ++ - 4 files changed, 113 insertions(+), 8 deletions(-) - -commit 93cbc71a7998485d768a3b4cb4f26b2a443c81c5 -Author: Keith Packard -Date: Fri Oct 28 20:41:22 2005 +0000 - - Split _cairo_operator_bounded into two separate functions _cairo_operator_bounded_by_mask and _cairo_operator_bound_by_source to distinguish between how operators use source and mask operands. - - ChangeLog | 18 ++++++++++++++ - src/cairo-gstate.c | 56 ++++++++++++++++++++++++++++++++++++++------ - src/cairo-image-surface.c | 6 +--- - src/cairo-xlib-surface.c | 8 ++---- - src/cairoint.h | 5 +++- - 5 files changed, 75 insertions(+), 18 deletions(-) - -commit 1540504bd66a75a2fed8352ebfe8b029b3f199dd -Author: Carl Worth -Date: Thu Oct 27 17:16:46 2005 +0000 - - Fix leak of pattern (missing _cairo_pattern_fini). - Move mask fallback from gstate to surface where it belongs. - Temporarily export some previously private cairo_gstate functions, (soon to become private cairo_fallback functions). - - ChangeLog | 17 +++++++++++ - src/cairo-gstate.c | 76 ++++++------------------------------------------ - src/cairo-surface.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 25 +++++++++++++++- - 4 files changed, 131 insertions(+), 68 deletions(-) - -commit ce7b19fc3434ff733fd6f00add017386ad4a7974 -Author: Carl Worth -Date: Thu Oct 27 15:06:53 2005 +0000 - - Move paint fallback from gstate to surface where it belongs. - Add clip pointer to surface. - - ChangeLog | 11 ++++++++ - src/cairo-gstate.c | 27 ++++---------------- - src/cairo-surface.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++- - src/cairoint.h | 7 +++++ - 4 files changed, 89 insertions(+), 22 deletions(-) - -commit e406f4b0f0fc90dc6ad8aba000122a7345195478 -Author: Carl Worth -Date: Tue Oct 25 16:02:08 2005 +0000 - - Add explicit NULLs for unimplmented backend functions to better document what might be improved here. - - ChangeLog | 5 +++++ - src/cairo-xcb-surface.c | 8 +++++++- - 2 files changed, 12 insertions(+), 1 deletions(-) - -commit 8471ad29abb7abf96b5762675dd05b6ca3cca186 -Author: Carl Worth -Date: Tue Oct 25 15:57:28 2005 +0000 - - Add critical bug #4863 to the 1.0.4 roadmap. - - ChangeLog | 4 ++++ - ROADMAP | 1 + - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 09114cc62759efaee4102d05d6e0331193dba75e -Author: Carl Worth -Date: Tue Oct 25 15:55:57 2005 +0000 - - Add mention of suspected bug in PS backend. - - BUGS | 10 ++++++++++ - ChangeLog | 4 ++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -commit 16d79e212986d814bdc03b2f83c03371811ebb9f -Author: Carl Worth -Date: Tue Oct 18 16:09:21 2005 +0000 - - Mark the composite-integer-translate-source test as now passing for the PS backend (6 to go). - Use fallbacks for any operation using a pattern other than a solid pattern, since it's the only type that will actually emit anything right now. - Add comments indicating these functions are not yet implemented. - - ChangeLog | 14 ++++++++++++++ - ROADMAP | 2 +- - src/cairo-ps-surface.c | 13 +++++++++++++ - 3 files changed, 28 insertions(+), 1 deletions(-) - -commit 85abc42302529192a3e3eecf0bc3ff54258cbb4e -Author: Carl Worth -Date: Tue Oct 18 15:58:32 2005 +0000 - - Mark the operator-source and trap-clip tests as now passing for the PS backend (7 to go). - Replace the surface->fallback_region with a page-level surface->fallback Boolean instead, since that's all it was being used as anyway. - Do nothing in the ps_output->fallback case. - Do nothing in the ! ps_output->fallback case. - Reviewed by: keithp - - ChangeLog | 20 ++++++++++++++++++++ - ROADMAP | 4 ++-- - src/cairo-ps-surface.c | 38 ++++++++++++++++++++++++-------------- - 3 files changed, 46 insertions(+), 16 deletions(-) - -commit c88dbd077a8f501409f7a9ecd5b3f93aad21bdfa -Author: Carl Worth -Date: Tue Oct 18 12:41:01 2005 +0000 - - Added list of 9 remaining PS backend test suite failures to the 1.2.0 roadmap. - - ChangeLog | 5 +++++ - ROADMAP | 10 +++++++++- - 2 files changed, 14 insertions(+), 1 deletions(-) - -commit d93767c6ee4ca18ad2c93d8fce2ec82dca7ee21c -Author: Carl Worth -Date: Tue Oct 18 12:04:41 2005 +0000 - - Add reference images for antialiasing modes which are basically not applicable to the PS output. - - ChangeLog | 7 +++++++ - test/text-antialias-none-ps-rgb24-ref.png | Bin 0 -> 714 bytes - test/text-antialias-subpixel-ps-rgb24-ref.png | Bin 0 -> 714 bytes - 3 files changed, 7 insertions(+), 0 deletions(-) - -commit 99d02f2adc24c98b6f2e2d49f4cb909ff35d7926 -Author: Carl Worth -Date: Thu Oct 13 21:04:28 2005 +0000 - - Add verified image for PS output for dash-offset-negative. - - ChangeLog | 6 ++++++ - test/Makefile.am | 1 + - test/dash-offset-negative-ps-rgb24-ref.png | Bin 0 -> 202 bytes - 3 files changed, 7 insertions(+), 0 deletions(-) - -commit 4f97b2edb533c9b0329a8d7ec8e4f16447a04f12 -Author: Carl Worth -Date: Thu Oct 13 21:00:52 2005 +0000 - - New function to create a snapshot copy of a pattern. - Port code to use _init_pattern_with_snapshot rather than _cairo_pattern_init_copy for all source and mask patterns. - New function to create a snapshot copy of a surface (still preliminary---no support for meta-surfaces or any other surface for which acquire_source_surface will fail). - Add new surface->is_snapshot and initialize to FALSE. - Assert that none of these surface-modifying functions are ever called with a snapshot surface. - Reviewed by: keithp, otaylor - - ChangeLog | 37 ++++++++++++++++++ - src/cairo-meta-surface.c | 33 +++++++++++++-- - src/cairo-surface.c | 95 +++++++++++++++++++++++++++++++++++++++++++++- - src/cairoint.h | 6 +++ - 4 files changed, 165 insertions(+), 6 deletions(-) - -commit 9d27993cedf512f17b232986b6667e26c3a06ed0 -Author: Carl Worth -Date: Thu Oct 13 20:15:29 2005 +0000 - - Add comment for obviously broken function. - - ChangeLog | 5 +++++ - src/cairo-pdf-surface.c | 2 ++ - 2 files changed, 7 insertions(+), 0 deletions(-) - -commit 31a561e2c233ab93c6e644e00d8e6d26e12b9bef -Author: Carl Worth -Date: Thu Oct 13 16:55:14 2005 +0000 - - Push fill_path fallbacks down from gstate into the surface where all the other fallbacks are. - Add _cairo_surface_is_meta. - Add antialias to the fill_path meta-surface command. - Add an antialias parameter to the backend fill_path function. - Fix test description. - Reviewed by: keithp - - ChangeLog | 26 +++++++++++++++ - src/cairo-gstate.c | 27 ++------------- - src/cairo-meta-surface-private.h | 3 ++ - src/cairo-meta-surface.c | 22 +++++++++++- - src/cairo-pdf-surface.c | 9 +++-- - src/cairo-ps-surface.c | 22 +++++++++++-- - src/cairo-surface.c | 65 +++++++++++++++++++++++++++++++------ - src/cairoint.h | 21 +++++++----- - test/fill-and-stroke.c | 2 +- - 9 files changed, 144 insertions(+), 53 deletions(-) - -commit 097f240c6d2403f1a3530c61a8c437444f936d97 -Author: Carl Worth -Date: Thu Oct 13 07:33:07 2005 +0000 - - Fix indentation. - - ChangeLog | 5 +++++ - src/cairo-gstate.c | 22 +++++++++++----------- - 2 files changed, 16 insertions(+), 11 deletions(-) - -commit d31d5db04fe5706e26f117def1fffda627ccf8cf -Author: Carl Worth -Date: Thu Oct 13 07:30:15 2005 +0000 - - Increment libtool versioning to 5:0:3 in anticipation of 1.2.0 which will add interfaces. The motivation for this is to make the 1.1.1 release install a library which will be considered newer than 1.0.2. - Add a release-verify-soname-major check to verify that the soname major number is always 2 as part of the release-publish target. - Reviewed by: otaylor - - ChangeLog | 13 +++++++++++++ - Makefile.am | 10 +++++++++- - configure.in | 6 +++--- - 3 files changed, 25 insertions(+), 4 deletions(-) - -commit cd859a23d022d2aa84649e6e076cd75834800263 -Author: Tor Lillqvist -Date: Wed Oct 12 15:05:09 2005 +0000 - - Intersect clip region with target surface so we don't waste time and memory. - Reviewed by: cworth - - ChangeLog | 7 +++++++ - src/cairo-clip.c | 9 ++++++++- - 2 files changed, 15 insertions(+), 1 deletions(-) - -commit 1fa004f2a6a8cb7147657c74a3b3fc469b778f34 -Author: Carl Worth -Date: Wed Oct 12 14:23:11 2005 +0000 - - Add extend-reflect to the 1.2.0 roadmap. Mark dashed splines and clip-all as fixed. - Mark extend-reflect as an expected failure. - - ChangeLog | 9 +++++++++ - ROADMAP | 6 ++++-- - test/Makefile.am | 1 + - test/extend-reflect.c | 3 ++- - 4 files changed, 16 insertions(+), 3 deletions(-) - -commit 7dcbcdf75c5d9a7a691d741ecd1d36160fb725e3 -Author: Carl Worth -Date: Wed Oct 12 13:37:00 2005 +0000 - - Add a couple of tests to improve our coverage (clipping under both fill rules). - - ChangeLog | 14 ++++ - test/.cvsignore | 2 + - test/Makefile.am | 6 ++ - test/clip-fill-rule-pixel-aligned-ref.png | Bin 0 -> 195 bytes - test/clip-fill-rule-pixel-aligned-rgb24-ref.png | Bin 0 -> 194 bytes - test/clip-fill-rule-pixel-aligned.c | 95 +++++++++++++++++++++++ - test/clip-fill-rule-ps-rgb24-ref.png | Bin 0 -> 309 bytes - test/clip-fill-rule-ref.png | Bin 0 -> 431 bytes - test/clip-fill-rule-rgb24-ref.png | Bin 0 -> 495 bytes - test/clip-fill-rule.c | 79 +++++++++++++++++++ - 10 files changed, 196 insertions(+), 0 deletions(-) - -commit 990dfde44762a2e85f4d85f1e2a93a7b976533cd -Author: Carl Worth -Date: Wed Oct 12 13:33:38 2005 +0000 - - Add return value at ASSERT_NOT_REACHED. - - ChangeLog | 5 +++++ - src/cairo-pdf-surface.c | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 67d20cd4b247c4c9fef88067915d27e934b4356d -Author: Carl Worth -Date: Wed Oct 12 13:24:35 2005 +0000 - - Doc churn - - doc/public/tmpl/cairo-pattern.sgml | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d794c624cc81512ab89301f0bb7bc033a9006d00 -Author: Kristian Høgsberg -Date: Tue Oct 11 13:20:44 2005 +0000 - - Implement non-uniformly spaced color stops for PDF gradients. Patch from Jens Taprogge (#4722). - - ChangeLog | 8 +++ - src/cairo-pdf-surface.c | 155 ++++++++++++++++++++++++++++++++++++----------- - 2 files changed, 127 insertions(+), 36 deletions(-) - -commit f1044bb3c7753e17833a2dc0db508a80eeb810b7 -Author: Billy Biggs -Date: Mon Oct 10 12:45:15 2005 +0000 - - Call it CAIRO_EXTEND_PAD instead of CAIRO_EXTEND_NEAREST. - Update everybody to use _PAD instead of _NEAREST. - - ChangeLog | 14 ++++++++++++++ - src/cairo-glitz-surface.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-pattern.c | 2 +- - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - src/cairo.h | 4 ++-- - src/cairoint.h | 2 +- - 8 files changed, 22 insertions(+), 8 deletions(-) - -commit f39816e0161d357d8a23ae943d1bd70633795d63 -Author: Kristian Høgsberg -Date: Mon Oct 10 09:36:39 2005 +0000 - - Transform source pattern for _cairo_surface_fill_path() also (#4673). - Use cairo_fill_preserve() instead of cairo_save()/cairo_restore(). - Add missing return values. - - ChangeLog | 11 +++++++++++ - src/cairo-gstate.c | 7 ++++++- - src/cairo-pdf-surface.c | 7 +++---- - test/pdf-surface.c | 6 +----- - test/ps-surface.c | 6 +----- - 5 files changed, 22 insertions(+), 15 deletions(-) - -commit 7fdf45ce61f958aaecf6e8c7042947d3ebbcfd9d -Author: Billy Biggs -Date: Mon Oct 10 09:16:21 2005 +0000 - - Add documentation for the extend modes. - Document the extend functions for patterns. - Remove some redundancy in the documentation. - - ChangeLog | 10 ++++++++++ - src/cairo-pattern.c | 20 ++++++++++++++++++++ - src/cairo.c | 4 ---- - src/cairo.h | 13 +++++++++++++ - 4 files changed, 43 insertions(+), 4 deletions(-) - -commit 935764d91c6fee4aa30ea59464f4670e5f70f7c8 -Author: Keith Packard -Date: Sun Oct 9 20:40:12 2005 +0000 - - Switch fallback from list of rects to region. Check operator and patterns for non-ps drawing ability. Operators can sometimes be always opaque, independent of the pattern, sometimes always translucent, independent of the pattern and sometimes depend on whether is translucent. - reviewed by: cworth - - ChangeLog | 20 +++++ - src/cairo-ps-surface.c | 183 ++++++++++++++++++++++++++++++++++++++---------- - 2 files changed, 165 insertions(+), 38 deletions(-) - -commit a0e970fad268c90ab79a682116773b21d4120ccc -Author: Keith Packard -Date: Sun Oct 9 20:31:44 2005 +0000 - - Add const to _cairo_surface_is_image parameter - - ChangeLog | 6 ++++++ - src/cairo-image-surface.c | 2 +- - src/cairoint.h | 2 +- - 3 files changed, 8 insertions(+), 2 deletions(-) - -commit 2a3593e35ccedb9f9eb82390652e566dc651896b -Author: Carl Worth -Date: Sun Oct 9 20:01:42 2005 +0000 - - Doc SGML churn - - doc/public/tmpl/cairo-pattern.sgml | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b207dfe8228d624b88ee871c1f82d0321df4a3ef -Author: Billy Biggs -Date: Sun Oct 9 14:51:55 2005 +0000 - - Add a new test to start investigating bug 4183. - The new test. - Ignore the new test. - - ChangeLog | 6 ++++++ - test/.cvsignore | 1 + - test/Makefile.am | 4 ++++ - test/extend-reflect.c | 37 +++++++++++++++++++++++++++++++++++++ - 4 files changed, 48 insertions(+), 0 deletions(-) - -commit bb86d6664d607cb4f6b88618209d1c5dc74683ba -Author: Billy Biggs -Date: Sun Oct 9 14:29:54 2005 +0000 - - Make space for the new bits needed by expand. - - pixman/ChangeLog | 4 ++++ - pixman/src/icimage.h | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit eeb56e713b26e55cf1a5704d1e09b65457a7c457 -Author: Keith Packard -Date: Sun Oct 9 14:28:15 2005 +0000 - - The comment said 'blend over white', the code did 'blend under garbage'. I made the code look like the comment. More tests pass now. mmm. - reviewed by: cworth - - ChangeLog | 9 +++++++++ - src/cairo-ps-surface.c | 7 ++++++- - 2 files changed, 15 insertions(+), 1 deletions(-) - -commit 951c7a65924146c6acf6658ea17eca946fe0f069 -Author: Carl Worth -Date: Sun Oct 9 13:33:21 2005 +0000 - - Make surface image data static to work around a bug in cairo-meta-surface.c (not copying source surface pattern data). - - ChangeLog | 11 +++++++++++ - test/filter-nearest-offset.c | 2 +- - test/mask-ctm.c | 2 +- - test/mask-surface-ctm.c | 2 +- - test/paint-with-alpha.c | 2 +- - test/scale-source-surface-paint.c | 2 +- - test/source-surface-scale-paint.c | 2 +- - 7 files changed, 17 insertions(+), 6 deletions(-) - -commit ea7ac21d3b5c488e3d1ec82c18d66ae3f356d16f -Author: Billy Biggs -Date: Sun Oct 9 09:18:16 2005 +0000 - - Add a "nearest" extend mode, where the closest pixel is repeated for pixels outside of the source area. Note that for gradients, applications which had explicitly set a repeat mode of NONE will now need to change to use NEAREST to get the same behaviour. - Split CARIO_EXTEND_DEFAULT to indicate defaults for surfaces and gradients. The default for gradients is still the NEAREST beaviour. - Support the NEAREST mode, change NONE to be TRANSPARENT. - Update the extend mode code to use the pixman support. - Handle NEAREST, note that support for NONE is not yet handled for gradients. - Add a check for NEAREST but don't do anything useful. - Add a check for NEAREST but don't do anything useful. - Update a comment about the extend support in the image backend. - reviewed by: davidr, cworth, otaylor - - ChangeLog | 26 ++++++++++++++++++++++++++ - src/cairo-glitz-surface.c | 5 ++++- - src/cairo-image-surface.c | 18 ++++++------------ - src/cairo-pattern.c | 16 +++++++++++----- - src/cairo-pdf-surface.c | 2 -- - src/cairo-xcb-surface.c | 2 ++ - src/cairo-xlib-surface.c | 1 + - src/cairo.h | 3 ++- - src/cairoint.h | 3 ++- - 9 files changed, 54 insertions(+), 22 deletions(-) - -commit 32eb6ce206e225c5ae972d44fcd704b807555dd1 -Author: Billy Biggs -Date: Sun Oct 9 09:09:53 2005 +0000 - - Add extended repeat modes, copied from XRender. - Cleanup to use the new repeat modes. - Be explicit about which repeat mode we want. - reviewed by: davidr, cworth, otaylor - - pixman/ChangeLog | 10 ++++++++++ - pixman/src/icimage.c | 9 +++++---- - pixman/src/icrect.c | 2 +- - pixman/src/pixman.h | 14 +++++++++++--- - 4 files changed, 27 insertions(+), 8 deletions(-) - -commit a8dbfc42a75d1304bd1ddb6f885f507d47e96e76 -Author: Carl Worth -Date: Sat Oct 8 22:44:56 2005 +0000 - - Remove 1.0.2 entries now that it is out. Note that the PS backend has now been added to the test suite. - - ChangeLog | 5 +++++ - ROADMAP | 17 +++++------------ - 2 files changed, 10 insertions(+), 12 deletions(-) - -commit e26dbd950084477ffe26ba405fd7558ed74196cf -Author: Carl Worth -Date: Sat Oct 8 13:04:18 2005 +0000 - - Add ps-backend-specific reference images for test for which the current output is fine, but just happens to not be identical to the existing reference images, (ie. just minor differences shape-boundary pixels). - - ChangeLog | 17 +++++++++++++++++ - test/caps-sub-paths-ps-rgb24-ref.png | Bin 0 -> 237 bytes - test/dash-caps-joins-ps-rgb24-ref.png | Bin 0 -> 2362 bytes - test/fill-and-stroke-ps-rgb24-ref.png | Bin 0 -> 328 bytes - test/fill-rule-ps-rgb24-ref.png | Bin 0 -> 2167 bytes - test/leaky-polygon-ps-rgb24-ref.png | Bin 0 -> 353 bytes - test/line-width-ps-rgb24-ref.png | Bin 0 -> 242 bytes - test/path-data-ps-rgb24-ref.png | Bin 0 -> 440 bytes - test/rectangle-rounding-error-ps-rgb24-ref.png | Bin 0 -> 365 bytes - test/show-text-current-point-ps-rgb24-ref.png | Bin 0 -> 1477 bytes - test/text-antialias-gray-ps-rgb24-ref.png | Bin 0 -> 714 bytes - test/transforms-ps-rgb24-ref.png | Bin 0 -> 418 bytes - 12 files changed, 17 insertions(+), 0 deletions(-) - -commit 94dece56a5dca2f10b9c8d2914ff62177a88410b -Author: Carl Worth -Date: Sat Oct 8 11:58:20 2005 +0000 - - Ignore output of PS tests. - Fix the PS tests to work again, (track change in create_surface interface). - - ChangeLog | 7 +++++++ - test/.cvsignore | 2 ++ - test/cairo-test.c | 9 +++++++-- - 3 files changed, 16 insertions(+), 2 deletions(-) - -commit 24dce0dbb30ca7864416185b11cafff42db9a2b7 -Author: Carl Worth -Date: Sat Oct 8 11:57:45 2005 +0000 - - Enable PS and PDF backends by default, (in preparation for 1.2.0) - - ChangeLog | 5 +++++ - configure.in | 15 ++++----------- - 2 files changed, 9 insertions(+), 11 deletions(-) - -commit 4d84a70b9f4799d66641a3a0c5438098011690c2 -Author: Carl Worth -Date: Sat Oct 8 10:50:08 2005 +0000 - - Fix typo leading to truncated error message (Christian Biesinger ). - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 27e12fc1dbbed563788a8088b31459ae6cffb77a -Author: Kristian Høgsberg -Date: Fri Oct 7 13:21:01 2005 +0000 - - Apply patch from #4672 by Jens Taprogge to implement color stop sorting and multiple color stops for gradients. - - ChangeLog | 11 ++++ - src/cairo-pdf-surface.c | 117 +++++++++++++++++++++++++++++++++++------------ - 2 files changed, 98 insertions(+), 30 deletions(-) - -commit e6239b1d93bb88594310e57d8e7a2fd9e655ca58 -Author: Carl Worth -Date: Thu Oct 6 12:50:08 2005 +0000 - - Add ChangeLog information for code that was accidentally committed along with an earlier bug fix: - Add missing initialization for ximage.xoffset. - Ignore the -argb32-out.png and -rgb24-out.png images as well. - Pass a format to the surface create functions. (create_image_surface): Condense create_argb_image_surface and create_rgb_image_surface into a single function. (create_xlib_surface): Add support for CAIRO_FORMAT_RGB24 in addition to CAIRO_FORMAT_ARGB32. Add a new target for testing xlib with CAIRO_FORMAT_RGB24. - - ChangeLog | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 74af57339c271ab26b5e32647ef26b23929a57a7 -Author: Carl Worth -Date: Thu Oct 6 11:32:54 2005 +0000 - - Add missing initialization for ximage.xoffset. - - ChangeLog | 5 +++++ - src/cairo-xlib-surface.c | 1 + - test/.cvsignore | 6 ++++++ - test/cairo-test.c | 45 +++++++++++++++++++++++---------------------- - 4 files changed, 35 insertions(+), 22 deletions(-) - -commit de3358f883eabfe819f68bc2c2c8c4d43a4d0056 -Author: Anders Carlsson -Date: Tue Oct 4 13:48:25 2005 +0000 - - Invoke PKG_PROG_PKG_CONFIG so $PKG_CONFIG will be set early on. - - ChangeLog | 5 +++++ - configure.in | 4 ++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit 1810eaf8f2317faa976d0be3f538e8d036227f22 -Author: Carl Worth -Date: Mon Oct 3 17:49:25 2005 +0000 - - Add notes for the 1.0.2 release. - - ChangeLog | 4 +++ - NEWS | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 86 insertions(+), 0 deletions(-) - -commit 9529d20d323ecf9012b010cf16b2df52e405ba2b -Author: Carl Worth -Date: Mon Oct 3 17:39:33 2005 +0000 - - Add a couple of potential bugs to BUGS. - - BUGS | 16 +++++++++++----- - 1 files changed, 11 insertions(+), 5 deletions(-) - -commit cdaa48655c328fd2fd34c264b6f8e1d9ec2af1f7 -Author: Anders Carlsson -Date: Fri Sep 30 08:31:36 2005 +0000 - - Bring the ATSUI backend up to date wrt the new font backend changes. Also, add cairo_atsui_font_face_create_for_atsu_font_id which takes an ATSUFontID and returns a cairo_font_face_t. - - ChangeLog | 24 ++ - src/cairo-atsui-font.c | 708 +++++++++++++++++++++++------------------------- - src/cairo-atsui.h | 3 + - 3 files changed, 359 insertions(+), 376 deletions(-) - -commit a0286781793bf2da6ba67029c8719eb614cb345a -Author: Bertram Felgenhauer -Date: Thu Sep 29 20:00:14 2005 +0000 - - simplify id initialisation of last patch - reviewed by: keithp - - ChangeLog | 5 +++++ - src/cairo-hull.c | 13 +++++++------ - 2 files changed, 12 insertions(+), 6 deletions(-) - -commit 04170ed2854c7cb4506ddc3c64470748f1e67ffd -Author: Bertram Felgenhauer -Date: Thu Sep 29 17:34:31 2005 +0000 - - ChangeLog cosmetics. - - ChangeLog | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit fa2d0ab5b7744fa929e77ee61e93476c425777e3 -Author: Bertram Felgenhauer -Date: Thu Sep 29 17:26:20 2005 +0000 - - Using a pointer comparison as the fallback total order was wrong - these pointers are not stable. So we introduce our own total order instead. - mark 4599 as fixed - reviewed by: cworth - - ChangeLog | 10 ++++++++++ - ROADMAP | 2 +- - src/cairo-hull.c | 14 +++++++++----- - 3 files changed, 20 insertions(+), 6 deletions(-) - -commit d3e7dad53eb25aff2608af08057bb86d864de145 -Author: Keith Packard -Date: Thu Sep 29 14:31:08 2005 +0000 - - Add rgb24 surface tests, support per-target reference images and support PS surface testing - reviewed by: cworth - - ChangeLog | 69 ++++++++ - test/Makefile.am | 159 ++++++++++++------ - test/a8-mask-rgb24-ref.png | Bin 0 -> 128 bytes - test/cairo-test.c | 176 +++++++++++++++++--- - test/caps-joins-ps-rgb24-ref.png | Bin 0 -> 1420 bytes - test/caps-joins-rgb24-ref.png | Bin 0 -> 1398 bytes - test/caps-sub-paths-rgb24-ref.png | Bin 0 -> 186 bytes - test/clip-all-rgb24-ref.png | Bin 0 -> 114 bytes - test/clip-nesting-ps-rgb24-ref.png | Bin 0 -> 517 bytes - test/clip-nesting-rgb24-ref.png | Bin 0 -> 846 bytes - test/clip-operator-rgb24-ref.png | Bin 0 -> 21014 bytes - test/clip-twice-ps-rgb24-ref.png | Bin 0 -> 605 bytes - test/clip-twice-rgb24-ref.png | Bin 0 -> 1278 bytes - ...ite-integer-translate-over-repeat-rgb24-ref.png | Bin 0 -> 353 bytes - .../composite-integer-translate-over-rgb24-ref.png | Bin 0 -> 13041 bytes - ...omposite-integer-translate-source-rgb24-ref.png | Bin 0 -> 14017 bytes - test/create-from-png-rgb24-ref.png | Bin 0 -> 115 bytes - test/create-from-png-stream-rgb24-ref.png | Bin 0 -> 115 bytes - test/dash-caps-joins-rgb24-ref.png | Bin 0 -> 2946 bytes - test/dash-offset-negative-rgb24-ref.png | Bin 0 -> 170 bytes - test/fill-and-stroke-rgb24-ref.png | Bin 0 -> 299 bytes - test/fill-rule-rgb24-ref.png | Bin 0 -> 2320 bytes - test/filter-nearest-offset-rgb24-ref.png | Bin 0 -> 254 bytes - test/gradient-alpha-rgb24-ref.png | Bin 0 -> 147 bytes - test/leaky-polygon-rgb24-ref.png | Bin 0 -> 344 bytes - test/line-width-rgb24-ref.png | Bin 0 -> 199 bytes - test/linear-gradient-rgb24-ref.png | Bin 0 -> 12719 bytes - test/mask-ctm-rgb24-ref.png | Bin 0 -> 140 bytes - test/mask-rgb24-ref.png | Bin 0 -> 73124 bytes - test/mask-surface-ctm-rgb24-ref.png | Bin 0 -> 140 bytes - test/move-to-show-surface-rgb24-ref.png | Bin 0 -> 115 bytes - test/nil-surface-rgb24-ref.png | Bin 0 -> 106 bytes - test/operator-clear-rgb24-ref.png | Bin 0 -> 5704 bytes - test/operator-source-rgb24-ref.png | Bin 0 -> 16909 bytes - test/paint-rgb24-ref.png | Bin 0 -> 116 bytes - test/paint-with-alpha-rgb24-ref.png | Bin 0 -> 146 bytes - test/path-data-rgb24-ref.png | Bin 0 -> 523 bytes - test/pixman-rotate-rgb24-ref.png | Bin 0 -> 385 bytes - test/rectangle-rounding-error-rgb24-ref.png | Bin 0 -> 298 bytes - test/rel-path-rgb24-ref.png | Bin 0 -> 115 bytes - test/scale-source-surface-paint-rgb24-ref.png | Bin 0 -> 146 bytes - test/self-copy-rgb24-ref.png | Bin 0 -> 291 bytes - test/self-intersecting-rgb24-ref.png | Bin 0 -> 304 bytes - test/set-source-rgb24-ref.png | Bin 0 -> 114 bytes - test/show-text-current-point-rgb24-ref.png | Bin 0 -> 2173 bytes - test/source-clip-rgb24-ref.png | Bin 0 -> 180 bytes - test/source-surface-scale-paint-rgb24-ref.png | Bin 0 -> 136 bytes - test/surface-pattern-rgb24-ref.png | Bin 0 -> 194 bytes - test/text-antialias-gray-rgb24-ref.png | Bin 0 -> 995 bytes - test/text-antialias-none-rgb24-ref.png | Bin 0 -> 284 bytes - test/text-antialias-subpixel-rgb24-ref.png | Bin 0 -> 1121 bytes - test/text-pattern-rgb24-ref.png | Bin 0 -> 2686 bytes - test/text-rotate-rgb24-ref.png | Bin 0 -> 16508 bytes - test/transforms-rgb24-ref.png | Bin 0 -> 318 bytes - test/translate-show-surface-rgb24-ref.png | Bin 0 -> 115 bytes - test/trap-clip-rgb24-ref.png | Bin 0 -> 64724 bytes - test/unantialiased-shapes-ps-rgb24-ref.png | Bin 0 -> 9899 bytes - test/unantialiased-shapes-rgb24-ref.png | Bin 0 -> 4449 bytes - test/unbounded-operator-rgb24-ref.png | Bin 0 -> 7581 bytes - 59 files changed, 330 insertions(+), 74 deletions(-) - -commit 76634781e20b1854e4b49a70b98d9f6900c3aedf -Author: Carl Worth -Date: Thu Sep 29 10:09:59 2005 +0000 - - Oops. Reverting debug output that was mistakenly committed. - - ChangeLog | 5 +++++ - src/cairo-surface.c | 31 ------------------------------- - 2 files changed, 5 insertions(+), 31 deletions(-) - -commit 4ef5f08563c3f149d52eed26aa16965740ad8de6 -Author: Carl Worth -Date: Thu Sep 29 06:49:47 2005 +0000 - - Add date of 2005-10-03 for 1.0.2. Add 4630 to the 1.0.2 roadmap. - - ChangeLog | 5 +++++ - ROADMAP | 6 +++--- - src/cairo-surface.c | 31 +++++++++++++++++++++++++++++++ - 3 files changed, 39 insertions(+), 3 deletions(-) - -commit 303e3e9748b6e1970c06203c192ea1b2743f10df -Author: Tor Lillqvist -Date: Wed Sep 28 10:35:55 2005 +0000 - - Use _cairo_utf8_to_utf16 for character conversion. - - ChangeLog | 5 +++++ - src/cairo-atsui-font.c | 24 ++++++------------------ - 2 files changed, 11 insertions(+), 18 deletions(-) - -commit dc711cd88d6cc5aa87b41bd72a2ab2fe67554760 -Author: Tor Lillqvist -Date: Wed Sep 28 10:25:23 2005 +0000 - - Note that Bug #4612 (Text not being drawn if first character entirely out of surface) is now fixed. - Add cast so that sign conversion doesn't alter comparison. - - ChangeLog | 8 ++++++++ - ROADMAP | 2 +- - src/cairo-win32-font.c | 8 ++++---- - 3 files changed, 13 insertions(+), 5 deletions(-) - -commit f41377bc0cbd2dd9df13d1d09437349eb2bcf62a -Author: Carl Worth -Date: Tue Sep 27 15:07:15 2005 +0000 - - Add 4612 to the 1.0.2 roadmap. - - ChangeLog | 4 ++++ - ROADMAP | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 58113099f987c003eba22ae6e084520ea920e688 -Author: Tor Lillqvist -Date: Tue Sep 27 13:22:46 2005 +0000 - - Note that Bug #4602 (use of 0x0 images causes win32 backend failure) is now fixed. - Avoid creating size-0 bitmap, which fails. - - ChangeLog | 8 ++++++++ - ROADMAP | 2 +- - src/cairo-win32-surface.c | 4 ++-- - 3 files changed, 11 insertions(+), 3 deletions(-) - -commit abaf346810dc5756d3c12b1cc24e24b1d6acf165 -Author: Carl Worth -Date: Tue Sep 27 12:44:32 2005 +0000 - - Note that bug #4409 (Dashes are missing initial caps) is now fixed. - Move face-flipping from inside _cairo_stroker_add_caps to new _cairo_stroker_add_leading_cap variant of _cairo_stoker_add_cap. - Change to call _cairo_stroker_add_leading_cap or _cairo_stroker_add_trailing_cap as appropriate. - Remove dash-caps-joins from the XFAIL list and add reference image. - - ChangeLog | 21 +++++++++++++++++ - ROADMAP | 2 +- - src/cairo-path-stroke.c | 51 ++++++++++++++++++++++++++++------------- - test/Makefile.am | 1 - - test/dash-caps-joins-ref.png | Bin 0 -> 2347 bytes - test/dash-caps-joins.c | 3 +- - 6 files changed, 58 insertions(+), 20 deletions(-) - -commit 8a6792fe4128a4c15d6d0e798643626416e82a6c -Author: Carl Worth -Date: Tue Sep 27 11:35:18 2005 +0000 - - Add two test cases. One for caps and joins (passes), and one for dashed caps and joins, (fails, see bug #4409). - - ChangeLog | 10 +++++ - test/.cvsignore | 2 + - test/Makefile.am | 7 +++ - test/caps-joins-ref.png | Bin 0 -> 1262 bytes - test/caps-joins.c | 85 ++++++++++++++++++++++++++++++++++++++++++ - test/dash-caps-joins.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 199 insertions(+), 0 deletions(-) - -commit 38d526f8bedeab53a1cbd5b8424e0c4f15f3b705 -Author: Carl Worth -Date: Mon Sep 26 17:21:47 2005 +0000 - - Added bug 4599 and 4602 to the 1.0.2 roadmap. - - ChangeLog | 4 ++++ - ROADMAP | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 1010e9052ff7e2283bb4fb6ada81dd1c8bb785ca -Author: Tor Lillqvist -Date: Mon Sep 26 07:48:10 2005 +0000 - - Set LOGFONT::lfHeight negative. A negative lfHeight means "em height" which is what we want, and matches how other toolkits interpret font sizes on Win32. (Positive lfHeight means "cell height".) (#4593) (_cairo_win32_scaled_font_init_glyph_metrics): If GetGlyphOutlineW() fails, print error message and set metrics to zero. (#3927, Hans Breuer) (cairo_win32_scaled_font_select_font): Add detail on what API failed to the error messages. - - ChangeLog | 13 +++++++++++++ - src/cairo-win32-font.c | 26 ++++++++++++++++---------- - 2 files changed, 29 insertions(+), 10 deletions(-) - -commit 8649fc9f18f991ef1e02b58bb6a0a874aef16cda -Author: Carl Worth -Date: Mon Sep 19 17:30:27 2005 +0000 - - Note that the clip-all test now passes. - - ChangeLog | 4 ++++ - ROADMAP | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 8fc9e099fd0c53c4e2119cfd0f6c63b48b293043 -Author: Carl Worth -Date: Mon Sep 19 17:24:52 2005 +0000 - - Avoid attempting to create a size-0 Pixmap, (to prevent the associated X error). This actually showed up when the clip region is empty. Thanks to Radek Doulík for the bug report. - Remove clip-all from the XFAIL list since it works now. - - ChangeLog | 11 +++++++++++ - src/cairo-xlib-surface.c | 3 ++- - test/Makefile.am | 1 - - test/clip-all.c | 3 +-- - 4 files changed, 14 insertions(+), 4 deletions(-) - -commit fa5d17f4667719803fe27207ca1ec1e7a5882080 -Author: Carl Worth -Date: Mon Sep 19 14:24:00 2005 +0000 - - Originally: 2005-09-19 Hans Breuer - src/cairoint.h : win32 specific definitions for CAIRO_MUTEX_DECLARE, CAIRO_MUTEX_LOCK etc. [not based on win32 mutex but critical sections] - src/cairo-win32-surface.c : add DllMain() to do global, single-threaded 'mutex' (de)initialization. No ifdefs needed, some variables would simply not be used when the respective backend would not be compiled in. - - ChangeLog | 13 +++++++++++++ - src/cairo-win32-surface.c | 34 ++++++++++++++++++++++++++++++++++ - src/cairoint.h | 10 ++++++++++ - 3 files changed, 57 insertions(+), 0 deletions(-) - -commit d7bdc9477552382163ee0a0521a13c212015a4e8 -Author: Carl Worth -Date: Mon Sep 19 14:14:03 2005 +0000 - - Add cairo-cache-private.h which was missing from the list, (thanks to sunmoon1997). - - ChangeLog | 5 +++++ - src/Makefile.am | 1 + - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 80561375c43d1769c9e1f05b700137b424f20565 -Author: Carl Worth -Date: Mon Sep 19 11:56:27 2005 +0000 - - Note that 4414 is now fixed. - - ChangeLog | 4 ++++ - ROADMAP | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 91e188bc78f0f2b3703c249c2fac4e3f6e3c5bcc -Author: David Reveman -Date: Mon Sep 19 07:18:51 2005 +0000 - - Add missing break to switch statement - - src/cairo-glitz-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 079ee492b518c735046032a118f8662ec8982f71 -Author: Billy Biggs -Date: Sun Sep 18 19:53:23 2005 +0000 - - Fix the MMX test to only check for MMX intrinsics and not the SSE intrinsics. - - ChangeLog | 5 +++++ - configure.in | 4 ++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -commit 759166f795ab960ddf679f467638be49657f91c1 -Author: Billy Biggs -Date: Sun Sep 18 19:52:08 2005 +0000 - - Only include xmmintrin.h if USE_SSE is defined. - - pixman/ChangeLog | 4 ++++ - pixman/src/fbmmx.c | 2 ++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 0978f97e9e606c2ec62fe369b584ece6ad4905ef -Author: Billy Biggs -Date: Sun Sep 18 19:37:44 2005 +0000 - - Bug #4414, reviewed by otaylor, cworth. - Remove -msse from the MMX CFLAGS as it causes gcc to emit SSE instructions, however the detection code only checks for processors supporting MMX and does not require SSE. - - ChangeLog | 8 ++++++++ - configure.in | 2 +- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit b7c02401b9c0470f5a95b33f8fde3adebfcec397 -Author: Billy Biggs -Date: Sun Sep 18 19:34:36 2005 +0000 - - Bug #4414, reviewed by otaylor, cworth. - Remove CPU detection code. - Move CPU detection code out of the MMX file and into the generic code to avoid compiling it with -mmmx and -msse. Using these options causes gcc to use MMX and SSE instructions in the CPU detection code which causes SIGILLs on older processors. - - pixman/ChangeLog | 11 +++++ - pixman/src/fbmmx.c | 113 ------------------------------------------------ - pixman/src/fbpict.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 3 files changed, 129 insertions(+), 114 deletions(-) - -commit 6d14b3c1fc6c8dfb389495e88a8c63ff10110ec4 -Author: Carl Worth -Date: Fri Sep 16 10:49:48 2005 +0000 - - Prefer cairo_bool_t, TRUE, and FALSE over int, 1, and 0. - - ChangeLog | 6 ++++++ - src/cairo-path-stroke.c | 18 +++++++++--------- - 2 files changed, 15 insertions(+), 9 deletions(-) - -commit 9cb31827aa81d175309b8c81b99482ebde3ba6d6 -Author: Carl Worth -Date: Fri Sep 16 10:27:32 2005 +0000 - - Mark 4408 as resolved. - - ChangeLog | 4 ++++ - ROADMAP | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 5b9be26d269d7e120d73652f7c6d2894cc556939 -Author: Carl Worth -Date: Fri Sep 16 10:24:54 2005 +0000 - - Tested by: John Ellson Closes bug #4408 https://bugs.freedesktop.org/show_bug.cgi?id=4408 - Add support for dashed splines. (The antialiasing quality isn't perfect, but at least the curves are dashed now). - - ChangeLog | 11 +++++++ - src/cairo-path-stroke.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 86 insertions(+), 1 deletions(-) - -commit a7459e0057e1a73b7eeb7f6d88e86061b198cbf9 -Author: Carl Worth -Date: Fri Sep 16 10:11:52 2005 +0000 - - Mark 4260 as resolved. Add 4414 to the 1.0.2 roadmap. - - ChangeLog | 4 ++++ - ROADMAP | 3 ++- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 34c6f5de9be6102741db455e8447d39deb1289b7 -Author: David Reveman -Date: Wed Sep 14 09:25:07 2005 +0000 - - Change Carl's comment about saturate operator - - ChangeLog | 1 + - src/cairo-glitz-surface.c | 13 +++++++------ - 2 files changed, 8 insertions(+), 6 deletions(-) - -commit 6121df6b72b56ebe9e775c1b12494dc29817f311 -Author: David Reveman -Date: Wed Sep 14 09:12:13 2005 +0000 - - White-space cleanups to glitz backend - - src/cairo-glitz-surface.c | 200 +++++++++++++++++++++++---------------------- - 1 files changed, 102 insertions(+), 98 deletions(-) - -commit 82cb5baeb2440545708d66573b29b69c0951de71 -Author: David Reveman -Date: Wed Sep 14 09:07:00 2005 +0000 - - Track changes to glitz and update glyph caching in glitz backend - - ChangeLog | 5 + - configure.in | 2 +- - src/cairo-glitz-surface.c | 675 ++++++++++++++++++++++----------------------- - 3 files changed, 331 insertions(+), 351 deletions(-) - -commit c9ad68e6e9a86ea0c6c020c9073b4f86c00bb4a6 -Author: Carl Worth -Date: Tue Sep 13 15:53:19 2005 +0000 - - Set return-value *glyphs to NULL after freeing it in the error case. - - ChangeLog | 5 +++++ - src/cairo-scaled-font.c | 3 ++- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit b18a3c0580a9ab9dc130b5908d4f21da382f6243 -Author: Carl Worth -Date: Tue Sep 13 15:47:59 2005 +0000 - - Mark bug #4299 fixed (by the several lock-related commits below). Add clip-all XFAIL to the 1.0.2 roadmap. - - ChangeLog | 5 +++++ - ROADMAP | 9 +++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit 56e7e9d5bd6ccc0a94d4b41058cab200f9dc2654 -Author: Carl Worth -Date: Tue Sep 13 12:40:36 2005 +0000 - - Add missing locking around the call into the thread-shared cache here. - - ChangeLog | 5 +++++ - src/cairo-scaled-font.c | 42 +++++++++++++++++++++++++----------------- - 2 files changed, 30 insertions(+), 17 deletions(-) - -commit e8708af118458c95ec08148375411627c03c0fca -Author: Carl Worth -Date: Tue Sep 13 12:37:45 2005 +0000 - - Adjust parameters to stress things a bit more, (better exposing another locking bug). - - ChangeLog | 5 +++++ - test/pthread-show-text.c | 10 +++++----- - 2 files changed, 10 insertions(+), 5 deletions(-) - -commit ef35d00615fcd95d9db8c22378caa5cb934465b5 -Author: Carl Worth -Date: Tue Sep 13 12:26:29 2005 +0000 - - Expand locking to encapsulate any modification to the reference count of a scaled font, rather than just modifcations of the scaled_font_map, since scaled fonts are shared between threads. - - ChangeLog | 8 ++++ - src/cairo-scaled-font.c | 87 ++++++++++++++++++++++++++-------------------- - 2 files changed, 57 insertions(+), 38 deletions(-) - -commit 258f6f4903eb91187384c2df7591413d9041f184 -Author: Carl Worth -Date: Tue Sep 13 12:11:32 2005 +0000 - - Add documentation for cairo_test functions. - Abstract log fie creation into cairo_test_init for use by tests that don't use cairo_test(). - Add new test for bug #4299 as reported by Alexey Shabalin. - - ChangeLog | 13 +++++ - test/.cvsignore | 3 +- - test/Makefile.am | 7 +++- - test/cairo-test.c | 30 ++++++++---- - test/cairo-test.h | 48 ++++++++++++++++++-- - test/pthread-show-text.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 195 insertions(+), 16 deletions(-) - -commit 999c2a8a2b27412ac2fb59041837c780e6d7eec3 -Author: Carl Worth -Date: Mon Sep 12 11:15:52 2005 +0000 - - Originally 2005-09-06 Carl Worth : - _cairo_cache_preserve -> _cairo_cache_freeze _cairo_cache_release -> _cairo_cache_thaw - Track rename of _cairo_cache_freeze/thaw. - Track rename. Add stacking behavior to _cairo_cache_freeze/thaw. Abstract out shrinking from _cairo_cache_insert so that _cairo_cache_thaw will also shrink as necessary. - Make this function static since its current limitation to accept an entry rather than a key makes it not as externally useful as would be desirable. Document this limitation. - - ChangeLog | 24 +++++++++ - src/cairo-cache-private.h | 8 +-- - src/cairo-cache.c | 121 +++++++++++++++++++++++++++++++-------------- - src/cairo-scaled-font.c | 7 +-- - 4 files changed, 112 insertions(+), 48 deletions(-) - -commit b1a38efd34c6b87581846de88b134b0dd6656753 -Author: Carl Worth -Date: Mon Sep 12 11:11:33 2005 +0000 - - Fix for bug #4401 as reported by Tim Mooney: - Don't bother checking for sincos function. - Don't use sincos function since it is apparently buggy on some platforms, (Tru64 at least). - - ChangeLog | 10 ++++++++++ - configure.in | 2 -- - src/cairo-matrix.c | 6 ++---- - 3 files changed, 12 insertions(+), 6 deletions(-) - -commit a1bca924b9296d769d735d8abaf1353143770def -Author: Owen Taylor -Date: Mon Sep 12 05:55:11 2005 +0000 - - Bug #4260, Reviewed by B. Biggs - Use & not && for bitwise AND. - src/fbpict.c src/fbmmx.c: Take 'dest' as an argument, if pict and dest don't match for RGB, BGR, swap result. - - pixman/ChangeLog | 11 +++++++++++ - pixman/src/fbcompose.c | 4 ++-- - pixman/src/fbmmx.c | 14 +++++++------- - pixman/src/fbpict.c | 20 ++++++++++---------- - pixman/src/fbpict.h | 12 ++++++++++-- - 5 files changed, 40 insertions(+), 21 deletions(-) - -commit e06df6a38aa949730ca5497c4e6210b95dc0f117 -Author: Carl Worth -Date: Fri Sep 9 17:10:52 2005 +0000 - - Add two bugs to the 1.0.2 roadmap: 4408 Missing dashes on stroked curves 4409 Dashes are missing initial caps - - ChangeLog | 6 ++++++ - ROADMAP | 2 ++ - 2 files changed, 8 insertions(+), 0 deletions(-) - -commit 761cef26677bc7c928d64aa78084e0389de9679f -Author: Carl Worth -Date: Thu Sep 8 16:18:00 2005 +0000 - - Add open bug list for 1.0.2. - - ChangeLog | 4 ++++ - ROADMAP | 14 ++++++-------- - 2 files changed, 10 insertions(+), 8 deletions(-) - -commit 0b9c0efc3a939c2078f0200e9bfaa14651fd7529 -Author: Carl Worth -Date: Wed Sep 7 16:57:59 2005 +0000 - - Put win32 mutex locking on the 1.2.0 roadmap. - Portability improvements for win32 thanks to Hans Breuer : - Defined sized-integer types when under the influence of _MSC_VER and without stdint.h. - Use #error which is more portable than #warning, (and more indicative of where we want to be before the next release). - - AUTHORS | 1 + - ChangeLog | 14 + - ROADMAP | 4 + - doc/public/tmpl/cairo-font-options.sgml | 136 ---------- - doc/public/tmpl/cairo-font.sgml | 48 ---- - doc/public/tmpl/cairo-ft.sgml | 45 ---- - doc/public/tmpl/cairo-glitz.sgml | 9 - - doc/public/tmpl/cairo-image.sgml | 42 --- - doc/public/tmpl/cairo-matrix.sgml | 119 --------- - doc/public/tmpl/cairo-paths.sgml | 186 -------------- - doc/public/tmpl/cairo-pattern.sgml | 165 ------------ - doc/public/tmpl/cairo-pdf.sgml | 33 --- - doc/public/tmpl/cairo-png.sgml | 40 --- - doc/public/tmpl/cairo-ps.sgml | 33 --- - doc/public/tmpl/cairo-quartz.sgml | 11 - - doc/public/tmpl/cairo-scaled-font.sgml | 60 ----- - doc/public/tmpl/cairo-status.sgml | 9 - - doc/public/tmpl/cairo-surface.sgml | 119 --------- - doc/public/tmpl/cairo-text.sgml | 123 --------- - doc/public/tmpl/cairo-transforms.sgml | 106 -------- - doc/public/tmpl/cairo-types.sgml | 4 +- - doc/public/tmpl/cairo-version.sgml | 16 -- - doc/public/tmpl/cairo-win32-fonts.sgml | 36 --- - doc/public/tmpl/cairo-win32.sgml | 9 - - doc/public/tmpl/cairo-xcb-xrender.sgml | 13 - - doc/public/tmpl/cairo-xcb.sgml | 35 --- - doc/public/tmpl/cairo-xlib-xrender.sgml | 14 - - doc/public/tmpl/cairo-xlib.sgml | 47 ---- - doc/public/tmpl/cairo.sgml | 424 ------------------------------- - pixman/src/pixman.h | 19 +- - src/cairoint.h | 3 +- - 31 files changed, 37 insertions(+), 1886 deletions(-) - -commit 63c208d83d4a6e66ee2b15af8e1cd92ed67626b9 -Author: Carl Worth -Date: Wed Sep 7 16:31:22 2005 +0000 - - Give cairo_public an empty definition by default. - Add new cairo_public macro before every public function call prototype. - - ChangeLog | 18 +++ - src/cairo-features.h.in | 4 + - src/cairo-ft.h | 10 +- - src/cairo-glitz.h | 2 +- - src/cairo-pdf.h | 6 +- - src/cairo-ps.h | 6 +- - src/cairo-quartz.h | 2 +- - src/cairo-win32.h | 10 +- - src/cairo-xcb-xrender.h | 2 +- - src/cairo-xcb.h | 6 +- - src/cairo-xlib-xrender.h | 2 +- - src/cairo-xlib.h | 8 +- - src/cairo.h | 338 +++++++++++++++++++++++----------------------- - 13 files changed, 218 insertions(+), 196 deletions(-) - -commit 05c0c98aee3c67f7a708ad9bfb248ae5c4066312 -Author: Tor Lillqvist -Date: Wed Sep 7 09:07:13 2005 +0000 - - Pass appropriate pointer for image_extra to release_dest_image. - - ChangeLog | 5 +++++ - src/cairo-atsui-font.c | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit c00698ebf5730d2d0bff35e1b6cb69914789529f -Author: Tor Lillqvist -Date: Wed Sep 7 08:38:43 2005 +0000 - - Pass scratch space instead of NULL for image_extra to acquire/release_dest_image. - - ChangeLog | 6 ++++++ - src/cairo-atsui-font.c | 5 +++-- - 2 files changed, 9 insertions(+), 2 deletions(-) - -commit f2dc1ebe82e9b26346d2948de33ffef0f5bf921b -Author: Carl Worth -Date: Tue Sep 6 15:19:00 2005 +0000 - - Ignore cairo.def. - Remove cairo_private since we only use it in .h files, not .c files. - - ChangeLog | 7 +++++++ - src/.cvsignore | 1 + - src/cairo-gstate.c | 4 ++-- - 3 files changed, 10 insertions(+), 2 deletions(-) - -commit 5b5eecc2e16109e16b9da78e023274197cb3082c -Author: Carl Worth -Date: Fri Sep 2 16:17:48 2005 +0000 - - Make a very preliminary attempt at 1.0.2, 1.2.0, and 1.4.0 roadmaps. - - ChangeLog | 5 ++ - ROADMAP | 173 +++++++++++++++++++++++++++++++----------------------------- - 2 files changed, 94 insertions(+), 84 deletions(-) - -commit 7d93d26e1edd9d0340e7a00b1a74b56667e84b44 -Author: Carl Worth -Date: Fri Sep 2 13:42:34 2005 +0000 - - Add description of cairo's versioning scheme. - - ChangeLog | 5 ++ - doc/public/tmpl/cairo-version.sgml | 102 +++++++++++++++++++++++++++++++++++- - 2 files changed, 106 insertions(+), 1 deletions(-) - -commit 93289f14ccc3d1db5c0b64672b8cd49703542010 -Author: Carl Worth -Date: Fri Sep 2 11:22:40 2005 +0000 - - Clean up some documentation issues pointed out by otaylor. - - ChangeLog | 6 ++++++ - src/cairo-cache-private.h | 10 ++++------ - src/cairo-cache.c | 24 ++++++++++++------------ - 3 files changed, 22 insertions(+), 18 deletions(-) - -commit 0cfa350fa86c7894eec4e1b99ac7b69bc0c8f296 -Author: Keith Packard -Date: Thu Sep 1 20:38:07 2005 +0000 - - Oops. Call _cairo_scaled_font_set_metrics to set user-space metrics for scaled fonts. - reviewed by: otaylor deserves credit for noticing a problem - - ChangeLog | 8 ++++++++ - src/cairo-ft-font.c | 22 ++++++++++++---------- - 2 files changed, 20 insertions(+), 10 deletions(-) - -commit 25edf235f090a95f30ea877aa00bc7ee642d4cc5 -Author: Bertram Felgenhauer -Date: Thu Sep 1 06:13:46 2005 +0000 - - Add missing pair of braces. This fixes a crash on text output. - - ChangeLog | 5 +++++ - src/cairo-scaled-font.c | 9 +++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit 7e4465819b7f0da3f16a18c6ffcf2b8f7a9ee04a -Author: Carl Worth -Date: Thu Sep 1 02:14:31 2005 +0000 - - Add includes to get sized-integer types such as uint32_t. - Fix declaration of image data array to be uint32_t rather than unsigned long. Fixes four out of the remaining five failures in bug #4245. - - ChangeLog | 17 +++++++++++++++++ - test/cairo-test.h | 26 ++++++++++++++++++++++++++ - test/filter-nearest-offset.c | 2 +- - test/mask-ctm.c | 2 +- - test/mask-surface-ctm.c | 2 +- - test/move-to-show-surface.c | 2 +- - test/paint-with-alpha.c | 2 +- - test/scale-source-surface-paint.c | 2 +- - test/set-source.c | 2 +- - test/source-surface-scale-paint.c | 2 +- - test/translate-show-surface.c | 2 +- - 11 files changed, 52 insertions(+), 9 deletions(-) - -commit 0f4beab5070ce6f7129ca52953eb002ac7f40b93 -Author: Carl Worth -Date: Wed Aug 31 19:11:22 2005 +0000 - - Add call to XSynchronize, (the expected clip-all failure isn't occuring without it for some reason). - Note reason for expected failure. - src/cairo-scaled-font.c: Add an optional text_to_glyphs() virtual function that the backend can implement instead of ucs4_to_index(). - Protect inclusion of fontconfig.h with HAVE_FCFINI. - - ChangeLog | 19 ++ - src/cairo-ft-font.c | 1 + - src/cairo-scaled-font.c | 10 +- - src/cairo-win32-font.c | 403 +++++++++++++++++++++++------------------ - src/cairoint.h | 12 ++ - test/cairo-test.c | 2 + - test/create-from-png-stream.c | 6 +- - test/nil-surface.c | 2 +- - 8 files changed, 277 insertions(+), 178 deletions(-) - -commit f25ebec368caa6b88d39a5c42cd48b8459396505 -Author: Carl Worth -Date: Wed Aug 31 16:17:28 2005 +0000 - - Add call to XSynchronize, (the expected clip-all failure isn't occuring without it for some reason). - Note reason for expected failure. - - ChangeLog | 8 ++++++++ - test/cairo-test.c | 2 ++ - test/clip-all.c | 3 ++- - 3 files changed, 12 insertions(+), 1 deletions(-) - -commit d56b0d1d80032a26501465106dc76abc713c77bf -Author: Owen Taylor -Date: Wed Aug 31 15:09:35 2005 +0000 - - Handle displays which don't match the local endianness by byteswapping on GetImage/PutImage. (#4321, reported by Sjoerd Simons) - - ChangeLog | 7 ++ - src/cairo-xlib-surface.c | 170 ++++++++++++++++++++++++++++++++++++++-------- - 2 files changed, 147 insertions(+), 30 deletions(-) - -commit b0c58593b30c1fa085b1e7c8e4897da623b8686d -Author: Keith Packard -Date: Wed Aug 31 15:08:02 2005 +0000 - - Split out scaled font code to cairo-scaled-font.c - Replace cairo cache implementation (this code from cworth) - No more global glyph cache to clean up - Store glyphs in new per-scaled font caches which hold user-space metrics and device space bounding boxes - Refactor glyph drawing APIs so that the surface API is invoked directly from the gstate code. - Add path creation/destruction routines (to hold glyph paths) - New implementation of scaled fonts which uses per-scaled_font caches for glyphs and keeps user-space metrics, device-space bboxes along with glyph images and/or glyph paths. - Adapt to new scaled font API changes. - New cache and scaled_font APIs - Repond to bug fix in metrics computation for glyphs where y values were rounded up instead of down because of a sign difference between cairo and FreeType. - Reviewed by: otaylor, cworth - - ChangeLog | 95 +++ - src/Makefile.am | 1 + - src/cairo-cache-private.h | 131 ++++ - src/cairo-cache.c | 660 +++++++------------ - src/cairo-debug.c | 1 - - src/cairo-font.c | 847 ------------------------ - src/cairo-ft-font.c | 1130 ++++++++++++--------------------- - src/cairo-gstate.c | 47 +- - src/cairo-path.c | 18 + - src/cairo-scaled-font.c | 1165 ++++++++++++++++++++++++++++++++++ - src/cairo-xlib-surface.c | 801 +++++++----------------- - src/cairoint.h | 391 +++++------- - test/clip-operator-ref.png | Bin 37330 -> 37134 bytes - test/operator-clear-ref.png | Bin 4988 -> 4971 bytes - test/operator-source-ref.png | Bin 19958 -> 19982 bytes - test/text-antialias-gray-ref.png | Bin 727 -> 740 bytes - test/text-antialias-gray.c | 2 +- - test/text-antialias-none-ref.png | Bin 278 -> 276 bytes - test/text-antialias-none.c | 2 +- - test/text-antialias-subpixel-ref.png | Bin 1081 -> 1121 bytes - test/text-antialias-subpixel.c | 2 +- - test/unbounded-operator-ref.png | Bin 11929 -> 11994 bytes - 22 files changed, 2460 insertions(+), 2833 deletions(-) - -commit 568ce860264e63f86ae45258eb106fb7a74a33a3 -Author: Carl Worth -Date: Wed Aug 31 14:43:31 2005 +0000 - - Increment CAIRO_VERSION to 1.1.1 after making branch tag BRANCH_1_0. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) - -commit 41c321fffaaa035b71aa8d149e748e1aae6d2317 -Author: Carl Worth -Date: Wed Aug 31 13:52:19 2005 +0000 - - Add note to use ./autogen.sh instead of ./configure when working with source from cvs. - - ChangeLog | 5 +++++ - INSTALL | 4 ++++ - 2 files changed, 9 insertions(+), 0 deletions(-) - -commit eb2316ecc7dfe2f7a87153c0094bda8754f6d36f -Author: Carl Worth -Date: Wed Aug 31 13:33:42 2005 +0000 - - Fix test to not try to set a non-invertible matrix. (We'd gotten away with this due to round-off error on many systems). Fixes one out of six failures in bug #4245. - - ChangeLog | 6 ++++++ - test/get-and-set.c | 4 ++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit 464c6dffcf251d4b0089e50b716979da5e3b9a5a -Author: Carl Worth -Date: Wed Aug 31 09:00:01 2005 +0000 - - Add Radek Doulík. - Add test exposing a BadValue (0-size pixmap) bug in cairo-xlib-surface when everything is clipped away (thanks to Radek Doulík ). - - AUTHORS | 1 + - ChangeLog | 10 +++++++ - test/.cvsignore | 1 + - test/Makefile.am | 4 +++ - test/clip-all-ref.png | Bin 0 -> 118 bytes - test/clip-all.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 85 insertions(+), 0 deletions(-) - -commit 44d6afc8a82c2ede19ccc1e27a123b241be6dc67 -Author: Owen Taylor -Date: Tue Aug 30 10:50:27 2005 +0000 - - Liberalize the ServerVendor check so that we can handle the Mandriva vendor string. (#4298, Frederic Crozat) - - ChangeLog | 6 ++++++ - src/cairo-xlib-surface.c | 2 +- - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit a4418a63d7b837f0f7c20f5ce6a0e8b31edd97d7 -Author: Owen Taylor -Date: Tue Aug 30 10:42:17 2005 +0000 - - Use a 8xN rather than a 1xN strip for a vertical gradient. This is much more tolerant of slow compositing code, and is worth some extra expense computing the gradient. (#4263, found in test case from Richard Stellingwerff) - - ChangeLog | 8 ++++++++ - src/cairo-pattern.c | 11 +++++++++-- - 2 files changed, 17 insertions(+), 2 deletions(-) - -commit 2120864edfb1bc51251dca3aeefbfadffb442ad0 -Author: Owen Taylor -Date: Sun Aug 28 12:52:10 2005 +0000 - - Use local labels rather than global labels in the assembly, to be robust if the code is inlined in multiple places. (#4283, Reported by Marco Manfredini) - - pixman/ChangeLog | 6 ++++++ - pixman/src/fbmmx.c | 8 ++++---- - 2 files changed, 10 insertions(+), 4 deletions(-) - -commit a83537fe02d29fc36a78be0f5599421edf75dc62 -Author: Billy Biggs -Date: Sat Aug 27 19:32:57 2005 +0000 - - Some fixes for warnings from sparse (Part of bug #4208, Kjartan Maraas) - Use NULL not 0. - - pixman/ChangeLog | 15 +++++++++++ - pixman/src/fbcompose.c | 66 ++++++++++++++++++++++++------------------------ - pixman/src/fbpict.c | 4 +- - pixman/src/icbltone.c | 6 ++-- - pixman/src/icimage.c | 10 +++--- - pixman/src/icrect.c | 2 +- - pixman/src/ictrap.c | 6 ++-- - 7 files changed, 62 insertions(+), 47 deletions(-) - -commit 96342fe7beee1d0c2084cb6e0f44969d5b05b100 -Author: Owen Taylor -Date: Sat Aug 27 18:54:03 2005 +0000 - - Make the check for rectangular trapezoids simpler and more accurate. (#4220, found using test case from Richard Stellingwerff) - reviewed by: cworth - - ChangeLog | 8 ++++++++ - src/cairo-traps.c | 16 +++++----------- - 2 files changed, 13 insertions(+), 11 deletions(-) - -commit 30e3d538dfbd763872117760ec473481e2c5926d -Author: Owen Taylor -Date: Sat Aug 27 18:49:06 2005 +0000 - - Make the vendor string check for XFree86 more liberal, to deal with older versions of gentoo that modified it in a different way. (#4231, fix from Billy Biggs) - - ChangeLog | 7 +++++++ - src/cairo-xlib-surface.c | 2 +- - 2 files changed, 8 insertions(+), 1 deletions(-) - -commit a6acc962f76c1eba9dec3ee1646413f6c82ac6e0 -Author: Owen Taylor -Date: Sat Aug 27 18:46:34 2005 +0000 - - Undef MIN/MAX before defining them in case some system header happens to define them. (#4196, Christian Biesinger) - - ChangeLog | 8 +++++++- - src/cairoint.h | 3 +++ - 2 files changed, 10 insertions(+), 1 deletions(-) - -commit 3c53414cf34d2027284bdbd4836d10a2c0d998c0 -Author: Owen Taylor -Date: Sat Aug 27 18:40:46 2005 +0000 - - Fix docs not to talk about %NULL returns. #4271, Duncan Coutts. - - ChangeLog | 6 ++++++ - src/cairo-image-surface.c | 18 ++++++++++++++---- - 2 files changed, 20 insertions(+), 4 deletions(-) - -commit c0da73e1b8e5933ca117512499ccac4e208bd8e0 -Author: Owen Taylor -Date: Sat Aug 27 18:36:09 2005 +0000 - - Make the code work with - -fomit-frame-pointer by making sure that %esp isn't modified at the point where we access output operands. (#4269, Patch from Ronald Wahl) - - pixman/ChangeLog | 7 +++++++ - pixman/src/fbmmx.c | 24 +++++++++++++++++------- - 2 files changed, 24 insertions(+), 7 deletions(-) - -commit 03c3935471ad69e8e2d0e6543b7667f972ef1f0c -Author: Tor Lillqvist -Date: Thu Aug 25 02:59:40 2005 +0000 - - Include the documentation, too. - - ChangeLog | 4 ++++ - Makefile.am | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 1f975f4e82f3090b5f677241c1ca4d344788d27c -Author: Billy Biggs -Date: Wed Aug 24 19:20:08 2005 +0000 - - Update formatting of the title and short description, as this actually changes how the TOC appears in devhelp. - - ChangeLog | 30 ++++++++++++++++++++++++++++++ - doc/public/tmpl/cairo-font-options.sgml | 6 ++---- - doc/public/tmpl/cairo-font.sgml | 6 ++---- - doc/public/tmpl/cairo-ft.sgml | 6 ++---- - doc/public/tmpl/cairo-glitz.sgml | 6 ++---- - doc/public/tmpl/cairo-image.sgml | 6 ++---- - doc/public/tmpl/cairo-matrix.sgml | 6 ++---- - doc/public/tmpl/cairo-paths.sgml | 6 ++---- - doc/public/tmpl/cairo-pattern.sgml | 6 ++---- - doc/public/tmpl/cairo-pdf.sgml | 6 ++---- - doc/public/tmpl/cairo-png.sgml | 6 ++---- - doc/public/tmpl/cairo-ps.sgml | 6 ++---- - doc/public/tmpl/cairo-quartz.sgml | 6 ++---- - doc/public/tmpl/cairo-scaled-font.sgml | 6 ++---- - doc/public/tmpl/cairo-status.sgml | 6 ++---- - doc/public/tmpl/cairo-surface.sgml | 6 ++---- - doc/public/tmpl/cairo-text.sgml | 6 ++---- - doc/public/tmpl/cairo-transforms.sgml | 6 ++---- - doc/public/tmpl/cairo-types.sgml | 6 ++---- - doc/public/tmpl/cairo-version.sgml | 6 ++---- - doc/public/tmpl/cairo-win32-fonts.sgml | 6 ++---- - doc/public/tmpl/cairo-win32.sgml | 6 ++---- - doc/public/tmpl/cairo-xcb-xrender.sgml | 6 ++---- - doc/public/tmpl/cairo-xcb.sgml | 6 ++---- - doc/public/tmpl/cairo-xlib.sgml | 6 ++---- - doc/public/tmpl/cairo.sgml | 6 ++---- - 26 files changed, 80 insertions(+), 100 deletions(-) - -commit 241a4eb8f76fcd1e6ca7db127410fcca8adf907e -Author: Bertram Felgenhauer -Date: Wed Aug 24 17:44:16 2005 +0000 - - add docs-publish as a phony target - - ChangeLog | 4 ++++ - Makefile.am | 2 +- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 0bcad6002a62cb5ba2eb733fe1863ac045db1c86 -Author: Carl Worth -Date: Wed Aug 24 10:16:14 2005 +0000 - - Increment CAIRO_VERSION to 1.0.1 after tagging RELEASE_1_0_0. - - ChangeLog | 5 +++++ - configure.in | 2 +- - 2 files changed, 6 insertions(+), 1 deletions(-) diff -Nru libgdiplus-4.0-2.10.9/cairo/ChangeLog.pre-1.4 libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.pre-1.4 --- libgdiplus-4.0-2.10.9/cairo/ChangeLog.pre-1.4 2012-01-31 17:28:35.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/ChangeLog.pre-1.4 1970-01-01 00:00:00.000000000 +0000 @@ -1,13225 +0,0 @@ -commit 5dfa8c23f13f5cafac5cf56f34888a6e01dc79ba -Author: Carl Worth -Date: Tue Mar 6 01:25:17 2007 -0800 - - NEWS: Note the x86 nature of the quoted performance results - - And mention that embedded systems often did even better. - - NEWS | 9 ++++++++- - 1 files changed, 8 insertions(+), 1 deletions(-) - -commit d7df4d4d4c52c0934bec0c8edad96bb2ea82dc04 -Author: Carl Worth -Date: Tue Mar 6 01:20:45 2007 -0800 - - Increment cairo version to 1.4.0 - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d0d2c4030741619accd1eb554531bb6a97dd7ae4 -Author: Carl Worth -Date: Tue Mar 6 01:20:03 2007 -0800 - - Clarify that extra elements in cairo_path_data is only available in cairo >= 1.4 - - src/cairo.h | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 0578929fa4add0cf366e200a5bd6b9f2dfcd0b79 -Author: Carl Worth -Date: Tue Mar 6 01:09:02 2007 -0800 - - NEWS: Add release notes for 1.4.0 release - - NEWS | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 250 insertions(+), 1 deletions(-) - -commit 66d1dc8b9c3d7c1e26321bdb621ef55779c2fd6d -Author: Carl Worth -Date: Mon Mar 5 23:55:05 2007 -0800 - - Update AUTHORS with 47 (!) new authors since 1.0 - - AUTHORS | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 47 insertions(+), 5 deletions(-) - -commit 2f4ddc85a50641a7f6e1f467fa94610875f8ed02 -Author: Carl Worth -Date: Mon Mar 5 22:48:27 2007 -0800 - - Mark 5 tests that are currently failing as XFAIL (that is, not to be fixed before 1.4) - - The 5 additional bugs that will be shipped with 1.4 are - - ft-text-vertical-layout-type1 - radial-gradient - surface-pattern - surface-pattern-scale-down - surface-pattern-scale-up - - Most of these are non-issues, (unbundled font for - ft-text-vertical-layout-type1), or very minor issues (radial-gradient - and surface-pattern). The only things in here that look like a real - bug are the surface-pattern-scale-down and surface-pattern-scale-up - tests where the xlib backend results have some non-1.0 alpha that is - very unexpected. - - test/Makefile.am | 5 +++++ - test/radial-gradient.c | 3 ++- - test/surface-pattern-scale-down.c | 3 ++- - test/surface-pattern-scale-up.c | 3 ++- - test/surface-pattern.c | 3 ++- - 5 files changed, 13 insertions(+), 4 deletions(-) - -commit aa883123d2af905c846a8c0a67ff63fa6b16cd2b -Author: Carl Worth -Date: Mon Mar 5 16:48:05 2007 -0800 - - Optimize filling of a path that is a single device-axis-aligned rectangle. - - It turns out that this case is extremely common and worth avoiding - the overhead of the path iteration and tessellation code. - - The optimization here works only for device-axis-aligned rectangles - It should be possible to generalize this to catch more cases, (such - as any convex quadrilateral with 4 or fewer points). - - This fix results in a 1.4-1.8x speedup for the rectangles perf case: - - image-rgb rectangles-512 7.80 1.22% -> 4.35 1.62%: 1.79x speedup - â–Š - image-rgba rectangles-512 7.71 4.77% -> 4.37 0.30%: 1.77x speedup - â–Š - xlib-rgba rectangles-512 8.78 5.02% -> 5.58 5.54%: 1.57x speedup - â–‹ - xlib-rgb rectangles-512 11.87 2.71% -> 8.75 0.08%: 1.36x speedup - â– - - Which conveniently overcomes the ~ 1.3x slowdown we had been seeing - for this case since 1.2. Now, compared to 1.2.6 we see only a speedup: - - image-rgba rectangles-512 6.19 0.29% -> 4.37 0.30%: 1.42x speedup - â–Ž - image-rgb rectangles-512 6.12 1.68% -> 4.35 1.62%: 1.41x speedup - â–Ž - xlib-rgba rectangles-512 7.48 1.07% -> 5.58 5.54%: 1.34x speedup - â– - xlib-rgb rectangles-512 10.35 1.03% -> 8.75 0.08%: 1.18x speedup - â– - - src/cairo-path-fill.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 93 insertions(+), 0 deletions(-) - -commit e15bb8efe62a4d2ffd1df31b092ca1fdd2743e43 -Author: Brian Ewins -Date: Tue Mar 6 00:40:56 2007 +0000 - - [quartz] remove unnecessary flushes - - Removing calls to CGContextFlush; these were slowing down the - mac and on other platforms it is up to the client to flush - the surface. - - src/cairo-quartz-surface.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit 393908c34dbf2484b811b84581984563a7115e38 -Author: Behdad Esfahbod -Date: Mon Mar 5 19:22:41 2007 -0500 - - [test] Modify extend-reflect to need a smaller reference image - - test/extend-reflect-ref.png | Bin 589279 -> 153571 bytes - test/extend-reflect.c | 17 ++++++----------- - 2 files changed, 6 insertions(+), 11 deletions(-) - -commit 4716ed760c1cc8095587af130964fbc3432ed14d -Author: Behdad Esfahbod -Date: Mon Mar 5 19:15:35 2007 -0500 - - [test] Remove some ref images from random-intersections - - Each one is larger than 100kb, so paint background black to reuse - same ref image for rgb24 and argb32 cases. Also remove Quartz ref - images for now. - - test/Makefile.am | 3 --- - test/random-intersections-ps-argb32-ref.png | Bin 107578 -> 89416 bytes - test/random-intersections-quartz-ref.png | Bin 203877 -> 0 bytes - test/random-intersections-quartz-rgb24-ref.png | Bin 179204 -> 0 bytes - test/random-intersections-ref.png | Bin 177153 -> 132210 bytes - test/random-intersections-rgb24-ref.png | Bin 132210 -> 0 bytes - test/random-intersections.c | 4 ++++ - 7 files changed, 4 insertions(+), 3 deletions(-) - -commit feba319413bde73f8c1454fc0f3a1b3af03dfde4 -Author: Behdad Esfahbod -Date: Mon Mar 5 19:02:59 2007 -0500 - - [test] Remove unused variable - - test/clip-operator.c | 2 -- - test/operator-clear.c | 2 -- - test/operator-source.c | 2 -- - 3 files changed, 0 insertions(+), 6 deletions(-) - -commit e1a598211b1944bad6b32148da052208d9b58093 -Author: Emmanuel Pacaud -Date: Mon Mar 5 16:03:40 2007 -0800 - - Use the offset attribute to improve cairo-svg handling of EXTEND_REPEAT and EXTEND_REFLECT - - With this change, the cairo-svg output is perfectly fine with - CAIRO_EXTEND_REPEAT, but is still very slightly wrong with - CAIRO_EXTEND_REFLECT, (though *much* better than it was before - this fix). - - src/cairo-svg-surface.c | 30 +++++++++++++++++++++++------- - 1 files changed, 23 insertions(+), 7 deletions(-) - -commit 47f2bf4e28b80102f10505916be2bf4c01ce9354 -Author: Emmanuel Pacaud -Date: Mon Mar 5 15:57:28 2007 -0800 - - Remove broken special-casing of radial gradient fx,fy under CAIRO_EXTEND_NONE - - Carl can't explain why he added this special-case, and removing it - eliminates one failure case from the radial-gradient test matrix. - - src/cairo-svg-surface.c | 9 ++------- - 1 files changed, 2 insertions(+), 7 deletions(-) - -commit a724f816e17bfe3d9abefb1f6dcfe30480a0d143 -Author: Brian Ewins -Date: Mon Mar 5 23:19:24 2007 +0000 - - [quartz,atsui] separate the quartz surface and atsui font backend - - Make it possible to use the --enable-quartz and --enable-atsui - independently. Quartz on its own will use the ft font backend. - - configure.in | 17 +++++++---------- - src/cairo-atsui-font.c | 12 ++++++------ - src/cairo-quartz-private.h | 8 +++++--- - src/cairo-quartz-surface.c | 8 +++++++- - 4 files changed, 25 insertions(+), 20 deletions(-) - -commit 83fcce0e93071cffe20377ab3fe6281204b2f80d -Author: Behdad Esfahbod -Date: Mon Mar 5 17:56:57 2007 -0500 - - [quartz] Make utility functions static - - src/cairo-quartz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d25548d679b8a7fce12c9a55e728539e408c75a1 -Author: Behdad Esfahbod -Date: Mon Mar 5 17:11:39 2007 -0500 - - In cairo_append_path(), allow excess path_data elements - - src/cairo-path.c | 8 ++++---- - src/cairo.h | 11 +++++++++-- - 2 files changed, 13 insertions(+), 6 deletions(-) - -commit 3ab9ca54aa490438dbbfae7b5f1cde0bd98352cd -Author: Behdad Esfahbod -Date: Mon Mar 5 16:33:46 2007 -0500 - - In cairo_text_path(), bail out if zero glyphs - - src/cairo.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -commit 4f138e4af56da60a83fd187f87cde19544ba3ab1 -Author: Behdad Esfahbod -Date: Mon Mar 5 16:28:31 2007 -0500 - - Uniform object handling in _reference(), _destroy(), and _get_reference_count() - - All three now regard NULL and nil inputs the same. This is new for - _get_reference_count(). It now returns 0 on NULL too, like it does on - nil objects. - - src/cairo-font.c | 12 +++--------- - src/cairo-pattern.c | 12 +++--------- - src/cairo-scaled-font.c | 12 +++--------- - src/cairo-surface.c | 12 +++--------- - src/cairo.c | 12 +++--------- - 5 files changed, 15 insertions(+), 45 deletions(-) - -commit cc12c5acc41f452edff3f4ad8fafe1aebf1810aa -Author: Behdad Esfahbod -Date: Mon Mar 5 16:19:28 2007 -0500 - - Make cairo_text_path() set current point correctly - - This fixes the bitmap-text test that I just made reveal a bug. - - src/cairo.c | 38 +++++++++++++++++++++++++++++++++----- - 1 files changed, 33 insertions(+), 5 deletions(-) - -commit b63f5ae58f6617b9a2c9f3434bc1c9f3c72612ac -Author: Behdad Esfahbod -Date: Mon Mar 5 16:15:09 2007 -0500 - - [test] In the bitmap-font test, break cairo_text_path() call into two - such that it checks current-point handling after that call. It fails now, - because cairo_text_path does not set current-point explicitly. - - test/bitmap-font.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit a487d094212d6bc4a06d5bfc774ba6d575165aa5 -Author: Behdad Esfahbod -Date: Mon Mar 5 15:59:43 2007 -0500 - - Rename all mutex variables to start with an underscore - since they are not static in some of the implementations (win32, ...) - - src/cairo-beos-surface.cpp | 12 ++++++------ - src/cairo-font.c | 24 ++++++++++++------------ - src/cairo-ft-font.c | 12 ++++++------ - src/cairo-os2-surface.c | 30 +++++++++++++++--------------- - src/cairo-scaled-font.c | 12 ++++++------ - src/cairo-win32-surface.c | 18 +++++++++--------- - src/cairoint.h | 2 +- - 7 files changed, 55 insertions(+), 55 deletions(-) - -commit c8b84a4735c46a33620260de0618296df1e12574 -Author: Behdad Esfahbod -Date: Mon Mar 5 15:46:19 2007 -0500 - - [beos] Update mutex initializers - - This should be the last one. We are going to move to a central - mutex initialization scheme right after 1.4.0 is out. - - src/cairo-beos-surface.cpp | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit b8e2888fbed2aefa368d9bab4010c1e807d6389f -Author: Behdad Esfahbod -Date: Mon Mar 5 15:45:45 2007 -0500 - - [OS2] Add mutex initializer for cairo_font_face_mutex - - src/cairo-os2-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 403b4b7c163e78446035ec5144ad9e3674577d5d -Author: Behdad Esfahbod -Date: Mon Mar 5 15:39:09 2007 -0500 - - [OS2] Remove unused mutex cairo_toy_font_face_hash_table_mutex - - src/cairo-os2-surface.c | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit 6358ec539df67ec7725b0687c16f2175386f1b0b -Author: Behdad Esfahbod -Date: Mon Mar 5 15:38:52 2007 -0500 - - [WIN32] Make cairo_ft_unscaled_font_map_mutex initialization conditional of ft - - src/cairo-win32-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 972f7d9fc8d40fb5c698e1a94fba4f28600b215d -Author: Behdad Esfahbod -Date: Mon Mar 5 15:36:51 2007 -0500 - - [WIN32] Remove unused mutex cairo_toy_font_face_hash_table_mutex - - src/cairo-win32-surface.c | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -commit 0cdb96544eda163de050c65f7e7cd413b21f61cc -Author: Behdad Esfahbod -Date: Mon Mar 5 15:10:35 2007 -0500 - - [SVG] Cast -1 values to unsigned to indicate we really did mean to type them - - src/cairo-svg-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bbc341614455b22210c818eca01cf4618989565c -Author: Behdad Esfahbod -Date: Mon Mar 5 14:51:25 2007 -0500 - - [ROADMAP] Remove 1.3.14 items, add 1.4.2 ones - - ROADMAP | 20 +++++++++++++------- - 1 files changed, 13 insertions(+), 7 deletions(-) - -commit d6ac9b47704d671c192da509571b3721756c1347 -Author: Dave Yeo -Date: Mon Mar 5 13:36:32 2007 -0500 - - [test] Fix build on Win32 - - test/Makefile.am | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit ffa86b17abbaa2190a4d7eadcc555aac6770bd6c -Author: Mathias Hasselmann -Date: Sun Mar 4 16:39:00 2007 -0500 - - [test/pdiff] Fix build problem with certain flavors of make - - test/pdiff/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 325e75239098e640ed05ade39ec2b9f74ae30d3d -Author: Hans Breuer -Date: Sat Mar 3 22:50:16 2007 -0800 - - Fix mutex initialization for win32 (missing cairo_font_face_mutex) - - We've currently got a problem where it's easy to add a mutex - for a POSIX system and easy to forget to add its intialization - for other systems. Behdad has cooked up a plan for fixing this - properly: - - http://lists.freedesktop.org/archives/cairo/2007-February/009679.html - - In the meantime, we'll just kkeping breaking things, and patches - like this will be needed to fix up our mistakes. - - This fix closes the following bug report: - - cairo_font_face_mutex missing from cairo-win32-surface.c - https://bugs.freedesktop.org/show_bug.cgi?id=10175 - - src/cairo-win32-surface.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 5f2b5f1f92d74fbc2d8f97fb547e160e370d4c40 -Author: Brian Ewins -Date: Sun Mar 4 03:01:22 2007 +0000 - - [configure.in] --enable-quartz should require atsui and no xlib - - Recent changes have made quartz and atsui interdependent. It is also - no longer possible to build quartz with xlib enabled due to a redefinition - of the 'Picture' symbol. This change makes '--enable-atsui' unnecessary - and refuses to switch on quartz when it cannot be built because xlib - is enabled. - - configure.in | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit 1720d0b9508b70ac0c5f2436c3b80a2ab801f138 -Author: Behdad Esfahbod -Date: Sat Mar 3 15:42:09 2007 -0500 - - [Makefile.am] --enable-test-surfaces in distcheck - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 79acd268d9ac91f0e9f03467b220241cda3457a5 -Author: Behdad Esfahbod -Date: Sat Mar 3 15:41:32 2007 -0500 - - [Makefile.am] Remove releasing instructions that are in RELEASING already - - Makefile.am | 15 ++------------- - 1 files changed, 2 insertions(+), 13 deletions(-) - -commit f9f71457a5d1e002f7f6b08232892ba61fef8ead -Author: Behdad Esfahbod -Date: Sat Mar 3 15:37:45 2007 -0500 - - [RELEASING] Update announcement mail instructions - - RELEASING | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit 454c6a62a93d4d9e933a4e401997a16f1b0a569b -Author: Behdad Esfahbod -Date: Sat Mar 3 15:35:25 2007 -0500 - - [RELEASING] Note that two versions should be added to bugzilla - - RELEASING | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 57e1b6fa98d688b72dd3617e8313ea35f8ce78e1 -Author: Behdad Esfahbod -Date: Sat Mar 3 15:34:19 2007 -0500 - - [RELEASING] Reorder pushing tag and commits - - We should push the tag only after pushing the actually release commit. - - RELEASING | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 052acc95e9c354981eea0968c5727e4a0568a959 -Author: Behdad Esfahbod -Date: Sat Mar 3 15:32:42 2007 -0500 - - [RELEASING] Fix git-tag invocation - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9f0a1648b7886714e5c742119083414fcc92dc82 -Author: Behdad Esfahbod -Date: Sat Mar 3 00:22:53 2007 -0500 - - [configure.in] Increase version to 1.3.17 post-release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b3e1fd8c1cbfc4db88bec4bb52821ed9380dbb4f -Author: Behdad Esfahbod -Date: Sat Mar 3 00:07:34 2007 -0500 - - [configure.in] Increase version to 1.3.16 in preparation for release - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit c6541b9ac23bcd88202049960ee5a7503a4f0449 -Author: Behdad Esfahbod -Date: Sat Mar 3 00:07:03 2007 -0500 - - [RELEASING] Add note about ChangeLog sanity - - RELEASING | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 9aecd7c815b81b61ff408d51bdf8e1c6663a3954 -Author: Behdad Esfahbod -Date: Sat Mar 3 00:05:40 2007 -0500 - - [test] Include romedalen.png in dist, oops - - test/Makefile.am | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 2f497c25f98cdb4be60b7391a672280ae09f1d67 -Author: Behdad Esfahbod -Date: Fri Mar 2 23:59:55 2007 -0500 - - [Makefile.am] Check for ChangeLog sanity in release-publish - - Makefile.am | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit eb8214c9602319d716b8cd39a1c5dd1dd278b96e -Author: Behdad Esfahbod -Date: Fri Mar 2 23:49:27 2007 -0500 - - [ChangeLog.mk] Adapt to latest git-describe output format - - ChangeLog.mk | 9 +++------ - 1 files changed, 3 insertions(+), 6 deletions(-) - -commit 8a69a327952173a714dfbe1e8967ebb7bdbbacbd -Author: Behdad Esfahbod -Date: Fri Mar 2 23:21:39 2007 -0500 - - [test] Update list of refrerence images - - test/Makefile.am | 392 ++++++++++++++++++++++++++++++------------------------ - 1 files changed, 216 insertions(+), 176 deletions(-) - -commit 55d480612754dca652b5324d815e0429c745fec3 -Author: Behdad Esfahbod -Date: Fri Mar 2 22:52:38 2007 -0500 - - [NEWS] Add note about documentation improvements - - NEWS | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 77b27fd06b9f0e7ff5dedd4b41327e456d33e3cf -Author: Behdad Esfahbod -Date: Fri Mar 2 22:45:50 2007 -0500 - - [doc] Update templates - - doc/public/tmpl/cairo-font.sgml | 33 +++++++++----- - doc/public/tmpl/cairo-pattern.sgml | 37 +++++++++++++++- - doc/public/tmpl/cairo-scaled-font.sgml | 31 +++++++++++++ - doc/public/tmpl/cairo-surface.sgml | 74 +++++++++++++++++-------------- - doc/public/tmpl/cairo-text.sgml | 33 +++++++++----- - doc/public/tmpl/cairo.sgml | 40 +++++++++++++++++ - 6 files changed, 188 insertions(+), 60 deletions(-) - -commit 1082fed6929a696455f27821819c6af4f575156d -Author: Behdad Esfahbod -Date: Fri Mar 2 22:42:17 2007 -0500 - - [doc] Docuemnt all symbols but cairo_filter_t and cairo_operator_t - - Lets see if this is enough to push Carl Worth document those two. - - src/cairo-font.c | 5 ++- - src/cairo-pattern.c | 3 ++ - src/cairo-scaled-font.c | 3 ++ - src/cairo-surface.c | 3 ++ - src/cairo.c | 3 ++ - src/cairo.h | 74 +++++++++++++++++++++++++++++++++++++++++++++- - 6 files changed, 88 insertions(+), 3 deletions(-) - -commit e37b6ca3e2c55256debf1fdfde83934fa9b28c1d -Author: Behdad Esfahbod -Date: Fri Mar 2 22:03:27 2007 -0500 - - Beautify cairo.h - - src/cairo.h | 42 +++++++++++++++++++++--------------------- - 1 files changed, 21 insertions(+), 21 deletions(-) - -commit 9be961eb0c8c85b04287a5b85f7fd72dac160949 -Author: Behdad Esfahbod -Date: Fri Mar 2 22:01:15 2007 -0500 - - [doc] Some documentation love - - src/cairo-font.c | 2 +- - src/cairo-pattern.c | 19 +++++++++++ - src/cairo-surface.c | 6 ++- - src/cairo-win32-font.c | 24 +++++++++++++- - src/cairo-win32-surface.c | 1 + - src/cairo.c | 76 ++++++++++++++++++++++++++++++++++++++++----- - src/cairo.h | 40 +++++++++++++++++++++++- - 7 files changed, 154 insertions(+), 14 deletions(-) - -commit 8a6308e1448f402bd4f32b18ba2c60a4bcdbbe6f -Author: Behdad Esfahbod -Date: Fri Mar 2 22:00:25 2007 -0500 - - [doc] Update list of header files to ignore - - doc/public/Headers.mk | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fed13e77e1de071ddaaf829aced10b02f6bc8c90 -Author: Behdad Esfahbod -Date: Fri Mar 2 16:49:47 2007 -0500 - - [NEWS] Fix typos - - NEWS | 14 ++++++-------- - 1 files changed, 6 insertions(+), 8 deletions(-) - -commit ab1887f4b08784789f39396b3012dffede845466 -Author: Vladimir Vukicevic -Date: Fri Mar 2 13:30:31 2007 -0800 - - [quartz] Bug 3939 - Fix Quartz backend endianness problem - - Add kCGBitmapByteOrder32Host to CGImageCreate call in release_dest_image - of Quartz surface. - - src/cairo-quartz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2640aa7e99453f17e9a2cb9084e0760d767cfeab -Author: Carl Worth -Date: Fri Mar 2 13:18:11 2007 -0800 - - Add notes for 1.3.16 - - Now, maybe we won't actually make a 1.3.16 snapshot, but these are all - the things that will be new in 1.4.0 compared to 1.3.14. - - NEWS | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 139 insertions(+), 0 deletions(-) - -commit a0bc2ada784f24ca784617ac18b470745e8152c0 -Author: Behdad Esfahbod -Date: Fri Mar 2 15:45:02 2007 -0500 - - [test] Support passing extra valgrind flags - using EXTRA_VALGRIND_FLAGS make variable or CAIRO_EXTRA_VALGRIND_FLAGS - env variable. - - test/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit cd43c03d162efc87a1845c7ffbadfab00ac23d1f -Author: Carl Worth -Date: Fri Mar 2 12:30:53 2007 -0800 - - Fix leak of an output stream in cairo_type1_font_destroy - - src/cairo-type1-fallback.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 8c579ef8354720c06db702db1e6e2aaab0efed82 -Author: Carl Worth -Date: Fri Mar 2 12:30:14 2007 -0800 - - More tightening of test cleanup to avoid valgrind complaints. - - test/cairo-test.c | 8 ++++---- - test/fallback-resolution.c | 2 ++ - test/font-face-get-type.c | 2 ++ - test/pdf-features.c | 9 +-------- - test/ps-features.c | 9 +-------- - test/pthread-show-text.c | 8 +------- - 6 files changed, 11 insertions(+), 27 deletions(-) - -commit 9854d01a8d3a1f9f6148dfd6e22623c4586aaa96 -Author: Carl Worth -Date: Fri Mar 2 11:32:47 2007 -0800 - - Fix leak in pattern-getters test (missing cairo_pattern_destroy) - - test/pattern-getters.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b52dda62fea0745cc28d6149dc4688ade524b4df -Author: Carl Worth -Date: Fri Mar 2 11:31:13 2007 -0800 - - Augment cairo_test_init with cairo_test_fini to avoid leak - - Without this, any tests that were using cairo_test_init rather than - cairo_test would end up leaking a FILE* for the log file. So this - keeps valgrind much more happy with the test suite. - - test/cairo-test.c | 8 +++++++- - test/cairo-test.h | 14 +++++++++----- - test/copy-path.c | 2 ++ - test/create-for-stream.c | 2 ++ - test/in-fill-empty-trapezoid.c | 2 ++ - test/multi-page.c | 2 ++ - test/pattern-get-type.c | 2 ++ - test/svg-clip.c | 2 ++ - test/svg-surface.c | 2 ++ - test/truetype-tables.c | 2 ++ - test/xlib-surface.c | 32 +++++++++++++------------------- - 11 files changed, 45 insertions(+), 25 deletions(-) - -commit 7d6e21c7e298e1795f36fdf021d61ef4ed0ca0fa -Author: Carl Worth -Date: Fri Mar 2 11:29:40 2007 -0800 - - Add even more XrmGetFileDatabase leaks to the valgrind suppressions file - - test/.valgrind-suppressions | 24 ++++++++++++++++++++++++ - 1 files changed, 24 insertions(+), 0 deletions(-) - -commit e054314e5ec1f3fbdc97ed2175dd3d26d7581a5f -Author: Carl Worth -Date: Fri Mar 2 09:34:46 2007 -0800 - - Add a couple of missing test cases to .gitignore - - test/.gitignore | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 02f2ece88dbceaf2466bd61410dd8e88a4c95e08 -Author: Carl Worth -Date: Fri Mar 2 09:32:14 2007 -0800 - - Fix leak in pdiff lpyramid - - This was a leak in the test suite only, (and then only when tests failed). - - test/pdiff/lpyramid.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6da7f140334835be9a972db75de78d99b8bd24b1 -Author: Carl Worth -Date: Fri Mar 2 03:49:11 2007 -0800 - - Fix INVALID_RESTORE case to avoid crashes - - Previously, an INVALID_RESTORE error would leave cr->gstate as NULL, - (which is generally impossible/invalid). This seems safe enough as - most cairo functions check cr->status first and bail if anything - looks fishy. - - However, the many cairo_get functions happily march along in spite - of any current error. We could instrument all of those functions to - check for the error status and return some dummy value in that case. - But it's much easier to get the same basic effect by simply creating - a non-NULL cr->gstate which will hold all those dummy values, and - we can eliminate the crashes without having to touch up every - cairo_get function. - - This fixes the bug reported here: - - evolution crash to _cairo_gstate_backend_to_user() - https://bugs.freedesktop.org/show_bug.cgi?id=9906 - - It also eliminates the crash that was added to the nil-surface test - with the previous commit. - - src/cairo.c | 10 +++++++++- - 1 files changed, 9 insertions(+), 1 deletions(-) - -commit 36590fd4702cc24acacd20e4394c902e44be46c6 -Author: Carl Worth -Date: Fri Mar 2 03:43:46 2007 -0800 - - Add test of cairo_get_* after INVALID_RESTORE to nil-surface - - This new test demonstrates a crash condition as reported here: - - evolution crash to _cairo_gstate_backend_to_user() - https://bugs.freedesktop.org/show_bug.cgi?id=9906 - - test/nil-surface.c | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit 712447856dc5cf559fcdbceaf902a39fd5eddef9 -Author: Carl Worth -Date: Fri Mar 2 03:15:35 2007 -0800 - - Fix yet another backend (quartz) for the gradient renaming - - So it looks like it took us three commits before we finally got - all of the users of inner/outer switched to c1/c2. Hopefully - someday we'll have the compiler passing over all of cairo's - source code even if the backends aren't available to be run - on a particular system. - - src/cairo-quartz-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 4e0f0d9425e2677e75681b2416e7ee4c4e87440c -Author: Carl Worth -Date: Fri Mar 2 03:11:10 2007 -0800 - - Don't crash if backend->create_similar returns a nil surface - - This fixes the bug reported here: - - cairo crashes in cairo_create_simular if nil surface returned by other->backend->create_similar - https://bugs.freedesktop.org/show_bug.cgi?id=9844 - - src/cairo-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit b0c086fce45a72ea3bf0052641de63bf08e5e5d5 -Author: Carl Worth -Date: Fri Mar 2 02:51:53 2007 -0800 - - Update documentation for cairo_get_scaled_font and cairo_get_font_face - - There was some leftover cut-and-paste description of get_font_face - in the documentation for get_scaled_font. That turned out to be a - good thing as it alerted me to the fact that the get_font_face - documentation was stale as well. - - Add description of the 'nil' object return values, rather than NULL. - - src/cairo.c | 32 +++++++++++++++++++++++--------- - 1 files changed, 23 insertions(+), 9 deletions(-) - -commit 5f386bb15a234983090beb4f85dfee200dac1b4b -Author: Jeff Muizelaar -Date: Wed Feb 28 13:37:21 2007 -0500 - - Use a closed interval when eliminating outliers from performance measurements - - When choosing the samples that are not outliers we use a half-open interval - (outlier_min <= x < outlier_max). This causes all of the samples to be - discarded when the interquartile range is 0 because none of them are less - than outlier_max. Fix the problem and make the test more consistent by - using a closed interval (outliner_min <= x <= outlier_max). - - perf/cairo-stats.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d48f31370172cddb85ae17a12faed2abf651ee83 -Author: Jinghua Luo -Date: Fri Mar 2 18:37:06 2007 +0800 - - glitz: fix build error. - - Rename radial gradient inner/outer to c1/c2. - - src/cairo-glitz-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit c12a4571affe9fdd2bb4620c448aded43584bb54 -Author: Carl Worth -Date: Fri Mar 2 00:37:21 2007 -0800 - - Cast -1 values to unsigned to quiet the compiler. - - Marking the magic values to indicate we really did mean to type them. - - src/cairo-pattern.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 3685a66b5b9cb0af10b44985dc1e9ef1c82ad77b -Author: Carl Worth -Date: Fri Mar 2 00:22:57 2007 -0800 - - Cast away a const to quiet a compiler warning. - - src/cairo-ps-surface.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit d48bb4fbe876a93199ba48fcf5f32734fbe18ba9 -Author: Carl Worth -Date: Thu Mar 1 23:34:34 2007 -0800 - - Implement CAIRO_MUTEX_INIT with memcpy instead of pthread_mutex_init - - The trick here is that with the weak symbol support for pthreads, - pthread_mutex_init can be a NOP leaving the mutex uninitialized. - Then, if some pthread-using library is dynamically loaded, the - non-NOP pthread functions get used and we end up trying to lock - an uninitialized mutex. - - This should fix the bugs reported here: - - Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or _cairo_ft_unscaled_font_lock_face - https://bugs.freedesktop.org/show_bug.cgi?id=10035 - - src/cairoint.h | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit df2d42ac7fb71997abd406fb5716c0bd85037c04 -Merge: ec11ca3... 97dbbae... -Author: Carl Worth -Date: Thu Mar 1 17:08:03 2007 -0800 - - Merge branch 'radial-gradient-fixes' into cairo - -commit ec11ca33a7ebcc752218e63c57f861de6e23a86a -Author: Behdad Esfahbod -Date: Thu Mar 1 19:14:40 2007 -0500 - - [PS/PDF] Mark CAIRO_EXTEND_PAD for surface patterns as natively supported - since the image surface does not implement that case either, so image - fallbacks have no benefit. - - src/cairo-pdf-surface.c | 12 +++++++----- - src/cairo-ps-surface.c | 12 +++++++----- - 2 files changed, 14 insertions(+), 10 deletions(-) - -commit 4ee6cda6e5e69361d3ca247322c92d0ae30e0458 -Author: Behdad Esfahbod -Date: Thu Mar 1 19:13:19 2007 -0500 - - [test] Move .la dependencies around - - test/Makefile.am | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit ff06ea1abf2dcfe28a4c1f192782bc85aebfdd92 -Author: Behdad Esfahbod -Date: Thu Mar 1 19:12:58 2007 -0500 - - [boilerplate] Add correct dependency on libcairo.la - - boilerplate/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 4b1f450f4cf056b4cc28502dcf72eaf54f257c3a -Author: Behdad Esfahbod -Date: Thu Mar 1 18:36:27 2007 -0500 - - [test] Add more valgrind suppressions - - test/.valgrind-suppressions | 19 +++++++++++++++++++ - 1 files changed, 19 insertions(+), 0 deletions(-) - -commit dcdcb7ac2acf39c54da855b6a2af4d02a7165a24 -Author: Behdad Esfahbod -Date: Thu Mar 1 18:36:16 2007 -0500 - - Fix leak in rectilinear stroking code - - The code was not cleaning up after itself when rejecting a path as - rectilinear. - - src/cairo-path-stroke.c | 15 ++++++++------- - 1 files changed, 8 insertions(+), 7 deletions(-) - -commit 2acd5b52774e2324df3e6b5b07a0d2790df3a60b -Author: Behdad Esfahbod -Date: Thu Mar 1 18:34:53 2007 -0500 - - [test] Add leak-revealing path to rectilinear-stroke - - Based on this thread: - http://lists.freedesktop.org/archives/cairo/2007-March/009860.html - - test/rectilinear-stroke.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 97dbbae62182c2e40f5f98278e08c92e14b92731 -Author: Carl Worth -Date: Thu Mar 1 15:17:19 2007 -0800 - - SVG: Support CAIRO_EXTEND_NONE for radial gradients. - - This is as simple as adding transparent color stops on either end. - - src/cairo-svg-surface.c | 31 +++++++++++++++++++++++++++---- - 1 files changed, 27 insertions(+), 4 deletions(-) - -commit bd2cd2c868864d5ec2a2c2e4bf16ff406be8afe2 -Author: Behdad Esfahbod -Date: Thu Mar 1 18:14:33 2007 -0500 - - [test] Plug a leak in the test suite - - test/buffer-diff.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 7de96a1faabfc2aa84dac38f5b63c2ba3538bb3c -Author: Behdad Esfahbod -Date: Thu Mar 1 18:00:23 2007 -0500 - - [xlib] Drop XrmFinalize() stuff. That didn't ever exist in any public X server - - configure.in | 4 ---- - src/cairo-xlib-screen.c | 5 ----- - 2 files changed, 0 insertions(+), 9 deletions(-) - -commit fe68e8aa32cc5a9f4d9f9302644ca66d8b691d65 -Author: Carl Worth -Date: Wed Feb 28 00:41:47 2007 -0800 - - Fix gradient walker to not reset needlessly - - Previously the gradient walker was doing excessive resets, (such - as on every pixel in constant-colored regions or outside the - gradient with CAIRO_EXTEND_NONE). Don't do that. - - pixman/src/fbcompose.c | 17 ++++++++++------- - 1 files changed, 10 insertions(+), 7 deletions(-) - -commit 9a5dfe1415dce9d726c93cd08c532f26512a70ee -Author: Carl Worth -Date: Thu Mar 1 14:53:48 2007 -0800 - - Fix implementation of radial gradients for inner radius != 0 - - The previous implementation fell apart quite badly when neither radius - value was equal to 0.0. I derived the math from scratch, (much thanks to - Vincent Torri for guiding me to a simpler derivation - than I was doing originally), and it's working much better now without - being any slower, (in fact, cairo-perf shows speedup of 1.05x to 1.58x on - my laptop here). - - This work also provides groundwork for defining the behavior of radial - gradients where neither circle is wholly contained within the other, (though - we haven't done that definition yet---it will require a new test case and a - very little bit of work on the implementation). - - This is a fix for the following bug report: - - Radial Gradients with nonzero inner radius misplace stops - https://bugs.freedesktop.org/show_bug.cgi?id=7685 - - pixman/src/fbcompose.c | 196 ++++++++++++++++++++++++++++++++++++----------- - pixman/src/icimage.c | 22 ++---- - pixman/src/icimage.h | 13 ++-- - pixman/src/icint.h | 1 + - 4 files changed, 165 insertions(+), 67 deletions(-) - -commit 0439f4c4f7e7374b4f9699f664fc0e157628b190 -Author: Carl Worth -Date: Sun Feb 25 16:01:10 2007 +0100 - - Rename radial gradient inner/outer to c1/c2 - - The inner/outer names were totally bogus. It is quite - legitimate to have the first circle's radius be larger than - that of the second. - - pixman/src/icimage.c | 12 ++++++------ - pixman/src/pixman.h | 4 ++-- - src/cairo-pattern.c | 36 ++++++++++++++++++------------------ - src/cairo-pdf-surface.c | 12 ++++++------ - src/cairo-svg-surface.c | 12 ++++++------ - 5 files changed, 38 insertions(+), 38 deletions(-) - -commit d65455ed3800f9ec3115bbed96a5b2328ee60b57 -Author: Carl Worth -Date: Fri Feb 23 07:12:03 2007 +0100 - - Add radial-gradient test case - - Embarrassingly enough, the test suite previously never called - into cairo_pattern_create_radial at all. Unsurprisingly, this - has led to bugs creeping into the radial gradient implementation. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/radial-gradient-ref.png | Bin 0 -> 91159 bytes - test/radial-gradient.c | 110 ++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 112 insertions(+), 0 deletions(-) - -commit 17f6174bb2b877447e524715792c7adc84fb25e4 -Author: Behdad Esfahbod -Date: Thu Mar 1 13:50:23 2007 -0500 - - [TODO] Add cairo_surface_copy_page() - - TODO | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit c9ddb86e67154624f08a30599ba6f8d77f731b3a -Author: Behdad Esfahbod -Date: Thu Mar 1 13:49:13 2007 -0500 - - [paginated] Also increase page number in copy_page - - src/cairo-paginated-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit dc0043383b24425282ce38ba06422991c37c1d7e -Author: Adrian Johnson -Date: Thu Mar 1 23:39:10 2007 +1030 - - PDF: Ensure ToUnicode CMap name is unique - - and remove an unused printf argument. - - src/cairo-pdf-surface.c | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 7d03fe94d76eee7b3e4bcc274effaa26bc9bd9af -Author: Behdad Esfahbod -Date: Wed Feb 28 17:08:23 2007 -0500 - - [RELEASING] Add notifying desktop-devel-list - - RELEASING | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 1dd647e26552961d2823ce4ee7cbd354450adf60 -Author: Behdad Esfahbod -Date: Wed Feb 28 16:55:30 2007 -0500 - - [TODO] Add/remove items - - TODO | 49 +++++++++++++++----------------------- - boilerplate/cairo-boilerplate.c | 1 + - 2 files changed, 20 insertions(+), 30 deletions(-) - -commit d0fe666a6ab1664af36a7b242d763c72f4e9f81b -Author: Behdad Esfahbod -Date: Wed Feb 28 14:58:57 2007 -0500 - - Revert the solid-pattern cache - - This reverts the following commits: - - 2715f2098127d04d2f9e304580a26cd0842c0e64 - 67e3b3c53bdd69e4d3503eed2db66953f1ac038c - - See this thread for an analysis of the problems it caused: - - http://lists.freedesktop.org/archives/cairo/2007-February/009825.html - - In short, a single cache for all backends doesn't work, as one thread - using any backend can cause an unused xlib pattern to be evicted from - the cache, and trigger an xlib call while the display is being used - from another thread. Xlib is not prepared for this. - - src/cairo-color.c | 7 --- - src/cairo-debug.c | 2 - - src/cairo-directfb-surface.c | 12 +----- - src/cairo-glitz-surface.c | 24 +----------- - src/cairo-pattern.c | 91 +++-------------------------------------- - src/cairo-surface.c | 26 ------------ - src/cairo-win32-surface.c | 13 +------ - src/cairo-xcb-surface.c | 17 +------- - src/cairo-xlib-surface.c | 17 +------- - src/cairoint.h | 15 ------- - 10 files changed, 12 insertions(+), 212 deletions(-) - -commit 5f5afac8f470ae13ab2827f04e05ca585d69b898 -Author: Behdad Esfahbod -Date: Wed Feb 28 14:32:11 2007 -0500 - - [boilerplate/test-paginated] Issue a show_page before writing buffer - - This is needed since cairo-test does not issue a show_page now, and - the one coming from paginated layer is too late (around finish). - - The way we force the show_page is kinda funny. That is, we create - a temporary cairo_t and call cairo_show_page() on it. But works. - - boilerplate/cairo-boilerplate.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit efe8c82738bd417402a18871c40cf831e4df31e4 -Author: Behdad Esfahbod -Date: Wed Feb 28 14:19:18 2007 -0500 - - [paginated] Also do an automatic show page if nothing ever drawn - - That is, we always emit at least one page of output. Otherwise our - PS/PDF/SVG files would be corrupt, and output with zero pages does - not make much sense. - - src/cairo-paginated-surface.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 07d61af8093be501e93d64cc7df69f95ecb83b6c -Author: Behdad Esfahbod -Date: Wed Feb 28 13:46:27 2007 -0500 - - [paginated] Automatically issue a final cairo_show_page() - - This means, PS/PDF/SVG do not need the final cairo_show_page() anymore. - If there is any drawing in the page, a cairo_show_page() is done - automatically. - - src/cairo-paginated-surface.c | 18 +++++++++++++----- - test/cairo-test.c | 2 -- - 2 files changed, 13 insertions(+), 7 deletions(-) - -commit d30178b3dcebcdd89dc773881fc1b9097f1f50a7 -Author: Behdad Esfahbod -Date: Tue Feb 27 20:22:05 2007 -0500 - - [doc] Add new APIs to cairo-sections.txt - - doc/public/cairo-sections.txt | 27 +++++++++++++++++++-------- - 1 files changed, 19 insertions(+), 8 deletions(-) - -commit ef53465a032a74fd50b7edaef19cae08586f44d4 -Author: Behdad Esfahbod -Date: Tue Feb 27 20:18:16 2007 -0500 - - Slim-hidden cairo_scale() - - src/cairo.c | 1 + - src/cairoint.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit ed75e24898a5ccd7836596122b9a801294122874 -Author: Behdad Esfahbod -Date: Tue Feb 27 20:09:22 2007 -0500 - - Implement cairo_get_scaled_font() - - TODO | 2 -- - doc/public/cairo-sections.txt | 7 ++++--- - src/cairo-gstate.c | 15 +++++++++++++++ - src/cairo-scaled-font.c | 2 +- - src/cairo.c | 30 ++++++++++++++++++++++++++++++ - src/cairo.h | 3 +++ - src/cairoint.h | 5 +++++ - test/font-face-get-type.c | 14 ++++++++++++-- - 8 files changed, 70 insertions(+), 8 deletions(-) - -commit d64b194a45d90b24d1cc01de0fa2cb4edc3a240b -Author: Behdad Esfahbod -Date: Tue Feb 27 20:03:26 2007 -0500 - - [quartz] Remove comment syntax that is recognized by gtkdoc from regular comments - - src/cairo-quartz-surface.c | 24 ++++++++++++------------ - 1 files changed, 12 insertions(+), 12 deletions(-) - -commit 65ab63cb8dc1da949dc831691cf1db5b6b92d749 -Author: Behdad Esfahbod -Date: Tue Feb 27 19:45:10 2007 -0500 - - [cairo.c] Reorder some function implementations for clarity - - src/cairo.c | 56 ++++++++++++++++++++++++++++---------------------------- - 1 files changed, 28 insertions(+), 28 deletions(-) - -commit ed933a199c07997cf1dfb5ef2e345d754e2433f3 -Author: Behdad Esfahbod -Date: Tue Feb 27 19:43:18 2007 -0500 - - [cairo.h] Reorder function prototypes a bit for clarity - - src/cairo.h | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit 153465bfe5346b9e1ebdbd4f794bd11868ee7458 -Author: Behdad Esfahbod -Date: Tue Feb 27 19:28:37 2007 -0500 - - [test] Add ref images for new tests - - test/surface-pattern-scale-down-pdf-argb32-ref.png | Bin 0 -> 1565 bytes - test/surface-pattern-scale-down-ps-argb32-ref.png | Bin 0 -> 1400 bytes - test/surface-pattern-scale-down-ref.png | Bin 0 -> 1784 bytes - test/surface-pattern-scale-down.c | 3 +-- - test/surface-pattern-scale-up-pdf-argb32-ref.png | Bin 0 -> 3886 bytes - test/surface-pattern-scale-up-ps-argb32-ref.png | Bin 0 -> 1011 bytes - test/surface-pattern-scale-up-ref.png | Bin 0 -> 3825 bytes - test/surface-pattern-scale-up.c | 3 +-- - test/surface-pattern.c | 3 +-- - 9 files changed, 3 insertions(+), 6 deletions(-) - -commit e2ce27db302a185e6e80ead699c01e43921939ca -Author: Behdad Esfahbod -Date: Tue Feb 27 18:47:47 2007 -0500 - - [PS/PDF] Fix xstep/ystep values for CAIRO_EXTEND_NONE - - This fixes the fallback-resolution test, as well as the two of - surface-pattern-scale-up and surface-pattern-scale-down. - - src/cairo-pdf-surface.c | 36 +++++++++++++++--------------------- - src/cairo-ps-surface.c | 43 ++++++++++++++++++++++++++++--------------- - 2 files changed, 43 insertions(+), 36 deletions(-) - -commit de0a6522b00822305fa5a0e32c4821628425ebdc -Author: Behdad Esfahbod -Date: Tue Feb 27 17:33:17 2007 -0500 - - [test] Add tests that show xstep/ystep failures in PS/PDF backends - with surface patterns. One test scaled the pattern up, another scales - down. We observe that both PS and PDF are broken when scaling down. - This is the reason that PDF is failing in the fallback-resolution test - too. - - test/.gitignore | 2 + - test/Makefile.am | 2 + - test/surface-pattern-scale-down.c | 69 +++++++++++++++++++++++++++++++++++++ - test/surface-pattern-scale-up.c | 69 +++++++++++++++++++++++++++++++++++++ - 4 files changed, 142 insertions(+), 0 deletions(-) - -commit 4c1d788219ae62bb9e8a7723d5a73d70eb42e69a -Author: Behdad Esfahbod -Date: Tue Feb 27 13:33:53 2007 -0500 - - [Makefile.am] Remove ChangeLog.cache-* in distclean - - ChangeLog.mk | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 7185c00e15aecf14d1957ba2e4f386ecb4e2a635 -Author: Behdad Esfahbod -Date: Fri Feb 23 16:21:28 2007 -0500 - - [PS] Add note about possible need for fix. - - src/cairo-ps-surface.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit aa3ebdbd01eb27e205b44728f9f5d9332c5ad450 -Author: Behdad Esfahbod -Date: Fri Feb 23 16:19:04 2007 -0500 - - [TODO] More TODO items - - TODO | 15 ++++++++++++--- - 1 files changed, 12 insertions(+), 3 deletions(-) - -commit 38b590d8b7f1f955653bca5cf4cceb723e173ade -Author: Behdad Esfahbod -Date: Fri Feb 23 16:18:00 2007 -0500 - - [SVG] Fix warnings - - src/cairo-svg-surface.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 69edcd4623ae4e1ef16c5a8d16a5ebd0c79d685f -Author: Behdad Esfahbod -Date: Fri Feb 23 16:15:44 2007 -0500 - - [SVG] Rename a local variable for clarity - - src/cairo-svg-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 11b3f43e927919a46909900a63386a1af788529a -Author: Behdad Esfahbod -Date: Fri Feb 23 16:14:37 2007 -0500 - - [TODO] Add various TODO items - - src/cairo-image-surface.c | 1 + - src/cairo-pattern.c | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit 2d908e6a957c8b1e7f369621aaace2fc7277a941 -Author: Behdad Esfahbod -Date: Thu Feb 22 18:24:19 2007 -0500 - - [test] Add a new, XFAIL, extend-pad test - - test/.gitignore | 1 + - test/Makefile.am | 3 ++ - test/extend-pad-ref.png | Bin 0 -> 616 bytes - test/extend-pad.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 78 insertions(+), 0 deletions(-) - -commit 289ac33fa28216cc6cc3e3d415cc4ff96cb17e12 -Author: Behdad Esfahbod -Date: Thu Feb 22 18:23:10 2007 -0500 - - [PS] Fix surface patterns with transforms - - Previously we were generating an image object with the desired - transform and then a pattern with only a translation. This means, - the pattern was alwasys axis-aligned. Obviously this does not - work correctly with repeated rotated patterns. - - We now use an identity matrix for the image and put all the - pattern transformation (well, it's inverse) into the pattern. - This fixes the issue nicely. - - The surface-pattern test is still failing even with a reference - image, because the gs rendering of the normal case and the - device-offset=25 case are different and both have seams. - - src/cairo-ps-surface.c | 42 ++++++++++--------------------- - test/surface-pattern-ps-argb32-ref.png | Bin 0 -> 2520 bytes - 2 files changed, 14 insertions(+), 28 deletions(-) - -commit 16013ced09c8d6e2a967b9192f8545716a423504 -Author: Behdad Esfahbod -Date: Thu Feb 22 18:07:22 2007 -0500 - - [test] Remove non-existing test extend-pad - - test/Makefile.am | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit c87edd9e10c2a60e11c8cd954860fb03f6425132 -Author: Behdad Esfahbod -Date: Thu Feb 22 16:03:47 2007 -0500 - - [test] Update surface-pattern test to include transformations - - The surface-pattern test was very naive, painting a surface pattern - repeated at identity size. With the new test, the surface pattern - is scaled and rotated. This reveals a serious bug in the PS backend. - - test/surface-pattern-pdf-argb32-ref.png | Bin 0 -> 14880 bytes - test/surface-pattern-ref.png | Bin 194 -> 11439 bytes - test/surface-pattern-svg-ref.png | Bin 0 -> 17663 bytes - test/surface-pattern.c | 94 ++++++++++++++----------------- - 4 files changed, 43 insertions(+), 51 deletions(-) - -commit 7c39276366f91de151c775fa8293783f39247896 -Author: Behdad Esfahbod -Date: Thu Feb 22 13:40:55 2007 -0500 - - [PS/PDF] Accept CAIRO_EXTEND_REFLECT surface patterns natively - - With the hack in _cairo_pattern_acquire_surface to return a 2x2 - surface for reflected patterns, we can now accept REFLECT surface - patterns natively in all backends. SVG was already doing that. - The PDF case needed some changes to go through - _cairo_pattern_acquire_surface. A similar change to the recent - change in SVG. - - src/cairo-pdf-surface.c | 19 +++++++++++++++---- - src/cairo-ps-surface.c | 4 ++-- - 2 files changed, 17 insertions(+), 6 deletions(-) - -commit 3405fb870e520bcc5588602317693837b59d1ee4 -Author: Behdad Esfahbod -Date: Thu Feb 22 13:10:34 2007 -0500 - - [test] Increase size of extend-reflect test to see that pattern repeats - - test/Makefile.am | 1 + - test/extend-reflect-ref.png | Bin 287611 -> 589279 bytes - test/extend-reflect.c | 2 +- - 3 files changed, 2 insertions(+), 1 deletions(-) - -commit 63c011bb6bcbe484915b5bb28da087b14bd572a6 -Author: Behdad Esfahbod -Date: Wed Feb 21 18:29:25 2007 -0500 - - [surface] Copy device_transform_inverse in _cairo_surface_clone_similar - - src/cairo-surface.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 3516d8092b6297b8e4a3919c09e47f2bd4dd600a -Author: Behdad Esfahbod -Date: Wed Feb 21 18:13:16 2007 -0500 - - [SVG] Use _cairo_pattern_acquire_surface instead of _cairo_surface_acquire_source_image - - This change is required for the upcoming hack to support - CAIRO_EXTEND_REFLECT. In short, the idea is that the surface returned - by _cairo_pattern_acquire_surface may look different from the one - returned by _cairo_surface_acquire_source_image, to support some pattern - modes not supported by the backends directly. - - src/cairo-svg-surface.c | 23 +++++++++++++++-------- - 1 files changed, 15 insertions(+), 8 deletions(-) - -commit 8d812ae9a670b2eeff4f0508e2c8c082e7900a7c -Author: Behdad Esfahbod -Date: Thu Feb 22 14:13:33 2007 -0500 - - [cairo-pattern] Correctly delegate device_transform so tests pass again - - src/cairo-pattern.c | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 7cbfb9556d869310c48c106a9929c292110685ce -Author: Behdad Esfahbod -Date: Thu Feb 22 12:56:05 2007 -0500 - - [cairo-pattern] Fall back on cairo_surface_create_similar in _cairo_pattern_acquire_surface_for_surface - - This was needed for SVG backend because it does not implement clone_similar. - However, I'm worried about possible infinite recursion here. Not sure what - to do. - - src/cairo-pattern.c | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 5562050bcf68923986b597f3aca1e285a466fa6c -Author: Behdad Esfahbod -Date: Wed Feb 21 18:16:34 2007 -0500 - - Support CAIRO_EXTEND_REFLECT on surface patterns - - We do this through a hack, that is, we make - _cairo_pattern_acquire_surface to return a surface that has four - copies of the original surface painted such that this image can - be simply repeated to get the effect of reflecting the original - surface. - - This fixes the formerly XFAIL test extend-reflect. - - src/cairo-pattern.c | 58 ++++++++++++++++++++++++++++++++++++++++++- - test/Makefile.am | 2 +- - test/extend-reflect-ref.png | Bin 287611 -> 287611 bytes - test/extend-reflect.c | 4 +-- - 4 files changed, 59 insertions(+), 5 deletions(-) - -commit 81935bb13120898a8581d8266041d3292558710a -Author: Behdad Esfahbod -Date: Wed Feb 21 18:06:02 2007 -0500 - - [PS] Update surface_pattern_supported() from PDF - - The PS backend was accepting all surface patterns, just to ASSERT_NOT_REACHED - later if extend type of the pattern was PAD or REFLECT. That didn't make - sense and was causing crash for PAD (surprisingly not for REFLECT. Not sure - why). So now it rejects those types of surface patterns, just like the PDF - surface does. - - src/cairo-ps-surface.c | 24 +++++++++++++++++++++++- - 1 files changed, 23 insertions(+), 1 deletions(-) - -commit 4e30919f30e7618dbb62d7de2931efaac26c1785 -Author: Behdad Esfahbod -Date: Wed Feb 21 18:03:52 2007 -0500 - - [cairo-surface] Do not err on CAIRO_EXTEND_PAD and CAIRO_EXTEND_REFLECT - - for surface patterns. - - Right before releasing cairo 1.2, Carl and I decided to return error on - CAIRO_EXTEND_PAD and CAIRO_EXTEND_REFLECT for surface patterns, as they - are not implemented and one was causing crashes. Well, that was probably - the worst decision we could make (other than ignoring the problem). A - much better decision would have been to make them act like - CAIRO_EXTEND_NONE and CAIRO_EXTEND_REPEAT respectively. Anyway, remove - the error paths. - - src/cairo-surface.c | 30 ------------------------------ - 1 files changed, 0 insertions(+), 30 deletions(-) - -commit a57bc6b6973a270ef85d73089ebd9d10b3bc5aa8 -Author: Behdad Esfahbod -Date: Wed Feb 21 17:59:28 2007 -0500 - - [test] Add ref image for extend-reflect - - test/extend-reflect-ref.png | Bin 0 -> 287611 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 5a72aac5982015a2b237afeb13164e0c5f5185ed -Author: Vladimir Vukicevic -Date: Fri Feb 23 14:24:04 2007 -0800 - - [core] put back REF_COUNT_INVALID to be -1, fix finish - - Previous commit broke cairo_surface_finish, since it was checking for - ref_count == CAIRO_REF_COUNT_INVALID and bailing. But, that condition - was reached from destroy, so finish was bailing out early. - - src/cairo-font.c | 3 +++ - src/cairo-pattern.c | 3 +++ - src/cairo-scaled-font.c | 3 +++ - src/cairo-surface.c | 3 +++ - src/cairo.c | 3 +++ - src/cairoint.h | 2 +- - 6 files changed, 16 insertions(+), 1 deletions(-) - -commit cf7311852298e7d86d065a12fa962ba10fe60dcc -Author: Vladimir Vukicevic -Date: Fri Feb 23 13:05:18 2007 -0800 - - [core] Add user_data and reference count getters to all objects - - user_data setters/getters were added to public refcounted objects - that were missing them (cairo_t, pattern, scaled_font). Also, - a refcount getter (cairo_*_get_reference_count) was added to all - public refcounted objects. - - src/cairo-font.c | 18 +++++++++++ - src/cairo-pattern.c | 76 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-private.h | 2 + - src/cairo-scaled-font.c | 78 +++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-surface.c | 17 ++++++++++ - src/cairo.c | 75 +++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 45 +++++++++++++++++++++++++++ - src/cairoint.h | 17 ++++++---- - 8 files changed, 319 insertions(+), 9 deletions(-) - -commit 67e3b3c53bdd69e4d3503eed2db66953f1ac038c -Author: Behdad Esfahbod -Date: Fri Feb 23 10:59:57 2007 -0500 - - [xlib/xcb] Check for same_screen in is_compatible - - Two drawables can be used in an X and Render operation only if they share - the same screen. Previously we were only checking for the same display - in is_compatible. Check for the same screen now. - - src/cairo-xcb-surface.c | 2 +- - src/cairo-xlib-surface.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit a1e5b91588a4f51c03487b480f13c100d07f64f8 -Author: Adrian Johnson -Date: Fri Feb 23 22:55:29 2007 +1030 - - Subsetting: Add check for malloc() error - - src/cairo-scaled-font-subsets.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 27312591fe7ce14f65aac88ee7206ddcf3cbd0b1 -Author: Adrian Johnson -Date: Fri Feb 23 22:14:42 2007 +1030 - - Win32: Fix _cairo_win32_scaled_font_map_glyphs_to_unicode return type - - src/cairo-win32-font.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit 3b168e45510e02caf54e4b3cd0df76df6420d304 -Author: Behdad Esfahbod -Date: Thu Feb 22 23:14:58 2007 -0500 - - [FreeType] Truely return unhinted advance width if metrics hinting is off - - David Turner said: - The returned 26.6 advance is always rounded, even with FT_LOAD_NO_HINTING. - You can however retrieve the linearly scaled value as a 16.16 fixed float - number through face->glyph->linearHoriAdvance. This works even with hinted - glyphs. - - src/cairo-ft-font.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) - -commit 0ff5192e4cb5b1113bed3c9cf1c0275065aafd14 -Author: Behdad Esfahbod -Date: Wed Feb 21 15:57:21 2007 -0500 - - [Makefile.am] Include boilerplate/ in SUBDIRS - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1bc1f8ef46a27aa21f8d29b39e645ee5a0e95cda -Author: Emmanuel Pacaud -Date: Wed Feb 21 23:23:32 2007 +0100 - - Set overflow to visible for symbols. - - It makes viewers implementing correctly the SVG specification show texts. - - src/cairo-svg-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7d91c8a2cb3f2a5e0afe0d0c90956add51a4e27c -Author: Behdad Esfahbod -Date: Wed Feb 21 15:47:43 2007 -0500 - - [test] Fix syntax typo in text-rotate - - test/text-rotate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 155a1b48f6c8265ad5dd594354b66b3e8341bade -Author: Behdad Esfahbod -Date: Wed Feb 21 13:52:17 2007 -0500 - - [test] Remove text-rotate test from XFAIL as the bugs are fixed now - - All missing is subpixel text positioning, but we don't need an XFAIL test - to remind us for that. - - test/Makefile.am | 6 +++--- - test/text-rotate-ps-argb32-ref.png | Bin 0 -> 7198 bytes - test/text-rotate-ref.png | Bin 12300 -> 17775 bytes - test/text-rotate-rgb24-ref.png | Bin 5640 -> 0 bytes - test/text-rotate-svg-ref.png | Bin 0 -> 18301 bytes - test/text-rotate.c | 12 +++++++++++- - 6 files changed, 14 insertions(+), 4 deletions(-) - -commit b54174e917e273143455661d565412fb9a185bfb -Author: Behdad Esfahbod -Date: Wed Feb 21 13:43:08 2007 -0500 - - [PS] Fix rotated image pattern emission by correcting setting the bbox - - The bug was that the bounding box of the image was computed by transforming - the vector (width,height) and then using 0,0,width,height as the bounding box. - This is obviously wrong. We use _cairo_matrix_transform_bounding_box() now. - This fixes the XFAIL test rotate-image-surface-paint. - - src/cairo-ps-surface.c | 31 ++++++++++++++------- - test/Makefile.am | 1 - - test/rotate-image-surface-paint-ps-argb32-ref.png | Bin 0 -> 276 bytes - 3 files changed, 21 insertions(+), 11 deletions(-) - -commit 6ae4a4fd71b030376ec373f2a787eac32b21d7f3 -Author: Behdad Esfahbod -Date: Wed Feb 21 12:57:09 2007 -0500 - - [test] Remove ft-text-vertical-layout-type1 from XFAIL - and update reference images. This test was fixed some time ago - where I disabled type1 subsetting for vertical layouts, then - turned XFAIL again when Carl Worth didn't have the same fonts as me. - I've not updated reference images to work on FC6 and hoping that it - works for Carl too. - - test/Makefile.am | 1 - - test/ft-text-vertical-layout-type1-ref.png | Bin 3970 -> 3960 bytes - test/ft-text-vertical-layout-type1-svg-ref.png | Bin 3948 -> 3934 bytes - 3 files changed, 0 insertions(+), 1 deletions(-) - -commit c6a067f967f9b92328e7d1ca2a4eba6fb4c6dfdf -Author: Behdad Esfahbod -Date: Wed Feb 21 11:50:24 2007 -0500 - - [test] Add test case for bug #7965 to the get-path-extents test - - test/get-path-extents.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit 363b1a40b5719582c670bdb9e7cd8087bcbf9666 -Author: Vladimir Vukicevic -Date: Tue Feb 20 16:18:27 2007 -0800 - - [quartz] Remove (disabled) support for rendering via AGL/CGGL - - src/cairo-quartz-private.h | 10 ---- - src/cairo-quartz-surface.c | 106 +------------------------------------------ - src/cairo-quartz.h | 11 ----- - 3 files changed, 3 insertions(+), 124 deletions(-) - -commit e4a1410514471c2cb290d691ca77c4ab24a6541c -Author: Vladimir Vukicevic -Date: Tue Feb 20 16:16:18 2007 -0800 - - [quartz] Rename public function parameter from surf -> surface - - src/cairo-quartz-surface.c | 8 ++++---- - src/cairo-quartz.h | 2 +- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 28c1e46b8e082f65fc94c984ea3b66df5adaa529 -Author: Vladimir Vukicevic -Date: Tue Feb 20 13:22:11 2007 -0800 - - [quartz] rename test override images from nquartz to quartz - - test/caps-joins-alpha-nquartz-ref.png | Bin 2466 -> 0 bytes - test/caps-joins-alpha-quartz-ref.png | Bin 0 -> 2466 bytes - test/clip-nesting-nquartz-ref.png | Bin 1067 -> 0 bytes - test/clip-nesting-nquartz-rgb24-ref.png | Bin 956 -> 0 bytes - test/clip-nesting-quartz-ref.png | Bin 0 -> 1067 bytes - test/clip-nesting-quartz-rgb24-ref.png | Bin 0 -> 956 bytes - test/clip-push-group-nquartz-ref.png | Bin 203 -> 0 bytes - test/clip-push-group-quartz-ref.png | Bin 0 -> 203 bytes - test/clip-twice-nquartz-ref.png | Bin 1171 -> 0 bytes - test/clip-twice-nquartz-rgb24-ref.png | Bin 1111 -> 0 bytes - test/clip-twice-quartz-ref.png | Bin 0 -> 1171 bytes - test/clip-twice-quartz-rgb24-ref.png | Bin 0 -> 1111 bytes - test/dash-caps-joins-nquartz-ref.png | Bin 4727 -> 0 bytes - test/dash-caps-joins-quartz-ref.png | Bin 0 -> 4727 bytes - test/degenerate-path-nquartz-rgb24-ref.png | Bin 188 -> 0 bytes - test/degenerate-path-quartz-rgb24-ref.png | Bin 0 -> 188 bytes - test/fill-and-stroke-alpha-add-nquartz-ref.png | Bin 603 -> 0 bytes - test/fill-and-stroke-alpha-add-quartz-ref.png | Bin 0 -> 603 bytes - test/fill-and-stroke-alpha-nquartz-ref.png | Bin 550 -> 0 bytes - test/fill-and-stroke-alpha-quartz-ref.png | Bin 0 -> 550 bytes - test/fill-and-stroke-nquartz-ref.png | Bin 286 -> 0 bytes - test/fill-and-stroke-nquartz-rgb24-ref.png | Bin 264 -> 0 bytes - test/fill-and-stroke-quartz-ref.png | Bin 0 -> 286 bytes - test/fill-and-stroke-quartz-rgb24-ref.png | Bin 0 -> 264 bytes - test/fill-degenerate-sort-order-nquartz-ref.png | Bin 2470 -> 0 bytes - ...ill-degenerate-sort-order-nquartz-rgb24-ref.png | Bin 2098 -> 0 bytes - test/fill-degenerate-sort-order-quartz-ref.png | Bin 0 -> 2470 bytes - ...fill-degenerate-sort-order-quartz-rgb24-ref.png | Bin 0 -> 2098 bytes - test/fill-rule-nquartz-ref.png | Bin 2079 -> 0 bytes - test/fill-rule-nquartz-rgb24-ref.png | Bin 1790 -> 0 bytes - test/fill-rule-quartz-ref.png | Bin 0 -> 2079 bytes - test/fill-rule-quartz-rgb24-ref.png | Bin 0 -> 1790 bytes - test/new-sub-path-nquartz-ref.png | Bin 386 -> 0 bytes - test/new-sub-path-nquartz-rgb24-ref.png | Bin 357 -> 0 bytes - test/new-sub-path-quartz-ref.png | Bin 0 -> 386 bytes - test/new-sub-path-quartz-rgb24-ref.png | Bin 0 -> 357 bytes - test/operator-clear-nquartz-ref.png | Bin 1195 -> 0 bytes - test/operator-clear-nquartz-rgb24-ref.png | Bin 1244 -> 0 bytes - test/operator-clear-quartz-ref.png | Bin 0 -> 1195 bytes - test/operator-clear-quartz-rgb24-ref.png | Bin 0 -> 1244 bytes - test/random-intersections-nquartz-ref.png | Bin 203877 -> 0 bytes - test/random-intersections-nquartz-rgb24-ref.png | Bin 179204 -> 0 bytes - test/random-intersections-quartz-ref.png | Bin 0 -> 203877 bytes - test/random-intersections-quartz-rgb24-ref.png | Bin 0 -> 179204 bytes - test/rel-path-nquartz-ref.png | Bin 212 -> 0 bytes - test/rel-path-nquartz-rgb24-ref.png | Bin 228 -> 0 bytes - test/rel-path-quartz-ref.png | Bin 0 -> 212 bytes - test/rel-path-quartz-rgb24-ref.png | Bin 0 -> 228 bytes - test/source-clip-scale-nquartz-ref.png | Bin 148 -> 0 bytes - test/source-clip-scale-quartz-ref.png | Bin 0 -> 148 bytes - test/trap-clip-nquartz-ref.png | Bin 5814 -> 0 bytes - test/trap-clip-nquartz-rgb24-ref.png | Bin 5385 -> 0 bytes - test/trap-clip-quartz-ref.png | Bin 0 -> 5814 bytes - test/trap-clip-quartz-rgb24-ref.png | Bin 0 -> 5385 bytes - 54 files changed, 0 insertions(+), 0 deletions(-) - -commit be451cd83d8178bfaf28a1c7dec59601d97cff8d -Author: Vladimir Vukicevic -Date: Tue Feb 20 12:54:03 2007 -0800 - - [quartz] rename NQUARTZ -> QUARTZ in defines - - perf/cairo-perf.c | 1 - - src/cairo-quartz-private.h | 4 +++- - src/cairo-quartz-surface.c | 18 +++++++++--------- - src/cairo-quartz.h | 10 +++++----- - 4 files changed, 17 insertions(+), 16 deletions(-) - -commit 4c201723ce8139c2e6620881583bc08e3aa1bad7 -Author: Vladimir Vukicevic -Date: Tue Feb 20 12:15:35 2007 -0800 - - [quartz] Rename nquartz to quartz - - boilerplate/cairo-boilerplate.c | 47 +- - configure.in | 7 - - src/Makefile.am | 6 - - src/cairo-atsui-font.c | 33 +- - src/cairo-nquartz-surface.c | 1864 -------------------------------------- - src/cairo-nquartz.h | 80 -- - src/cairo-quartz-private.h | 30 +- - src/cairo-quartz-surface.c | 1899 ++++++++++++++++++++++++++++++++++++--- - src/cairo-quartz.h | 39 +- - src/cairo.h | 1 - - test/get-clip.c | 3 +- - 11 files changed, 1819 insertions(+), 2190 deletions(-) - -commit 641f0919d53691e561aa665d31cc43524d861215 -Author: Adrian Johnson -Date: Wed Feb 21 00:32:07 2007 +1030 - - PDF/PS: Don't embed multiple copies of the same font - - cairo-scaled-font-subsets stores two sets of subsets - - scaled and unscaled. The first time each glyph is mapped, - _cairo_scaled_glyph_lookup() is called to determine if - the glyph is bitmap or outline. Outline glyphs are put - in the unscaled subsets. Bitmap glyphs are put in the - scaled subsets. The unscaled subsets hash table keyed is - the scaled_font->font_face to ensure only one font for - each font face is created. The scaled subsets hash - table is keyed by scaled_font. - - _cairo_scaled_font_subsets_create() now takes two arguments - to specify the maximum size of the scaled and unscaled subsets. - If the unscaled max size is set to 0 all glyphs are mapped - to scaled subsets. - - A separate foreach function is provided for scaled and unscaled - subsets. The PDF and PS backends iterate over the unscaled - subsets to emit CFF, TrueType, and Type1 fonts. The scaled - subsets are iterated to emit Type3 bitmap fonts. - - src/cairo-pdf-surface.c | 24 +++- - src/cairo-ps-surface.c | 24 +++- - src/cairo-scaled-font-subsets-private.h | 61 +++++++- - src/cairo-scaled-font-subsets.c | 235 +++++++++++++++++++++++++------ - src/cairo-svg-surface.c | 8 +- - 5 files changed, 288 insertions(+), 64 deletions(-) - -commit f65c33edbecc1f0e285814995dc1a51748310e36 -Author: Behdad Esfahbod -Date: Tue Feb 20 01:00:53 2007 -0500 - - [win32] Make win32-surface compile without win32-font - - Hacking on the win32 code, thanks to winelib. Yay! - - src/cairo-win32-surface.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 2335a23a16d84e6ebdde7afbeb1fbceb3bdbe6b6 -Author: Behdad Esfahbod -Date: Tue Feb 20 01:00:17 2007 -0500 - - [test/Makefile.am] Document why svg2png and pdf2png use LDADD - - This is to make librsvg and poppler to use the compiled cairo instead - of whatever is on the system, such that the test suite does not depend - on a good version of cairo being installed already. - - test/Makefile.am | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 8133530ae5848b0a34c299e0c71360931fe383df -Author: Behdad Esfahbod -Date: Tue Feb 20 00:57:25 2007 -0500 - - [configure] Improve win32 detection - - We now test for windows.h availability to automatically enable win32 - backends. This nicely enables compiling cairo against libwine by just - setting CC=winegcc LD=winegcc during configure. This currently only - generates static libs though. - - configure.in | 27 ++++++++++++++++++--------- - src/Makefile.am | 7 +++++-- - 2 files changed, 23 insertions(+), 11 deletions(-) - -commit 0fcd6cfe0edff25ad3d11af056ba611bd8d9d8c8 -Author: Jeff Smith -Date: Mon Feb 19 16:06:57 2007 -0500 - - Clean up some inconsistent spacing in the stroking code - - src/cairo-path-stroke.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 89010db3ad3ce0a9afaf28fd313da86ebc864c7c -Author: Jeff Smith -Date: Mon Feb 19 16:06:57 2007 -0500 - - Add or reword several comments in the stroking code - - src/cairo-path-stroke.c | 14 ++++++++------ - 1 files changed, 8 insertions(+), 6 deletions(-) - -commit adb573d0bafd7b555bda0effcbd94b9144981ad6 -Author: Jeff Smith -Date: Mon Feb 19 16:06:57 2007 -0500 - - Minor changes to shorten the stroking code - - src/cairo-path-stroke.c | 26 +++++++++----------------- - 1 files changed, 9 insertions(+), 17 deletions(-) - -commit fb29fddd40aeb4c2f1a42f88eddec5c06adf0583 -Author: Jeff Muizelaar -Date: Mon Feb 19 16:06:57 2007 -0500 - - Rename tmp to step_length because that is what it actually is. - - src/cairo-path-stroke.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit afd5f92195335a88d7c1ff181a1bd03ca01b424f -Author: Jeff Muizelaar -Date: Mon Feb 19 16:06:57 2007 -0500 - - Fix several issues with dashed stroking code, particularly 'leaky-dash' - - Adds some state, 'dash_starts_on', to keep track of whether a dashed path - starts with dash_on or not. This fixes the 'leaky-dash' bug (#4863) and - some other degenerate cases. The new version is, in my opinion, - considerably cleaner and more understandable than the old code. - - Finally, the rewrite changes the behaviour of dashing to add degenerate - caps around corners that start at the same place as a dash begins. This - matches the behaviour seen in acroread. - - This rewrite is based on an initial rewrite done by Jeff Smith. - - src/cairo-path-stroke.c | 85 +++++++++++++++++-------------------- - test/Makefile.am | 1 - - test/dash-caps-joins-ref.png | Bin 4680 -> 4718 bytes - test/dash-scale-ref.png | Bin 7791 -> 7908 bytes - test/leaky-dash-ps-argb32-ref.png | Bin 0 -> 286 bytes - test/leaky-dash-ref.png | Bin 241 -> 243 bytes - 6 files changed, 39 insertions(+), 47 deletions(-) - -commit 78ae474d96b48ccba3d18dc26c416ebd6daab502 -Author: Jeff Muizelaar -Date: Mon Feb 19 16:06:56 2007 -0500 - - Rename has_sub_path to has_initial_sub_path - - has_initial_sub_path more accurately describes the condition we want to - track. This flag is used to indicate when an initial sub_path needs capping - but has no associated slope and thus no associated faces. - - src/cairo-path-stroke.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit 9f3fb4f753eabc84f19d808df64a718991269670 -Author: Jeff Muizelaar -Date: Mon Feb 19 16:06:56 2007 -0500 - - Add a comment about the point choice when capping degenerate paths - - src/cairo-path-stroke.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit a1a4d6966e1d9c8ccf84c9972a4f9560553948f6 -Author: Jeff Smith -Date: Mon Feb 19 16:06:56 2007 -0500 - - Modify how _cairo_stroker_add_caps handles zero-length sub-paths - - For zero-length sub-paths, _cairo_stroker_add_caps sets up a dummy face, - then lets later parts of the function add the caps. - - src/cairo-path-stroke.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 849a9ef81b99d05d8f3ceb4f73bf5e52c90b24af -Author: Jeff Smith -Date: Mon Feb 19 16:06:56 2007 -0500 - - Change type of cairo_stroker_t's dash_on from int to cairo_bool_t - - src/cairo-path-stroke.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 74ded42327e87b40de434a28620d0a3fc8e4d249 -Author: Jeff Muizelaar -Date: Mon Feb 19 16:06:56 2007 -0500 - - Add a new dashing test - - This new dashing test, based on some code from Jeff Smith, does a pretty - good job exploring all the cases that the dashing code needs to deal with. - - test/Makefile.am | 2 + - test/dash-state-ps-argb32-ref.png | Bin 0 -> 8652 bytes - test/dash-state-ref.png | Bin 0 -> 9389 bytes - test/dash-state.c | 72 +++++++++++++++++++++++++++++++++++++ - 4 files changed, 74 insertions(+), 0 deletions(-) - -commit 1c1697398c5ef17e38bc031e8c067113a6c10287 -Author: Jeff Muizelaar -Date: Mon Feb 19 16:06:56 2007 -0500 - - Add two new test cases to degenerate-path test - - These new cases deal with degenerate paths at the end of dashed paths. They - currently fail. - - test/degenerate-path-ps-argb32-ref.png | Bin 303 -> 390 bytes - test/degenerate-path-ref.png | Bin 216 -> 257 bytes - test/degenerate-path-rgb24-ref.png | Bin 189 -> 224 bytes - test/degenerate-path.c | 23 ++++++++++++++++++++++- - 4 files changed, 22 insertions(+), 1 deletions(-) - -commit 9927dde5334322c97942982f9bf632e74502d628 -Author: Adrian Johnson -Date: Sat Feb 17 10:55:14 2007 +1030 - - TrueType: fix bug #9998 - build error with gcc 2.95 - - src/cairo-truetype-subset-private.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 9bae496a0a057bb0de70b078ee5cde265663dc86 -Author: Brian Ewins -Date: Thu Feb 15 23:08:40 2007 +0000 - - [ATSUI] implement load_truetype_table - - Implements load truetype table, allowing selection of - text and searching in pdfs generated using the atsui - font backend. - - src/cairo-atsui-font.c | 26 +++++++++++++++++++++++++- - 1 files changed, 25 insertions(+), 1 deletions(-) - -commit 16e20568a502b86d96c3087515e663bb7996f167 -Author: Adrian Johnson -Date: Fri Feb 16 08:38:26 2007 +1030 - - TrueType: Add post table and 3,0 cmap encoding - - Commit 05ff2c77da86c7be95924f9af4d3ad944afbbf66 contained - a fix for the acroread printing problem. However this - patch caused a problem for the Mac Preview PDF viewer. - - http://lists.freedesktop.org/archives/cairo/2007-February/009615.html - - This patch fixes the Mac Preview problem. The patch - - - Adds a platform 3, encoding 0 cmap table - - Adds a post table that maps the glyph names in the - PDF truetype font dictionary (/g0 /g1 /g2 ...) - to glyph indices in the font. - - src/cairo-truetype-subset-private.h | 1 + - src/cairo-truetype-subset.c | 69 +++++++++++++++++++++++++++++++---- - 2 files changed, 63 insertions(+), 7 deletions(-) - -commit 2715f2098127d04d2f9e304580a26cd0842c0e64 -Author: Jorn Baayen -Date: Wed Feb 14 18:28:56 2007 -0800 - - [cairo-pattern] Cache surface for solid patterns - - We use a small cache of size 16 for surfaces created for solid patterns. - This mainly helps with the X backends where we don't have to create a - pattern for every operation, so we save a lot on X traffic. Xft uses a - similar cache, so cairo's text rendering traffic with the xlib backend - now completely matches that of Xft. - - The cache uses an static index variable, which itself acts like a cache of - size 1, remembering the most recently used solid pattern. So repeated - lookups for the same pattern hit immediately. If that fails, the cache is - searched linearly, and if that fails too, a new surface is created and a - random member of the cache is evicted. - - Only surfaces that are "compatible" are used. The definition of compatible - is backend specific. For the xlib backend, it means that the two surfaces - are allocated on the same display. Implementations for compatibility are - provided for all backends that it makes sense. - - src/cairo-color.c | 7 +++ - src/cairo-debug.c | 2 + - src/cairo-directfb-surface.c | 12 +++++- - src/cairo-glitz-surface.c | 24 +++++++++++- - src/cairo-pattern.c | 91 ++++++++++++++++++++++++++++++++++++++--- - src/cairo-surface.c | 26 ++++++++++++ - src/cairo-win32-surface.c | 13 ++++++- - src/cairo-xcb-surface.c | 17 +++++++- - src/cairo-xlib-surface.c | 17 +++++++- - src/cairoint.h | 15 +++++++ - 10 files changed, 212 insertions(+), 12 deletions(-) - -commit b31179478bf8c18245917caa1bee19bb61f336c1 -Author: Carl Worth -Date: Wed Feb 14 00:48:42 2007 -0800 - - Bump cairo version to 1.3.15 after making the 1.3.14 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 90e453fc22398f31996a6fdbeec6da98e25a160e -Author: Carl Worth -Date: Wed Feb 14 00:34:18 2007 -0800 - - Increment cairo version to 1.3.14 (and libtool versioning to 12:4:10) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 513f21140bae549e088909333598e73e5dac4a44 -Author: Carl Worth -Date: Wed Feb 14 00:32:54 2007 -0800 - - NEWS: Add notes for the 1.3.14 snapshot - - NEWS | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 56 insertions(+), 0 deletions(-) - -commit 51ca187d3e5d613a583daf4fa5b244157e3a2c4f -Author: Carl Worth -Date: Tue Feb 13 23:55:03 2007 -0800 - - Mark test/rotate-image-surface-paint as XFAIL - - This test has always failed with the ps backend since the test - was initially written. - - test/Makefile.am | 1 + - test/rotate-image-surface-paint.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit 9966551dc7640ae7901ffed0e15f0fbf7e603d5d -Author: Carl Worth -Date: Tue Feb 13 23:49:26 2007 -0800 - - Fix cairo_ft_unscaled_font_t to have a lock_count again not an is_locked Boolean - - This was inadvertently changed as part of fdffde8b9e7a2308b822ddef7b02a8e85cc8ba1e - - With the Boolean, pango-using programs that locked the same - unscaled_font multiple times would crash with a message such as: - - cairo-ft-font.c:569: _cairo_ft_unscaled_font_unlock_face: Assertion `unscaled->is_locked' failed. - - src/cairo-ft-font.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 7adab2866be21207a15f07aab01fb17edd0e661f -Author: Carl Worth -Date: Tue Feb 13 22:05:57 2007 -0800 - - Add missing call to set_scale of unscaled_font in scaled_glyph init - - This fixes a regression introduced with commit: - - 25a370d7992d7f70d8cf79f1b328e40437b40ac4 - - This was showing up as a failure of the bitmap-font test case - with the ps, pdf, and svg backends. - - src/cairo-ft-font.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 17b4496ae9df539c48c830b21c4477e763ba4e5d -Author: Jinghua Luo -Date: Wed Feb 14 11:52:11 2007 +0800 - - type1-subset: fix error handling. - - This fixes potenial memory leak and leaving font face locked on error. - - src/cairo-type1-subset.c | 34 +++++++++++++++++++++++----------- - 1 files changed, 23 insertions(+), 11 deletions(-) - -commit 01a133167c48e7985515ae29f4a87de7952d1373 -Author: Dan Amelang -Date: Sun Feb 11 00:16:52 2007 -0800 - - Update Win32 makefiles - - Since the last time these makefiles were last updated some new source - files have been added and one renamed. In addition, a "clean" rule - needed to be added to the pixman makefile. And the "clean" rule in the - main cairo makefile wasn't working properly for me. - - pixman/src/Makefile.win32 | 2 ++ - src/Makefile.win32 | 8 ++++++-- - 2 files changed, 8 insertions(+), 2 deletions(-) - -commit b8987dd12c3269c1d7978338cd356b9fe3ad420e -Author: Carl Worth -Date: Tue Feb 13 16:47:30 2007 -0800 - - ROADMAP: Note that text spacing issues for win32 are fixed - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f0a16b5bddc5c162c78ae976093fe8bb2b756e04 -Author: Dan Amelang -Date: Sun Feb 11 03:34:27 2007 -0800 - - Fix Win32 text spacing problem - - Thanks to Jordan Miner for reporting the problem and a fix. - - src/cairo-win32-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit aad1374caab3a05893c9f1f2605131edd9f62409 -Author: Carl Worth -Date: Sat Feb 10 09:39:24 2007 -0800 - - Rename cairo_toy_font_face_hash_table_mutex to cairo_font_face_mutex - - The new name more accurately reflects its recently expanded role. - - src/cairo-font.c | 31 +++++++++++++++++++------------ - 1 files changed, 19 insertions(+), 12 deletions(-) - -commit e107b70b4d282d78ebe32f4d2381fcf98df324f6 -Author: Carl Worth -Date: Sat Feb 10 09:39:09 2007 -0800 - - Add locking to cairo_font_face_reference/destroy - - The reference count of cairo_font_face_t is rather intimately tied, - (for toy font faces), with the cairo_font_face_hash_table, so we - expand the existing cairo_toy_font_face_hash_table_mutex to cover - the manipulation of font_face->ref_count as well. - - This commit eliminates an assertion failure that is (occasionally) - exposed by the pthread-show-text test case: - - lt-pthread-show-text: cairo-hash.c:196: _cairo_hash_table_destroy: Assertion `hash_table->live_entries == 0' failed. - - src/cairo-font.c | 21 +++++++++++++++++---- - 1 files changed, 17 insertions(+), 4 deletions(-) - -commit d6d1767f9a89bf7e16288d0a90e5fafc5ad2d9d6 -Author: Carl Worth -Date: Sat Feb 10 09:38:13 2007 -0800 - - Increase pthread-show-text thread count and add cairo_select_font_face to expose more bugs. - - test/pthread-show-text.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit fdffde8b9e7a2308b822ddef7b02a8e85cc8ba1e -Author: Carl Worth -Date: Sat Feb 10 09:14:07 2007 -0800 - - Add mutex to implement _cairo_ft_unscaled_font_lock_face and _cairo_ft_unscaled_font_unlock_face - - Previously we just had an integer counter here, but that is not - sufficient as multiple cairo_scaled_font_t objects, (which are - implicitly shared through the font caches), can reference the - same cairo_ft_unscaled_font_t so real locking is needed here. - - This commit eliminates an assertion failure exposed by the - pthread-show-text test case: - - lt-pthread-show-text: cairo-ft-font.c:562: _cairo_ft_unscaled_font_unlock_face: Assertion `unscaled->lock > 0' failed. - - src/cairo-ft-font.c | 82 +++++++++++++++++++++++++++++++++------------------ - 1 files changed, 53 insertions(+), 29 deletions(-) - -commit 25a370d7992d7f70d8cf79f1b328e40437b40ac4 -Author: Carl Worth -Date: Tue Feb 13 10:40:53 2007 -0800 - - Avoid public cairo_ft_scaled_font_lock_face for internal use - - We're planning to change the implementation of the public function, - (which will remove some locking safety), so use the safe, locked - _cairo_ft_unscaled_font_lock_face for internal use instead. - - src/cairo-ft-font.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 7e1301ffb066b04d95dc71144d86e660f0155bba -Author: Carl Worth -Date: Sat Feb 10 09:12:38 2007 -0800 - - Add missing _cairo_ft_unscaled_font_unlock_face to _cairo_ft_scaled_font_create - - src/cairo-ft-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6f7cfdf5c79c3c09a0241ae25ff540fb0d893d31 -Author: Adrian Johnson -Date: Tue Feb 13 23:53:38 2007 +1030 - - PDF: Add missing character code to Differences array - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 88cae7766d6006e4169da1dcddc14a52e210cae5 -Author: Adrian Johnson -Date: Tue Feb 13 23:29:05 2007 +1030 - - output-stream: coding style fix - - src/cairo-output-stream.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 88f7ea4ad7926b135c987d3d75c029310c328010 -Author: Adrian Johnson -Date: Tue Feb 13 22:52:53 2007 +1030 - - CFF: Fix Visual C++ compile problem - - Don't use structure intitialization for assigning - structure values. - - Add a new field to cff_charset_t to point to the sids - charset array instead of casting it into the data field. - - src/cairo-cff-subset.c | 25 ++++++++++++++----------- - 1 files changed, 14 insertions(+), 11 deletions(-) - -commit ac01dcb5ad077d8ea08a93348fc23d4a891abaae -Author: Adrian Johnson -Date: Sun Feb 11 23:14:40 2007 +1030 - - PDF: Remove dead code - - The function _cairo_pdf_surface_write_fonts is the - original PDF TrueType font embedding function that was - disabled in commit f500cef19f049a4a0ed296172618db2f26794932 - shortly before Type3 font support was added. - - TrueType font embedding was later reintroduced as new code - making this function obsolete. - - src/cairo-pdf-surface.c | 108 ----------------------------------------------- - 1 files changed, 0 insertions(+), 108 deletions(-) - -commit d6f15b26009ff8e1d52a037265bcaa80c5ce6735 -Author: Adrian Johnson -Date: Sun Feb 11 22:20:58 2007 +1030 - - Output-stream: Omit the minus sign from negative zero - - src/cairo-output-stream.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit a2fefcc9e962e81a00fb16ae3d1bc29d9e61eaa0 -Author: Adrian Johnson -Date: Sun Feb 11 21:57:43 2007 +1030 - - PDF: Compress Type3 fonts - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9f47879ae31f003be3b32f9ecb3efb3486d72cc7 -Author: Adrian Johnson -Date: Sun Feb 11 21:50:46 2007 +1030 - - PDF: Fix Type3 font metrics to make text selection work - - src/cairo-pdf-surface.c | 66 +++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 56 insertions(+), 10 deletions(-) - -commit 9dce321a113871ade7de244d3abf9ed08f43dd85 -Author: Brian Ewins -Date: Sun Feb 11 01:42:22 2007 +0000 - - [ATSUI] scale fonts using font size not font matrix - - Mozilla bug #327522 - fonts scaled up over 16pt on mac - had nonsensical extents. The scaling was being done using - the font matrix, it turns out this does not work for 16x - scaling and up. This patch switches back to using the - font size to scale fonts, with emboldening and condensing - effects applied separately using the font matrix. - - src/cairo-atsui-font.c | 22 +++++++++------------- - 1 files changed, 9 insertions(+), 13 deletions(-) - -commit eec62c297589ca20f4128c889ecad9e96736a07f -Author: Brian Ewins -Date: Sat Feb 10 00:20:40 2007 +0000 - - Unreleased lock typo in cairo-scaled-font.c - - One path through _cairo_scaled_font_text_to_glyphs grabbed - the mutex but didn't release it, causing hangs in all - text rendering on the mac. - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a37f21cb17a24643f7513dff06bc2b5fd38e2583 -Author: Eugeniy Meshcheryakov -Date: Thu Feb 8 15:29:58 2007 -0800 - - [PS/PDF/SVG] Return a write_error nil surface on write errors - - src/cairo-pdf-surface.c | 4 +++- - src/cairo-ps-surface.c | 4 +++- - src/cairo-surface.c | 1 + - src/cairo-svg-surface.c | 4 +++- - src/cairoint.h | 1 + - 5 files changed, 11 insertions(+), 3 deletions(-) - -commit bf3cbe7660f03f6b4139f4cf79a4007c682a84bd -Author: Eugeniy Meshcheryakov -Date: Thu Feb 8 15:28:14 2007 -0800 - - [cairo-surface] Use a macro definition for all nil surfaces - - src/cairo-surface.c | 139 ++++++++++++++------------------------------------- - 1 files changed, 38 insertions(+), 101 deletions(-) - -commit aea0831d24c3fca59b9eb9dd8acce9d9cdd13f26 -Author: Kalle Vahlman -Date: Thu Feb 8 15:07:45 2007 -0800 - - [cairoint] Make it compile with libpng disabled - - src/cairoint.h | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit 4773b8a6d25e4b228471ad48616c08367ee84809 -Author: Peter Weilbacher -Date: Thu Feb 8 20:34:26 2007 +0100 - - Oops, correct typo in previous commit - - FALSA -> FALSE - - src/cairoint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e711700d5d766b4b923a10bfaabb57163b55a21d -Author: Peter Weilbacher -Date: Thu Feb 8 20:29:18 2007 +0100 - - Correct scaled font mutex definitions for OS/2 - - Using a zero without brackets to quiet remaining GCC compilation warning. - Use FALSE so that the mutex does not block on creation. - - src/cairoint.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 2d1db24d1e7f3967b7ab498ce0ed29508c08a04b -Author: Adrian Johnson -Date: Wed Feb 7 23:10:47 2007 +1030 - - PDF: Another fix for TrueType metrics - - Not all TrueType fonts have an em size of 2048. - - src/cairo-pdf-surface.c | 20 ++++++++++---------- - src/cairo-scaled-font-subsets-private.h | 6 +++--- - src/cairo-truetype-subset.c | 22 +++++++++++++--------- - 3 files changed, 26 insertions(+), 22 deletions(-) - -commit 274dfa4598bcb11b9f8330d23934a4ef1797fdbf -Author: Adrian Johnson -Date: Wed Feb 7 22:35:59 2007 +1030 - - PDF: Make text selection and extraction work - - - Add a to_unicode array to the scaled_font_subsets - for mapping glyphs to unicode characters - - - Add a function to the TrueType subsetting for - performing a reverse cmap for mapping glyph indices - to unicode characters. - - - Add a new scaled font backend function for mapping - glyph indices to unicode characters. Provide FreeType - and Win32 implementations of the font backend mapping - function. - - - Modify the PDF backend to embed ToUnicode streams - into each font. The unicode mapping is obtained by - first trying the reverse cmap. If this fails the font - backend mapping function is called. - - src/cairo-atsui-font.c | 2 + - src/cairo-ft-font.c | 33 +++++++ - src/cairo-pdf-surface.c | 126 +++++++++++++++++++++++++-- - src/cairo-scaled-font-subsets-private.h | 29 ++++--- - src/cairo-scaled-font-subsets.c | 15 +++- - src/cairo-truetype-subset-private.h | 23 +++++ - src/cairo-truetype-subset.c | 144 +++++++++++++++++++++++++++++++ - src/cairo-win32-font.c | 17 ++++ - src/cairoint.h | 18 ++++ - 9 files changed, 385 insertions(+), 22 deletions(-) - -commit 97a2522e0bbe8464028b9b42c79e0b3559b532be -Author: Carl Worth -Date: Tue Feb 6 21:19:30 2007 -0800 - - Add missing locking to _cairo_scaled_font_text_to_glyphs - - We recently added locking to cairo_scaled_font_glyph_extents and - to _cairo_surface_show_glyphs, but we had neglected the third - separate entry point into scaled_font code that does cache-using - glyph lookups, namely: _cairo_scaled_font_text_to_glyphs. - - These three separate functions are plainly visible in the - implementation of cairo_show_text. - - src/cairo-scaled-font.c | 15 ++++++++++----- - 1 files changed, 10 insertions(+), 5 deletions(-) - -commit 1503a41c7f115033b10470574027cffab0730687 -Author: Carl Worth -Date: Tue Feb 6 20:32:08 2007 -0800 - - Expand font_map locking to cover call to backend->scaled_font_create - - It seemed like a good idea to avoid holding the lock over the call - into the backend. But the procedure in place was quite broken: - - LOCK - Fail to find font in hash table - UNLOCK - Create font - LOCK - Insert font into hash table - UNLOCK - - since while we're busy creating the font and unlocked, another thread - can insert the font. Our paranoid hash table implementation noted - the problem quite readily. - - This patch simply removes the internal UNLOCK/LOCK to hold the mutex - over the whole procedure. - - src/cairo-scaled-font.c | 9 +++------ - 1 files changed, 3 insertions(+), 6 deletions(-) - -commit fc3ce1e80a89aab4f1ec75946771f6c2a79f0b90 -Author: Carl Worth -Date: Tue Feb 6 20:41:58 2007 -0800 - - test/pthread-show-text: Increease iterations to expose locking bug - - With 50 iterations I'm seeing the following assertion failure: - - cairo-hash.c:477: _cairo_hash_table_insert: Assertion `NOT_REACHED' failed. - - Thanks to Jan Slupski for pointing out this bug. - - test/pthread-show-text.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit d07827ba2a225f880f4bbf6980872f5ae8898288 -Author: Carl Worth -Date: Tue Feb 6 19:06:23 2007 -0800 - - ROADMAP: Drop 1.3.6 which is already in the past and note 8379 fix and pixman gradient improvements - - ROADMAP | 8 ++------ - 1 files changed, 2 insertions(+), 6 deletions(-) - -commit 672a668da1002dbcecda2e4805c6b54c86d4cff7 -Author: Carl Worth -Date: Tue Feb 6 19:05:07 2007 -0800 - - ROADMAP: Note that the 8801 locking bug is fixed. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit db3493bef7dba1e960f59563925fd9c5e75cb4ca -Author: Carl Worth -Date: Tue Feb 6 18:28:44 2007 -0800 - - Remove dead cff_dict_remove function - - I assume this was just a leftover that was meant to be removed - earlier. If not, please feel free to bring it back again. - - src/cairo-cff-subset.c | 14 -------------- - 1 files changed, 0 insertions(+), 14 deletions(-) - -commit 89cf8dbf522ce7ada0ee4cf9ea016ac2a89c8a75 -Author: Carl Worth -Date: Tue Feb 6 18:27:33 2007 -0800 - - Remove half-leftover debugging code from previous commit - - This was leading to link failures on CAIRO_LOCK_FILE, etc. - - src/cairoint.h | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 5d58e7ee66166b19e673c247fe41eae51f72fd92 -Author: Carl Worth -Date: Mon Feb 5 16:45:25 2007 -0800 - - Add scaled_font->mutex to allow locking for all subordinate objects - - A cairo_scaled_font_t can be implicitly shared among multiple threads - as the same cairo_scaled_font_t can be returned from different calls - to cairo_scaled_font_create. To retain the illusion that these - different calls produce distinct objects, cairo must internally lock - access when modifying them. - - Each glyph in the scaled font is represented by a cairo_surface_t - which is used when rendering the glyph. Instead of attempting to push - fine-grained locking of these surfaces down to the backend rendering - functions, a simple per-cairo_scaled_font_t lock has been introduced - which protects the entire rendering path against re-entrancy. - - Some care was required to ensure that existing re-entrancy was handled - appropriately; these cases are in the wrapping surfaces - (cairo-paginated, test-meta and test-paginated). - - Thanks to Vladimir Vukicev and Peter Weilbacher for testing/providing - the mutex definitions for win32 and os2 (respectively). - - src/cairo-paginated-surface.c | 21 ++++++++++++-- - src/cairo-scaled-font.c | 17 ++++++++--- - src/cairo-surface.c | 19 ++++++++----- - src/cairoint.h | 58 +++++++++++++++++++++++++++++++++++++++- - src/test-meta-surface.c | 21 ++++++++++++-- - src/test-paginated-surface.c | 19 ++++++++++++- - 6 files changed, 132 insertions(+), 23 deletions(-) - -commit 765715ad93d3daad1b8b53f6ea9fee82737923ea -Author: Carl Worth -Date: Tue Feb 6 17:29:03 2007 -0800 - - Move scaled font holdovers magic from reference to create to fix race condition - - Previously, with the magic in _cairo_scaled_font_reference(), - cairo_scaled_font_create() was releasing its lock just before - calling into reference() which would re-acquire the lock. - That left a window open during which a font we just discovered - in the holdovers table could be destroyed before we had a chance - to give it its initial reference back. - - src/cairo-scaled-font.c | 57 +++++++++++++++++++++------------------------- - 1 files changed, 26 insertions(+), 31 deletions(-) - -commit 9c359d61fc5df3e925e4b63503d60dc8fe8be6b3 -Author: Carl Worth -Date: Tue Feb 6 17:40:17 2007 -0800 - - Avoid holding lock when calling _cairo_scaled_font_fini - - As in the previous commit with the backend->scaled_font_create - function, we also don't want to hold the lock when calling into - the backend's fini function. - - src/cairo-scaled-font.c | 24 ++++++++++++++---------- - 1 files changed, 14 insertions(+), 10 deletions(-) - -commit 258175ffcd89dcc949c3dc6ee3cd660d057a1966 -Author: Carl Worth -Date: Tue Feb 6 17:21:22 2007 -0800 - - Don't hold mutex over backend->scaled_font_create - - This also allows some cleanup of the error-handling in - cairo_scaled_font_create, (no more goto statements). - - src/cairo-scaled-font.c | 48 +++++++++++++++++++++++----------------------- - 1 files changed, 24 insertions(+), 24 deletions(-) - -commit fc660511ec7a51be909e5ed940354d39ef7ad633 -Author: Adrian Johnson -Date: Wed Feb 7 11:05:33 2007 +1030 - - PDF: Correct the y value of Td in show_glyphs - - This bug would occur if the y coordinate of all the glyphs - in a single cairo_show_glyphs() call was not the same. - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 908469b5fcdc311a89868ab44baa85d0744985d1 -Author: Soren Sandmann Pedersen -Date: Tue Feb 6 16:37:45 2007 -0500 - - Apply patch from Marco Gritti and Jordan Crouse to correctly detect - AMD CPU's. Bug 9615. - - pixman/src/fbpict.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 9d3f537423b3cc0cb6a4b2607e9307c1eef9e074 -Author: Soren Sandmann Pedersen -Date: Tue Feb 6 16:27:42 2007 -0500 - - Remove left-over assert and some alpha checks from - fbCompositeSrc_8888x0565mmx(). Bug 9893. - - pixman/src/fbmmx.c | 52 +++++++++++++--------------------------------------- - 1 files changed, 13 insertions(+), 39 deletions(-) - -commit a8f8efb750fd3a8857c7f519b8645e578f75442b -Author: Adrian Johnson -Date: Mon Feb 5 18:29:30 2007 +1030 - - PS: Correct the TrueType Encoding and Charstrings - - The offsets and count was out by one as a result of the - change to include .notdef on the TrueType font. - - src/cairo-ps-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 28e3a20d79c3390547d3e53435c06442ca8ac8a2 -Author: Adrian Johnson -Date: Sun Feb 4 23:47:28 2007 +1030 - - PDF: Fix TrueType font metrics - - src/cairo-pdf-surface.c | 19 +++++++++++-------- - 1 files changed, 11 insertions(+), 8 deletions(-) - -commit 05ff2c77da86c7be95924f9af4d3ad944afbbf66 -Author: Adrian Johnson -Date: Sun Feb 4 19:00:16 2007 +1030 - - PDF: Add Encoding dictionary to TrueType fonts - - This is a fix for the bugs reported here - - http://lists.freedesktop.org/archives/cairo/2006-December/008984.html - - http://lists.freedesktop.org/archives/cairo/2007-January/009387.html - - Cairo PDFs will not print correctly from Adobe Reader. The symptoms are - that all the glyphs on the page are replaced with the same glyph. - - According to the PDF Reference an Encoding dictionary is not required - for the symbolic fonts used by cairo. However including the Encoding - dictionary fixes the printing problem. - - src/cairo-pdf-surface.c | 21 +++++++++++++++++++-- - 1 files changed, 19 insertions(+), 2 deletions(-) - -commit 3f8d5f505af4d7569ce38452f1be5d40bf6a00b4 -Author: Adrian Johnson -Date: Sun Feb 4 18:21:50 2007 +1030 - - TrueType: Include notdef glyph in the subset - - Required by the TrueType specification. - - src/cairo-truetype-subset.c | 23 ++++++++++++++++------- - 1 files changed, 16 insertions(+), 7 deletions(-) - -commit d22ba141e6c78bf1fc3dfc02c9aaf6d725233444 -Author: Adrian Johnson -Date: Sun Feb 4 16:54:57 2007 +1030 - - TrueType Subsetting: Whitespace change - - src/cairo-truetype-subset.c | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit e4a5011a2787bbb7ced338aaff2752aa23ac7892 -Author: Adrian Johnson -Date: Sun Feb 4 16:51:44 2007 +1030 - - TrueType Subsetting: Add comment - - src/cairo-truetype-subset.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit 7d05b9bdd328c7ec0422f45893fa0e0d6e9bb135 -Author: Eugeniy Meshcheryakov -Date: Sun Feb 4 16:26:18 2007 +1030 - - TrueType Subsetting: Sort table directory - - The TrueType specification requires the table directory - to be sorted by tag. - - src/cairo-truetype-subset.c | 25 +++++++++++++------------ - 1 files changed, 13 insertions(+), 12 deletions(-) - -commit 8b3176158351e62185294d512030c7af1ec4fabc -Author: Eugeniy Meshcheryakov -Date: Sun Feb 4 16:22:12 2007 +1030 - - TrueType Subsetting: Correct the checksum calculation of 'head' table - - Checksum field should be zero before calculating checksum. - - src/cairo-truetype-subset.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 0bf5e18b14f2bbaf3be3b31c4eb54ea3183f488a -Author: Eugeniy Meshcheryakov -Date: Sun Feb 4 16:19:05 2007 +1030 - - TrueType Subsetting : Correct the checksum calculation - - src/cairo-truetype-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2bd590b64987b7f0eb7310666ac20a8309e32842 -Author: Carl Worth -Date: Fri Feb 2 16:43:27 2007 -0800 - - ROADMAP: Note that linear gradient bug is fixed. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ae4f37e0a32c3e231c38434846e80fd90162d888 -Author: David Turner -Date: Fri Feb 2 10:30:24 2007 +0100 - - fixing gradient repeat mode computations - - This fixes the regression of linear gradient as demonstrated - by the recently added linear-gradient-reflect test. - - pixman/src/fbcompose.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit 0b7ba5ccfa21265c1b36919ff08bd3a1f0d1075b -Author: T Rowley -Date: Fri Feb 2 16:36:12 2007 -0800 - - Add linear-gradient-reflect test case - - This testcase works before the - e9bef30d2bcdf41c7b7f20b3517839c37e752f75 landing, and has visual - artifacts afterwards. - - test/Makefile.am | 2 + - test/linear-gradient-reflect-ref.png | Bin 0 -> 216 bytes - test/linear-gradient-reflect.c | 74 ++++++++++++++++++++++++++++++++++ - 3 files changed, 76 insertions(+), 0 deletions(-) - -commit 1757b49ebda3ec464a442d8c4f5ba39c88c1e3e5 -Author: Carl Worth -Date: Thu Feb 1 16:17:29 2007 -0800 - - ROADMAP: Add bug about broken cairo_show_text on win32 - - ROADMAP | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c621201a41639be8ba9ee735c2859aa117ba4216 -Author: Carl Worth -Date: Thu Feb 1 16:05:59 2007 -0800 - - Don't finish a finished surface in cairo_surface_destroy - - Calling cairo_surface_finish from cairo_surface_destroy was - triggering an error due to finish being called twice. The - error was usually hidden as the surface would still eventually - be destroyed. But it did clutter things up quite badly if a - user was trying to break on _cairo_error to track down a - problem. - - Thanks again to Stuart Parmenter - for pointing out the problem. - - src/cairo-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 159359325d4f8306feef6bebabecb31cbf0b9bf5 -Author: Carl Worth -Date: Thu Feb 1 15:22:27 2007 -0800 - - Fix crashes in cairo_surface_finish for NULL or nil - - Thanks to Stuart Parmenter for alerting us of this bug. - - src/cairo-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 26ef4746e66dccd8e0eb651db3e7f2826c068029 -Author: Carl Worth -Date: Thu Feb 1 15:21:12 2007 -0800 - - Add two tests of cairo_surface_finish to test/nil-surface.c - - This tests calling cairo_surface_finish with either NULL or - with a nil surface, (either currently causes a crash). - - test/nil-surface.c | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit 382e021ccb657ab1e342e0d0eee402ff5eb89e5d -Author: Dan Amelang -Date: Wed Jan 31 11:53:06 2007 -0800 - - Add "rectangles" perf test - - This test draws many small, solid pixel-aligned rectangles one at a - time. - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/rectangles.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 74 insertions(+), 0 deletions(-) - -commit 7abfb39709342fc3d95269ad2d76a5e1e8f8d38f -Author: Eugeniy Meshcheryakov -Date: Sun Jan 28 19:01:38 2007 +1030 - - CFF Subsetting: Add charset data to embedded font - - Current code for subsetting CFF fonts does not write charset information - into it. According to spec this means that font have ISOAdobe charset. - This charset contains only 228 names (excluding .notdef). This is not - enough for subfonts with 256 glyphs and causes bugs when viewing - generated PDFs. - - src/cairo-cff-subset.c | 253 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 252 insertions(+), 1 deletions(-) - -commit a63ceef06c2c015c8e5f0ad7b756ff6801996096 -Author: Carl Worth -Date: Fri Jan 26 18:03:18 2007 -0800 - - Fix _cairo_pattern_acquire_surface_for_surface to not clone outside surface extents - - Rotation and other transformations would cause extents to be - computed which were outside the bounds of the surface to be - cloned, (and for non repeating patterns). Now we simply - restrict the computed extents to the surface extents. - - This fixes the xlib failure of the recent rotate-image-surface-paint - test, (the apparently distinct ps failure remains). - - ROADMAP | 2 +- - src/cairo-pattern.c | 21 +++++++++++++++------ - 2 files changed, 16 insertions(+), 7 deletions(-) - -commit ebc1cd91f80ee154c02651b2db034a4335ca021c -Author: Carl Worth -Date: Sat Jan 20 00:50:38 2007 -0800 - - Add rotate-image-surface-paint test case - - This test exercises a clone_similar extents bug noticed by - Benjamin Otte. As expected, the xlib backend fails due to - that bug, (and interestingly, the ps backend is showing a - failure as well). - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/rotate-image-surface-paint-pdf-argb32-ref.png | Bin 0 -> 209 bytes - test/rotate-image-surface-paint-ref.png | Bin 0 -> 232 bytes - test/rotate-image-surface-paint-svg-ref.png | Bin 0 -> 248 bytes - test/rotate-image-surface-paint.c | 97 ++++++++++++++++++++ - 6 files changed, 99 insertions(+), 0 deletions(-) - -commit 691f9d1c0c4c98f6e6aa7b2f41fa0b8670e6205d -Author: Vladimir Vukicevic -Date: Wed Jan 24 17:34:57 2007 -0800 - - [mmx] avoid casts between int32 and __m64 types - - The MS compiler doesn't like this; _mm_cvtsi32_si64 and _mm_cvtsi64_si32 - must be used. - - pixman/src/fbmmx.c | 10 ++++------ - 1 files changed, 4 insertions(+), 6 deletions(-) - -commit 8ff70d6b9106b2dc57e903104237285a7062c2f0 -Author: Vladimir Vukicevic -Date: Wed Jan 24 16:47:48 2007 -0800 - - [win32] regression with win32 glyph y-offsets (mozbug#365021) - - src/cairo-win32-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0231d18a57dd31d9d619d53b70e71c1b916e0d75 -Author: Vladimir Vukicevic -Date: Wed Jan 24 16:46:36 2007 -0800 - - [atsui] add function prototype for a public 10.4 function that's - - src/cairo-atsui-font.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 50136a78063137ebca16bcb839bec33e2917824e -Author: Eugeniy Meshcheryakov -Date: Wed Jan 24 15:51:00 2007 -0500 - - [PDF-CFF] Fix bad /LastChar value for CFF fonts in PDF backend - - PDF backend sets /LastChar value in Type1C font dictionary incorrectly. - acroread then complains about incorrect /Widths in font. - The last char is numchars - 1, since it's zero-based. - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bb02b4e5ec40ac37462f487f2ad74b0123814277 -Merge: 48c2896... 3b77512... -Author: Michael Emmel -Date: Tue Jan 23 22:22:20 2007 -0800 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit 48c2896f694872a55a43e12fc375bde2ce2650a9 -Author: Michael Emmel -Date: Tue Jan 23 22:17:24 2007 -0800 - - Turned off acclerated rectangle drawing in dfb backend - causes bugs in gtk - - src/cairo-directfb-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3b7751279c034caf2f86464cd1936d7ce1736ccc -Author: Behdad Esfahbod -Date: Mon Jan 22 14:42:48 2007 -0500 - - [pixman/src/fbmmx.c] Add comment around M64 - - /* cast to void* in the middle to shut gcc up warning about - * "dereferencing type-punned pointers". - */ - - pixman/src/fbmmx.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit c316b7220dcd59653533a487d81c5e3d71729218 -Author: Brian Ewins -Date: Mon Jan 22 01:13:50 2007 +0000 - - [ATSUI] Some glyph operations cannot be 'unsupported'. (#9530) - - The atsui font backend returned the internal 'unsupported' error - code for errors in operations that do not have fallbacks. Now that - the underlying cause, deleted glyphs, has been fixed, I'm changing - the status code returned to the public 'no memory' one; it should - be the only condition triggering the failure now. - - src/cairo-atsui-font.c | 9 +++------ - 1 files changed, 3 insertions(+), 6 deletions(-) - -commit 49b9f0c082944029af8dab84da87f7746c5f72b9 -Author: Brian Ewins -Date: Mon Jan 22 01:10:52 2007 +0000 - - [ATSUI] out-of-range glyphs should be treated as deleted. (#9530) - - Glyphs outside the range 0x0-0xffff are not valid in atsui, but - scaled_glyph stores unsigned long. Ensure that invalid values do - not cause errors. - - src/cairo-atsui-font.c | 14 +++++++++++--- - 1 files changed, 11 insertions(+), 3 deletions(-) - -commit 4dfa5d33e451886b05cf767ae5a538e152ec534d -Author: Brian Ewins -Date: Mon Jan 22 01:09:49 2007 +0000 - - [ATSUI] Handle deleted glyphs correctly. (#9530) - - This code ensures that deleted glyphs are not drawn. - - src/cairo-atsui-font.c | 36 +++++++++++++++++++++++++++++++----- - 1 files changed, 31 insertions(+), 5 deletions(-) - -commit 1a9d3b5185f454a63bc96c2e570c931c3ecabbb5 -Author: Behdad Esfahbod -Date: Sun Jan 21 15:11:31 2007 -0500 - - [configure.in] Use AC_MSG_RESULT in PKG_CHECK_MODULES's second branch - - If PKG_CHECK_MODULES fails, it does not print out any check results and so, no - newlines. This is kinda silly, at least in the case that no second branch is - provided, but I think that's the way it is, to let users decide what to print. - - We now just do a AC_MSG_RESULT(no) and continue with what we used to do. - Inspired by Tor Lillqvist's similar change in Pango. - - configure.in | 38 ++++++++++++++++++++++++-------------- - 1 files changed, 24 insertions(+), 14 deletions(-) - -commit 6aa8e80cc722774191c4418c9a2cd434c0538508 -Author: Behdad Esfahbod -Date: Sun Jan 21 15:06:02 2007 -0500 - - [pixman/src/fbmmx.c] Hide "dereferencing type-punned pointer" warnings - - The warning happens all the place when the code converts from ullong to __m64. - The way the conversion is done is a C idiom: 1) get a pointer to the value, 2) - convert it to the suitable pointer type for the target, 3) dereference it. - That is "*(__m64*)(&m)" in this case. This is necessarily (as opposed to just - casting to target type) because the two types may not be "compatible" from the - compiler's point of view. Example of types that are not compatbile is structs - vs anything. - - The "dereferencing type-punned pointer will break strict-aliasing rules" from - gcc exactly means: "some code may be assuming that pointers with different - types do not compare equal (or otherwise share the same target object). If - you case a pointer to a different type and dereference it, it may happen - here." However, in our usecase, it's clear that the compiler cannot make any - false assumptions. So we just go ahead and hide it by using a middle cast to - "void *". Since the compiler does not many any aliasing assumptions about - generic pointers, it will not warn either. (Though the problems if any, will - still occure. So this is not an ideal solution to this problem and should be - used very carefully, to no hide useful warnings for when things go loose on - some weird architecture.) - - Another solution would have been to use gcc's "may_alias" function attribute, - but trying to define a may_alias version of __m64 hit a bug in gcc. That is, - try replacing "__m64" with "m64" and define: - - typedef __m64 m64 __attribute__((may_alias)); - - and see it fail to compile. This seems to be because of the special vector - type that __m64 has. - - pixman/src/fbmmx.c | 34 ++++++++++++++++++---------------- - 1 files changed, 18 insertions(+), 16 deletions(-) - -commit 1a8d0a33ce589367f0e46006caecb544a3945048 -Author: Behdad Esfahbod -Date: Sat Jan 20 13:01:35 2007 -0500 - - PDF: Fix approximate diagonal in recent commit - - Use x+y as an upper bound for sqrt(x*x+y*y), not x*y. - - src/cairo-pdf-surface.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 1e52ce5a0981aac72452f1f7d7988e6382b0abcc -Author: Carl Worth -Date: Sat Jan 20 03:20:30 2007 -0800 - - doc tmpl churn - - doc/public/tmpl/cairo.sgml | 11 ----------- - 1 files changed, 0 insertions(+), 11 deletions(-) - -commit 53358ddc73b985b5cf6493dc48c54073fd7c59fc -Author: Carl Worth -Date: Sat Jan 20 03:20:18 2007 -0800 - - configure.in: Increment version to 1.3.13 after making the 1.3.12 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c34a1a75fdb886b7a69875fb92d30c6dfd9d39cb -Author: Carl Worth -Date: Sat Jan 20 03:04:31 2007 -0800 - - configure.in: Increment cairo version to 1.3.12 - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 26e6c73aab3fbfb4e2c893b4064cd8e85dc25346 -Author: Carl Worth -Date: Sat Jan 20 02:58:15 2007 -0800 - - NEWS: Add notes for 1.3.12 snapshot - - NEWS | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 93 insertions(+), 0 deletions(-) - -commit 87b3ac10af6b18d57236ae7e595e84e11e12eaad -Author: Carl Worth -Date: Sat Jan 20 02:01:29 2007 -0800 - - cairo-wideint: Fix to eliminate comparison of signed and unsigned values - - src/cairo-wideint.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit d6bb0d772018809caaa215d562292c8aeb2990d3 -Author: Carl Worth -Date: Sat Jan 20 01:47:06 2007 -0800 - - .gitignore: Add text-glyph-range - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit b06222b99091796486cc0f938dd7487c66dd8420 -Author: Carl Worth -Date: Sat Jan 20 00:56:07 2007 -0800 - - ROADMAP: Add 3 bugs to fix before the next snapshot - - ROADMAP | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 6c40575a225e3d6d138adae9d492881b8358f881 -Author: Carl Worth -Date: Fri Jan 19 23:23:32 2007 -0800 - - Fix two misspellings in a recent comment. - - src/cairo-pdf-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 5f9d70a56158e468683dba953d6eaceea4dfd644 -Author: Carl Worth -Date: Fri Jan 19 23:11:09 2007 -0800 - - PDF: Fix CAIRO_EXTEND_NONE for source surface patterns - - The former workaround for the lack of non-repeating patterns in PDF - (as far as we can tell) was broken for a source pattern matrix that - resulted in scaling the source surface pattern down. This was - demonstrated by the failure of the scale-down-source-surface-paint - test which now passes. - - The old code would have also allowed for bogus repeated pattern - instances to appear if the source surface pattern was translated - sufficiently far off the destination surface in just the right - direction. This bug is also fixed. - - src/cairo-pdf-surface.c | 41 +++++++++++++++++++++++++++++++++-------- - 1 files changed, 33 insertions(+), 8 deletions(-) - -commit 2f6d184e6659e91909ed933d36bef441f1b5df4d -Author: Kalle Vahlman -Date: Sat Jan 13 12:36:03 2007 +0200 - - Add --use-ms option to cairo-perf-diff-files - - This allows for comparing perf files generation on different hardware - platforms, (since the ticks can be very different on different hardware). - - perf/cairo-perf-diff-files.c | 16 +++++++++++++++- - 1 files changed, 15 insertions(+), 1 deletions(-) - -commit 8354906381b2ccc3211214bad55c1f505d3dce3a -Author: M Joonas Pihlaja -Date: Sat Dec 16 22:21:36 2006 +0200 - - Make UTF-8 output from cairo-perf-diff-files optional - - This patch adds options to disable the UTF-8 change bars and replace - them with ASCII '*' gfx. The motivation is that UTF-8 really does some - damage to some terminals, and some always forget to pipe stuff through - a pager to make it safe. The new options for cairo-perf-diff-files are: - - --no-utf - --no-bars - - perf/cairo-perf-diff-files.c | 135 ++++++++++++++++++++++++++++++------------ - 1 files changed, 98 insertions(+), 37 deletions(-) - -commit d91d5d12f3a40beebefcd8a5d8b912f5492e112b -Author: Carl Worth -Date: Fri Jan 19 15:52:06 2007 -0800 - - Add new scale-down-source-surface-paint test - - This new test case demonstrates a bug in the PDF backend, (source - surface patterns are repeated even with a pattern extend of NONE). - - Thanks to Romuald and Claudio Saavedra - for pointing out the bug. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/scale-down-source-surface-paint-ref.png | Bin 0 -> 133 bytes - test/scale-down-source-surface-paint.c | 72 ++++++++++++++++++++++++++ - 4 files changed, 75 insertions(+), 0 deletions(-) - -commit d08502d939b44956591f2865a73264713427194b -Merge: eefcfbf... 28d6a22... -Author: Vladimir Vukicevic -Date: Thu Jan 18 16:50:41 2007 -0800 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo - -commit eefcfbf5a168569518a8dcf099b5f41b570f504b -Author: Vladimir Vukicevic -Date: Thu Jan 18 16:49:42 2007 -0800 - - [nquartz] add test reference files for nquartz backend - - test/caps-joins-alpha-nquartz-ref.png | Bin 0 -> 2466 bytes - test/clip-nesting-nquartz-ref.png | Bin 0 -> 1067 bytes - test/clip-nesting-nquartz-rgb24-ref.png | Bin 0 -> 956 bytes - test/clip-push-group-nquartz-ref.png | Bin 0 -> 203 bytes - test/clip-twice-nquartz-ref.png | Bin 0 -> 1171 bytes - test/clip-twice-nquartz-rgb24-ref.png | Bin 0 -> 1111 bytes - test/dash-caps-joins-nquartz-ref.png | Bin 0 -> 4727 bytes - test/degenerate-path-nquartz-rgb24-ref.png | Bin 0 -> 188 bytes - test/fill-and-stroke-alpha-add-nquartz-ref.png | Bin 0 -> 603 bytes - test/fill-and-stroke-alpha-nquartz-ref.png | Bin 0 -> 550 bytes - test/fill-and-stroke-nquartz-ref.png | Bin 0 -> 286 bytes - test/fill-and-stroke-nquartz-rgb24-ref.png | Bin 0 -> 264 bytes - test/fill-degenerate-sort-order-nquartz-ref.png | Bin 0 -> 2470 bytes - ...ill-degenerate-sort-order-nquartz-rgb24-ref.png | Bin 0 -> 2098 bytes - test/fill-rule-nquartz-ref.png | Bin 0 -> 2079 bytes - test/fill-rule-nquartz-rgb24-ref.png | Bin 0 -> 1790 bytes - test/new-sub-path-nquartz-ref.png | Bin 0 -> 386 bytes - test/new-sub-path-nquartz-rgb24-ref.png | Bin 0 -> 357 bytes - test/operator-clear-nquartz-ref.png | Bin 0 -> 1195 bytes - test/operator-clear-nquartz-rgb24-ref.png | Bin 0 -> 1244 bytes - test/random-intersections-nquartz-ref.png | Bin 0 -> 203877 bytes - test/random-intersections-nquartz-rgb24-ref.png | Bin 0 -> 179204 bytes - test/rel-path-nquartz-ref.png | Bin 0 -> 212 bytes - test/rel-path-nquartz-rgb24-ref.png | Bin 0 -> 228 bytes - test/source-clip-scale-nquartz-ref.png | Bin 0 -> 148 bytes - test/trap-clip-nquartz-ref.png | Bin 0 -> 5814 bytes - test/trap-clip-nquartz-rgb24-ref.png | Bin 0 -> 5385 bytes - 27 files changed, 0 insertions(+), 0 deletions(-) - -commit 7b67c20a013ed45a10676cb129794ccfb66dc04c -Author: Vladimir Vukicevic -Date: Thu Jan 18 16:49:14 2007 -0800 - - [nquartz] use pattern snapshots, and correctly setup/teardown source - - Use a snapshot for the pattern, to avoid the pattern being freed undreneath - us before we actually render (as when rendering to a CG PDF context). Also - correctly return UNSUPPORTED from setup source, avoiding brokenness when - the source isn't torn down correctly. - - src/cairo-nquartz-surface.c | 81 ++++++++++++++++++++++++++++++++++++------- - 1 files changed, 68 insertions(+), 13 deletions(-) - -commit 28d6a228f030dbec05ab5b0ba680db272df67c49 -Author: Carl Worth -Date: Thu Jan 18 13:01:53 2007 -0800 - - Fix cairo_get_dash and cairo_get_dash_count APIs - - Make these functions consistent with other cairo_get functions - by making cairo_get_dash_count return the count directly, and - removing the cairo_status_t return value from cairo_get_dash. - - src/cairo.c | 37 +++++++++++-------------------------- - src/cairo.h | 6 +++--- - test/get-and-set.c | 17 ++++++----------- - 3 files changed, 20 insertions(+), 40 deletions(-) - -commit bc7072064e421e4c5e5043aada6cae1d8250938f -Author: Carl Worth -Date: Wed Jan 17 15:07:12 2007 -0800 - - cairo-path-fixed: Don't add redundant, succesive MOVE_TO operations to the path - - Instead, we can simply tweak the argument value for the last - MOVE_TO operation that's already at the end of the path. - - This helps backends like pdf that are currently emitting all - of the redundant MOVE_TO operations in the output. - - src/cairo-path-fixed.c | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit d9df44d8071d038060e0cc987871c185f7733a3d -Merge: 4e1c2b1... b02b86d... -Author: Vladimir Vukicevic -Date: Wed Jan 17 15:08:21 2007 -0800 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo - -commit 4e1c2b1ad84a695662dea9fbe60a975c928eb277 -Author: Robert O'Callahan -Date: Wed Jan 17 15:07:31 2007 -0800 - - Rename cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list - - src/cairo-clip-private.h | 2 +- - src/cairo-clip.c | 2 +- - src/cairo-gstate.c | 4 ++-- - src/cairo.c | 6 +++--- - src/cairo.h | 2 +- - src/cairoint.h | 2 +- - test/get-clip.c | 26 +++++++++++++------------- - 7 files changed, 22 insertions(+), 22 deletions(-) - -commit b02b86da5c6c82f9b653698f8480855a35777155 -Author: Adrian Johnson -Date: Sun Sep 24 00:55:20 2006 +0930 - - PDF: Compress the content stream - - Use cairo-deflate-stream to compress all content streams emitted by the - PDF surface. - - src/cairo-pdf-surface.c | 32 +++++++++++++++++++++++++++++--- - 1 files changed, 29 insertions(+), 3 deletions(-) - -commit 7f246462eb3cc2576387755fa2d554394e86225c -Author: Adrian Johnson -Date: Sun Sep 24 00:52:01 2006 +0930 - - Add cairo-deflate-stream.c - - Add a new stream type that compresses the stream using the zlib deflate method. - This is intended for use by the PDF surface. - - src/Makefile.am | 1 + - src/cairo-deflate-stream.c | 142 +++++++++++++++++++++++++++++++++++++ - src/cairo-output-stream-private.h | 4 + - 3 files changed, 147 insertions(+), 0 deletions(-) - -commit b3440e85305af4f5ceef9437af7c26d3232dc55a -Author: Adrian Johnson -Date: Sun Sep 24 00:48:36 2006 +0930 - - PDF: Use Td where possible instead of Tm for positioning glyphs - - This avoids emitting the font matrix for every single glyph. - - src/cairo-pdf-surface.c | 38 ++++++++++++++++++++++++++------------ - 1 files changed, 26 insertions(+), 12 deletions(-) - -commit 5c2136ea7c3aea1ae90b46b0dd645a4e1b5cc9a1 -Author: Dan Williams -Date: Wed Jan 17 15:47:24 2007 -0500 - - Implement pixman fbCompositeSrc_8888x0565mmx - - MMX-accelerate for fbCompositeSrc_8888x0565. Upstream X bug for the - same issue: - - http://bugs.freedesktop.org/show_bug.cgi?id=9682 - - pixman/src/fbmmx.c | 122 +++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/fbmmx.h | 13 +++++ - pixman/src/fbpict.c | 14 +++++- - pixman/src/pixman-remap.h | 1 + - 4 files changed, 148 insertions(+), 2 deletions(-) - -commit a2ec383ff128617d33efa5760ec4b5f9688e8a13 -Author: Pavel Roskin -Date: Sun Aug 13 01:57:56 2006 -0400 - - Clean up _fbOnes() - - The implementation of _FbOnes in iccolor.c would not work on 64-bit - longs correctly. Fortunately, it's only used on integers, so make it - explicit in the declaration. - - Use an inline function for the gcc builtin implementation to make sure - that it's never used with arguments of incorrect size. - - There is no __INT_MIN__ in gcc 4.1.1, but it's not an issue now because - the argument is 32-bit. - - Signed-off-by: Pavel Roskin - - pixman/src/iccolor.c | 4 ++-- - pixman/src/icint.h | 12 ++++++------ - 2 files changed, 8 insertions(+), 8 deletions(-) - -commit 9e332eadad00e115fdcdbc816608a0537f5a9b9c -Author: Brian Ewins -Date: Tue Jan 16 01:25:53 2007 +0000 - - [test] Test handling of out-of-range glyph indexes. (#9530) - - Adds a test for missing and out-of-range glyph indexes. The expected - ATSUI renderings are added as references, please replace these with - FT renderings when they become available. - - test/Makefile.am | 4 + - test/text-glyph-range-ref.png | Bin 0 -> 1810 bytes - test/text-glyph-range-rgb24-ref.png | Bin 0 -> 1645 bytes - test/text-glyph-range.c | 133 +++++++++++++++++++++++++++++++++++ - 4 files changed, 137 insertions(+), 0 deletions(-) - -commit 9cabf5b5f7dd840f91b5be29567cf11cf40fc998 -Author: Behdad Esfahbod -Date: Mon Jan 15 00:26:20 2007 -0500 - - [TODO] Move some items from ROADMAP, and some new ones, into TODO - - ROADMAP | 17 ----------------- - TODO | 40 ++++++++++++++++++++++++++++++++++------ - 2 files changed, 34 insertions(+), 23 deletions(-) - -commit 1002d016834926a771aa0a6cc4bdf83cb009173a -Author: Kjartan Maraas -Date: Thu Jan 11 17:59:16 2007 -0500 - - Remove unused variables (#7963) - - src/cairo-pdf-surface.c | 3 +-- - src/cairo-ps-surface.c | 3 +-- - src/cairo-svg-surface.c | 3 +-- - 3 files changed, 3 insertions(+), 6 deletions(-) - -commit eff6d3c7a013476a7e4cf56c05ad95c9f01fe793 -Author: Behdad Esfahbod -Date: Sun Dec 17 15:49:50 2006 -0500 - - [cairo-type1-subset] Do not use an array of pointers, to reduce .data size - - We use a string pool plus lookup indices tables now, generated by perl code - embedded before the tables. The table in question is the default PS encoding - table, so no changes are expected in the future. - - src/cairo-type1-subset.c | 107 +++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 105 insertions(+), 2 deletions(-) - -commit cf1d95e714d0814e52910c4306d090ef6d989093 -Author: Soeren Sandmann -Date: Tue Jan 9 15:05:29 2007 -0800 - - Add SRC and IN implementations to avoid CompositeGeneral in some cases hit by PDF rendering - - The patch implements a few more operations with special cases MMX - code. On my laptop, applying the patch to cairo speeds up the - benchmark (rendering page 14 of a PDF file[*]) from 20.9 seconds - to 14.9 seconds, which is an improvement of 28.6%. - - [*] http://people.redhat.com/jakub/prelink.pdf - - This also benefits the recently added unaligned_clip perf case: - - image-rgb unaligned_clip-100 0.11 -> 0.06: 1.65x speedup - â–‹ - image-rgba unaligned_clip-100 0.11 -> 0.06: 1.64x speedup - â–‹ - - pixman/src/fbmmx.c | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++ - pixman/src/fbmmx.h | 43 ++++++++++ - pixman/src/fbpict.c | 98 ++++++++++++++++++++++- - 3 files changed, 366 insertions(+), 1 deletions(-) - -commit d5531c4f506caa9ad66fbeef1822a7036d4dd528 -Author: Carl Worth -Date: Tue Jan 9 14:27:32 2007 -0800 - - Add unaligned_clip perf case courtesy of Jeff Muizelaar - - Conflicts: - - perf/Makefile.am - perf/cairo-perf.c - perf/cairo-perf.h - - perf/Makefile.am | 9 +++--- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/unaligned-clip.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 73 insertions(+), 4 deletions(-) - -commit 504cbdae37232d65f5c1f8913e55ac63397ad4f0 -Author: Brian Ewins -Date: Thu Jan 4 03:12:53 2007 +0000 - - [ATSUI] [2/2] Implement CAIRO_SCALED_GLYPH_INFO_SURFACE support.(#9467) - - All non-quartz surfaces need to fall back to using glyph surfaces, - in order to clip correctly. This second patch implements glyph - surface support, correcting the unclipped text seen in the clip-operator - test. - - src/cairo-atsui-font.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 111 insertions(+), 2 deletions(-) - -commit 77171cb8e23704db3eeddfe92cc4e0e83d02b36b -Author: Brian Ewins -Date: Thu Jan 4 02:16:47 2007 +0000 - - [ATSUI] [1/2] Implement CAIRO_SCALED_GLYPH_INFO_SURFACE support.(#9467) - - All non-quartz surfaces need to fall back to using glyph surfaces, - in order to clip correctly. The bug being fixed is visible in the - clip-operator test. This first patch takes out direct rendering support - for non-quartz surfaces, causing all image tests to fail. - - src/cairo-atsui-font.c | 77 +++++++++++++++++++++++++++-------------------- - 1 files changed, 44 insertions(+), 33 deletions(-) - -commit 116ae23fc64a8477a116bd6f3b60c7b5404af1c5 -Author: Jinghua Luo -Date: Mon Jan 8 16:51:28 2007 +0800 - - Glitz: position large glyph correctly. - - I introduced this bug while fixing test glyph-cache-pressure - (commit 3b1d0d3519a7d0328f897927d3534f10750d30db). I also changed - GLYPH_CACHE_MAX_HEIGHT and GLYPH_CACHE_MAX_HEIGHT to 96, then we - still can cache at least 28 glyphes per font(512 ^ 2 / 96 ^ 2). - This make us not hit slow path too much and improve performance - a lot. - - src/cairo-glitz-surface.c | 9 +++++++-- - 1 files changed, 7 insertions(+), 2 deletions(-) - -commit aed4029a104d22cbd363ab9e365320980d22bc86 -Author: Brian Ewins -Date: Thu Jan 4 02:13:05 2007 +0000 - - [ATSUI] Refactor code for creating CGBitmapContexts from cairo surfaces. - - No changes to test output. This just prepares code for reuse when - implementing support for CAIRO_SCALED_GLYPH_INFO_SURFACE. - - src/cairo-atsui-font.c | 85 +++++++++++++++++++++++++++--------------------- - 1 files changed, 48 insertions(+), 37 deletions(-) - -commit 9a005c6221cc279e65d94956c74028a84baf1716 -Author: Brian Ewins -Date: Thu Jan 4 02:09:16 2007 +0000 - - [ATSUI] correct the rotation of glyph paths. (#9378) - - This fixes a bug visible in the text-rotate test when - CAIRO_TEST_GENERATE_REFERENCE_IMAGE is defined. - - src/cairo-atsui-font.c | 92 ++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 65 insertions(+), 27 deletions(-) - -commit 58265f3508959298eabab55ec28dc6d9516eedc3 -Author: Brian Ewins -Date: Thu Jan 4 05:54:52 2007 +0000 - - [ATSUI] Select Bitstream Vera and CSS font families reliably. - - Previously the code selected using the family name; this intermittently - selected a bold or italic face instead of the regular one. The new approach - is to select the desired font instance directly if possible, and only use - the family lookup if that fails. This isn't 100% correct but should always - provide the correct font instance for CSS generic font families. The - bug was sometimes reproducible with the select-font-face test. - - src/cairo-atsui-font.c | 56 ++++++++++++++++++++++++++++++++++------------- - 1 files changed, 40 insertions(+), 16 deletions(-) - -commit 22e271d687ad871a4e8a069ee2945c42062c1cb4 -Author: Brian Ewins -Date: Thu Jan 4 15:06:48 2007 +0000 - - [perf/cairo-perf-diff] Pass CAIRO_AUTOGEN_OPTIONS to autogen. - - Makes it was possible to run cairo-perf-diff with different - configurations, eg with quartz enabled. - - perf/cairo-perf-diff | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit d30b1bf157126668c4309731022b2ded2ad09571 -Author: Brian Ewins -Date: Thu Jan 4 01:36:32 2007 +0000 - - [ATSUI] Scale glyphs using _cairo_matrix_compute_scale_factor (#9350) - This bug shows up in the text-rotate test. - - src/cairo-atsui-font.c | 24 ++++++++++++++++-------- - 1 files changed, 16 insertions(+), 8 deletions(-) - -commit ded08256ef7fdc9e9468342cf5635c5e99d4d64d -Author: Behdad Esfahbod -Date: Sun Jan 7 02:08:15 2007 -0500 - - Spell check the docs - - doc/public/tmpl/cairo-version.sgml | 10 +++++----- - src/cairo-array.c | 2 +- - src/cairo-cache.c | 12 ++++++------ - src/cairo-font-options.c | 6 +++--- - src/cairo-ft-font.c | 6 +++--- - src/cairo-gstate.c | 4 ++-- - src/cairo-image-surface.c | 4 ++-- - src/cairo-lzw.c | 2 +- - src/cairo-meta-surface.c | 2 +- - src/cairo-path-stroke.c | 4 ++-- - src/cairo-pattern.c | 10 +++++----- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-scaled-font.c | 4 ++-- - src/cairo-surface.c | 2 +- - src/cairo-type1-fallback.c | 4 ++-- - src/cairo-unicode.c | 4 ++-- - src/cairo-wideint.c | 2 +- - src/cairo-win32-surface.c | 4 ++-- - 19 files changed, 44 insertions(+), 44 deletions(-) - -commit caa3c2e1e7901031488f5dae243a755a4e4daec9 -Author: Alp Toker -Date: Sun Jan 7 02:03:30 2007 +0000 - - Fix various code/comment typos - - pixman/src/pixregion.c | 2 +- - src/cairo-matrix.c | 2 +- - src/cairo-pdf-surface.c | 20 ++++++++++---------- - src/cairo-win32-surface.c | 2 +- - src/cairo-xcb-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 10 +++++----- - 6 files changed, 20 insertions(+), 20 deletions(-) - -commit c96a71e709e537f690da6d4a184aa4c64fe11028 -Author: Carl Worth -Date: Fri Jan 5 15:56:06 2007 -0800 - - Restrict _clip_and_composite_trapezoids to destination extents - - This is a fix for a huge performance bug (as measured by perf/long-lines). - Previously, if no explicit clip was set, _clip_and_composite_trapezoids - would allocate a mask as large as the trapezoids and rasterize into it. - With this fix, it restricts the mask by the extents of the destination - surface. - - This doesn't address the identical performance problem with the xlib - backend, which is due to a very similar bug in the X server. - - image-rgb long-lines-uncropped-100 465.42 -> 5.03: 92.66x speedup - █████████████████████████████████████████████▉ - image-rgba long-lines-uncropped-100 460.80 -> 5.02: 91.87x speedup - █████████████████████████████████████████████■- - src/cairo-surface-fallback.c | 28 ++++++++++++++++++---------- - 1 files changed, 18 insertions(+), 10 deletions(-) - -commit cc11c264ec0c7d6586c9349bcdbe3f4156e7ab6e -Author: Carl Worth -Date: Wed Jan 3 16:27:52 2007 -0800 - - Add long-lines perf case - - This shows some very bad slowness for lines that are mostly - offscreen (like 100x slower than just drawing the visible - portion). - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/long-lines.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 120 insertions(+), 0 deletions(-) - -commit 11dd9eab693297961b988a73e22bf4d5850eb485 -Author: Behdad Esfahbod -Date: Thu Jan 4 23:35:51 2007 -0500 - - [src/Makefile.am] Don't remove cairo-features.h in "make clean" - - That's generated by configure, so it should be removed by "make distclean". - - src/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d4a58b2437a21794562d874f3d390e0e59688bc0 -Author: Jonathan Watt -Date: Thu Jan 4 16:46:22 2007 +0100 - - Remove WINVER from public header file - - src/cairo-win32-surface.c | 10 ++++++++++ - src/cairo-win32.h | 10 ---------- - 2 files changed, 10 insertions(+), 10 deletions(-) - -commit e6369f9478e84e32ca19d5f204dbe3eee828c429 -Author: Peter Weilbacher -Date: Thu Jan 4 00:11:44 2007 +0100 - - Fix for OS/2 display drivers that cannot handle 32bit output (feed them a 24bit buffer instead). - - src/cairo-os2-surface.c | 70 ++++++++++++++++++++++++++++++++++++++++------- - 1 files changed, 60 insertions(+), 10 deletions(-) - -commit 26b06516a77fbbe88f2eb081e2763c1434959137 -Author: Dan Amelang -Date: Sat Dec 30 21:14:14 2006 -0800 - - Use the "-" option (instead of "-a") when calling "strings" - - This is needed to fix the AX_C_FLOAT_WORDS_BIGENDIAN macro on Mac OS X 10.2, - which was brought up here: - - https://bugs.freedesktop.org/show_bug.cgi?id=9124 - - acinclude.m4 | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit eafd6e454a85c807f2addf7768046fea58aea3f9 -Author: Behdad Esfahbod -Date: Thu Dec 28 20:01:18 2006 -0500 - - In _cairo_scaled_font_text_to_glyphs, bail if text is zero-length (#5177) - - src/cairo-scaled-font.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit ab29396ef9f68f5534f927b2b5bb0a7ffac86509 -Author: Behdad Esfahbod -Date: Thu Dec 28 19:51:20 2006 -0500 - - [test] Add new test text-zero-len (#5177) - - The test passes an empty string to cairo_show_text, cairo_text_path, and - cairo_text_extents, and NULL and an invalid pointer, with zero num_glyphs to - cairo_show_glyphs, cairo_glyph_path, and cairo_glyph_extents. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/text-zero-len-ref.png | Bin 0 -> 130 bytes - test/text-zero-len.c | 88 ++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 91 insertions(+), 0 deletions(-) - -commit 2d30161e8922e66b276341810c21ce1b740f6699 -Author: Jinghua Luo -Date: Sun Dec 24 18:31:02 2006 +0800 - - glitz: fix all compiler warnings in glitz backend. - - src/cairo-glitz-surface.c | 31 +++++++++++++++++++++++-------- - 1 files changed, 23 insertions(+), 8 deletions(-) - -commit 8fd7328ebb77b0a641cf30bded85e482ea63ad97 -Author: Behdad Esfahbod -Date: Sat Dec 23 17:08:04 2006 -0500 - - Don't call into backends if num_glyphs is zero (#5177) - - Just return success in _cairo_scaled_font_show_glyphs() and - _cairo_surface_show_glyphs() if num_glyphs is zero. - - src/cairo-scaled-font.c | 3 +++ - src/cairo-surface.c | 3 +++ - 2 files changed, 6 insertions(+), 0 deletions(-) - -commit 3212fc4f0fcc66ec3a93994f253c1477eb434572 -Author: Behdad Esfahbod -Date: Sat Dec 23 16:55:44 2006 -0500 - - [cairo-scaled-font] Skip invisible glyphs (like space) in glyph_extents() (#9422) - - When computing extents for an array of glyphs, just taking min/max of x/y for - the bounding box of each glyph doesn't work. The reason being that an - invisible glyph (like the space glyph) should not modify the resulting - extents, but it will. So now we skip invisible glyphs. - - src/cairo-scaled-font.c | 58 +++++++++++++++++++++++++++++----------------- - 1 files changed, 36 insertions(+), 22 deletions(-) - -commit 8368fa2fcfcf851b9a5b070d22905472f1f76234 -Author: Brian Ewins -Date: Sat Dec 23 15:44:16 2006 -0500 - - [test/text-rotate] Use the same text for measuring and printing - - test/text-rotate.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 261d6b805c77dacb27d29d054e48ed548f1fbcc5 -Author: Brian Ewins -Date: Sat Dec 23 15:33:52 2006 -0500 - - [ATSUI] Compute glyph extents from the bounding boxes of their paths (#9350) - - src/cairo-atsui-font.c | 156 +++++++++++++++++++++++++++++++++++------------ - 1 files changed, 116 insertions(+), 40 deletions(-) - -commit ee01bd9e173b6d36d6255553d0fcf1b54027dffd -Author: Carl Worth -Date: Sat Dec 23 00:47:40 2006 -0800 - - Bump version to 1.3.11 after making 1.3.10 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b35cfde7f0e2896ccc1453f9716cb9b61c42cf94 -Author: Carl Worth -Date: Sat Dec 23 00:35:14 2006 -0800 - - Increment cairo version to 1.3.10 (and libtool versioning to 12:3:10) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit d6895af9f165a033fc7e53233994a0885c2f817f -Author: Carl Worth -Date: Sat Dec 23 00:29:21 2006 -0800 - - NEWS: Add notes for 1.3.10 snapshot - - NEWS | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 59 insertions(+), 0 deletions(-) - -commit f46fcd1847031b46a73780177f9cb16033169a44 -Author: Carl Worth -Date: Sat Dec 23 00:29:01 2006 -0800 - - Annoying template churn - - doc/public/tmpl/cairo-text.sgml | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit c08bd4ec377c6b97c9edb75a25101beb9568fd5e -Author: Carl Worth -Date: Sat Dec 23 00:03:31 2006 -0800 - - Ignore another test case binary - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit ba531642f79d492ecbad8f086f1e44b56e157e36 -Author: Carl Worth -Date: Tue Dec 19 21:34:16 2006 -0800 - - Add optimization for rectilinear stroke - - This custom stroking code allows backends to use optimized region-based - drawing operations for rectilinear strokes. This results in a 5-25x - performance improvement when drawing rectilinear shapes: - - image-rgb box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup - ████████████████████████▋ - image-rgba box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup - ████████████████████████▋ - xlib-rgb box-outline-stroke-100 0.49 -> 0.06: 8.67x speedup - ███████▋ - xlib-rgba box-outline-stroke-100 0.22 -> 0.04: 5.39x speedup - ████■- - In other words, using cairo_stroke instead of cairo_fill to draw the - same shape was 5-15x slower before, but is 1.2-2x faster now. - - src/cairo-path-fixed-private.h | 3 +- - src/cairo-path-fixed.c | 4 + - src/cairo-path-stroke.c | 318 +++++++++++++++++++++++- - src/cairo.c | 11 +- - test/ft-text-vertical-layout-type3-ref.png | Bin 3933 -> 3934 bytes - test/ft-text-vertical-layout-type3-svg-ref.png | Bin 3956 -> 3957 bytes - 6 files changed, 329 insertions(+), 7 deletions(-) - -commit b1189118532a1fe93e126843af739809d38a62bd -Author: Carl Worth -Date: Fri Dec 22 17:11:08 2006 -0800 - - Put ft-text-vertical-layout-type1 back on the XFAIL list - - I must not have the right font available, (test result is coming out - looking like the result of ft-text-vertical-layout-type3, Vera?). - - We should switch this test to load a bundled font, (should do that for - all font-using tests, too). - - test/Makefile.am | 1 + - test/ft-text-vertical-layout-type1.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit 7b1509f4f37118d14bd5d70365d1608ead5e2819 -Author: Carl Worth -Date: Tue Dec 19 13:13:11 2006 -0800 - - Reimplement path.has_current point as a 1-bit bitfield - - src/cairo-path-fixed-private.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9d2d3b95e359cd2829c8d02a378dbfec2065e832 -Author: Carl Worth -Date: Thu Dec 21 08:20:20 2006 -0800 - - Add new rectilinear-stroke test - - This is in preparation for an optimized implementation of cairo_stroke - for rectilinear paths. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/rectilinear-stroke-ref.png | Bin 0 -> 213 bytes - test/rectilinear-stroke.c | 138 +++++++++++++++++++++++++++++++++++++++ - 4 files changed, 141 insertions(+), 0 deletions(-) - -commit 39ce31ade64e1c3b9e5880134ab77ca96f48f1b9 -Author: Jinghua Luo -Date: Fri Dec 22 22:05:20 2006 +0800 - - Glitz: fix a potential use after free bug in _cairo_glitz_surface_old_show_glyphs. - - There is a race condition between glyph unlocking and glyph cache thawing. - Moving down _cairo_scaled_font_thaw_cache a few lines fixes the problem and make - crashes go away. - - src/cairo-glitz-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 344901a1a128b7e843c3bff0a4a12c36be7acbc8 -Author: Behdad Esfahbod -Date: Wed Dec 20 18:03:33 2006 -0500 - - [test] Fix typo in test comment, again - - test/ft-text-vertical-layout-type1.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 473ae3aa9510b750f54cbf889180e3c4784da1b7 -Author: Carl Worth -Date: Mon Dec 18 17:00:17 2006 -0800 - - Rename remaining cairo_path_data to cairo_path in function names, etc. - - src/cairo-path-private.h | 19 ++-- - src/cairo-path.c | 237 +++++++++++++++++++++++----------------------- - src/cairo.c | 10 +- - 3 files changed, 134 insertions(+), 132 deletions(-) - -commit def0e6d41d1a9108693db112f95d76bb6cfd0aaa -Author: Carl Worth -Date: Mon Dec 18 16:37:53 2006 -0800 - - Rename cairo-path-data.c to cairo-path.c (and similar) - - src/Makefile.am | 4 +- - src/cairo-path-data-private.h | 58 ----- - src/cairo-path-data.c | 497 ----------------------------------------- - src/cairo-path-private.h | 58 +++++ - src/cairo-path.c | 497 +++++++++++++++++++++++++++++++++++++++++ - src/cairo.c | 2 +- - 6 files changed, 558 insertions(+), 558 deletions(-) - -commit 13c143bb52cab62a7a857a38a8463a8fa56f4632 -Author: Carl Worth -Date: Mon Dec 18 16:33:32 2006 -0800 - - Rename cairo-path.c to cairo-path-fixed.c - - src/Makefile.am | 2 +- - src/cairo-path-fixed.c | 639 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-path.c | 639 ------------------------------------------------ - 3 files changed, 640 insertions(+), 640 deletions(-) - -commit 267afe7be398db4ab90956660828ed25cfd19acf -Author: Carl Worth -Date: Mon Dec 18 16:05:42 2006 -0800 - - test/.gitignore: Ignore binarries for some recently added tests - - test/.gitignore | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit f3b9f486cd763c7805ec041319817cfb8c51128a -Author: Brian Ewins -Date: Sun Dec 17 22:26:02 2006 -0500 - - [ATSUI] Use screen metrics instead of ideal metrics to compute glyph extents - - The glyph extent computation was totally busted. It was using "logical" - extents and it was not correctly handling rotations, etc. It all looks a lot - better now. - - src/cairo-atsui-font.c | 32 +++++++++++++++++--------------- - 1 files changed, 17 insertions(+), 15 deletions(-) - -commit c6ec6ed696f55f65abbcfccb1e9d2c5678cf491a -Author: Behdad Esfahbod -Date: Sun Dec 17 18:42:05 2006 -0500 - - [tests/ft-text-vertical-layout-type3] Remove comment that this emits Type3 font - - This test used to be named -truetype, which reflected the type of font used in - the test, in contrast to the -type1 test that uses a Type1 font. However, we - renamed this test to -type3 to emphasize the fact that a TrueType subset is - not emitted for vertical fonts and a Type3 fallback font is generated. - - Now things have changed: we try generating a Type1 fallback font which is what - is happening for this test. Moreover, the -typ1 test also is generating a - Type1 fallback font since the Type1 subset font is not useful for vertical - fonts. - - test/ft-text-vertical-layout-type3.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 50efd71935d0aa8d5b780b3ea2c3fd4c5333ca82 -Author: Behdad Esfahbod -Date: Sun Dec 17 18:35:16 2006 -0500 - - [type1-subset] Return UNSUPPORTED for vertical fonts - - This fixes the last problem with vertical fonts in PS/PDF. As such, remove - ft-text-vertical-layout-type1 test from XFAIL and add PS-specific ref image - to pass. - - src/cairo-type1-subset.c | 3 +++ - test/Makefile.am | 2 +- - ...ft-text-vertical-layout-type1-ps-argb32-ref.png | Bin 0 -> 1877 bytes - 3 files changed, 4 insertions(+), 1 deletions(-) - -commit 207e38e8ba009a5e4d7994ee490d478c6a695336 -Author: Behdad Esfahbod -Date: Sun Dec 17 18:25:48 2006 -0500 - - [PS] Fix typo in comment emitted for Type1 fallback font subsets - - src/cairo-ps-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0bea2ce7f7e9c4b46d1125b07ed719fbb8b7102c -Author: Behdad Esfahbod -Date: Sun Dec 17 14:31:39 2006 -0500 - - [pdiff] Define _GNU_SOURCE to get correct symbols out of - - math.h does not define __USE_ISOC99 otherwise. - - test/pdiff/pdiff.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2ca6a767ee067742205ee76f891e36c8ec36135e -Author: Behdad Esfahbod -Date: Sun Dec 17 14:24:57 2006 -0500 - - [pdiff] Don't use float math functions if not using gcc with C99 - - The float version of many math functions were introduced in C99, and were - causing compile failure on systems like OS X. We now define them to their - double variant if __USE_ISOC99 is not defined. We may want to expand it later - to cover non-gcc compilers too, but since this is pdiff only, it's not really - important. - - test/pdiff/pdiff.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit 0d9b2d041578c183b026b90c3760ce8dc59e2834 -Author: Behdad Esfahbod -Date: Sun Dec 17 14:09:15 2006 -0500 - - [configure] Use AC_C_INLINE to correctly define inline - - Previously we were defining a symbol INLINE and use that in one place, while - other places were using straight inline. With the AC_C_INLINE macro we can - just leave it to autoconf to correctly choose what inline should be defined - to. - - configure.in | 1 + - src/cairo-png.c | 2 +- - src/cairoint.h | 7 +------ - 3 files changed, 3 insertions(+), 7 deletions(-) - -commit 294d1a3c4e1865763ba1c9ac8d55827cd470280b -Author: Behdad Esfahbod -Date: Sun Dec 17 01:06:16 2006 -0500 - - [test] Add ft-text-vertical-layout-type3-ps-argb32-ref.png - - The PS output for ft-text-vertical-layout-type3 looks correct, except for some - antialiasing mismatch. Ading ref image to fix this, and so, remove the test - from XFAIL. - - test/Makefile.am | 4 ++-- - ...ft-text-vertical-layout-type3-ps-argb32-ref.png | Bin 0 -> 1879 bytes - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit cab3f84ad334050739e6fa05e8dbc2a7dcb9eca7 -Author: Behdad Esfahbod -Date: Sat Dec 16 18:48:59 2006 -0500 - - [test] Fix typo in test comment - - test/ft-text-vertical-layout-type1.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 46add53973de5ba4ae4d6d02d1dd87e5487336c3 -Author: Behdad Esfahbod -Date: Sat Dec 16 18:46:54 2006 -0500 - - [cairo-gstate] Don't bypass glyph transformation if font_matrix has translation (#9365) - - We have tests for this (ft-text-vertical-*), but unfortunately they didn't - prevent the regression here because they have been marked XFAIL, since we didn't - quite fix them for PS. - - src/cairo-gstate.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 57589a90490f9bb9e4926c0b138eb95f16db374b -Author: Behdad Esfahbod -Date: Sat Dec 16 18:18:47 2006 -0500 - - [pdiff] Use CAIRO_CFLAGS, to make sure warnings are enabled - - test/pdiff/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8f2ad0affd4fe4821992e87487bc2737e9c538e5 -Author: Behdad Esfahbod -Date: Sat Dec 16 18:16:46 2006 -0500 - - [pdiff] Fix compiler warnings, that were causing crashes - - test/pdiff/pdiff.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit be6edd64a3f45f7fb33f7d57b71b1ef467b474e1 -Author: Brian Ewins -Date: Sat Dec 16 15:43:46 2006 -0500 - - [ATSUI] Round glyph locations to nearest pixel - - This is what cairo_scaled_font_show_glyphs() does, as well as backends like - xlib and win32. - - src/cairo-atsui-font.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) - -commit bf1c2ef1e2b6cffffb0f02fe5cb8df0728026642 -Author: Brian Ewins -Date: Sat Dec 16 15:40:21 2006 -0500 - - [ATSUI] Support disabling antialiased text - - src/cairo-atsui-font.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 4c95e2b7bf15c2c12498ae07a16d95ae98501431 -Author: M Joonas Pihlaja -Date: Sat Dec 16 20:00:56 2006 +0200 - - New performance test case "mosaic" for splines. - - perf/Makefile.am | 4 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/mosaic.c | 168 ++ - perf/mosaic.h | 4387 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 4560 insertions(+), 1 deletions(-) - -commit fe21f9d8ca1e509952b1dd84a5c0430953ca663a -Author: Frederic Crozat -Date: Sat Dec 16 13:55:21 2006 -0500 - - [check-defs.sh] Fix make check for OPD platforms - - Make symbol checks work on OPD platform (such as IA64 or PPC64). - - src/check-def.sh | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit fa618df6e216f9418d4769ba01cd305f3f12a113 -Merge: 2b946cb... 81a620f... -Author: Carl Worth -Date: Thu Dec 14 21:10:21 2006 -0800 - - Merge branch 'master' of git.cairographics.org:/git/cairo into cairo - -commit 2b946cba0e2e0bc1ddfda2aad87f1e482568c1b1 -Author: Carl Worth -Date: Thu Dec 14 21:09:45 2006 -0800 - - Bump cairo version to 1.3.9 after making 1.3.8 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 129b55f5fcc4c2ae5b63ac6eb73fce8a708e4874 -Author: Carl Worth -Date: Thu Dec 14 20:44:25 2006 -0800 - - Increment cairo version to 1.3.8 (and libtool versioning to 12:2:10) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8fa86e897091ad8ce4c286896df56d44892040ee -Author: Carl Worth -Date: Thu Dec 14 20:43:31 2006 -0800 - - NEWS: Add notes for cairo 1.3.8 snapshot - - NEWS | 21 +++++++++++++++++++++ - 1 files changed, 21 insertions(+), 0 deletions(-) - -commit 81a620fb66a1eb341fefaad26c9d452e494890cb -Author: Jonathan Watt -Date: Fri Dec 15 04:52:28 2006 +0100 - - revert accidental mode changes in my previous commit - - 0 files changed, 0 insertions(+), 0 deletions(-) - -commit 15e8486ef1558b8049a4c7a5c2f50a7e4a2599da -Merge: bf78be6... 8b31038... -Author: U-JONATHAN-X60S\jonathan -Date: Fri Dec 15 02:31:13 2006 +0100 - - Merge branch 'master' of git://git.cairographics.org/git/cairo - -commit bf78be63fc35dc13899209ee818f37fe3f564fed -Author: U-JONATHAN-X60S\jonathan -Date: Fri Dec 15 00:48:54 2006 +0100 - - Fix a couple of character spacing issues on Windows - - src/cairo-win32-surface.c | 105 +++++++++++++++++++++++++-------------------- - src/cairo-win32.h | 10 ++++ - src/cairoint.h | 10 +++- - 3 files changed, 76 insertions(+), 49 deletions(-) - -commit 8b31038b9fb7f8fc3eb2729c3d14de5c0b130873 -Author: Carl Worth -Date: Thu Dec 14 10:16:34 2006 -0800 - - Fix a couple of more stale images holding up 'make distcheck' - - test/Makefile.am | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit e9bef30d2bcdf41c7b7f20b3517839c37e752f75 -Author: David Turner -Date: Thu Dec 14 06:55:58 2006 -0800 - - Optimize gradient computations - - We update the test suite reference images where needed, (pdiff - avoided a few, but most still needed updating). We take advantage - of the need for new reference images to shrink some of the giant - tests to speed them up a bit. - - This optimization provides a 2x improvement in linear gradient - generation performance (numbers from an x86 laptop): - - image-rgb paint_linear_rgba_source-512 26.13 -> 11.13: 2.35x speedup - █■- image-rgb paint_linear_rgba_source-256 6.47 -> 2.76: 2.34x speedup - █■- image-rgba paint_linear_rgb_over-256 6.51 -> 2.86: 2.28x speedup - █▎ - image-rgb paint_linear_rgba_over-512 28.62 -> 13.70: 2.09x speedup - █■- image-rgba fill_linear_rgb_over-256 3.24 -> 1.94: 1.66x speedup - â–‹ - image-rgb stroke_linear_rgba_over-256 5.68 -> 4.10: 1.39x speedup - â– - - pixman/src/fbcompose.c | 425 +++++++++++++++++++++++---------- - test/clip-operator-ref.png | Bin 36956 -> 8262 bytes - test/clip-operator-rgb24-ref.png | Bin 16507 -> 3258 bytes - test/clip-operator.c | 6 +- - test/mask-ref.png | Bin 87899 -> 8381 bytes - test/mask-rgb24-ref.png | Bin 71010 -> 7041 bytes - test/mask-svg-argb32-ref.png | Bin 87728 -> 8405 bytes - test/mask-svg-rgb24-ref.png | Bin 81753 -> 0 bytes - test/mask.c | 6 +- - test/operator-clear-ref.png | Bin 4933 -> 1084 bytes - test/operator-clear-rgb24-ref.png | Bin 4218 -> 965 bytes - test/operator-clear.c | 6 +- - test/operator-source-ref.png | Bin 19763 -> 4422 bytes - test/operator-source-rgb24-ref.png | Bin 14666 -> 3201 bytes - test/operator-source.c | 6 +- - test/text-pattern-ref.png | Bin 1721 -> 1717 bytes - test/text-pattern-rgb24-ref.png | Bin 1418 -> 1414 bytes - test/trap-clip-ref.png | Bin 71832 -> 5723 bytes - test/trap-clip-rgb24-ref.png | Bin 63049 -> 5365 bytes - test/trap-clip-svg-argb32-ref.png | Bin 71728 -> 0 bytes - test/trap-clip.c | 6 +- - test/unbounded-operator-ref.png | Bin 11964 -> 2777 bytes - test/unbounded-operator-rgb24-ref.png | Bin 6047 -> 1315 bytes - test/unbounded-operator.c | 6 +- - 24 files changed, 316 insertions(+), 145 deletions(-) - -commit af9cce6aa295327b5256f55900b3debf9112b6ca -Author: Carl Worth -Date: Thu Dec 14 09:18:26 2006 -0800 - - Fix 'make distcheck' after recent file removals - - pixman/src/Makefile.am | 3 +-- - test/Makefile.am | 20 -------------------- - 2 files changed, 1 insertions(+), 22 deletions(-) - -commit 4888a02666972e9c09d9ffd9854538191cf59d77 -Author: Carl Worth -Date: Thu Dec 14 04:56:19 2006 -0800 - - test: Remove ps-specific reference images no longer needed thanks to pdiff - - test/caps-joins-ps-argb32-ref.png | Bin 1463 -> 0 bytes - test/caps-sub-paths-ps-argb32-ref.png | Bin 240 -> 0 bytes - test/close-path-ps-argb32-ref.png | Bin 311 -> 0 bytes - test/dash-offset-negative-ps-argb32-ref.png | Bin 204 -> 0 bytes - test/glyph-cache-pressure-ps-argb32-ref.png | Bin 1672 -> 0 bytes - test/infinite-join-ps-argb32-ref.png | Bin 220 -> 0 bytes - test/leaky-polygon-ps-argb32-ref.png | Bin 355 -> 0 bytes - test/line-width-ps-argb32-ref.png | Bin 244 -> 0 bytes - test/select-font-face-ps-argb32-ref.png | Bin 1333 -> 0 bytes - test/show-text-current-point-ps-argb32-ref.png | Bin 1479 -> 0 bytes - test/transforms-ps-argb32-ref.png | Bin 420 -> 0 bytes - 11 files changed, 0 insertions(+), 0 deletions(-) - -commit 5e0818d79d13f5942485b411a04a4eebd56d36f8 -Author: Carl Worth -Date: Thu Dec 14 04:33:08 2006 -0800 - - test: Remove svg-specific reference images no longer needed thanks to pdiff - - This doesn't get rid of all the SVG reference images, but it - does clean up quite a few. - - test/fill-and-stroke-alpha-svg-ref.png | Bin 509 -> 0 bytes - test/glyph-cache-pressure-svg-ref.png | Bin 3165 -> 0 bytes - test/mask-ctm-svg-rgb24-ref.png | Bin 118 -> 0 bytes - test/mask-surface-ctm-svg-rgb24-ref.png | Bin 118 -> 0 bytes - test/push-group-svg-rgb24-ref.png | Bin 2887 -> 0 bytes - test/select-font-face-svg-ref.png | Bin 2430 -> 0 bytes - test/set-source-svg-rgb24-ref.png | Bin 104 -> 0 bytes - test/show-text-current-point-svg-ref.png | Bin 2398 -> 0 bytes - test/trap-clip-svg-rgb24-ref.png | Bin 73082 -> 0 bytes - 9 files changed, 0 insertions(+), 0 deletions(-) - -commit c426e71141d75dbfd39730bf9c4847309fcd9d9e -Author: Carl Worth -Date: Thu Dec 14 04:17:07 2006 -0800 - - Hook up pdiff to the test suite now that its written in C - - test/Makefile.am | 2 ++ - test/buffer-diff.c | 30 ++++++++++++++++++++++++++++++ - test/cairo-test.c | 12 +++++------- - 3 files changed, 37 insertions(+), 7 deletions(-) - -commit 305cbd8e71a2d21a2c71ed2c382daa5bfcec3992 -Author: Carl Worth -Date: Thu Dec 14 04:14:24 2006 -0800 - - pdiff: Remove casts since we're out of the land of X++ where void* is stupidly broken - - test/pdiff/lpyramid.c | 6 ++---- - 1 files changed, 2 insertions(+), 4 deletions(-) - -commit f175b23559f3ba759d222538fd28922c1cbe2196 -Author: Carl Worth -Date: Thu Dec 14 03:49:31 2006 -0800 - - pdiff: Rename everything to .c and fix an last littele C++ isms. - - The only things we had missed were a few new/delete pairs, and some - obvious header file fixups, (like not doing ). - - test/pdiff/CompareArgs.cpp | 114 ------------- - test/pdiff/Makefile.am | 6 +- - test/pdiff/PerceptualDiff.cpp | 101 ------------ - test/pdiff/args.c | 119 ++++++++++++++ - test/pdiff/args.cpp | 118 -------------- - test/pdiff/args.h | 2 +- - test/pdiff/lpyramid.c | 113 +++++++++++++ - test/pdiff/lpyramid.cpp | 113 ------------- - test/pdiff/pdiff.c | 361 +++++++++++++++++++++++++++++++++++++++++ - test/pdiff/pdiff.cpp | 347 --------------------------------------- - test/pdiff/pdiff.h | 16 +- - test/pdiff/perceptualdiff.c | 101 ++++++++++++ - 12 files changed, 706 insertions(+), 805 deletions(-) - -commit 18a4fa448fcdb6a72f427e997ee2b234f96a56f7 -Author: Carl Worth -Date: Thu Dec 14 03:25:51 2006 -0800 - - pdiff: Replace CompareArgs class with args_t struct - - This gets rid of nearly the last vestiges of C++ from the pdiff code. - - test/pdiff/CompareArgs.cpp | 4 +- - test/pdiff/CompareArgs.h | 41 -------------- - test/pdiff/Makefile.am | 4 +- - test/pdiff/PerceptualDiff.cpp | 39 +++++++------ - test/pdiff/args.cpp | 118 +++++++++++++++++++++++++++++++++++++++++ - test/pdiff/args.h | 46 ++++++++++++++++ - 6 files changed, 190 insertions(+), 62 deletions(-) - -commit 871aba6c80b8f3101eac51cc055ad9ca26770a95 -Author: Carl Worth -Date: Thu Dec 14 03:16:18 2006 -0800 - - pdiff: Fix return value from perceptualdiff program - - test/pdiff/PerceptualDiff.cpp | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 2174ee247554feef6a24792390d858b12fd44acd -Author: Carl Worth -Date: Thu Dec 14 03:15:14 2006 -0800 - - pdiff: Remove all uses of std::string - - test/pdiff/CompareArgs.cpp | 18 ++++++------------ - test/pdiff/CompareArgs.h | 1 - - test/pdiff/PerceptualDiff.cpp | 24 ++++++++---------------- - 3 files changed, 14 insertions(+), 29 deletions(-) - -commit 91b156b82e0219b2b851c218813f24024cad7c69 -Author: Carl Worth -Date: Thu Dec 14 03:02:48 2006 -0800 - - pdiff: Remove RGBAImage classes now that we're just using cairo image surfaces - - test/pdiff/CompareArgs.cpp | 1 - - test/pdiff/CompareArgs.h | 3 - - test/pdiff/Makefile.am | 4 +- - test/pdiff/PerceptualDiff.cpp | 1 - - test/pdiff/RGBAImage.cpp | 144 ----------------------------------------- - test/pdiff/RGBAImage.h | 105 ------------------------------ - test/pdiff/pdiff.cpp | 80 +++++++++++++++++++---- - test/pdiff/pdiff.h | 2 + - 8 files changed, 69 insertions(+), 271 deletions(-) - -commit 4c812c38e4ec9885b9451185127e5c8877354d75 -Author: Carl Worth -Date: Thu Dec 14 02:10:35 2006 -0800 - - pdiff: Remove hideous C++ reference passing - - test/pdiff/pdiff.cpp | 26 +++++++++++++------------- - 1 files changed, 13 insertions(+), 13 deletions(-) - -commit 2457756afd66b69840640eff3aaf72e7ea0f64e8 -Author: Carl Worth -Date: Thu Dec 14 02:08:30 2006 -0800 - - pdiff: Remove intermingled statements and declarations - - test/pdiff/pdiff.cpp | 74 +++++++++++++++++++++++++++++-------------------- - 1 files changed, 44 insertions(+), 30 deletions(-) - -commit e947f5a4bdf4a4134faa8961406a10f32cf4e2d6 -Author: Carl Worth -Date: Thu Dec 14 01:09:05 2006 -0800 - - pdiff: Add .gitignore for perceptualdiff binary - - test/pdiff/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit bb4d4dc77117ded253d1f507e771de7f98c69fb8 -Author: Carl Worth -Date: Thu Dec 14 01:06:42 2006 -0800 - - pdiff: Remove old, unused Yee_Compare interface - - test/pdiff/Makefile.am | 2 +- - test/pdiff/Metric.cpp | 295 ------------------------------------------------ - test/pdiff/pdiff.cpp | 281 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 282 insertions(+), 296 deletions(-) - -commit 53c3a2f75b7f065b4c769ad087bbc9aaaaf6d7ee -Author: Carl Worth -Date: Thu Dec 14 01:00:43 2006 -0800 - - pdiff: Rewrite main program to use cairo-based pdiff_compare interface - - test/pdiff/CompareArgs.cpp | 23 ++++++++----------- - test/pdiff/CompareArgs.h | 5 ++- - test/pdiff/Makefile.am | 1 - - test/pdiff/Metric.cpp | 35 ++++++++++++++--------------- - test/pdiff/Metric.h | 32 --------------------------- - test/pdiff/PerceptualDiff.cpp | 47 ++++++++++++++++++++++++++++++---------- - 6 files changed, 65 insertions(+), 78 deletions(-) - -commit 358645d6eb68b4eaf79159e7aefa01bca4cb0acf -Author: Carl Worth -Date: Thu Dec 14 00:42:52 2006 -0800 - - pdiff: Rip out unused ImgDiff code, (dropping -output option) - - test/pdiff/CompareArgs.cpp | 7 ------- - test/pdiff/CompareArgs.h | 1 - - test/pdiff/Metric.cpp | 11 ----------- - test/pdiff/PerceptualDiff.cpp | 14 -------------- - test/pdiff/README.txt | 4 ++-- - 5 files changed, 2 insertions(+), 35 deletions(-) - -commit 4438fb6dca1b4b6c0a30d66508339c3997ee94a4 -Author: Carl Worth -Date: Thu Dec 14 00:38:39 2006 -0800 - - pdiff: Move function that depends on command-line argument class to same file as main - - test/pdiff/Metric.cpp | 61 ----------------------------------------- - test/pdiff/Metric.h | 9 +++++- - test/pdiff/PerceptualDiff.cpp | 54 ++++++++++++++++++++++++++++++++++++ - test/pdiff/RGBAImage.h | 2 +- - 4 files changed, 62 insertions(+), 64 deletions(-) - -commit c7379fcea478fbd3fc5e09a10828586e641e2375 -Author: Carl Worth -Date: Thu Dec 14 00:30:54 2006 -0800 - - pdiff: Rewrite Laplacian pyramid code from C++ to C - - test/pdiff/LPyramid.cpp | 87 ------------------------------- - test/pdiff/LPyramid.h | 38 -------------- - test/pdiff/Makefile.am | 4 +- - test/pdiff/Metric.cpp | 22 ++++---- - test/pdiff/PerceptualDiff.cpp | 2 +- - test/pdiff/lpyramid.cpp | 113 +++++++++++++++++++++++++++++++++++++++++ - test/pdiff/lpyramid.h | 32 ++++++++++++ - 7 files changed, 159 insertions(+), 139 deletions(-) - -commit 29456d38658b8ba7267fadeac9820a68227df787 -Author: Carl Worth -Date: Thu Dec 14 00:13:23 2006 -0800 - - pdiff: Convert C++-style comments to good old-fashioned C-style comments - - test/pdiff/CompareArgs.cpp | 2 +- - test/pdiff/CompareArgs.h | 20 ++++++++++---------- - test/pdiff/LPyramid.cpp | 12 ++++++------ - test/pdiff/LPyramid.h | 4 ++-- - test/pdiff/Metric.cpp | 24 +++++++++++++----------- - test/pdiff/Metric.h | 5 +++-- - test/pdiff/RGBAImage.cpp | 6 +++--- - test/pdiff/RGBAImage.h | 2 +- - 8 files changed, 39 insertions(+), 36 deletions(-) - -commit 34a6af3c55cf8bba292cec8dc42fdc1917759a08 -Author: Carl Worth -Date: Wed Dec 13 18:10:21 2006 -0800 - - pdiff: Delete all trailing whitespace. - - test/pdiff/CompareArgs.cpp | 4 +- - test/pdiff/CompareArgs.h | 4 +- - test/pdiff/LPyramid.cpp | 4 +- - test/pdiff/LPyramid.h | 4 +- - test/pdiff/Metric.cpp | 52 ++++++++++++++++++++-------------------- - test/pdiff/PerceptualDiff.cpp | 2 +- - test/pdiff/RGBAImage.cpp | 8 +++--- - test/pdiff/RGBAImage.h | 2 +- - 8 files changed, 40 insertions(+), 40 deletions(-) - -commit d421a856d08fba2fa0fdbd362d947497a952b347 -Author: Carl Worth -Date: Wed Dec 13 18:08:25 2006 -0800 - - pdiff: Re-indent all code - - I've given up on trying to preserve the old code formatting - for compatibility. We're not planning on augmenting the algorithm - itself, just integrating it into cairo. So I don't expect to - make changes that we'll be all that interested in pushing - upstream. - - test/pdiff/CompareArgs.cpp | 162 +++++++------- - test/pdiff/CompareArgs.h | 46 ++-- - test/pdiff/LPyramid.cpp | 100 ++++---- - test/pdiff/LPyramid.h | 38 ++-- - test/pdiff/Metric.cpp | 514 ++++++++++++++++++++-------------------- - test/pdiff/PerceptualDiff.cpp | 52 ++-- - test/pdiff/RGBAImage.cpp | 168 +++++++------- - test/pdiff/RGBAImage.h | 86 ++++---- - test/pdiff/pdiff.h | 20 +- - 9 files changed, 593 insertions(+), 593 deletions(-) - -commit 4f6611ef6cac3928427b6fc28dab40829ef0d748 -Author: Carl Worth -Date: Wed Dec 13 17:40:59 2006 -0800 - - pdiff: Fix line endings - - test/pdiff/LPyramid.cpp | 174 +++++++++++++++++++++++----------------------- - test/pdiff/LPyramid.h | 76 ++++++++++---------- - 2 files changed, 125 insertions(+), 125 deletions(-) - -commit ccb3a6c4deadeaecf133dce6f1b152507ab5a14f -Author: Carl Worth -Date: Tue Dec 12 16:49:27 2006 -0800 - - pdiff: Compile pdiff algorithm as a libtool convenience library - - The convenience library provides a pdiff_compare function with a - cairo interface into the perceptual diff algorithm. - - test/Makefile.am | 2 +- - test/pdiff/Makefile.am | 14 +++++++++----- - test/pdiff/Metric.cpp | 18 ++++++++++++++++++ - test/pdiff/RGBAImage.h | 2 +- - test/pdiff/pdiff.h | 38 ++++++++++++++++++++++++++++++++++++++ - 5 files changed, 67 insertions(+), 7 deletions(-) - -commit 55f776876d231a035cdc5da9bb90cbba14f19248 -Author: Carl Worth -Date: Tue Dec 12 16:37:35 2006 -0800 - - test: Rework buffer_diff interface as new compare_surfaces - - This is a slightly kinder interface that accepts cairo_image_surface_t - pointers rather than pointers to the raw image data and width, height, - stride. This brings us closer to hooking up the pdiff code. - - test/buffer-diff.c | 28 +++++++++++++--------------- - test/buffer-diff.h | 15 ++++++--------- - 2 files changed, 19 insertions(+), 24 deletions(-) - -commit 0d7870b6bf13edfe513e2de25a5814a0a1b78c79 -Author: Carl Worth -Date: Tue Dec 12 16:15:08 2006 -0800 - - pdiff: Teach pdiff code to accept cairo image surfaces - - This is a second small step in enabling cairo's test suite and the - pdiff code to start working together. - - test/pdiff/CompareArgs.cpp | 49 ++++++++++++++------------------- - test/pdiff/CompareArgs.h | 1 + - test/pdiff/Makefile.am | 1 + - test/pdiff/RGBAImage.h | 64 ++++++++++++++++++++++++++++++++++++++----- - 4 files changed, 79 insertions(+), 36 deletions(-) - -commit a87f494d4b91f3acc78d6d7dd737939633f28d71 -Author: Dan Amelang -Date: Tue Dec 12 16:34:50 2006 -0800 - - Don't use the GNU-only grep option "-a" - - We now use strings first, then grep to find the magic value, as suggested - by various people in the reports for the bugs that this fixes: - - https://bugs.freedesktop.org/show_bug.cgi?id=9247 - https://bugs.freedesktop.org/show_bug.cgi?id=9124 - - acinclude.m4 | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 41e01d95edd7eb573a8b79acd0ab2b9de8cdab40 -Author: Carl Worth -Date: Tue Dec 12 03:13:38 2006 -0800 - - pdiff: Factor out a comparison function that doesn't read the 'args' structure - - This is one small step in "libifying" pdiff which will make it - easier to share this code inside cairo's test suite. - - test/pdiff/Metric.cpp | 112 +++++++++++++++++++++++++++++++----------------- - 1 files changed, 72 insertions(+), 40 deletions(-) - -commit b50b8db6d7d3d0a887ee18ad5e8e0455ed794429 -Author: Carl Worth -Date: Tue Dec 12 02:17:19 2006 -0800 - - test: Simplify buffer_diff by handling device offset in advance - - In a manner similar to flattening in advance, we now extract the sub- - surface of interest (when testing with device offsets) before calling - into the buffer_diff functions. This allows these functions to accept - a single stride value once again instead of one for each of the three - images. - - test/buffer-diff.c | 103 ++++++++++++++++++++++++++++++++------------------- - test/buffer-diff.h | 8 +--- - test/xlib-surface.c | 4 -- - 3 files changed, 67 insertions(+), 48 deletions(-) - -commit 1781e6018c17909311295a9cc74b70500c6b4d0a -Author: Behdad Esfahbod -Date: Mon Dec 11 03:31:10 2006 -0500 - - [Xlib] Rewrite an optimized cairo_xlib_show_glyphs() - - The old implementation was a very naive one that used to generate one XRender - glyph element per glyph. That is, position glyphs individually. This was - raised here: - - http://lists.freedesktop.org/archives/cairo/2006-December/008835.html - - The new implmentation is a free rewriting of the Xft logic, that is, - compressing glyphs with "natural" advance into elements, but with various - optimizations and improvements. - - In short, it works like this: glyphs are looped over, skipping those that are - not desired, and computing offset from "current position". Whenever a glyph - has non-zero offsets from the current position, a new element should be - started. All these are used to compute the request size in the render - protocol. Whenever the request size may exceed the max request size, or at - the end, glyphs are flushed. For this to work, we now set non-zero glyph - advances when sending glyphs to the server. - - Notable optimizations and improvements include: - - - Reusing the input glyph array (with double glyph positions) as a working - array to compute glyph offsets. - - - Reusing the input glyph array as the output glyph-index array to be passed - to XRender. - - - Marking glyphs to be skipped as so, avoiding a copy of the glyph array, - which is what the old code was doing. - - - Skip glyphs with positions "out-of-range". That is, those with positions - that would cause an overflow in Xrender's glyph offset calculations. - - On my Fedora desktop on Pentium 4, and on a Nokia 770, it shows a 6% speedup on - the timetext test. - - src/cairo-xlib-surface.c | 477 +++++++++++++++++++++++++--------------------- - 1 files changed, 257 insertions(+), 220 deletions(-) - -commit 198c1439ab21b1b19310335d93242709d1398ff3 -Author: Behdad Esfahbod -Date: Mon Dec 11 03:16:50 2006 -0500 - - Cache rounded glyph advance values - - This is done in cairo_scaled_glyph_t->x/y_advance. The value is mostly useful - for raster backends, for example to set as default advance of a glyph, and - later on optimize glyph positionings that use the default advance. - - src/cairo-scaled-font.c | 10 ++++++++++ - src/cairoint.h | 2 ++ - 2 files changed, 12 insertions(+), 0 deletions(-) - -commit e7ed9eee767c85853d6d2fb823ff3317c490948c -Author: Behdad Esfahbod -Date: Mon Dec 11 03:13:34 2006 -0500 - - [cairo-gstate] Use a local buffer on the stack for small glyph operations - - We duplicate the incoming glyph array for two reasons: 1) applying - transformations, and 2) to let the lower level functions have a glyph array - they can modify. By using a 2kb array on the stack we can avoid malloc() for - requests of less than 100 glyphs. The size of the array can be tuned by - setting CAIRO_STACK_BUFFER_SIZE. - - src/cairo-gstate.c | 30 +++++++++++++++++++++++------- - 1 files changed, 23 insertions(+), 7 deletions(-) - -commit da60bc45f295b15c62089874fb30cedc1d70bcd2 -Author: Behdad Esfahbod -Date: Mon Dec 11 03:10:05 2006 -0500 - - [cairoint] Define CAIRO_STACK_BUFFER_SIZE (defaults to 2kb) - - This is the suggested size in bytes of buffers allocated on the stack per - function, mostly used for glyph rendering. We typically use a local buffer on - the stack to avoid mallocing for small requests. Requests that do not fit are - malloc()ed automatically. The default value should be enough for about a - 100-glyph cairo_show_glyphs() operation. - - src/cairoint.h | 7 +++++++ - 1 files changed, 7 insertions(+), 0 deletions(-) - -commit 5a9642c5746fd677aed35ce620ce90b1029b1a0c -Author: Behdad Esfahbod -Date: Mon Dec 11 01:39:51 2006 -0500 - - Add/remove const to cairo_glyph_t* arguments consistently - - The rule is: cairo_glyph_t* is always passed as const for measurement - purposes. This was not reflected in our public api previously. Fixed - - Showing glyphs used to have cairo_glyph_t* always as const. With this - changed, it is only const on cairo_t and cairo_gstate_t operations. - cairo_surface_t, cairo_scaled_font_t, and individual backends receive - cairo_glyph_t* as non-const. The desired semantics is that they may modify - the contents of the array as long as they do not return - CAIRO_STATUS_UNSUPPORTED. This makes it possible to avoid copying the glyph - array again and again, and edit it in-place. Backends are in fact free to use - the array as a generic buffer as they see fit. - - src/cairo-analysis-surface.c | 2 +- - src/cairo-atsui-font.c | 2 +- - src/cairo-directfb-surface.c | 2 +- - src/cairo-glitz-surface.c | 2 +- - src/cairo-gstate.c | 12 ++++++------ - src/cairo-meta-surface.c | 2 +- - src/cairo-nquartz-surface.c | 2 +- - src/cairo-paginated-surface.c | 2 +- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-scaled-font.c | 4 ++-- - src/cairo-surface-fallback-private.h | 2 +- - src/cairo-surface-fallback.c | 4 ++-- - src/cairo-surface.c | 4 ++-- - src/cairo-svg-surface.c | 2 +- - src/cairo-win32-font.c | 2 +- - src/cairo-win32-surface.c | 2 +- - src/cairo-xcb-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 4 ++-- - src/cairo.c | 4 ++-- - src/cairo.h | 6 +++--- - src/cairoint.h | 28 +++++++++++----------------- - src/test-meta-surface.c | 2 +- - src/test-paginated-surface.c | 2 +- - 24 files changed, 47 insertions(+), 53 deletions(-) - -commit 70695f5c62b89b417c1e8b42451470a5a8920bf3 -Author: Behdad Esfahbod -Date: Sun Dec 10 02:32:52 2006 -0500 - - [FreeType] Remove "UNSUPPORTED" show_glyphs stub and NULL its entry - - The fallback paths always assume UNSUPPORTED if a method is NULL, so, no need - for a method to just return UNSUPPORTED. - - src/cairo-ft-font.c | 19 +------------------ - 1 files changed, 1 insertions(+), 18 deletions(-) - -commit fea60c7283172be5efb42332a96fe322466bd6ed -Author: Dan Amelang -Date: Sat Dec 9 18:54:47 2006 -0800 - - Change _cairo_lround to correctly handle edge cases previously missed - - A nice side effect of this new approach is that the valid input range - was expanded back to (INT_MIN, INT_MAX]. No performance regressions observed. - Also included is documentation about the internal mysteries of _cairo_lround, - as previously promised. - - src/cairo.c | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 179 insertions(+), 26 deletions(-) - -commit cc75159587a4479951da354cfa282d81c74b0377 -Author: Behdad Esfahbod -Date: Fri Dec 8 16:10:57 2006 -0500 - - [FreeType] Do not return large structs from functions - - Pass cairo_ft_options_t around by pointer, not by value. That's what we do - with cairo_font_options_t anyway, and there is no reason to not do the same - here. (makes -Waggregate-return warnings go away btw). - - src/cairo-ft-font.c | 25 +++++++++++++------------ - 1 files changed, 13 insertions(+), 12 deletions(-) - -commit beadc7da864c974558b8e98723e9d2533baab630 -Author: Behdad Esfahbod -Date: Fri Dec 8 15:42:24 2006 -0500 - - [docs] Update templates - - doc/public/tmpl/cairo-pattern.sgml | 76 +++++++++++++++++++++ - doc/public/tmpl/cairo-status.sgml | 50 +++++++------- - doc/public/tmpl/cairo-surface.sgml | 114 ++++++++++++++++---------------- - doc/public/tmpl/cairo-text.sgml | 1 + - doc/public/tmpl/cairo-win32-fonts.sgml | 18 +++++ - doc/public/tmpl/cairo-win32.sgml | 21 ++++++ - doc/public/tmpl/cairo.sgml | 69 +++++++++++++++++++ - 7 files changed, 267 insertions(+), 82 deletions(-) - -commit cdd79c104dd940077b1f3193c31272f9a4673bb5 -Author: Behdad Esfahbod -Date: Fri Dec 8 15:41:52 2006 -0500 - - [docs] Generate index of new symbols in 1.4 - - doc/public/cairo-docs.xml | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 16c7587f2dcab5abbbe62505e64c1ac9441dfb8e -Author: Behdad Esfahbod -Date: Fri Dec 8 15:40:59 2006 -0500 - - [slim] Define slim macros to dummy prototypes for non-gcc compilers (#9150) - - src/cairoint.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6122c30930525c0d672166eab8b05e0951c7b039 -Author: Behdad Esfahbod -Date: Fri Dec 8 15:38:34 2006 -0500 - - [pixman] Remove unused slim_internal.h - - pixman/src/slim_internal.h | 103 -------------------------------------------- - 1 files changed, 0 insertions(+), 103 deletions(-) - -commit 734b321aab3df046716a54cfdcefbe42fa6b1a8b -Author: Behdad Esfahbod -Date: Thu Dec 7 00:14:37 2006 -0500 - - [doc] Minor wording improvement. - - doc/public/tmpl/cairo-version.sgml | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit eedd86165efed065bf79469b1cf57c0127012b98 -Author: Behdad Esfahbod -Date: Thu Dec 7 00:08:09 2006 -0500 - - [docs] Document CAIRO_VERSION_STRING. - - doc/public/tmpl/cairo-version.sgml | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 9b87fab8ce283e966da7ac850980397cb9e199cc -Author: Behdad Esfahbod -Date: Wed Dec 6 23:52:22 2006 -0500 - - [docs] Hook various new API into cairo-sections.txt - - doc/public/cairo-sections.txt | 18 ++++++++++++++++++ - 1 files changed, 18 insertions(+), 0 deletions(-) - -commit 0e028ee0f3bfb95d8483bb4c84b84c4bd53b8c53 -Author: Behdad Esfahbod -Date: Wed Dec 6 23:40:08 2006 -0500 - - [doc/public/Makefile.am] Move the list of private headers generatable - - Move the list of private headers into separate file Headers.mk that - Makefile.am includes (using automake). To update the list, just remove - Headers.mk and make. - - doc/public/Headers.mk | 31 +++++++++++++++++++++++++ - doc/public/Makefile.am | 59 +++++++++++++++++++---------------------------- - 2 files changed, 55 insertions(+), 35 deletions(-) - -commit b8e1f3778e61e3c5a809f610a1af97ea56a9960e -Author: Behdad Esfahbod -Date: Wed Dec 6 23:38:20 2006 -0500 - - [docs] Document various CAIRO_VERSION_* macros - - doc/public/tmpl/cairo-version.sgml | 20 ++++++++++++-------- - 1 files changed, 12 insertions(+), 8 deletions(-) - -commit fd03991a6a78d849e2184f53a2b1b6915a6a64d0 -Author: M Joonas Pihlaja -Date: Thu Dec 7 04:46:07 2006 +0200 - - test: random-intersections - - The purpose of this test case is to help make - sure that changes to the trapezoid generation or - intersection computation in the tessellator - don't break it. - - test/Makefile.am | 4 ++ - test/random-intersections-ps-argb32-ref.png | Bin 0 -> 107578 bytes - test/random-intersections-ref.png | Bin 0 -> 177153 bytes - test/random-intersections-rgb24-ref.png | Bin 0 -> 132210 bytes - test/random-intersections.c | 79 +++++++++++++++++++++++++++ - 5 files changed, 83 insertions(+), 0 deletions(-) - -commit 6301f92d2af2fd7928352965bcab42bab9deb59d -Author: M Joonas Pihlaja -Date: Thu Dec 7 02:30:41 2006 +0200 - - Rework the in-fill-empty-trapezoid test to not use the cairo_test() framework. - - As suggested by Behdad Esfahbod, we can not use the cairo_test() framework - when it is getting in the way. The test itself doesn't depend on any - particular backend. - - http://lists.freedesktop.org/archives/cairo/2006-December/008809.html - - test/Makefile.am | 2 - - test/in-fill-empty-trapezoid-ref.png | Bin 108 -> 0 bytes - test/in-fill-empty-trapezoid-rgb24-ref.png | Bin 107 -> 0 bytes - test/in-fill-empty-trapezoid.c | 54 ++++++++++++++++------------ - 4 files changed, 31 insertions(+), 25 deletions(-) - -commit c13a1a2ed0ce8ba2b43e4e70c66cdc5b98e80eb4 -Author: M Joonas Pihlaja -Date: Thu Dec 7 01:42:07 2006 +0200 - - Replace point sampling in the fill-degenerate-sort-order with rendering. - - Clean up the test to not even check the ps backend as per: - - http://lists.freedesktop.org/archives/cairo/2006-December/008806.html - - boilerplate/cairo-boilerplate.c | 3 ++ - test/fill-degenerate-sort-order-ref.png | Bin 643 -> 2397 bytes - test/fill-degenerate-sort-order-rgb24-ref.png | Bin 611 -> 2060 bytes - test/fill-degenerate-sort-order.c | 32 ++---------------------- - 4 files changed, 6 insertions(+), 29 deletions(-) - -commit 565a715d119d00ac141d1b235dab7985ed78113a -Author: M Joonas Pihlaja -Date: Thu Dec 7 01:16:43 2006 +0200 - - Change license of tessellator tests to the MIT license. - - The blurb for the fill-degenerate-sort-order, fill-missed-stop and - in-fill-empty-trapezoid tests changed to this one: - - http://www.opensource.org/licenses/mit-license.php - - c.f. http://lists.freedesktop.org/archives/cairo/2006-December/008806.html - - test/fill-degenerate-sort-order.c | 35 ++++++++++++++++++----------------- - test/fill-missed-stop.c | 35 ++++++++++++++++++----------------- - test/in-fill-empty-trapezoid.c | 35 ++++++++++++++++++----------------- - 3 files changed, 54 insertions(+), 51 deletions(-) - -commit e857ac325a048799016196bc65ce6ff279c01431 -Author: M Joonas Pihlaja -Date: Thu Dec 7 00:52:43 2006 +0200 - - tessellator bug fix: linking fails on x86_64 due to superfluous inline attribute. - - Remove inline attribute from cairo_bo_event_compare_abstract() - to fix the linking issue reported by Jinghua Luo on the mailing list: - - http://lists.freedesktop.org/archives/cairo/2006-November/008574.html - - src/cairo-bentley-ottmann.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 16c0db0d6843184e79b73a3613f65c0cc06a684d -Author: Behdad Esfahbod -Date: Wed Dec 6 19:02:09 2006 -0500 - - [test] Break the "make clean" target into serveral rm calls - - Some systems cannot handle very long list of arguments. Carl was hitting this - for "make clean". Break it out into several rm calls triggered by the - clean-local target. - - test/Makefile.am | 15 +++++++++------ - 1 files changed, 9 insertions(+), 6 deletions(-) - -commit 3cf994779580fe3355356c00e20a93ddb676355e -Author: Behdad Esfahbod -Date: Wed Dec 6 18:52:45 2006 -0500 - - [.gitignore] Add big-trap - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4b43a3a1c4d4f4659e604cea1d79e1b5e18ce107 -Author: Peter Weilbacher -Date: Thu Dec 7 00:27:29 2006 +0100 - - Add OS/2 backend and its requirement to INSTALL and README, following the example of BeOS. - - INSTALL | 1 + - README | 9 ++++++++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 652f73f0907c0d4b4bee155a73acb4a6a0cf5f37 -Author: Carl Worth -Date: Wed Dec 6 13:40:52 2006 -0800 - - Bump version to 1.3.7 after making 1.3.6 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 648ef4487dfa43f20fb2c73e7b8e567f8a25497a -Author: Carl Worth -Date: Wed Dec 6 13:22:24 2006 -0800 - - Increment cairo version to 1.3.6 (and libtool versioning to 12:1:10) - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f0459b3c53d3319822ef6e5f8bc118e742dcbf5f -Author: Carl Worth -Date: Wed Dec 6 13:20:04 2006 -0800 - - NEWS: Add notes for 1.3.6 snapshot - - NEWS | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 65 insertions(+), 0 deletions(-) - -commit e840c120ddc5ad3adeba95c2baf5262aae57d9d1 -Author: Carl Worth -Date: Wed Dec 6 13:19:30 2006 -0800 - - Fix 'make distcheck' by mentioning test/pdiff in DIST_SUBDIRS - - test/Makefile.am | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b83f9e766a0925a59f0db488ef8c905f3fcbcbe4 -Author: Carl Worth -Date: Wed Dec 6 13:17:41 2006 -0800 - - ROADMAP: Note that the Banker's rounding bug is fixed - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ce58f874fe25334961807a2cecf6066b18569c05 -Author: Dan Amelang -Date: Tue Dec 5 23:45:15 2006 -0800 - - Change _cairo_lround to use arithmetic rounding - - This fixes the text rendering bug reported here: - - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819 - - No performance impact on x86. On the 770, I see minor speedups in text_solid - and text_image (~1.05x). - - src/cairo.c | 57 +++++++++++++++++++++++++++++++++++++++++++++------------ - 1 files changed, 45 insertions(+), 12 deletions(-) - -commit d0eff3919646e8a4c9981c349e33060fdb27c94e -Author: M Joonas Pihlaja -Date: Wed Dec 6 05:53:53 2006 +0200 - - tessellator: input validation and guard bit removal - - This patch removes the guard bits from the tessellator internal - coordinates and reworks the input validation to make sure that the - tessellator code should never die on an assert. When the extent of a - polygon exceeds a width or height of 2^31-1, then the rightmost - (resp. bottommost) points are clamped to within 2^31-1 of the leftmost - (resp. topmost) point of the polygon. The clamping produces bad - rendering for really large polygons, and needs to be fixed in a saner - manner. - - Cleaned up as per - - http://lists.freedesktop.org/archives/cairo/2006-December/008806.html - - src/cairo-bentley-ottmann.c | 147 +++++++++++++++++++++++-------------------- - 1 files changed, 78 insertions(+), 69 deletions(-) - -commit f8ba74917296be226f7a957ad1a26685bb6d846c -Author: M Joonas Pihlaja -Date: Tue Dec 5 22:56:22 2006 +0200 - - tessellator: offset working coordinates to be nonnegative - - This patch improves the translation invariance of the tessellator - by offsetting all input coordinates to be nonnegative and paves - the way for future optimisations using the coordinate range. - - Also changes the assertions to make sure that it is safe to add - the guard bits. This needs to be changed to do something sensible - about input coordinates that are too large instead of croaking. - The plan is to steal the guard bits from the least significant - instead of the most significant user bits, and having all coordinates - nonnegative will make the rounding involved there easier. - - src/cairo-bentley-ottmann.c | 126 ++++++++++++++++++++++++++++++++---------- - 1 files changed, 96 insertions(+), 30 deletions(-) - -commit 633c51b4426f5405db0eac5edb81651b7e1491ef -Author: M Joonas Pihlaja -Date: Tue Dec 5 21:55:50 2006 +0200 - - tessellator bug fix: in-fill-empty-trapezoid - - The cairo_in_fill() function sometimes gives false positives - when it samples a point on the edge of an empty trapezoid. - This patch alleviates the bug (but doesn't fix it completely), - for the common(?) case where the left and right edges of the - empty trapezoid have equal top and bottom points. - - src/cairo-bentley-ottmann.c | 31 +++++++++++++++++++++---------- - 1 files changed, 21 insertions(+), 10 deletions(-) - -commit e6c8febca7a24f6cf4138a25c96a36e4e7721a92 -Author: M Joonas Pihlaja -Date: Tue Dec 5 21:38:25 2006 +0200 - - tessellator bug fix: fill-missed-stop - - Fixes the regression exhibited by the test fill-missed-stop, - where the tessellator would sometimes extend a trapezoid - too far below the end of the right edge. - - src/cairo-bentley-ottmann.c | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 614117e487f36c66f2a479c96e1cb4daef625608 -Author: M Joonas Pihlaja -Date: Tue Dec 5 21:31:23 2006 +0200 - - tessellator bug fix: fill-degenerate-sort-order - - Fixes the regression fill-degenerate-sort-order, where - confusion arises in the event order for collinear edges. - Also fixes (or at least hides) the issues with zrusin-another - sometimes generating different trapezoids depending on the - state of the random number generator in cairo-skiplist.c. - - src/cairo-bentley-ottmann.c | 40 +++++++++++++++++++++++++++++----------- - 1 files changed, 29 insertions(+), 11 deletions(-) - -commit 48b42efcfee470a1224d6ad0646525964ac640c6 -Author: M Joonas Pihlaja -Date: Tue Dec 5 13:02:47 2006 +0200 - - test: check for tessellator regression from missed stop events - - The new tessellator contains a regression where stop events - that aren't followed by start events sometimes cause the - trapezoid to the left of an edge to be too high. - - test/Makefile.am | 4 ++ - test/fill-missed-stop-ps-argb32-ref.png | Bin 0 -> 564 bytes - test/fill-missed-stop-ref.png | Bin 0 -> 466 bytes - test/fill-missed-stop-rgb24-ref.png | Bin 0 -> 394 bytes - test/fill-missed-stop.c | 89 +++++++++++++++++++++++++++++++ - 5 files changed, 93 insertions(+), 0 deletions(-) - -commit e94e0a1ca262ef67b527b13a5e9691ad42a43204 -Author: M Joonas Pihlaja -Date: Tue Dec 5 12:20:17 2006 +0200 - - test: check if cairo_in_fill() is reporting false positives for empty trapezoids. - - cairo_in_fill() may report true if a query point lands on an edge of an - empty trapezoid. - - test/Makefile.am | 3 + - test/in-fill-empty-trapezoid-ref.png | Bin 0 -> 108 bytes - test/in-fill-empty-trapezoid-rgb24-ref.png | Bin 0 -> 107 bytes - test/in-fill-empty-trapezoid.c | 89 ++++++++++++++++++++++++++++ - 4 files changed, 92 insertions(+), 0 deletions(-) - -commit 00d7b6acdd263f7b46ea98c4a5b777fc93a65be5 -Author: M Joonas Pihlaja -Date: Tue Dec 5 11:21:14 2006 +0200 - - test: tessellator event comparator test case for degenerate edges. - - There's currently a regression bug in the tessellation code from - switching to the new tessellator. The bug is caused by - confusion in the comparator used to order events when there are - degenerate edges. This test is derived from the zrusin-another - performance test case. - - test/Makefile.am | 3 + - test/fill-degenerate-sort-order-ref.png | Bin 0 -> 643 bytes - test/fill-degenerate-sort-order-rgb24-ref.png | Bin 0 -> 611 bytes - test/fill-degenerate-sort-order.c | 110 +++++++++++++++++++++++++ - 4 files changed, 113 insertions(+), 0 deletions(-) - -commit c92f23caa549651a05863ecda19c55c112350528 -Author: Carl Worth -Date: Tue Dec 5 11:14:49 2006 -0800 - - ROADMAP: Add _cairo_lround bug for 1.3.6. Note some completed items for 1.4.0 - - ROADMAP | 14 +++++++++----- - 1 files changed, 9 insertions(+), 5 deletions(-) - -commit 4057a98f88947730bb0678f361278cc71cc33751 -Author: M Joonas Pihlaja -Date: Tue Dec 5 05:46:26 2006 +0200 - - cairo-perf-diff-files: Don't segfault reading cooked perf reports. - - Fixes cairo-perf-diff-files for non-raw cairo-perf reports. Similar - to the patch on the mailing list, only applied to the caller of - _cairo_stats_compute(): - - http://lists.freedesktop.org/archives/cairo/2006-December/008720.html - - perf/cairo-perf-diff-files.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit a4f5463cdd5e2b088cd009de332db821ef0bd806 -Author: Mathieu Lacage -Date: Tue Dec 5 03:59:11 2006 +0200 - - bugfix: fix cairo-wideint.c uint64_t usage and const return qualifiers - - These patches were sent to the cairo mailing list by Mathieu Lacage - : - - http://lists.freedesktop.org/archives/cairo/2006-December/008741.html - - _cairo_uint_96by64_32x64_divrem(): fixes misuse of the uint64_t type - and cairo-wideint-private.h functions. - - http://lists.freedesktop.org/archives/cairo/2006-December/008742.html - - Remove const qualifiers from return types from cairo-wideint.c functions. - - http://lists.freedesktop.org/archives/cairo/2006-December/008747.html - - Fixes a typo in cairo-wideint-private.h: _cairo_uint128_to_int128_ - had an extra trailing underscore. - - src/cairo-wideint-private.h | 2 +- - src/cairo-wideint.c | 14 +++++++------- - 2 files changed, 8 insertions(+), 8 deletions(-) - -commit 94e086b7b9f4129bde3e32b7005e2a33788f334a -Author: Dan Amelang -Date: Sat Dec 2 11:24:35 2006 -0800 - - [configure] Fix --disable-some-floating-point to force value to 'no' if none given - - As suggested by Behdad here: - - http://lists.freedesktop.org/archives/cairo/2006-December/008700.html - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 392f27bf2b210aec6f511e5dba890d5f4c3b8802 -Author: Dan Amelang -Date: Sat Dec 2 11:02:36 2006 -0800 - - [configure] Add -a option to grep calls in AX_C_FLOAT_WORDS_BIGENDIAN - - This fixes bug #9124 reported here: - - https://bugs.freedesktop.org/show_bug.cgi?id=9124 - - acinclude.m4 | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3dbe468fd6071adfba5f608da788502f1840af36 -Author: Dan Amelang -Date: Fri Dec 1 14:12:16 2006 -0800 - - [perf] Provide watered-down implementations of getline and strndup for - building on non-GNU toolchains. - - perf/cairo-perf-diff-files.c | 58 +++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 55 insertions(+), 3 deletions(-) - -commit d5fcbfc29f2ae6eacdab1d00d9e7ce8d1cf39431 -Author: Dan Amelang -Date: Fri Dec 1 12:46:55 2006 -0800 - - Purge cairo-test of all calls to round() - - Although round() is in the C99 standard, it isn't available in all - toolchains on which cairo is compiled (VC++, for example). - - test/clip-operator.c | 4 ++-- - test/operator-clear.c | 4 ++-- - test/operator-source.c | 4 ++-- - test/unbounded-operator.c | 4 ++-- - 4 files changed, 8 insertions(+), 8 deletions(-) - -commit cb9a3c264086d0d11b74c504e5d3f891f929b00e -Author: Dan Amelang -Date: Fri Dec 1 12:41:55 2006 -0800 - - Add configure option --disable-some-floating-point - - See discussion here: http://lists.freedesktop.org/archives/cairo/2006-November/008602.html - - configure.in | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit 7fb4e978735bd7c9f3cff970ac6757feff3e74bb -Author: Carl Worth -Date: Thu Nov 30 09:15:00 2006 -0800 - - BIBLIOGRAPHY: Add Joseph O'Rourke's book as recommended by Rafael Villar Burke - - BIBLIOGRAPHY | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit 7fbe594d3d04137daca4d3c3a28057b71b03f33d -Author: Carl Worth -Date: Thu Nov 30 08:43:27 2006 -0800 - - Add a textbook recommendation to the bibliography - - Thanks to Mathieu Lacage for the recommendation of: - - "Computational Geometry, Algorithms and Applications", M. de - Berg, M. van Kreveld, M. Overmars, M. Schwarzkopf - - BIBLIOGRAPHY | 21 +++++++++++++++++---- - 1 files changed, 17 insertions(+), 4 deletions(-) - -commit 170d35b034150b69717e52dd85f0f93c392d9f3c -Author: Carl Worth -Date: Wed Nov 29 23:01:30 2006 -0800 - - pdiff: Add missing newlins at end of files. - - test/pdiff/CompareArgs.h | 2 +- - test/pdiff/LPyramid.cpp | 1 - - test/pdiff/LPyramid.h | 2 +- - test/pdiff/Metric.cpp | 2 +- - test/pdiff/Metric.h | 2 +- - test/pdiff/RGBAImage.h | 2 +- - 6 files changed, 5 insertions(+), 6 deletions(-) - -commit c863315285911d38b64b8429e279c5e55d0089b8 -Author: Carl Worth -Date: Tue Nov 21 14:19:35 2006 -0800 - - Hook up Makefiles for perceptualdiff. - - configure.in | 1 + - test/pdiff/Makefile.am | 14 ++++++++++++++ - 2 files changed, 15 insertions(+), 0 deletions(-) - -commit 6e06b68452ec68b7ab227c54284f28a605512ce4 -Author: Carl Worth -Date: Tue Nov 21 14:19:55 2006 -0800 - - Remove all libtiff-related code by #ifdef - - test/pdiff/CompareArgs.cpp | 8 ++++++++ - test/pdiff/RGBAImage.cpp | 3 +++ - 2 files changed, 11 insertions(+), 0 deletions(-) - -commit 2b92556abe440e9834174aed7395e2827f62897c -Author: Carl Worth -Date: Wed Nov 29 22:55:00 2006 -0800 - - Use uint32_t instead of the non-standard uint32 - - test/pdiff/RGBAImage.cpp | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 812fd53499d308ff881751e57c1e3287498ddd0f -Author: Carl Worth -Date: Tue Nov 21 12:15:16 2006 -0800 - - Add perceptualdiff program totest/pdiff. - - The perceptualdiff program was written by Hector Yee with contributions - from Scott Corley and Mick Weiss. It is hosted at http://pdiff.sourceforge.net - The source code added here was obtained by: - - svn co https://svn.sourceforge.net/svnroot/pdiff/trunk pdiff - - which gave revision 22 of the source code. - - The perceptualdiff program is available under the terms of the GNU GPL, - so I've added a note to COPYING about this program, (and the fact that - it is auxiliary only, and does not affect the license of the implementation - of cairo itself). - - COPYING | 21 +++- - test/pdiff/CMakeLists.txt | 55 +++++++ - test/pdiff/CompareArgs.cpp | 128 +++++++++++++++ - test/pdiff/CompareArgs.h | 44 ++++++ - test/pdiff/LPyramid.cpp | 88 +++++++++++ - test/pdiff/LPyramid.h | 38 +++++ - test/pdiff/Metric.cpp | 316 ++++++++++++++++++++++++++++++++++++++ - test/pdiff/Metric.h | 26 +++ - test/pdiff/PerceptualDiff.cpp | 45 ++++++ - test/pdiff/README.txt | 45 ++++++ - test/pdiff/RGBAImage.cpp | 141 +++++++++++++++++ - test/pdiff/RGBAImage.h | 57 +++++++ - test/pdiff/gpl.txt | 340 +++++++++++++++++++++++++++++++++++++++++ - 13 files changed, 1341 insertions(+), 3 deletions(-) - -commit d9fd942e4774aa29967f908001b62dbc987d2f66 -Author: Carl Worth -Date: Wed Nov 29 17:18:50 2006 -0800 - - Add an initial BIBLIOGRAPHY for cairo - - BIBLIOGRAPHY | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 70 insertions(+), 0 deletions(-) - -commit 8f08daade0430bf965050a81e654aac2a2375b07 -Author: Carl Worth -Date: Wed Nov 29 17:15:29 2006 -0800 - - RELEASING: Fix typo - - RELEASING | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit facffb7ea3e03d131a79486b80d4efc58c303b87 -Author: Behdad Esfahbod -Date: Tue Nov 28 19:41:52 2006 -0500 - - [configure] Remove the pkg-config minimum version requirement - - It was added in commit 157663e1fdf120a71c6cc8222b88d2915a5a73eb because there - was a serious bug in the pkg.m4 file from pkg-config 0.18. However, it was - fixed two days later. So, instead of requireing 0.18.1 or greater which is - not available on Nokia 770 SDK, we just ignore the broken pkg-config 0.18. - The problem only happens if one runs autogen.sh with against a broken - pkg-config. Configuring tarballs is not affected. - - configure.in | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 72a4a9834626ddd05c57c6b3f59e936969f0eee9 -Author: Behdad Esfahbod -Date: Mon Nov 27 13:23:13 2006 -0500 - - [test|perf|boilerplate/Makefile.am] Add -I$(top_builddir)/src to INCLUDES - needed to find cairo-features.h when building out of tree. - - boilerplate/Makefile.am | 1 + - perf/Makefile.am | 1 + - test/Makefile.am | 1 + - 3 files changed, 3 insertions(+), 0 deletions(-) - -commit 9c3b161c7067d8eda7f8d1cfb36ca285e4e7fa35 -Author: Carl Worth -Date: Wed Nov 22 19:31:56 2006 -0800 - - Bump version to 1.3.5 after making 1.3.4 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 143c56cb12ee5d0b0fbc5e4039dd4fc88764254d -Author: Carl Worth -Date: Wed Nov 22 19:15:31 2006 -0800 - - Increment cairo version to 1.3.4 - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e9dd52a337082cebbab2224e3a09702ada8f8e87 -Author: Carl Worth -Date: Wed Nov 22 19:15:00 2006 -0800 - - NEWS: Add notes for 1.3.4 snapshot - - NEWS | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 152 insertions(+), 0 deletions(-) - -commit 3329abba391ebd502ba74b00ff02b7902a39945a -Author: Carl Worth -Date: Wed Nov 22 19:11:51 2006 -0800 - - Add Daniel Amelang and Joonas Pihlaja to the AUTHORS file - - AUTHORS | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit a8f6d27fba582cc8e935676d26c703fa7b253822 -Author: Carl Worth -Date: Wed Nov 22 18:42:48 2006 -0800 - - Add some missing cairo_private decorators - - src/cairo-freelist-private.h | 12 +++++++----- - src/cairo-skiplist-private.h | 14 ++++++++------ - src/cairoint.h | 4 ++-- - 3 files changed, 17 insertions(+), 13 deletions(-) - -commit fac3684e686a259658151dac13907fa69f43f727 -Author: Joonas Pihlaja -Date: Wed Nov 22 08:30:28 2006 +0200 - - perf: new-tessellator: Deferred trapezoid generation (first try) - - src/Makefile.am | 2 + - src/cairo-bentley-ottmann.c | 163 ++++++++++++++++++++++++++++++++++++------ - src/cairo-freelist-private.h | 71 ++++++++++++++++++ - src/cairo-freelist.c | 72 ++++++++++++++++++ - 4 files changed, 285 insertions(+), 23 deletions(-) - -commit 6bd72ce74aba4a576e5aa76a5c92bd5557ae97f1 -Author: Joonas Pihlaja -Date: Mon Nov 20 04:19:17 2006 +0200 - - Sort pointers instead of cairo_bo_events in the tessellator. - - We were spending a lot of time in memcpy. - - src/cairo-bentley-ottmann.c | 54 +++++++++++++++++++++++++++---------------- - 1 files changed, 34 insertions(+), 20 deletions(-) - -commit b177573b729401117a061cd6f07743fa81c01724 -Author: Joonas Pihlaja -Date: Mon Nov 20 03:56:07 2006 +0200 - - Make the skip list check for uniqueness. - - This patch removes a redundant call to skip_list_find() - that was being used to detect duplicate intersection events. - Instead, skip_list_insert() now takes an additional parameter - letting it know what to do with duplicates. - - src/cairo-bentley-ottmann.c | 12 ++++-------- - src/cairo-skiplist-private.h | 8 +++++--- - src/cairo-skiplist.c | 25 +++++++++++++++---------- - 3 files changed, 24 insertions(+), 21 deletions(-) - -commit 8bec0bac56785434f5e5860cf5f3560cac82ebb2 -Author: Joonas Pihlaja -Date: Mon Nov 20 03:45:26 2006 +0200 - - Malloc less using a free list of nodes. - - src/cairo-skiplist-private.h | 1 + - src/cairo-skiplist.c | 45 ++++++++++++++++++++++++++++++++++------- - 2 files changed, 38 insertions(+), 8 deletions(-) - -commit de0e327b3d9aec50d970d8cfc881fb3949df59cc -Author: Joonas Pihlaja -Date: Mon Nov 20 03:14:20 2006 +0200 - - Tweak comparators. - - src/cairo-bentley-ottmann.c | 60 ++++++++++++++++++++---------------------- - 1 files changed, 29 insertions(+), 31 deletions(-) - -commit 67359d7a58c14851936345417833b1e610987c19 -Author: Joonas Pihlaja -Date: Sat Nov 18 14:59:23 2006 +0200 - - Separate start and stop events from intersections (first try.) - - Don't use the skip list for start and stop events, but presort - those first. - - src/cairo-bentley-ottmann.c | 119 ++++++++++++++++++++++++++++++++++-------- - src/cairo-skiplist-private.h | 7 +++ - src/cairo-skiplist.c | 10 ++++ - 3 files changed, 114 insertions(+), 22 deletions(-) - -commit 97f02dca5d97c9ab815abf881525542ba86cbb11 -Author: Joonas Pihlaja -Date: Sat Nov 18 01:08:56 2006 +0200 - - Avoid a skip-list lookup when deactivating edges. - - src/cairo-bentley-ottmann.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 99f8a5313d336a2779689122feef03b874ed930e -Author: Joonas Pihlaja -Date: Sat Nov 18 01:01:04 2006 +0200 - - Special cases for skip list comparators. - - src/cairo-bentley-ottmann.c | 39 +++++++++++++++++++++++++++++++++++++-- - 1 files changed, 37 insertions(+), 2 deletions(-) - -commit fd8cd39cda7bfde429d840ffd7d5c78ac3045505 -Author: Joonas Pihlaja -Date: Fri Nov 17 12:24:44 2006 +0200 - - Use an LFSR instead of random(). - - src/cairo-skiplist.c | 189 +++++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 188 insertions(+), 1 deletions(-) - -commit d957e59744ba6fc482d3ddbce041877e703c0489 -Author: Joonas Pihlaja -Date: Wed Nov 15 19:58:54 2006 +0200 - - Replace the 128 bit divrem by a 96/64 bit one. - - src/cairo-bentley-ottmann.c | 78 +++++++++++++++++++++++-------------------- - 1 files changed, 42 insertions(+), 36 deletions(-) - -commit 1da14262ea059836ae63b875c987fdb5c526db83 -Author: Joonas Pihlaja -Date: Wed Nov 15 19:57:04 2006 +0200 - - A 96 by 64 bit divrem that produces a 32 bit quotient and 64 bit remainder. - - src/cairo-wideint-private.h | 8 ++ - src/cairo-wideint.c | 152 +++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 160 insertions(+), 0 deletions(-) - -commit 762bd1330d5e3148ddd60949866227cb75b782d6 -Author: Carl Worth -Date: Fri Sep 22 17:28:00 2006 -0700 - - Make event_queue_insert ignore duplicate intersection events (not duplicate start/stop events) - - This fixes the failures of the new tessellator with the 3 tests: - bitmap-font, rectangle-rounding-error, and close-path - The problem was that identical edges from separate polygons - were not being added to the event queue, (because of a check - that was actually only intended to prevent an intersection - event from being scheduled multiple times). - - src/cairo-bentley-ottmann.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -commit 4cd871b6f371e86c252c2fa8d8af481d822a1dec -Author: Carl Worth -Date: Wed Sep 20 10:47:58 2006 -0700 - - Switch from old tessellator to new tessellator - - src/Makefile.am | 3 +++ - src/cairo-path-fill.c | 6 +++--- - src/cairo-path-stroke.c | 2 +- - src/cairo-pen.c | 2 +- - src/cairo-traps.c | 7 +------ - src/cairoint.h | 10 ++++++++++ - 6 files changed, 19 insertions(+), 11 deletions(-) - -commit 0f7c488906128557807ca98aed5c442abf0a0b75 -Author: Carl Worth -Date: Wed Sep 20 10:47:01 2006 -0700 - - Adapt new tessellator to match the interface provided by the old tessellator. - - src/cairo-bentley-ottmann.c | 163 ++++++++++++++++++++++++++++++------------- - 1 files changed, 114 insertions(+), 49 deletions(-) - -commit 8921f733995bc003c6977fd071f0be9e346e0f79 -Author: Carl Worth -Date: Wed Sep 20 10:41:42 2006 -0700 - - Add new tessellator (unused) in cairo-bentley-ottmann.c - - This is the implementation as it cooked in the new-tessellator branch - available from: - - git://people.freedesktop.org/~cworth/cairo - - The file here comes from commit eee4faf79900be2c5fda1fddd49737681a9e37d6 in - that branch. It's sitting here not hooked up to anything in cairo yet, - and still with a main function with test cases, etc. - - src/cairo-bentley-ottmann.c | 1383 +++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 1383 insertions(+), 0 deletions(-) - -commit c2509f8a721ec489e1b44fa8a68be165363787a7 -Author: Carl Worth -Date: Wed Sep 20 10:27:35 2006 -0700 - - Add skip list implementation (many thanks to Keith Packard) - - The files here are copied directly from the standalone skiplist module - available from: - - git clone git://cworth.org/~cworth/skiplist - - In particular the files come from the double branch and the following - commit on that branch: - - 8b5a439c68e220cf1514d9b3141a1dbdce8af585 - - Also of interest is the original skiplist module hosted by Keith Packard - that is the original implementation on which these files were based. - Since the cworth/skiplist branched off of keithp's, Keith has also - now implemented a doubly-linked variant which might be interesting for - further simplification of the code. See: - - git clone git://keithp.com/git/skiplist - - and the double-link branch there. - - src/cairo-skiplist-private.h | 87 +++++++++++++++ - src/cairo-skiplist.c | 238 ++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 325 insertions(+), 0 deletions(-) - -commit 02804773e7ef521adfbd26f90f303879198acde5 -Author: Carl Worth -Date: Wed Nov 22 16:52:18 2006 -0800 - - give the big-trap test the XFAIL treatment. - - We'll need to rewrite this test (and the way cairo is compiled for - testing) before it can exercise the bug of interest. In the - meantime, let's just give it an "expected failure" status. - - test/Makefile.am | 1 + - test/big-trap.c | 36 +++++++++++++++++++++++++++++++++++- - 2 files changed, 36 insertions(+), 1 deletions(-) - -commit fdbb820ece5e6ab970cf6a9b756eebf7283c0597 -Author: Carl Worth -Date: Wed Nov 22 16:43:45 2006 -0800 - - test: Use round to pass only integers to cairo_show_glyphs (in 3 more tests) - - This is the same fix as in the recent commit (166dffc96aa26b21f87f12af22b11630583cc85b) - but for the same idiom that appears in the operator-clear, - operator-source, and unbounded-operator tests. This fixes - the failures that were introduced by the recent switch to - _cairo_lround. - - test/operator-clear.c | 4 ++-- - test/operator-source.c | 4 ++-- - test/unbounded-operator.c | 4 ++-- - 3 files changed, 6 insertions(+), 6 deletions(-) - -commit 11d21dbaa3604951f73b641e4d88723696157a8e -Author: Dan Amelang -Date: Tue Nov 21 14:50:29 2006 -0800 - - Change _cairo_matrix_to_pixman_matrix to use a pixman_transform_t as the template, thus avoiding a forced memcpy - - src/cairo-matrix.c | 8 +++----- - 1 files changed, 3 insertions(+), 5 deletions(-) - -commit 8a5e296239d1cac705c3c397ab1fd7f7f2ff8d58 -Author: Dan Amelang -Date: Tue Nov 21 12:14:05 2006 -0800 - - Optimize _cairo_matrix_to_pixman_matrix for the common case of an identity matrix - - src/cairo-matrix.c | 35 ++++++++++++++++++++++++----------- - 1 files changed, 24 insertions(+), 11 deletions(-) - -commit b7cd46ddc2a2523b4d33b22e07cdbdc09b90fa7d -Author: Dan Amelang -Date: Mon Nov 20 14:31:28 2006 -0800 - - Add and incorporate _cairo_gstate_transform_glyphs_to_backend - - After changing _cairo_gstate_show_glyphs and _cairo_gstate_glyph_path to use - this function, we see a significant speedup due to the elimination of redundant - FP calculations. - - src/cairo-gstate.c | 92 ++++++++++++++++++++++++++++++++++++++++----------- - 1 files changed, 72 insertions(+), 20 deletions(-) - -commit 6cfb4a01e005cb0f4f797ff9aa02e80b3d755a9e -Author: Dan Amelang -Date: Mon Nov 20 14:08:46 2006 -0800 - - Refactor _cairo_matrix_is_integer_translation - - Now that we have _cairo_matrix_is_translation, we can change - _cairo_matrix_is_integer_translation to use it and thus reduce code - duplication. - - src/cairo-matrix.c | 42 +++++++++++++++++++----------------------- - 1 files changed, 19 insertions(+), 23 deletions(-) - -commit ca79307bdf9bc8042c9afd570bf10d605d3dfc1e -Author: Dan Amelang -Date: Mon Nov 20 10:42:50 2006 -0800 - - Add _cairo_matrix_is_translation - - src/cairo-matrix.c | 7 +++++++ - src/cairoint.h | 3 +++ - 2 files changed, 10 insertions(+), 0 deletions(-) - -commit 57fba8d9b6915fe4b0f506ecb2ef18a9002de370 -Author: Daniel Amelang -Date: Thu Nov 2 22:24:34 2006 -0800 - - Replace existing rounding code with _cairo_lround - - src/cairo-directfb-surface.c | 12 ++++++------ - src/cairo-ft-font.c | 4 ++-- - src/cairo-glitz-surface.c | 4 ++-- - src/cairo-scaled-font.c | 14 ++++++-------- - src/cairo-win32-font.c | 14 ++++++++------ - src/cairo-win32-surface.c | 7 ++++--- - src/cairo-xcb-surface.c | 28 ++++++++++++++-------------- - src/cairo-xlib-surface.c | 16 ++++++++-------- - 8 files changed, 50 insertions(+), 49 deletions(-) - -commit efb483c3a36f8168d52086c2f61162f5a0306c15 -Author: Daniel Amelang -Date: Thu Nov 2 22:22:17 2006 -0800 - - Add _cairo_lround for much faster rounding - - This function uses the same "magic number" approach as _cairo_fixed_from_double. - - src/cairo.c | 25 +++++++++++++++++++++++++ - src/cairoint.h | 3 +++ - 2 files changed, 28 insertions(+), 0 deletions(-) - -commit 166dffc96aa26b21f87f12af22b11630583cc85b -Author: Carl Worth -Date: Tue Nov 21 20:57:01 2006 -0800 - - test/clip-operator: Use round to pass only integers to cairo_show_glyphs - - We were previously passing half-integer values here, which will - not be robust to changes in the rounding mode used for - cairo_show_glyphs. Use round() to match the rounding expected - by the reference images. - - test/clip-operator.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit eaaeba170d4c8313443412d88ee63311723b546d -Author: Behdad Esfahbod -Date: Tue Nov 21 19:05:16 2006 -0500 - - [SVG] Fix compiler warning - - cairo-svg-surface.c:980: warning: 'id' might be used uninitialized in this function - - src/cairo-svg-surface.c | 112 +++++++++++++++++++++++------------------------ - 1 files changed, 55 insertions(+), 57 deletions(-) - -commit c6fceb6721a26d801be0fa8ed3028f9dc8b7dfed -Author: Behdad Esfahbod -Date: Tue Nov 21 17:52:58 2006 -0500 - - [PS] Rename n_glyphs to num_glyphs_unsigned - - Follow-up on my previous commit. Use a more descriptive name to avoid - confusion between n_glyphs and num_glyphs. - - src/cairo-ps-surface.c | 18 +++++++++--------- - 1 files changed, 9 insertions(+), 9 deletions(-) - -commit 75eeb889767468b374df5f0aa6fb7ba1fe6addf9 -Author: Behdad Esfahbod -Date: Tue Nov 21 12:10:36 2006 -0500 - - [PS] Eliminate compiler warnings about unoptimizable loops - - An innocient-looking loop like this: - - for (j = 0; j <= last; j++) - something(); - - cannot be optimized, because it may loop forever! - Imagine the case that last is MAXINT, the loop will never end. The correct - way to write it is: - - for (j = 0; j < last+1; j++) - something(); - - In this case, if last is MAXINT, the loop will never run. Not correct, but - better than looping forever. - - Still better would be to correctly handle the MAXINT case (even though it - doesn't make any sense to show MAXINT number of glyphs in one operation!) To - do that, we can use the fact that the input num_glyphs is a signed. If - there is one good thing about using signed int as input length, it's that you - can use an unsigned looping variable to avoid looping forever. That is - exactly what this patch does. - - src/cairo-ps-surface.c | 28 +++++++++++++++------------- - 1 files changed, 15 insertions(+), 13 deletions(-) - -commit 2dbb3dfd5f7e3d802f1c3c57b39f9d69b2b7ee1e -Author: Emmanuel Pacaud -Date: Tue Nov 21 14:43:43 2006 +0100 - - SVG: plug a memory leak - - What's the point in creating a memory stream if we overload the - pointer a couple of lines below ? - - src/cairo-svg-surface.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit 12f8718a3ed40e51e3edd678874d0a13e0eaaa74 -Author: Behdad Esfahbod -Date: Tue Nov 21 00:10:03 2006 -0500 - - [SVG] Define enum _cairo_svg_version. - - src/cairo-svg.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 9cffc56228498e9d9fb1c047e1e1f2daaabac698 -Author: Vladimir Vukicevic -Date: Mon Nov 20 15:30:04 2006 -0800 - - [test] add big-trap test - - This test fills a single path (a trapezoid, even) that's larger than the - 16.16 precision used in pixman and other code. It leads to memory - scribbling and a crash. Note that there is no crash if a clip is not set. - - test/Makefile.am | 1 + - test/big-trap.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 61 insertions(+), 0 deletions(-) - -commit a91c1e3ea6c5d338f2d7cd61db5eede5076de3b2 -Author: Carl Worth -Date: Mon Nov 20 14:01:50 2006 -0800 - - Require librsvg 2.15.0 (was 2.14.0) for testing of SVG backend. - - Bryce Harrington saw off-by-one errors in output image size with - a 2.14.x version of librsvg. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e5bd21136cc43f569cdf424d2fd47d8298b53fb6 -Author: Carl Worth -Date: Mon Nov 20 09:32:00 2006 -0800 - - Add const qualifier to cairo_path_t* parameter of cairo_append_path - - src/cairo-path-data-private.h | 4 ++-- - src/cairo-path-data.c | 4 ++-- - src/cairo.c | 4 ++-- - src/cairo.h | 4 ++-- - 4 files changed, 8 insertions(+), 8 deletions(-) - -commit 10920c1326362b4fadfa01019223647c23351127 -Merge: 1ed3811... 2928f6e... -Author: Emmanuel Pacaud -Date: Sat Nov 18 12:59:12 2006 +0100 - - Merge branch 'svgprint' - -commit 1ed3811338a03068b7ce60f83fdd23fe01fec972 -Author: Carl Worth -Date: Fri Nov 17 17:50:14 2006 -0800 - - perf: Add box_outline test case. - - This test shows that drawing a 100x100 single-pixel wide box outline is - currently 5 to 16 times slower when using the natural cairo_stroke() as - compared to a rather awkward cairo_fill() of two rectangles. - - [ # ] backend-content test-size min(ticks) min(ms) median(ms) stddev. iterations - [ 0] image-rgba box-outline-stroke-100 301321 0.218 0.219 0.39% 5 - [ 1] image-rgba box-outline-fill-100 18178 0.013 0.013 0.43% 5 - [ 0] xlib-rgba box-outline-stroke-100 379177 0.275 0.276 1.39% 6 - [ 1] xlib-rgba box-outline-fill-100 83355 0.060 0.060 0.17% 5 - - perf/Makefile.am | 1 + - perf/box-outline.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 2 + - 4 files changed, 97 insertions(+), 0 deletions(-) - -commit a8faa0aef11abbd743ac9dc0b3127f9384325ee2 -Author: Carl Worth -Date: Fri Nov 17 17:48:39 2006 -0800 - - cairo-perf: When iteration count is given on command-line, never execute fewer - - perf/cairo-perf.c | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit a97b697d8fbba4ffc5a45a256603232ab5a4e86d -Author: Carl Worth -Date: Thu Nov 16 10:38:53 2006 -0800 - - ROADMAP: Set cairo 1.4 to early January for sake of Gnome 2.18 - - ROADMAP | 16 +++++++--------- - 1 files changed, 7 insertions(+), 9 deletions(-) - -commit db603d66476a7a8e6b7e52b907212d289f9fbdb4 -Author: Carl Worth -Date: Wed Nov 15 15:33:52 2006 -0800 - - Increment cairo version to 1.3.3 after 1.3.2 snapshot - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 804e20b55d049a26fe4d96bb6d79890c65e43ab5 -Author: Carl Worth -Date: Wed Nov 15 13:32:15 2006 -0800 - - Update cairo version and libtool version for 1.3.2 snapshot - - configure.in | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit c63fd9437b69bd2ce5d9e0f5784d13a05ac7b867 -Author: Carl Worth -Date: Wed Nov 15 13:30:16 2006 -0800 - - NEWS: Add notes for 1.3.2 snapshot - - NEWS | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 179 insertions(+), 0 deletions(-) - -commit a2d625edc62f35b4fbcefa6986918060f23fa1e6 -Author: Behdad Esfahbod -Date: Thu Nov 2 19:52:03 2006 -0500 - - Add notes for the 1.2.6 release. - - NEWS | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 60 insertions(+), 0 deletions(-) - -commit eeb1fa42aa44e1422dcfcdc6eb772b764c3ced58 -Author: Carl Worth -Date: Tue Nov 14 14:44:03 2006 -0800 - - Add missing pattern-getters-ref.png to Makefile to avoid breaking distcheck target - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 28a9f1dd1407b0070a2ba1c780a6f763acb47810 -Author: Carl Worth -Date: Tue Nov 14 14:35:35 2006 -0800 - - Fix get-clip test for surfaces not implementing set_clip_region - - test/get-clip.c | 24 ++++++++++++++++-------- - 1 files changed, 16 insertions(+), 8 deletions(-) - -commit 7b86cf513e9f6bdf68e391f6df6f859eba05ba9c -Author: Carl Worth -Date: Tue Nov 14 14:34:36 2006 -0800 - - Remove non-existent reference images from Makefile to avoid breaking distcheck target - - test/Makefile.am | 9 --------- - 1 files changed, 0 insertions(+), 9 deletions(-) - -commit 0f7381b26eae74903754b4fb5c1220a8626df5f4 -Author: Carl Worth -Date: Tue Nov 14 13:27:52 2006 -0800 - - cairo-perf-diff: Run git-ls-tree from the correct directory - - Before this change, cairo-perf-diff would work correctly only - if run from the top-level directory, (and if run from any other - directory it would not pull in the latest boilerplate and perf - files). - - perf/cairo-perf-diff | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit f3f6ea3092072defb958ee3a6b2271cb51b4a4ca -Author: Behdad Esfahbod -Date: Tue Nov 14 17:58:09 2006 -0500 - - Fix typo. - - src/cairo-traps.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 29b01f93ca9b29699420700ea9e2817898afa3ca -Author: Carl Worth -Date: Sat Nov 11 10:43:11 2006 -0800 - - Make miter join code use tessellate_convex_quad rather than tessellate_polygon - - This provides an additional 22-29% speedup on top of the previous - fix for stroking paths with many miter joins: - - image-rgba world_map-800 459.73 0.27% -> 356.80 0.32%: 1.29x speedup - â–Ž - image-rgb world_map-800 458.83 0.37% -> 358.08 0.41%: 1.28x speedup - â–Ž - xlib-rgba world_map-800 566.57 0.23% -> 463.84 0.31%: 1.22x speedup - â–Ž - xlib-rgb world_map-800 562.31 0.64% -> 460.51 0.83%: 1.22x speedup - â–Ž - - src/cairo-path-stroke.c | 20 +++++++------------- - 1 files changed, 7 insertions(+), 13 deletions(-) - -commit 3d53f623faed4aed2517e207d77a6da7e3b74fbd -Author: Carl Worth -Date: Fri Nov 10 12:56:32 2006 -0800 - - Make _cairo_stroker_add_sub_edge use tessellate_convex_quad rather than tessellate_polygon - - This gives a 17-20% speedup for stroking polygons with many - straight line segments as seen in the world_map test case: - - Speedups - ======== - image-rgba world_map-800 555.41 0.17% -> 460.69 0.20%: 1.21x speedup - â–Ž - image-rgb world_map-800 554.91 0.25% -> 460.73 0.26%: 1.20x speedup - â–Ž - xlib-rgb world_map-800 669.85 3.70% -> 570.31 0.24%: 1.17x speedup - â– - xlib-rgba world_map-800 663.71 0.46% -> 567.74 0.19%: 1.17x speedup - â– - - src/cairo-path-stroke.c | 31 ++++++------------------------- - 1 files changed, 6 insertions(+), 25 deletions(-) - -commit fefa7d9b993b1fc0759cfe1f8faff8dec9dc5c85 -Author: Carl Worth -Date: Fri Nov 10 12:53:33 2006 -0800 - - Rewrite tessellate_rectangle as tessellate_convex_quad to make it more useful - - Currently there aren't even any users of this code, (they had - stopped using it when they realized what they really wanted - was tessellate_convex_quad). - - src/cairo-traps.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++------- - src/cairoint.h | 2 +- - 2 files changed, 112 insertions(+), 17 deletions(-) - -commit e324bbcbc6ca86a714aa91fe5cd010a4ce4f1753 -Author: Carl Worth -Date: Fri Nov 10 12:37:01 2006 -0800 - - Add a status field to cairo_traps_t to enable less error checking - - src/cairo-traps.c | 148 +++++++++++++++++++++++------------------------------ - src/cairoint.h | 2 + - 2 files changed, 67 insertions(+), 83 deletions(-) - -commit 74f5fe241e6ce424a7d56a0ae48ddad202b82248 -Author: Carl Worth -Date: Mon Nov 13 14:44:07 2006 -0800 - - cairo-perf-diff: rsync only git-managed files from boilerplate/perf - - Previously, we were using rsync to recursively copy all files - from boilerplate and perf when doing the performance tests. This - had the fatal flaw that pre-built binaries would be hard coded to - link against the cairo library from $CAIRO_DIR with an absolute - path, (due to libtool rpath stuff). - - By only copying git-managed files, we only get source and the compiled - binaries (or libtool wrappers) will now be hard-coded to link against - the library under test. - - perf/cairo-perf-diff | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit 2928f6eb5f5bd207f8f41a628ad95d6552aa8246 -Author: Emmanuel Pacaud -Date: Sun Nov 12 20:49:34 2006 +0100 - - test/pixman-rotate.c: Don't issue a show_page, it's already done in cairo-test.c - - test/pixman-rotate.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit 4f02395267dc0cccef231e548a914329dce2831f -Author: Emmanuel Pacaud -Date: Sun Nov 12 20:45:50 2006 +0100 - - Use SVG multipage capability. - - test/fallback-resolution.c | 33 +++------------------------------ - 1 files changed, 3 insertions(+), 30 deletions(-) - -commit ad6d3a8369569cefde4984c0102cacf56b159cc7 -Author: Emmanuel Pacaud -Date: Sun Nov 12 20:45:10 2006 +0100 - - Add SVGPrint support. - - It's only activated when svg version >= 1.2. - Last page without a show page call is ignored if blank. - - src/cairo-svg-surface.c | 127 +++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 113 insertions(+), 14 deletions(-) - -commit 26b74049e79a6137e8556e1b3e5c3aedd780abb0 -Author: Carl Worth -Date: Fri Nov 10 10:31:14 2006 -0800 - - cairo-perf-diff: Use rsync instead of cp to avoid some unnecessary rebuilding - - perf/cairo-perf-diff | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f1f189b81a24730b7c5b5761165ab30bb8310bca -Author: Carl Worth -Date: Fri Nov 10 10:20:49 2006 -0800 - - cairo-perf-diff: Separate old and new build directories - - With the fancy new, incremental cairo-perf-diff we don't want to keep - resetting the same working tree back and forth between the old and new - versions and rebuilding everything all over again. So use two different - build directories instead of one. - - This fixes the rebuild of the library itself, but the perf stuff is still - being rebuilt, (since it's being re-copied each time). - - perf/cairo-perf-diff | 19 ++++++++++++------- - 1 files changed, 12 insertions(+), 7 deletions(-) - -commit d9b697c46ceb4849436df162d0574b08856680bb -Author: Carl Worth -Date: Fri Nov 10 10:04:01 2006 -0800 - - cairo-perf-diff: Allow incremental refinement of performance results - - cairo-perf-diff now accepts a -f command-line option to force it to - re-generate performance results even if something exists in the cache - already. It also now uses raw mode and appends to the cached file - rather than rewriting the results. - - Finally, it also now allows a -- option on the command line and passes - all the subsequent command-line options to cairo-perf. This is handy for - limiting cairo-perf to run only on a subset of the tests of interest. - - perf/cairo-perf-diff | 50 +++++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 41 insertions(+), 9 deletions(-) - -commit 439bf81e56955ea543a890d5e89622745598c8ea -Author: Carl Worth -Date: Fri Nov 10 10:00:31 2006 -0800 - - Fix broken size calculation for xrealloc - - Another one of those "untested code == broken code" situations. - - perf/cairo-perf-diff-files.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit f6b400a292759a7d603843afa6030ebb01349855 -Author: Carl Worth -Date: Wed Nov 8 05:45:09 2006 -0800 - - perf: Add world-map performance test case. - - The map for this test case was originally demonstrated as a - performance problem in this mozilla bug report: - - A very slow SVG file with s - https://bugzilla.mozilla.org/show_bug.cgi?id=332413 - - I obtained permission from the creator of the original file to - include the data here, (see comments in world-map.h for details). - - perf/Makefile.am | 2 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/world-map.c | 107 +++++++++++++++++++++++++++++ - perf/world-map.h | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 307 insertions(+), 0 deletions(-) - -commit 2d927eaefa1188d11c056a055321763faf43573e -Author: Carl Worth -Date: Wed Nov 8 05:40:17 2006 -0800 - - perf/Makefile.am: Add missing zrusin-another.h file to list - - perf/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 0d1340f7169920c901a0f6d6f8ecb4529e57ada4 -Author: Carl Worth -Date: Wed Nov 8 05:39:06 2006 -0800 - - perf: Eliminate CAIRO_STATS_MIN_VALID_SAMPLES - - We don't need this at this deep level since callers can now - implement this limiting manually since stats.iterations is - now returned. Also, this was interfering with the -i option - to cairo-perf anyway. - - perf/cairo-perf.c | 7 ++----- - perf/cairo-stats.c | 7 +------ - perf/cairo-stats.h | 9 +-------- - 3 files changed, 4 insertions(+), 19 deletions(-) - -commit 6d5df0e3e2e9804cede77cfd0d3659bd2d36a918 -Author: Carl Worth -Date: Tue Nov 7 13:06:01 2006 -0800 - - cairo-perf-diff-files: Add support for diffing "raw" files from "cairo-perf -r" - - perf/cairo-perf-diff-files.c | 161 +++++++++++++++++++++++++++++++++--------- - 1 files changed, 128 insertions(+), 33 deletions(-) - -commit d1e1192090c56b5fa0794faae319cfaa88fc1788 -Author: Carl Worth -Date: Tue Nov 7 12:59:57 2006 -0800 - - cairo-perf: Print ticks_per_ms value in raw mode so raw analysis tools can report times - - perf/cairo-perf.c | 9 +++++---- - 1 files changed, 5 insertions(+), 4 deletions(-) - -commit 5393989272881f9128df3c4a3fc6bb2c08b06a1e -Author: Carl Worth -Date: Tue Nov 7 12:57:48 2006 -0800 - - perf: Move statistics code into new cairo-stats.h for sharing - - perf/Makefile.am | 6 ++- - perf/cairo-perf.c | 106 +++------------------------------------------------ - perf/cairo-perf.h | 6 ++- - perf/cairo-stats.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/cairo-stats.h | 51 ++++++++++++++++++++++++ - 5 files changed, 174 insertions(+), 103 deletions(-) - -commit 7673e3ac3fc36042efcbccc3836d8bc81bdb94b3 -Author: Carl Worth -Date: Tue Nov 7 12:50:52 2006 -0800 - - boilerplate: Add xrealloc function - - boilerplate/xmalloc.c | 12 ++++++++++++ - boilerplate/xmalloc.h | 3 +++ - 2 files changed, 15 insertions(+), 0 deletions(-) - -commit 1e4515c548bd2a1440c630d779a948e5b02890e9 -Author: Vladimir Vukicevic -Date: Tue Nov 7 13:15:28 2006 -0800 - - [win32] implement EXTEND_REPEAT in composite when possible - - Optimizes EXTEND_REPEAT, especially when DDBs are in use through the - use of PatBlt or manually expanding out the repeated blits (up to a - limit). Will still fall back to fallback code as necessary. - - src/cairo-win32-surface.c | 386 +++++++++++++++++++++++++++++++-------------- - 1 files changed, 266 insertions(+), 120 deletions(-) - -commit 6db219c3a16bbbe736653946ea5a4758656a9cd9 -Author: Vladimir Vukicevic -Date: Fri Nov 3 10:04:28 2006 -0800 - - [win32] clean up win32_surface_composite - - Make sure that all operations are correct (the operations chosen - are listed in cairo-win32-surface.c); in particular, deal with the extra - byte present in FORMAT_RGB24 surfaces correctly. - - Also adds support for calling StretchDIBits to draw RGB24 - cairo_image_surfaces directly. - - src/Makefile.win32 | 3 +- - src/cairo-win32-private.h | 5 +- - src/cairo-win32-surface.c | 318 +++++++++++++++++++++++++++++---------------- - src/cairoint.h | 5 + - test/Makefile.win32 | 1 - - 5 files changed, 218 insertions(+), 114 deletions(-) - -commit 3e002a474b64c83f8768ba8918209eca9d7599a3 -Author: Vladimir Vukicevic -Date: Fri Nov 3 09:47:31 2006 -0800 - - [win32] Update pixman MMX code to work with MSVC - - Patch from Tor Lillqvist. - - pixman/src/Makefile.win32 | 3 +- - pixman/src/fbmmx.c | 187 +++++++++++++++++++++++++++----------------- - pixman/src/fbpict.c | 57 ++++++++++++++ - 3 files changed, 174 insertions(+), 73 deletions(-) - -commit fc87d4148131ce01f645aec12a5e1b6d6b55d337 -Author: Behdad Esfahbod -Date: Tue Nov 7 15:07:33 2006 -0500 - - [configure] Err if a suitable pkg-config is not found - - configure.in | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit fc584e1fbb87752f6123fbc02c1c27e538dd13f0 -Author: Carl Worth -Date: Tue Nov 7 01:42:21 2006 -0800 - - Rewrite _cairo_matrix_transform_bounding_box to actually accept a box not a rectangle - - It turns out that all of the callers want a box anyway, so this - simplfies the code in addition to being more honest to the name. - - (For those new to the convention, a "box" is an (x1,y2),(x2,y2) - pair while a "rectangle" is an (x,y),(width,height) pair.) - - src/cairo-gstate.c | 9 ++------- - src/cairo-matrix.c | 39 +++++++++++++++++---------------------- - src/cairo-pattern.c | 19 ++++++++----------- - src/cairoint.h | 4 ++-- - 4 files changed, 29 insertions(+), 42 deletions(-) - -commit 777eaf326a56bb3b2ec3e6408309336d2bf6754f -Author: Carl Worth -Date: Tue Nov 7 01:33:40 2006 -0800 - - test/Makefile.am: Fix typo in EXTRA_DIST that was breaking distcheck - - test/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0564b5074c431c3e723d906769b5383eddae659d -Author: Carl Worth -Date: Tue Nov 7 01:29:38 2006 -0800 - - cairo-perf: Add command line options for test cases to run, listing tests, and new raw mode. - - perf/cairo-perf.c | 163 +++++++++++++++++++++++++++++++++++++++++++---------- - perf/cairo-perf.h | 7 ++ - 2 files changed, 139 insertions(+), 31 deletions(-) - -commit 49b72f004d4de50de86f7f350ce01aa5b48f35ae -Author: Carl Worth -Date: Mon Nov 6 23:56:19 2006 -0800 - - Add zrusin-another test cases (tessellate and fill). - - This new test case is the 0th polygon polygon from Zack Rusin's - recent cairorender program as made avaialable here: - - http://ktown.kde.org/~zrusin/examples/cairorender.tar.bz2 - - This polygon contains about 1000 coordinates and looks like a - hand-drawn version of the word another. - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/zrusin-another.h | 668 +++++++++++++++++++++++++++++++++++++++++++++++++ - perf/zrusin.c | 90 +++++++ - 5 files changed, 762 insertions(+), 1 deletions(-) - -commit 52eb7134bd22c648a10e2b9b8c5d1409de309887 -Author: Carl Worth -Date: Fri Nov 3 15:32:57 2006 -0800 - - cairo-perf-diff: Use two-part hash to avoid stale data when perf suite changes. - - The perf tree's sha1 is now in the cache file name, so that - if the performance suite itself ever changes then new data - will be generated rather than using stale stuff from the cache. - - Also, we now use the src tree's sha1 rather than the commit's - so that commits that don't change the src directory are also - treated as identical, (which they really should be as far as - performance of the library itself is concerned). - - perf/cairo-perf-diff | 18 +++++++++++++++--- - perf/cairo-perf.c | 2 +- - 2 files changed, 16 insertions(+), 4 deletions(-) - -commit e760d0927ee5b732392284fc19fda225f137f909 -Author: Carl Worth -Date: Fri Nov 3 14:58:30 2006 -0800 - - Don't rely on NQUARTZ or OS2 surface types unless they exist. - - This allows the cairo-perf stuff to build on older checkouts, - (such as 1.2.4), so that we can usefully do things like: - - cairo-perf-diff 1.2.4 HEAD - - perf/cairo-perf.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 4cd50965a1935bf934f39f9e35b7d1a055ae7e16 -Author: Dan Amelang -Date: Sun Oct 29 21:31:23 2006 -0800 - - Change _cairo_fixed_from_double to use the "magic number" technique - - See long thread here: - http://lists.freedesktop.org/archives/cairo/2006-October/008285.html - - This patch provides a 3x performance improvement (on x86) for the - conversion of floating-point to fixed-point values as measured by - the recent pattern_create_radial performance test: - - image-rgba pattern_create_radial-16 8.98 3.36% -> 2.97 1.03%: 3.38x speedup - ██■- image-rgb pattern_create_radial-16 8.94 3.21% -> 2.97 0.18%: 3.36x speedup - ██■- xlib-rgb pattern_create_radial-16 9.55 3.17% -> 3.64 0.51%: 2.93x speedup - █▉ - xlib-rgba pattern_create_radial-16 9.63 3.53% -> 3.69 0.66%: 2.91x speedup - █▉ - - src/cairo-fixed.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 47 insertions(+), 1 deletions(-) - -commit 5376e474255b80d084dd250cab6ea5c14220a3f3 -Author: Dan Amelang -Date: Sun Oct 29 21:30:08 2006 -0800 - - Add autoconf macro AX_C_FLOAT_WORDS_BIGENDIAN - - The symbol that this macro defines (FLOAT_WORDS_BIGENDIAN) can be used - to make double arithmetic tricks portable. - - acinclude.m4 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - configure.in | 1 + - 2 files changed, 66 insertions(+), 0 deletions(-) - -commit 941b517024c79dfd157337565477b0a440924702 -Author: Carl Worth -Date: Fri Nov 3 13:26:48 2006 -0800 - - cairo-perf-diff: Build and run latest cairo-perf program rather than whatever was in the old checkout - - perf/cairo-perf-diff | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit e2ede57fbb8d729f066bc592e33bae23a11fa4d9 -Author: Carl Worth -Date: Fri Nov 3 12:40:09 2006 -0800 - - cairo-perf-diff: Fix to still function if run from the top-level directory containing .git - - perf/cairo-perf-diff | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 8e74f9f945f4a498ec64930ddd46cc89129812bc -Author: Jinghua Luo -Date: Mon Nov 6 12:21:25 2006 +0800 - - glitz: fix a memory leak in _cairo_glitz_surface_composite_trapezoids. - - src/cairo-glitz-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit e759959fd6a59d439fe5fe147326401619cb939b -Author: Behdad Esfahbod -Date: Thu Nov 2 21:15:41 2006 -0500 - - [Makefile.am] Pass tag message to git-tag in release-publish - - (cherry picked from 7cac87c8041f63fac2e0a2f5a29e36ed80d8d51a commit) - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 91ffb36faa121ccfaa57d8857c239dd3a6bb3e95 -Author: Behdad Esfahbod -Date: Thu Nov 2 21:13:49 2006 -0500 - - [Makefile.am] Minor fixes in release-publish output - - (cherry picked from 953332d128120e7c4f4197390984be11a80a368b commit) - - Makefile.am | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 16bc72feafac4f78552cd003680ae7133562b6f4 -Author: Carl Worth -Date: Thu Nov 2 17:16:52 2006 -0800 - - Increment CAIRO_VERSION to 1.3.1 now that a 1.2.6 release exists - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 5500c59b9be9f7f32e8b3d0d9b5fa775e50fbe98 -Author: Carl Worth -Date: Thu Nov 2 12:27:17 2006 -0800 - - Remove typo (mean vs median) - - This didn't end up making a difference in practice since the - median is assigned again later on. - - perf/cairo-perf.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit b717e987776d60cbc37434f7c918ad438e29b1a4 -Author: Carl Worth -Date: Thu Nov 2 12:21:26 2006 -0800 - - cairo-perf: Change outlier elimination and report minimum times. - - Instead of just discarding the worst 15% of the results, we now - do IQR-based detection and elimination of outliers. Also, instead - of reporting mean times we now report minimum and median times. - We still do compute the mean and standard deviation for the - detection of when results seem stable for early bailout. And we - do still report the standard deviation. - - A statistician might complain that it looks funny to report the - median and the standard deviation together, (instead of median - and average absolute deviation from the median, say), but I liked - the standard deviation since it is always larger, so it might - ensure better separatation if we use it to determine when two - sets of results are sufficiently different to be interesting. - - perf/cairo-perf-diff-files.c | 43 +++++++++---------- - perf/cairo-perf.c | 92 +++++++++++++++++++++++++++++++++-------- - 2 files changed, 94 insertions(+), 41 deletions(-) - -commit d2d0d11bdefa012d65364b24477bb86c8475ca86 -Author: Dan Amelang -Date: Tue Oct 31 23:47:35 2006 -0800 - - Add new perf test "pattern_create_radial" - - This test is really just for hammering the double to fixed-point conversion - (in _cairo_fixed_from_double) that happens as doubles from API calls gets - translated into internal cairo fixed-point numbers. - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/pattern_create_radial.c | 98 ++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 101 insertions(+), 0 deletions(-) - -commit a618fd2cf90575ac7695b614328f1123db86b372 -Author: Carl Worth -Date: Fri Oct 27 00:51:24 2006 -0700 - - cairo-perf-diff: Simplify git usage and just run cairo-perf that gets built with cairo revision - - Many thanks to Josh Triplett for help with theses fixes: - - 1. Simplify the usage of git to eliminate the fragile and nasty - stuff we were doing previously, (such as manually symlinking - things under .git rather than just using git-clone -s). - - 2. Don't try running latest cairo-perf with LD_LIBRARY_PATH - pointing to built cairo version. Apparently stupid libtool - and its use of rpath is foiling us here. Instead just run - whatever cairo-perf gets built as part of the source that - gets checked out. - - This second point means that cairo-perf-diff won't yet be useful - for comparing the performance of old cairo revisions that pre-date - cairo-perf. I've since been reasing and we might be able to use - --disable-rpath to the configure script to get what we want. - - perf/cairo-perf-diff | 22 ++++++---------------- - 1 files changed, 6 insertions(+), 16 deletions(-) - -commit 504ea250f7c052525cf28536c767d4f9f57e7cc9 -Author: Jamey Sharp -Date: Sun Oct 29 13:48:14 2006 -0800 - - XCB/perf: implement boilerplate_xcb_synchronize for fair performance tests. - - It sure was nice when some tests showed XCB to be 1300 times faster - than Xlib though... - - boilerplate/cairo-boilerplate.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -commit bc983700c463671128822e2eb9f74cbe834a1c1b -Author: Behdad Esfahbod -Date: Sun Oct 29 14:49:06 2006 -0500 - - [autogen.sh] Make sed script portable - - autogen.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7442b4086667ed67d9086e817af3d3c081a2b6f1 -Author: Jamey Sharp -Date: Sun Oct 29 11:18:09 2006 -0800 - - perf: cairo-perf-diff-files.c should generate cairo-perf-diff-files - - ... rather than overwriting the new cairo-perf-diff script, which - should (by the way) be included in dist tarballs. - - perf/Makefile.am | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit b0f5af3b473e5d58e0fc07a38948c83897e1b1fc -Author: Jamey Sharp -Date: Sun Oct 29 10:59:30 2006 -0800 - - Add clip-push-group to .gitignore. - - test/.gitignore | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit a34ba73136a1b34c413eff78a44c28a6f1ba80f6 -Author: Christian Biesinger -Date: Fri Oct 27 23:50:57 2006 +0200 - - [beos] Allow a pixel error of 1 for BeOS tests - - That allows us to delete the BeOS-specific reference images. - - boilerplate/cairo-boilerplate.c | 9 ++++++--- - test/mask-beos-bitmap-argb32-ref.png | Bin 87641 -> 0 bytes - test/mask-beos-bitmap-rgb24-ref.png | Bin 71028 -> 0 bytes - test/mask-beos-rgb24-ref.png | Bin 71028 -> 0 bytes - test/set-source-beos-bitmap-rgb24-ref.png | Bin 124 -> 0 bytes - test/set-source-beos-rgb24-ref.png | Bin 124 -> 0 bytes - test/trap-clip-beos-bitmap-rgb24-ref.png | Bin 63088 -> 0 bytes - test/trap-clip-beos-rgb24-ref.png | Bin 63088 -> 0 bytes - 8 files changed, 6 insertions(+), 3 deletions(-) - -commit 2ec0237051cd4f756a8205cb9ecafc7bfe285a06 -Author: Christian Biesinger -Date: Fri Oct 27 23:47:15 2006 +0200 - - [beos] make tests compile again - - boilerplate/cairo-test-beos.cpp | 44 +++++++++++++++++++++++++++++--------- - boilerplate/cairo-test-beos.h | 16 ++++++++++--- - 2 files changed, 45 insertions(+), 15 deletions(-) - -commit e29aea745aa2c23ac9d60612813d5e415e1f8e57 -Author: Christian Biesinger -Date: Fri Oct 27 12:07:26 2006 +0200 - - [win32] Add parentheses around & operator - - This fixes a GCC warning. Also, it fixes a bug: The precedence - of & is not what you might expect. - - src/cairo-win32-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 61bf9b009b47312c20d54198790542cd20fc5576 -Author: Carl Worth -Date: Thu Oct 26 15:52:21 2006 -0700 - - Make xlib and xcb backends tolerant of single-bit errors in the test suite output. - - boilerplate/cairo-boilerplate.c | 12 ++++++++---- - 1 files changed, 8 insertions(+), 4 deletions(-) - -commit 05a259d49368fb128b99d99f3776f8783df9d4ed -Author: Christian Biesinger -Date: Thu Oct 26 21:40:35 2006 +0200 - - [beos] Fix build error - - Rename cairo_rectangle_fixed_t to cairo_rectangle_int16_t - as needed per commit 746f66c3fce6de39ac9afa7be8bcf8f74c750e85. - - src/cairo-beos-surface.cpp | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -commit acac0c19667d2166e2a26b07445fa78640dc8a33 -Author: Ian Osgood -Date: Thu Oct 26 09:56:13 2006 -0700 - - don't squish tiny images in test/index.html - - test/make-html.pl | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit bd0f9919086f2978eb1df22cd5c1fffb7621d33f -Author: Adrian Johnson -Date: Fri Oct 27 00:00:24 2006 +0930 - - Add OpenType/CFF Subsetting - - src/Makefile.am | 1 + - src/cairo-cff-subset.c | 1452 +++++++++++++++++++++++++++++++ - src/cairo-pdf-surface.c | 107 +++ - src/cairo-scaled-font-subsets-private.h | 40 + - src/cairo-truetype-subset-private.h | 1 + - 5 files changed, 1601 insertions(+), 0 deletions(-) - -commit e4c3da80806804574c99170b1df3cb92f6493283 -Author: Adrian Johnson -Date: Thu Oct 26 23:41:57 2006 +0930 - - PS: Use xshow/yshow/xyshow for strings of glyphs - - Optimize show glyphs by looking for strings of glyphs from the same subset - and use the xyshow operator to display. As a further optimization the xshow - and yshow operators are used for displaying horizontal and vertical text. - - src/cairo-ps-surface.c | 149 +++++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 121 insertions(+), 28 deletions(-) - -commit e1ded5b1e042c8cefa7f136228d5a63a7bdf84b5 -Author: Behdad Esfahbod -Date: Wed Oct 25 21:40:08 2006 -0400 - - [PDF] Set CTM before path construction - - The previous order is undefined according to the PDF spec. The resulting PDF - was being misrendered using OS X Preview viewer. This was reported in this - thread: - - http://lists.freedesktop.org/archives/cairo/2006-October/008271.html - - src/cairo-pdf-surface.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit a9f51c29733a5124e0d04d8dcc00d55ff3aeb05a -Author: Carl Worth -Date: Wed Oct 25 17:15:22 2006 -0700 - - Add new cairo-perf-diff for finding the performance difference between any 2 revisions. - - The old cairo-perf-diff is now named cairo-perf-diff-files, but - the new one calls out to it and can still be used in an identical - way. - - The new cairo-perf-diff can also be used to see what the performance - impact of a single commit is like so: - - cairo-perf-diff HEAD - - or between two commits: - - cairo-perf-diff 1.2.4 HEAD - - The script is careful to always run the latest cairo-perf program - even when testing old versions of the library. Also, the output - from any given performance run is cached so it gets less painful - to run as the cache gets primed (the cache is in .perf next to - .git). - - The script is still a bit fragile in spots. In particular it depends - on cairo-perf being built in advance but doesn't do anythin to ensure - that happens. - - perf/.gitignore | 2 +- - perf/Makefile.am | 7 +- - perf/cairo-perf-diff | 106 +++++++++ - perf/cairo-perf-diff-files.c | 482 ++++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf-diff.c | 482 ------------------------------------------ - 5 files changed, 594 insertions(+), 485 deletions(-) - -commit c7b9f84744cd3fe4a6c9dead1e128d91f9cfc3cb -Author: Behdad Esfahbod -Date: Wed Oct 25 16:07:15 2006 -0400 - - Require automake 1.7 again - - We are not using the slash-in-SUBDIRS feature of automake 1.9 anymore, so bump - required version down. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f85aca4c3ff02a38b83da48b618e420b79b29c37 -Author: Behdad Esfahbod -Date: Wed Oct 25 16:06:42 2006 -0400 - - Make autogen.sh extract required versions from configure.in - - autogen.sh | 42 ++++++++++++++++++++++++++---------------- - configure.in | 19 +++++++++++-------- - 2 files changed, 37 insertions(+), 24 deletions(-) - -commit 838ff68cd5d866ca373af95f43afe0219fdd6159 -Author: Behdad Esfahbod -Date: Wed Oct 25 15:44:03 2006 -0400 - - [perf] Remove SUBDIRS=../boilerplate and add explicit dependencies - - This is quite like what I just did in test/. We can now require an older - version of automake as we used to. - - perf/Makefile.am | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 02096f66f365c109ddf41432b9a818726d45cbae -Author: Carl Worth -Date: Wed Oct 25 12:51:35 2006 -0700 - - Fix typo - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7955fe63cc6bdb3a525535c7f052ea354cc7497c -Author: Carl Worth -Date: Wed Oct 25 12:51:17 2006 -0700 - - Fix offset/extent bug in ps output for repeating source surface patterns - - The bug was exposed by the recent addition of the paint-repeat test. - The ps output was crashing various interpreters by using infinite - extents for repeating patterns. Fixing that was easy enough, but - the offset of the repeating pattern was still being lost. The fix - for both involved imitating the style of emit_surface_pattern as - it exists in cairo-pdf-surface.c, (though the details are quite - different due to differences in the models of PS and PDF). - - src/cairo-ps-surface.c | 84 ++++++++++++++++++++++++++++++++--------------- - 1 files changed, 57 insertions(+), 27 deletions(-) - -commit 76f816c765a19a4fcda0500b5495bb969d014958 -Author: Carl Worth -Date: Wed Oct 25 10:44:53 2006 -0700 - - test/paint-repeat: Use offset larger than source surface for better stress testing - - test/paint-repeat.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 06d3786b2c76e05939bff1065a57db3059ccbc95 -Author: Carl Worth -Date: Wed Oct 25 10:43:19 2006 -0700 - - Add new paint-repeat test - - I added this test originally to make it easier to debug - some recent bugs, (the test suite did have some repeating - in the checkered backgrounds, but with an offset of 0, - and then also in trap clip with an offset larger than the - surface itself). This test exercises repeating more directly. - - It also triggers a bug in the PostScript backend that I've - not yet investigated. So the test does fail currently. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/paint-repeat-ref.png | Bin 0 -> 145 bytes - test/paint-repeat.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 69 insertions(+), 0 deletions(-) - -commit 7421e8af0ca3b5c80dd3c7b145c639196f6036a5 -Author: Behdad Esfahbod -Date: Wed Oct 25 15:28:36 2006 -0400 - - [test] Make sure tests are not relinked unnecessarily - - What was causing it was making all tests depend on all, to make sure - ../boilerplate is built first. I'm not making all tests depend on - ../boilerplate/libcairoboilerplate.la and ../src/libcairo.ls and added rules - to build those (by changing dir and making them). - - test/Makefile.am | 11 +++++++---- - 1 files changed, 7 insertions(+), 4 deletions(-) - -commit 7e9aad228971a81783e09edfef58c5165a3c932e -Author: Carl Worth -Date: Wed Oct 25 10:32:37 2006 -0700 - - Fix repeating source surface patterns with xlib backend. - - This broke with the clone_similar optimization in - 8d7a02ed58e06584eb09575e6ca11d0a81094ab6 The optimization added an - interest rectangle to clone_similar, but with a repeating source - pattern, the interest rectangle might not intersect the extents of the - surface at all. - - The test suite caught this with the trap-clip case. - - The fix here is to clone the entire surface if the pattern has an - extend mode of REPEAT. - - src/cairo-pattern.c | 54 ++++++++++++++++++++++++++++++++------------------ - src/cairoint.h | 10 +++++++++ - 2 files changed, 44 insertions(+), 20 deletions(-) - -commit 804e5b58cd3a4032bfa1d0c8cccac92a70c3c635 -Author: Jinghua Luo -Date: Wed Oct 25 13:29:06 2006 +0800 - - glitz: further fix for clone_similar. - - Don't try to get pixels outside image extent. The failure number of - tests cut down to 19 with this fix, not too bad;). - - src/cairo-glitz-surface.c | 19 +++++++++++++++++-- - 1 files changed, 17 insertions(+), 2 deletions(-) - -commit 69f740913d6841708831668ef2a3bf124f373031 -Author: Ian Osgood -Date: Tue Oct 24 08:24:30 2006 -0700 - - bug: wrong xcb_copy_area param order - - src/cairo-xcb-surface.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 8381e53cc741af73fddebe61d9a0b28a8329c18b -Author: Carl Worth -Date: Mon Oct 23 20:44:29 2006 -0700 - - 8711: Fix transformed source surface patterns with xlib backend. - - This broke with the clone_similar optimization in - 8d7a02ed58e06584eb09575e6ca11d0a81094ab6 - The optimization added an interest rectangle to clone_similar, - but the acquire_surface path was neglecting to transform its - rectangle by the pattern matrix. - - The test suite did catch this, but apparently we were too - distracted by the performance improvements to notice. Only - backends other than image that implemented clone_similar - would be affected by the bug, (which meant I only saw xlib - failures in my testing). - - This fixes bug #8711 - - src/cairo-pattern.c | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) - -commit 670b3ce2432154cc0611a31c5b5e37c8a3ddf1f5 -Author: Carl Worth -Date: Mon Oct 23 11:57:16 2006 -0700 - - test: Update reference images due to previous change to _cairo_color_compute_shorts - - The previous change was in b62710d4f8602203d848daf2d444865b611fff09 - We just forgot to update the reference images at the time so there - have been false failure results in the test suite until now. - - test/caps-joins-alpha-ref.png | Bin 2434 -> 2463 bytes - test/fill-and-stroke-alpha-add-ref.png | Bin 588 -> 591 bytes - test/fill-and-stroke-alpha-ref.png | Bin 532 -> 519 bytes - test/linear-gradient-ref.png | Bin 1023 -> 1021 bytes - test/mask-ref.png | Bin 87890 -> 87899 bytes - test/mask-rgb24-ref.png | Bin 70978 -> 71010 bytes - test/operator-source-ref.png | Bin 19726 -> 19763 bytes - test/operator-source-rgb24-ref.png | Bin 14701 -> 14666 bytes - test/paint-source-alpha-pdf-argb32-ref.png | Bin 475 -> 471 bytes - test/paint-source-alpha-ref.png | Bin 258 -> 256 bytes - test/paint-with-alpha-ref.png | Bin 268 -> 256 bytes - test/push-group-ref.png | Bin 2996 -> 3005 bytes - test/push-group-rgb24-ref.png | Bin 2840 -> 2849 bytes - test/set-source-ref.png | Bin 120 -> 120 bytes - test/set-source.c | 4 +--- - test/trap-clip-ref.png | Bin 71753 -> 71832 bytes - 16 files changed, 1 insertions(+), 3 deletions(-) - -commit 9e4a48557ee42f13c427adfd7e097942ef315006 -Author: Adrian Johnson -Date: Mon Oct 23 23:17:06 2006 +0930 - - type1 fallback: ensure all functions perform correct status checking - - src/cairo-type1-fallback.c | 58 ++++++++++++++++++++++++++++--------------- - 1 files changed, 38 insertions(+), 20 deletions(-) - -commit bd5d7c1fb2331c487c934c20f6067455e0a4ca3d -Author: Christian Biesinger -Date: Sun Oct 22 20:08:07 2006 +0200 - - Don't return an uninitialized value if _cairo_output_stream_create fails - - src/cairo-type1-fallback.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 2313f69066152034ac977776bee88f0c77b76aca -Author: Christian Biesinger -Date: Sun Oct 22 20:07:57 2006 +0200 - - Fix prototype warning by including cairo-test-directfb.h - - boilerplate/cairo-test-directfb.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 153f2d1cad171eba7b63d6ceefea2a26ffd8b532 -Author: Christian Biesinger -Date: Sun Oct 22 20:07:25 2006 +0200 - - Actually return a value from _cairo_type1_fallback_init_* - - src/cairo-type1-fallback.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit d6ebe07be214461b6d456ebdbdc5acfd432e0178 -Author: Christian Biesinger -Date: Sun Oct 22 12:47:43 2006 +0200 - - Add missing ) in comment - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit f29a1920b0447be9e0fe21afc2d3a3d03fd097fc -Author: Jinghua Luo -Date: Sun Oct 22 12:31:40 2006 +0800 - - glitz: my previous changes in _cairo_glitz_surface_create_similar is - incorrect. - - src/cairo-glitz-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1a90d28c3f70d6347746779354713c3de515f3c4 -Author: Ian Osgood -Date: Sat Oct 21 11:57:03 2006 -0700 - - XCB: make create_internal match Xlib - - minus font options and buggy repeat - plus some cleanup and removal of more Xlib diffs - - src/cairo-xcb-surface.c | 149 +++++++++++++++++++++-------------------------- - 1 files changed, 66 insertions(+), 83 deletions(-) - -commit 343d9ef030a6a15f779f12e13a03a9451d2fff8b -Author: Jinghua Luo -Date: Sat Oct 21 17:27:28 2006 +0800 - - glitz: don't go fackback path for bitmap glyphs. - - Test case bitmap font still passes with changes and improves performance - a lot. - - src/cairo-glitz-surface.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 3b1d0d3519a7d0328f897927d3534f10750d30db -Author: Jinghua Luo -Date: Sat Oct 21 17:23:11 2006 +0800 - - glitz: fix test case glyph-cache-pressure. - - Glitz backend need freeze glyph cache as xlib backend otherwise it'll - crash, let's fix it now. - - src/cairo-glitz-surface.c | 47 ++++++++++++++------------------------------ - 1 files changed, 15 insertions(+), 32 deletions(-) - -commit f3c58350713b46c6e0e26a40898dc4da85e10279 -Author: Jinghua Luo -Date: Sat Oct 21 17:18:51 2006 +0800 - - glitz: fix for clone similar. - - This corrects mosts of changes in clone similar commit. But it's - still a problem in _cairo_glitz_surface_set_image, it'll crash if - source region is outside image extents. - - src/cairo-glitz-surface.c | 20 ++++++++++++-------- - 1 files changed, 12 insertions(+), 8 deletions(-) - -commit 2ef9c7d9e8fcd0bda138f2b1965b3b06491cae00 -Author: Jinghua Luo -Date: Sat Oct 21 17:07:19 2006 +0800 - - glitz: fix a crash in _cairo_glitz_surface_get_image. - - The previous changes in _cairo_glitz_surface_get_image causes test - clip-fill-rule-pixel-aligned and clip-fill-rule fail with a pretty - crash, this fix that. - - src/cairo-glitz-surface.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) - -commit a34a4a2bd745c07f0d6034acf066252ae55fbb81 -Author: Ian Osgood -Date: Fri Oct 20 11:17:03 2006 -0700 - - XCB: bring composite, trapezoids up-to-date with Xlib - - Categorize & recategorize - Distinguish DO_COPYAREA and DO_XTILE - Create trapezoid mask - Fixup unbounded - - src/cairo-xcb-surface.c | 268 ++++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 241 insertions(+), 27 deletions(-) - -commit b1944e1672ee6faa034dba4d8cf730886c35e848 -Author: Carl Worth -Date: Thu Oct 19 15:48:13 2006 -0700 - - Fix bug in _cairo_clip_init_deep_copy (fixes clip-push-group crash) - - Thanks to Miklós Erdélyi for reporting - the original problem and suggesting the fix. - - src/cairo-clip.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit f894ebf98022ecf5844cd50840e916d6ddbea0bf -Author: Carl Worth -Date: Thu Oct 19 15:45:53 2006 -0700 - - clip-push-group: Adjust test slightly to ensure mask-based clip is not anchored at the origin - - This should help us test if there's an offset problem in copying - the mask-based clip during cairo_push_group. - - test/clip-push-group-ref.png | Bin 200 -> 199 bytes - test/clip-push-group.c | 3 ++- - 2 files changed, 2 insertions(+), 1 deletions(-) - -commit f880f5e57bc44c2c2e70a80f0df21ea89084cd8c -Author: Carl Worth -Date: Thu Oct 19 15:43:02 2006 -0700 - - test: Add clip-push-group to demonstrate crash in cairo_push_group - - The crash happens anytime mask-based clipping is in effect - at the time of cairo_push_group. The crash was first reported - here: - http://lists.freedesktop.org/archives/cairo/2006-August/007698.html - - test/Makefile.am | 2 + - test/clip-push-group-ref.png | Bin 0 -> 200 bytes - test/clip-push-group.c | 74 ++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 76 insertions(+), 0 deletions(-) - -commit 8d2f0367527cb23f5902db0526b69b7d83b97f9c -Author: Ian Osgood -Date: Thu Oct 19 13:42:04 2006 -0700 - - XCB: implement subimage_copy fix - - Needs further testing and review. - - src/cairo-xcb-surface.c | 80 +++++++++++++++++++++++++++++++++++++--------- - 1 files changed, 64 insertions(+), 16 deletions(-) - -commit 8d7a02ed58e06584eb09575e6ca11d0a81094ab6 -Author: Christopher (Monty) Montgomery -Date: Wed Oct 18 17:06:23 2006 -0700 - - Add extents to clone_similar (fixing subimage_copy performance bug) - - This fixes a huge performance bug (entire image was being pushed to X - server in order to copy a tiny piece of it). I see up to 50x improvement - from subimage_copy (which was designed to expose this problem) but also - a 5x improvement in some text performance cases. - - xlib-rgba subimage_copy-512 3.93 2.46% -> 0.07 2.71%: 52.91x faster - ███████████████████████████████████████████████████▉ - xlib-rgb subimage_copy-512 4.03 1.97% -> 0.09 2.61%: 44.74x faster - ███████████████████████████████████████████▊ - xlib-rgba subimage_copy-256 1.02 2.25% -> 0.07 0.56%: 14.42x faster - █████████████■- xlib-rgba text_image_rgb_over-256 63.21 1.53% -> 11.87 2.17%: 5.33x faster - ████■- xlib-rgba text_image_rgba_over-256 62.31 0.72% -> 11.87 2.82%: 5.25x faster - ████▎ - xlib-rgba text_image_rgba_source-256 67.97 0.85% -> 16.48 2.23%: 4.13x faster - ███■- xlib-rgba text_image_rgb_source-256 68.82 0.55% -> 16.93 2.10%: 4.07x faster - ███■- xlib-rgba subimage_copy-128 0.19 1.72% -> 0.06 0.85%: 3.10x faster - ██■- - src/cairo-clip.c | 7 ++++++- - src/cairo-directfb-surface.c | 18 +++++++++++++----- - src/cairo-glitz-surface.c | 30 ++++++++++++++++++++++-------- - src/cairo-image-surface.c | 4 ++++ - src/cairo-nquartz-surface.c | 9 +++++++-- - src/cairo-pattern.c | 38 ++++++++++++++++++++------------------ - src/cairo-surface.c | 14 ++++++++++++-- - src/cairo-xcb-surface.c | 9 +++++++++ - src/cairo-xlib-surface.c | 18 ++++++++++++++---- - src/cairoint.h | 8 ++++++++ - 10 files changed, 115 insertions(+), 40 deletions(-) - -commit 99e2e99a78e492196a76e76cb47e463223db3012 -Author: Carl Worth -Date: Wed Oct 18 15:47:18 2006 -0700 - - Use zero-size change bar for a speedup/slowdown of 1.0 - - Also use speedup/slowdown rather than faster/slower in the output - - perf/cairo-perf-diff.c | 8 ++++++-- - 1 files changed, 6 insertions(+), 2 deletions(-) - -commit 40e1c0246da1e79b70d4b89b7735e6fec329c56e -Author: Carl Worth -Date: Wed Oct 18 15:18:11 2006 -0700 - - Add neglected reference images for infinite-join test - - test/.gitignore | 1 + - test/Makefile.am | 2 ++ - test/infinite-join-ps-argb32-ref.png | Bin 0 -> 220 bytes - test/infinite-join-ref.png | Bin 0 -> 194 bytes - 4 files changed, 3 insertions(+), 0 deletions(-) - -commit e21c155e73569f6533dd01bdd7ec62461e7f215f -Merge: a53eabf... 10cd23d... -Author: Carl Worth -Date: Wed Oct 18 15:03:04 2006 -0700 - - Merge branch '8379' into cairo - -commit 10cd23d51fbfc99d6e3e401440eebb56df3b3327 -Author: Carl Worth -Date: Thu Sep 21 15:17:59 2006 -0700 - - Fix infinite-join test case (bug #8379) - - The trick for this was to carefully ensure that the pen always has - at least 4 vertices. There was a previous attempt at this in the - code already but the test case had a combination of matrix and radius - that resulted in a value that was just able to sneak past the previous - check. - - src/cairo-pen.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 5b7a7f39ad8b726e9ee582bcd10500a1e5b16554 -Author: Carl Worth -Date: Wed Oct 18 15:01:58 2006 -0700 - - test/infinite-join: Modify to draw something visible, and make the output a more reasonable size. - - The modification was performed with care to ensure that the bug - is still exercised. Also, reference images are added. - - test/infinite-join.c | 15 +++++++++++---- - 1 files changed, 11 insertions(+), 4 deletions(-) - -commit a53eabf0a505bcf01e52af1b47b194a482eddf51 -Author: Carl Worth -Date: Wed Oct 18 12:14:38 2006 -0700 - - Add cairo-perf-diff program for comparing two cairo-perf reports. - - perf/.gitignore | 1 + - perf/Makefile.am | 6 +- - perf/cairo-perf-diff.c | 478 ++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 483 insertions(+), 2 deletions(-) - -commit 5c7798a646ecad59dfabac1f9afb96006470054e -Author: Carl Worth -Date: Wed Oct 18 12:10:00 2006 -0700 - - perf: Print ticks as well as ms in output. - - The ticks value is a bit more reliable since it won't exhibit - variation due to estimating the CPU frequency like the ms value - will. - - perf/cairo-perf.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit bb3d4b2f88dca258389d7ca4cae51a5b64c0dfc9 -Author: Carl Worth -Date: Tue Oct 17 19:18:22 2006 -0700 - - cairo-perf: Remove wasted whitespace in output. Squelch wanring. - - perf/cairo-perf.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit d8c23d5ed747fa216d8070accdb80d665033233b -Author: Carl Worth -Date: Tue Oct 17 17:53:43 2006 -0700 - - perf: Change minimum size of paint test to 256 - - The paint tests at sizes less than 256 were just too fast to be - significant. - - perf/cairo-perf.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c1f134fa13928f31c903d513920448b127749a4b -Merge: 968ceee... 157663e... -Author: Ian Osgood -Date: Wed Oct 18 08:15:47 2006 -0700 - - Merge branch 'master' of git+ssh://iano@git.cairographics.org/git/cairo - -commit 968ceeec1d2223e823ec56883bc00da512549ea5 -Author: Ian Osgood -Date: Wed Oct 18 08:14:55 2006 -0700 - - XCB: find_standard_format using wrong enumeration. - - Requires latest xcb/util/renderutil library from git. - - boilerplate/cairo-boilerplate.c | 8 ++++---- - src/cairo-xcb-surface.c | 20 ++++++++++---------- - 2 files changed, 14 insertions(+), 14 deletions(-) - -commit 157663e1fdf120a71c6cc8222b88d2915a5a73eb -Author: Behdad Esfahbod -Date: Wed Oct 18 10:59:10 2006 -0400 - - [configure.in] Require pkg-config 0.19. (#8686) - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e2a0c57c1fc20f3e2ee641273b5f059ca221d265 -Author: Ian Osgood -Date: Tue Oct 17 08:09:29 2006 -0700 - - XCB: glyph rendering support - - todo: get_font_options, testing - - src/cairo-xcb-surface.c | 926 ++++++++++++++++++++++++++++++++++++++++++++-- - 1 files changed, 885 insertions(+), 41 deletions(-) - -commit 25353fdb57cd987fff01538be2c0fd27e7155879 -Author: Jamey Sharp -Date: Mon Oct 16 11:44:08 2006 -0700 - - XCB: Move slim_hidden_def to cairo-xcb-surface.c, not cairo-xcb-xrender.h. - - I didn't understand that the _def does not need to be public any more - than the _proto does. - - src/cairo-xcb-surface.c | 1 + - src/cairo-xcb-xrender.h | 1 - - 2 files changed, 1 insertions(+), 1 deletions(-) - -commit aa017161a59bd643f3b369875ae3ba54e4a6c425 -Author: Ian Osgood -Date: Thu Oct 12 20:17:22 2006 -0700 - - Move XCB sections next to XLIB sections. - - configure.in | 16 ++++++++-------- - src/Makefile.am | 14 +++++++------- - 2 files changed, 15 insertions(+), 15 deletions(-) - -commit 8dabfc7ffe36649f85873043f8fc4f06714e5845 -Author: Jamey Sharp -Date: Mon Oct 16 11:23:38 2006 -0700 - - XCB: Add the have_clip_rects field to cairo_xcb_surface, to match the Xlib surface. - - Correction to my previous commit. *sigh* - - src/cairo-xcb-surface.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 7988f2cc6ac596de61ef4378df66cbafece5f747 -Author: Ian Osgood -Date: Mon Oct 16 07:20:15 2006 -0700 - - XCB: Remove unnecessary differences with the Xlib surface. - - src/cairo-xcb-surface.c | 84 ++++++++++++++++++++++++----------------------- - 1 files changed, 43 insertions(+), 41 deletions(-) - -commit b62710d4f8602203d848daf2d444865b611fff09 -Author: Carl Worth -Date: Wed Aug 30 14:43:21 2006 -0700 - - Bug #7497: Change _cairo_color_compute_shorts to not rely on any particular floating-point epsilon value. - - src/cairo-color.c | 24 ++++++++++++++++-------- - 1 files changed, 16 insertions(+), 8 deletions(-) - -commit 71037f3612da9d11431567c05c17807499ab1746 -Author: Carl Worth -Date: Mon Oct 16 09:07:40 2006 -0700 - - Rename wait_for_rendering to syncrhonize - - We're not using this call both before and after rendering - so the old name just didn't make sense anymore. - - boilerplate/cairo-boilerplate.c | 6 +++--- - boilerplate/cairo-boilerplate.h | 2 +- - perf/cairo-perf.c | 2 +- - 3 files changed, 5 insertions(+), 5 deletions(-) - -commit 6c9508340620c5981393a3455304e774712ddc83 -Author: Christian Biesinger -Date: Mon Oct 16 17:51:41 2006 +0200 - - Fix win32 build when pthreads are available - - _cairo_win32_initialize always needs a definition. - - src/cairo-win32-surface.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -commit 7d136864382f8b17e6c672892a00d4bb0ea3ed90 -Author: Christian Biesinger -Date: Mon Oct 16 17:27:23 2006 +0200 - - [win32] Add missing void - - This fixes a GCC compile warning - - src/cairo-win32-private.h | 2 +- - src/cairo-win32-surface.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 445251cc79d87b73a2ccd7891f9a5a33b89927a4 -Author: Jamey Sharp -Date: Sun Oct 15 17:23:58 2006 -0700 - - [slim] hide cairo_version_string() - - Adrian's recent commits broke PLT hiding by calling cairo_version_string - from inside cairo. Add slim_hidden_def and slim_hidden_proto for it. - - src/cairo.c | 1 + - src/cairoint.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit 830804c7aec0334953bdc6f4704da6d404fc030a -Author: Adrian Johnson -Date: Sun Oct 15 23:11:30 2006 +0930 - - PDF: Add cairo version to document info dictionary - - src/cairo-pdf-surface.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 5aaa1988c7e27ed7acd002ee0fb8d344444b46dd -Author: Adrian Johnson -Date: Sun Oct 15 23:11:01 2006 +0930 - - PS: Add cairo version to PS header - - src/cairo-ps-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 753763ff258760688ef5a594a204fa8f2be7e4a4 -Author: Adrian Johnson -Date: Sun Oct 15 23:09:35 2006 +0930 - - Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs - - Type1 subsetting adds the .notdef glyph to the subset because the Type 1 - spec requires that it be defined. However if the subset already has - 256 glyphs, this will cause the Encoding vector to have 257 entries - which ghostscript does not like. - - src/cairo-type1-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 216c759d463ca407e1baea4090c782074567cbe2 -Author: Adrian Johnson -Date: Sun Oct 15 23:07:38 2006 +0930 - - Type 1 fallback fonts - use binary encoding in PDF files - - PDF files require that embedded Type 1 fonts have the encrypted - portion of the font encoded in binary. - - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-scaled-font-subsets-private.h | 32 +++++++++++++++++++++++---- - src/cairo-type1-fallback.c | 36 +++++++++++++++++++++++++------ - 4 files changed, 58 insertions(+), 14 deletions(-) - -commit d1fb02b5b93c9a456411e9eb56f3ee136b33d9e7 -Author: Adrian Johnson -Date: Sun Oct 15 23:02:20 2006 +0930 - - Correct an unsigned to signed conversion problem in truetype subsetting bbox - - src/cairo-truetype-subset.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 9ee0c15941b029ea3fb4fbf30e78bb917b7f8c66 -Author: Adrian Johnson -Date: Sun Oct 15 22:48:43 2006 +0930 - - cairo-type1-fallback.c: return correct error status - - src/cairo-type1-fallback.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit f7068de7f78890df9fbadba8b15d1c3b58166c2d -Author: Jamey Sharp -Date: Thu Oct 12 23:43:45 2006 -0700 - - Update .gitignore in boilerplate and test. - - boilerplate/.gitignore | 1 + - test/.gitignore | 4 ++++ - 2 files changed, 5 insertions(+), 0 deletions(-) - -commit 2d30e58ccd14ae707afcc311f49e32fe6d6d4061 -Author: Jamey Sharp -Date: Thu Oct 12 23:42:50 2006 -0700 - - XCB: update cairo-boilerplate to test for an error connection rather than NULL. - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 02e7b892bcb75a69eb28902e7f67e2e7778bfe7b -Merge: 151e29d... 648f4bc... -Author: Michael Emmel -Date: Thu Oct 12 20:40:11 2006 -0700 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit 151e29d8070986b9e60b4c70ebedb25e9fe71ab8 -Author: Michael Emmel -Date: Thu Oct 12 20:39:26 2006 -0700 - - Fixed test to compile - - boilerplate/cairo-test-directfb.h | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 29f483326f127ec60e26801732da2486eb84b7ef -Author: Michael Emmel -Date: Thu Oct 12 20:39:16 2006 -0700 - - Fixed test to compile - - boilerplate/cairo-test-directfb.c | 75 +++++++++++++++++++++++-------------- - 1 files changed, 47 insertions(+), 28 deletions(-) - -commit e521562ebf9c827508b997acda2d4292014d6938 -Author: Michael Emmel -Date: Thu Oct 12 20:38:47 2006 -0700 - - Fixed directfb test code - - boilerplate/cairo-boilerplate.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 648f4bc830ab7cc89ffa2ba03d2757d0979a5671 -Author: Carl Worth -Date: Thu Oct 12 15:12:01 2006 -0700 - - perf: Make iterations adaptive (bailing as soon as std. deviation is <= 3% for 5 consecutive iterations - - This makes the entire performance test suite about 10 times faster - on my system. And I don't think that the results are significantly - worse, (many tests are stable after only 5 iterations while some - still run to 100 iterations without reaching our stability criteria). - - perf/cairo-perf.c | 30 +++++++++++++++++++++++------- - 1 files changed, 23 insertions(+), 7 deletions(-) - -commit 78ad834d81b1fb2a49150ce224a5f25b5190b5a4 -Author: Carl Worth -Date: Thu Oct 12 14:21:55 2006 -0700 - - Fix typo of , instead of || which was causing a test to be ignored - - Thanks to a gcc warning for catching this one, (statement with - no effect, or similar). - - test/pattern-getters.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 20375d5cef560e7277635a0bdba3872f31cb4479 -Author: Jamey Sharp -Date: Wed Oct 11 22:20:27 2006 -0700 - - XCB: add slim_hidden_proto and slim_hidden_def for cairo_xcb_surface_create_with_xrender_format. - - src/cairo-xcb-surface.c | 2 ++ - src/cairo-xcb-xrender.h | 1 + - 2 files changed, 3 insertions(+), 0 deletions(-) - -commit 339fe5c7b0d694c547c27a6a98ef8448f1ff2e43 -Author: Ian Osgood -Date: Wed Oct 11 21:32:32 2006 -0700 - - Replace static fn with xcb-renderutil library fn. - - boilerplate/cairo-boilerplate.c | 99 ++------------------------------------- - 1 files changed, 5 insertions(+), 94 deletions(-) - -commit 7d0ff885df7029f96568ac7fad3f15b002bec1b3 -Author: Ian Osgood -Date: Sat Sep 30 13:23:06 2006 -0700 - - Update XCB names for XCB 1.0 RC2 release. - - New names are in line with cairo naming standards. - XIDs are now typedefs not structs. - xcb_generate_id replaces *_new functions. - Also fixed all warnings (one const, new enums in switch statements). - - boilerplate/cairo-boilerplate.c | 56 ++++---- - configure.in | 2 +- - src/cairo-xcb-surface.c | 303 ++++++++++++++++++++------------------- - src/cairo-xcb-xrender.h | 12 +- - src/cairo-xcb.h | 14 +- - 5 files changed, 194 insertions(+), 193 deletions(-) - -commit 38dcddd79ef95b04bf8d6ff8336cb997875df41b -Author: Christian Biesinger -Date: Tue Oct 10 12:38:33 2006 -0700 - - fix comment: pixman_private needs to be before the type of a variable - - Makes the documentation match the code. - Compare also commit 34d11aa3c45ba672b34d0a17f672f907305f3893 - - pixman/src/slim_internal.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit f6a2811c87def7b1bc70a2014d93df8feab2e2f4 -Author: Behdad Esfahbod -Date: Sun Oct 8 17:07:17 2006 -0400 - - [slim] hide cairo_glitz_surface_create() (#8551) - - src/Makefile.am | 2 +- - src/cairo-glitz-private.h | 41 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-glitz-surface.c | 2 ++ - 3 files changed, 44 insertions(+), 1 deletions(-) - -commit a13d58ff3af5ed85313b5af651c1d69f5e38fa06 -Author: Behdad Esfahbod -Date: Sun Oct 8 17:06:44 2006 -0400 - - [slim] hide cairo_pattern_status() #8551 - - src/cairo-pattern.c | 1 + - src/cairoint.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -commit d7c2f7e2d74c7e383f6933b974066221bcc5faa5 -Author: Carl Worth -Date: Thu Oct 5 15:14:14 2006 -0700 - - perf: Rename finalize to synchronize as it is used in both start() and stop() now - - perf/cairo-perf-posix.c | 20 ++++++++++---------- - perf/cairo-perf-win32.c | 20 ++++++++++---------- - perf/cairo-perf.c | 4 ++-- - perf/cairo-perf.h | 6 +++--- - 4 files changed, 25 insertions(+), 25 deletions(-) - -commit 8af5e14fd8056408bc46698b7186655ec8e60062 -Author: Carl Worth -Date: Thu Oct 5 15:07:52 2006 -0700 - - perf: Do backend synchronization in cairo_perf_timer_start as well as cairo_perf_timer_stop - - perf/cairo-perf-posix.c | 20 +++++++++++--------- - perf/cairo-perf-win32.c | 12 +++++++----- - 2 files changed, 18 insertions(+), 14 deletions(-) - -commit 5412343a77b7b336886ed763a3518ff4602f27aa -Author: Carl Worth -Date: Thu Oct 5 12:13:48 2006 -0700 - - perf: Add subimage_copy test to demonstrate performance bug found by monty - - perf/Makefile.am | 1 + - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/subimage_copy.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 74 insertions(+), 0 deletions(-) - -commit 9285a1f7fe88db760b7cf49c87ac9be613f21630 -Author: Carl Worth -Date: Wed Oct 4 18:35:16 2006 -0700 - - perf: Add text test - - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 1 + - perf/text.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 65 insertions(+), 1 deletions(-) - -commit f1db0135476a039ea43dfd67c56763b05aea2ec4 -Author: Carl Worth -Date: Wed Oct 4 18:34:09 2006 -0700 - - Fix typo that was resulting in device glyph_extents of INT16_MAX in some cases. - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2041db91968c7c06cdb2e454f572c50d75144d29 -Author: Behdad Esfahbod -Date: Thu Oct 5 11:51:25 2006 -0400 - - [Makefile.am] Pass srcdir down to the tests - - src/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit bda77f505c911aea8ce684cb22a1469d1b7a9049 -Author: Carl Worth -Date: Wed Oct 4 16:35:20 2006 -0700 - - perf: Bail if cairo_status returns non-success at the end of a test. - - perf/cairo-perf.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - -commit d15b8f2d6e0b0c2279fb0b17368f1110396e4bf8 -Author: Carl Worth -Date: Wed Oct 4 16:32:14 2006 -0700 - - perf: Add linear and radial gradients to the coverage - - perf/cairo-perf-cover.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 71 insertions(+), 1 deletions(-) - -commit 933d84572849a7ad61aca2c381f11a572fa9e9b7 -Author: Carl Worth -Date: Wed Oct 4 16:17:46 2006 -0700 - - Shorten test names in output (drop unneeded _source and _surface) - - perf/cairo-perf-cover.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit fb61fe82d3b360f09f2984bd3ac7de6720f75662 -Author: Carl Worth -Date: Wed Oct 4 16:16:03 2006 -0700 - - perf: Add stroke and fill tests - - perf/Makefile.am | 2 ++ - perf/cairo-perf.c | 8 +++++--- - perf/cairo-perf.h | 5 ++--- - perf/fill.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ - perf/stroke.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 109 insertions(+), 6 deletions(-) - -commit d52256df7c0147c29246dfc930644b6bdbff3c3f -Author: Carl Worth -Date: Wed Oct 4 15:39:05 2006 -0700 - - perf: Move iteration over sources and operators from paint to new cairo-perf-cover - - This will finally allow us to very easily add lots of other - tests that will similarly involve iterating over the various - sources and operators of interest. - - perf/Makefile.am | 1 + - perf/cairo-perf-cover.c | 166 +++++++++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf.c | 9 --- - perf/cairo-perf.h | 13 ++++- - perf/paint.c | 133 +------------------------------------- - 5 files changed, 180 insertions(+), 142 deletions(-) - -commit ad02773e9babe935250b810f8f9f490eb3d02a64 -Author: Carl Worth -Date: Wed Oct 4 15:24:19 2006 -0700 - - Remove unused variable - - src/cairo-gstate.c | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 783b69a8d33f913949247cc3ba018c35a4a83aa7 -Author: Carl Worth -Date: Wed Oct 4 15:00:57 2006 -0700 - - Rename the create_for_status pattern to create_in_error. - - src/cairo-path-data-private.h | 2 +- - src/cairo-path-data.c | 2 +- - src/cairo-pattern.c | 4 ++-- - src/cairo.c | 8 ++++---- - 4 files changed, 8 insertions(+), 8 deletions(-) - -commit 01502471e31aa28a910039a918ff2aec3810d3c1 -Author: Carl Worth -Date: Wed Oct 4 14:58:06 2006 -0700 - - Add new _cairo_pattern_create_for_status so that patterns properly propagate errors. - - In particular, many possible error values on a surface provided - to cairo_pattern_create_for_surface were previously being swallowed - and a nil pattern was returned that erroneously reported - CAIRO_STATUS_NO_MEMORY. - - src/cairo-pattern.c | 52 +++++++++++++++----------------------------------- - 1 files changed, 16 insertions(+), 36 deletions(-) - -commit c9c259903d03e35fe98781fc6fedf326c40c0c4c -Author: Carl Worth -Date: Wed Oct 4 15:23:36 2006 -0700 - - Cast to squelch warning message - - src/cairo-pattern.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 4d2b54a271f722de9802ca68246ce6afba89f830 -Author: Carl Worth -Date: Wed Oct 4 14:56:33 2006 -0700 - - Fix cairo_image_surface_create to report INVALID_FORMAT errors. - - This adds a new nil cairo_image_surface to hold CAIRO_STATUS_INVALID_FORMAT. - Previously the detected error was being lost and a nil surface was - returned that erroneously reported CAIRO_STATUS_NO_MEMORY. - - src/cairo-image-surface.c | 52 +++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 50 insertions(+), 2 deletions(-) - -commit 7d5fb687af2ec2da94a10200309fa362d694d23f -Author: Carl Worth -Date: Wed Oct 4 14:13:54 2006 -0700 - - perf/paint: Test image surface as well as similar surface sources - - perf/cairo-perf.c | 4 +- - perf/paint.c | 85 ++++++++++++++++++++++++++++++++++++++-------------- - 2 files changed, 64 insertions(+), 25 deletions(-) - -commit 94759a14daac63d05e5399982be56e73abf552c4 -Author: Carl Worth -Date: Wed Oct 4 13:54:39 2006 -0700 - - perf/paint: Use loops for sources and operators rather than open coding. - - This looks a bit more complicated for now, but will - scaled much better to provide complete coverage as - we extend the cases covered. - - perf/paint.c | 73 ++++++++++++++++++++++++++++++++++++++++++--------------- - 1 files changed, 54 insertions(+), 19 deletions(-) - -commit 37bc39d82c8d2c2cd8b04ea554925102b4831856 -Author: Carl Worth -Date: Wed Oct 4 13:35:27 2006 -0700 - - perf/paint: Dramatically simplify now that we don't need one callback per run. - - This commit begins to show the benefits of the reorganization - from the last few commits. Specifically, we don't need a callback - for every run anymore, and now that the cairo_t* is available to - the paint entry function and the size changes only on the outer - loop, (rather than inside cairo_perf_run), there's no need for - the ugly, static cache for the source surface. - - perf/paint.c | 146 +++++++++++++--------------------------------------------- - 1 files changed, 33 insertions(+), 113 deletions(-) - -commit d0aae4dbcf6d3ca67a4a7b364fba80f719af2ac1 -Author: Carl Worth -Date: Wed Oct 4 13:23:50 2006 -0700 - - perf: Make cairo_t* available to perf functions - - perf/README | 27 +++++++++++++-------------- - perf/cairo-perf.c | 2 +- - perf/cairo-perf.h | 2 +- - perf/paint.c | 2 +- - perf/tessellate.c | 2 +- - 5 files changed, 17 insertions(+), 18 deletions(-) - -commit 4406ab1b9e8a618aae4d709a370d4ace0e9897e9 -Author: Carl Worth -Date: Wed Oct 4 12:55:54 2006 -0700 - - perf: Move the per-size loop from cairo_perf_run to main - - The motivation here is to have the cairo_t context available - to the perf funcs before they call into cairo_perf_run, (so - that they can do one-time setup of source etc. for several - runs). - - perf/cairo-perf.c | 95 ++++++++++++++++++++++++++++------------------------- - 1 files changed, 50 insertions(+), 45 deletions(-) - -commit 251bed86400f72a4ec90618d0d41566ab9969cfa -Author: Carl Worth -Date: Tue Oct 3 17:27:27 2006 -0700 - - perf/paint: Make all sizes use a consistent number of iterations - - This effectively reverts the change made in: - - 3c407aa80a43e1724e732482ada5ad6718fe33ae - - The justification is that we want to be able to see the - trends of increasing the image size while keeping the test - the same. But changing the number of iterations in a size- - specific way interferes with that. Also, the standard deviation - is almost always better this way, (though it now varies more - by size). - - And as a bonus, the total time required to run the suite is now - less. - - perf/paint.c | 19 +------------------ - 1 files changed, 1 insertions(+), 18 deletions(-) - -commit 1e0e2075090c181dcd9f431833a8a9c2665d763e -Author: Behdad Esfahbod -Date: Mon Oct 2 14:35:35 2006 -0400 - - [check-headers.sh] Don't use '\>' regexp syntax - - src/check-headers.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3b58d92f5a449e7d5edf39484465e2ce6acf4874 -Author: Carl Worth -Date: Fri Sep 29 17:47:01 2006 -0700 - - Add missing 'Since: 1.4' tags to documentation of 'clip getter' functions. - - The following documented symbols were missing this tag: - - cairo_clip_extents - cairo_copy_clip_rectangles - CAIRO_STATUS_INVALID_INDEX - cairo_rectangle_t - cairo_rectangle_list_t - - src/cairo.c | 4 ++++ - src/cairo.h | 6 +++++- - 2 files changed, 9 insertions(+), 1 deletions(-) - -commit 9cacced88fa9dbaa53ff8dec6ff31c8e56c85f08 -Author: Carl Worth -Date: Fri Sep 29 17:44:34 2006 -0700 - - Add documentation for cairo_rectangle_list_destroy - - src/cairo-clip.c | 10 ++++++++++ - 1 files changed, 10 insertions(+), 0 deletions(-) - -commit 34d11aa3c45ba672b34d0a17f672f907305f3893 -Author: Alfred Peng -Date: Fri Sep 29 17:17:27 2006 -0700 - - Use pixman_private consistently as prefix not suffix - - pixman/src/icint.h | 2 +- - pixman/src/icrop.h | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit c1495742f76ce380aaa48389bc331723b7a3a141 -Author: Alfred Peng -Date: Fri Sep 29 17:16:47 2006 -0700 - - Add Sun Pro C definition of pixman_private - - pixman/src/slim_internal.h | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 28cc64aa20cd15f78109f4481bd1c08627c87e46 -Author: Carl Worth -Date: Fri Sep 29 17:08:53 2006 -0700 - - Fix dependency of 'make doc' so that necessary header files are built first. - - Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit deef1a667536ec67ff1d7b42a1f8179e1eac4715 -Author: Carl Worth -Date: Fri Sep 29 16:59:27 2006 -0700 - - Rename docs-publish target to doc-publish in order to be consistent with the doc target. - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e6575fb3c76ec2cda742e05c24958a7000d488dd -Author: Carl Worth -Date: Fri Sep 29 16:58:51 2006 -0700 - - Fix Makefile bug preventing 'make doc' from succeeding - - doc/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit beb778f482645650b129762a0a37400c12a04b32 -Author: Carl Worth -Date: Fri Sep 29 16:56:36 2006 -0700 - - Use consistent wording to document cairo_in_fill, cairo_in_stroke, cairo_fill_extents, and cairo_stroke_extents. - - src/cairo.c | 32 ++++++++++++++++++++------------ - 1 files changed, 20 insertions(+), 12 deletions(-) - -commit 516ca57dd835da17fb6b43f00d1b1f37f25f49c4 -Author: Carl Worth -Date: Fri Sep 29 16:55:22 2006 -0700 - - tmpl: obnoxious churn - - doc/public/tmpl/cairo-image.sgml | 1 - - doc/public/tmpl/cairo-status.sgml | 48 ++++++++------- - doc/public/tmpl/cairo-surface.sgml | 112 ++++++++++++++++++------------------ - 3 files changed, 82 insertions(+), 79 deletions(-) - -commit b99d41a0b075ec405d14ea8b6bbcaa50aa35e890 -Author: Carl Worth -Date: Fri Sep 29 16:46:39 2006 -0700 - - Fix typo in documentation of cairo_in_fill (thanks to Jonathan Watt) and clarify a bit. - - src/cairo.c | 24 +++++++++++++++--------- - 1 files changed, 15 insertions(+), 9 deletions(-) - -commit 3c19a6413cf77d86d75501f531af08b13db1f411 -Author: Carl Worth -Date: Fri Sep 29 16:42:44 2006 -0700 - - perf: Rework the suite to allow multiple performance tests to be defined in one file. - - perf/README | 66 ++++++++++++++-------- - perf/cairo-perf.c | 159 +++++++++++++++++++++++++++++------------------------ - perf/cairo-perf.h | 23 ++++---- - perf/paint.c | 32 +++++++--- - perf/tessellate.c | 22 +++++-- - 5 files changed, 176 insertions(+), 126 deletions(-) - -commit cd6b44e9c924d230c9647e63553198a947f53307 -Author: Vladimir Vukicevic -Date: Fri Sep 29 14:44:00 2006 -0700 - - [test] Fix composite-integer-translate-over test - - This test wasn't translating by an integer, but instead by 5.5. Fixed - test and reference image. - - ...osite-integer-translate-over-pdf-argb32-ref.png | Bin 12946 -> 0 bytes - test/composite-integer-translate-over-ref.png | Bin 15397 -> 16385 bytes - test/composite-integer-translate-over-svg-ref.png | Bin 15465 -> 0 bytes - test/composite-integer-translate-over.c | 27 ++++++++++++++++++- - 4 files changed, 25 insertions(+), 2 deletions(-) - -commit b05400b5590ab0303ef5802ac4952633e2b14d18 -Author: Vladimir Vukicevic -Date: Thu Sep 28 14:58:49 2006 -0700 - - [nquartz] Return correct values from operation setup function - - Leftovers from an old half-completed patch that was breaking the world. - This fixes the world, or at least one tiny part of it. - - src/cairo-nquartz-surface.c | 11 +++++++++-- - 1 files changed, 9 insertions(+), 2 deletions(-) - -commit 17eeacfba844ea5f9592dff4621e6f721c27d6c5 -Author: Robert O'Callahan -Date: Mon Sep 25 16:24:33 2006 -0700 - - Remove redundant call to _cairo_surface_get_extents - - We called it just above with the same parameters. - - src/cairo-surface-fallback.c | 4 ---- - 1 files changed, 0 insertions(+), 4 deletions(-) - -commit e4dc73ab1cafeb8dd77d3ee3dc92d9a92be69542 -Author: Carl Worth -Date: Mon Sep 25 16:16:35 2006 -0700 - - Rename test from stale path-data name to copy-path - - test/Makefile.am | 6 +- - test/copy-path-ps-argb32-ref.png | Bin 0 -> 442 bytes - test/copy-path-ref.png | Bin 0 -> 579 bytes - test/copy-path.c | 234 ++++++++++++++++++++++++++++++++++++++ - test/path-data-ps-argb32-ref.png | Bin 442 -> 0 bytes - test/path-data-ref.png | Bin 579 -> 0 bytes - test/path-data.c | 234 -------------------------------------- - 7 files changed, 237 insertions(+), 237 deletions(-) - -commit 5f833c134bd002853b9d1458b58350cfb1d40a94 -Author: Carl Worth -Date: Mon Sep 25 16:03:02 2006 -0700 - - Fix cairo_copy_path and cairo_copy_path_flat to propagate errors. - - One of these functions was already documented to be doing this, and - the other one should have been. Now the documentation and behavior - for both are consistent, (and the path-data test case verifies this). - - src/cairo-path-data-private.h | 3 +++ - src/cairo-path-data.c | 16 ++++++++++++++++ - src/cairo.c | 16 ++++++++++------ - test/path-data.c | 28 +++++++++++++++++++++++++++- - 4 files changed, 56 insertions(+), 7 deletions(-) - -commit f9165638bf485591abae52b759fba82caf048dc5 -Author: Kristian Høgsberg -Date: Tue Sep 26 17:33:29 2006 -0400 - - Compute right index when looking up left side bearing. - - When looking up the short entries in the second part of - the hmtx table, compute the size of the first part correctly. - - Fix from Adrian, see: - - https://bugs.freedesktop.org/show_bug.cgi?id=8180#c12 - - src/cairo-truetype-subset.c | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -commit 7c3062240ac036c8091ee9f0acce0aa3ea9df8ea -Author: Behdad Esfahbod -Date: Tue Sep 26 13:54:03 2006 -0400 - - [configure] Print out whether SVG and PDF surfaces can be tested - - configure.in | 8 ++++++-- - src/check-def.sh | 2 +- - 2 files changed, 7 insertions(+), 3 deletions(-) - -commit 191e108b93ef6d39832e78323a18cc4c795c7ca3 -Author: Robert O'Callahan -Date: Mon Sep 25 23:22:45 2006 -0700 - - Add clip getters API + tests - - Add new public API methods: - - void cairo_clip_extents (cairo_t *cr, double *x1, double *y1, - double *x2, double *y2); - cairo_rectangle_list_t *cairo_copy_clip_rectangles (cairo_t *); - void cairo_rectangle_list_destroy (cairo_rectangle_list_t *); - - Also add 'get-clip' and 'get-path-extents' tests. - - src/cairo-clip-private.h | 5 + - src/cairo-clip.c | 127 +++++++++++++++++++++- - src/cairo-gstate.c | 34 ++++++ - src/cairo.c | 63 +++++++++++ - src/cairo.h | 36 ++++++- - src/cairoint.h | 10 ++ - test/Makefile.am | 2 + - test/Makefile.win32 | 2 + - test/get-clip.c | 277 ++++++++++++++++++++++++++++++++++++++++++++++ - test/get-path-extents.c | 199 +++++++++++++++++++++++++++++++++ - 10 files changed, 753 insertions(+), 2 deletions(-) - -commit a8ca155f83098c02fb8d3acc57b0492d5b753d54 -Author: Robert O'Callahan -Date: Mon Sep 25 23:16:54 2006 -0700 - - Fix stroke/fill extents bounding boxes - - Correctly return the transformed bounding box for stroke/fill extents, - instead of just transforming the two corners separately. - - src/cairo-gstate.c | 75 +++++++++++++++++++++++++++++++++------------------ - src/cairo.c | 26 ++++++++++++++++++ - src/cairoint.h | 6 ++++ - 3 files changed, 80 insertions(+), 27 deletions(-) - -commit 37fa632e59b7325041f689bf1a56e08d04379c96 -Author: Robert O'Callahan -Date: Mon Sep 25 23:14:43 2006 -0700 - - Fix _cairo_matrix_transform_bounding_box to return tightness info - - Add return is_tight value to the internal function, indicating whether - the transformed bounds still remain axis-aligned. - - src/cairo-matrix.c | 18 +++++++++++++++++- - src/cairoint.h | 3 ++- - 2 files changed, 19 insertions(+), 2 deletions(-) - -commit de1915ffd2fe7f973529104a1041b33f2abfdfed -Author: Carl Worth -Date: Mon Sep 25 10:44:08 2006 -0700 - - ROADMAP: Add a couple of URLs for user-font API discussion - - ROADMAP | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit b146255fa45807a195fb3a7eb55d6c593bd1a5c9 -Author: Carl Worth -Date: Thu Sep 21 15:30:23 2006 -0700 - - ROADMAP: Add infinite-join bug (#8379) to the list for 1.4 - - ROADMAP | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 5492a7c7618a747130b844a509fb79b886f1bc54 -Author: Carl Worth -Date: Thu Sep 21 15:15:02 2006 -0700 - - Add assert statement so the infinite-join test simply exits rather than looping infinitely. - - src/cairo-pen.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 8744929030ed8d42c271d9abb202975f62de166c -Author: Carl Worth -Date: Thu Sep 21 15:13:47 2006 -0700 - - Add test case from bug #8379 demonstrating infinite loop during round join - - test/Makefile.am | 1 + - test/infinite-join.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 74 insertions(+), 0 deletions(-) - -commit 303b52919519854b9b5bbc38a9ac115e422dddad -Author: Vladimir Vukicevic -Date: Tue Sep 19 12:17:34 2006 -0700 - - dash and pattern getter functions - - Adds API functions for inspecting the current dash state, as well as - the contents of pattern objects: - - cairo_get_dash - cairo_get_dash_count - cairo_pattern_get_rgba - cairo_pattern_get_surface - cairo_pattern_get_color_stop_rgba - cairo_pattern_get_color_stop_count - cairo_pattern_get_linear_points - cairo_pattern_get_radial_circles - - src/cairo-pattern.c | 238 +++++++++++++++++++++++++++++++++++++++++- - src/cairo.c | 63 +++++++++++- - src/cairo.h | 40 +++++++- - test/Makefile.am | 1 + - test/Makefile.win32 | 1 + - test/get-and-set.c | 39 ++++++- - test/pattern-getters-ref.png | Bin 0 -> 107 bytes - test/pattern-getters.c | 175 +++++++++++++++++++++++++++++++ - 8 files changed, 546 insertions(+), 11 deletions(-) - -commit a56b962428c487d1c341f86e6719bad86374386c -Author: Vladimir Vukicevic -Date: Tue Sep 19 12:10:12 2006 -0700 - - Add win32 output files to gitignore - - boilerplate/.gitignore | 7 +++++++ - perf/.gitignore | 7 +++++++ - pixman/src/.gitignore | 3 +++ - src/.gitignore | 7 +++++++ - test/.gitignore | 6 ++++++ - 5 files changed, 30 insertions(+), 0 deletions(-) - -commit 8a9b99e596a93049abeb8bbbe502f895df72f678 -Author: Vladimir Vukicevic -Date: Thu Sep 14 12:59:31 2006 -0700 - - [perf] Change perf output format, report times in ms, add a few paint tests - - This changes the perf test output format to be a little more human friendly, - reporting times in ms instead of seconds. It also adds a test number - that could be used in the future for specifying an explicit test to run - (test number, target surface, test name, and size uniquiely identify - a test). - - Also adds a few paint tests. - - perf/Makefile.win32 | 16 +++++++ - perf/cairo-perf.c | 45 +++++++++++++------ - perf/cairo-perf.h | 13 +++++- - perf/paint.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++- - 4 files changed, 173 insertions(+), 19 deletions(-) - -commit e42905b01bd5bab11008b7d6a78bc263ae2f9f5d -Author: Vladimir Vukicevic -Date: Wed Sep 13 16:12:52 2006 -0700 - - [win32,perf] Fix cairo-perf-win32 - - Make cairo-perf work on win32 - - perf/cairo-perf-win32.c | 14 +++++++++++++- - 1 files changed, 13 insertions(+), 1 deletions(-) - -commit 82b710ebc214c46df6666ede486c0174b335bfdb -Author: Carl Worth -Date: Tue Sep 19 10:13:36 2006 -0700 - - Add missing pixman_private to _FbOnes when a function. - - This was thanks to a report from crucible (run #2113) since it tested - with older versions of gcc (3.3.6) than most of the cairo developers - use, (so we had been getting the _FbOnes macro not the function). - - pixman/src/icint.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 42a0c6bd59e41c22a88386b389af36f37418de82 -Author: Behdad Esfahbod -Date: Tue Sep 19 13:05:29 2006 -0400 - - check-def.sh: Only allow _cairo_.*_test_.* symbols, not all _cairo.* ones - - src/check-def.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ae355453d849f870fc67cae0442db49548df0103 -Author: Behdad Esfahbod -Date: Mon Sep 18 13:32:41 2006 -0400 - - cairo-nquartz.h: Add missing cairo_public decorators. - - src/cairo-nquartz.h | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 6c01b2ffb3c7a023f3932328b8067f4f5b83936c -Author: Behdad Esfahbod -Date: Mon Sep 18 13:32:19 2006 -0400 - - cairo-directfb.h: Add missing cairo_public decorators - - src/cairo-directfb.h | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 7bb72f645325960e0bef4595ed7e9f1bb391796c -Author: Behdad Esfahbod -Date: Mon Sep 18 13:32:00 2006 -0400 - - cairo-pdf.h: Add missing cairo_public decorators - - src/cairo-pdf.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 01f10fb27a675ff26bb0c0ca6748479215e6d6bd -Author: Behdad Esfahbod -Date: Mon Sep 18 13:28:29 2006 -0400 - - check-headers.sh: Add a test for cairo_public decorators in public headers - Test fails currently because of bug 8313 and similar issues. - - src/Makefile.am | 2 +- - src/check-headers.sh | 21 +++++++++++++++++++++ - 2 files changed, 22 insertions(+), 1 deletions(-) - -commit 38ed0eeb5bedb4af32bfc42b7f2b99b1805c8c17 -Author: Behdad Esfahbod -Date: Fri Sep 15 15:35:12 2006 -0400 - - [ROADMAP] Add polling API - - ROADMAP | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit b9cbfba7d234c1cb66968d99cf527e1305febfea -Author: Behdad Esfahbod -Date: Fri Sep 15 15:34:44 2006 -0400 - - [ROADMAP] Check RGB16_565 deprecated - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2fd0ad948931f4be43c81d2c4c56d264605bd737 -Author: Peter Weilbacher -Date: Fri Sep 15 11:18:47 2006 +0200 - - OS/2 build changes - - configure.in | 18 ++++++++++++++++++ - src/Makefile.am | 8 ++++++++ - src/cairo.h | 4 +++- - src/cairoint.h | 11 +++++++++++ - 4 files changed, 40 insertions(+), 1 deletions(-) - -commit 8c6baacefacbfb9e826d05ae253ead60d4e8e146 -Author: Peter Weilbacher -Date: Fri Sep 15 11:18:14 2006 +0200 - - OS/2 backend files - - src/cairo-os2-private.h | 77 ++++ - src/cairo-os2-surface.c | 1135 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-os2.h | 201 +++++++++ - 3 files changed, 1413 insertions(+), 0 deletions(-) - -commit edfceea853dd6ae189843f138478c7d43fb98367 -Author: Carl Worth -Date: Wed Sep 13 15:25:07 2006 -0700 - - Fix typo in error message (enhacement -> enhancement) - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 3623da441a2b9dcec1effef71a41967ad5ff1363 -Author: Vladimir Vukicevic -Date: Wed Sep 13 14:48:40 2006 -0700 - - [nquartz] Initial commit of native quartz surface - - Inital commit of Native Quartz surface. The main missing functionality - is mask() support (which is just a noop right now, except for the simple - solid-alpha case). - - boilerplate/cairo-boilerplate.c | 44 + - configure.in | 7 + - src/Makefile.am | 8 + - src/cairo-atsui-font.c | 122 ++- - src/cairo-nquartz-surface.c | 1797 +++++++++++++++++++++++++++++++++++++++ - src/cairo-nquartz.h | 80 ++ - src/cairo-quartz-private.h | 9 + - src/cairo.h | 3 +- - 8 files changed, 2037 insertions(+), 33 deletions(-) - -commit f1bd0b9f9815ac838f30216d810bdd4eb2b67997 -Author: Stuart Parmenter -Date: Tue Sep 12 16:27:40 2006 -0700 - - [win32] correct win32 show_glyphs for non-y-aligned text - - Correctly calculate destination glyph coordinates for win32_show_glyphs. - - src/cairo-win32-font.c | 16 ++++++++++++++++ - src/cairo-win32-surface.c | 27 ++++++++++++++++++++++----- - src/cairo-win32.h | 8 ++++++++ - 3 files changed, 46 insertions(+), 5 deletions(-) - -commit 016653812640cddcc51d0500d62c5c65b33bdd04 -Author: Vladimir Vukicevic -Date: Tue Sep 12 16:08:40 2006 -0700 - - [win32] Support for DDBs, AlphaBlend fix - - Add support for the win32 surface using DDBs for similar surfaces and the - like when the orignal surface is created from a DC, or when a DDB is - explicitly created. A DIB is still created if alpha is required. - - Also fixes a case where blitting win32 RGB24 -> ARGB32 surfaces was causing - alpha to leak into the ARGB32 surface instead of being set to fully opaque. - - src/cairo-win32-private.h | 22 ++- - src/cairo-win32-surface.c | 529 +++++++++++++++++++++++++++++++++++++-------- - src/cairo-win32.h | 9 + - 3 files changed, 466 insertions(+), 94 deletions(-) - -commit 924bbd06f35f55886f808a7a9d3ee08e479389ad -Author: Vladimir Vukicevic -Date: Mon Sep 11 12:36:41 2006 -0700 - - Check for valid path status value before calling _cairo_set_error - - cairo_status_t is a signed type, so we need to check for invalid codes - that are < 0 as well. - - Also removes the MSVC goop in path-data.c that was attempting to work - around the assert earlier. - - src/cairo.c | 3 ++- - test/path-data.c | 11 ----------- - 2 files changed, 2 insertions(+), 12 deletions(-) - -commit bcc13ede9b820dd640748d9dc2ec9d15130427be -Author: Carl Worth -Date: Mon Sep 11 11:12:47 2006 -0700 - - Move the REPLACED/DEPRECATED_BY macros from cairo.h to cairo-deprecated.h - - src/cairo-deprecated.h | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo.h | 86 ------------------------------------------ - 2 files changed, 98 insertions(+), 86 deletions(-) - -commit 79aed8c5fc82439f6724e8820ebcdaa585657574 -Author: Carl Worth -Date: Sat Sep 9 15:05:56 2006 -0700 - - Deprecated CAIRO_FORMAT_RGB16_565. Add cairo-deprecated.h . - - src/Makefile.am | 1 + - src/cairo-deprecated.h | 41 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-image-surface.c | 5 ----- - src/cairo-xlib-surface.c | 2 -- - src/cairo.h | 17 +++++++---------- - 5 files changed, 49 insertions(+), 17 deletions(-) - -commit cb6aed0a816cc5f09bb5660d4961ca196243eb10 -Author: Carl Worth -Date: Sat Sep 9 20:17:08 2006 -0700 - - perf: Make xlib testing wait for the X server to finish rendering. - - We do this by adding a new cairo_perf_timer_set_finalize function and - in the case of the xlib backend passing a callback to that function - that does a 1x1 XGetImage. - - boilerplate/cairo-boilerplate.c | 17 +++++++++++++++-- - boilerplate/cairo-boilerplate.h | 4 ++++ - perf/cairo-perf-posix.c | 12 ++++++++++++ - perf/cairo-perf.c | 1 + - perf/cairo-perf.h | 7 +++++++ - 5 files changed, 39 insertions(+), 2 deletions(-) - -commit e1a8a8b65a41691521d89fba7737c093dfdf7926 -Author: Vladimir Vukicevic -Date: Sat Sep 9 23:54:40 2006 -0700 - - [win32] Set win32 assertion failure handlers for tests to stderr - - assert() will default to displaying a dialog box, which makes it hard - to run tests automatically. Set the reporting mode to only report - to stderr in cairo_test(), and in path-data, since that triggers - an early assert. - - test/cairo-test.c | 7 +++++++ - test/path-data.c | 11 +++++++++++ - 2 files changed, 18 insertions(+), 0 deletions(-) - -commit 00d5a2ed48d999a29708d4750c034bbf1b91de12 -Author: Vladimir Vukicevic -Date: Sat Sep 9 23:29:17 2006 -0700 - - [win32] Makefile.win32: use correct (/MD) runtime library flag everywhere - - There was a bad mix of LIBCMT (the static runtime lib) and MSVCRT (the dynamic - one) before, because LIBCMT is the default. This specifies /MD everywhere. - - Makefile.win32 | 3 ++- - boilerplate/Makefile.win32 | 2 +- - pixman/src/Makefile.win32 | 2 +- - src/Makefile.win32 | 4 ++-- - test/Makefile.win32 | 6 ++---- - 5 files changed, 8 insertions(+), 9 deletions(-) - -commit d78fd375d3f99a5bb4a4799ce5d90a2a946a854c -Author: Vladimir Vukicevic -Date: Sat Sep 9 22:18:47 2006 -0700 - - [win32] Makefile.win32: fix test and add html targets - - Add html target to toplevel and test/ Makefile.win32 - - Makefile.win32 | 13 ++++++++++++- - test/Makefile.win32 | 10 ++++++++++ - 2 files changed, 22 insertions(+), 1 deletions(-) - -commit 5ab72579ef2a9fce1aedf3068825ccba683b6e79 -Author: Vladimir Vukicevic -Date: Sat Sep 9 19:52:48 2006 -0700 - - Correctly acquire/release mutex in _cairo_scaled_font_map_destroy - - _cairo_scaled_font_map_destroy needs to both lock/unlock the mutex, - not just unlock it. - - src/cairo-scaled-font.c | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit d3076a1843bc2f05bab0df913d0c27f125bea162 -Merge: dfe3e20... 78b8555... -Author: Vladimir Vukicevic -Date: Sat Sep 9 18:57:57 2006 -0700 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo into cairo-master - -commit dfe3e20a4a44db71270dd50b2e4bac84ff97dbb8 -Author: Vladimir Vukicevic -Date: Sat Sep 9 18:56:58 2006 -0700 - - [win32] Fix boilerplate for win32 surfaces to use new _with_dib function - - Create test surfaces for win32 using _with_dib instead of creating the - dib locally; also test CONTENT_COLOR and CONTENT_COLOR_ALPHA. - - boilerplate/cairo-boilerplate.c | 46 +++++++++----------------------------- - 1 files changed, 11 insertions(+), 35 deletions(-) - -commit 9735cb9a246627c9e4710c0f7d2955e3e0fbec69 -Author: Vladimir Vukicevic -Date: Sat Sep 9 18:55:46 2006 -0700 - - Improve make-html.pl, add self-contained output format - - Setting CAIRO_TEST_SHOW_INLINE in the environment before running - make-html.pl will generate a html file with all the logs and necessary - images inlined as data URI's. - - test/make-html.pl | 100 +++++++++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 81 insertions(+), 19 deletions(-) - -commit 78b8555c9a7181ebee59a6fbdefe671d97dc9535 -Author: Carl Worth -Date: Sat Sep 9 17:31:49 2006 -0700 - - perf: Don't skip COLOR tests - - perf/cairo-perf.c | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -commit d3a5d90665f82dd7a58bc22ccede6f2c73d0f900 -Author: Carl Worth -Date: Sat Sep 9 17:31:19 2006 -0700 - - boilerplate-xlib: New perf-specific surface creation for xlib backend. - - When testing the xlib backend do different things for TEST vs. PERF: - - TEST: Always use pixmap, call Xsynchronize. - - PERF: Use pixmap for COLOR_ALPHA and DefaultVisual window for COLOR. - - boilerplate/cairo-boilerplate.c | 137 ++++++++++++++++++++++++++++++--------- - 1 files changed, 106 insertions(+), 31 deletions(-) - -commit aeca64f6cdbf6af154a4fb8b19cb40ee0ecd0bd8 -Author: Carl Worth -Date: Sat Sep 9 16:40:58 2006 -0700 - - boilerplate: Allow targets to distinguish between test and perf. - - Add a new cairo_boilerplate_mode_t so that the boilerplate targets can - do slightly different things if being tested for correctness vs. being - run for performance. - - boilerplate/cairo-boilerplate.c | 143 +++++++++++++++++++++------------------ - boilerplate/cairo-boilerplate.h | 16 +++-- - perf/cairo-perf.c | 1 + - test/cairo-test.c | 1 + - 4 files changed, 91 insertions(+), 70 deletions(-) - -commit 97f26c523590dcb208a7c0e4d00fd66f4ca58605 -Merge: 0e59041... 416e945... -Author: Vladimir Vukicevic -Date: Sat Sep 9 17:09:03 2006 -0700 - - Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo into cairo-master - -commit 0e59041321e49e1eae330567e0c7d27e7d71699d -Author: Vladimir Vukicevic -Date: Sat Sep 9 17:08:18 2006 -0700 - - [win32] win32-specific Makefiles for building with MSVC - - This patch adds a bunch of makefiles for building cairo with Visual C++. - gnu make is still required, and make must be run from a command prompt - that has the Visual C++ paths set up, as well as has the cygwin environment - in the path. Run 'make -f Makefile.win32'. - - Makefile.win32 | 18 +++++++ - boilerplate/Makefile.win32 | 18 +++++++ - pixman/src/Makefile.win32 | 34 ++++++++++++++ - src/Makefile.win32 | 107 ++++++++++++++++++++++++++++++++++++++++++++ - test/Makefile.win32 | 102 +++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 279 insertions(+), 0 deletions(-) - -commit 3c5a02c3edf300494cebfe746292b1eeeea08595 -Author: Vladimir Vukicevic -Date: Sat Sep 9 17:06:21 2006 -0700 - - [win32] Misc win32 compilation fixes - - Fix win32/MSVC defines for snprintf, inline, and M_PI - - src/cairoint.h | 5 +++++ - test/cairo-test.h | 6 ++++++ - 2 files changed, 11 insertions(+), 0 deletions(-) - -commit dbd0fa193c77a6cb112b4862c72c3a18209a755e -Author: Vladimir Vukicevic -Date: Sat Sep 9 17:05:00 2006 -0700 - - [win32] Make cairo as a win32 static library possible - - This adds a win32 initialization function that is called from all - surface creation and font creation functions to ensure that the win32 - mutexes are initialized. - - src/cairo-win32-font.c | 10 ++++++++++ - src/cairo-win32-private.h | 3 +++ - src/cairo-win32-surface.c | 29 ++++++++++++++++++++++++----- - 3 files changed, 37 insertions(+), 5 deletions(-) - -commit 416e94532b1584b2ff23dd270c70ab900d55c326 -Author: Carl Worth -Date: Sat Sep 9 16:04:19 2006 -0700 - - test/bitmap-font: Fix arguments to FcFreeTypeQuery to avoid warnings. - - test/bitmap-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit a37e6675333da8f0c5ebe4b8d199f74b8ec30b43 -Author: Carl Worth -Date: Sat Sep 9 16:03:41 2006 -0700 - - Use unsigned consistently to avoid compiler warning. - - boilerplate/cairo-boilerplate.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 195fd5cde610377ffb34c98fed308b2e4d881cbc -Author: Carl Worth -Date: Sat Sep 9 14:55:57 2006 -0700 - - boilerplate: Rename cairo_test_target_t to cairo_boilerplate_target_t - - boilerplate/cairo-boilerplate.c | 4 ++-- - boilerplate/cairo-boilerplate.h | 18 +++++++++--------- - perf/cairo-perf.c | 12 ++++++------ - test/cairo-test.c | 28 ++++++++++++++-------------- - 4 files changed, 31 insertions(+), 31 deletions(-) - -commit 99360bd35d77e1a3f536e72f5729455580c980c2 -Author: Behdad Esfahbod -Date: Fri Sep 8 15:12:07 2006 -0400 - - cairo_show_glphs: Mark glyphs argument as const. - - src/cairo-gstate.c | 2 +- - src/cairo.c | 2 +- - src/cairo.h | 2 +- - src/cairoint.h | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -commit c475d2ca69fa8fbdf1c50f1d5d1b6b558b8fd6cd -Author: Carl Worth -Date: Thu Sep 7 17:46:21 2006 -0700 - - Fix bitmap-font test failure by not generating a type1 font for a bitmap font. - - This was simply a matter of ensuring that the UNSUPPORTED - return value was checked for and propagated all the way - out of cairo-type1-fallback.c - - src/cairo-type1-fallback.c | 35 ++++++++++++++++++++++++----------- - 1 files changed, 24 insertions(+), 11 deletions(-) - -commit f6bd76a4b26848fb5cc8e40e65f4393d3bd684ae -Author: Carl Worth -Date: Thu Sep 7 17:36:36 2006 -0700 - - type1: Enforce pre-allocation usage and fail-proof behavior of charstring_encode functions - - These functions were previously returning a status value that - was almost never being checked. Instead we now make these - functions void and enforce a usage pattern that the destination - array must be pre-grown to accomodate the results. This is - verified with a couple of assert statements. - - The pre-allocation was already happening with all but one call. - That call is now also fixed up. - - src/cairo-type1-fallback.c | 49 +++++++++++++++++++++++++++++++++++++------ - 1 files changed, 42 insertions(+), 7 deletions(-) - -commit 942cd2e026431bd5ae347c264fb3a0469eb53cf4 -Author: Carl Worth -Date: Thu Sep 7 17:33:35 2006 -0700 - - Add _cairo_array_size to allow querying the allocated size - - src/cairo-array.c | 12 ++++++++++++ - src/cairoint.h | 3 +++ - 2 files changed, 15 insertions(+), 0 deletions(-) - -commit 8796b19b5d2e203f5f8724cef1d3ae8d2d02fc85 -Author: Carl Worth -Date: Thu Sep 7 17:09:37 2006 -0700 - - cairo-type1-fallback.c: Regularize some whitespace. - - src/cairo-type1-fallback.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 8364251db55c2451eca9b8162aa32ae00f433251 -Author: Carl Worth -Date: Thu Sep 7 17:07:54 2006 -0700 - - cairo_type1_font_create: Fix missing NO_MEMORY check and cleanup style. - - src/cairo-type1-fallback.c | 42 +++++++++++++++++++++++++++--------------- - 1 files changed, 27 insertions(+), 15 deletions(-) - -commit 75ac7ee171d4bbe2b590e444bde9eb95138a2452 -Author: Carl Worth -Date: Thu Sep 7 16:54:31 2006 -0700 - - Remove font->status from cairo_type1_font_t - - This object doesn't act like a status-holding object, (there are no - "if (status) return;" inertness-enforcing statements for example), - so it shouldn't pretend like it is. - - src/cairo-type1-fallback.c | 76 ++++++++++++++++++++++---------------------- - 1 files changed, 38 insertions(+), 38 deletions(-) - -commit c28c33a5888bc1ec4ce2067a7215b7f74d4323d1 -Author: Carl Worth -Date: Thu Sep 7 16:42:04 2006 -0700 - - Check status value of output_stream object at time of destroy - - src/cairo-ps-surface.c | 2 ++ - src/cairo-type1-fallback.c | 4 +++- - 2 files changed, 5 insertions(+), 1 deletions(-) - -commit 179f7defdffb254936592a02208c338c13466253 -Author: Carl Worth -Date: Thu Sep 7 16:10:40 2006 -0700 - - Use new return value from _cairo_output_stream_destroy - - This is a little simpler than the old idiom of calling - _cairo_output_stream_get_status just before calling - _cairo_output_stream_destroy. - - I had hoped this technique would apply in more cases, but - many cases want to separate the two actions anyway to do - conditional assignment of the status value, (in order to - not overwrite an earlier error value). - - src/cairo-pdf-surface.c | 3 +-- - src/cairo-svg-surface.c | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) - -commit 89e7d5d4208bd943c884d4261dc7484ac654132c -Author: Carl Worth -Date: Thu Sep 7 16:01:07 2006 -0700 - - Make _cairo_output_stream_destroy return the stream's status as a last gasp. - - src/cairo-output-stream-private.h | 12 +++++++++--- - src/cairo-output-stream.c | 26 ++++++++++++++++---------- - 2 files changed, 25 insertions(+), 13 deletions(-) - -commit 3a92ab69c89d227bdfbb1bd5d609b83a59fc013f -Author: Carl Worth -Date: Thu Sep 7 13:09:25 2006 -0700 - - test: Report details errors when image output files cannot be found. - - test/buffer-diff.c | 16 ++++++++++++---- - 1 files changed, 12 insertions(+), 4 deletions(-) - -commit d598cd8d61863ff91f505241a773595aec7e8445 -Author: Nicholas Miell -Date: Wed Sep 6 15:45:00 2006 -0700 - - Fix the AMD64 final link by removing SLIM from pixman - - In order for SLIM's PLT indirection avoidance to work, everything in - the library that makes internal function calls needs to see the - relevant slim_hidden_proto() macro in addition to the function's - prototype. However, external headers used by clients of the shared - library should not use the SLIM macros at all. - - Pixman is a rather odd case -- it's mostly independent from cairo, so - it has it's own public interface, but it's built as a part of cairo - instead of its own shared library. This means that cairo would need to - see all of pixman's slim_hidden_proto() macros in order to function - and it doesn't currently, which results in a link failure on AMD64 - systems and on i386 systems (I think, I haven't actually verified - this) it produces a shared object that isn't actally sharable. - - I have no idea why exactly the link failure only showed up as a result - of commit e06246b9b1015eb89112f628d5820fcb350a7335. I think it has - something to do with the pixman functions no longer having PLT entries - at all, but the exact interaction isn't clear to me. - - However, all of these pixman functions aren't part of the cairo ABI - (which is why they were marked pixman_private in the first place), - which means that the SLIMification of pixman is largely pointless -- - they aren't externally visible, so they don't need PLT entries at - all. Furthermore, while pixman may eventually be shared among cairo - and X, I'm told that this sharing will be source-level only, which - means it won't ever be an actual shared library and thus won't ever - need SLIM at all. - - So, I just removed all use of SLIM in pixman (leaving behind - slim_internal.h for the future edification of anyone who cares).This - fixes the AMD64 link failure and passes the check-plt & check-def - parts of make check. - - Signed-off-by: Nicholas Miell - - pixman/src/fbpict.c | 1 - - pixman/src/iccolor.c | 1 - - pixman/src/icformat.c | 1 - - pixman/src/icimage.c | 4 ---- - pixman/src/icint.h | 13 ------------- - pixman/src/icrect.c | 1 - - pixman/src/pixregion.c | 8 -------- - 7 files changed, 0 insertions(+), 29 deletions(-) - -commit 203d70a562ce3ffca51069aecda01a9f2bb61ff5 -Author: Nicholas Miell -Date: Wed Sep 6 14:43:44 2006 -0700 - - Make the SLIM macros robust in the face of macro-renamed symbols - - This doesn't actually fix the AMD64 link failure, but it does make the - foo/EXT_foo/INT_foo symbol names generated by the slim_hidden_proto() - and slim_hidden_def() macros consistent in the face of the meddling of - pixman-remap.h. - - Signed-off-by: Nicholas Miell - - pixman/src/slim_internal.h | 5 +++-- - src/cairoint.h | 5 +++-- - 2 files changed, 6 insertions(+), 4 deletions(-) - -commit 404e88ea6a08371280fb9fbc1f903e16ac868bf4 -Author: Behdad Esfahbod -Date: Wed Sep 6 17:46:29 2006 -0400 - - configure.in: Require automake version 1.9 here too - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 8a25471c2535206343e46ea90ac8875fed948363 -Author: Carl Worth -Date: Wed Sep 6 14:19:32 2006 -0700 - - autogen.sh: Require automake version 1.9 - - This is the first version of automake to support a slash in SUBDIRS, (as - used by the recent addition of cairo/boilerplate). Thanks to Frederic Peters - for pointing this out (fixes bug #8152). - - autogen.sh | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit b5a64138bb9be97b96e6bf248c559e8d3c6d4ac1 -Author: Behdad Esfahbod -Date: Wed Sep 6 16:39:18 2006 -0400 - - [x86-64] check-plt.sh: match on JU?MP_SLO as on x86-64 "SLOT" is truncated - - src/check-plt.sh | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e25add77df1cc6c89ded371f7f63b36073cb1389 -Author: Behdad Esfahbod -Date: Wed Sep 6 13:58:31 2006 -0400 - - Add - - boilerplate/.gitignore | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit cd1b6650648b5a688b4b6c2d696d9434c824a13f -Author: Behdad Esfahbod -Date: Wed Sep 6 13:54:12 2006 -0400 - - Add scripts to sanity check the shared object for exported and PLT symbols - - src/check-def.sh checks that the list of symbols exported is the same as the - list of symbols in cairo.def, ie. symbols in public header files. (except for - symbols starting with _cairo) - - src/check-plt.sh checks that no PLT entries exist for local function calls. - This makes sure we keep the 'slim' annotations uptodate. - - These two are defined as tests in src/ and will be run during "make distcheck". - However, they are skipped if the commands 'nm' and 'readelf' are not found. - (We don't really rely on any functionality of eu-readelf, so using readelf - proper which should be more commonlly installed.) - - RELEASING | 36 +++++++----------------------------- - src/Makefile.am | 3 +++ - src/check-def.sh | 31 +++++++++++++++++++++++++++++++ - src/check-plt.sh | 17 +++++++++++++++++ - 4 files changed, 58 insertions(+), 29 deletions(-) - -commit 3d398b1a214a4e30806773a5198db0dace061608 -Author: Behdad Esfahbod -Date: Wed Sep 6 13:49:53 2006 -0400 - - [test/Makefile] Unset DIST_SUBDIRS - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c4d863afad7f45a0360c732b5b6d1c29064dc1f5 -Author: Behdad Esfahbod -Date: Wed Sep 6 13:49:27 2006 -0400 - - [perf/Makefile] Unset DIST_SUBDIRS - - perf/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6b377b62ac45b92e08e7dee2378d50d87f0ab410 -Author: Behdad Esfahbod -Date: Wed Sep 6 13:49:02 2006 -0400 - - Update - - perf/.gitignore | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 94c361cd2a775a94a6e770ea81f6e81edf6165b4 -Author: Behdad Esfahbod -Date: Wed Sep 6 13:47:37 2006 -0400 - - [Makefile] Add perf to DIST_SUBDIRS - - Makefile.am | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 8c9ea020cab66c9f133571db2b56f96d4c28cdbd -Author: Behdad Esfahbod -Date: Wed Sep 6 12:45:07 2006 -0400 - - [Makefile] Fix typo - - boilerplate/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit a7844338da31785e8bc4261feaf4ea16adc6abdb -Author: Carl Worth -Date: Wed Sep 6 05:17:01 2006 -0700 - - perf: Add tessellate test case (in -16, -64, and -256 varieties) - - perf/.gitignore | 1 + - perf/Makefile.am | 3 +- - perf/cairo-perf.c | 3 + - perf/cairo-perf.h | 3 + - perf/tessellate.c | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 175 insertions(+), 1 deletions(-) - -commit 221c02098f81d16b642693356afb1f4cf7fca5fd -Author: Carl Worth -Date: Wed Sep 6 05:09:19 2006 -0700 - - perf: Allow CAIRO_TEST_TARGET to limit targets tested. - - Also, don't print the image size for a test if there is only one. - - perf/cairo-perf.c | 17 ++++++++++++++--- - 1 files changed, 14 insertions(+), 3 deletions(-) - -commit b866069210e2a86ab54770b3c762c8f31b75a55e -Author: Carl Worth -Date: Wed Sep 6 05:07:08 2006 -0700 - - perf: Handle 32-bit wraparound of performance counter - - perf/cairo-perf-posix.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit b64645c567182795b050f909673aea523ae6f505 -Author: Carl Worth -Date: Wed Sep 6 03:32:07 2006 -0700 - - perf: Fix cairo_perf_ticks_per_second to avoid wraparound - - perf/cairo-perf-posix.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d9082d59db90a4373ec52d932b87234e3c39b21b -Author: Carl Worth -Date: Wed Sep 6 01:37:13 2006 -0700 - - Prefer CPU performance counters (if available) over gettimeofday. - - I've seen this improve the std. deviation often by a factor of 2 - and occasionally up to a factor of 10. It is sometimes not much - better, but never seems to be appreciably worse compared to using - gettimeofday. - - Thanks to David A. Schleef and his liboil for - the implementation. - - perf/cairo-perf-posix.c | 124 ++++++++++++++++++++++++++++++++++++++++++++--- - 1 files changed, 116 insertions(+), 8 deletions(-) - -commit 1085d99bc3c2f12ae37be0489deedac2475ab376 -Author: Carl Worth -Date: Wed Sep 6 00:56:56 2006 -0700 - - perf/README: Update due to cairo_perf_timer API changes - - perf/README | 18 ++++++------------ - 1 files changed, 6 insertions(+), 12 deletions(-) - -commit 3c407aa80a43e1724e732482ada5ad6718fe33ae -Author: Carl Worth -Date: Wed Sep 6 00:53:52 2006 -0700 - - perf-paint: Spend more iterations on smaller sizes to balance testing. - - The values here are chosen to try to equalize the standard deviation - of the various tests. - - perf/paint.c | 22 ++++++++++++++++++---- - 1 files changed, 18 insertions(+), 4 deletions(-) - -commit 3519887f1838a8ea67784eecec31feb9a37b4828 -Author: Carl Worth -Date: Wed Sep 6 00:52:06 2006 -0700 - - perf: Move sorting and discarding outside of compute_stats. Adjust discard to slowest 15% only. - - perf/cairo-perf.c | 17 +++++++++-------- - 1 files changed, 9 insertions(+), 8 deletions(-) - -commit d31037e421e275cd1d6d1440d6b5bdb817f992bc -Author: Carl Worth -Date: Wed Sep 6 00:15:49 2006 -0700 - - perf: Report times not rates. Interface in integers not doubles. - - boilerplate/cairo-boilerplate.h | 31 +++++++++++++++++++++++++++++++ - perf/cairo-perf-posix.c | 15 ++++++++++----- - perf/cairo-perf-win32.c | 12 ++++++++---- - perf/cairo-perf.c | 23 ++++++++++++----------- - perf/cairo-perf.h | 12 +++++++++--- - perf/paint.c | 8 ++++---- - 6 files changed, 74 insertions(+), 27 deletions(-) - -commit 9d0d38e0a0307580ba69a96e239507cc9559cd99 -Author: Carl Worth -Date: Tue Sep 5 22:58:33 2006 -0700 - - perf: Rename functions in line with cairo's naming guidelines - - perf/cairo-perf-posix.c | 24 ++++++++++++------------ - perf/cairo-perf-win32.c | 20 ++++++++++---------- - perf/cairo-perf.c | 2 +- - perf/cairo-perf.h | 10 ++++------ - perf/paint.c | 6 +++--- - 5 files changed, 30 insertions(+), 32 deletions(-) - -commit 9f51fcc888c4b036c535a6a4042ae8c6859f3261 -Author: Carl Worth -Date: Tue Sep 5 22:53:12 2006 -0700 - - perf: Fold cairo-perf-timer.h into cairo-perf.h - - perf/Makefile.am | 4 +- - perf/cairo-perf-posix.c | 74 +++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf-timer-posix.c | 74 ----------------------------------------- - perf/cairo-perf-timer-win32.c | 71 --------------------------------------- - perf/cairo-perf-timer.h | 51 ---------------------------- - perf/cairo-perf-win32.c | 71 +++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf.h | 18 +++++++++- - 7 files changed, 164 insertions(+), 199 deletions(-) - -commit 499a3a7c4772bb0f446f89a9c6e9430bd31c1218 -Author: Carl Worth -Date: Tue Sep 5 22:50:25 2006 -0700 - - perf: Remove unused alarm functions - - perf/cairo-perf-timer-posix.c | 29 ----------------------------- - perf/cairo-perf-timer-win32.c | 20 -------------------- - perf/cairo-perf-timer.h | 10 ---------- - perf/cairo-perf.c | 2 -- - perf/cairo-perf.h | 2 -- - 5 files changed, 0 insertions(+), 63 deletions(-) - -commit df8cc10073b0cacd198eda5a24f2b2f61a0a7085 -Author: Benjamin Otte -Date: Tue Sep 5 22:48:38 2006 -0700 - - perf: Make cairo_perf_timer structure private. Make timer functions void. - - perf/cairo-perf-timer-posix.c | 22 +++++++++++++++------- - perf/cairo-perf-timer-win32.c | 20 ++++++++++++++------ - perf/cairo-perf-timer.h | 17 ++++------------- - perf/paint.c | 7 +++---- - 4 files changed, 36 insertions(+), 30 deletions(-) - -commit 1bb6f9fb10dfdb59779ec159569ed6a44c4e8e5f -Author: Benjamin Otte -Date: Tue Sep 5 22:36:56 2006 -0700 - - perf: Add yield and fix double comparison - - - add a yield () function that's called before every test. It reduced the std - dev slightly for me - - fix double comparisons to not just compare the integer part - - perf/cairo-perf-timer-posix.c | 12 ++++++++++++ - perf/cairo-perf-timer-win32.c | 7 +++++++ - perf/cairo-perf-timer.h | 5 +++++ - perf/cairo-perf.c | 10 ++++++++-- - 4 files changed, 32 insertions(+), 2 deletions(-) - -commit bcb7863f00b4cfdf0985993067fc32d07b81540b -Author: Carl Worth -Date: Tue Sep 5 22:25:21 2006 -0700 - - Move target tolerance to cairo_test_target structure (should let single-pixel SVG errors pass) - - Previously we were setting the target tolerance based on the surface - type. But that doesn't work as multiple backends will provide a surface - of type meta. So instead we put the tolerance as a value in the - cairo_test_target data structure. - - With this change, some single-pixel errors of 1 in the SVG backend - should now be ignored. - - boilerplate/cairo-boilerplate.c | 68 +++++++++++++++++++++----------------- - boilerplate/cairo-boilerplate.h | 1 + - test/cairo-test.c | 40 +---------------------- - 3 files changed, 40 insertions(+), 69 deletions(-) - -commit 4620b929ae84dfa08c1c9a4072e114f6b38e1bd9 -Author: Carl Worth -Date: Tue Sep 5 17:12:43 2006 -0700 - - RELEASING: Add note on checking for local symbol PLT entries. - - RELEASING | 30 ++++++++++++++++++++++++++++++ - 1 files changed, 30 insertions(+), 0 deletions(-) - -commit 60c4add26abe6b624d7569f35fa846d529ccea18 -Author: Carl Worth -Date: Tue Sep 5 16:52:34 2006 -0700 - - slim_hidden_proto: Move smeicolon from definition to use for consistency and legibility - - src/cairo-ft-private.h | 6 +- - src/cairo-xlib-private.h | 2 +- - src/cairoint.h | 166 +++++++++++++++++++++--------------------- - src/test-fallback-surface.c | 2 +- - 4 files changed, 88 insertions(+), 88 deletions(-) - -commit d7f08794ef194d0b86a749381472bfeb0a32d993 -Author: Carl Worth -Date: Tue Sep 5 16:48:49 2006 -0700 - - Add many missing slim_hidden calls to bypass PLT entries for local use of public functions - - src/cairo-font-options.c | 9 +++++ - src/cairo-font.c | 2 + - src/cairo-ft-font.c | 3 ++ - src/cairo-ft-private.h | 7 +++- - src/cairo-image-surface.c | 4 ++ - src/cairo-matrix.c | 1 + - src/cairo-pattern.c | 8 ++++ - src/cairo-png.c | 1 + - src/cairo-scaled-font.c | 9 +++++ - src/cairo-surface.c | 10 +++++ - src/cairo-xlib-private.h | 7 ++++ - src/cairo-xlib-surface.c | 1 + - src/cairo.c | 12 ++++++ - src/cairoint.h | 84 +++++++++++++++++++++++++++++++++++------- - src/test-fallback-surface.c | 3 ++ - 15 files changed, 145 insertions(+), 16 deletions(-) - -commit e06246b9b1015eb89112f628d5820fcb350a7335 -Author: Carl Worth -Date: Tue Sep 5 16:45:01 2006 -0700 - - pixman: Add pixman_private decorations to hide pixman symbols from public interface - - pixman/src/fbmmx.h | 21 +++++++++ - pixman/src/icimage.h | 2 +- - pixman/src/pixman.h | 108 +++++++++++++++++++++++++---------------------- - pixman/src/renderedge.h | 10 ++-- - 4 files changed, 85 insertions(+), 56 deletions(-) - -commit d716020db272839717ff71d91534f3125029b47a -Author: Adrian Johnson -Date: Tue Sep 5 15:57:47 2006 -0400 - - Generate Type 1 fonts from glyph outlines - - This patch generates Type 1 fonts for the PS/PDF backends when TrueType - or Type 1 subsetting fails. This has the advantage over the current - Type 3 fallback of reduced font size and better quality rendering - in some PDF viewers. xpdf shows a large improvement in text display - quality with this patch. - - src/Makefile.am | 1 + - src/cairo-pdf-surface.c | 93 +++-- - src/cairo-ps-surface.c | 32 ++ - src/cairo-scaled-font-subsets-private.h | 31 ++ - src/cairo-type1-fallback.c | 682 +++++++++++++++++++++++++++++++ - 5 files changed, 809 insertions(+), 30 deletions(-) - -commit ad78eb7692f6d080430bceb7b358403f6e91a637 -Author: Adrian Johnson -Date: Tue Sep 5 14:53:33 2006 -0400 - - Improve error checking in TrueType subsetting - - TrueType subsetting will SEGV when using OpenType fonts with CFF outlines. - - src/cairo-truetype-subset.c | 36 ++++++++++++++++++++++++------------ - 1 files changed, 24 insertions(+), 12 deletions(-) - -commit 49fa8d353b2926760fa92684546b2fc79985c782 -Author: Adrian Johnson -Date: Tue Sep 5 14:19:48 2006 -0400 - - Correct the value of /LastChar in the PDF Type 1 font dictionary. - - src/cairo-pdf-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d81de15804f210afe9905a4163a5e34ff2be5b5b -Author: Adrian Johnson -Date: Tue Sep 5 14:19:26 2006 -0400 - - Fix Type 1 embedding in PDF - - PDF Files with Type 1 fonts fail to open in any version of - ghostscript prior to 8.54. The problem is the hex encoding of the - encrypted portion of the font. The PDF reference says this should - only be in binary. - - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-scaled-font-subsets-private.h | 4 +++- - src/cairo-type1-subset.c | 11 ++++++----- - 4 files changed, 11 insertions(+), 8 deletions(-) - -commit e5a9c2330867ae11befa8a966aa0a50c31c82a32 -Author: Behdad Esfahbod -Date: Sat Sep 2 19:51:54 2006 -0400 - - [configure] Invalidate cached warning flags if list of flags changes - - such that one doesn't need to remove config.cache when when we add - new warning flags to be checked. - - configure.in | 34 ++++++++++++++++++++++++---------- - 1 files changed, 24 insertions(+), 10 deletions(-) - -commit 7c97a787ebce4880d6b9fe47a13ad018ff2ecd31 -Author: Carl Worth -Date: Fri Sep 1 16:10:25 2006 -0700 - - bug 8104: Eliminate unused variables. Replicate assert statement to identify branch of interest. - - src/cairo-ft-font.c | 9 ++------- - 1 files changed, 2 insertions(+), 7 deletions(-) - -commit 0a1aef157ef6cfea8608e7d037583c29cb2da5fe -Author: Carl Worth -Date: Thu Aug 31 18:25:04 2006 -0700 - - perf/README: Fix typo - - perf/README | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 91d55417053d3c0b615787432ff0a618e76f864f -Author: Carl Worth -Date: Thu Aug 31 18:11:25 2006 -0700 - - perf: Add README file explaining how to add a new test - - perf/README | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 92 insertions(+), 0 deletions(-) - -commit 2fa0228d63713f6274ca3228f236f1ee362ba11f -Author: Carl Worth -Date: Thu Aug 31 17:43:40 2006 -0700 - - Two big improvements to bring the std. deviation down to where we want it. - - 1. Remove all the alarm/signal code, which just isn't doing what we want for some reason. - Instead, for now we'll simply run for a fixed number of iterations, (perhaps we - can tune that per test later). - - 2. Before computing mean and stdandard deviation of runs, sort them all and discard the - top and bottom 20% of the values. - - Now the standard deviation for the paint test is generally 2% or less. - - perf/cairo-perf.c | 29 +++++++++++++++++++---------- - perf/cairo-perf.h | 30 ------------------------------ - perf/paint.c | 12 +++++++----- - 3 files changed, 26 insertions(+), 45 deletions(-) - -commit 6ae6d91c0c3a2f8fdff39c1c84fbef3aa45bf958 -Author: Carl Worth -Date: Thu Aug 31 14:08:43 2006 -0700 - - perf: Switch from alarm to setitimer for more fine-grained control of timers - - perf/cairo-perf-timer-posix.c | 17 +++++++++++++++-- - perf/cairo-perf-timer-win32.c | 2 +- - perf/cairo-perf-timer.h | 2 +- - perf/cairo-perf.c | 4 ++-- - perf/cairo-perf.h | 2 +- - 5 files changed, 20 insertions(+), 7 deletions(-) - -commit 2ebb9af4346c5e60d2497cfb9c5809d0c8045878 -Author: Benjamin Otte -Date: Thu Aug 31 13:30:10 2006 -0700 - - boilerplate: Fix compilation for glitz. - - boilerplate/Makefile.am | 14 ++++++++++++++ - boilerplate/cairo-boilerplate.c | 1 + - test/Makefile.am | 13 ------------- - 3 files changed, 15 insertions(+), 13 deletions(-) - -commit 19a5b8b9b53219dc8ae508a2fcd7b2ca617bc9b8 -Author: Carl Worth -Date: Thu Aug 31 13:22:17 2006 -0700 - - perf: Run for multiple iterations and print std. deviation - - perf/cairo-perf.c | 61 ++++++++++++++++++++++++++++++++++++++++++---------- - 1 files changed, 49 insertions(+), 12 deletions(-) - -commit 689e9c446eb0ec69cb560fa44f4a1f6a0b28cb17 -Author: Carl Worth -Date: Thu Aug 31 12:34:21 2006 -0700 - - perf: Add indication of content to output - - perf/cairo-perf.c | 23 +++++++++++++++++++++-- - 1 files changed, 21 insertions(+), 2 deletions(-) - -commit 7917e1201fd38089111bb7723256747ae32347e0 -Author: Carl Worth -Date: Thu Aug 31 11:53:16 2006 -0700 - - perf: Fix typo in backend blackballing so that image tests now run - - perf/cairo-perf.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 0c741675e1d43168f42ee530486bfa4b8ec54920 -Author: Carl Worth -Date: Thu Aug 31 11:51:28 2006 -0700 - - Make perf interface return a rate. Start print target and test names. - - perf/cairo-perf.c | 18 ++++++++++++------ - perf/cairo-perf.h | 4 ++-- - perf/paint.c | 12 ++++++------ - 3 files changed, 20 insertions(+), 14 deletions(-) - -commit fd13e874a778eeac4e2d358cc19b040aa20bcdf3 -Author: Carl Worth -Date: Thu Aug 31 11:42:51 2006 -0700 - - perf: Drop separate setup function from each test case. - - We are already doing loop measurement internally, so each function - can already do any setup it needs without it affecting the measurement. - - perf/cairo-perf.c | 6 ++---- - perf/cairo-perf.h | 3 +-- - perf/paint.c | 31 ++++++++++++++++++------------- - 3 files changed, 21 insertions(+), 19 deletions(-) - -commit 578b74473de4c70f907db38eac6f8e9039d72aa1 -Author: Carl Worth -Date: Thu Aug 31 11:31:21 2006 -0700 - - perf: More consistency improvements for names. - - Rename bench_timer_t to cairo_perf_timer_t. - Rename PERF_LOOP macros to CAIRO_PERF_LOOP - Rename DECL_PERF_FUNC to CAIRO_PERF_DECL - - perf/cairo-perf-timer-posix.c | 6 +++--- - perf/cairo-perf-timer-win32.c | 6 +++--- - perf/cairo-perf-timer.h | 17 ++++++++++++++--- - perf/cairo-perf.h | 27 ++++++++------------------- - perf/paint.c | 8 ++++---- - 5 files changed, 32 insertions(+), 32 deletions(-) - -commit cf75da4842ca1191719e9f100c6af901a14dda5c -Author: Carl Worth -Date: Thu Aug 31 11:25:04 2006 -0700 - - perf: Rename timer-alarm files to cairo-perf-timer - - perf/Makefile.am | 12 +++--- - perf/cairo-perf-timer-posix.c | 70 +++++++++++++++++++++++++++++++++++++ - perf/cairo-perf-timer-win32.c | 76 +++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf-timer.h | 54 +++++++++++++++++++++++++++++ - perf/cairo-perf.h | 2 +- - perf/timer-alarm-posix.c | 70 ------------------------------------- - perf/timer-alarm-win32.c | 76 ----------------------------------------- - perf/timer-alarm.h | 54 ----------------------------- - 8 files changed, 207 insertions(+), 207 deletions(-) - -commit 7ad6e941017e070bf7d93afba4de5c49cd1ff533 -Author: Behdad Esfahbod -Date: Thu Aug 31 14:21:51 2006 -0400 - - [test] Use FcFreeTypeQuery - - test/bitmap-font.c | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit 7f6e901a236ed267d396310fc56fa6bde697bfa2 -Author: Carl Worth -Date: Thu Aug 31 11:19:48 2006 -0700 - - perf: More simplification of PERF_LOOP macros. - - Here we drop both the start_timing and stop_timing functions, - foliding their contents into main, PERF_LOOP_INIT and - PERF_LOOP_FINI. - - perf/cairo-perf.c | 23 ++++------------------- - perf/cairo-perf.h | 28 +++++++++++++--------------- - 2 files changed, 17 insertions(+), 34 deletions(-) - -commit b9f629d54239c43eef4746293bcffd58ada442f2 -Author: Carl Worth -Date: Thu Aug 31 11:02:20 2006 -0700 - - perf: Don't require a separate counter from the timer for perf loops. - - perf/cairo-perf.c | 14 +++-------- - perf/cairo-perf.h | 58 +++++++++++++++++++++++++++------------------- - perf/paint.c | 7 ++--- - perf/timer-alarm-posix.c | 4 +- - perf/timer-alarm-win32.c | 6 ++-- - perf/timer-alarm.h | 11 -------- - 6 files changed, 46 insertions(+), 54 deletions(-) - -commit 13bcba68ae6f0d29b82def09e7a6e356266dc2e7 -Author: Carl Worth -Date: Thu Aug 31 10:39:24 2006 -0700 - - perf: Collapse timing.[ch] down into cairo-perf.[ch] - - perf/Makefile.am | 2 - - perf/cairo-perf.c | 40 +++++++++++++++++++++++---- - perf/cairo-perf.h | 49 ++++++++++++++++++++++++++++----- - perf/paint.c | 1 - - perf/timer-alarm-posix.c | 2 +- - perf/timer-alarm-win32.c | 3 -- - perf/timing.c | 56 ------------------------------------- - perf/timing.h | 68 ---------------------------------------------- - 8 files changed, 77 insertions(+), 144 deletions(-) - -commit a60ed68daebc15e87ededbca80211508f624bcb6 -Author: Carl Worth -Date: Thu Aug 31 10:33:24 2006 -0700 - - perf: Remove unused util.c - - perf/util.c | 177 ----------------------------------------------------------- - 1 files changed, 0 insertions(+), 177 deletions(-) - -commit 739c4767673ace4f566d395d770924617ddebaff -Author: Carl Worth -Date: Thu Aug 31 10:27:20 2006 -0700 - - Initial hookup of Vlad's timer/alarm code - - boilerplate/cairo-boilerplate.h | 1 + - perf/Makefile.am | 9 +++ - perf/cairo-bench.h | 110 --------------------------------------- - perf/cairo-perf.h | 6 +-- - perf/paint.c | 9 +++- - perf/timer-alarm-posix.c | 70 +++++++++++++++++++++++++ - perf/timer-alarm-win32.c | 79 ++++++++++++++++++++++++++++ - perf/timer-alarm.h | 65 +++++++++++++++++++++++ - perf/timing.c | 56 ++++++++++++++++++++ - perf/timing.h | 68 ++++++++++++++++++++++++ - perf/util.c | 12 +++-- - 11 files changed, 364 insertions(+), 121 deletions(-) - -commit 3d279da6214d43de05eba4af381e451cec3cfd72 -Author: Vladimir Vukicevic -Date: Thu Aug 31 09:01:23 2006 -0700 - - Add useful pieces from Vladimir's cairo-bench - - perf/cairo-bench.h | 110 ++++++++++++++++++++++++++++++++ - perf/util.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 285 insertions(+), 0 deletions(-) - -commit 851dd63719d51f9b839784ba2761a1e2b2ecfbe5 -Author: Behdad Esfahbod -Date: Thu Aug 31 13:18:37 2006 -0400 - - [test] Use $(srcdir) to find valgrind supressions - - test/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2c16aa63044afe75c00518c2cb7e5ba6288e905a -Author: Carl Worth -Date: Thu Aug 31 08:53:58 2006 -0700 - - perf: Don't measure meta-surface-backed surface types. - - boilerplate/cairo-boilerplate.h | 3 +++ - perf/.gitignore | 1 - - perf/cairo-perf.c | 37 +++++++++++++++++++++++++++++++++++++ - test/cairo-test.h | 8 -------- - 4 files changed, 40 insertions(+), 9 deletions(-) - -commit 4915e0baa761f1179023f2ad5d5cd3dd6aeaba2f -Author: Carl Worth -Date: Thu Aug 31 08:36:29 2006 -0700 - - boilerplate: Fix missing include of config.h which was preventing many backends from being tested - - boilerplate/cairo-boilerplate.c | 26 +++++++++++++++----------- - boilerplate/cairo-boilerplate.h | 4 ++++ - test/cairo-test.c | 15 --------------- - 3 files changed, 19 insertions(+), 26 deletions(-) - -commit 8d834c3a34a17de0e03841501ea107dee7b373d0 -Author: Carl Worth -Date: Thu Aug 31 08:35:39 2006 -0700 - - Require librsvg >= 2.14.0 to test SVG backend - - configure.in | 12 +++++++----- - 1 files changed, 7 insertions(+), 5 deletions(-) - -commit e153c55dffca6b95a8ad9c731156a579f8979f42 -Author: Carl Worth -Date: Thu Aug 31 07:19:05 2006 -0700 - - perf: Add initial skeleton of performance monitoring suite - - Makefile.am | 2 + - configure.in | 1 + - perf/.gitignore | 2 + - perf/Makefile.am | 26 +++++++++++++++++++ - perf/cairo-perf.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - perf/cairo-perf.h | 45 +++++++++++++++++++++++++++++++++ - perf/paint.c | 49 ++++++++++++++++++++++++++++++++++++ - 7 files changed, 197 insertions(+), 0 deletions(-) - -commit d1834cca192fe6f8e429be0461fab6914e04024d -Author: Carl Worth -Date: Thu Aug 31 04:01:10 2006 -0700 - - test: Ignore single-bit errors for SVG backend. - - The interface of the various buffer/image_diff functions is improved to - provide the maximum pixel difference in addition to the number of pixels - that differ. This value can then be used to compare against a per-backend - tolerance. - - Currently I've set the SVG backend's tolerance to 1 to handle some issues - we're currently seeing of single-bit differences on different systems, (but - we're not exactly sure why yet). - - Also I improved the image_diff routines to properly report a status value - on failure rather than the bogus value of -1 for pixels_changed. - - Makefile.am | 2 +- - test/buffer-diff.c | 96 ++++++++++++++++++++++++++++++++------------------- - test/buffer-diff.h | 63 +++++++++++++++++++++++++-------- - test/cairo-test.c | 67 +++++++++++++++++++++++++++++++----- - test/imagediff.c | 19 +++++++--- - test/xlib-surface.c | 75 ++++++++++++++++++++++----------------- - 6 files changed, 222 insertions(+), 100 deletions(-) - -commit d52a1f762d33f3ada919b581e0d62f8ba1c2314c -Author: Carl Worth -Date: Thu Aug 31 01:39:06 2006 -0700 - - Move test-specific stuff out of boilerplate/ and back into test/ - - This now gives us two separate libtool convenience libraries, - so they have to have separate names now: - libcairoboilerplate.la and libcairotest.la. - - boilerplate/Makefile.am | 14 +- - boilerplate/buffer-diff.c | 306 -------------------- - boilerplate/buffer-diff.h | 80 ------ - boilerplate/cairo-test.c | 683 --------------------------------------------- - boilerplate/cairo-test.h | 136 --------- - boilerplate/xmalloc.c | 6 +- - test/Makefile.am | 13 +- - test/buffer-diff.c | 306 ++++++++++++++++++++ - test/buffer-diff.h | 80 ++++++ - test/cairo-test.c | 683 +++++++++++++++++++++++++++++++++++++++++++++ - test/cairo-test.h | 136 +++++++++ - 11 files changed, 1225 insertions(+), 1218 deletions(-) - -commit 95475218858792ccb20ac6ad28db22e233c783d7 -Author: Carl Worth -Date: Wed Aug 30 23:41:48 2006 -0700 - - boilerplate: Remove custom read/write-png code in favor of using cairo surfaces - - Also combine image_diff and image_diff_flattened into a single function - - boilerplate/Makefile.am | 4 - - boilerplate/buffer-diff.c | 260 ++++++++++++++++----------------------- - boilerplate/cairo-boilerplate.c | 2 +- - boilerplate/cairo-boilerplate.h | 10 ++- - boilerplate/cairo-test.c | 2 - - boilerplate/read-png.c | 196 ----------------------------- - boilerplate/read-png.h | 45 ------- - boilerplate/write-png.c | 99 --------------- - boilerplate/write-png.h | 35 ----- - test/imagediff.c | 2 - - 10 files changed, 119 insertions(+), 536 deletions(-) - -commit 37ce7058906a9a8c7e80bf4ed59c17ec912087cf -Author: Carl Worth -Date: Wed Aug 30 22:56:36 2006 -0700 - - Separate the sharable stuff out of cairo-test.c into cairo-boilerplate.c - - boilerplate/Makefile.am | 3 +- - boilerplate/cairo-boilerplate.c | 1511 +++++++++++++++++++++++++++++++++++++++ - boilerplate/cairo-boilerplate.h | 80 ++ - boilerplate/cairo-test.c | 1484 +-------------------------------------- - boilerplate/cairo-test.h | 13 +- - 5 files changed, 1607 insertions(+), 1484 deletions(-) - -commit a0ca4369ff71ca76e593ea8db3e728218814814d -Author: Carl Worth -Date: Wed Aug 30 22:33:53 2006 -0700 - - Add boilerplate/README explaining its purpose - - boilerplate/README | 14 ++++++++++++++ - 1 files changed, 14 insertions(+), 0 deletions(-) - -commit 5ef4c991f6ad00a37fc0645a38ba2cb9f832d9f1 -Author: Carl Worth -Date: Wed Aug 30 15:38:15 2006 -0700 - - test: Add link to test log file in HTML output - - test/make-html.pl | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 7f4e83ceeba912167df05f62ddd0798b112979a3 -Author: Carl Worth -Date: Wed Aug 30 15:34:27 2006 -0700 - - Split libcairotest files out from test/ and into boilerplate/ - - The idea here is to setup boilerplate to allow code sharing between - test/ and the upcoming perf/ - - .gitignore | 5 + - boilerplate/Makefile.am | 35 + - boilerplate/buffer-diff.c | 348 ++++++ - boilerplate/buffer-diff.h | 80 ++ - boilerplate/cairo-test-beos.cpp | 236 ++++ - boilerplate/cairo-test-beos.h | 26 + - boilerplate/cairo-test-directfb.c | 123 +++ - boilerplate/cairo-test-directfb.h | 23 + - boilerplate/cairo-test.c | 2147 +++++++++++++++++++++++++++++++++++++ - boilerplate/cairo-test.h | 143 +++ - boilerplate/read-png.c | 196 ++++ - boilerplate/read-png.h | 45 + - boilerplate/write-png.c | 99 ++ - boilerplate/write-png.h | 35 + - boilerplate/xmalloc.c | 58 + - boilerplate/xmalloc.h | 37 + - configure.in | 1 + - test/Makefile.am | 33 +- - test/buffer-diff.c | 348 ------ - test/buffer-diff.h | 80 -- - test/cairo-test-beos.cpp | 236 ---- - test/cairo-test-beos.h | 26 - - test/cairo-test-directfb.c | 123 --- - test/cairo-test-directfb.h | 23 - - test/cairo-test.c | 2147 ------------------------------------- - test/cairo-test.h | 143 --- - test/read-png.c | 196 ---- - test/read-png.h | 45 - - test/write-png.c | 99 -- - test/write-png.h | 35 - - test/xmalloc.c | 58 - - test/xmalloc.h | 37 - - 32 files changed, 3642 insertions(+), 3624 deletions(-) - -commit a5f068e10d72c20a55d20ca9f79508361d13fb80 -Author: Behdad Esfahbod -Date: Wed Aug 30 13:17:08 2006 -0400 - - [test] Add 128 to any diff component such that differences are visible - - test/buffer-diff.c | 10 ++++++---- - 1 files changed, 6 insertions(+), 4 deletions(-) - -commit 3252ad5ca630fe292babc061c01b8759ef49cde4 -Author: Behdad Esfahbod -Date: Mon Aug 28 22:44:15 2006 -0400 - - [PNG] Mark status volatile to fix gcc warning - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b6e5f2b0fef00352930dfcc47a13f330a13b1d68 -Author: Behdad Esfahbod -Date: Mon Aug 28 22:30:38 2006 -0400 - - [xlib] Bug 7593: rewrite loop to be more readable, and fix warnings - - Basically, it's evil to write a loop like: - - while ((c -= 4) > 0) { - ... - } - - for one reason that doesn't work if c is unsigned. And when c is signed, if - for some reason c is about -MAXINT, then it will overflow and not work as - expected. - - It's much safer (and more gcc warning friendly) to rewrite it as: - - unsigned int c; - - while (c >= 4) { - ... - c -= 4; - } - - src/cairo-xlib-surface.c | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 06a962886806be5e68061e24223c617980ac8248 -Author: Carl Worth -Date: Mon Aug 28 19:00:48 2006 -0700 - - Eliminate conditions checking for unsigned or enum values less than 0. - - src/cairo-array.c | 2 +- - src/cairo-svg-surface.c | 4 ++-- - src/cairoint.h | 3 +-- - 3 files changed, 4 insertions(+), 5 deletions(-) - -commit 7d1399a4bb0d8d74a4294700e6040accccefff2a -Author: Carl Worth -Date: Mon Aug 28 18:58:27 2006 -0700 - - Put static first to avoid compiler warning. - - src/cairo-type1-subset.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1b7ced6614d809262cca08e7c5141b7ce740bfca -Author: Behdad Esfahbod -Date: Mon Aug 28 18:47:37 2006 -0700 - - Bug #7593: Avoid unsigned loop control variable to eliminate infinite, memory-scribbling loop. - - Behdad chased this bug down when looking into bug #7593. This - bug is what finally motivated us to figure out how to get -Wextra - (for the "always true" comparisons of unsigned variables against - negative values). - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 50003615f28862f68b609aa290ebffee24d5d643 -Author: Carl Worth -Date: Mon Aug 28 18:54:35 2006 -0700 - - Add -Wextra (as well as -Wno-missing-field-initializers -Wno-unused-parameter) - - We'd been wanting some of the warnings in -Wextra for a long time, - but we had failed in tryingto squelch some of the undesired warnings. - We finally figured out how to do this correctly by simply ordering - the warnings correctly. - - configure.in | 20 ++++++++++++++++---- - 1 files changed, 16 insertions(+), 4 deletions(-) - -commit 5492946b0ced9b3e97f94ef097ee745c8a59df42 -Author: Behdad Esfahbod -Date: Wed Aug 23 12:29:49 2006 -0400 - - [image] Print out cairo version in the unsupported-format message - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 96c8f92883322a785fa9fa55de93b8eb56afab64 -Author: Behdad Esfahbod -Date: Tue Aug 22 22:00:58 2006 -0400 - - [test] bufferdiff: take abs of the pixel diffs. Oops! - - test/buffer-diff.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 988b5dcb7e50d9e08ff94cb98f6d9c91915bb9b4 -Author: Behdad Esfahbod -Date: Mon Aug 21 23:27:17 2006 -0400 - - [ROADMAP] Remove 1.2.4 stuff out of the way - - ROADMAP | 13 +------------ - 1 files changed, 1 insertions(+), 12 deletions(-) - -commit edf6f24e1b9673655f2b1c6e2060f9f2e46833e9 -Author: Behdad Esfahbod -Date: Mon Aug 21 23:25:40 2006 -0400 - - [TODO] Add cairo_get_scaled_font - - TODO | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 3d6aec7334881168277877e7d69514568d08c322 -Author: Behdad Esfahbod -Date: Mon Aug 21 23:24:49 2006 -0400 - - [ROADMAP] Add glyph cache inspection to 1.4 roadmap - - ROADMAP | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 782e3eb65b143a6e658eda69ba15da3ac432c711 -Author: Adrian Johnson -Date: Mon Aug 21 12:52:56 2006 -0400 - - Get correct unhinted outlines on win32. - - The documentation for GetGlyphOutline() states that outline returned is grid - fitted and if an application requires an unmodified outline it can request an - outline for a font whose size is equal to the font's em unit. - - This seems to suggest that the solution to this bug would be to obtain the - unmodified outline data and scale it to the required size. - - https://bugs.freedesktop.org/show_bug.cgi?id=7603 - - src/cairo-win32-font.c | 86 ++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 61 insertions(+), 25 deletions(-) - -commit 6de226be0e879709c4068cb7836d485e75928287 -Author: Yevgen Muntyan -Date: Mon Aug 21 03:52:40 2006 -0400 - - Define WINVER if it's not defined. (bug 6456) - - src/cairoint.h | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 6ed1613b5175ea9c431fff2df2cd1cf2e2edbf93 -Author: Behdad Esfahbod -Date: Sun Aug 20 13:44:56 2006 -0400 - - [Makefile.am] Remove unnecessary parantheses that were causing trouble with old bash - Reported by Tor Lillqvist - - src/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 047251db4337583075f6888fceecfb0c383d658a -Author: Carl Worth -Date: Fri Aug 18 18:30:31 2006 -0700 - - Increment version to 1.2.5 after making the 1.2.4 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 54755b2d9891981d813384bccde84998def96abf -Author: Carl Worth -Date: Fri Aug 18 18:19:10 2006 -0700 - - Remove stray ] that was breaking RELEASE_OR_PUBLISH and many make targets (release-publish, etc.) - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit fadde879fbf8547aaa55e80d21611e7674cd5f8f -Author: Carl Worth -Date: Fri Aug 18 17:36:42 2006 -0700 - - Update version to 1.2.4 and libtool version to 11:2:9. - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 43a25b818749d31268a60e2fcdaa11a73e41f7fd -Author: Carl Worth -Date: Fri Aug 18 17:35:33 2006 -0700 - - NEWS: Add notes for the 1.2.4 release. - - NEWS | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 68 insertions(+), 0 deletions(-) - -commit 790a359f89303875d58ff514d62ecff981836c86 -Author: Carl Worth -Date: Fri Aug 18 16:46:57 2006 -0700 - - EXTRA_DIST: Add missing source-clip-scale-svg-ref.png - - test/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit 4f5bb53032d6d0509ef86bcc152ce2b52be49d38 -Author: Carl Worth -Date: Fri Aug 18 16:35:58 2006 -0700 - - Ignore ChangeLog* in addition to ChangeLog - - .gitignore | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 2860af3ce230cde87cc4623d1eb4a920b71bc0d6 -Author: Carl Worth -Date: Fri Aug 18 16:35:27 2006 -0700 - - bitmap-font: Add missing pdf-specific reference image - - test/Makefile.am | 3 +-- - test/bitmap-font-pdf-argb32-ref.png | Bin 0 -> 1064 bytes - 2 files changed, 1 insertions(+), 2 deletions(-) - -commit b8b507c0920ddef35363ba1d75e4ba0ca141a028 -Author: Carl Worth -Date: Fri Aug 18 16:12:43 2006 -0700 - - Use &image->base as appropriate to avoid warnings. - - src/cairo-pdf-surface.c | 4 ++-- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-svg-surface.c | 6 +++--- - 3 files changed, 7 insertions(+), 7 deletions(-) - -commit 5f94275a4b667d8b1f41f87f1a6b84b3fa3f0616 -Author: Carl Worth -Date: Fri Aug 18 16:09:53 2006 -0700 - - Update .gitignore due to recent rename. - - test/.gitignore | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit d04b8148c2ccf714eb3f31855ca8b61d518423c6 -Author: Behdad Esfahbod -Date: Fri Aug 18 18:55:52 2006 -0400 - - [TODO] Add some items from memory - - TODO | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -commit 33b62f47a451cb3ee70e7343976f5d1f06adb443 -Author: Carl Worth -Date: Fri Aug 18 15:08:58 2006 -0700 - - Move unscheduled features and bugs from ROADMAP to TODO - - ROADMAP | 101 +------------------------------------------ - TODO | 146 +++++++++++++++++++++++++++++++++++++++++++-------------------- - 2 files changed, 103 insertions(+), 144 deletions(-) - -commit d1be19e1604f77a0a156bea6d40914aa672c6d81 -Author: Carl Worth -Date: Fri Aug 18 15:02:24 2006 -0700 - - Add notes on reporting bugs to BUGS file and move bugs listed there to ROADMAP instead. - - BUGS | 101 ++++++++++++++++++++++++++++++++++++++++---------------------- - ROADMAP | 51 ++++++++++++++++++++++++++++++++ - 2 files changed, 116 insertions(+), 36 deletions(-) - -commit 76fca1898c395a576dadffb35de0253b79b669c5 -Author: Carl Worth -Date: Fri Aug 18 14:30:01 2006 -0700 - - EXTRA_DIST: Add several files to the tar file releases, (BUGS, CODING_STYLE, ROADMAP, etc. - - Makefile.am | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit ab092a9a5db70ac16e782cf0d7d3629cc902cc1e -Author: Carl Worth -Date: Fri Aug 18 14:25:53 2006 -0700 - - ROADMAP: Remove stray conflict marker - - ROADMAP | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -commit 328024cc25cba67c939cf51da6ab6409635fa227 -Author: Carl Worth -Date: Fri Aug 18 14:23:14 2006 -0700 - - ROADMAP: Punt the AIX -lpthread bug off of the 1.2.4 roadmap. - - ROADMAP | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 3cf3d4343b6f403b55014f2d259483e1fb688741 -Author: Carl Worth -Date: Fri Aug 18 14:22:08 2006 -0700 - - Mark ft-text-vertical-layout tests as XFAIL since we'repunting these from the 1.2.4 release. - - ROADMAP | 6 +++++- - test/Makefile.am | 2 ++ - 2 files changed, 7 insertions(+), 1 deletions(-) - -commit ccdaaf7b950ea68c1149e2649e8379e564b636d8 -Author: Behdad Esfahbod -Date: Fri Aug 18 17:18:34 2006 -0400 - - [ROADMAP] Mark xlib detection problem as fixed - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0e78e7144353703cbd28aae6a67cd9ca261f1d68 -Author: Behdad Esfahbod -Date: Fri Aug 18 17:17:28 2006 -0400 - - [configure] Check for x11 pkg-config module before using AC_PATH_XTRA - Fixes bug 7491. - - configure.in | 19 +++++++++++-------- - 1 files changed, 11 insertions(+), 8 deletions(-) - -commit 0c6c0a9e0b3e8cd1caa25a2ee65b8384840295b3 -Author: Behdad Esfahbod -Date: Fri Aug 18 17:02:24 2006 -0400 - - [configure] Use _NONPKGCONFIG_LIBS if no xrender pkg-config modele is found - - configure.in | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -commit 84a9ca1835998a11b78f5989ce927166c2baa00f -Author: Carl Worth -Date: Fri Aug 18 13:07:08 2006 -0700 - - Rename ft-text-vertical-layout-truetype to ft-text-vertical-layout-type3 - - test/Makefile.am | 8 +- - test/ft-text-vertical-layout-truetype-ref.png | Bin 3933 -> 0 bytes - test/ft-text-vertical-layout-truetype-svg-ref.png | Bin 3956 -> 0 bytes - test/ft-text-vertical-layout-truetype.c | 154 --------------------- - test/ft-text-vertical-layout-type3-ref.png | Bin 0 -> 3933 bytes - test/ft-text-vertical-layout-type3-svg-ref.png | Bin 0 -> 3956 bytes - test/ft-text-vertical-layout-type3.c | 154 +++++++++++++++++++++ - 7 files changed, 157 insertions(+), 159 deletions(-) - -commit aa2260cfbbf5fd5c923409962814c6795e5ecc41 -Author: Behdad Esfahbod -Date: Fri Aug 18 15:49:38 2006 -0400 - - [ROADMAP] Add using alloca - - ROADMAP | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 9c2d9d590b218db7edd74cb1ab7e24799bbb62eb -Author: Behdad Esfahbod -Date: Fri Aug 18 12:04:16 2006 -0400 - - [test] text-rotate: Update ref images to make image pass again - after the font_options change we made in the test suite a while back. - - test/text-rotate-ref.png | Bin 12446 -> 12300 bytes - test/text-rotate-rgb24-ref.png | Bin 16508 -> 5640 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 861f1cb4f70cdbd7702eaf642b999a21ad01037d -Merge: c2d92d4... fbb1758... -Author: Carl Worth -Date: Fri Aug 18 07:56:52 2006 -0700 - - Merge branch 'jrmuizel-stroking-fixes' into cairo - - Conflicts: - - test/dash-caps-joins-ps-argb32-ref.png - test/degenerate-path-ps-argb32-ref.png - test/degenerate-path.c - -commit c2d92d4397f7ed7a8b7fdfa24a4e339ecb0d6d69 -Author: Carl Worth -Date: Fri Aug 18 06:32:43 2006 -0700 - - ROADMAP: Mark the close path bug as fixed. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit c78c0110179f8f832e9096ad5e26f5887100cd59 -Author: Carl Worth -Date: Fri Aug 18 06:31:15 2006 -0700 - - Don't set current point to (0,0) in close_path. - - The setting of current point to (0,0) is actually harmless, but it - definitely looks like a bug, (since after close_path the current point - is really the last move point). - - We don't keep track of last move point here, nor do we even need to. - So we can be consistent with _cairo_path_fixed_close_path by not - adjusting current point at all, (the subsequent move_to coming right - behind the close_path will fix up the current point). - - src/cairo-path-data.c | 6 ------ - 1 files changed, 0 insertions(+), 6 deletions(-) - -commit 53f74e59faf1af78f2f0741ccf1f23aa5dad4efc -Author: Carl Worth -Date: Fri Aug 18 06:27:45 2006 -0700 - - Fix close-path failure by adding explicit move_to after close_path. - - Besides the bug fix, this is a user-visible change since the new - move_to element after the close_path element can be seen in the - results of cairo_copy_path, so we document that here. - - We are also careful to fix up _cairo_path_fixed_line_to to defer to - _cairo_path_fixed_move_to to avoid letting the last_move_point state - get stale. This avoids introducing the second bug that is also tested - by the close-path test case. - - src/cairo-path.c | 15 +++++++++++---- - src/cairo.c | 8 ++++++++ - 2 files changed, 19 insertions(+), 4 deletions(-) - -commit 200a2d811efab2e48d6b584b9da202effaddf99f -Author: Carl Worth -Date: Fri Aug 18 06:15:02 2006 -0700 - - close-path: New test case to demonstrate corner case discovered by Tim Rowley - - The bug shows up when doing cairo_copy_path_flat for a path that has - a curve_to immediately after a close_path. When the curve is flattened - the flattener is using (0,0) as the initial point rather than the proper - close_to point. - - This test also serves to ensure a similar bug doesn't crop up when - closing a path that begins with an implicit move_to, (as from cairo_arc). - In that bug the path state may have no last-move-point and the path - is closed to (0,0). This bug is not present currently, but did appear - during the development of a fix for the bug above. - - test/.gitignore | 1 + - test/Makefile.am | 3 + - test/close-path-ps-argb32-ref.png | Bin 0 -> 311 bytes - test/close-path-ref.png | Bin 0 -> 312 bytes - test/close-path.c | 84 +++++++++++++++++++++++++++++++++++++ - 5 files changed, 88 insertions(+), 0 deletions(-) - -commit 8330f4dbd123da57850756a194ba9f7558e6f9cc -Author: Behdad Esfahbod -Date: Thu Aug 17 22:12:21 2006 -0400 - - [ROADMAP] Mark Type1 on win32 as done - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 64dd7a8203b6e393d9f763d49eea6dfb7bd13e0d -Author: Behdad Esfahbod -Date: Thu Aug 17 22:10:27 2006 -0400 - - [SVG] Make dependent on --enable-png (and increase cache-version to 2) - - ROADMAP | 2 +- - configure.in | 5 ++++- - 2 files changed, 5 insertions(+), 2 deletions(-) - -commit 6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40 -Author: Behdad Esfahbod -Date: Thu Aug 17 22:02:02 2006 -0400 - - [test] Don't use signals if signal.h is not available - - configure.in | 2 +- - test/cairo-test.c | 10 ++++++++++ - 2 files changed, 11 insertions(+), 1 deletions(-) - -commit 474daa449325850b6427fb0d3fe511ca6d7c12ac -Author: Behdad Esfahbod -Date: Thu Aug 17 22:01:33 2006 -0400 - - [PNG] Include png.h after cairoint.h to avoid macro problems (bug 7744) - - src/cairo-png.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit da1019c9138695cb838a54f8b871bbfd0e8996d7 -Author: Adrian Johnson -Date: Thu Aug 17 21:46:38 2006 -0400 - - Only use GGO_GLYPH_INDEX for truetype and opentype fonts on win32. - - src/cairo-win32-font.c | 52 +++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 43 insertions(+), 9 deletions(-) - -commit 9878a033531e6b96b5f27e69e10e90dee7440cd9 -Author: Carl Worth -Date: Thu Aug 17 17:48:40 2006 -0700 - - Add (primitive) bitmap glyph tracing to fix bug #7889 - - ROADMAP | 4 +- - src/cairo-scaled-font.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 96 insertions(+), 4 deletions(-) - -commit e4e5002c48ec9cea37b4347689f193b54439383e -Author: Carl Worth -Date: Thu Aug 17 17:45:14 2006 -0700 - - bitmap-font: Add cairo_text_path;fill to demonstrate bug #7889 - - test/bitmap-font.c | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit 0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9 -Author: Carl Worth -Date: Thu Aug 17 15:23:32 2006 -0700 - - Fix assertion failures in bitmap-font test by coercing A8 images to A1 - - There are still some problems in the resulting output: - - PDF: Rotated font ends up being blurry in final PNG (not too important) - PS and SVG: There's an incorrect offset being applied somewhere. - - src/cairo-image-surface.c | 26 ++++++++++++++++++++++++++ - src/cairo-pdf-surface.c | 9 ++++++++- - src/cairo-ps-surface.c | 9 ++++++++- - src/cairo-svg-surface.c | 10 +++++++++- - src/cairoint.h | 4 ++++ - 5 files changed, 55 insertions(+), 3 deletions(-) - -commit e8e7ccf602fdaa2f2e98743f96589f5b7b3faf17 -Author: Carl Worth -Date: Thu Aug 17 13:54:06 2006 -0700 - - Add rotation to bitmap-font to demonstrate failure of bug #7888 - - test/bitmap-font-ref.png | Bin 552 -> 950 bytes - test/bitmap-font-rgb24-ref.png | Bin 513 -> 890 bytes - test/bitmap-font.c | 11 ++++++++++- - 3 files changed, 10 insertions(+), 1 deletions(-) - -commit 751ff78ff2acba36614bae17744427c385413264 -Author: Behdad Esfahbod -Date: Thu Aug 17 20:50:24 2006 -0400 - - [ROADMAP] Add close_path behavior to 1.2.4. - - ROADMAP | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit d7b52a8f448e39518a03b92acdf5db10c5527669 -Author: Carl Worth -Date: Thu Aug 17 16:14:21 2006 -0700 - - Add long-lines to the XFAIL list, (we're not fixing it before 1.2.4) - - test/Makefile.am | 1 + - test/long-lines.c | 3 ++- - 2 files changed, 3 insertions(+), 1 deletions(-) - -commit 74f6afcdd694d679535d28835740469a08f8ef72 -Author: Carl Worth -Date: Thu Aug 17 16:11:58 2006 -0700 - - ROADMAP: Add fix of EXTEND_PAD and deprecation of FORMAT_RGB16_565 to 1.4 roadmap. - - ROADMAP | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 75b9395d0744ff77da588a101271ff765a177b27 -Author: Carl Worth -Date: Thu Aug 17 13:47:32 2006 -0700 - - ROADMAP: Note that source-clip-scale is fixed - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ccf60202d32aa6ade83231e7255ca20e38f216be -Author: Carl Worth -Date: Thu Aug 17 13:34:26 2006 -0700 - - Add SVG-specific reference image for source-clip-scale test - - The difference here is that the SVG backend uses a meta-surface for - its similar surface, so there are no rasterization/filtering - artefacts when scaling the source surface. - - test/source-clip-scale-svg-ref.png | Bin 0 -> 119 bytes - 1 files changed, 0 insertions(+), 0 deletions(-) - -commit 72e25648c4c4bc82ddd938aa4e05887a293f0d8b -Author: Vladimir Vukicevic -Date: Thu Aug 17 13:28:58 2006 -0700 - - pixman: Use pSourceClip rather than pCompositeClip when fetching - - This fixes the source-clip-scale test failures for most backends. - - pixman/src/fbcompose.c | 38 +++++++++++++++++++------------------- - 1 files changed, 19 insertions(+), 19 deletions(-) - -commit 64d2feb9f62d32f8189ea6a43420782e0c4a9373 -Author: Carl Worth -Date: Thu Aug 17 10:37:46 2006 -0700 - - Harmonize implementations of source-clip and source-clip-scale to make similarities more evident. - - test/.gitignore | 1 + - test/source-clip-ref.png | Bin 180 -> 133 bytes - test/source-clip-scale-ref.png | Bin 243 -> 161 bytes - test/source-clip-scale.c | 56 ++++++++++++++++----------------------- - test/source-clip.c | 38 +++++++++++++-------------- - 5 files changed, 42 insertions(+), 53 deletions(-) - -commit 524507c39f2f495af426a8c41c6311efe3eb633f -Author: Carl Worth -Date: Wed Aug 16 16:18:18 2006 -0700 - - Rename src-clip test to source-clip-scale - - test/Makefile.am | 3 +- - test/source-clip-scale-ref.png | Bin 0 -> 243 bytes - test/source-clip-scale.c | 100 ++++++++++++++++++++++++++++++++++++++++ - test/src-clip-ref.png | Bin 243 -> 0 bytes - test/src-clip.c | 100 ---------------------------------------- - 5 files changed, 102 insertions(+), 101 deletions(-) - -commit afb50580ce0eaefe466ff63a2e0e597f35317f6b -Author: Vladimir Vukicevic -Date: Wed Aug 16 16:04:24 2006 -0700 - - Add src-clip test case to demonstrate bug with clipping applying to a source surface. - - test/Makefile.am | 1 + - test/src-clip-ref.png | Bin 0 -> 243 bytes - test/src-clip.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 101 insertions(+), 0 deletions(-) - -commit 540db69aefd9874d71af6102c5f9572288de09be -Author: Behdad Esfahbod -Date: Thu Aug 17 15:28:47 2006 -0400 - - [ROADMAP] Add more entries for 1.2.4. - - ROADMAP | 8 +++++++- - 1 files changed, 7 insertions(+), 1 deletions(-) - -commit 6122cc85c8f71b1ba2df3ab86907768edebe1781 -Author: Behdad Esfahbod -Date: Wed Aug 16 20:07:06 2006 -0400 - - [test] Add $(LDADD) to svg2png_LDADD, to link to correct cairo - Previously it was using the cairo found in system. - - test/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 30cd66fe9a017af9ab2e5b25a13ff70b66b62d17 -Author: Behdad Esfahbod -Date: Wed Aug 16 19:43:55 2006 -0400 - - [test] Add ft-text-vertical-layout-truetype. - - test/ft-text-vertical-layout-truetype-ref.png | Bin 0 -> 3933 bytes - test/ft-text-vertical-layout-truetype-svg-ref.png | Bin 0 -> 3956 bytes - test/ft-text-vertical-layout-truetype.c | 154 +++++++++++++++++++++ - 3 files changed, 154 insertions(+), 0 deletions(-) - -commit 158e1602119d6cb1169a15b41c4fcac7edf735ab -Author: Behdad Esfahbod -Date: Wed Aug 16 19:43:41 2006 -0400 - - [.gitignore] Add truetype-tables - - test/.gitignore | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit cbcf1ddd646cfe9a9f7b993d2b69ca1faa353f45 -Author: Behdad Esfahbod -Date: Wed Aug 16 14:27:40 2006 -0400 - - [test] New torture tests ft-text-vertical-layout-truetype/type1 - that combine vertical layout with font_matrix rotation and translation. - Currently Type3 and Type1 font paths both show broken behavior. - The type1 test uses "Nimbus Sans L" as the font. - - test/.gitignore | 5 +- - test/Makefile.am | 15 ++- - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 715 -> 0 bytes - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 611 -> 0 bytes - test/ft-text-vertical-layout-ref.png | Bin 829 -> 0 bytes - test/ft-text-vertical-layout-svg-ref.png | Bin 770 -> 0 bytes - test/ft-text-vertical-layout-type1-ref.png | Bin 0 -> 3970 bytes - test/ft-text-vertical-layout-type1-svg-ref.png | Bin 0 -> 3948 bytes - test/ft-text-vertical-layout-type1.c | 154 +++++++++++++++++++++++ - test/ft-text-vertical-layout.c | 136 -------------------- - 10 files changed, 167 insertions(+), 143 deletions(-) - -commit c385922c198012c46f0c7638ce0ac36a41b9a014 -Author: Behdad Esfahbod -Date: Tue Aug 15 14:15:47 2006 -0400 - - [ROADMAP] Add two assertion failures to 1.2.4 plans - - ROADMAP | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 89008ad1c7dc7539d1b41315f18910af7e638b75 -Author: Behdad Esfahbod -Date: Tue Aug 15 13:53:08 2006 -0400 - - [FreeType] Use _cairo_ft_scaled_font_is_vertical where appropriate - instead of poking at the loadflags. - - src/cairo-ft-font.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit b7bc263842a798d657a95e539e1693372448837f -Author: Behdad Esfahbod -Date: Tue Aug 15 08:33:20 2006 -0400 - - [FreeType] Fix vertical metrics adjustment to work with non-identity shapes - - src/cairo-ft-font.c | 29 ++++++++++++++++++----------- - 1 files changed, 18 insertions(+), 11 deletions(-) - -commit d47388ad759b0a1a0869655a87d9b5eb6ae2445d -Author: Behdad Esfahbod -Date: Tue Aug 15 07:29:18 2006 -0400 - - [PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data - which should be set to device_transform_inverse, not device_transform. - Moreover, no negation is needed anymore, as that has been working around - the inverse matrix :-). - - src/cairo-ps-surface.c | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -commit 91eb56998c416cc21a1bbe2a6e66e85316ef4ddb -Author: Behdad Esfahbod -Date: Tue Aug 15 05:49:21 2006 -0400 - - [test] ft-text-vertical-layout: Update ref images - - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 720 -> 715 bytes - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 613 -> 611 bytes - test/ft-text-vertical-layout-ref.png | Bin 832 -> 829 bytes - test/ft-text-vertical-layout-svg-ref.png | Bin 778 -> 770 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit 4b3fadefc835cf627c3887a72d8cbb117d7ad5f7 -Author: Behdad Esfahbod -Date: Tue Aug 15 05:48:12 2006 -0400 - - [FreeType] Fix comment about font coordinate - - src/cairo-ft-font.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -commit db779b5121ae548753b4559bd59b269e489c6567 -Author: Behdad Esfahbod -Date: Tue Aug 15 05:27:59 2006 -0400 - - [test] ft-text-vertical-layout: Use the string "i-W" to better show vertical metrics - - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 804 -> 720 bytes - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 644 -> 613 bytes - test/ft-text-vertical-layout-ref.png | Bin 907 -> 832 bytes - test/ft-text-vertical-layout-svg-ref.png | Bin 880 -> 778 bytes - test/ft-text-vertical-layout.c | 12 ++++++------ - 5 files changed, 6 insertions(+), 6 deletions(-) - -commit f183b835b111d23e838889178aa8106ec84663b3 -Author: Behdad Esfahbod -Date: Tue Aug 15 04:59:48 2006 -0400 - - Respect font_matrix translation in _cairo_gstate_glyph_path - - src/cairo-gstate.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 17ec33aa4f33919377d241bce01e2c395b2aa1b8 -Author: Emmanuel Pacaud -Date: Mon Aug 14 20:19:15 2006 +0200 - - New test for long line bug. - - This shows at least an issue in cairo_fixed_from_double where values - > 32767 are converted to -32768, instead of being clamped to 32767. - - test/.gitignore | 1 + - test/Makefile.am | 2 + - test/long-lines-ref.png | Bin 0 -> 247 bytes - test/long-lines.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 95 insertions(+), 0 deletions(-) - -commit 09e1eb04ca06aa5c188dc3bdad0dadadaa9fe31f -Author: Behdad Esfahbod -Date: Mon Aug 14 00:15:44 2006 -0400 - - [ROADMAP] Update. Adding 1.2.4 milestone and a few other items - - ROADMAP | 11 +++++++++++ - 1 files changed, 11 insertions(+), 0 deletions(-) - -commit c802cd2d62be5fd0b11d6da10360788f20b721c6 -Author: Behdad Esfahbod -Date: Sun Aug 13 20:16:22 2006 -0400 - - [Type1] Synch comments in the encoding table - - src/cairo-type1-subset.c | 126 +++++++++++++++++++++++++++++----------------- - 1 files changed, 80 insertions(+), 46 deletions(-) - -commit e5f36a54daf376f34596a285402a3e30ee0a6a64 -Author: Pavel Roskin -Date: Sun Aug 13 05:09:28 2006 -0400 - - [Type1] Use NULL instead of 0 - - Using NULL is encouraged for pointers. While fixing that, it turned out - that the comments indicating the current index were wrong, so I'm fixing - them too. - - src/cairo-type1-subset.c | 33 ++++++++++++++++++++------------- - 1 files changed, 20 insertions(+), 13 deletions(-) - -commit fdd7518b8be1975ae8f804eba7cf4738bd957e4a -Author: Pavel Roskin -Date: Sun Aug 13 05:02:46 2006 -0400 - - Update nil surface structs to the surface struct - - Quite a few fields were missing, but all zero, so didn't matter - practically, but comments were out of synch. - - src/cairo-surface.c | 30 +++++++++++++++++++++++++++--- - 1 files changed, 27 insertions(+), 3 deletions(-) - -commit a06af40c35ba8b5d9a0688cefc7eb8bd2e31e92d -Author: Pavel Roskin -Date: Sun Aug 13 04:47:11 2006 -0400 - - [test] Fix warnings in tests on 64-bit systems - - Cast argiments from size_t to int. size_t is 64-bit on 64-bit systems, - which causes a warning. The actual data should fit 32 bit comfortably. - - test/cairo-test.c | 2 +- - test/clip-operator.c | 4 ++-- - test/operator-clear.c | 4 ++-- - test/operator-source.c | 4 ++-- - test/trap-clip.c | 4 ++-- - test/truetype-tables.c | 2 +- - test/unbounded-operator.c | 4 ++-- - 7 files changed, 12 insertions(+), 12 deletions(-) - -commit 58963a2bf962559d579a84edde9af13d9f51d014 -Author: Pavel Roskin -Date: Sun Aug 13 04:44:39 2006 -0400 - - [test] Allow overriding Valgrind flags on the command line - - Don't hardcode Valgrind flags in tests/Makefile.am so that - tests/Makefile doesn't need to be rebuilt to use different flags. Not - everybody is looking for memory leaks. - - test/Makefile.am | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit b29cc61facbe75ff3afea58308e93b86d25cb03d -Author: Pavel Roskin -Date: Sun Aug 13 04:41:43 2006 -0400 - - [pixman] Don't cast pointers to integers - - This causes warnings on 64-bit platforms that may indicate very serious - problems. Fortunately, not in this case. - - pixman/src/fbmmx.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit abd16e47d6331bd3811c908e524b4dcb6bd23bf0 -Author: Jens Granseuer -Date: Fri Aug 11 13:06:37 2006 -0400 - - [configure] Let env-vars override backend CFLAGS/LIBS (bug 7838) - In particular, $png_REQUIRES can be used now to set the name of the pkg-config - module that contains libpng. - - configure.in | 31 ++++++++++++++++++------------- - 1 files changed, 18 insertions(+), 13 deletions(-) - -commit 97524a8fdb899de1ae4a3e920fb7bda6d76c5571 -Author: Jens Granseuer -Date: Fri Aug 11 11:51:10 2006 -0400 - - [warnings] Only use supported compiler warning flags - Also cache the result. - - configure.in | 53 +++++++++++++++++++++++++++++++++++++---------------- - 1 files changed, 37 insertions(+), 16 deletions(-) - -commit 22eee1db000ac03a8cbd0b0bdb689b6d3a127737 -Author: Kjartan Maraas -Date: Fri Aug 11 11:18:24 2006 -0400 - - [warnings] Fixes for sparse. This fixes a lot of instances of 0 vs NULL - - pixman/src/fbcompose.c | 20 ++++++++++---------- - pixman/src/icimage.c | 22 +++++++++++----------- - pixman/src/icutil.c | 2 +- - 3 files changed, 22 insertions(+), 22 deletions(-) - -commit ab3b400bda61a8fc48bb74dc3134237ddce4a81f -Author: Behdad Esfahbod -Date: Fri Aug 11 00:43:24 2006 -0400 - - [Makefile.am] Move ChangeLog creation voodoo to ChangeLog.mk - - ChangeLog.mk | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Makefile.am | 83 +--------------------------------------------------------- - 2 files changed, 83 insertions(+), 82 deletions(-) - -commit affc9c71acc1ea206dee0a4056c4f5b307fc7f38 -Author: Behdad Esfahbod -Date: Fri Aug 11 00:24:01 2006 -0400 - - [Makefile.am] Add $(AM_MAKEFLAGS) to recursive make invocations - - Makefile.am | 21 ++++++++++----------- - doc/Makefile.am | 2 +- - test/Makefile.am | 14 +++++++------- - 3 files changed, 18 insertions(+), 19 deletions(-) - -commit c04ccc95fa3cd4272889b1e66e4de5e1bef53ae0 -Author: Behdad Esfahbod -Date: Thu Aug 10 23:49:50 2006 -0400 - - [ChangeLog] Make ChangeLog creation faster by caching partial results - The ChangeLog.pre-* files once generated, cannot be outdated and don't need - update anymore, but the main ChangeLog needs update everytime a git operation - is performed (commit, checkout, etc.) Previously, we were forcing a ChangeLog - recreation by making it a phony target. Now, we break it into two parts: One - up to the latest tag (as returned by git-describe), and another from there. - The former is, again, up-to-date when it exists. The latter, we make it - depend on .git. And since the latter is pretty short anyway, you get a very - first regeneration of it when you change your repo (and that only happens - during 'make dist' by the way.) - - Makefile.am | 41 ++++++++++++++++++++++++++++++++--------- - 1 files changed, 32 insertions(+), 9 deletions(-) - -commit 9b5c5b75701e8f8d5270d248c0eaac07aa5eb52a -Author: Behdad Esfahbod -Date: Thu Aug 10 20:41:05 2006 -0400 - - [ChangeLog] Remove 'fmt' formatting of the ChangeLogs - We assume that people write wrapped commit messages, which is true these days - but was not back in the CVS days. - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 91a59251806c3836cbc58b009aae8b016feab5a4 -Author: Behdad Esfahbod -Date: Thu Aug 10 20:36:16 2006 -0400 - - Create multiple ChangeLog files segmented around major releases - For an imaginary cairo-3.6.4 version, we now will generate the following - ChangeLog files: - - ChangeLog - ChangeLog.pre-3.4 - ChangeLog.pre-3.2 - ChangeLog.pre-3.0 - ChangeLog.pre-2.0 - ChangeLog.pre-1.0 - - Makefile.am | 64 ++++++++++++++++++++++++++++++++++++++++++++++------------ - 1 files changed, 50 insertions(+), 14 deletions(-) - -commit ee885c76af0c715ffd316d4c7cc1b61db46af1ae -Author: Behdad Esfahbod -Date: Thu Aug 10 18:54:18 2006 -0400 - - [test] Update EXTRA_DIST after beos_bitmap -> beos-bitmap change - - test/Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 915448e50f18d518c065dbde6d8857e4c91d2a51 -Author: Behdad Esfahbod -Date: Thu Aug 10 15:35:36 2006 -0400 - - [test] Add target check-ref-dups that lists reference images having duplicate sha1sum hash - This is useful to review every once in a while to drop duplicate images that - can be dropped. For example, if there are two identical images one named - some-test-svg-rgb24-ref.png and other some-test-svg-argb32-ref.png, those two - can be replaced with some-test-svg-ref.png. - - test/.gitignore | 1 + - test/Makefile.am | 14 +++++++------- - 2 files changed, 8 insertions(+), 7 deletions(-) - -commit cecf396f6fe8424ec80f6f143df3622b92a5522e -Author: Behdad Esfahbod -Date: Thu Aug 10 15:11:46 2006 -0400 - - [test] Point out to the test log file on failures - - test/cairo-test.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 15074cbb04498b59af4f3d9d3f2e99a2113e6730 -Author: Behdad Esfahbod -Date: Thu Aug 10 14:58:33 2006 -0400 - - [test] Behave better if no ref image was found for a test - - test/cairo-test.c | 30 ++++++++++++++++++++---------- - 1 files changed, 20 insertions(+), 10 deletions(-) - -commit 67ff765e30af538a7955267c046af446dd8844ed -Author: Behdad Esfahbod -Date: Thu Aug 10 13:53:24 2006 -0400 - - [test] Rename beos_bitmap target to beos-bitmap. Same for directfb-bitmap. - - test/cairo-test.c | 6 +++--- - test/mask-beos-bitmap-argb32-ref.png | Bin 0 -> 87641 bytes - test/mask-beos-bitmap-rgb24-ref.png | Bin 0 -> 71028 bytes - test/mask-beos_bitmap-argb32-ref.png | Bin 87641 -> 0 bytes - test/mask-beos_bitmap-rgb24-ref.png | Bin 71028 -> 0 bytes - test/set-source-beos-bitmap-rgb24-ref.png | Bin 0 -> 124 bytes - test/set-source-beos_bitmap-rgb24-ref.png | Bin 124 -> 0 bytes - test/trap-clip-beos-bitmap-rgb24-ref.png | Bin 0 -> 63088 bytes - test/trap-clip-beos_bitmap-rgb24-ref.png | Bin 63088 -> 0 bytes - 9 files changed, 3 insertions(+), 3 deletions(-) - -commit c6869b741578be8d93053c8313f71e87061d0202 -Author: Behdad Esfahbod -Date: Thu Aug 10 13:21:57 2006 -0400 - - [ROADMAP] Add generating EPS. - - ROADMAP | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -commit 1af80b70c08654faeb9c6d041d37ca10d6008fe5 -Author: Behdad Esfahbod -Date: Thu Aug 10 13:10:24 2006 -0400 - - Test for libz only once and reuse result for PS and PDF - This causes configure to check for libz even if PS/PDF are disabled - or their results is already cached. But that's not much of a problem - as if the cache is enabled, libz results are cached too. - - configure.in | 16 +++++++--------- - 1 files changed, 7 insertions(+), 9 deletions(-) - -commit d1520a99d4f9be9206cfcb5febb606eaeb4ccaa9 -Author: Behdad Esfahbod -Date: Thu Aug 10 13:05:26 2006 -0400 - - Remove the ft_load_sfnt_table check from PS/PDF/SVG backends - and make sure that _cairo_ft_load_truetype_table returns UNSUPPORTED - if the version of FreeType used doesn't support FT_Load_Sfnt_Table. - - configure.in | 16 +--------------- - src/cairo-ft-font.c | 3 +++ - 2 files changed, 4 insertions(+), 15 deletions(-) - -commit aea83b908d020e26732753830bb3056e6702a774 -Author: Behdad Esfahbod -Date: Thu Aug 10 12:47:47 2006 -0400 - - Fix typos in configure.in for PS/PDF/SVG backends - - configure.in | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -commit dc8da1ca06971677e203718db1429f82fe3f05bd -Author: Behdad Esfahbod -Date: Thu Aug 10 12:47:11 2006 -0400 - - Save configure cache after checking all backends - This makes sure that backend enabling results are cached even - if a later test in configure fails. - - configure.in | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -commit 6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e -Author: Behdad Esfahbod -Date: Thu Aug 10 12:45:35 2006 -0400 - - Don't link to -lm unconditionally in cairo.pc - Reuse $LIBM results. - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 24374ad61379273945cda913884b562513d86ed2 -Author: Behdad Esfahbod -Date: Thu Aug 10 12:44:35 2006 -0400 - - Implement configure cache versioning for backend enabling results - such that removing config.cache is not needed as frequently as it - is currently. We just detect and stale the cache results for our - own backends. If the user installs missing libraries, they still - need to remove the cache manually. - - Note that everytime a change is made to configure.in and may change - the results of at least one CAIRO_BACKEND_ENABLE call, the - cairo_cache_version number should be increased. - - configure.in | 16 +++++++++++++--- - 1 files changed, 13 insertions(+), 3 deletions(-) - -commit c3c706873ef6a0e1318b1d4b4d4b6841758ea18d -Author: Carl Worth -Date: Tue Aug 8 16:56:20 2006 -0700 - - ROADMAP: Remove 1.2.2 stuff now that that release is out the door - - ROADMAP | 29 +---------------------------- - 1 files changed, 1 insertions(+), 28 deletions(-) - -commit 27842ff06f0f4cb764516e91ad51c8a92078e0fa -Author: Carl Worth -Date: Tue Aug 8 16:51:48 2006 -0700 - - NEWS: Fix some misspellings - - NEWS | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit c96e1b6d8ff06eba7b09b5ff3c60fe09d56eb80c -Author: Carl Worth -Date: Tue Aug 8 16:32:26 2006 -0700 - - README: Update backend list. - - PDF, PS, and SVG are no longer experimental. And DirectFB and BeOS now exist as well. - - README | 5 +++-- - 1 files changed, 3 insertions(+), 2 deletions(-) - -commit 38b42c50252198afac2480a24085f01722d1b471 -Author: Carl Worth -Date: Tue Aug 8 16:23:07 2006 -0700 - - Increment CAIRO_VERSION to 1.2.3 after making the 1.2.2 release - - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ac1c748868bdf4ca6fd195b184ec90827f6e8c94 -Author: Carl Worth -Date: Tue Aug 8 16:06:57 2006 -0700 - - Update version to 1.2.2 and libtool version to 11:1:9. - - configure.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6b3e674211f12e1a30a23c2698f314f6317bd54a -Author: Carl Worth -Date: Tue Aug 8 16:04:54 2006 -0700 - - NEWS: Add notes for cairo 1.2.2 - - NEWS | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 157 insertions(+), 0 deletions(-) - -commit 5b2c84549f72d449d5c44034e15babbd29d290e8 -Author: Carl Worth -Date: Tue Aug 8 14:30:20 2006 -0700 - - RELEASING: Add --stat option to recommended git-log command - - RELEASING | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit e3c7840d2283a8e30242c9749e991f02e93b878a -Author: Carl Worth -Date: Tue Aug 8 14:29:29 2006 -0700 - - Fix EXTRA_DIST so that 'make distcheck' works again - - test/Makefile.am | 56 ++++++++++++----------------------------------------- - 1 files changed, 13 insertions(+), 43 deletions(-) - -commit d5d529c0f349962f8c96e2005d67e0c3dd57fbc9 -Author: Carl Worth -Date: Tue Aug 8 14:28:48 2006 -0700 - - gtk-doc template file churn - - doc/public/tmpl/cairo-font-options.sgml | 134 +++++++++ - doc/public/tmpl/cairo-font.sgml | 67 +++++ - doc/public/tmpl/cairo-ft.sgml | 45 +++ - doc/public/tmpl/cairo-image.sgml | 69 +++++ - doc/public/tmpl/cairo-matrix.sgml | 119 ++++++++ - doc/public/tmpl/cairo-paths.sgml | 194 +++++++++++++ - doc/public/tmpl/cairo-pattern.sgml | 182 ++++++++++++ - doc/public/tmpl/cairo-pdf.sgml | 28 ++- - doc/public/tmpl/cairo-png.sgml | 40 +++ - doc/public/tmpl/cairo-ps.sgml | 53 ++++- - doc/public/tmpl/cairo-scaled-font.sgml | 113 ++++++++ - doc/public/tmpl/cairo-status.sgml | 16 + - doc/public/tmpl/cairo-surface.sgml | 170 +++++++++++ - doc/public/tmpl/cairo-svg.sgml | 53 ++++- - doc/public/tmpl/cairo-text.sgml | 133 +++++++++- - doc/public/tmpl/cairo-transforms.sgml | 104 +++++++ - doc/public/tmpl/cairo-version.sgml | 37 +++ - doc/public/tmpl/cairo-win32-fonts.sgml | 45 +++ - doc/public/tmpl/cairo-win32.sgml | 29 ++ - doc/public/tmpl/cairo-xlib-xrender.sgml | 14 + - doc/public/tmpl/cairo-xlib.sgml | 110 ++++++++ - doc/public/tmpl/cairo.sgml | 465 +++++++++++++++++++++++++++++++ - 22 files changed, 2216 insertions(+), 4 deletions(-) - -commit ca99478d4309ee66bfd0196d3d53991a46fa8367 -Author: Carl Worth -Date: Tue Aug 8 12:48:56 2006 -0700 - - Fix some memory leaks in a few of the tests. - - test/push-group.c | 2 ++ - test/text-antialias-gray.c | 2 ++ - test/text-antialias-none.c | 2 ++ - test/zero-alpha.c | 2 ++ - 4 files changed, 8 insertions(+), 0 deletions(-) - -commit d6e204b9d58069ba34969e6f23cf0bdb4c73b9e1 -Author: Carl Worth -Date: Tue Aug 8 12:48:20 2006 -0700 - - Add a variation of an existing valgrind suppression - - test/.valgrind-suppressions | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -commit 16c18aea52f668caf9cd0b9774f8fa209468662f -Author: Behdad Esfahbod -Date: Tue Aug 8 15:30:56 2006 -0400 - - [PDF] Fix leak: free glyphs - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit ac4922bd07db7a513b6dbe5443e95221d7827f79 -Author: Behdad Esfahbod -Date: Tue Aug 8 15:27:21 2006 -0400 - - [TrueType] Zero out padding memory in generated TrueType subset - to make the output deterministic and fix valgrind errors. - - src/cairo-truetype-subset.c | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 356e646dc66f3df0d97e2c26e9328650df745c1e -Author: Behdad Esfahbod -Date: Tue Aug 8 13:39:17 2006 -0400 - - [FreeType] Unset and set to FC_RGBA_NONE the FC_RGBA attribute on pattern - - if we don't want it. This stuff is tricky, but I hope to explain: In your - fontconfig configuration, you may match on "font", or on "pattern". Turning - subpixel on typically looks like: - - - - unknown - - rgb - - - This works good enough, and if you set to ANTIALIAS_GRAY, this will not - override that. Now one may forget to match on "font" target, or intentionally - match on the pattern. That happens before cairo font options are substituted - in the pattern. So, to give a hint of subpixel in your config file, you can - write: - - - rgb - - - You don't really need to check for current values, as FcConfigSubstitute is - run before merging cairo_font_options_t in. What this patch does, is to reset - pattern's rgba property if the font options explicitly ask for ANTIALIAS_GRAY. - This is the only place in cairo-ft-font.c that we use FcPatternDel, so I - thought some explanation is needed. - - src/cairo-ft-font.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit db06681b487873788b51a6766894fc619eb8d8f2 -Author: Alfred Peng -Date: Tue Aug 8 10:57:33 2006 -0700 - - Fix leaks in failure paths in pixman gradient creation - - pixman/src/icimage.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 6ff531c1823421ff60d084f94e7221cfb1d3c9b7 -Author: Behdad Esfahbod -Date: Tue Aug 8 13:13:18 2006 -0400 - - [TrueType] Add comment block describing why we only use int16_t - - src/cairo-truetype-subset-private.h | 27 +++++++++++++++++++-------- - 1 files changed, 19 insertions(+), 8 deletions(-) - -commit 23f388861803ca18746da2573424014c333fb63b -Author: Behdad Esfahbod -Date: Tue Aug 8 07:38:34 2006 -0400 - - [TrueType] More leak fixes - - src/cairo-truetype-subset.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit 519bd3d3e972a88adea5bcf6ea7f582fe69c305c -Author: Behdad Esfahbod -Date: Tue Aug 8 07:24:01 2006 -0400 - - [TrueType] Fix leaks. - - src/cairo-truetype-subset.c | 22 ++++++++++++++-------- - 1 files changed, 14 insertions(+), 8 deletions(-) - -commit 501e5cc8839e104ec21a5aba61cff3580d34f26b -Author: Behdad Esfahbod -Date: Tue Aug 8 06:12:13 2006 -0400 - - Restructure subpixel_order handling such that the code doesn't look suspicious! - Shouldn't make /any/ difference at all in any case. - - src/cairo-ft-font.c | 15 ++++++++++----- - 1 files changed, 10 insertions(+), 5 deletions(-) - -commit 89fc22de871d61517a4955875f12326b4dc3389a -Author: Behdad Esfahbod -Date: Tue Aug 8 06:08:53 2006 -0400 - - [fontconfig] Set FC_RGBA_NONE on the pattern if we don't want subpixel. - - otherwise, it looks like "I don't care" and fontconfig configuration is - allowed to decide to turn subpixel on. This fixes the bug that subpixel - colors where showing up in fallback images in PS/PDF/SVG backends, observed - in the test fallback-resolution. - - src/cairo-ft-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 1f854fcf32e6909e4c52779f093132d8c749c285 -Author: Behdad Esfahbod -Date: Tue Aug 8 06:04:01 2006 -0400 - - Set antialiasing to gray in default font options for PS/PDF/SVG - - This only affects the image fallback in those backends, and avoids getting - colored pixels there if user's fontconfig configuration turns subpixel on. - This doesn't quite fix that problem though, more changes are needed/coming. - - src/cairo-pdf-surface.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-svg-surface.c | 7 ++++--- - 3 files changed, 6 insertions(+), 3 deletions(-) - -commit 2d483e0785b18a8bb51f5b1c1a0267029f68a64a -Author: Carl Worth -Date: Tue Aug 8 02:24:48 2006 -0700 - - test-paginated: Fix memory leak within _test_paginated_surface_create_for_data - - src/test-paginated-surface.c | 12 +++++++++++- - 1 files changed, 11 insertions(+), 1 deletions(-) - -commit cb5edb6c35f7c80d1f91172b98f25ee33f21bce9 -Author: Carl Worth -Date: Tue Aug 8 01:38:24 2006 -0700 - - Eliminate warning due to the test suite's private 'FLATTENEND' format value - - test/cairo-test.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -commit f089a07679535959fe7b12acb0550ff16d560788 -Author: Behdad Esfahbod -Date: Tue Aug 8 04:36:13 2006 -0400 - - Fix misplaced volatile keyword - - test/cairo-test.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 9d542a29cba71fe4b4067fa9a9c0fe98a7d8a7a8 -Author: Carl Worth -Date: Tue Aug 8 01:30:40 2006 -0700 - - Disable warning options that are not available in gcc 3.3.5 at least. - - We'll want to turn these back on eventually with a nice conditional check on the - appropriate version of gcc. - - configure.in | 13 +++++++++---- - 1 files changed, 9 insertions(+), 4 deletions(-) - -commit c3b912d7db34c5881cf14725b7d29266cbf24877 -Author: Carl Worth -Date: Tue Aug 8 01:16:49 2006 -0700 - - Eliminate most compiler warnings from the test suite - - src/cairo-paginated-surface.c | 2 +- - test/bitmap-font.c | 2 +- - test/buffer-diff.c | 2 +- - test/cairo-test.c | 16 ++++++++++------ - test/cairo-test.h | 3 ++- - test/clip-operator.c | 2 +- - test/create-for-stream.c | 4 +++- - test/degenerate-path.c | 2 +- - test/fallback-resolution.c | 2 +- - test/mask.c | 2 +- - test/multi-page.c | 2 +- - test/operator-clear.c | 2 +- - test/operator-source.c | 2 +- - test/pdf-features.c | 4 ++-- - test/ps-features.c | 4 ++-- - test/push-group.c | 1 - - test/read-png.c | 4 ++-- - test/svg-surface.c | 2 ++ - test/trap-clip.c | 2 +- - test/unbounded-operator.c | 2 +- - test/write-png.c | 2 +- - 21 files changed, 36 insertions(+), 28 deletions(-) - -commit c7d11ad2b4778cb7399eae990a410cb72568af11 -Author: Carl Worth -Date: Tue Aug 8 00:43:09 2006 -0700 - - Remove stale SVG-specific reference images for pixman-rotate test - - test/pixman-rotate-svg-argb32-ref.png | Bin 258 -> 0 bytes - test/pixman-rotate-svg-rgb24-ref.png | Bin 358 -> 0 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 401f0ce3c444e263f03055174791e993e6270c39 -Merge: 77fd0ef... 02b54ca... -Author: Carl Worth -Date: Tue Aug 8 00:19:51 2006 -0700 - - Merge branch 'surface-font-options' into cairo - -commit 77fd0efa9a055c13e685f4c6b01597ae67a36fb7 -Author: Behdad Esfahbod -Date: Tue Aug 8 02:58:50 2006 -0400 - - Fix few remaining compiler warnings, revealed by -O3 - - pixman/src/ictri.c | 6 +++--- - src/cairo-lzw.c | 11 +++++------ - src/cairo-type1-subset.c | 8 ++++---- - 3 files changed, 12 insertions(+), 13 deletions(-) - -commit 02b54ca6200b3e5a914b293dd4a0d56f432a5a9b -Author: Carl Worth -Date: Wed Aug 2 11:18:14 2006 -0400 - - Improve docs for cairo_surface_create_similar() - - src/cairo-surface.c | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit 9136c217703d1d6aab1742f522aa0279517fb36a -Author: Behdad Esfahbod -Date: Tue Aug 1 20:40:54 2006 -0400 - - Update reference images, mostly PDF and SVG - Also replace some SVG ref images for rgb24 and argb32 with a single - one where the two have been similar. - - test/caps-joins-alpha-svg-argb32-ref.png | Bin 2454 -> 0 bytes - test/caps-joins-alpha-svg-ref.png | Bin 0 -> 2454 bytes - test/caps-joins-alpha-svg-rgb24-ref.png | Bin 2454 -> 0 bytes - ...osite-integer-translate-over-svg-argb32-ref.png | Bin 15465 -> 0 bytes - test/composite-integer-translate-over-svg-ref.png | Bin 0 -> 15465 bytes - ...posite-integer-translate-over-svg-rgb24-ref.png | Bin 15465 -> 0 bytes - test/fill-and-stroke-alpha-svg-argb32-ref.png | Bin 509 -> 0 bytes - test/fill-and-stroke-alpha-svg-ref.png | Bin 0 -> 509 bytes - test/fill-and-stroke-alpha-svg-rgb24-ref.png | Bin 509 -> 0 bytes - test/font-matrix-translation-svg-ref.png | Bin 0 -> 970 bytes - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 725 -> 804 bytes - test/ft-text-vertical-layout-ref.png | Bin 907 -> 907 bytes - test/ft-text-vertical-layout-svg-argb32-ref.png | Bin 799 -> 0 bytes - test/ft-text-vertical-layout-svg-ref.png | Bin 0 -> 880 bytes - test/ft-text-vertical-layout-svg-rgb24-ref.png | Bin 808 -> 0 bytes - test/glyph-cache-pressure-pdf-argb32-ref.png | Bin 2879 -> 0 bytes - test/glyph-cache-pressure-svg-argb32-ref.png | Bin 3635 -> 0 bytes - test/glyph-cache-pressure-svg-ref.png | Bin 0 -> 3165 bytes - test/glyph-cache-pressure-svg-rgb24-ref.png | Bin 3165 -> 0 bytes - test/linear-gradient-svg-argb32-ref.png | Bin 1000 -> 0 bytes - test/linear-gradient-svg-ref.png | Bin 0 -> 1000 bytes - test/linear-gradient-svg-rgb24-ref.png | Bin 1000 -> 0 bytes - test/paint-source-alpha-svg-argb32-ref.png | Bin 505 -> 0 bytes - test/paint-source-alpha-svg-ref.png | Bin 0 -> 505 bytes - test/paint-source-alpha-svg-rgb24-ref.png | Bin 505 -> 0 bytes - test/paint-with-alpha-svg-argb32-ref.png | Bin 516 -> 0 bytes - test/paint-with-alpha-svg-ref.png | Bin 0 -> 516 bytes - test/paint-with-alpha-svg-rgb24-ref.png | Bin 516 -> 0 bytes - test/pixman-rotate-svg-argb32-ref.png | Bin 0 -> 258 bytes - test/pixman-rotate-svg-rgb24-ref.png | Bin 0 -> 358 bytes - test/rectangle-rounding-error-ps-argb32-ref.png | Bin 258 -> 0 bytes - test/select-font-face-pdf-argb32-ref.png | Bin 2237 -> 0 bytes - test/select-font-face-ps-argb32-ref.png | Bin 1443 -> 1333 bytes - test/select-font-face-ref.png | Bin 2481 -> 2473 bytes - test/select-font-face-svg-argb32-ref.png | Bin 3064 -> 0 bytes - test/select-font-face-svg-ref.png | Bin 0 -> 2430 bytes - test/select-font-face-svg-rgb24-ref.png | Bin 3064 -> 0 bytes - test/show-text-current-point-pdf-argb32-ref.png | Bin 2157 -> 0 bytes - test/show-text-current-point-svg-argb32-ref.png | Bin 4236 -> 0 bytes - test/show-text-current-point-svg-ref.png | Bin 0 -> 2398 bytes - test/show-text-current-point-svg-rgb24-ref.png | Bin 2398 -> 0 bytes - test/text-antialias-gray-pdf-argb32-ref.png | Bin 950 -> 0 bytes - test/text-antialias-gray-ps-argb32-ref.png | Bin 310 -> 0 bytes - test/text-antialias-gray-svg-argb32-ref.png | Bin 1077 -> 0 bytes - test/text-antialias-gray-svg-rgb24-ref.png | Bin 1033 -> 0 bytes - test/text-antialias-none-pdf-argb32-ref.png | Bin 950 -> 0 bytes - test/text-antialias-none-ps-argb32-ref.png | Bin 310 -> 0 bytes - test/text-antialias-none-svg-argb32-ref.png | Bin 1077 -> 0 bytes - test/text-antialias-none-svg-rgb24-ref.png | Bin 1033 -> 0 bytes - test/text-antialias-subpixel-pdf-argb32-ref.png | Bin 950 -> 0 bytes - test/text-antialias-subpixel-ps-argb32-ref.png | Bin 310 -> 0 bytes - test/text-antialias-subpixel-svg-argb32-ref.png | Bin 1077 -> 0 bytes - test/text-antialias-subpixel-svg-rgb24-ref.png | Bin 1033 -> 0 bytes - test/text-pattern-pdf-argb32-ref.png | Bin 1632 -> 0 bytes - test/text-pattern-ps-argb32-ref.png | Bin 1681 -> 0 bytes - test/text-pattern-svg-argb32-ref.png | Bin 1708 -> 1749 bytes - test/unantialiased-shapes-ps-argb32-ref.png | Bin 4076 -> 0 bytes - test/unantialiased-shapes-svg-argb32-ref.png | Bin 19689 -> 0 bytes - test/unantialiased-shapes-svg-rgb24-ref.png | Bin 19689 -> 0 bytes - 59 files changed, 0 insertions(+), 0 deletions(-) - -commit 56791ab31d484452cd1ddefd653590095d9f6191 -Author: Behdad Esfahbod -Date: Tue Aug 8 02:46:38 2006 -0400 - - Make "make html" not trigger test reruns - "make index.html" can still be used to force up-to-date test results, - causing test reruns if necessary. - - test/Makefile.am | 11 ++++++----- - 1 files changed, 6 insertions(+), 5 deletions(-) - -commit caba7f6bda9ba7c1a0738f3b34996c50bde60697 -Author: Behdad Esfahbod -Date: Tue Aug 8 02:17:43 2006 -0400 - - Document a few more functions - - cairo_show_page - cairo_copy_page - cairo_in_stroke - cairo_in_fill - - src/cairo.c | 42 ++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 42 insertions(+), 0 deletions(-) - -commit 789785cd357de14af23a4d2ae8ca49c4838426b9 -Author: Carl Worth -Date: Mon Aug 7 11:58:35 2006 -0700 - - Document CAIRO_FORMAT_RGB16_565 as deprecated. - - src/cairo.h | 13 ++++++++++--- - 1 files changed, 10 insertions(+), 3 deletions(-) - -commit fdc805a52949bf3b040bfef57d170025010816c6 -Author: Behdad Esfahbod -Date: Mon Aug 7 22:28:59 2006 -0400 - - More doc syntax update - - src/cairo-scaled-font.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit bbc9a1290a964edf50f571be8766b38df10adac7 -Author: Behdad Esfahbod -Date: Mon Aug 7 22:27:15 2006 -0400 - - Update doc syntax - Annoying, but a function doc should have a body, not only "Returns", or - gtk-doc will not pick it up. - - src/cairo-font.c | 5 ++++- - src/cairo-pattern.c | 5 ++++- - src/cairo-scaled-font.c | 5 ++++- - src/cairo-surface.c | 5 ++++- - 4 files changed, 16 insertions(+), 4 deletions(-) - -commit fef0251d15814ce9f135b548579e51c6e4a0653d -Author: Behdad Esfahbod -Date: Mon Aug 7 22:15:15 2006 -0400 - - Add cairo-truetype-subset-private.h to list of ignored headers - - doc/public/Makefile.am | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -commit c2ea56e5e075f9e75350b3c54956a70e6fb9a58c -Author: Behdad Esfahbod -Date: Mon Aug 7 21:37:16 2006 -0400 - - Add test truetype-tables that checks sizeof truetype tables - - test/Makefile.am | 1 + - test/truetype-tables.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 60 insertions(+), 0 deletions(-) - -commit 50be7951c981468a3a2acf2cd77931a46ca1e824 -Author: Behdad Esfahbod -Date: Mon Aug 7 21:23:08 2006 -0400 - - Split the TrueType table definitions into a private header file - such that we can test the struct sizes in a test. - - src/Makefile.am | 1 + - src/cairo-truetype-subset-private.h | 159 +++++++++++++++++++++++++++++++++++ - src/cairo-truetype-subset.c | 126 +-------------------------- - 3 files changed, 165 insertions(+), 121 deletions(-) - -commit ec895202e008356492ae0c9e40c9f40c6bf8cbb3 -Author: Behdad Esfahbod -Date: Mon Aug 7 21:13:48 2006 -0400 - - Remove the __attribute__ ((packed)) and the need for it - as it's not portable and lack of it could seriously break the truetype - subsetting code. Now, instead of using int32_t and int64_t, we use - multiple int16_t items, to avoid any alignments. Fortunately, we are - not using any of the fields involved, so no code changes necessary. - - src/cairo-truetype-subset.c | 58 +++++++++++++++++++++++++----------------- - 1 files changed, 34 insertions(+), 24 deletions(-) - -commit 20c3ff96de05365ee65301ccd3c43e7bcb19f49b -Author: Carl Worth -Date: Mon Aug 7 15:18:38 2006 -0700 - - Fix some signed/unsigned comparison warnings that cropped up during the warnings-cleanup branch - - src/cairo-meta-surface-private.h | 2 +- - src/cairo-pdf-surface.c | 6 +++--- - src/cairo-ps-surface.c | 5 ++--- - src/cairo-scaled-font-subsets-private.h | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-truetype-subset.c | 14 +++++++------- - src/cairo-type1-subset.c | 4 ++-- - 7 files changed, 17 insertions(+), 18 deletions(-) - -commit 959b85e98c8a0f546c9117da83f84c99ed00370f -Merge: f1c70a0... 7ee94c0... -Author: Carl Worth -Date: Mon Aug 7 15:06:47 2006 -0700 - - Merge branch 'warnings-cleanup' into cairo - - Conflicts: - - src/cairo-font-subset.c - -commit f1c70a01391705a22dd882f2a88c6dffbc08f0fe -Author: Behdad Esfahbod -Date: Mon Aug 7 17:32:02 2006 -0400 - - Mark x86_64 subsetting as fixed in ROADMAP. - - ROADMAP | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 7ee94c0285b0f7352506622d16aff9339ba65d0c -Author: Carl Worth -Date: Mon Jul 31 12:03:40 2006 -0700 - - Squelch an annoying -Wswitch-enum warning by not using switch - - src/cairo-pattern.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit 43b579d757ded66f71da8a0e215abd7bccdfd695 -Author: Carl Worth -Date: Mon Jul 31 11:47:45 2006 -0700 - - Add -Wswitch-enum compiler flag and fix all trivial warnings - - configure.in | 2 +- - pixman/src/fbpict.c | 11 +++++++++++ - src/cairo-ft-font.c | 5 +++++ - src/cairo-image-surface.c | 9 +++++++++ - src/cairo-pattern.c | 2 +- - src/cairo-pdf-surface.c | 6 +++++- - src/cairo-xlib-surface.c | 12 ++++++++++++ - 7 files changed, 44 insertions(+), 3 deletions(-) - -commit d1f9bef30ea7268fee74af50c0e9325e1ec0929c -Author: Behdad Esfahbod -Date: Mon Aug 7 14:24:32 2006 -0700 - - Add -Wunsafe-loop-optimizations compiler flag and fix all warnings - - configure.in | 1 + - pixman/src/fbmmx.c | 8 ++++---- - src/cairo-xlib-surface.c | 2 +- - 3 files changed, 6 insertions(+), 5 deletions(-) - -commit 744ef3bf698f9109e82244c5889d0d809b2df70c -Author: Behdad Esfahbod -Date: Mon Aug 7 13:47:01 2006 -0700 - - Add several compiler warning flags (no code changes needed) - - The flags added here are as follows: - - -Werror-implicit-function-declaration Wstrict-aliasing=2 - -Wwrite-strings Winit-self Wpacked Wmissing-format-attribute - -Wdeclaration-after-statement - - configure.in | 8 +++++--- - 1 files changed, 5 insertions(+), 3 deletions(-) - -commit 00711022089936e08b8651591629ca344a3fa71e -Author: Behdad Esfahbod -Date: Mon Aug 7 13:13:33 2006 -0700 - - Add -Wwrite-strings compiler flag and fix all warnings - - configure.in | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-xlib-surface.c | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) - -commit 9ae66174e774b57f16ad791452ed44efc2770a59 -Author: Carl Worth -Date: Fri Aug 4 16:06:59 2006 -0700 - - Fix bug 7294 by adding pixman BGR formats and internal cairo BGR formats. - - This approach to fixing the bug is valid since there is code in pixman - for rendering to BGR images, (which is why cairo 1.0 worked with BGR X - servers for example). But, since we don't want to advertise additional - image formats we implement this through a new cairo_internal_format_t. - - This is rather fragile since we don't want to leak any internal formats - nor do we ever want an internal format to be used somewhere a real - format is expected, (and trigger a CAIRO_FORMAT_VALID assertion failure). - More comments than code are added here to help compensate for the - fragility and to give some guidance in fixing this mess in a better way - in the future. - - pixman/src/icformat.c | 12 +++++++++ - pixman/src/pixman.h | 4 ++- - src/cairo-image-surface.c | 48 ++++++++++++++++++++++++++++-------- - src/cairo-xlib-surface.c | 3 ++ - src/cairoint.h | 59 +++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 114 insertions(+), 12 deletions(-) - -commit f4b12e497b7ac282b2f6831b8fb68deebc412e60 -Author: Adrian Johnson -Date: Mon Aug 7 11:07:08 2006 -0700 - - Make truetype subsetting work on x86_64 - - This fixes the bug reported against GTK+ here: - http://bugzilla.gnome.org/show_bug.cgi?id=349826 - - ROADMAP | 2 +- - src/cairo-truetype-subset.c | 195 ++++++++++++++++++++++--------------------- - 2 files changed, 99 insertions(+), 98 deletions(-) - -commit 7724c575b028140fd671d4ef853096a24112146f -Author: Declan Naughton -Date: Mon Aug 7 10:33:15 2006 -0700 - - Fix typos in internal documentation. - - src/cairo-arc.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit caa9abc9ee33b660f158ac9f5d420bb39c0b47cb -Author: Carl Worth -Date: Mon Aug 7 10:28:40 2006 -0700 - - Fix file handle leak in failure path (bug 7616) - - src/cairo-output-stream.c | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 04757a3aa8deeff3265719ebe01b021638990ec6 -Author: Alfred Peng -Date: Mon Aug 7 08:41:13 2006 -0700 - - Add definition of cairo_private for some Sun compilers. - - In addition to helping us preserve a sharp line between which symbols are - part of the public API and which are private parts of the implementation, - this can also help mozilla avoid clashes between its modified, internal - copy of cairo and the system version of cairo. See the mozilla bug here: - - https://bugzilla.mozilla.org/show_bug.cgi?id=341874 - - src/cairoint.h | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit e2fddcccb43d06486d3680a19cfdd5a54963fcbd -Author: Chris Wilson -Date: Fri Aug 4 17:16:35 2006 -0700 - - Fix memory leak in _cairo_surface_show_glyphs (bug 7766) - - src/cairo-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit aec39338033196f2942e9ff0ef6beffd6612030e -Author: Carl Worth -Date: Fri Aug 4 16:54:25 2006 -0700 - - ROADMAP: Mark 7533 as fixed and add broken truetype subsetting on x86_64 - - ROADMAP | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 761b30792d56f635fe1fb8641fdee21587505475 -Author: Dominic Lachowicz -Date: Fri Aug 4 16:39:40 2006 -0700 - - Add binary garbage to PDF header as recommended in section 3.4.1 of PDF Reference v1.6 - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit 2815d9ad38f2df45c58fbeb38591afba28b4917b -Author: Carl Worth -Date: Thu Aug 3 19:28:11 2006 -0700 - - Use base pointer to avoid compiler warning. - - src/cairo-ft-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1feb4291cf7813494355459bb547eec604c54ffb -Author: Carl Worth -Date: Thu Aug 3 19:25:53 2006 -0700 - - Apply device_transform during meta-surface replay to fix bug 7533 - - src/cairo-meta-surface.c | 86 +++++++++++++++++++++++++++++++++++++++++----- - 1 files changed, 77 insertions(+), 9 deletions(-) - -commit 8c953167ba045ffdfc25ac4f19faff83720f2473 -Author: Carl Worth -Date: Thu Aug 3 17:48:25 2006 -0700 - - Simplify common set_clip operation in meta-surface replay. - - src/cairo-meta-surface.c | 32 ++++++++------------------------ - 1 files changed, 8 insertions(+), 24 deletions(-) - -commit 34a0b728fb0e19a4d03152318a002362791c30d1 -Author: Behdad Esfahbod -Date: Thu Aug 3 00:20:35 2006 -0400 - - Fail FreeType load_truetype_table on vertical fonts as we don't do it - right now. Failing disables the subsetting for vertical fonts, like - it was being done before the recent changes to the TrueType subsetter. - - src/cairo-ft-font.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit 2c0959141ae89bde6c773933b41f4d965d6a1ae7 -Author: Carl Worth -Date: Wed Aug 2 16:40:23 2006 -0700 - - Update ROADMAP now that several of the 1.2.2-targeted bugs are fixed - - ROADMAP | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit 30f004d55ad7c426e979964a49e7a8c8d8db31f3 -Author: Kristian Høgsberg -Date: Wed Aug 2 19:29:17 2006 -0400 - - Rename truetype subset function to _cairo_truetype_*. - - Used to be _cairo_pdf_ft_*, a left over from when this code was - specific to the PDF backend. - - src/cairo-truetype-subset.c | 256 ++++++++++++++++++++++--------------------- - 1 files changed, 133 insertions(+), 123 deletions(-) - -commit f664a3b7a087272a27eb893b7ee5a1775eb92c4d -Author: Kristian Høgsberg -Date: Wed Aug 2 19:14:19 2006 -0400 - - Renamed cairo-font-subset.c to cairo-truetype-subset.c - - src/Makefile.am | 2 +- - src/cairo-font-subset.c | 957 ------------------------------------------- - src/cairo-truetype-subset.c | 957 +++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 958 insertions(+), 958 deletions(-) - -commit a0989f427be87c60415963dd6822b3c5c3781691 -Author: Adrian Johnson -Date: Wed Aug 2 19:12:51 2006 -0400 - - Remove freetype dependency for truetype subsetting code. - - Add a load_truetype_table function to cairo_scaled_font_backend_t and - use it to load the truetype sfnt tables. Implement this with freetype - for the freetype font backend and use GetFontData for win32. Atsui - remains unimplemented, and still falls back to type3 fonts. - - src/Makefile.am | 4 +- - src/cairo-atsui-font.c | 1 + - src/cairo-font-subset.c | 451 ++++++++++++++++++++++++++++------------------ - src/cairo-ft-font.c | 26 +++ - src/cairo-pdf-surface.c | 5 +- - src/cairo-ps-surface.c | 6 +- - src/cairo-svg-surface.c | 1 - - src/cairo-win32-font.c | 28 +++ - src/cairoint.h | 6 + - 9 files changed, 347 insertions(+), 181 deletions(-) - -commit c05dd48ac1afe0e4f3ec0c24797a9fbc3f98ce85 -Merge: e0bec64... 0da4b93... -Author: Michael Emmel -Date: Wed Aug 2 14:32:50 2006 -0700 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit e0bec64c98f98fb2d4b460e8641b1b09f808d233 -Author: Michael Emmel -Date: Wed Aug 2 14:32:24 2006 -0700 - - Fixed debug statement that broke compile - - src/cairo-directfb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0da4b9319f53379e0ae61b90337f49bd0f0fc9c5 -Author: Kristian Høgsberg -Date: Wed Aug 2 15:18:56 2006 -0400 - - Drop unused src/cairo-font-subset-private.h. - - src/Makefile.am | 1 - - src/cairo-font-subset-private.h | 68 --------------------------------------- - 2 files changed, 0 insertions(+), 69 deletions(-) - -commit 067d97eb1793a6b0d0dddfbd0b54117844511a94 -Author: Adrian Johnson -Date: Wed Aug 2 15:17:09 2006 -0400 - - This patch fixes the problem where the postscript output - does not print when the size of the embedded truetype font - exceeds 64k. - - src/cairo-font-subset-private.h | 3 +- - src/cairo-font-subset.c | 60 +++++++++++++++++++++++++++--- - src/cairo-ps-surface.c | 27 ++++++++++---- - src/cairo-scaled-font-subsets-private.h | 2 + - 4 files changed, 77 insertions(+), 15 deletions(-) - -commit 127704c225d4b9f2a4c72749f59a8dfcaecfddc6 -Author: Behdad Esfahbod -Date: Tue Aug 1 20:39:56 2006 -0400 - - Look for per-target reference image too - - test/cairo-test.c | 96 ++++++++++++++++++++++++++++++++++++++-------------- - 1 files changed, 70 insertions(+), 26 deletions(-) - -commit fc715ffd80f5ec9ac57e3b110dd20298029a6350 -Author: Behdad Esfahbod -Date: Tue Aug 1 18:21:27 2006 -0400 - - New PS ref images, matching the recent png16m->pngalpha driver change - - test/caps-joins-ps-argb32-ref.png | Bin 995 -> 1463 bytes - test/caps-sub-paths-ps-argb32-ref.png | Bin 170 -> 240 bytes - test/clip-fill-rule-ps-argb32-ref.png | Bin 280 -> 322 bytes - test/clip-nesting-ps-argb32-ref.png | Bin 488 -> 651 bytes - test/clip-twice-ps-argb32-ref.png | Bin 460 -> 575 bytes - test/dash-caps-joins-ps-argb32-ref.png | Bin 1247 -> 2189 bytes - test/dash-offset-negative-ps-argb32-ref.png | Bin 170 -> 204 bytes - test/dash-scale-ps-argb32-ref.png | Bin 2950 -> 6318 bytes - test/dash-zero-length-ps-argb32-ref.png | Bin 272 -> 319 bytes - test/degenerate-path-ps-argb32-ref.png | Bin 197 -> 264 bytes - test/fill-and-stroke-ps-argb32-ref.png | Bin 243 -> 310 bytes - test/fill-rule-ps-argb32-ref.png | Bin 1078 -> 2253 bytes - test/font-matrix-translation-ps-argb32-ref.png | Bin 0 -> 785 bytes - test/ft-text-antialias-none-ps-argb32-ref.png | Bin 335 -> 335 bytes - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 298 -> 644 bytes - test/glyph-cache-pressure-ps-argb32-ref.png | Bin 591 -> 1672 bytes - test/leaky-polygon-ps-argb32-ref.png | Bin 233 -> 355 bytes - test/line-width-ps-argb32-ref.png | Bin 201 -> 244 bytes - test/line-width-scale-ps-argb32-ref.png | Bin 1599 -> 3903 bytes - test/new-sub-path-ps-argb32-ref.png | Bin 316 -> 559 bytes - test/path-data-ps-argb32-ref.png | Bin 322 -> 442 bytes - test/select-font-face-ps-argb32-ref.png | Bin 481 -> 1443 bytes - test/show-text-current-point-ps-argb32-ref.png | Bin 602 -> 1479 bytes - test/transforms-ps-argb32-ref.png | Bin 287 -> 420 bytes - 24 files changed, 0 insertions(+), 0 deletions(-) - -commit 3e24f516a2f5435306ee8491e7955177b960a797 -Author: Behdad Esfahbod -Date: Tue Aug 1 16:13:29 2006 -0400 - - Change the text string "cd" to "AB" in test to match the other string - that is drawn. The reason, one is draw using show_text, the other - using text_path. The difference is more emphasized when rendering the - same string. - - test/ft-text-vertical-layout-ref.png | Bin 834 -> 907 bytes - test/ft-text-vertical-layout.c | 2 +- - 2 files changed, 1 insertions(+), 1 deletions(-) - -commit 3d95919fab2e47dea9e7b266849db7a4c05eb9a7 -Author: Behdad Esfahbod -Date: Tue Aug 1 15:27:11 2006 -0400 - - Switch from ghostscript's png16m driver to pngalpha for PS->PNG again. - We have switched back and forth quite a few times. This time I'm switching - because with pngalpha we get gray antialiased text and graphics while with - png16m all we get is no antialiasing. This is definitely a bug in the png16m - driver, but I won't wait until it gets fixed upstream. - - Previously Carl Worth switched to pngalpha and reverted it immediately in - commit c4fc7b06b53c811ddc20def91aaccd756c28a924. I've now fixed image-diff to - work with the output of pngalpha, so we can switch. It requires lots of - reference image updates, but still doesn't help with reducing the number of - PS-specific reference images we need. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 5a23fd70a0af5c2b0cb990b89ebc5ed7a01aae82 -Author: Behdad Esfahbod -Date: Tue Aug 1 15:20:39 2006 -0400 - - Change the way diff images highlight differences. - Previously it was using the equation 128+diff/3, which results in - lots of gray and de-emphasized difference. Now it's using - MIN(255,diff*4) which more emphasizes the real difference. - - test/buffer-diff.c | 7 +++++-- - 1 files changed, 5 insertions(+), 2 deletions(-) - -commit d85f30e789c74cc8f1d83ba609d8b02886686440 -Author: Behdad Esfahbod -Date: Tue Aug 1 15:18:19 2006 -0400 - - Make image_diff_flattened flatten the first image too. - This is useful to use the ghostscript pngalpha driver for example. - - test/buffer-diff.c | 34 ++++++++++++++++++++++++++-------- - 1 files changed, 26 insertions(+), 8 deletions(-) - -commit 556a4d8405a4f53e465425ccc1f6506e51b29344 -Author: Behdad Esfahbod -Date: Tue Aug 1 15:16:10 2006 -0400 - - Add vector_ignored_tests that is tests ignored for ps/pdf/svg - that includes all tests depending on CAIRO_ANTIALIAS_NONE and - CAIRO_ANTIALIAS_SUBPIXEL. - This removes separate pdf_ignored_tests and svg_ignored_tests - arrays that were out of synch and otherwise the same. - - test/cairo-test.c | 43 ++++++++++++++++++++++--------------------- - 1 files changed, 22 insertions(+), 21 deletions(-) - -commit 226178539ad72ffa414925e094297e12c566083d -Author: Behdad Esfahbod -Date: Mon Jul 31 16:05:34 2006 -0400 - - Add comments about CAIRO_ENABLE_BACKEND. - - configure.in | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -commit 2fa709d6af58713f7b362748a728a6f8c983d2ec -Author: Behdad Esfahbod -Date: Mon Jul 31 15:17:15 2006 -0400 - - Set font options in the test context and make tests not do that - This should help with not requiring many backend-specific reference - images, and some should be removed now. - - test/cairo-test.c | 10 ++++++++++ - test/clip-operator.c | 9 --------- - test/font-matrix-translation.c | 9 --------- - test/ft-font-create-for-ft-face.c | 2 ++ - test/ft-text-antialias-none.c | 3 +-- - test/ft-text-vertical-layout.c | 5 +---- - test/glyph-cache-pressure.c | 10 ---------- - test/operator-clear.c | 9 --------- - test/operator-source.c | 9 --------- - test/select-font-face.c | 11 ----------- - test/show-glyphs-many.c | 9 --------- - test/show-text-current-point.c | 10 ---------- - test/text-antialias-gray.c | 5 +---- - test/text-antialias-none.c | 5 +---- - test/text-antialias-subpixel.c | 8 ++------ - test/text-pattern.c | 9 --------- - test/text-rotate.c | 3 +-- - test/unbounded-operator.c | 9 --------- - 18 files changed, 19 insertions(+), 116 deletions(-) - -commit 9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0 -Author: Behdad Esfahbod -Date: Mon Jul 31 14:50:50 2006 -0400 - - Set fallback resolution in create_similar. Update docs to reflect that. - - src/cairo-surface.c | 10 ++++++++-- - 1 files changed, 8 insertions(+), 2 deletions(-) - -commit a61ac1aeedca3a032b9d53715afb5d52c06efec0 -Author: Behdad Esfahbod -Date: Mon Jul 31 14:47:10 2006 -0400 - - Set font_options on image surfaces we create. - This may not be really necessary as we only create image surfaces as - temporary surfaces and their font options should not be sampled normally. - - src/cairo-paginated-surface.c | 37 ++++++++++++++++++++++++++++--------- - 1 files changed, 28 insertions(+), 9 deletions(-) - -commit b3341b4eda274036a74eea3187d47ef257688828 -Author: Behdad Esfahbod -Date: Mon Jul 31 14:45:54 2006 -0400 - - Let backends return NULL in create_similar to take the fallback path. - Make xlib backend use it. - - src/cairo-surface.c | 5 +++-- - src/cairo-xlib-surface.c | 5 +++-- - 2 files changed, 6 insertions(+), 4 deletions(-) - -commit bdb4e1edadb78a2118ff70b28163f8bd4317f1ec -Author: Behdad Esfahbod -Date: Mon Jul 31 14:44:42 2006 -0400 - - Implement per-surface font options. - New internal function _cairo_surface_set_font_options is used to set them. - cairo_surface_create_similar propagates the font options of the other - surface into the newly created surface. Fixes bugs with font options in - fallback images and bug 4106. - - src/cairo-surface.c | 55 +++++++++++++++++++++++++++++++++++++++++++++----- - src/cairoint.h | 12 +++++++++++ - 2 files changed, 61 insertions(+), 6 deletions(-) - -commit a8a0082c53d060e07c10c6efda9bb808e354fd59 -Author: Behdad Esfahbod -Date: Mon Jul 31 14:41:27 2006 -0400 - - Remove dummy create_similar in PS/PDF and let fallback do the same - which is simply creating an image surface. - - src/cairo-pdf-surface.c | 15 +-------------- - src/cairo-ps-surface.c | 15 +-------------- - 2 files changed, 2 insertions(+), 28 deletions(-) - -commit 72b51b6f0c49f9eac7d8ef4caff59733312b1ca6 -Author: Ian Osgood -Date: Wed Jun 21 07:06:20 2006 -0700 - - XCB: implement set_clip_region - - src/cairo-xcb-surface.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++- - 1 files changed, 93 insertions(+), 1 deletions(-) - -commit 2eeb338590957a90bdebfc6a00fc05323e76f9ee -Author: Jamey Sharp -Date: Mon Jun 12 17:47:55 2006 -0700 - - XCB: Use xcb-renderutil where cairo-xlib used libXrender. - - configure.in | 2 +- - src/cairo-xcb-surface.c | 199 ++++++++++------------------------------------- - 2 files changed, 41 insertions(+), 160 deletions(-) - -commit 6b0d3433b7073ece1f7959475e6058911dc382ad -Author: Jamey Sharp -Date: Mon Jul 31 08:53:57 2006 -0700 - - XCB: XCBRenderTRAP was renamed to XCBRenderTRAPEZOID. - - src/cairo-xcb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 88675958efbe57c7cc5135d6fb73e99f42d848d8 -Author: Behdad Esfahbod -Date: Mon Jul 31 01:03:15 2006 -0400 - - Remove config.cache in autogen.sh. - - autogen.sh | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit eb9caf083353f3430f786da717b6c56b13f82ecb -Author: Carl Worth -Date: Fri Jul 28 16:59:54 2006 -0700 - - Add -Wsign-compare compiler flag and fix all warnings - - configure.in | 2 +- - pixman/src/fbpict.c | 2 +- - pixman/src/icformat.c | 12 ++++++------ - pixman/src/pixman.h | 10 +++++----- - src/cairo-array.c | 6 +++--- - src/cairo-font-subset.c | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-hash.c | 2 +- - src/cairo-image-surface.c | 2 +- - src/cairo-output-stream.c | 2 +- - src/cairo-path-stroke.c | 4 ++-- - src/cairo-pattern.c | 4 ++-- - src/cairo-pdf-surface.c | 7 +++---- - src/cairo-png.c | 8 ++++---- - src/cairo-ps-surface.c | 2 +- - src/cairo-scaled-font-subsets.c | 6 +++--- - src/cairo-scaled-font.c | 2 +- - src/cairo-svg-surface.c | 6 +++--- - src/cairo-xlib-surface.c | 2 +- - src/cairoint.h | 16 ++++++++-------- - 20 files changed, 49 insertions(+), 50 deletions(-) - -commit 5e0f46cdebb5e086b344cc09b4537982a07e45cd -Author: Behdad Esfahbod -Date: Fri Jul 28 15:41:11 2006 -0700 - - Standardize on unsigned for ref_count type and add CAIRO_REF_COUNT_INVALID - - The CAIRO_REF_COUNT_INVALID macro simply hides the ((unsigned int)-1) cast - to avoid warnings about comparison between signed and unsigned values. - - src/cairo-font.c | 8 ++++---- - src/cairo-pattern.c | 12 ++++++------ - src/cairo-scaled-font.c | 6 +++--- - src/cairo-surface.c | 12 ++++++------ - src/cairo.c | 6 +++--- - src/cairoint.h | 8 +++++--- - 6 files changed, 27 insertions(+), 25 deletions(-) - -commit 84b37568e1485c461df663f875ba5546b44e5c5c -Author: Behdad Esfahbod -Date: Fri Jul 28 15:13:00 2006 -0700 - - Add -Wold-style-definition compiler falg and fix all warnings. - - configure.in | 2 +- - pixman/src/pixregion.c | 53 +++++++++++++++++++---------------------------- - 2 files changed, 23 insertions(+), 32 deletions(-) - -commit 811f7af1b2cf659b3a3c9b0749c65742207cb946 -Author: Behdad Esfahbod -Date: Fri Jul 28 18:18:50 2006 -0400 - - s/dist-hook/dist-hook-local/ - Should drop spurious make warning. - - gtk-doc.make | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 84114949488c7b9a2ae60edb33903b541ce1dadf -Author: Behdad Esfahbod -Date: Fri Jul 28 15:12:10 2006 -0400 - - Move font-matrix translation and device transform from surface to gstate - - Fixes the bug that paginated backends had font-matrix translation - applied twice, AND removes a second copy of the glyphs. It's - essentially similar to what cworth did for stroke/fill/clip in - this commit: bd92eb7f3c58fdcbe05f67b9a879798246c616bc - - Reviewed by: Carl Worth - - src/cairo-gstate.c | 10 +++++--- - src/cairo-surface.c | 54 ++++++++++++++++---------------------------------- - 2 files changed, 23 insertions(+), 41 deletions(-) - -commit 2f7da1aafb5ca050446fe3645eac3f95b9636b19 -Author: Carl Worth -Date: Fri Jul 28 10:51:24 2006 -0700 - - INSTALL: Mention DYLD_LIBRARY_PATH for mac OS X - - INSTALL | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit e5f4b922618ca2e56d6a66e20761e78d42211ec9 -Author: Behdad Esfahbod -Date: Thu Jul 27 15:20:14 2006 -0400 - - Make "double *dash" argument const in cairo_set_dash - - src/cairo-gstate.c | 2 +- - src/cairo.c | 8 ++++---- - src/cairo.h | 8 ++++---- - src/cairoint.h | 2 +- - 4 files changed, 10 insertions(+), 10 deletions(-) - -commit e92d693e073dc5fba871b615909206f0049ead41 -Author: Behdad Esfahbod -Date: Thu Jul 27 14:58:46 2006 -0400 - - Make "CAIRO_TEST_TARGET=... make check" work again - - Do a funny transition of CAIRO_TEST_TARGET through TARGETS such that - one can limit tested targets both through CAIRO_TEST_TARGET env var - and TARGETS make var on the command line. - - test/Makefile.am | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -commit 6ced3edb69f5f5a25a5c40c0bad7dc638cc216cb -Author: Behdad Esfahbod -Date: Fri Jul 21 18:46:16 2006 -0400 - - Don't make doc upon make install. - - gtk-doc.make | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 280823173dce520a43eb54c0b18d2e2eae6a55a0 -Author: Carl Worth -Date: Thu Jul 27 00:57:53 2006 -0700 - - Update ROADMAP with 1.2.2 and 1.4 plans now that 1.2.0 is out - - ROADMAP | 209 ++++++++++++++++++--------------------------------------------- - 1 files changed, 59 insertions(+), 150 deletions(-) - -commit 456cdb3058f3b416109a9600167cd8842300ae14 -Author: Carl Worth -Date: Wed Jul 26 15:48:56 2006 -0700 - - Elide size-zero glyphs from calls to XRender functions. - - There appears to be a bug in some X servers which is triggered by - rendering 1-bit glyphs with zero size via the functions - XRenderAddGlyphs and XRenderCompositeText8 (and likely its variants). - - We avoid this bug by making a copy of the glyphs array which does not - include any of the size-zero glyphs so that the X server never sees them. - - src/cairo-xlib-surface.c | 28 ++++++++++++++++++++++------ - 1 files changed, 22 insertions(+), 6 deletions(-) - -commit 8601c2c68306c956744399099a941363d446b906 -Merge: cd2f50e... b719188... -Author: Michael Emmel -Date: Thu Jul 20 23:04:37 2006 -0700 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit cd2f50e6c421d35c3d5b0d76ed0fdd03a033b2c2 -Author: Michael Emmel -Date: Thu Jul 20 23:01:06 2006 -0700 - - Check for zero before freeing region - - src/cairo-directfb-surface.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit b7191885c88068dad57d68ced69a752d1162b12c -Author: Vladimir Vukicevic -Date: Mon Jul 17 11:33:47 2006 -0700 - - [xlib] Remove XSync implementation of surface_flush - - Remove the xlib implementation of surface_flush which just called XSync - before. - - src/cairo-xlib-surface.c | 10 +--------- - 1 files changed, 1 insertions(+), 9 deletions(-) - -commit fbb1758ba8384650157b2bbbc93d161b0c2a05f0 -Author: Jeff Muizelaar -Date: Sun Jun 25 16:12:38 2006 +0200 - - Fix degenerate-path stroking with dashed lines. - - This draws dashed degenerate-paths if the dash is on at the point of the - path and otherwise draws nothing. - - src/cairo-path-stroke.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -commit fdebc369d28f70ceba228d3131753225b2dbf844 -Author: Jeff Muizelaar -Date: Sun Jun 25 15:48:48 2006 +0200 - - Modify degenerate-path test case to test dashed degenerate paths. - - test/degenerate-path-ps-argb32-ref.png | Bin 197 -> 220 bytes - test/degenerate-path-ref.png | Bin 193 -> 216 bytes - test/degenerate-path-rgb24-ref.png | Bin 174 -> 189 bytes - test/degenerate-path.c | 54 ++++++++++++++++++++++++++------ - 4 files changed, 44 insertions(+), 10 deletions(-) - -commit b607cdff98e621a6650bccef20f9877a0e7aa1d9 -Author: Jeff Muizelaar -Date: Sat Jul 15 14:39:26 2006 -0400 - - Test closed dashed paths where the first and last sub-path do not join. - - This tests the situation reported by Keith Wells where the start point of a - closed dashed path was not being properly capped. - - test/dash-caps-joins-ps-argb32-ref.png | Bin 1247 -> 2205 bytes - test/dash-caps-joins-ref.png | Bin 2583 -> 4680 bytes - test/dash-caps-joins.c | 45 +++++++++++++++++++------------ - 3 files changed, 27 insertions(+), 18 deletions(-) - -commit 84840e6bba6e72aa88fad7a0ee929e8955ba9051 -Author: Behdad Esfahbod -Date: Fri Jul 14 21:42:41 2006 -0400 - - Use font matrix offset to reposition glyph origin instead of adjusting advance - - As the font matrix includes translation, which is otherwise unused for glyph - transformation, the interpretation of translation is fairly arbitrary. For - 1.2.0, we choose to have this translation affect the glyph advance with the - thought that it could be used to do letter spacing/kerning. That is fairly - useless in practice, and a far more useful interpretation is to relocate - the origin of each glyph. - - This patch uses the translation in the font matrix as an offset for the - glyph origin in user space. It turns out glyph extents were already correctly - shifted. - - The end result with this patch is to have cairo match the 1.0 behaviour for - font matrix translations, but now we know why :-) - - Explanation above courtesy of Keith Packard. - - src/cairo-scaled-font.c | 6 +++--- - src/cairo-surface.c | 12 +++++++----- - 2 files changed, 10 insertions(+), 8 deletions(-) - -commit 47d3c5a2c63478288345235f26533f2d6059e815 -Author: Behdad Esfahbod -Date: Fri Jul 14 20:06:34 2006 -0400 - - Flush stdout after writing \r, to remove artifacts. - - test/cairo-test.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit c70edff0842bc6f7238e17a5fe92dddceec283d3 -Author: Carl Worth -Date: Fri Jul 14 12:45:48 2006 -0700 - - Add font-matrix-translation test case. - - test/.gitignore | 1 + - test/Makefile.am | 1 + - test/font-matrix-translation-ref.png | Bin 0 -> 1006 bytes - test/font-matrix-translation.c | 113 ++++++++++++++++++++++++++++++++++ - 4 files changed, 115 insertions(+), 0 deletions(-) - -commit b390e2c45632a4974b85a6a5ea414e249adb62a3 -Author: Carl Worth -Date: Thu Jul 13 16:01:57 2006 -0700 - - pixman-rotate: remove stale svg backend reference images - - test/pixman-rotate-svg-argb32-ref.png | Bin 258 -> 0 bytes - test/pixman-rotate-svg-rgb24-ref.png | Bin 358 -> 0 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 2b30f85cade33653afddf536aa7e775dd360f501 -Author: Carl Worth -Date: Thu Jul 13 15:56:12 2006 -0700 - - ft-text-vertical-layout: Update stale reference images - - test/ft-text-vertical-layout-pdf-argb32-ref.png | Bin 956 -> 725 bytes - test/ft-text-vertical-layout-svg-rgb24-ref.png | Bin 808 -> 808 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 5d64efdbb8fc4e17d4fa44d21068870cd2aea7ce -Merge: 9907813... 6a5d66f... -Author: Michael Emmel -Date: Fri Jul 14 09:37:22 2006 -0700 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit 9907813d575cefdda20c77d69ad911fa70d2cf4c -Author: Michael Emmel -Date: Fri Jul 14 09:36:35 2006 -0700 - - Fixed debug message to use new member name - - src/cairo-directfb-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 6a5d66f651b7fe94e74ee803a452bac5b54c95ca -Author: Behdad Esfahbod -Date: Thu Jul 13 18:53:25 2006 -0400 - - Go back to "!!!CRASHED!!!" message now that there's no confusion. - - test/cairo-test.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 6c7099b0ccc926b4f427c3cceb1fed5534c693ec -Author: Behdad Esfahbod -Date: Thu Jul 13 18:49:52 2006 -0400 - - Only generate HTML for log files passed on the command line. - - With the make bits already in place, this means that make retest - creates HTML for only the retested tests. - - test/make-html.pl | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 4b22cb41a9c1fbfc310ae7fd024ceffdb4bf3947 -Author: Carl Worth -Date: Thu Jul 13 15:23:06 2006 -0700 - - Use 'FAIL' instead of 'UNEXPECTED FAILURE' in test output. - - There's no ambiguity anymore due to duplicated printing, so go - back to the classic, and easier to read wording. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b2d04d7f1a14c961ea10b76581436ae07dfe6ef5 -Author: Carl Worth -Date: Thu Jul 13 15:21:02 2006 -0700 - - Rename no_fail_on_stdout to eliminate confusing negative inside a Boolean variable name - - test/cairo-test.c | 18 ++++++++++-------- - 1 files changed, 10 insertions(+), 8 deletions(-) - -commit ff1280ce98ecc9ddee7b63e21eaec3d47ed3df8b -Author: Carl Worth -Date: Thu Jul 13 15:08:19 2006 -0700 - - cairo-test.c: Prefer FALSE and TRUE for cairo_bool_t values. - - test/cairo-test.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit ebc736730615021b07b851b41c6de79248ca00e4 -Author: Behdad Esfahbod -Date: Thu Jul 13 18:17:39 2006 -0400 - - Fix test result formatting. - - test/cairo-test.c | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit 3f7593612f52f88eabb87de0c1efbf86bf31e8c2 -Author: Carl Worth -Date: Thu Jul 13 15:00:16 2006 -0700 - - Make the various test and check targets depend on all as well. - - Makefile.am | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 307a17f78cd2adda8a59ef16385df3be5786d2bd -Merge: 5ed64e3... 1409b8b... -Author: Michael Emmel -Date: Thu Jul 13 12:17:25 2006 -0700 - - Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo - -commit 5ed64e3915a45785696fd741b69a03cc5050be88 -Author: Michael Emmel -Date: Thu Jul 13 12:15:42 2006 -0700 - - Rewrote to remove intermediate surfaces - - src/cairo-directfb-surface.c | 402 +++++++++++++++++++----------------------- - 1 files changed, 178 insertions(+), 224 deletions(-) - -commit 1409b8be0ca00a0904b1732661915d3eba753a51 -Author: Behdad Esfahbod -Date: Thu Jul 13 14:33:41 2006 -0400 - - Fix Name tag in backend .pc files to include "cairo-". - - src/cairo-backend.pc.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b2668e944d1819f2b8f9973f1f42b1ca36bb193d -Author: Behdad Esfahbod -Date: Thu Jul 13 14:02:58 2006 -0400 - - Use cairo_bool_t. - - test/cairo-test.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 510d23acef9fc75eb968795191091cbc1d33bc09 -Author: Behdad Esfahbod -Date: Thu Jul 13 13:39:04 2006 -0400 - - Fix doc typo. - - src/cairo.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 601c0503f7906151698929051852d13c377cfef1 -Author: Behdad Esfahbod -Date: Thu Jul 13 13:30:52 2006 -0400 - - Send grep errors to hell^Wnull. - - test/Makefile.am | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit 09dfae5fbf34fb19b283973df7112b14638d6466 -Author: Behdad Esfahbod -Date: Thu Jul 13 13:22:49 2006 -0400 - - Don't write FAIL messages on stdout if both stdout/err are going to screen. - - test/cairo-test.c | 16 ++++++++++------ - 1 files changed, 10 insertions(+), 6 deletions(-) - -commit 778c4730a86296bf0a71080cf7008d7291792256 -Author: Kent Worsnop -Date: Thu Jul 13 10:20:12 2006 -0700 - - PDF: Fix for dash-no-dash test case, (so that dashing can be turned off) - - src/cairo-pdf-surface.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -commit d2d9a74c77d6bbc51502cee2288fd7d76c30f926 -Author: Carl Worth -Date: Wed Jul 12 14:49:14 2006 -0700 - - Add dash-no-dash test case to demonstrate PDF failure to turn off dashing. - - test/.gitignore | 3 +- - test/Makefile.am | 8 ++- - test/dash-no-dash-ref.png | Bin 0 -> 152 bytes - test/dash-no-dash.c | 95 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 102 insertions(+), 4 deletions(-) - -commit f3d45d17902cb109dacf30d826ea8f93408473ba -Author: Carl Worth -Date: Thu Jul 13 10:04:55 2006 -0700 - - Eliminate a few simple compiler warnings - - test/cairo-test.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 65d0431b98e7e8d966bbcb43a542a86a9c95e0dc -Author: Carl Worth -Date: Thu Jul 13 10:04:19 2006 -0700 - - Add retest and recheck targets to the top-level Makefile - - Makefile.am | 6 +++++- - 1 files changed, 5 insertions(+), 1 deletions(-) - -commit da0f348350c3ca28d40601aefbca12903632cc18 -Author: Behdad Esfahbod -Date: Thu Jul 13 13:16:10 2006 -0400 - - ***cworth finds them [the background colors] a bit too bright - - test/make-html.pl | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit cf1b23a4c57d436098619443068611a48b88187e -Author: Behdad Esfahbod -Date: Thu Jul 13 12:58:24 2006 -0400 - - Add prototype for draw in each test file and remove it from the header. - - test/a8-mask.c | 2 ++ - test/bitmap-font.c | 2 ++ - test/cairo-test.h | 1 - - test/caps-joins-alpha.c | 2 ++ - test/caps-joins.c | 2 ++ - test/caps-sub-paths.c | 2 ++ - test/clip-all.c | 2 ++ - test/clip-fill-rule-pixel-aligned.c | 2 ++ - test/clip-fill-rule.c | 2 ++ - test/clip-nesting.c | 2 ++ - test/clip-operator.c | 2 ++ - test/clip-twice.c | 2 ++ - test/composite-integer-translate-over-repeat.c | 2 ++ - test/composite-integer-translate-over.c | 2 ++ - test/composite-integer-translate-source.c | 2 ++ - test/create-from-png-stream.c | 2 ++ - test/create-from-png.c | 2 ++ - test/dash-caps-joins.c | 2 ++ - test/dash-offset-negative.c | 2 ++ - test/dash-scale.c | 2 ++ - test/dash-zero-length.c | 2 ++ - test/degenerate-path.c | 2 ++ - test/device-offset-positive.c | 2 ++ - test/device-offset.c | 2 ++ - test/extend-reflect.c | 2 ++ - test/fill-and-stroke-alpha-add.c | 2 ++ - test/fill-and-stroke-alpha.c | 2 ++ - test/fill-and-stroke.c | 2 ++ - test/fill-rule.c | 2 ++ - test/filter-nearest-offset.c | 2 ++ - test/ft-font-create-for-ft-face.c | 2 ++ - test/ft-text-antialias-none.c | 2 ++ - test/ft-text-vertical-layout.c | 2 ++ - test/get-and-set.c | 2 ++ - test/get-group-target.c | 2 ++ - test/glyph-cache-pressure.c | 2 ++ - test/gradient-alpha.c | 2 ++ - test/leaky-dash.c | 2 ++ - test/leaky-polygon.c | 2 ++ - test/line-width-scale.c | 2 ++ - test/line-width.c | 2 ++ - test/linear-gradient.c | 2 ++ - test/mask-ctm.c | 2 ++ - test/mask-surface-ctm.c | 2 ++ - test/mask.c | 2 ++ - test/move-to-show-surface.c | 2 ++ - test/new-sub-path.c | 2 ++ - test/nil-surface.c | 2 ++ - test/operator-clear.c | 2 ++ - test/operator-source.c | 2 ++ - test/paint-source-alpha.c | 2 ++ - test/paint-with-alpha.c | 2 ++ - test/paint.c | 2 ++ - test/path-data.c | 2 ++ - test/pixman-rotate.c | 2 ++ - test/push-group.c | 2 ++ - test/rectangle-rounding-error.c | 2 ++ - test/rel-path.c | 2 ++ - test/scale-source-surface-paint.c | 2 ++ - test/select-font-face.c | 2 ++ - test/select-font-no-show-text.c | 2 ++ - test/self-copy.c | 2 ++ - test/self-intersecting.c | 2 ++ - test/set-source.c | 2 ++ - test/show-glyphs-many.c | 2 ++ - test/show-text-current-point.c | 2 ++ - test/source-clip.c | 2 ++ - test/source-surface-scale-paint.c | 2 ++ - test/surface-finish-twice.c | 2 ++ - test/surface-pattern.c | 2 ++ - test/text-antialias-gray.c | 2 ++ - test/text-antialias-none.c | 2 ++ - test/text-antialias-subpixel.c | 2 ++ - test/text-cache-crash.c | 2 ++ - test/text-pattern.c | 2 ++ - test/text-rotate.c | 2 ++ - test/transforms.c | 2 ++ - test/translate-show-surface.c | 2 ++ - test/trap-clip.c | 2 ++ - test/unantialiased-shapes.c | 2 ++ - test/unbounded-operator.c | 2 ++ - test/zero-alpha.c | 2 ++ - 82 files changed, 162 insertions(+), 1 deletions(-) - -commit f8eeca97684f7c8eba7b918c34fe5ccbf32e2f5f -Author: Behdad Esfahbod -Date: Thu Jul 13 11:48:42 2006 -0400 - - Tiny doc typo fix. - - src/cairo.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 0ac2bbbf52737b2e368de269651c56dab90c928a -Author: Behdad Esfahbod -Date: Thu Jul 13 11:27:05 2006 -0400 - - Improve test HTML generation: - - Make "make retest" not generate all .log files. - - Format improvements in the generated HTML file. - - test/Makefile.am | 27 +++++++++++++++++++-------- - test/cairo-test.c | 16 ++++++++-------- - test/make-html.pl | 49 ++++++++++++++++++++++++++++--------------------- - 3 files changed, 55 insertions(+), 37 deletions(-) - -commit f79a9f5a5259f33284d5e63ef2ddac0be4ea7d41 -Author: Behdad Esfahbod -Date: Wed Jul 12 04:27:55 2006 -0400 - - Improve backend .pc files generation: - - Add all non-pkgconfig libs to Libs.private in cairo.pc - - Make cairo-xlib-xrender.pc Require cairo-xlib.pc - - configure.in | 56 ++++++++++++++++++++++++++++------------------ - src/Makefile.am | 2 +- - src/cairo-backend.pc.in | 2 +- - src/cairo.pc.in | 5 ++- - 4 files changed, 39 insertions(+), 26 deletions(-) - -commit 973d3a3d1466830dcaa94e9fe39fa6fdf510fbbc -Author: Behdad Esfahbod -Date: Tue Jul 11 22:19:39 2006 -0400 - - More test suite infrastructure improvements: - - Remove cairo_test_expect_failure. cairo-test.c now checks - env var CAIRO_XFAIL_TESTS to see if the running test is - expected to fail. The reason for expected failure is - appended to the test description. - - Test description is written out. - - Failed/crashed tests also write a line out to stderr (in red), - so one can now redirect stdout to /dev/null to only see failures. - - cairo_test() has been changed to not take the draw function - anymore, instead, draw function is now part of the test struct. - - "make check" doesn't allow limiting backends to test using env - var anymore. To limit backends to test, one should use the - TARGETS variable on the make command line. - - "make check-valgrind" now writes its log to valgrind-log instead - of valgrind.log, to not interfere with test log file processing. - - test/.gitignore | 1 + - test/Makefile.am | 9 ++- - test/README | 6 +- - test/a8-mask.c | 9 +- - test/bitmap-font.c | 5 +- - test/cairo-test.c | 98 +++++++++++++++++------- - test/cairo-test.h | 24 ++---- - test/caps-joins-alpha.c | 5 +- - test/caps-joins.c | 5 +- - test/caps-sub-paths.c | 5 +- - test/clip-all.c | 5 +- - test/clip-fill-rule-pixel-aligned.c | 5 +- - test/clip-fill-rule.c | 5 +- - test/clip-nesting.c | 5 +- - test/clip-operator.c | 7 +- - test/clip-twice.c | 5 +- - test/composite-integer-translate-over-repeat.c | 5 +- - test/composite-integer-translate-over.c | 5 +- - test/composite-integer-translate-source.c | 5 +- - test/create-for-stream.c | 29 +++++--- - test/create-from-png-stream.c | 5 +- - test/create-from-png.c | 5 +- - test/dash-caps-joins.c | 5 +- - test/dash-offset-negative.c | 5 +- - test/dash-scale.c | 5 +- - test/dash-zero-length.c | 5 +- - test/degenerate-path.c | 5 +- - test/device-offset-positive.c | 5 +- - test/device-offset.c | 5 +- - test/extend-reflect.c | 9 +- - test/fallback-resolution.c | 6 +- - test/fill-and-stroke-alpha-add.c | 5 +- - test/fill-and-stroke-alpha.c | 5 +- - test/fill-and-stroke.c | 5 +- - test/fill-rule.c | 5 +- - test/filter-nearest-offset.c | 9 +- - test/ft-font-create-for-ft-face.c | 5 +- - test/ft-text-antialias-none.c | 5 +- - test/ft-text-vertical-layout.c | 5 +- - test/get-and-set.c | 7 +- - test/get-group-target.c | 5 +- - test/glyph-cache-pressure.c | 5 +- - test/gradient-alpha.c | 5 +- - test/leaky-dash.c | 9 +- - test/leaky-polygon.c | 5 +- - test/line-width-scale.c | 5 +- - test/line-width.c | 5 +- - test/linear-gradient.c | 5 +- - test/mask-ctm.c | 5 +- - test/mask-surface-ctm.c | 5 +- - test/mask.c | 7 +- - test/move-to-show-surface.c | 5 +- - test/multi-page.c | 8 +- - test/new-sub-path.c | 5 +- - test/nil-surface.c | 5 +- - test/operator-clear.c | 7 +- - test/operator-source.c | 7 +- - test/paint-source-alpha.c | 5 +- - test/paint-with-alpha.c | 5 +- - test/paint.c | 5 +- - test/path-data.c | 5 +- - test/pdf-features.c | 2 +- - test/pixman-rotate.c | 5 +- - test/ps-features.c | 2 +- - test/push-group.c | 5 +- - test/rectangle-rounding-error.c | 5 +- - test/rel-path.c | 5 +- - test/scale-source-surface-paint.c | 5 +- - test/select-font-face.c | 5 +- - test/select-font-no-show-text.c | 7 +- - test/self-copy.c | 5 +- - test/self-intersecting.c | 9 +- - test/set-source.c | 5 +- - test/show-glyphs-many.c | 5 +- - test/show-text-current-point.c | 5 +- - test/source-clip.c | 5 +- - test/source-surface-scale-paint.c | 5 +- - test/surface-finish-twice.c | 5 +- - test/surface-pattern.c | 5 +- - test/svg-clip.c | 2 +- - test/svg-surface.c | 10 +- - test/text-antialias-gray.c | 5 +- - test/text-antialias-none.c | 5 +- - test/text-antialias-subpixel.c | 5 +- - test/text-cache-crash.c | 7 +- - test/text-pattern.c | 5 +- - test/text-rotate.c | 9 +- - test/transforms.c | 5 +- - test/translate-show-surface.c | 5 +- - test/trap-clip.c | 7 +- - test/unantialiased-shapes.c | 5 +- - test/unbounded-operator.c | 7 +- - test/xlib-surface.c | 2 +- - test/zero-alpha.c | 5 +- - 94 files changed, 386 insertions(+), 260 deletions(-) - -commit 94bdbc15f79308269f1bcd74b3d8899f8458babc -Author: Behdad Esfahbod -Date: Tue Jul 11 17:27:08 2006 -0400 - - Improve test suite build infrastructure - - Add new target recheck, that checks only failed tests - - Add targets test and retest, and make html after (re)checking - - Make targets html and index.html lazy, only update if any tests changed - - Improve build system such that checking one test (using TESTS=...) doesn't - build all tests - - Remove pixman-rotate from XFAIL - - Makefile.am | 4 ++- - test/Makefile.am | 69 ++++++++++++++++++++++++++++++++++++++++++-------- - test/cairo-test.c | 7 +++-- - test/pixman-rotate.c | 3 +- - 4 files changed, 66 insertions(+), 17 deletions(-) - -commit c45a9321759e5cc0fcf6eda85f91d09ebb4db0d2 -Author: Behdad Esfahbod -Date: Tue Jul 11 16:07:13 2006 -0400 - - Use Bitstream Vera Sans and Latin text in ft-text-vertical. - We don't really rely on the Japanese text and font, as FreeType - synthesizes vertical metrics for all fonts. - - test/ft-text-vertical-layout-ps-argb32-ref.png | Bin 349 -> 298 bytes - test/ft-text-vertical-layout-ref.png | Bin 1130 -> 834 bytes - test/ft-text-vertical-layout-svg-argb32-ref.png | Bin 1021 -> 799 bytes - test/ft-text-vertical-layout-svg-rgb24-ref.png | Bin 1098 -> 808 bytes - test/ft-text-vertical-layout.c | 4 ++-- - 5 files changed, 2 insertions(+), 2 deletions(-) - -commit fe647ca42b24ff844dd0d94642adaf46ea7a28dd -Author: Behdad Esfahbod -Date: Tue Jul 11 15:18:14 2006 -0400 - - Oops. Fix doc format. - - src/cairo.h | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -commit 90a46affe626c9afafd687ac2d71a57f4583e216 -Author: Behdad Esfahbod -Date: Tue Jul 11 13:36:52 2006 -0400 - - Add note to docs for some enums about possible future additions. - - src/cairo.h | 17 +++++++++++++++++ - 1 files changed, 17 insertions(+), 0 deletions(-) - -commit d27a00874bc044b4c9aefacbc850d5f7ee106b6f -Author: Behdad Esfahbod -Date: Tue Jul 11 09:23:18 2006 -0400 - - Disable PDF backend if zlib not found. - Explicitly add -lm to CAIRO_LIBS - - configure.in | 12 +++++++++--- - 1 files changed, 9 insertions(+), 3 deletions(-) - -commit e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235 -Author: Behdad Esfahbod -Date: Mon Jul 10 13:45:51 2006 -0400 - - Change version number of Sun's Xorg server with buggy repeat from 60800000 to - 60900000. (#7483, pointed by Brian Cameron) - - src/cairo-xlib-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit b006bf9d2c7d39c413527017fc792a38b598555a -Author: Behdad Esfahbod -Date: Mon Jul 10 11:52:58 2006 -0400 - - Add change stat to ChangeLog. - - Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit ccb54b35ed2252ae9ece95204a5ad7b43cde936e -Author: Behdad Esfahbod -Date: Mon Jul 10 10:35:42 2006 -0400 - - Small doc fix. - - src/cairo.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -commit defa23206cfa83ad4460a868f78289ba7f7c1c53 -Author: Behdad Esfahbod -Date: Mon Jul 10 10:26:19 2006 -0400 - - Fix nil surface initializations for surface type. (#7322) - - src/cairo-surface.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit a1143d120fbc142fc6ae15f394cfbe400a4a0b3e -Author: Behdad Esfahbod -Date: Sat Jul 8 21:04:21 2006 -0400 - - Generate index of new symbols in 1.2. - - doc/public/cairo-docs.xml | 13 +++++++------ - 1 files changed, 7 insertions(+), 6 deletions(-) - -commit 6efd145882155971be85b23807bd5c52d1025cc3 -Author: Behdad Esfahbod -Date: Sat Jul 8 17:52:24 2006 -0400 - - Better creation rules for cairo.def. - - src/Makefile.am | 39 +++++++++++++-------------------------- - 1 files changed, 13 insertions(+), 26 deletions(-) - -commit f3f374fb8066e09da1948674decadc6c764f2a1b -Author: Behdad Esfahbod -Date: Sat Jul 8 16:39:52 2006 -0400 - - Include cairo-svg.h in cairo_win32_api_headers. (bug 7462) - - src/Makefile.am | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -commit a443a4215869b3556d9d703c80061879020064ad -Author: Behdad Esfahbod -Date: Thu Jul 6 23:06:14 2006 -0400 - - Fix doc typo. - - src/cairo-matrix.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 731925f00a7391755cabb9253c9a9f2b2dccbdb8 -Author: Behdad Esfahbod -Date: Thu Jul 6 23:05:13 2006 -0400 - - Fix doc syntax. - - src/cairo-matrix.c | 16 ++++++++-------- - 1 files changed, 8 insertions(+), 8 deletions(-) - -commit 9c37cac22b071f9fb00f9000779bb988df6e010c -Author: Behdad Esfahbod -Date: Thu Jul 6 17:52:13 2006 -0400 - - Fix typo when printing error for unsupported X formats. It was mistakenly - marking Green and Blue swapped. - - src/cairo-image-surface.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 807cb2fd8e4867d5aab7bd2c887e17160cf9a22f -Author: David Reveman -Date: Thu Jul 6 13:50:41 2006 -0400 - - Ignore color for CAIRO_OPERATOR_CLEAR in glitz backend. - - src/cairo-glitz-surface.c | 17 +++++++++++------ - 1 files changed, 11 insertions(+), 6 deletions(-) - -commit 95016b3274f4eedf6bd917a5b8bf8f6745c54581 -Author: Behdad Esfahbod -Date: Thu Jul 6 13:48:18 2006 -0400 - - Make CAIRO_TEST_TARGET="" make check pass tests. - - test/cairo-test.c | 9 ++++++--- - 1 files changed, 6 insertions(+), 3 deletions(-) - -commit f90182fe2ad383bf240e2b02003fd7cd0a7e90ff -Author: Behdad Esfahbod -Date: Thu Jul 6 13:42:25 2006 -0400 - - Update test/README - - test/README | 50 +++++++++++++++++++++++++++++++++++++------------- - 1 files changed, 37 insertions(+), 13 deletions(-) - -commit 83dcbe05b5bce6619e650d63be58a35fcb1609c1 -Author: Behdad Esfahbod -Date: Wed Jul 5 04:29:54 2006 +0200 - - For check-valgrind, call the version of libtool in our source distribution, - not the one found in PATH. - - test/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 1cb0bc40a3ab9373d19c186d98059007f288fa13 -Author: Behdad Esfahbod -Date: Wed Jul 5 04:22:32 2006 +0200 - - Do not use sighandler_t. Bug 7401. - - test/cairo-test.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) - -commit 91ad3ae78400d2d942354b8cde514480dffc5090 -Author: Jonathon Jongsma -Date: Tue Jul 4 16:23:24 2006 -0500 - - Fix documentation typo in cairo_scaled_font_get_font_options() - - src/cairo-scaled-font.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 94c5537924da3a6b00b106eda80e61a6f4a9a1f0 -Author: Jonathon Jongsma -Date: Tue Jul 4 14:58:58 2006 -0500 - - Fix a typo in cairo_font_extents_t documentation - - src/cairo.h | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -commit 57a644fb04bfd4831aa1ec1e5f82c989bbf90c8c -Author: Carl Worth -Date: Sat Jul 1 05:06:11 2006 +0200 - - RELEASING: Mention README as the source for blurbs - - RELEASING | 4 +++- - 1 files changed, 3 insertions(+), 1 deletions(-) - -commit 7bff2eb81905b2d1d01f087612fe8c1354166a94 -Author: Carl Worth -Date: Sat Jul 1 04:37:50 2006 +0200 - - Increment CAIRO_VERSION to 1.2.1 after making the 1.2.0 release - - RELEASING | 2 +- - configure.in | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) diff -Nru libgdiplus-4.0-2.10.9/cairo/CODING_STYLE libgdiplus-4.0-4.2.3+precise1/cairo/CODING_STYLE --- libgdiplus-4.0-2.10.9/cairo/CODING_STYLE 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/CODING_STYLE 1970-01-01 00:00:00.000000000 +0000 @@ -1,270 +0,0 @@ -Cairo coding style. - -This document is intended to be a short description of the preferred -coding style for the cairo source code. Good style requires good -taste, which means this can't all be reduced to automated rules, and -there are exceptions. - -We want the code to be easy to understand and maintain, and consistent -style plays an important part in that, even if some of the specific -details seem trivial. If nothing else, this document gives a place to -put consistent answers for issues that would otherwise be arbitrary. - -Most of the guidelines here are demonstrated by examples, (which means -this document is quicker to read than it might appear given its -length). Most of the examples are positive examples that you should -imitate. The few negative examples are clearly marked with a comment -of /* Yuck! */. Please don't submit code to cairo that looks like any -of these. - -Indentation ------------ -Each new level is indented 4 more spaces than the previous level: - - if (condition) - do_something (); - -This may be achieved with space characters or a combination of tab -characters and space characters. It may not be achieved with tab -characters exclusively (see below). - -Tab characters --------------- -The tab character must always be interpreted according to its -traditional meaning: - - Advance to the next column which is a multiple of 8. - -With this definition, even levels of indentation can be achieved with -a sequence of tab characters, while odd levels of indentation may -begin with a sequence of tab character but must end with 4 space -characters. - -Some programmers have been misled by certain text editors into -thinking that 4-space indentation can be achieved with tab characters -exclusively by changing the meaning of tab character to be "advance to -the next column which is a multiple of 4". Code formatted in this way, -making an assumption of a fictitious 4-character-tab will not be -accepted into cairo. - -The rationale here is that tabs are used in the code for lining things -up other than indentation, (see the Whitespace section below), and -changing the interpretation of tab from its traditional meaning will -break this alignment. - -Braces ------- -Most of the code in cairo uses bracing in the style of K&R: - - if (condition) { - do_this (); - do_that (); - } else { - do_the_other (); - } - -but some of the code uses an alternate style: - - if (condition) - { - do_this (); - do_that (); - } - else - { - do_the_other (); - } - -and that seems just fine. We won't lay down any strict rule on this -point, (though there should be some local consistency). If you came -here hoping to find some guidance, then use the first form above. - -If all of the substatements of an if statement are single statements, -the optional braces should not usually appear: - - if (condition) - do_this (); - else - do_that (); - -But the braces are mandatory when mixing single statement and compound -statements in the various clauses. For example, do not do this: - - if (condition) { - do_this (); - do_that (); - } else /* Yuck! */ - do_the_other (); - -And of course, there are exceptions for when the code just looks -better with the braces: - - if (condition) { - /* Note that we have to be careful here. */ - do_something_dangerous (with_care); - } - - if (condition && - other_condition && - yet_another) - { - do_something (); - } - -And note that this last example also shows a situation in which the -opening brace really needs to be on its own line. The following looks awful: - - if (condition && - other_condition && - yet_another) { /* Yuck! */ - do_something (); - } - -As we said above, legible code that is easy to understand and maintain -is the goal, not adherence to strict rules. - -Whitespace ----------- -Separate logically distinct chunks with a single newline. This -obviously applies between functions, but also applies within a -function or block and can even be used to good effect within a -structure definition: - - struct _cairo_gstate { - cairo_operator_t op; - - double tolerance; - - /* stroke style */ - double line_width; - cairo_line_cap_t line_cap; - cairo_line_join_t line_join; - double miter_limit; - - cairo_fill_rule_t fill_rule; - - double *dash; - int num_dashes; - double dash_offset; - - ... - } - -Use a single space before a left parenthesis, except where the -standard will not allow it, (eg. when defining a parameterized macro). - -Don't eliminate newlines just because things would still fit on one -line. This breaks the expected visual structure of the code making it -much harder to read and understand: - - if (condition) foo (); else bar (); /* Yuck! */ - -Do eliminate trailing whitespace (space or tab characters) on any -line. Also, avoid putting initial or final blank lines into any file, -and never use multiple blank lines instead of a single blank line. - -Do enable the default git pre-commit hook that detect trailing -whitespace for you and help you to avoid corrupting cairo's tree with -it. Do that as follows: - - chmod a+x .git/hooks/pre-commit - -You might also find the git-stripspace utility helpful which acts as a -filter to remove trailing whitespace as well as initial, final, and -duplicate blank lines. - -As a special case of the bracing and whitespace guidelines, function -definitions should always take the following form: - - void - my_function (argument) - { - do_my_things (); - } - -And function prototypes should similarly have the return type (and -associated specifiers and qualifiers) on a line above the function, so -that the function name is flush left. - -Break up long lines (> ~80 characters) and use whitespace to align -things nicely. For example the arguments in a long list to a function -call should all be aligned with each other: - - align_function_arguments (argument_the_first, - argument_the_second, - argument_the_third); - -And as a special rule, in a function prototype, (as well as in the -definition), whitespace should be inserted between the parameter types -and names so that the names are aligned: - - void - align_parameter_names_in_prototypes (const char *char_star_arg, - int int_arg, - double *double_star_arg, - double double_arg); - -Note that parameters with a * prefix are aligned one character to the -left so that the actual names are aligned. - -Managing nested blocks ----------------------- -Long blocks that are deeply nested make the code very hard to -read. Fortunately such blocks often indicate logically distinct chunks -of functionality that are begging to be split into their own -functions. Please listen to the blocks when they beg. - -In other cases, gratuitous nesting comes about because the primary -functionality gets buried in a nested block rather than living at the -primary level where it belongs. Consider the following: - - foo = malloc (sizeof (foo_t)); - if (foo) { /* Yuck! */ - ... - /* lots of code to initialize foo */ - ... - return SUCCESS; - } - return FAILURE; - -This kind of gratuitous nesting can be avoided by following a pattern -of handling exceptional cases early and returning: - - foo = malloc (sizeof (foo_t)); - if (foo == NULL) - return FAILURE; - - ... - /* lots of code to initialize foo */ - ... - return SUCCESS; - -The return statement is often the best thing to use in a pattern like -this. If it's not available due to additional nesting above which -require some cleanup after the current block, then consider splitting -the current block into a new function before using goto. - -Memory allocation ------------------ - -Because much of cairo's data consists of dynamically allocated arrays, -it's very easy to introduce integer overflow issues whenever malloc() -is called. Use the _cairo_malloc2(), _cairo_malloc3(), and -_cairo_malloc2_add1 macros to avoid these cases; these macros check -for overflow and will return NULL in that case. - - malloc (n * size) => _cairo_malloc_ab (n, size) - e.g. malloc (num_elts * sizeof(some_type)) => - _cairo_malloc2 (num_elts, sizeof(some_type)) - - malloc (a * b * size) => _cairo_malloc_abc (a, b, size) - e.g. malloc (width * height * 4) => - _cairo_malloc3 (width, height, 4) - - malloc (n * size + k) => _cairo_malloc_ab_plus_c (n, size, k) - e.g. malloc (num * sizeof(entry) + sizeof(header)) => - _cairo_malloc2k (num, sizeof(entry), sizeof(header)) - -In general, be wary of performing any arithmetic operations in an -argument to malloc. You should explicitly check for integer overflow -yourself in any more complex situations. \ No newline at end of file diff -Nru libgdiplus-4.0-2.10.9/cairo/config.h.in libgdiplus-4.0-4.2.3+precise1/cairo/config.h.in --- libgdiplus-4.0-2.10.9/cairo/config.h.in 2012-01-31 17:28:04.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/config.h.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* config.h.in. Generated from configure.in by autoheader. */ - -/* whether Cairo needs memory barriers around atomic ops */ -#undef CAIRO_ATOMIC_OP_NEEDS_MEMORY_BARRIER - -/* define if glitz backend can be tested against agl */ -#undef CAIRO_CAN_TEST_GLITZ_AGL_SURFACE - -/* define if glitz backend can be tested against egl */ -#undef CAIRO_CAN_TEST_GLITZ_EGL_SURFACE - -/* define if glitz backend can be tested against glx */ -#undef CAIRO_CAN_TEST_GLITZ_GLX_SURFACE - -/* define if glitz backend can be tested against wgl */ -#undef CAIRO_CAN_TEST_GLITZ_WGL_SURFACE - -/* Define to 1 if the PDF backend can be tested (need poppler and other - dependencies for pdf2png) */ -#undef CAIRO_CAN_TEST_PDF_SURFACE - -/* Define to 1 if the PS backend can be tested (needs ghostscript) */ -#undef CAIRO_CAN_TEST_PS_SURFACE - -/* Define to 1 if the SVG backend can be tested */ -#undef CAIRO_CAN_TEST_SVG_SURFACE - -/* Define to 1 if the Win32 Printing backend can be tested (needs ghostscript) - */ -#undef CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE - -/* Enable if your compiler supports the Intel __sync_* atomic primitives */ -#undef CAIRO_HAS_INTEL_ATOMIC_PRIMITIVES - -/* define in the extra test surface have been built into cairo for the test - suite */ -#undef CAIRO_HAS_TEST_SURFACES - -/* Define to 1 to disable certain code paths that rely heavily on double - precision floating-point calculation */ -#undef DISABLE_SOME_FLOATING_POINT - -/* Define to 1 if your system stores words within floats with the most - significant word first */ -#undef FLOAT_WORDS_BIGENDIAN - -/* Define to 1 if you have the `ctime_r' function. */ -#undef HAVE_CTIME_R - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `drand48' function. */ -#undef HAVE_DRAND48 - -/* Define to 1 if you have the `FcFini' function. */ -#undef HAVE_FCFINI - -/* FT_Bitmap_Size structure includes y_ppem field */ -#undef HAVE_FT_BITMAP_SIZE_Y_PPEM - -/* Define to 1 if you have the `FT_GlyphSlot_Embolden' function. */ -#undef HAVE_FT_GLYPHSLOT_EMBOLDEN - -/* Define to 1 if you have the `FT_Load_Sfnt_Table' function. */ -#undef HAVE_FT_LOAD_SFNT_TABLE - -/* Whether you have gcov */ -#undef HAVE_GCOV - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBGEN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `poppler_page_render_to_pixbuf' function. */ -#undef HAVE_POPPLER_PAGE_RENDER_TO_PIXBUF - -/* Define to 1 if you have the header file. */ -#undef HAVE_PTHREAD_H - -/* Define to 1 if you have the `rsvg_pixbuf_from_file' function. */ -#undef HAVE_RSVG_PIXBUF_FROM_FILE - -/* Define to 1 if you have Linux compatible sched_getaffinity */ -#undef HAVE_SCHED_GETAFFINITY - -/* Define to 1 if you have the header file. */ -#undef HAVE_SCHED_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SIGNAL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_INT_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if the system has the type `uint128_t'. */ -#undef HAVE_UINT128_T - -/* Define to 1 if the system has the type `uint64_t'. */ -#undef HAVE_UINT64_T - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `vasnprintf' function. */ -#undef HAVE_VASNPRINTF - -/* Define to 1 if you have the header file. */ -#undef HAVE_WINDOWS_H - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION - -/* Define to the value your compiler uses to support the warn-unused-result - attribute */ -#undef WARN_UNUSED_RESULT - -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ -#undef WORDS_BIGENDIAN - - -/* 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 - - -/* Define to 1 if the X Window System is missing or not being used. */ -#undef X_DISPLAY_MISSING - -/* Define to `__inline__' or `__inline' if that's what the C compiler - calls it, or to nothing if 'inline' is not supported under any name. */ -#ifndef __cplusplus -#undef inline -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/configure libgdiplus-4.0-4.2.3+precise1/cairo/configure --- libgdiplus-4.0-2.10.9/cairo/configure 2011-12-02 17:32:03.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/configure 1970-01-01 00:00:00.000000000 +0000 @@ -1,25287 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for cairo 1.6.4. -# -# Report bugs to . -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: http://bugs.freedesktop.org/enter_bug.cgi?product=cairo -$0: about your system, including any error possibly output -$0: before this message. Then install a modern shell, or -$0: manually run the script under such a shell if you do -$0: have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='cairo' -PACKAGE_TARNAME='cairo' -PACKAGE_VERSION='1.6.4' -PACKAGE_STRING='cairo 1.6.4' -PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=cairo' -PACKAGE_URL='' - -ac_unique_file="src/cairo.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -DISABLE_SOME_FLOATING_POINT_FALSE -DISABLE_SOME_FLOATING_POINT_TRUE -CAIRO_HAS_TEST_SURFACES_FALSE -CAIRO_HAS_TEST_SURFACES_TRUE -CAIRO_HAS_LCOV_FALSE -CAIRO_HAS_LCOV_TRUE -LTP_GENHTML -LTP -SHTOOL -PKGCONFIG_REQUIRES -GTK_DOC_USE_LIBTOOL_FALSE -GTK_DOC_USE_LIBTOOL_TRUE -ENABLE_GTK_DOC_FALSE -ENABLE_GTK_DOC_TRUE -HTML_DIR -CAIROPERF_LIBS -CAIRO_LIBS -CAIRO_LDADD -CAIRO_CFLAGS -CAIRO_NONPKGCONFIG_LIBS -CAIRO_NONPKGCONFIG_CFLAGS -CAIRO_REQUIRES -CAIRO_CAN_TEST_SVG_SURFACE_FALSE -CAIRO_CAN_TEST_SVG_SURFACE_TRUE -LIBRSVG_LIBS -LIBRSVG_CFLAGS -CAIRO_HAS_SVG_SURFACE_FALSE -CAIRO_HAS_SVG_SURFACE_TRUE -CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE -CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE -CAIRO_CAN_TEST_PDF_SURFACE_FALSE -CAIRO_CAN_TEST_PDF_SURFACE_TRUE -POPPLER_LIBS -POPPLER_CFLAGS -CAIRO_HAS_PDF_SURFACE_FALSE -CAIRO_HAS_PDF_SURFACE_TRUE -CAIRO_CAN_TEST_PS_SURFACE_FALSE -CAIRO_CAN_TEST_PS_SURFACE_TRUE -CAIRO_HAS_PS_SURFACE_FALSE -CAIRO_HAS_PS_SURFACE_TRUE -HAVE_PTHREAD_FALSE -HAVE_PTHREAD_TRUE -CAIRO_HAS_FT_FONT_FALSE -CAIRO_HAS_FT_FONT_TRUE -FREETYPE_CONFIG -FREETYPE_LIBS -FREETYPE_CFLAGS -FONTCONFIG_LIBS -FONTCONFIG_CFLAGS -CAIRO_HAS_DIRECTFB_SURFACE_FALSE -CAIRO_HAS_DIRECTFB_SURFACE_TRUE -directfb_LIBS -directfb_CFLAGS -CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE -CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE -CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE -CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE -CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE -CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE -CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE -CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE -GLITZ_WGL_LIBS -GLITZ_WGL_CFLAGS -GLITZ_GLX_LIBS -GLITZ_GLX_CFLAGS -GLITZ_EGL_LIBS -GLITZ_EGL_CFLAGS -GLITZ_AGL_LIBS -GLITZ_AGL_CFLAGS -CAIRO_HAS_GLITZ_SURFACE_FALSE -CAIRO_HAS_GLITZ_SURFACE_TRUE -glitz_LIBS -glitz_CFLAGS -CAIRO_HAS_PNG_FUNCTIONS_FALSE -CAIRO_HAS_PNG_FUNCTIONS_TRUE -png_LIBS -png_CFLAGS -png_REQUIRES -CXXCPP -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -CAIRO_HAS_BEOS_SURFACE_FALSE -CAIRO_HAS_BEOS_SURFACE_TRUE -CAIRO_HAS_OS2_SURFACE_FALSE -CAIRO_HAS_OS2_SURFACE_TRUE -CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE -CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE -GS -CAIRO_HAS_WIN32_FONT_FALSE -CAIRO_HAS_WIN32_FONT_TRUE -CAIRO_HAS_WIN32_SURFACE_FALSE -CAIRO_HAS_WIN32_SURFACE_TRUE -OS_WIN32_FALSE -OS_WIN32_TRUE -CAIRO_HAS_QUARTZ_IMAGE_SURFACE_FALSE -CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE -CAIRO_HAS_QUARTZ_FONT_FALSE -CAIRO_HAS_QUARTZ_FONT_TRUE -CAIRO_HAS_QUARTZ_SURFACE_FALSE -CAIRO_HAS_QUARTZ_SURFACE_TRUE -CAIRO_HAS_XCB_SURFACE_FALSE -CAIRO_HAS_XCB_SURFACE_TRUE -xcb_LIBS -xcb_CFLAGS -CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE -CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE -xlib_xrender_LIBS -xlib_xrender_CFLAGS -CAIRO_HAS_XLIB_SURFACE_FALSE -CAIRO_HAS_XLIB_SURFACE_TRUE -X_EXTRA_LIBS -X_LIBS -X_PRE_LIBS -X_CFLAGS -XMKMF -xlib_LIBS -xlib_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -LIBM -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -LIBTOOL -OBJDUMP -DLLTOOL -AS -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -CPP -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -XARGS -FIND -CAIRO_VERSION_MICRO -CAIRO_VERSION_MINOR -CAIRO_VERSION_MAJOR -LT_CURRENT_MINUS_AGE -VERSION_INFO -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_xlib -with_x -enable_xlib_xrender -enable_xcb -enable_quartz -enable_quartz_font -enable_quartz_image -enable_win32 -enable_win32_font -enable_os2 -enable_beos -enable_png -enable_glitz -enable_directfb -enable_freetype -enable_pthread -enable_ps -enable_pdf -enable_svg -with_html_dir -enable_gtk_doc -enable_gcov -enable_test_surfaces -enable_some_floating_point -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -xlib_CFLAGS -xlib_LIBS -XMKMF -xlib_xrender_CFLAGS -xlib_xrender_LIBS -xcb_CFLAGS -xcb_LIBS -CXX -CXXFLAGS -CCC -CXXCPP -png_REQUIRES -png_CFLAGS -png_LIBS -glitz_CFLAGS -glitz_LIBS -GLITZ_AGL_CFLAGS -GLITZ_AGL_LIBS -GLITZ_EGL_CFLAGS -GLITZ_EGL_LIBS -GLITZ_GLX_CFLAGS -GLITZ_GLX_LIBS -GLITZ_WGL_CFLAGS -GLITZ_WGL_LIBS -directfb_CFLAGS -directfb_LIBS -FONTCONFIG_CFLAGS -FONTCONFIG_LIBS -FREETYPE_CFLAGS -FREETYPE_LIBS -POPPLER_CFLAGS -POPPLER_LIBS -LIBRSVG_CFLAGS -LIBRSVG_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures cairo 1.6.4 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/cairo] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of cairo 1.6.4:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-xlib=[no/auto/yes] - Enable cairo's Xlib backend [default=auto] - --enable-xlib-xrender=[no/auto/yes] - Enable cairo's Xlib Xrender backend [default=auto] - --enable-xcb=[no/auto/yes] - Enable cairo's XCB backend [default=no] - --enable-quartz=[no/auto/yes] - Enable cairo's Quartz backend [default=auto] - --enable-quartz-font=[no/auto/yes] - Enable cairo's Quartz font backend [default=auto] - --enable-quartz-image=[no/auto/yes] - Enable cairo's Quartz Image backend [default=no] - --enable-win32=[no/auto/yes] - Enable cairo's Microsoft Windows backend - [default=auto] - --enable-win32-font=[no/auto/yes] - Enable cairo's Microsoft Windows font backend - [default=auto] - --enable-os2=[no/auto/yes] - Enable cairo's OS/2 backend [default=no] - --enable-beos=[no/auto/yes] - Enable cairo's BeOS/Zeta backend [default=no] - --enable-png=[no/auto/yes] - Enable cairo's PNG backend [default=yes] - --enable-glitz=[no/auto/yes] - Enable cairo's glitz backend [default=no] - --enable-directfb=[no/auto/yes] - Enable cairo's directfb backend [default=no] - --enable-freetype=[no/auto/yes] - Enable cairo's FreeType font backend [default=auto] - --disable-pthread Do not use pthread - --enable-ps=[no/auto/yes] - Enable cairo's PostScript backend [default=yes] - --enable-pdf=[no/auto/yes] - Enable cairo's PDF backend [default=yes] - --enable-svg=[no/auto/yes] - Enable cairo's SVG backend [default=yes] - --enable-gtk-doc use gtk-doc to build documentation [default=no] - --enable-gcov Enable gcov - --enable-test-surfaces Add backends for more test suite coverage (no - additional public functionality) - --disable-some-floating-point - Disable certain code paths that rely heavily on - double precision floating-point calculation. This - option can improve performance on systems without a - double precision floating-point unit, but might - degrade performance on those that do. - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - --with-x use the X Window System - --with-html-dir=PATH path to installed docs - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - xlib_CFLAGS C compiler flags for xlib, overriding pkg-config - xlib_LIBS linker flags for xlib, overriding pkg-config - XMKMF Path to xmkmf, Makefile generator for X Window System - xlib_xrender_CFLAGS - C compiler flags for xlib_xrender, overriding pkg-config - xlib_xrender_LIBS - linker flags for xlib_xrender, overriding pkg-config - xcb_CFLAGS C compiler flags for xcb, overriding pkg-config - xcb_LIBS linker flags for xcb, overriding pkg-config - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - png_REQUIRES - module name for libpng to search for using pkg-config - png_CFLAGS C compiler flags for png, overriding pkg-config - png_LIBS linker flags for png, overriding pkg-config - glitz_CFLAGS - C compiler flags for glitz, overriding pkg-config - glitz_LIBS linker flags for glitz, overriding pkg-config - GLITZ_AGL_CFLAGS - C compiler flags for GLITZ_AGL, overriding pkg-config - GLITZ_AGL_LIBS - linker flags for GLITZ_AGL, overriding pkg-config - GLITZ_EGL_CFLAGS - C compiler flags for GLITZ_EGL, overriding pkg-config - GLITZ_EGL_LIBS - linker flags for GLITZ_EGL, overriding pkg-config - GLITZ_GLX_CFLAGS - C compiler flags for GLITZ_GLX, overriding pkg-config - GLITZ_GLX_LIBS - linker flags for GLITZ_GLX, overriding pkg-config - GLITZ_WGL_CFLAGS - C compiler flags for GLITZ_WGL, overriding pkg-config - GLITZ_WGL_LIBS - linker flags for GLITZ_WGL, overriding pkg-config - directfb_CFLAGS - C compiler flags for directfb, overriding pkg-config - directfb_LIBS - linker flags for directfb, overriding pkg-config - FONTCONFIG_CFLAGS - C compiler flags for FONTCONFIG, overriding pkg-config - FONTCONFIG_LIBS - linker flags for FONTCONFIG, overriding pkg-config - FREETYPE_CFLAGS - C compiler flags for FREETYPE, overriding pkg-config - FREETYPE_LIBS - linker flags for FREETYPE, overriding pkg-config - POPPLER_CFLAGS - C compiler flags for POPPLER, overriding pkg-config - POPPLER_LIBS - linker flags for POPPLER, overriding pkg-config - LIBRSVG_CFLAGS - C compiler flags for LIBRSVG, overriding pkg-config - LIBRSVG_LIBS - linker flags for LIBRSVG, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -cairo configure 1.6.4 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ---------------------------------------------------------------------- ## -## Report this to http://bugs.freedesktop.org/enter_bug.cgi?product=cairo ## -## ---------------------------------------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - eval "$4=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_member - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by cairo $as_me 1.6.4, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_config_headers="$ac_config_headers config.h" - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='cairo' - VERSION='1.6.4' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - - -# libtool shared library version - -# Increment if the interface has additions, changes, removals. -LT_CURRENT=19 - -# Increment any time the source changes; set to -# 0 if you increment CURRENT -LT_REVISION=5 - -# 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=17 - - -VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE" - - -LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE` - - -CAIRO_VERSION_MAJOR=1 -CAIRO_VERSION_MINOR=6 -CAIRO_VERSION_MICRO=4 - - - - - -# Extract the first word of "find", so it can be a program name with args. -set dummy find; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FIND+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FIND in - [\\/]* | ?:[\\/]*) - ac_cv_path_FIND="$FIND" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -FIND=$ac_cv_path_FIND -if test -n "$FIND"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 -$as_echo "$FIND" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "xargs", so it can be a program name with args. -set dummy xargs; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XARGS+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $XARGS in - [\\/]* | ?:[\\/]*) - ac_cv_path_XARGS="$XARGS" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_XARGS="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -XARGS=$ac_cv_path_XARGS -if test -n "$XARGS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XARGS" >&5 -$as_echo "$XARGS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - - -case $host_os in - darwin*) - - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether float word ordering is bigendian" >&5 -$as_echo_n "checking whether float word ordering is bigendian... " >&6; } -if ${ax_cv_c_float_words_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - - -# 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 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0; - - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -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 - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_float_words_bigendian" >&5 -$as_echo "$ax_cv_c_float_words_bigendian" >&6; } - -case $ax_cv_c_float_words_bigendian in - yes) - -$as_echo "#define FLOAT_WORDS_BIGENDIAN 1" >>confdefs.h - ;; - no) - ;; - *) - as_fn_error $? " - -Unknown float word ordering. You need to manually preset -ax_cv_c_float_words_bigendian=no (or yes) according to your system. - - " "$LINENO" 5 ;; -esac - - - ;; -esac - - - - - -for ac_func in vasnprintf ctime_r drand48 -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Sun Solaris (non-POSIX ctime_r)" >&5 -$as_echo_n "checking for Sun Solaris (non-POSIX ctime_r)... " >&6; } -case "$host" in - *-*-solaris*) - CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" - solaris_posix_pthread=yes - ;; - *) - solaris_posix_pthread=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $solaris_posix_pthread" >&5 -$as_echo "$solaris_posix_pthread" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native atomic primitives" >&5 -$as_echo_n "checking for native atomic primitives... " >&6; } -cairo_atomic_primitives="none" - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); } -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define CAIRO_HAS_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h - - cairo_atomic_primitives="Intel" - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_atomic_primitives" >&5 -$as_echo "$cairo_atomic_primitives" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether atomic ops require a memory barrier" >&5 -$as_echo_n "checking whether atomic ops require a memory barrier... " >&6; } -case $host_cpu in - i?86) - cairo_atomic_op_needs_memory_barrier="no" - ;; - x86_64) - cairo_atomic_op_needs_memory_barrier="no" - ;; - arm*) - cairo_atomic_op_needs_memory_barrier="no" - ;; - *) - cairo_atomic_op_needs_memory_barrier="yes" - ;; -esac -if test "x$cairo_atomic_op_needs_memory_barrier" = "xyes"; then - -cat >>confdefs.h <<_ACEOF -#define CAIRO_ATOMIC_OP_NEEDS_MEMORY_BARRIER 1 -_ACEOF - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_atomic_op_needs_memory_barrier" >&5 -$as_echo "$cairo_atomic_op_needs_memory_barrier" >&6; } - - -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 -$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; } -if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmw $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char _mwvalidcheckl (); -int -main () -{ -return _mwvalidcheckl (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_mw__mwvalidcheckl=yes -else - ac_cv_lib_mw__mwvalidcheckl=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 -$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } -if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then : - LIBM="-lmw" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes -else - ac_cv_lib_m_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="$LIBM -lm" -fi - - ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 -$as_echo_n "checking for cos in -lm... " >&6; } -if ${ac_cv_lib_m_cos+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cos (); -int -main () -{ -return cos (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_m_cos=yes -else - ac_cv_lib_m_cos=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 -$as_echo "$ac_cv_lib_m_cos" >&6; } -if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="-lm" -fi - - ;; -esac - - -LIBS="$LIBS $LIBM" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress in -lz" >&5 -$as_echo_n "checking for compress in -lz... " >&6; } -if ${ac_cv_lib_z_compress+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char compress (); -int -main () -{ -return compress (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_z_compress=yes -else - ac_cv_lib_z_compress=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress" >&5 -$as_echo "$ac_cv_lib_z_compress" >&6; } -if test "x$ac_cv_lib_z_compress" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes; then : - have_libz=yes -else - have_libz="no (requires zlib http://www.gzip.org/zlib/)" -fi - - -else - have_libz="no (requires zlib http://www.gzip.org/zlib/)" -fi - - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi -if test "x$PKG_CONFIG" = x; then - as_fn_error $? "pkg-config >= $PKGCONFIG_REQUIRED required but not found (http://pkgconfig.freedesktop.org/)" "$LINENO" 5 -fi - - - - - - -CAIRO_FEATURES="" -CAIRO_NO_FEATURES="" -CAIRO_REQUIRES="" -CAIRO_NONPKGCONFIG_CFLAGS="" -CAIRO_NONPKGCONFIG_LIBS="$LIBM" -CAIRO_LDADD="" -CAIRO_CFLAGS=$CAIRO_NONPKGCONFIG_CFLAGS -CAIRO_LIBS=$CAIRO_NONPKGCONFIG_LIBS - - -#PIXMAN_VERSION="0.10.0" -#PIXMAN_REQUIRES="pixman-1 >= $PIXMAN_VERSION" -#PKG_CHECK_MODULES(pixman, $PIXMAN_REQUIRES, , -# [AC_MSG_ERROR([pixman >= $PIXMAN_VERSION is required -#(http://cairographics.org/releases/)])]) - -pixman_CFLAGS='-I$(top_srcdir)/../pixman/pixman' -pixman_LIBS='$(top_builddir)/../pixman/pixman/libpixman-1.la' - -#CAIRO_REQUIRES="$PIXMAN_REQUIRES $CAIRO_REQUIRES" -CAIRO_CFLAGS="$pixman_CFLAGS $CAIRO_CFLAGS" -CAIRO_LIBS="$pixman_LIBS $CAIRO_LIBS" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 -$as_echo_n "checking for X... " >&6; } - - -# Check whether --with-x was given. -if test "${with_x+set}" = set; then : - withval=$with_x; -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( - *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : - $as_echo_n "(cached) " >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl dylib la dll; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /usr/lib64 | /lib | /lib64) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R7/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R7 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R7/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R7 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # We can compile using X headers with no special include directory. -ac_x_includes= -else - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi -rm -f conftest.err conftest.i conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - LIBS=$ac_save_LIBS -for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl dylib la dll; do - if test -r "$ac_dir/libX11.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 -$as_echo "$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 -$as_echo "libraries $x_libraries, headers $x_includes" >&6; } -fi - -# Check whether --enable-xlib was given. -if test "${enable_xlib+set}" = set; then : - enableval=$enable_xlib; enable_xlib=$enableval -else - enable_xlib=auto -fi - - if test "x$enable_xlib" = xno; then - use_xlib="no (disabled, use --enable-xlib to enable)" - else - if test "x$cairo_cv_backend_xlib_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_xlib_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Xlib backend" >&5 -$as_echo_n "checking for cairo's Xlib backend... " >&6; } -if ${cairo_cv_backend_xlib_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_xlib=yes - xlib_REQUIRES=$ac_env_xlib_REQUIRES_value - xlib_CFLAGS=$ac_env_xlib_CFLAGS_value - xlib_LIBS=$ac_env_xlib_LIBS_value - xlib_NONPKGCONFIG_CFLAGS=$ac_env_xlib_NONPKGCONFIG_CFLAGS_value - xlib_NONPKGCONFIG_LIBS=$ac_env_xlib_NONPKGCONFIG_LIBS_value - xlib_BASE=cairo - - xlib_REQUIRES="x11" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xlib" >&5 -$as_echo_n "checking for xlib... " >&6; } - -if test -n "$xlib_CFLAGS"; then - pkg_cv_xlib_CFLAGS="$xlib_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$xlib_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$xlib_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_xlib_CFLAGS=`$PKG_CONFIG --cflags "$xlib_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$xlib_LIBS"; then - pkg_cv_xlib_LIBS="$xlib_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$xlib_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$xlib_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_xlib_LIBS=`$PKG_CONFIG --libs "$xlib_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - xlib_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$xlib_REQUIRES" 2>&1` - else - xlib_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$xlib_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$xlib_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - xlib_REQUIRES="" - if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - -$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 -$as_echo_n "checking whether -R must be followed by a space... " >&6; } - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - ac_xsave_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - X_LIBS="$X_LIBS -R$x_libraries" -else - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - X_LIBS="$X_LIBS -R $x_libraries" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 -$as_echo "neither works" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_c_werror_flag=$ac_xsave_c_werror_flag - LIBS=$ac_xsave_LIBS - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn Johnson says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And Karl Berry says - # the Alpha needs dnet_stub (dnet does not exist). - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XOpenDisplay (); -int -main () -{ -return XOpenDisplay (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 -$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } -if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dnet_dnet_ntoa=yes -else - ac_cv_lib_dnet_dnet_ntoa=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } -if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 -$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } -if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet_stub $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dnet_stub_dnet_ntoa=yes -else - ac_cv_lib_dnet_stub_dnet_ntoa=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } -if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -fi - - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_xsave_LIBS" - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to T.E. Dickey. - # The functions gethostbyname, getservbyname, and inet_addr are - # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes; then : - -fi - - if test $ac_cv_func_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_nsl_gethostbyname=yes -else - ac_cv_lib_nsl_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -fi - - if test $ac_cv_lib_nsl_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 -$as_echo_n "checking for gethostbyname in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_bsd_gethostbyname=yes -else - ac_cv_lib_bsd_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 -$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } -if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" -fi - - fi - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says Simon Leinen: it contains gethostby* - # variants that don't use the name server (or something). -lsocket - # must be given before -lnsl if both are needed. We assume that - # if connect needs -lnsl, so does gethostbyname. - ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -if test "x$ac_cv_func_connect" = xyes; then : - -fi - - if test $ac_cv_func_connect = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 -$as_echo_n "checking for connect in -lsocket... " >&6; } -if ${ac_cv_lib_socket_connect+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char connect (); -int -main () -{ -return connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_connect=yes -else - ac_cv_lib_socket_connect=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 -$as_echo "$ac_cv_lib_socket_connect" >&6; } -if test "x$ac_cv_lib_socket_connect" = xyes; then : - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -fi - - fi - - # Guillermo Gomez says -lposix is necessary on A/UX. - ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" -if test "x$ac_cv_func_remove" = xyes; then : - -fi - - if test $ac_cv_func_remove = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 -$as_echo_n "checking for remove in -lposix... " >&6; } -if ${ac_cv_lib_posix_remove+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lposix $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char remove (); -int -main () -{ -return remove (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_posix_remove=yes -else - ac_cv_lib_posix_remove=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 -$as_echo "$ac_cv_lib_posix_remove" >&6; } -if test "x$ac_cv_lib_posix_remove" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" -if test "x$ac_cv_func_shmat" = xyes; then : - -fi - - if test $ac_cv_func_shmat = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 -$as_echo_n "checking for shmat in -lipc... " >&6; } -if ${ac_cv_lib_ipc_shmat+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lipc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shmat (); -int -main () -{ -return shmat (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ipc_shmat=yes -else - ac_cv_lib_ipc_shmat=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 -$as_echo "$ac_cv_lib_ipc_shmat" >&6; } -if test "x$ac_cv_lib_ipc_shmat" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 -$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } -if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char IceConnectionNumber (); -int -main () -{ -return IceConnectionNumber (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ICE_IceConnectionNumber=yes -else - ac_cv_lib_ICE_IceConnectionNumber=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } -if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - -fi - - if test "x$no_x" = xyes; then - use_xlib="no (requires X development libraries)" - else - xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" - xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS - fi -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - xlib_REQUIRES="" - if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - -$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 -$as_echo_n "checking whether -R must be followed by a space... " >&6; } - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - ac_xsave_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - X_LIBS="$X_LIBS -R$x_libraries" -else - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - X_LIBS="$X_LIBS -R $x_libraries" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 -$as_echo "neither works" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_c_werror_flag=$ac_xsave_c_werror_flag - LIBS=$ac_xsave_LIBS - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn Johnson says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And Karl Berry says - # the Alpha needs dnet_stub (dnet does not exist). - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XOpenDisplay (); -int -main () -{ -return XOpenDisplay (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 -$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } -if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dnet_dnet_ntoa=yes -else - ac_cv_lib_dnet_dnet_ntoa=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } -if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 -$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } -if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet_stub $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dnet_stub_dnet_ntoa=yes -else - ac_cv_lib_dnet_stub_dnet_ntoa=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } -if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -fi - - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_xsave_LIBS" - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to T.E. Dickey. - # The functions gethostbyname, getservbyname, and inet_addr are - # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes; then : - -fi - - if test $ac_cv_func_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_nsl_gethostbyname=yes -else - ac_cv_lib_nsl_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -fi - - if test $ac_cv_lib_nsl_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 -$as_echo_n "checking for gethostbyname in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_bsd_gethostbyname=yes -else - ac_cv_lib_bsd_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 -$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } -if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" -fi - - fi - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says Simon Leinen: it contains gethostby* - # variants that don't use the name server (or something). -lsocket - # must be given before -lnsl if both are needed. We assume that - # if connect needs -lnsl, so does gethostbyname. - ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -if test "x$ac_cv_func_connect" = xyes; then : - -fi - - if test $ac_cv_func_connect = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 -$as_echo_n "checking for connect in -lsocket... " >&6; } -if ${ac_cv_lib_socket_connect+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char connect (); -int -main () -{ -return connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_connect=yes -else - ac_cv_lib_socket_connect=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 -$as_echo "$ac_cv_lib_socket_connect" >&6; } -if test "x$ac_cv_lib_socket_connect" = xyes; then : - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -fi - - fi - - # Guillermo Gomez says -lposix is necessary on A/UX. - ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" -if test "x$ac_cv_func_remove" = xyes; then : - -fi - - if test $ac_cv_func_remove = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 -$as_echo_n "checking for remove in -lposix... " >&6; } -if ${ac_cv_lib_posix_remove+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lposix $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char remove (); -int -main () -{ -return remove (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_posix_remove=yes -else - ac_cv_lib_posix_remove=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 -$as_echo "$ac_cv_lib_posix_remove" >&6; } -if test "x$ac_cv_lib_posix_remove" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" -if test "x$ac_cv_func_shmat" = xyes; then : - -fi - - if test $ac_cv_func_shmat = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 -$as_echo_n "checking for shmat in -lipc... " >&6; } -if ${ac_cv_lib_ipc_shmat+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lipc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shmat (); -int -main () -{ -return shmat (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ipc_shmat=yes -else - ac_cv_lib_ipc_shmat=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 -$as_echo "$ac_cv_lib_ipc_shmat" >&6; } -if test "x$ac_cv_lib_ipc_shmat" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 -$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } -if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char IceConnectionNumber (); -int -main () -{ -return IceConnectionNumber (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ICE_IceConnectionNumber=yes -else - ac_cv_lib_ICE_IceConnectionNumber=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } -if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - -fi - - if test "x$no_x" = xyes; then - use_xlib="no (requires X development libraries)" - else - xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" - xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS - fi -else - xlib_CFLAGS=$pkg_cv_xlib_CFLAGS - xlib_LIBS=$pkg_cv_xlib_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - - cairo_cv_backend_xlib_use=$use_xlib - cairo_cv_backend_xlib_cache_version=4 - cairo_cv_backend_xlib_requires=$xlib_REQUIRES - cairo_cv_backend_xlib_cflags=$xlib_CFLAGS - cairo_cv_backend_xlib_libs=$xlib_LIBS - cairo_cv_backend_xlib_nonpkgconfig_cflags=$xlib_NONPKGCONFIG_CFLAGS - cairo_cv_backend_xlib_nonpkgconfig_libs=$xlib_NONPKGCONFIG_LIBS - cairo_cv_backend_xlib_base=$xlib_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Xlib backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Xlib backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_xlib_use" >&5 -$as_echo "$cairo_cv_backend_xlib_use" >&6; } - - use_xlib=$cairo_cv_backend_xlib_use - xlib_BASE=$cairo_cv_backend_xlib_base - - xlib_REQUIRES="$cairo_cv_backend_xlib_requires " - xlib_CFLAGS="$cairo_cv_backend_xlib_cflags " - xlib_LIBS="$cairo_cv_backend_xlib_libs " - xlib_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_xlib_nonpkgconfig_cflags " - xlib_NONPKGCONFIG_LIBS="$cairo_cv_backend_xlib_nonpkgconfig_libs " - - # null the ones that only have space - test "x$xlib_REQUIRES" = "x " && xlib_REQUIRES="" - test "x$xlib_CFLAGS" = "x " && xlib_CFLAGS="" - test "x$xlib_LIBS" = "x " && xlib_LIBS="" - test "x$xlib_NONPKGCONFIG_CFLAGS" = "x " && xlib_NONPKGCONFIG_CFLAGS="" - test "x$xlib_NONPKGCONFIG_LIBS" = "x " && xlib_NONPKGCONFIG_LIBS="" - - case $enable_xlib in - yes) - if test "x$use_xlib" = xyes; then : - -else - - as_fn_error $? "requested Xlib backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-xlib: $use_xlib, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_xlib" = xyes; then - CAIRO_FEATURES="XLIB_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$xlib_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$xlib_NONPKGCONFIG_CFLAGS$xlib_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$xlib_NONPKGCONFIG_LIBS$xlib_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$xlib_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$xlib_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-xlib.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,xlib,g" \ - -e "s,@Backend_Name@,Xlib,g" \ - -e "s,@BACKEND_BASE@,$xlib_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$xlib_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$xlib_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$xlib_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="XLIB_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_xlib" = xyes; then - CAIRO_HAS_XLIB_SURFACE_TRUE= - CAIRO_HAS_XLIB_SURFACE_FALSE='#' -else - CAIRO_HAS_XLIB_SURFACE_TRUE='#' - CAIRO_HAS_XLIB_SURFACE_FALSE= -fi - - - -# Check whether --enable-xlib-xrender was given. -if test "${enable_xlib_xrender+set}" = set; then : - enableval=$enable_xlib_xrender; enable_xlib_xrender=$enableval -else - enable_xlib_xrender=auto -fi - - if test "x$enable_xlib_xrender" = xno; then - use_xlib_xrender="no (disabled, use --enable-xlib-xrender to enable)" - else - if test "x$cairo_cv_backend_xlib_xrender_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_xlib_xrender_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Xlib Xrender backend" >&5 -$as_echo_n "checking for cairo's Xlib Xrender backend... " >&6; } -if ${cairo_cv_backend_xlib_xrender_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_xlib_xrender=yes - xlib_xrender_REQUIRES=$ac_env_xlib_xrender_REQUIRES_value - xlib_xrender_CFLAGS=$ac_env_xlib_xrender_CFLAGS_value - xlib_xrender_LIBS=$ac_env_xlib_xrender_LIBS_value - xlib_xrender_NONPKGCONFIG_CFLAGS=$ac_env_xlib_xrender_NONPKGCONFIG_CFLAGS_value - xlib_xrender_NONPKGCONFIG_LIBS=$ac_env_xlib_xrender_NONPKGCONFIG_LIBS_value - xlib_xrender_BASE=cairo - - if test "x$use_xlib" != "xyes"; then - use_xlib_xrender="no (requires --enable-xlib)" - else - xlib_xrender_BASE=cairo-xlib - xlib_xrender_REQUIRES="xrender >= 0.6" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xlib_xrender" >&5 -$as_echo_n "checking for xlib_xrender... " >&6; } - -if test -n "$xlib_xrender_CFLAGS"; then - pkg_cv_xlib_xrender_CFLAGS="$xlib_xrender_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$xlib_xrender_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$xlib_xrender_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_xlib_xrender_CFLAGS=`$PKG_CONFIG --cflags "$xlib_xrender_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$xlib_xrender_LIBS"; then - pkg_cv_xlib_xrender_LIBS="$xlib_xrender_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$xlib_xrender_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$xlib_xrender_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_xlib_xrender_LIBS=`$PKG_CONFIG --libs "$xlib_xrender_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - xlib_xrender_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$xlib_xrender_REQUIRES" 2>&1` - else - xlib_xrender_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$xlib_xrender_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$xlib_xrender_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - xlib_xrender_REQUIRES="" - old_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $xlib_CFLAGS $xlib_NONPKGCONFIG_CFLAGS" - ac_fn_c_check_header_mongrel "$LINENO" "X11/extensions/Xrender.h" "ac_cv_header_X11_extensions_Xrender_h" "$ac_includes_default" -if test "x$ac_cv_header_X11_extensions_Xrender_h" = xyes; then : - xlib_xrender_NONPKGCONFIG_LIBS="-lXrender" -else - use_xlib_xrender="no (requires Xrender http://freedesktop.org/Software/xlibs)" -fi - - - CPPFLAGS=$old_CPPFLAGS - -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - xlib_xrender_REQUIRES="" - old_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $xlib_CFLAGS $xlib_NONPKGCONFIG_CFLAGS" - ac_fn_c_check_header_mongrel "$LINENO" "X11/extensions/Xrender.h" "ac_cv_header_X11_extensions_Xrender_h" "$ac_includes_default" -if test "x$ac_cv_header_X11_extensions_Xrender_h" = xyes; then : - xlib_xrender_NONPKGCONFIG_LIBS="-lXrender" -else - use_xlib_xrender="no (requires Xrender http://freedesktop.org/Software/xlibs)" -fi - - - CPPFLAGS=$old_CPPFLAGS - -else - xlib_xrender_CFLAGS=$pkg_cv_xlib_xrender_CFLAGS - xlib_xrender_LIBS=$pkg_cv_xlib_xrender_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - fi - - cairo_cv_backend_xlib_xrender_use=$use_xlib_xrender - cairo_cv_backend_xlib_xrender_cache_version=4 - cairo_cv_backend_xlib_xrender_requires=$xlib_xrender_REQUIRES - cairo_cv_backend_xlib_xrender_cflags=$xlib_xrender_CFLAGS - cairo_cv_backend_xlib_xrender_libs=$xlib_xrender_LIBS - cairo_cv_backend_xlib_xrender_nonpkgconfig_cflags=$xlib_xrender_NONPKGCONFIG_CFLAGS - cairo_cv_backend_xlib_xrender_nonpkgconfig_libs=$xlib_xrender_NONPKGCONFIG_LIBS - cairo_cv_backend_xlib_xrender_base=$xlib_xrender_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Xlib Xrender backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Xlib Xrender backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_xlib_xrender_use" >&5 -$as_echo "$cairo_cv_backend_xlib_xrender_use" >&6; } - - use_xlib_xrender=$cairo_cv_backend_xlib_xrender_use - xlib_xrender_BASE=$cairo_cv_backend_xlib_xrender_base - - xlib_xrender_REQUIRES="$cairo_cv_backend_xlib_xrender_requires " - xlib_xrender_CFLAGS="$cairo_cv_backend_xlib_xrender_cflags " - xlib_xrender_LIBS="$cairo_cv_backend_xlib_xrender_libs " - xlib_xrender_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_xlib_xrender_nonpkgconfig_cflags " - xlib_xrender_NONPKGCONFIG_LIBS="$cairo_cv_backend_xlib_xrender_nonpkgconfig_libs " - - # null the ones that only have space - test "x$xlib_xrender_REQUIRES" = "x " && xlib_xrender_REQUIRES="" - test "x$xlib_xrender_CFLAGS" = "x " && xlib_xrender_CFLAGS="" - test "x$xlib_xrender_LIBS" = "x " && xlib_xrender_LIBS="" - test "x$xlib_xrender_NONPKGCONFIG_CFLAGS" = "x " && xlib_xrender_NONPKGCONFIG_CFLAGS="" - test "x$xlib_xrender_NONPKGCONFIG_LIBS" = "x " && xlib_xrender_NONPKGCONFIG_LIBS="" - - case $enable_xlib_xrender in - yes) - if test "x$use_xlib_xrender" = xyes; then : - -else - - as_fn_error $? "requested Xlib Xrender backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-xlib-xrender: $use_xlib_xrender, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_xlib_xrender" = xyes; then - CAIRO_FEATURES="XLIB_XRENDER_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$xlib_xrender_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$xlib_xrender_NONPKGCONFIG_CFLAGS$xlib_xrender_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$xlib_xrender_NONPKGCONFIG_LIBS$xlib_xrender_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$xlib_xrender_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$xlib_xrender_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-xlib_xrender.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,xlib_xrender,g" \ - -e "s,@Backend_Name@,Xlib Xrender,g" \ - -e "s,@BACKEND_BASE@,$xlib_xrender_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$xlib_xrender_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$xlib_xrender_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$xlib_xrender_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="XLIB_XRENDER_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_xlib_xrender" = xyes; then - CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE= - CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE='#' -else - CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE='#' - CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE= -fi - - - - -# Check whether --enable-xcb was given. -if test "${enable_xcb+set}" = set; then : - enableval=$enable_xcb; enable_xcb=$enableval -else - enable_xcb=no -fi - - if test "x$enable_xcb" = xno; then - use_xcb="no (disabled, use --enable-xcb to enable)" - else - if test "x$cairo_cv_backend_xcb_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_xcb_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's XCB backend" >&5 -$as_echo_n "checking for cairo's XCB backend... " >&6; } -if ${cairo_cv_backend_xcb_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_xcb=yes - xcb_REQUIRES=$ac_env_xcb_REQUIRES_value - xcb_CFLAGS=$ac_env_xcb_CFLAGS_value - xcb_LIBS=$ac_env_xcb_LIBS_value - xcb_NONPKGCONFIG_CFLAGS=$ac_env_xcb_NONPKGCONFIG_CFLAGS_value - xcb_NONPKGCONFIG_LIBS=$ac_env_xcb_NONPKGCONFIG_LIBS_value - xcb_BASE=cairo - - xcb_REQUIRES="xcb >= 0.9.92 xcb-render >= 0.9.92 xcb-renderutil" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xcb" >&5 -$as_echo_n "checking for xcb... " >&6; } - -if test -n "$xcb_CFLAGS"; then - pkg_cv_xcb_CFLAGS="$xcb_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$xcb_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$xcb_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_xcb_CFLAGS=`$PKG_CONFIG --cflags "$xcb_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$xcb_LIBS"; then - pkg_cv_xcb_LIBS="$xcb_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$xcb_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$xcb_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_xcb_LIBS=`$PKG_CONFIG --libs "$xcb_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - xcb_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$xcb_REQUIRES" 2>&1` - else - xcb_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$xcb_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$xcb_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_xcb="no (requires XCB http://xcb.freedesktop.org)" -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_xcb="no (requires XCB http://xcb.freedesktop.org)" -else - xcb_CFLAGS=$pkg_cv_xcb_CFLAGS - xcb_LIBS=$pkg_cv_xcb_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - - cairo_cv_backend_xcb_use=$use_xcb - cairo_cv_backend_xcb_cache_version=4 - cairo_cv_backend_xcb_requires=$xcb_REQUIRES - cairo_cv_backend_xcb_cflags=$xcb_CFLAGS - cairo_cv_backend_xcb_libs=$xcb_LIBS - cairo_cv_backend_xcb_nonpkgconfig_cflags=$xcb_NONPKGCONFIG_CFLAGS - cairo_cv_backend_xcb_nonpkgconfig_libs=$xcb_NONPKGCONFIG_LIBS - cairo_cv_backend_xcb_base=$xcb_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's XCB backend could be enabled" >&5 -$as_echo_n "checking whether cairo's XCB backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_xcb_use" >&5 -$as_echo "$cairo_cv_backend_xcb_use" >&6; } - - use_xcb=$cairo_cv_backend_xcb_use - xcb_BASE=$cairo_cv_backend_xcb_base - - xcb_REQUIRES="$cairo_cv_backend_xcb_requires " - xcb_CFLAGS="$cairo_cv_backend_xcb_cflags " - xcb_LIBS="$cairo_cv_backend_xcb_libs " - xcb_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_xcb_nonpkgconfig_cflags " - xcb_NONPKGCONFIG_LIBS="$cairo_cv_backend_xcb_nonpkgconfig_libs " - - # null the ones that only have space - test "x$xcb_REQUIRES" = "x " && xcb_REQUIRES="" - test "x$xcb_CFLAGS" = "x " && xcb_CFLAGS="" - test "x$xcb_LIBS" = "x " && xcb_LIBS="" - test "x$xcb_NONPKGCONFIG_CFLAGS" = "x " && xcb_NONPKGCONFIG_CFLAGS="" - test "x$xcb_NONPKGCONFIG_LIBS" = "x " && xcb_NONPKGCONFIG_LIBS="" - - case $enable_xcb in - yes) - if test "x$use_xcb" = xyes; then : - -else - - as_fn_error $? "requested XCB backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-xcb: $use_xcb, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_xcb" = xyes; then - CAIRO_FEATURES="XCB_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$xcb_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$xcb_NONPKGCONFIG_CFLAGS$xcb_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$xcb_NONPKGCONFIG_LIBS$xcb_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$xcb_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$xcb_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-xcb.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,xcb,g" \ - -e "s,@Backend_Name@,XCB,g" \ - -e "s,@BACKEND_BASE@,$xcb_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$xcb_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$xcb_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$xcb_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="XCB_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_xcb" = xyes; then - CAIRO_HAS_XCB_SURFACE_TRUE= - CAIRO_HAS_XCB_SURFACE_FALSE='#' -else - CAIRO_HAS_XCB_SURFACE_TRUE='#' - CAIRO_HAS_XCB_SURFACE_FALSE= -fi - - - - -# Check whether --enable-quartz was given. -if test "${enable_quartz+set}" = set; then : - enableval=$enable_quartz; enable_quartz=$enableval -else - enable_quartz=auto -fi - - if test "x$enable_quartz" = xno; then - use_quartz="no (disabled, use --enable-quartz to enable)" - else - if test "x$cairo_cv_backend_quartz_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_quartz_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Quartz backend" >&5 -$as_echo_n "checking for cairo's Quartz backend... " >&6; } -if ${cairo_cv_backend_quartz_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_quartz=yes - quartz_REQUIRES=$ac_env_quartz_REQUIRES_value - quartz_CFLAGS=$ac_env_quartz_CFLAGS_value - quartz_LIBS=$ac_env_quartz_LIBS_value - quartz_NONPKGCONFIG_CFLAGS=$ac_env_quartz_NONPKGCONFIG_CFLAGS_value - quartz_NONPKGCONFIG_LIBS=$ac_env_quartz_NONPKGCONFIG_LIBS_value - quartz_BASE=cairo - - ac_fn_c_check_header_mongrel "$LINENO" "ApplicationServices/ApplicationServices.h" "ac_cv_header_ApplicationServices_ApplicationServices_h" "$ac_includes_default" -if test "x$ac_cv_header_ApplicationServices_ApplicationServices_h" = xyes; then : - -else - use_quartz="no (ApplicationServices framework not found)" -fi - - - if test "x$use_quartz" != "xyes" ; then - ac_fn_c_check_header_mongrel "$LINENO" "CoreGraphics/CoreGraphics.h" "ac_cv_header_CoreGraphics_CoreGraphics_h" "$ac_includes_default" -if test "x$ac_cv_header_CoreGraphics_CoreGraphics_h" = xyes; then : - -else - use_quartz="no (CoreGraphics framework not found)" -fi - - - quartz_LIBS="-Xlinker -framework -Xlinker CoreGraphics" - else - quartz_LIBS="-Xlinker -framework -Xlinker ApplicationServices" - fi - - cairo_cv_backend_quartz_use=$use_quartz - cairo_cv_backend_quartz_cache_version=4 - cairo_cv_backend_quartz_requires=$quartz_REQUIRES - cairo_cv_backend_quartz_cflags=$quartz_CFLAGS - cairo_cv_backend_quartz_libs=$quartz_LIBS - cairo_cv_backend_quartz_nonpkgconfig_cflags=$quartz_NONPKGCONFIG_CFLAGS - cairo_cv_backend_quartz_nonpkgconfig_libs=$quartz_NONPKGCONFIG_LIBS - cairo_cv_backend_quartz_base=$quartz_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Quartz backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Quartz backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_quartz_use" >&5 -$as_echo "$cairo_cv_backend_quartz_use" >&6; } - - use_quartz=$cairo_cv_backend_quartz_use - quartz_BASE=$cairo_cv_backend_quartz_base - - quartz_REQUIRES="$cairo_cv_backend_quartz_requires " - quartz_CFLAGS="$cairo_cv_backend_quartz_cflags " - quartz_LIBS="$cairo_cv_backend_quartz_libs " - quartz_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_quartz_nonpkgconfig_cflags " - quartz_NONPKGCONFIG_LIBS="$cairo_cv_backend_quartz_nonpkgconfig_libs " - - # null the ones that only have space - test "x$quartz_REQUIRES" = "x " && quartz_REQUIRES="" - test "x$quartz_CFLAGS" = "x " && quartz_CFLAGS="" - test "x$quartz_LIBS" = "x " && quartz_LIBS="" - test "x$quartz_NONPKGCONFIG_CFLAGS" = "x " && quartz_NONPKGCONFIG_CFLAGS="" - test "x$quartz_NONPKGCONFIG_LIBS" = "x " && quartz_NONPKGCONFIG_LIBS="" - - case $enable_quartz in - yes) - if test "x$use_quartz" = xyes; then : - -else - - as_fn_error $? "requested Quartz backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-quartz: $use_quartz, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_quartz" = xyes; then - CAIRO_FEATURES="QUARTZ_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$quartz_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$quartz_NONPKGCONFIG_CFLAGS$quartz_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$quartz_NONPKGCONFIG_LIBS$quartz_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$quartz_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$quartz_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-quartz.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,quartz,g" \ - -e "s,@Backend_Name@,Quartz,g" \ - -e "s,@BACKEND_BASE@,$quartz_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$quartz_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$quartz_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$quartz_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="QUARTZ_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_quartz" = xyes; then - CAIRO_HAS_QUARTZ_SURFACE_TRUE= - CAIRO_HAS_QUARTZ_SURFACE_FALSE='#' -else - CAIRO_HAS_QUARTZ_SURFACE_TRUE='#' - CAIRO_HAS_QUARTZ_SURFACE_FALSE= -fi - - - -# Check whether --enable-quartz-font was given. -if test "${enable_quartz_font+set}" = set; then : - enableval=$enable_quartz_font; enable_quartz_font=$enableval -else - enable_quartz_font=auto -fi - - if test "x$enable_quartz_font" = xno; then - use_quartz_font="no (disabled, use --enable-quartz-font to enable)" - else - if test "x$cairo_cv_backend_quartz_font_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_quartz_font_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Quartz font backend" >&5 -$as_echo_n "checking for cairo's Quartz font backend... " >&6; } -if ${cairo_cv_backend_quartz_font_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_quartz_font=yes - quartz_font_REQUIRES=$ac_env_quartz_font_REQUIRES_value - quartz_font_CFLAGS=$ac_env_quartz_font_CFLAGS_value - quartz_font_LIBS=$ac_env_quartz_font_LIBS_value - quartz_font_NONPKGCONFIG_CFLAGS=$ac_env_quartz_font_NONPKGCONFIG_CFLAGS_value - quartz_font_NONPKGCONFIG_LIBS=$ac_env_quartz_font_NONPKGCONFIG_LIBS_value - quartz_font_BASE=cairo - - use_quartz_font=$use_quartz - - cairo_cv_backend_quartz_font_use=$use_quartz_font - cairo_cv_backend_quartz_font_cache_version=4 - cairo_cv_backend_quartz_font_requires=$quartz_font_REQUIRES - cairo_cv_backend_quartz_font_cflags=$quartz_font_CFLAGS - cairo_cv_backend_quartz_font_libs=$quartz_font_LIBS - cairo_cv_backend_quartz_font_nonpkgconfig_cflags=$quartz_font_NONPKGCONFIG_CFLAGS - cairo_cv_backend_quartz_font_nonpkgconfig_libs=$quartz_font_NONPKGCONFIG_LIBS - cairo_cv_backend_quartz_font_base=$quartz_font_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Quartz font backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Quartz font backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_quartz_font_use" >&5 -$as_echo "$cairo_cv_backend_quartz_font_use" >&6; } - - use_quartz_font=$cairo_cv_backend_quartz_font_use - quartz_font_BASE=$cairo_cv_backend_quartz_font_base - - quartz_font_REQUIRES="$cairo_cv_backend_quartz_font_requires " - quartz_font_CFLAGS="$cairo_cv_backend_quartz_font_cflags " - quartz_font_LIBS="$cairo_cv_backend_quartz_font_libs " - quartz_font_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_quartz_font_nonpkgconfig_cflags " - quartz_font_NONPKGCONFIG_LIBS="$cairo_cv_backend_quartz_font_nonpkgconfig_libs " - - # null the ones that only have space - test "x$quartz_font_REQUIRES" = "x " && quartz_font_REQUIRES="" - test "x$quartz_font_CFLAGS" = "x " && quartz_font_CFLAGS="" - test "x$quartz_font_LIBS" = "x " && quartz_font_LIBS="" - test "x$quartz_font_NONPKGCONFIG_CFLAGS" = "x " && quartz_font_NONPKGCONFIG_CFLAGS="" - test "x$quartz_font_NONPKGCONFIG_LIBS" = "x " && quartz_font_NONPKGCONFIG_LIBS="" - - case $enable_quartz_font in - yes) - if test "x$use_quartz_font" = xyes; then : - -else - - as_fn_error $? "requested Quartz font backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-quartz-font: $use_quartz_font, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_quartz_font" = xyes; then - CAIRO_FEATURES="QUARTZ_FONT $CAIRO_FEATURES" - CAIRO_REQUIRES="$quartz_font_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$quartz_font_NONPKGCONFIG_CFLAGS$quartz_font_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$quartz_font_NONPKGCONFIG_LIBS$quartz_font_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$quartz_font_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$quartz_font_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-quartz_font.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,quartz_font,g" \ - -e "s,@Backend_Name@,Quartz font,g" \ - -e "s,@BACKEND_BASE@,$quartz_font_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$quartz_font_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$quartz_font_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$quartz_font_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="QUARTZ_FONT $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_quartz_font" = xyes; then - CAIRO_HAS_QUARTZ_FONT_TRUE= - CAIRO_HAS_QUARTZ_FONT_FALSE='#' -else - CAIRO_HAS_QUARTZ_FONT_TRUE='#' - CAIRO_HAS_QUARTZ_FONT_FALSE= -fi - - - -# Check whether --enable-quartz-image was given. -if test "${enable_quartz_image+set}" = set; then : - enableval=$enable_quartz_image; enable_quartz_image=$enableval -else - enable_quartz_image=no -fi - - if test "x$enable_quartz_image" = xno; then - use_quartz_image="no (disabled, use --enable-quartz-image to enable)" - else - if test "x$cairo_cv_backend_quartz_image_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_quartz_image_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Quartz Image backend" >&5 -$as_echo_n "checking for cairo's Quartz Image backend... " >&6; } -if ${cairo_cv_backend_quartz_image_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_quartz_image=yes - quartz_image_REQUIRES=$ac_env_quartz_image_REQUIRES_value - quartz_image_CFLAGS=$ac_env_quartz_image_CFLAGS_value - quartz_image_LIBS=$ac_env_quartz_image_LIBS_value - quartz_image_NONPKGCONFIG_CFLAGS=$ac_env_quartz_image_NONPKGCONFIG_CFLAGS_value - quartz_image_NONPKGCONFIG_LIBS=$ac_env_quartz_image_NONPKGCONFIG_LIBS_value - quartz_image_BASE=cairo - - use_quartz_image=$use_quartz - - cairo_cv_backend_quartz_image_use=$use_quartz_image - cairo_cv_backend_quartz_image_cache_version=4 - cairo_cv_backend_quartz_image_requires=$quartz_image_REQUIRES - cairo_cv_backend_quartz_image_cflags=$quartz_image_CFLAGS - cairo_cv_backend_quartz_image_libs=$quartz_image_LIBS - cairo_cv_backend_quartz_image_nonpkgconfig_cflags=$quartz_image_NONPKGCONFIG_CFLAGS - cairo_cv_backend_quartz_image_nonpkgconfig_libs=$quartz_image_NONPKGCONFIG_LIBS - cairo_cv_backend_quartz_image_base=$quartz_image_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Quartz Image backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Quartz Image backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_quartz_image_use" >&5 -$as_echo "$cairo_cv_backend_quartz_image_use" >&6; } - - use_quartz_image=$cairo_cv_backend_quartz_image_use - quartz_image_BASE=$cairo_cv_backend_quartz_image_base - - quartz_image_REQUIRES="$cairo_cv_backend_quartz_image_requires " - quartz_image_CFLAGS="$cairo_cv_backend_quartz_image_cflags " - quartz_image_LIBS="$cairo_cv_backend_quartz_image_libs " - quartz_image_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_quartz_image_nonpkgconfig_cflags " - quartz_image_NONPKGCONFIG_LIBS="$cairo_cv_backend_quartz_image_nonpkgconfig_libs " - - # null the ones that only have space - test "x$quartz_image_REQUIRES" = "x " && quartz_image_REQUIRES="" - test "x$quartz_image_CFLAGS" = "x " && quartz_image_CFLAGS="" - test "x$quartz_image_LIBS" = "x " && quartz_image_LIBS="" - test "x$quartz_image_NONPKGCONFIG_CFLAGS" = "x " && quartz_image_NONPKGCONFIG_CFLAGS="" - test "x$quartz_image_NONPKGCONFIG_LIBS" = "x " && quartz_image_NONPKGCONFIG_LIBS="" - - case $enable_quartz_image in - yes) - if test "x$use_quartz_image" = xyes; then : - -else - - as_fn_error $? "requested Quartz Image backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-quartz-image: $use_quartz_image, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_quartz_image" = xyes; then - CAIRO_FEATURES="QUARTZ_IMAGE_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$quartz_image_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$quartz_image_NONPKGCONFIG_CFLAGS$quartz_image_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$quartz_image_NONPKGCONFIG_LIBS$quartz_image_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$quartz_image_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$quartz_image_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-quartz_image.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,quartz_image,g" \ - -e "s,@Backend_Name@,Quartz Image,g" \ - -e "s,@BACKEND_BASE@,$quartz_image_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$quartz_image_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$quartz_image_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$quartz_image_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="QUARTZ_IMAGE_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_quartz_image" = xyes; then - CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE= - CAIRO_HAS_QUARTZ_IMAGE_SURFACE_FALSE='#' -else - CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE='#' - CAIRO_HAS_QUARTZ_IMAGE_SURFACE_FALSE= -fi - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native Win32" >&5 -$as_echo_n "checking for native Win32... " >&6; } -case "$host" in - *-*-mingw*) - cairo_os_win32=yes - ;; - *) - cairo_os_win32=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_os_win32" >&5 -$as_echo "$cairo_os_win32" >&6; } - if test "$cairo_os_win32" = "yes"; then - OS_WIN32_TRUE= - OS_WIN32_FALSE='#' -else - OS_WIN32_TRUE='#' - OS_WIN32_FALSE= -fi - - -for ac_header in windows.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" -if test "x$ac_cv_header_windows_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WINDOWS_H 1 -_ACEOF - have_windows=yes -else - have_windows=no -fi - -done - - -# Check whether --enable-win32 was given. -if test "${enable_win32+set}" = set; then : - enableval=$enable_win32; enable_win32=$enableval -else - enable_win32=auto -fi - - if test "x$enable_win32" = xno; then - use_win32="no (disabled, use --enable-win32 to enable)" - else - if test "x$cairo_cv_backend_win32_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_win32_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Microsoft Windows backend" >&5 -$as_echo_n "checking for cairo's Microsoft Windows backend... " >&6; } -if ${cairo_cv_backend_win32_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_win32=yes - win32_REQUIRES=$ac_env_win32_REQUIRES_value - win32_CFLAGS=$ac_env_win32_CFLAGS_value - win32_LIBS=$ac_env_win32_LIBS_value - win32_NONPKGCONFIG_CFLAGS=$ac_env_win32_NONPKGCONFIG_CFLAGS_value - win32_NONPKGCONFIG_LIBS=$ac_env_win32_NONPKGCONFIG_LIBS_value - win32_BASE=cairo - - if test "x$have_windows" != xyes; then - use_win32="no (requires a Win32 platform)" - fi - win32_LIBS="-lgdi32 -lmsimg32" - - cairo_cv_backend_win32_use=$use_win32 - cairo_cv_backend_win32_cache_version=4 - cairo_cv_backend_win32_requires=$win32_REQUIRES - cairo_cv_backend_win32_cflags=$win32_CFLAGS - cairo_cv_backend_win32_libs=$win32_LIBS - cairo_cv_backend_win32_nonpkgconfig_cflags=$win32_NONPKGCONFIG_CFLAGS - cairo_cv_backend_win32_nonpkgconfig_libs=$win32_NONPKGCONFIG_LIBS - cairo_cv_backend_win32_base=$win32_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Microsoft Windows backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Microsoft Windows backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_win32_use" >&5 -$as_echo "$cairo_cv_backend_win32_use" >&6; } - - use_win32=$cairo_cv_backend_win32_use - win32_BASE=$cairo_cv_backend_win32_base - - win32_REQUIRES="$cairo_cv_backend_win32_requires " - win32_CFLAGS="$cairo_cv_backend_win32_cflags " - win32_LIBS="$cairo_cv_backend_win32_libs " - win32_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_win32_nonpkgconfig_cflags " - win32_NONPKGCONFIG_LIBS="$cairo_cv_backend_win32_nonpkgconfig_libs " - - # null the ones that only have space - test "x$win32_REQUIRES" = "x " && win32_REQUIRES="" - test "x$win32_CFLAGS" = "x " && win32_CFLAGS="" - test "x$win32_LIBS" = "x " && win32_LIBS="" - test "x$win32_NONPKGCONFIG_CFLAGS" = "x " && win32_NONPKGCONFIG_CFLAGS="" - test "x$win32_NONPKGCONFIG_LIBS" = "x " && win32_NONPKGCONFIG_LIBS="" - - case $enable_win32 in - yes) - if test "x$use_win32" = xyes; then : - -else - - as_fn_error $? "requested Microsoft Windows backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-win32: $use_win32, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_win32" = xyes; then - CAIRO_FEATURES="WIN32_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$win32_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$win32_NONPKGCONFIG_CFLAGS$win32_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$win32_NONPKGCONFIG_LIBS$win32_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$win32_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$win32_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-win32.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,win32,g" \ - -e "s,@Backend_Name@,Microsoft Windows,g" \ - -e "s,@BACKEND_BASE@,$win32_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$win32_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$win32_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$win32_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="WIN32_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_win32" = xyes; then - CAIRO_HAS_WIN32_SURFACE_TRUE= - CAIRO_HAS_WIN32_SURFACE_FALSE='#' -else - CAIRO_HAS_WIN32_SURFACE_TRUE='#' - CAIRO_HAS_WIN32_SURFACE_FALSE= -fi - - - -# Check whether --enable-win32-font was given. -if test "${enable_win32_font+set}" = set; then : - enableval=$enable_win32_font; enable_win32_font=$enableval -else - enable_win32_font=auto -fi - - if test "x$enable_win32_font" = xno; then - use_win32_font="no (disabled, use --enable-win32-font to enable)" - else - if test "x$cairo_cv_backend_win32_font_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_win32_font_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's Microsoft Windows font backend" >&5 -$as_echo_n "checking for cairo's Microsoft Windows font backend... " >&6; } -if ${cairo_cv_backend_win32_font_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_win32_font=yes - win32_font_REQUIRES=$ac_env_win32_font_REQUIRES_value - win32_font_CFLAGS=$ac_env_win32_font_CFLAGS_value - win32_font_LIBS=$ac_env_win32_font_LIBS_value - win32_font_NONPKGCONFIG_CFLAGS=$ac_env_win32_font_NONPKGCONFIG_CFLAGS_value - win32_font_NONPKGCONFIG_LIBS=$ac_env_win32_font_NONPKGCONFIG_LIBS_value - win32_font_BASE=cairo - - use_win32_font=$use_win32 - - cairo_cv_backend_win32_font_use=$use_win32_font - cairo_cv_backend_win32_font_cache_version=4 - cairo_cv_backend_win32_font_requires=$win32_font_REQUIRES - cairo_cv_backend_win32_font_cflags=$win32_font_CFLAGS - cairo_cv_backend_win32_font_libs=$win32_font_LIBS - cairo_cv_backend_win32_font_nonpkgconfig_cflags=$win32_font_NONPKGCONFIG_CFLAGS - cairo_cv_backend_win32_font_nonpkgconfig_libs=$win32_font_NONPKGCONFIG_LIBS - cairo_cv_backend_win32_font_base=$win32_font_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's Microsoft Windows font backend could be enabled" >&5 -$as_echo_n "checking whether cairo's Microsoft Windows font backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_win32_font_use" >&5 -$as_echo "$cairo_cv_backend_win32_font_use" >&6; } - - use_win32_font=$cairo_cv_backend_win32_font_use - win32_font_BASE=$cairo_cv_backend_win32_font_base - - win32_font_REQUIRES="$cairo_cv_backend_win32_font_requires " - win32_font_CFLAGS="$cairo_cv_backend_win32_font_cflags " - win32_font_LIBS="$cairo_cv_backend_win32_font_libs " - win32_font_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_win32_font_nonpkgconfig_cflags " - win32_font_NONPKGCONFIG_LIBS="$cairo_cv_backend_win32_font_nonpkgconfig_libs " - - # null the ones that only have space - test "x$win32_font_REQUIRES" = "x " && win32_font_REQUIRES="" - test "x$win32_font_CFLAGS" = "x " && win32_font_CFLAGS="" - test "x$win32_font_LIBS" = "x " && win32_font_LIBS="" - test "x$win32_font_NONPKGCONFIG_CFLAGS" = "x " && win32_font_NONPKGCONFIG_CFLAGS="" - test "x$win32_font_NONPKGCONFIG_LIBS" = "x " && win32_font_NONPKGCONFIG_LIBS="" - - case $enable_win32_font in - yes) - if test "x$use_win32_font" = xyes; then : - -else - - as_fn_error $? "requested Microsoft Windows font backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-win32-font: $use_win32_font, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_win32_font" = xyes; then - CAIRO_FEATURES="WIN32_FONT $CAIRO_FEATURES" - CAIRO_REQUIRES="$win32_font_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$win32_font_NONPKGCONFIG_CFLAGS$win32_font_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$win32_font_NONPKGCONFIG_LIBS$win32_font_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$win32_font_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$win32_font_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-win32_font.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,win32_font,g" \ - -e "s,@Backend_Name@,Microsoft Windows font,g" \ - -e "s,@BACKEND_BASE@,$win32_font_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$win32_font_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$win32_font_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$win32_font_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="WIN32_FONT $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_win32_font" = xyes; then - CAIRO_HAS_WIN32_FONT_TRUE= - CAIRO_HAS_WIN32_FONT_FALSE='#' -else - CAIRO_HAS_WIN32_FONT_TRUE='#' - CAIRO_HAS_WIN32_FONT_FALSE= -fi - - - -test_win32_printing=no -if test "x$use_win32" = "xyes"; then - # Extract the first word of "gs", so it can be a program name with args. -set dummy gs; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$GS"; then - ac_cv_prog_GS="$GS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_GS="gs" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -GS=$ac_cv_prog_GS -if test -n "$GS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GS" >&5 -$as_echo "$GS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$GS"; then - -$as_echo "#define CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE 1" >>confdefs.h - - test_win32_printing="yes" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Win32 Printing backend will not be tested since ghostscript is not available" >&5 -$as_echo "$as_me: WARNING: Win32 Printing backend will not be tested since ghostscript is not available" >&2;} - test_win32_printing="no (requires ghostscript)" - fi -fi - - if test "x$test_win32_printing" = "xyes"; then - CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE= - CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE='#' - CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE= -fi - - - -# Check whether --enable-os2 was given. -if test "${enable_os2+set}" = set; then : - enableval=$enable_os2; enable_os2=$enableval -else - enable_os2=no -fi - - if test "x$enable_os2" = xno; then - use_os2="no (disabled, use --enable-os2 to enable)" - else - if test "x$cairo_cv_backend_os2_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_os2_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's OS/2 backend" >&5 -$as_echo_n "checking for cairo's OS/2 backend... " >&6; } -if ${cairo_cv_backend_os2_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_os2=yes - os2_REQUIRES=$ac_env_os2_REQUIRES_value - os2_CFLAGS=$ac_env_os2_CFLAGS_value - os2_LIBS=$ac_env_os2_LIBS_value - os2_NONPKGCONFIG_CFLAGS=$ac_env_os2_NONPKGCONFIG_CFLAGS_value - os2_NONPKGCONFIG_LIBS=$ac_env_os2_NONPKGCONFIG_LIBS_value - os2_BASE=cairo - - case "$host" in - *-*-os2*) - : - ;; - *) - use_os2="no (requires an OS/2 platform)" - ;; - esac - - cairo_cv_backend_os2_use=$use_os2 - cairo_cv_backend_os2_cache_version=4 - cairo_cv_backend_os2_requires=$os2_REQUIRES - cairo_cv_backend_os2_cflags=$os2_CFLAGS - cairo_cv_backend_os2_libs=$os2_LIBS - cairo_cv_backend_os2_nonpkgconfig_cflags=$os2_NONPKGCONFIG_CFLAGS - cairo_cv_backend_os2_nonpkgconfig_libs=$os2_NONPKGCONFIG_LIBS - cairo_cv_backend_os2_base=$os2_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's OS/2 backend could be enabled" >&5 -$as_echo_n "checking whether cairo's OS/2 backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_os2_use" >&5 -$as_echo "$cairo_cv_backend_os2_use" >&6; } - - use_os2=$cairo_cv_backend_os2_use - os2_BASE=$cairo_cv_backend_os2_base - - os2_REQUIRES="$cairo_cv_backend_os2_requires " - os2_CFLAGS="$cairo_cv_backend_os2_cflags " - os2_LIBS="$cairo_cv_backend_os2_libs " - os2_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_os2_nonpkgconfig_cflags " - os2_NONPKGCONFIG_LIBS="$cairo_cv_backend_os2_nonpkgconfig_libs " - - # null the ones that only have space - test "x$os2_REQUIRES" = "x " && os2_REQUIRES="" - test "x$os2_CFLAGS" = "x " && os2_CFLAGS="" - test "x$os2_LIBS" = "x " && os2_LIBS="" - test "x$os2_NONPKGCONFIG_CFLAGS" = "x " && os2_NONPKGCONFIG_CFLAGS="" - test "x$os2_NONPKGCONFIG_LIBS" = "x " && os2_NONPKGCONFIG_LIBS="" - - case $enable_os2 in - yes) - if test "x$use_os2" = xyes; then : - -else - - as_fn_error $? "requested OS/2 backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-os2: $use_os2, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_os2" = xyes; then - CAIRO_FEATURES="OS2_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$os2_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$os2_NONPKGCONFIG_CFLAGS$os2_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$os2_NONPKGCONFIG_LIBS$os2_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$os2_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$os2_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-os2.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,os2,g" \ - -e "s,@Backend_Name@,OS/2,g" \ - -e "s,@BACKEND_BASE@,$os2_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$os2_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$os2_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$os2_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="OS2_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_os2" = xyes; then - CAIRO_HAS_OS2_SURFACE_TRUE= - CAIRO_HAS_OS2_SURFACE_FALSE='#' -else - CAIRO_HAS_OS2_SURFACE_TRUE='#' - CAIRO_HAS_OS2_SURFACE_FALSE= -fi - - - - -# Check whether --enable-beos was given. -if test "${enable_beos+set}" = set; then : - enableval=$enable_beos; enable_beos=$enableval -else - enable_beos=no -fi - - if test "x$enable_beos" = xno; then - use_beos="no (disabled, use --enable-beos to enable)" - else - if test "x$cairo_cv_backend_beos_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_beos_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's BeOS/Zeta backend" >&5 -$as_echo_n "checking for cairo's BeOS/Zeta backend... " >&6; } -if ${cairo_cv_backend_beos_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_beos=yes - beos_REQUIRES=$ac_env_beos_REQUIRES_value - beos_CFLAGS=$ac_env_beos_CFLAGS_value - beos_LIBS=$ac_env_beos_LIBS_value - beos_NONPKGCONFIG_CFLAGS=$ac_env_beos_NONPKGCONFIG_CFLAGS_value - beos_NONPKGCONFIG_LIBS=$ac_env_beos_NONPKGCONFIG_LIBS_value - beos_BASE=cairo - - case "$host" in - *-*-beos) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lbe" >&5 -$as_echo_n "checking for main in -lbe... " >&6; } -if ${ac_cv_lib_be_main+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbe $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_be_main=yes -else - ac_cv_lib_be_main=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_be_main" >&5 -$as_echo "$ac_cv_lib_be_main" >&6; } -if test "x$ac_cv_lib_be_main" = xyes; then : - beos_LIBS="$beos_LIBS -lbe" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lzeta" >&5 -$as_echo_n "checking for main in -lzeta... " >&6; } -if ${ac_cv_lib_zeta_main+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lzeta $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_zeta_main=yes -else - ac_cv_lib_zeta_main=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zeta_main" >&5 -$as_echo "$ac_cv_lib_zeta_main" >&6; } -if test "x$ac_cv_lib_zeta_main" = xyes; then : - beos_LIBS="$beos_LIBS -lzeta" -fi - - ;; - *) - use_beos="no (requires a BeOS platform)" - ;; - esac - - cairo_cv_backend_beos_use=$use_beos - cairo_cv_backend_beos_cache_version=4 - cairo_cv_backend_beos_requires=$beos_REQUIRES - cairo_cv_backend_beos_cflags=$beos_CFLAGS - cairo_cv_backend_beos_libs=$beos_LIBS - cairo_cv_backend_beos_nonpkgconfig_cflags=$beos_NONPKGCONFIG_CFLAGS - cairo_cv_backend_beos_nonpkgconfig_libs=$beos_NONPKGCONFIG_LIBS - cairo_cv_backend_beos_base=$beos_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's BeOS/Zeta backend could be enabled" >&5 -$as_echo_n "checking whether cairo's BeOS/Zeta backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_beos_use" >&5 -$as_echo "$cairo_cv_backend_beos_use" >&6; } - - use_beos=$cairo_cv_backend_beos_use - beos_BASE=$cairo_cv_backend_beos_base - - beos_REQUIRES="$cairo_cv_backend_beos_requires " - beos_CFLAGS="$cairo_cv_backend_beos_cflags " - beos_LIBS="$cairo_cv_backend_beos_libs " - beos_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_beos_nonpkgconfig_cflags " - beos_NONPKGCONFIG_LIBS="$cairo_cv_backend_beos_nonpkgconfig_libs " - - # null the ones that only have space - test "x$beos_REQUIRES" = "x " && beos_REQUIRES="" - test "x$beos_CFLAGS" = "x " && beos_CFLAGS="" - test "x$beos_LIBS" = "x " && beos_LIBS="" - test "x$beos_NONPKGCONFIG_CFLAGS" = "x " && beos_NONPKGCONFIG_CFLAGS="" - test "x$beos_NONPKGCONFIG_LIBS" = "x " && beos_NONPKGCONFIG_LIBS="" - - case $enable_beos in - yes) - if test "x$use_beos" = xyes; then : - -else - - as_fn_error $? "requested BeOS/Zeta backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-beos: $use_beos, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_beos" = xyes; then - CAIRO_FEATURES="BEOS_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$beos_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$beos_NONPKGCONFIG_CFLAGS$beos_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$beos_NONPKGCONFIG_LIBS$beos_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$beos_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$beos_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-beos.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,beos,g" \ - -e "s,@Backend_Name@,BeOS/Zeta,g" \ - -e "s,@BACKEND_BASE@,$beos_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$beos_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$beos_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$beos_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="BEOS_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_beos" = xyes; then - CAIRO_HAS_BEOS_SURFACE_TRUE= - CAIRO_HAS_BEOS_SURFACE_FALSE='#' -else - CAIRO_HAS_BEOS_SURFACE_TRUE='#' - CAIRO_HAS_BEOS_SURFACE_FALSE= -fi - - - -# Uncomment the if, since with it in place compilation breaks on OpenSuSE 11.1b4 -#if test "x$use_beos" = "xyes"; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -#fi - - -# Check whether --enable-png was given. -if test "${enable_png+set}" = set; then : - enableval=$enable_png; enable_png=$enableval -else - enable_png=yes -fi - - if test "x$enable_png" = xno; then - use_png="no (disabled, use --enable-png to enable)" - else - if test "x$cairo_cv_backend_png_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_png_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's PNG backend" >&5 -$as_echo_n "checking for cairo's PNG backend... " >&6; } -if ${cairo_cv_backend_png_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_png=yes - png_REQUIRES=$ac_env_png_REQUIRES_value - png_CFLAGS=$ac_env_png_CFLAGS_value - png_LIBS=$ac_env_png_LIBS_value - png_NONPKGCONFIG_CFLAGS=$ac_env_png_NONPKGCONFIG_CFLAGS_value - png_NONPKGCONFIG_LIBS=$ac_env_png_NONPKGCONFIG_LIBS_value - png_BASE=cairo - - use_png=no - - if test "x$png_REQUIRES" = x; then - # 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 - else - use_png=yes - fi - - if test "x$use_png" = "xyes" ; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for png" >&5 -$as_echo_n "checking for png... " >&6; } - -if test -n "$png_CFLAGS"; then - pkg_cv_png_CFLAGS="$png_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$png_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$png_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_png_CFLAGS=`$PKG_CONFIG --cflags "$png_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$png_LIBS"; then - pkg_cv_png_LIBS="$png_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$png_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$png_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_png_LIBS=`$PKG_CONFIG --libs "$png_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - png_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$png_REQUIRES" 2>&1` - else - png_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$png_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$png_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - png_CFLAGS=$pkg_cv_png_CFLAGS - png_LIBS=$pkg_cv_png_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find libpng in the pkg-config search path" >&5 -$as_echo "$as_me: WARNING: Could not find libpng in the pkg-config search path" >&2;} - fi - - cairo_cv_backend_png_use=$use_png - cairo_cv_backend_png_cache_version=4 - cairo_cv_backend_png_requires=$png_REQUIRES - cairo_cv_backend_png_cflags=$png_CFLAGS - cairo_cv_backend_png_libs=$png_LIBS - cairo_cv_backend_png_nonpkgconfig_cflags=$png_NONPKGCONFIG_CFLAGS - cairo_cv_backend_png_nonpkgconfig_libs=$png_NONPKGCONFIG_LIBS - cairo_cv_backend_png_base=$png_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's PNG backend could be enabled" >&5 -$as_echo_n "checking whether cairo's PNG backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_png_use" >&5 -$as_echo "$cairo_cv_backend_png_use" >&6; } - - use_png=$cairo_cv_backend_png_use - png_BASE=$cairo_cv_backend_png_base - - png_REQUIRES="$cairo_cv_backend_png_requires " - png_CFLAGS="$cairo_cv_backend_png_cflags " - png_LIBS="$cairo_cv_backend_png_libs " - png_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_png_nonpkgconfig_cflags " - png_NONPKGCONFIG_LIBS="$cairo_cv_backend_png_nonpkgconfig_libs " - - # null the ones that only have space - test "x$png_REQUIRES" = "x " && png_REQUIRES="" - test "x$png_CFLAGS" = "x " && png_CFLAGS="" - test "x$png_LIBS" = "x " && png_LIBS="" - test "x$png_NONPKGCONFIG_CFLAGS" = "x " && png_NONPKGCONFIG_CFLAGS="" - test "x$png_NONPKGCONFIG_LIBS" = "x " && png_NONPKGCONFIG_LIBS="" - - case $enable_png in - yes) - if test "x$use_png" = xyes; then : - -else - - as_fn_error $? "requested PNG backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-png: $use_png, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_png" = xyes; then - CAIRO_FEATURES="PNG_FUNCTIONS $CAIRO_FEATURES" - CAIRO_REQUIRES="$png_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$png_NONPKGCONFIG_CFLAGS$png_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$png_NONPKGCONFIG_LIBS$png_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$png_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$png_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-png.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,png,g" \ - -e "s,@Backend_Name@,PNG,g" \ - -e "s,@BACKEND_BASE@,$png_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$png_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$png_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$png_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="PNG_FUNCTIONS $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_png" = xyes; then - CAIRO_HAS_PNG_FUNCTIONS_TRUE= - CAIRO_HAS_PNG_FUNCTIONS_FALSE='#' -else - CAIRO_HAS_PNG_FUNCTIONS_TRUE='#' - CAIRO_HAS_PNG_FUNCTIONS_FALSE= -fi - - - -if test "x$use_png" = "xyes"; then - : -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** To run the tests, cairo must be built with png support ***" >&5 -$as_echo "$as_me: WARNING: *** To run the tests, cairo must be built with png support ***" >&2;} -fi - - -GLITZ_MIN_VERSION=0.5.1 -# Check whether --enable-glitz was given. -if test "${enable_glitz+set}" = set; then : - enableval=$enable_glitz; enable_glitz=$enableval -else - enable_glitz=no -fi - - if test "x$enable_glitz" = xno; then - use_glitz="no (disabled, use --enable-glitz to enable)" - else - if test "x$cairo_cv_backend_glitz_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_glitz_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's glitz backend" >&5 -$as_echo_n "checking for cairo's glitz backend... " >&6; } -if ${cairo_cv_backend_glitz_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_glitz=yes - glitz_REQUIRES=$ac_env_glitz_REQUIRES_value - glitz_CFLAGS=$ac_env_glitz_CFLAGS_value - glitz_LIBS=$ac_env_glitz_LIBS_value - glitz_NONPKGCONFIG_CFLAGS=$ac_env_glitz_NONPKGCONFIG_CFLAGS_value - glitz_NONPKGCONFIG_LIBS=$ac_env_glitz_NONPKGCONFIG_LIBS_value - glitz_BASE=cairo - - glitz_REQUIRES="glitz >= $GLITZ_MIN_VERSION" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for glitz" >&5 -$as_echo_n "checking for glitz... " >&6; } - -if test -n "$glitz_CFLAGS"; then - pkg_cv_glitz_CFLAGS="$glitz_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$glitz_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$glitz_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_glitz_CFLAGS=`$PKG_CONFIG --cflags "$glitz_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$glitz_LIBS"; then - pkg_cv_glitz_LIBS="$glitz_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$glitz_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$glitz_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_glitz_LIBS=`$PKG_CONFIG --libs "$glitz_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - glitz_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$glitz_REQUIRES" 2>&1` - else - glitz_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$glitz_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$glitz_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_glitz="no (requires glitz http://freedesktop.org/Software/glitz)" -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_glitz="no (requires glitz http://freedesktop.org/Software/glitz)" -else - glitz_CFLAGS=$pkg_cv_glitz_CFLAGS - glitz_LIBS=$pkg_cv_glitz_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - - cairo_cv_backend_glitz_use=$use_glitz - cairo_cv_backend_glitz_cache_version=4 - cairo_cv_backend_glitz_requires=$glitz_REQUIRES - cairo_cv_backend_glitz_cflags=$glitz_CFLAGS - cairo_cv_backend_glitz_libs=$glitz_LIBS - cairo_cv_backend_glitz_nonpkgconfig_cflags=$glitz_NONPKGCONFIG_CFLAGS - cairo_cv_backend_glitz_nonpkgconfig_libs=$glitz_NONPKGCONFIG_LIBS - cairo_cv_backend_glitz_base=$glitz_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's glitz backend could be enabled" >&5 -$as_echo_n "checking whether cairo's glitz backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_glitz_use" >&5 -$as_echo "$cairo_cv_backend_glitz_use" >&6; } - - use_glitz=$cairo_cv_backend_glitz_use - glitz_BASE=$cairo_cv_backend_glitz_base - - glitz_REQUIRES="$cairo_cv_backend_glitz_requires " - glitz_CFLAGS="$cairo_cv_backend_glitz_cflags " - glitz_LIBS="$cairo_cv_backend_glitz_libs " - glitz_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_glitz_nonpkgconfig_cflags " - glitz_NONPKGCONFIG_LIBS="$cairo_cv_backend_glitz_nonpkgconfig_libs " - - # null the ones that only have space - test "x$glitz_REQUIRES" = "x " && glitz_REQUIRES="" - test "x$glitz_CFLAGS" = "x " && glitz_CFLAGS="" - test "x$glitz_LIBS" = "x " && glitz_LIBS="" - test "x$glitz_NONPKGCONFIG_CFLAGS" = "x " && glitz_NONPKGCONFIG_CFLAGS="" - test "x$glitz_NONPKGCONFIG_LIBS" = "x " && glitz_NONPKGCONFIG_LIBS="" - - case $enable_glitz in - yes) - if test "x$use_glitz" = xyes; then : - -else - - as_fn_error $? "requested glitz backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-glitz: $use_glitz, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_glitz" = xyes; then - CAIRO_FEATURES="GLITZ_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$glitz_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$glitz_NONPKGCONFIG_CFLAGS$glitz_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$glitz_NONPKGCONFIG_LIBS$glitz_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$glitz_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$glitz_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-glitz.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,glitz,g" \ - -e "s,@Backend_Name@,glitz,g" \ - -e "s,@BACKEND_BASE@,$glitz_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$glitz_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$glitz_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$glitz_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="GLITZ_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_glitz" = xyes; then - CAIRO_HAS_GLITZ_SURFACE_TRUE= - CAIRO_HAS_GLITZ_SURFACE_FALSE='#' -else - CAIRO_HAS_GLITZ_SURFACE_TRUE='#' - CAIRO_HAS_GLITZ_SURFACE_FALSE= -fi - - - -if test "x$use_glitz" = "xyes";then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLITZ_AGL" >&5 -$as_echo_n "checking for GLITZ_AGL... " >&6; } - -if test -n "$GLITZ_AGL_CFLAGS"; then - pkg_cv_GLITZ_AGL_CFLAGS="$GLITZ_AGL_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-agl >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-agl >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_AGL_CFLAGS=`$PKG_CONFIG --cflags "glitz-agl >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$GLITZ_AGL_LIBS"; then - pkg_cv_GLITZ_AGL_LIBS="$GLITZ_AGL_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-agl >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-agl >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_AGL_LIBS=`$PKG_CONFIG --libs "glitz-agl >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GLITZ_AGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glitz-agl >= $GLITZ_MIN_VERSION" 2>&1` - else - GLITZ_AGL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glitz-agl >= $GLITZ_MIN_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GLITZ_AGL_PKG_ERRORS" >&5 - - have_glitz_agl=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_glitz_agl=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - GLITZ_AGL_CFLAGS=$pkg_cv_GLITZ_AGL_CFLAGS - GLITZ_AGL_LIBS=$pkg_cv_GLITZ_AGL_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_glitz_agl=yes -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLITZ_EGL" >&5 -$as_echo_n "checking for GLITZ_EGL... " >&6; } - -if test -n "$GLITZ_EGL_CFLAGS"; then - pkg_cv_GLITZ_EGL_CFLAGS="$GLITZ_EGL_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-egl >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-egl >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_EGL_CFLAGS=`$PKG_CONFIG --cflags "glitz-egl >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$GLITZ_EGL_LIBS"; then - pkg_cv_GLITZ_EGL_LIBS="$GLITZ_EGL_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-egl >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-egl >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_EGL_LIBS=`$PKG_CONFIG --libs "glitz-egl >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GLITZ_EGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glitz-egl >= $GLITZ_MIN_VERSION" 2>&1` - else - GLITZ_EGL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glitz-egl >= $GLITZ_MIN_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GLITZ_EGL_PKG_ERRORS" >&5 - - have_glitz_egl=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_glitz_egl=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - GLITZ_EGL_CFLAGS=$pkg_cv_GLITZ_EGL_CFLAGS - GLITZ_EGL_LIBS=$pkg_cv_GLITZ_EGL_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_glitz_egl=yes -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLITZ_GLX" >&5 -$as_echo_n "checking for GLITZ_GLX... " >&6; } - -if test -n "$GLITZ_GLX_CFLAGS"; then - pkg_cv_GLITZ_GLX_CFLAGS="$GLITZ_GLX_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-glx >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-glx >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_GLX_CFLAGS=`$PKG_CONFIG --cflags "glitz-glx >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$GLITZ_GLX_LIBS"; then - pkg_cv_GLITZ_GLX_LIBS="$GLITZ_GLX_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-glx >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-glx >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_GLX_LIBS=`$PKG_CONFIG --libs "glitz-glx >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GLITZ_GLX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glitz-glx >= $GLITZ_MIN_VERSION" 2>&1` - else - GLITZ_GLX_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glitz-glx >= $GLITZ_MIN_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GLITZ_GLX_PKG_ERRORS" >&5 - - have_glitz_glx=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_glitz_glx=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - GLITZ_GLX_CFLAGS=$pkg_cv_GLITZ_GLX_CFLAGS - GLITZ_GLX_LIBS=$pkg_cv_GLITZ_GLX_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_glitz_glx=yes -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLITZ_WGL" >&5 -$as_echo_n "checking for GLITZ_WGL... " >&6; } - -if test -n "$GLITZ_WGL_CFLAGS"; then - pkg_cv_GLITZ_WGL_CFLAGS="$GLITZ_WGL_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-wgl >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-wgl >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_WGL_CFLAGS=`$PKG_CONFIG --cflags "glitz-wgl >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$GLITZ_WGL_LIBS"; then - pkg_cv_GLITZ_WGL_LIBS="$GLITZ_WGL_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glitz-wgl >= \$GLITZ_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glitz-wgl >= $GLITZ_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GLITZ_WGL_LIBS=`$PKG_CONFIG --libs "glitz-wgl >= $GLITZ_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GLITZ_WGL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glitz-wgl >= $GLITZ_MIN_VERSION" 2>&1` - else - GLITZ_WGL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glitz-wgl >= $GLITZ_MIN_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GLITZ_WGL_PKG_ERRORS" >&5 - - have_glitz_wgl=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_glitz_wgl=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - GLITZ_WGL_CFLAGS=$pkg_cv_GLITZ_WGL_CFLAGS - GLITZ_WGL_LIBS=$pkg_cv_GLITZ_WGL_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - have_glitz_wgl=yes -fi - - if test "x$have_glitz_agl" = "xyes";then - -$as_echo "#define CAIRO_CAN_TEST_GLITZ_AGL_SURFACE 1" >>confdefs.h - - fi - if test "x$have_glitz_egl" = "xyes";then - -$as_echo "#define CAIRO_CAN_TEST_GLITZ_EGL_SURFACE 1" >>confdefs.h - - fi - if test "x$have_glitz_glx" = "xyes";then - -$as_echo "#define CAIRO_CAN_TEST_GLITZ_GLX_SURFACE 1" >>confdefs.h - - fi - if test "x$have_glitz_wgl" = "xyes";then - -$as_echo "#define CAIRO_CAN_TEST_GLITZ_WGL_SURFACE 1" >>confdefs.h - - fi -fi - - if test "x$have_glitz_agl" = "xyes"; then - CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE= - CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE='#' - CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE= -fi - - if test "x$have_glitz_egl" = "xyes"; then - CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE= - CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE='#' - CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE= -fi - - if test "x$have_glitz_glx" = "xyes"; then - CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE= - CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE='#' - CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE= -fi - - if test "x$have_glitz_wgl" = "xyes"; then - CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE= - CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE='#' - CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE= -fi - - - -# Check whether --enable-directfb was given. -if test "${enable_directfb+set}" = set; then : - enableval=$enable_directfb; enable_directfb=$enableval -else - enable_directfb=no -fi - - if test "x$enable_directfb" = xno; then - use_directfb="no (disabled, use --enable-directfb to enable)" - else - if test "x$cairo_cv_backend_directfb_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_directfb_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's directfb backend" >&5 -$as_echo_n "checking for cairo's directfb backend... " >&6; } -if ${cairo_cv_backend_directfb_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_directfb=yes - directfb_REQUIRES=$ac_env_directfb_REQUIRES_value - directfb_CFLAGS=$ac_env_directfb_CFLAGS_value - directfb_LIBS=$ac_env_directfb_LIBS_value - directfb_NONPKGCONFIG_CFLAGS=$ac_env_directfb_NONPKGCONFIG_CFLAGS_value - directfb_NONPKGCONFIG_LIBS=$ac_env_directfb_NONPKGCONFIG_LIBS_value - directfb_BASE=cairo - - directfb_REQUIRES=directfb - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for directfb" >&5 -$as_echo_n "checking for directfb... " >&6; } - -if test -n "$directfb_CFLAGS"; then - pkg_cv_directfb_CFLAGS="$directfb_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$directfb_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$directfb_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_directfb_CFLAGS=`$PKG_CONFIG --cflags "$directfb_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$directfb_LIBS"; then - pkg_cv_directfb_LIBS="$directfb_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$directfb_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$directfb_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_directfb_LIBS=`$PKG_CONFIG --libs "$directfb_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - directfb_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$directfb_REQUIRES" 2>&1` - else - directfb_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$directfb_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$directfb_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_directfb="no (requires directfb http://www.directfb.org)" -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_directfb="no (requires directfb http://www.directfb.org)" -else - directfb_CFLAGS=$pkg_cv_directfb_CFLAGS - directfb_LIBS=$pkg_cv_directfb_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - - cairo_cv_backend_directfb_use=$use_directfb - cairo_cv_backend_directfb_cache_version=4 - cairo_cv_backend_directfb_requires=$directfb_REQUIRES - cairo_cv_backend_directfb_cflags=$directfb_CFLAGS - cairo_cv_backend_directfb_libs=$directfb_LIBS - cairo_cv_backend_directfb_nonpkgconfig_cflags=$directfb_NONPKGCONFIG_CFLAGS - cairo_cv_backend_directfb_nonpkgconfig_libs=$directfb_NONPKGCONFIG_LIBS - cairo_cv_backend_directfb_base=$directfb_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's directfb backend could be enabled" >&5 -$as_echo_n "checking whether cairo's directfb backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_directfb_use" >&5 -$as_echo "$cairo_cv_backend_directfb_use" >&6; } - - use_directfb=$cairo_cv_backend_directfb_use - directfb_BASE=$cairo_cv_backend_directfb_base - - directfb_REQUIRES="$cairo_cv_backend_directfb_requires " - directfb_CFLAGS="$cairo_cv_backend_directfb_cflags " - directfb_LIBS="$cairo_cv_backend_directfb_libs " - directfb_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_directfb_nonpkgconfig_cflags " - directfb_NONPKGCONFIG_LIBS="$cairo_cv_backend_directfb_nonpkgconfig_libs " - - # null the ones that only have space - test "x$directfb_REQUIRES" = "x " && directfb_REQUIRES="" - test "x$directfb_CFLAGS" = "x " && directfb_CFLAGS="" - test "x$directfb_LIBS" = "x " && directfb_LIBS="" - test "x$directfb_NONPKGCONFIG_CFLAGS" = "x " && directfb_NONPKGCONFIG_CFLAGS="" - test "x$directfb_NONPKGCONFIG_LIBS" = "x " && directfb_NONPKGCONFIG_LIBS="" - - case $enable_directfb in - yes) - if test "x$use_directfb" = xyes; then : - -else - - as_fn_error $? "requested directfb backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-directfb: $use_directfb, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_directfb" = xyes; then - CAIRO_FEATURES="DIRECTFB_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$directfb_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$directfb_NONPKGCONFIG_CFLAGS$directfb_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$directfb_NONPKGCONFIG_LIBS$directfb_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$directfb_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$directfb_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-directfb.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,directfb,g" \ - -e "s,@Backend_Name@,directfb,g" \ - -e "s,@BACKEND_BASE@,$directfb_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$directfb_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$directfb_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$directfb_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="DIRECTFB_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_directfb" = xyes; then - CAIRO_HAS_DIRECTFB_SURFACE_TRUE= - CAIRO_HAS_DIRECTFB_SURFACE_FALSE='#' -else - CAIRO_HAS_DIRECTFB_SURFACE_TRUE='#' - CAIRO_HAS_DIRECTFB_SURFACE_FALSE= -fi - - - - -# 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.9) -# libtool (such as 9.7.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 - -# Check whether --enable-freetype was given. -if test "${enable_freetype+set}" = set; then : - enableval=$enable_freetype; enable_ft=$enableval -else - enable_ft=auto -fi - - if test "x$enable_ft" = xno; then - use_ft="no (disabled, use --enable-freetype to enable)" - else - if test "x$cairo_cv_backend_ft_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_ft_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's FreeType font backend" >&5 -$as_echo_n "checking for cairo's FreeType font backend... " >&6; } -if ${cairo_cv_backend_ft_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_ft=yes - ft_REQUIRES=$ac_env_ft_REQUIRES_value - ft_CFLAGS=$ac_env_ft_CFLAGS_value - ft_LIBS=$ac_env_ft_LIBS_value - ft_NONPKGCONFIG_CFLAGS=$ac_env_ft_NONPKGCONFIG_CFLAGS_value - ft_NONPKGCONFIG_LIBS=$ac_env_ft_NONPKGCONFIG_LIBS_value - ft_BASE=cairo - - ft_REQUIRES="fontconfig" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FONTCONFIG" >&5 -$as_echo_n "checking for FONTCONFIG... " >&6; } - -if test -n "$FONTCONFIG_CFLAGS"; then - pkg_cv_FONTCONFIG_CFLAGS="$FONTCONFIG_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$ft_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$ft_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "$ft_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FONTCONFIG_LIBS"; then - pkg_cv_FONTCONFIG_LIBS="$FONTCONFIG_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$ft_REQUIRES\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$ft_REQUIRES") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FONTCONFIG_LIBS=`$PKG_CONFIG --libs "$ft_REQUIRES" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$ft_REQUIRES" 2>&1` - else - FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$ft_REQUIRES" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FONTCONFIG_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_ft=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - use_ft=no -else - FONTCONFIG_CFLAGS=$pkg_cv_FONTCONFIG_CFLAGS - FONTCONFIG_LIBS=$pkg_cv_FONTCONFIG_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - use_ft=yes -fi - - if test "x$use_ft" = "xyes"; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FREETYPE" >&5 -$as_echo_n "checking for FREETYPE... " >&6; } - -if test -n "$FREETYPE_CFLAGS"; then - pkg_cv_FREETYPE_CFLAGS="$FREETYPE_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= \$FREETYPE_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "freetype2 >= $FREETYPE_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2 >= $FREETYPE_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FREETYPE_LIBS"; then - pkg_cv_FREETYPE_LIBS="$FREETYPE_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2 >= \$FREETYPE_MIN_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "freetype2 >= $FREETYPE_MIN_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2 >= $FREETYPE_MIN_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "freetype2 >= $FREETYPE_MIN_VERSION" 2>&1` - else - FREETYPE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "freetype2 >= $FREETYPE_MIN_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FREETYPE_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - freetype_pkgconfig=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - freetype_pkgconfig=no -else - FREETYPE_CFLAGS=$pkg_cv_FREETYPE_CFLAGS - FREETYPE_LIBS=$pkg_cv_FREETYPE_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - freetype_pkgconfig=yes -fi - - if test "x$freetype_pkgconfig" = "xyes"; then - ft_REQUIRES="freetype2 >= $FREETYPE_MIN_VERSION $ft_REQUIRES" - else - - if test -z "$FREETYPE_CONFIG"; then - # Extract the first word of "freetype-config", so it can be a program name with args. -set dummy freetype-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FREETYPE_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FREETYPE_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_FREETYPE_CONFIG" && ac_cv_path_FREETYPE_CONFIG="no" - ;; -esac -fi -FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG -if test -n "$FREETYPE_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_CONFIG" >&5 -$as_echo "$FREETYPE_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi - if test "x$FREETYPE_CONFIG" = "xno" ; then - use_ft='no (freetype-config not found in path or $FREETYPE_CONFIG)' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking freetype2 libtool version" >&5 -$as_echo_n "checking freetype2 libtool version... " >&6; } - - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_VERSION - Too old" >&5 -$as_echo "$FREETYPE_VERSION - Too old" >&6; } - use_ft="no ($FREETYPE_VERSION found; version $FREETYPE_MIN_VERSION from release $FREETYPE_MIN_RELEASE required)" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_VERSION - OK" >&5 -$as_echo "$FREETYPE_VERSION - OK" >&6; } - - ft_NONPKGCONFIG_CFLAGS=`$FREETYPE_CONFIG --cflags` - ft_NONPKGCONFIG_LIBS=`$FREETYPE_CONFIG --libs` - fi - fi - fi - fi - ft_CFLAGS="$FREETYPE_CFLAGS $FONTCONFIG_CFLAGS" - ft_LIBS="$FREETYPE_LIBS $FONTCONFIG_LIBS" - - cairo_cv_backend_ft_use=$use_ft - cairo_cv_backend_ft_cache_version=4 - cairo_cv_backend_ft_requires=$ft_REQUIRES - cairo_cv_backend_ft_cflags=$ft_CFLAGS - cairo_cv_backend_ft_libs=$ft_LIBS - cairo_cv_backend_ft_nonpkgconfig_cflags=$ft_NONPKGCONFIG_CFLAGS - cairo_cv_backend_ft_nonpkgconfig_libs=$ft_NONPKGCONFIG_LIBS - cairo_cv_backend_ft_base=$ft_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's FreeType font backend could be enabled" >&5 -$as_echo_n "checking whether cairo's FreeType font backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_ft_use" >&5 -$as_echo "$cairo_cv_backend_ft_use" >&6; } - - use_ft=$cairo_cv_backend_ft_use - ft_BASE=$cairo_cv_backend_ft_base - - ft_REQUIRES="$cairo_cv_backend_ft_requires " - ft_CFLAGS="$cairo_cv_backend_ft_cflags " - ft_LIBS="$cairo_cv_backend_ft_libs " - ft_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_ft_nonpkgconfig_cflags " - ft_NONPKGCONFIG_LIBS="$cairo_cv_backend_ft_nonpkgconfig_libs " - - # null the ones that only have space - test "x$ft_REQUIRES" = "x " && ft_REQUIRES="" - test "x$ft_CFLAGS" = "x " && ft_CFLAGS="" - test "x$ft_LIBS" = "x " && ft_LIBS="" - test "x$ft_NONPKGCONFIG_CFLAGS" = "x " && ft_NONPKGCONFIG_CFLAGS="" - test "x$ft_NONPKGCONFIG_LIBS" = "x " && ft_NONPKGCONFIG_LIBS="" - - case $enable_ft in - yes) - if test "x$use_ft" = xyes; then : - -else - - as_fn_error $? "requested FreeType font backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-freetype: $use_ft, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_ft" = xyes; then - CAIRO_FEATURES="FT_FONT $CAIRO_FEATURES" - CAIRO_REQUIRES="$ft_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$ft_NONPKGCONFIG_CFLAGS$ft_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$ft_NONPKGCONFIG_LIBS$ft_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$ft_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$ft_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-ft.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,ft,g" \ - -e "s,@Backend_Name@,FreeType font,g" \ - -e "s,@BACKEND_BASE@,$ft_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$ft_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$ft_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$ft_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="FT_FONT $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_ft" = xyes; then - CAIRO_HAS_FT_FONT_TRUE= - CAIRO_HAS_FT_FONT_FALSE='#' -else - CAIRO_HAS_FT_FONT_TRUE='#' - CAIRO_HAS_FT_FONT_FALSE= -fi - - - -if test "x$use_ft" = "xyes"; then - temp_save_libs="$LIBS" - temp_save_cflags="$CFLAGS" - LIBS="$LIBS $ft_LIBS" - CFLAGS="$CFLAGS $ft_CFLAGS" - ac_fn_c_check_member "$LINENO" "FT_Bitmap_Size" "y_ppem" "ac_cv_member_FT_Bitmap_Size_y_ppem" "#include - #include FT_FREETYPE_H -" -if test "x$ac_cv_member_FT_Bitmap_Size_y_ppem" = xyes; then : - HAVE_FT_BITMAP_SIZE_Y_PPEM=1 -else - HAVE_FT_BITMAP_SIZE_Y_PPEM=0 -fi - - -cat >>confdefs.h <<_ACEOF -#define HAVE_FT_BITMAP_SIZE_Y_PPEM $HAVE_FT_BITMAP_SIZE_Y_PPEM -_ACEOF - - - for ac_func in FT_GlyphSlot_Embolden FT_Load_Sfnt_Table -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - LIBS="$temp_save_libs" - CFLAGS="$temp_save_cflags" -fi - - -# Check whether --enable-pthread was given. -if test "${enable_pthread+set}" = set; then : - enableval=$enable_pthread; use_pthread=$enableval -else - use_pthread=auto -fi - - -have_pthread=no -if test "x$use_pthread" != "xno"; then - for ac_header in pthread.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_H 1 -_ACEOF - have_pthread=yes -else - have_pthread=no -fi - -done - -fi - if test "x$have_pthread" = "xyes"; then - HAVE_PTHREAD_TRUE= - HAVE_PTHREAD_FALSE='#' -else - HAVE_PTHREAD_TRUE='#' - HAVE_PTHREAD_FALSE= -fi - -if test "x$have_pthread" = xno -a "x$use_pthread" = xyes; then - as_fn_error $? "pthread requested but not found" "$LINENO" 5 -fi - - -# Check whether --enable-ps was given. -if test "${enable_ps+set}" = set; then : - enableval=$enable_ps; enable_ps=$enableval -else - enable_ps=yes -fi - - if test "x$enable_ps" = xno; then - use_ps="no (disabled, use --enable-ps to enable)" - else - if test "x$cairo_cv_backend_ps_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_ps_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's PostScript backend" >&5 -$as_echo_n "checking for cairo's PostScript backend... " >&6; } -if ${cairo_cv_backend_ps_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_ps=yes - ps_REQUIRES=$ac_env_ps_REQUIRES_value - ps_CFLAGS=$ac_env_ps_CFLAGS_value - ps_LIBS=$ac_env_ps_LIBS_value - ps_NONPKGCONFIG_CFLAGS=$ac_env_ps_NONPKGCONFIG_CFLAGS_value - ps_NONPKGCONFIG_LIBS=$ac_env_ps_NONPKGCONFIG_LIBS_value - ps_BASE=cairo - - # The ps backend requires zlib. - use_ps=$have_libz - ps_NONPKGCONFIG_LIBS=-lz - - cairo_cv_backend_ps_use=$use_ps - cairo_cv_backend_ps_cache_version=4 - cairo_cv_backend_ps_requires=$ps_REQUIRES - cairo_cv_backend_ps_cflags=$ps_CFLAGS - cairo_cv_backend_ps_libs=$ps_LIBS - cairo_cv_backend_ps_nonpkgconfig_cflags=$ps_NONPKGCONFIG_CFLAGS - cairo_cv_backend_ps_nonpkgconfig_libs=$ps_NONPKGCONFIG_LIBS - cairo_cv_backend_ps_base=$ps_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's PostScript backend could be enabled" >&5 -$as_echo_n "checking whether cairo's PostScript backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_ps_use" >&5 -$as_echo "$cairo_cv_backend_ps_use" >&6; } - - use_ps=$cairo_cv_backend_ps_use - ps_BASE=$cairo_cv_backend_ps_base - - ps_REQUIRES="$cairo_cv_backend_ps_requires " - ps_CFLAGS="$cairo_cv_backend_ps_cflags " - ps_LIBS="$cairo_cv_backend_ps_libs " - ps_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_ps_nonpkgconfig_cflags " - ps_NONPKGCONFIG_LIBS="$cairo_cv_backend_ps_nonpkgconfig_libs " - - # null the ones that only have space - test "x$ps_REQUIRES" = "x " && ps_REQUIRES="" - test "x$ps_CFLAGS" = "x " && ps_CFLAGS="" - test "x$ps_LIBS" = "x " && ps_LIBS="" - test "x$ps_NONPKGCONFIG_CFLAGS" = "x " && ps_NONPKGCONFIG_CFLAGS="" - test "x$ps_NONPKGCONFIG_LIBS" = "x " && ps_NONPKGCONFIG_LIBS="" - - case $enable_ps in - yes) - if test "x$use_ps" = xyes; then : - -else - - as_fn_error $? "requested PostScript backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-ps: $use_ps, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_ps" = xyes; then - CAIRO_FEATURES="PS_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$ps_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$ps_NONPKGCONFIG_CFLAGS$ps_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$ps_NONPKGCONFIG_LIBS$ps_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$ps_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$ps_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-ps.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,ps,g" \ - -e "s,@Backend_Name@,PostScript,g" \ - -e "s,@BACKEND_BASE@,$ps_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$ps_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$ps_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$ps_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="PS_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_ps" = xyes; then - CAIRO_HAS_PS_SURFACE_TRUE= - CAIRO_HAS_PS_SURFACE_FALSE='#' -else - CAIRO_HAS_PS_SURFACE_TRUE='#' - CAIRO_HAS_PS_SURFACE_FALSE= -fi - - - -test_ps=no -if test "x$use_ps" = "xyes"; then - # Extract the first word of "gs", so it can be a program name with args. -set dummy gs; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$GS"; then - ac_cv_prog_GS="$GS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_GS="gs" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -GS=$ac_cv_prog_GS -if test -n "$GS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GS" >&5 -$as_echo "$GS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$GS"; then - -$as_echo "#define CAIRO_CAN_TEST_PS_SURFACE 1" >>confdefs.h - - test_ps="yes" - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PS backend will not be tested since ghostscript is not available" >&5 -$as_echo "$as_me: WARNING: PS backend will not be tested since ghostscript is not available" >&2;} - test_ps="no (requires ghostscript)" - fi -fi - - if test "x$test_ps" = "xyes"; then - CAIRO_CAN_TEST_PS_SURFACE_TRUE= - CAIRO_CAN_TEST_PS_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_PS_SURFACE_TRUE='#' - CAIRO_CAN_TEST_PS_SURFACE_FALSE= -fi - - - -# Check whether --enable-pdf was given. -if test "${enable_pdf+set}" = set; then : - enableval=$enable_pdf; enable_pdf=$enableval -else - enable_pdf=yes -fi - - if test "x$enable_pdf" = xno; then - use_pdf="no (disabled, use --enable-pdf to enable)" - else - if test "x$cairo_cv_backend_pdf_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_pdf_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's PDF backend" >&5 -$as_echo_n "checking for cairo's PDF backend... " >&6; } -if ${cairo_cv_backend_pdf_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_pdf=yes - pdf_REQUIRES=$ac_env_pdf_REQUIRES_value - pdf_CFLAGS=$ac_env_pdf_CFLAGS_value - pdf_LIBS=$ac_env_pdf_LIBS_value - pdf_NONPKGCONFIG_CFLAGS=$ac_env_pdf_NONPKGCONFIG_CFLAGS_value - pdf_NONPKGCONFIG_LIBS=$ac_env_pdf_NONPKGCONFIG_LIBS_value - pdf_BASE=cairo - - # The pdf backend requires zlib. - use_pdf=$have_libz - pdf_NONPKGCONFIG_LIBS=-lz - - cairo_cv_backend_pdf_use=$use_pdf - cairo_cv_backend_pdf_cache_version=4 - cairo_cv_backend_pdf_requires=$pdf_REQUIRES - cairo_cv_backend_pdf_cflags=$pdf_CFLAGS - cairo_cv_backend_pdf_libs=$pdf_LIBS - cairo_cv_backend_pdf_nonpkgconfig_cflags=$pdf_NONPKGCONFIG_CFLAGS - cairo_cv_backend_pdf_nonpkgconfig_libs=$pdf_NONPKGCONFIG_LIBS - cairo_cv_backend_pdf_base=$pdf_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's PDF backend could be enabled" >&5 -$as_echo_n "checking whether cairo's PDF backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_pdf_use" >&5 -$as_echo "$cairo_cv_backend_pdf_use" >&6; } - - use_pdf=$cairo_cv_backend_pdf_use - pdf_BASE=$cairo_cv_backend_pdf_base - - pdf_REQUIRES="$cairo_cv_backend_pdf_requires " - pdf_CFLAGS="$cairo_cv_backend_pdf_cflags " - pdf_LIBS="$cairo_cv_backend_pdf_libs " - pdf_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_pdf_nonpkgconfig_cflags " - pdf_NONPKGCONFIG_LIBS="$cairo_cv_backend_pdf_nonpkgconfig_libs " - - # null the ones that only have space - test "x$pdf_REQUIRES" = "x " && pdf_REQUIRES="" - test "x$pdf_CFLAGS" = "x " && pdf_CFLAGS="" - test "x$pdf_LIBS" = "x " && pdf_LIBS="" - test "x$pdf_NONPKGCONFIG_CFLAGS" = "x " && pdf_NONPKGCONFIG_CFLAGS="" - test "x$pdf_NONPKGCONFIG_LIBS" = "x " && pdf_NONPKGCONFIG_LIBS="" - - case $enable_pdf in - yes) - if test "x$use_pdf" = xyes; then : - -else - - as_fn_error $? "requested PDF backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-pdf: $use_pdf, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_pdf" = xyes; then - CAIRO_FEATURES="PDF_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$pdf_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$pdf_NONPKGCONFIG_CFLAGS$pdf_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$pdf_NONPKGCONFIG_LIBS$pdf_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$pdf_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$pdf_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-pdf.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,pdf,g" \ - -e "s,@Backend_Name@,PDF,g" \ - -e "s,@BACKEND_BASE@,$pdf_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$pdf_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$pdf_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$pdf_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="PDF_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_pdf" = xyes; then - CAIRO_HAS_PDF_SURFACE_TRUE= - CAIRO_HAS_PDF_SURFACE_FALSE='#' -else - CAIRO_HAS_PDF_SURFACE_TRUE='#' - CAIRO_HAS_PDF_SURFACE_FALSE= -fi - - - -POPPLER_VERSION_REQUIRED=0.8.0 -test_pdf=no -if test "x$use_pdf" = "xyes"; then - poppler_DEPENDENCY="poppler-glib >= $POPPLER_VERSION_REQUIRED" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for POPPLER" >&5 -$as_echo_n "checking for POPPLER... " >&6; } - -if test -n "$POPPLER_CFLAGS"; then - pkg_cv_POPPLER_CFLAGS="$POPPLER_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$poppler_DEPENDENCY pango gtk+-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$poppler_DEPENDENCY pango gtk+-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_POPPLER_CFLAGS=`$PKG_CONFIG --cflags "$poppler_DEPENDENCY pango gtk+-2.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$POPPLER_LIBS"; then - pkg_cv_POPPLER_LIBS="$POPPLER_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$poppler_DEPENDENCY pango gtk+-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$poppler_DEPENDENCY pango gtk+-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_POPPLER_LIBS=`$PKG_CONFIG --libs "$poppler_DEPENDENCY pango gtk+-2.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - POPPLER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$poppler_DEPENDENCY pango gtk+-2.0" 2>&1` - else - POPPLER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$poppler_DEPENDENCY pango gtk+-2.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$POPPLER_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; test_pdf="no (requires $poppler_DEPENDENCY)" -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; test_pdf="no (requires $poppler_DEPENDENCY)" -else - POPPLER_CFLAGS=$pkg_cv_POPPLER_CFLAGS - POPPLER_LIBS=$pkg_cv_POPPLER_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - save_cflags="$CFLAGS" - save_libs="$LIBS" - CFLAGS="$CFLAGS $POPPLER_CFLAGS" - LIBS="$LIBS $POPPLER_LIBS" - for ac_func in poppler_page_render_to_pixbuf -do : - ac_fn_c_check_func "$LINENO" "poppler_page_render_to_pixbuf" "ac_cv_func_poppler_page_render_to_pixbuf" -if test "x$ac_cv_func_poppler_page_render_to_pixbuf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_POPPLER_PAGE_RENDER_TO_PIXBUF 1 -_ACEOF - test_pdf=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; test_pdf="no (requires $poppler_DEPENDENCY)" -fi -done - - CFLAGS="$save_cflags" - LIBS="$save_libs" - -fi - if test "x$test_pdf" = "xyes"; then - -$as_echo "#define CAIRO_CAN_TEST_PDF_SURFACE 1" >>confdefs.h - - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PDF backend will not be tested since poppler >= $POPPLER_VERSION_REQUIRED is not available" >&5 -$as_echo "$as_me: WARNING: PDF backend will not be tested since poppler >= $POPPLER_VERSION_REQUIRED is not available" >&2;} - fi -fi - - if test "x$test_pdf" = "xyes"; then - CAIRO_CAN_TEST_PDF_SURFACE_TRUE= - CAIRO_CAN_TEST_PDF_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_PDF_SURFACE_TRUE='#' - CAIRO_CAN_TEST_PDF_SURFACE_FALSE= -fi - - - - - if test "x$use_ps" = "xyes" -o "x$use_pdf" = "xyes"; then - CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE= - CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE='#' -else - CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE='#' - CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE= -fi - - - -# Check whether --enable-svg was given. -if test "${enable_svg+set}" = set; then : - enableval=$enable_svg; enable_svg=$enableval -else - enable_svg=yes -fi - - if test "x$enable_svg" = xno; then - use_svg="no (disabled, use --enable-svg to enable)" - else - if test "x$cairo_cv_backend_svg_cache_version" != "x4"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_svg_use - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's SVG backend" >&5 -$as_echo_n "checking for cairo's SVG backend... " >&6; } -if ${cairo_cv_backend_svg_use+:} false; then : - $as_echo_n "(cached) " >&6 -else - echo - use_svg=yes - svg_REQUIRES=$ac_env_svg_REQUIRES_value - svg_CFLAGS=$ac_env_svg_CFLAGS_value - svg_LIBS=$ac_env_svg_LIBS_value - svg_NONPKGCONFIG_CFLAGS=$ac_env_svg_NONPKGCONFIG_CFLAGS_value - svg_NONPKGCONFIG_LIBS=$ac_env_svg_NONPKGCONFIG_LIBS_value - svg_BASE=cairo - - if test "x$use_png" != "xyes"; then - use_svg="no (requires --enable-png)" - fi - - cairo_cv_backend_svg_use=$use_svg - cairo_cv_backend_svg_cache_version=4 - cairo_cv_backend_svg_requires=$svg_REQUIRES - cairo_cv_backend_svg_cflags=$svg_CFLAGS - cairo_cv_backend_svg_libs=$svg_LIBS - cairo_cv_backend_svg_nonpkgconfig_cflags=$svg_NONPKGCONFIG_CFLAGS - cairo_cv_backend_svg_nonpkgconfig_libs=$svg_NONPKGCONFIG_LIBS - cairo_cv_backend_svg_base=$svg_BASE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's SVG backend could be enabled" >&5 -$as_echo_n "checking whether cairo's SVG backend could be enabled... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_backend_svg_use" >&5 -$as_echo "$cairo_cv_backend_svg_use" >&6; } - - use_svg=$cairo_cv_backend_svg_use - svg_BASE=$cairo_cv_backend_svg_base - - svg_REQUIRES="$cairo_cv_backend_svg_requires " - svg_CFLAGS="$cairo_cv_backend_svg_cflags " - svg_LIBS="$cairo_cv_backend_svg_libs " - svg_NONPKGCONFIG_CFLAGS="$cairo_cv_backend_svg_nonpkgconfig_cflags " - svg_NONPKGCONFIG_LIBS="$cairo_cv_backend_svg_nonpkgconfig_libs " - - # null the ones that only have space - test "x$svg_REQUIRES" = "x " && svg_REQUIRES="" - test "x$svg_CFLAGS" = "x " && svg_CFLAGS="" - test "x$svg_LIBS" = "x " && svg_LIBS="" - test "x$svg_NONPKGCONFIG_CFLAGS" = "x " && svg_NONPKGCONFIG_CFLAGS="" - test "x$svg_NONPKGCONFIG_LIBS" = "x " && svg_NONPKGCONFIG_LIBS="" - - case $enable_svg in - yes) - if test "x$use_svg" = xyes; then : - -else - - as_fn_error $? "requested SVG backend could not be enabled" "$LINENO" 5 - -fi - ;; - auto) - ;; - *) - as_fn_error $? "invalid argument passed to --enable-svg: $use_svg, should be one of [no/auto/yes]" "$LINENO" 5 - ;; - esac - if test "x$use_svg" = xyes; then - CAIRO_FEATURES="SVG_SURFACE $CAIRO_FEATURES" - CAIRO_REQUIRES="$svg_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$svg_NONPKGCONFIG_CFLAGS$svg_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$svg_NONPKGCONFIG_LIBS$svg_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$svg_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$svg_NONPKGCONFIG_LIBS$CAIRO_NONPKGCONFIG_LIBS" - outfile=`echo src/cairo-svg.pc | sed -e s/_/-/g` - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $outfile" >&5 -$as_echo "$as_me: creating $outfile" >&6;} - mkdir -p src - if sed \ - -e "s,@backend_name@,svg,g" \ - -e "s,@Backend_Name@,SVG,g" \ - -e "s,@BACKEND_BASE@,$svg_BASE,g" \ - -e "s,@BACKEND_REQUIRES@,$svg_REQUIRES,g" \ - -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$svg_NONPKGCONFIG_LIBS%g" \ - -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$svg_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; then : - -else - - rm -f "$outfile" - as_fn_error $? "failed creating $outfile" "$LINENO" 5 - -fi - else - CAIRO_NO_FEATURES="SVG_SURFACE $CAIRO_NO_FEATURES" - fi - fi - if test "x$use_svg" = xyes; then - CAIRO_HAS_SVG_SURFACE_TRUE= - CAIRO_HAS_SVG_SURFACE_FALSE='#' -else - CAIRO_HAS_SVG_SURFACE_TRUE='#' - CAIRO_HAS_SVG_SURFACE_FALSE= -fi - - - -LIBRSVG_VERSION_REQUIRED=2.15.0 -test_svg=no -if test "x$use_svg" = "xyes"; then - librsvg_DEPENDENCY="librsvg-2.0 >= $LIBRSVG_VERSION_REQUIRED" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBRSVG" >&5 -$as_echo_n "checking for LIBRSVG... " >&6; } - -if test -n "$LIBRSVG_CFLAGS"; then - pkg_cv_LIBRSVG_CFLAGS="$LIBRSVG_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$librsvg_DEPENDENCY gdk-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$librsvg_DEPENDENCY gdk-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBRSVG_CFLAGS=`$PKG_CONFIG --cflags "$librsvg_DEPENDENCY gdk-2.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBRSVG_LIBS"; then - pkg_cv_LIBRSVG_LIBS="$LIBRSVG_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$librsvg_DEPENDENCY gdk-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$librsvg_DEPENDENCY gdk-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBRSVG_LIBS=`$PKG_CONFIG --libs "$librsvg_DEPENDENCY gdk-2.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBRSVG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$librsvg_DEPENDENCY gdk-2.0" 2>&1` - else - LIBRSVG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$librsvg_DEPENDENCY gdk-2.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBRSVG_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; test_svg="no (requires $librsvg_DEPENDENCY)" -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; test_svg="no (requires $librsvg_DEPENDENCY)" -else - LIBRSVG_CFLAGS=$pkg_cv_LIBRSVG_CFLAGS - LIBRSVG_LIBS=$pkg_cv_LIBRSVG_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - save_cflags="$CFLAGS" - save_libs="$LIBS" - CFLAGS="$CFLAGS $LIBRSVG_CFLAGS" - LIBS="$LIBS $LIBRSVG_LIBS" - for ac_func in rsvg_pixbuf_from_file -do : - ac_fn_c_check_func "$LINENO" "rsvg_pixbuf_from_file" "ac_cv_func_rsvg_pixbuf_from_file" -if test "x$ac_cv_func_rsvg_pixbuf_from_file" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_RSVG_PIXBUF_FROM_FILE 1 -_ACEOF - test_svg=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; test_svg="no (requires $librsvg_DEPENDENCY)" -fi -done - - CFLAGS="$save_cflags" - LIBS="$save_libs" - -fi - if test "x$test_svg" = "xyes"; then - -$as_echo "#define CAIRO_CAN_TEST_SVG_SURFACE 1" >>confdefs.h - - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SVG backend will not be tested since librsvg >= $LIBRSVG_VERSION_REQUIRED is not available" >&5 -$as_echo "$as_me: WARNING: SVG backend will not be tested since librsvg >= $LIBRSVG_VERSION_REQUIRED is not available" >&2;} - fi -fi - - if test "x$test_svg" = "xyes"; then - CAIRO_CAN_TEST_SVG_SURFACE_TRUE= - CAIRO_CAN_TEST_SVG_SURFACE_FALSE='#' -else - CAIRO_CAN_TEST_SVG_SURFACE_TRUE='#' - CAIRO_CAN_TEST_SVG_SURFACE_FALSE= -fi - - - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -for ac_header in stdint.h signal.h inttypes.h sys/int_types.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" -if test "x$ac_cv_type_uint64_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINT64_T 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "uint128_t" "ac_cv_type_uint128_t" "$ac_includes_default" -if test "x$ac_cv_type_uint128_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINT128_T 1 -_ACEOF - - -fi - - -for ac_header in sched.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default" -if test "x$ac_cv_header_sched_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SCHED_H 1 -_ACEOF - - for ac_func in sched_getaffinity -do : - ac_fn_c_check_func "$LINENO" "sched_getaffinity" "ac_cv_func_sched_getaffinity" -if test "x$ac_cv_func_sched_getaffinity" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SCHED_GETAFFINITY 1 -_ACEOF - - -$as_echo "#define HAVE_SCHED_GETAFFINITY 1" >>confdefs.h - - -fi -done - - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5 -$as_echo_n "checking for sched_yield in -lrt... " >&6; } -if ${ac_cv_lib_rt_sched_yield+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char sched_yield (); -int -main () -{ -return sched_yield (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_rt_sched_yield=yes -else - ac_cv_lib_rt_sched_yield=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5 -$as_echo "$ac_cv_lib_rt_sched_yield" >&6; } -if test "x$ac_cv_lib_rt_sched_yield" = xyes; then : - RT_LIBS=-lrt -else - RT_LIBS= -fi - -CAIROPERF_LIBS=$RT_LIBS - -for ac_header in libgen.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default" -if test "x$ac_cv_header_libgen_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBGEN_H 1 -_ACEOF - -fi - -done - - - - - - - -MAYBE_WARN="-Wall -Wextra \ --Wsign-compare -Werror-implicit-function-declaration \ --Wpointer-arith -Wwrite-strings -Wstrict-prototypes \ --Wmissing-prototypes -Wmissing-declarations -Wnested-externs \ --Wpacked -Wswitch-enum -Wmissing-format-attribute \ --Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ --Wdeclaration-after-statement -Wold-style-definition \ --Wno-missing-field-initializers -Wno-unused-parameter \ --Wno-attributes -Wno-long-long -Winline" - - -# invalidate cached value if MAYBE_WARN has changed -if test "x$cairo_cv_warn_maybe" != "x$MAYBE_WARN"; then - unset cairo_cv_warn_cflags -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported warning flags" >&5 -$as_echo_n "checking for supported warning flags... " >&6; } -if ${cairo_cv_warn_cflags+:} false; then : - $as_echo_n "(cached) " >&6 -else - - echo - WARN_CFLAGS="" - - # Some warning options are not supported by all versions of - # gcc, so test all desired options against the current - # compiler. - # - # Note that there are some order dependencies - # here. Specifically, an option that disables a warning will - # have no net effect if a later option then enables that - # warnings, (perhaps implicitly). So we put some grouped - # options (-Wall and -Wextra) up front and the -Wno options - # last. - - for W in $MAYBE_WARN; do - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $W" >&5 -$as_echo_n "checking whether $CC supports $W... " >&6; } - - cairo_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $W" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cairo_cc_flag=yes -else - cairo_cc_flag=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cairo_save_CFLAGS" - - if test "x$cairo_cc_flag" = "xyes"; then - WARN_CFLAGS="$WARN_CFLAGS $W" - else - : - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cc_flag" >&5 -$as_echo "$cairo_cc_flag" >&6; } - - done - - cairo_cv_warn_cflags=$WARN_CFLAGS - cairo_cv_warn_maybe=$MAYBE_WARN - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which warning flags were supported" >&5 -$as_echo_n "checking which warning flags were supported... " >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_warn_cflags" >&5 -$as_echo "$cairo_cv_warn_cflags" >&6; } -WARN_CFLAGS="$cairo_cv_warn_cflags" -CAIRO_CFLAGS="$CAIRO_CFLAGS $WARN_CFLAGS" - -# We only wish to enable attribute(warn_unused_result) if we can prevent -# gcc from generating thousands of warnings about the misapplication of the -# attribute to void functions and variables. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to enable unused result warnings" >&5 -$as_echo_n "checking how to enable unused result warnings... " >&6; } -warn_unused_result="" -if echo $WARN_CFLAGS | grep -e '-Wno-attributes' >/dev/null; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -__attribute__((__warn_unused_result__)) - int f (int i) { return i; } -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - warn_unused_result="__attribute__((__warn_unused_result__))" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -cat >>confdefs.h <<_ACEOF -#define WARN_UNUSED_RESULT $warn_unused_result -_ACEOF - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $warn_unused_result" >&5 -$as_echo "$warn_unused_result" >&6; } - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fno-strict-aliasing" >&5 -$as_echo_n "checking whether $CC supports -fno-strict-aliasing... " >&6; } - - cairo_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-strict-aliasing" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cairo_cc_flag=yes -else - cairo_cc_flag=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cairo_save_CFLAGS" - - if test "x$cairo_cc_flag" = "xyes"; then - CAIRO_CFLAGS="$CAIRO_CFLAGS -fno-strict-aliasing" - else - : - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cc_flag" >&5 -$as_echo "$cairo_cc_flag" >&6; } - - - - - - - - - - - - - -# Check whether --with-html-dir was given. -if test "${with_html_dir+set}" = set; then : - withval=$with_html_dir; -else - with_html_dir='${datadir}/gtk-doc/html' -fi - - HTML_DIR="$with_html_dir" - - - # Check whether --enable-gtk-doc was given. -if test "${enable_gtk_doc+set}" = set; then : - enableval=$enable_gtk_doc; -else - enable_gtk_doc=no -fi - - - have_gtk_doc=no - if test x$enable_gtk_doc = xyes; then - if test -z "$PKG_CONFIG"; then - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi - if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then - have_gtk_doc=yes - fi - - gtk_doc_min_version=1.6 - if test "$have_gtk_doc" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking gtk-doc version >= $gtk_doc_min_version" >&5 -$as_echo_n "checking gtk-doc version >= $gtk_doc_min_version... " >&6; } - if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_gtk_doc=no - fi - fi - - if test "$have_gtk_doc" != yes; then - enable_gtk_doc=no - fi - fi - - if test x$enable_gtk_doc = xyes; then - ENABLE_GTK_DOC_TRUE= - ENABLE_GTK_DOC_FALSE='#' -else - ENABLE_GTK_DOC_TRUE='#' - ENABLE_GTK_DOC_FALSE= -fi - - if test -n "$LIBTOOL"; then - GTK_DOC_USE_LIBTOOL_TRUE= - GTK_DOC_USE_LIBTOOL_FALSE='#' -else - GTK_DOC_USE_LIBTOOL_TRUE='#' - GTK_DOC_USE_LIBTOOL_FALSE= -fi - - - - -case `$PKG_CONFIG --version` in -0.?|0.?.?|0.1[0-7]|0.1[0-7].?) PKGCONFIG_REQUIRES="Requires"; ;; -*) PKGCONFIG_REQUIRES="Requires.private"; ;; -esac - - - - -MMX_CFLAGS="-mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" - -have_mmx_intrinsics=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MMX/SSE intrinsics in the compiler" >&5 -$as_echo_n "checking for MMX/SSE intrinsics in the compiler... " >&6; } -xserver_save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS $MMX_CFLAGS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#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); -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_mmx_intrinsics=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS=$xserver_save_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mmx_intrinsics" >&5 -$as_echo "$have_mmx_intrinsics" >&6; } - - -cairo_has_lcov=no -# Check whether --enable-gcov was given. -if test "${enable_gcov+set}" = set; then : - enableval=$enable_gcov; use_gcov=$enableval -else - use_gcov=no -fi - - -if test "x$use_gcov" = "xyes"; then - if test "$GCC" != "yes"; then - as_fn_error $? "GCC is required for --enable-gcov" "$LINENO" 5 - fi - - # Extract the first word of "shtool", so it can be a program name with args. -set dummy shtool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_SHTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$SHTOOL"; then - ac_cv_prog_SHTOOL="$SHTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_SHTOOL="shtool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -SHTOOL=$ac_cv_prog_SHTOOL -if test -n "$SHTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHTOOL" >&5 -$as_echo "$SHTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - 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 - as_fn_error $? "ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1." "$LINENO" 5 - fi - - ltp_version_list="1.4 1.5" - # Extract the first word of "lcov", so it can be a program name with args. -set dummy lcov; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LTP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LTP"; then - ac_cv_prog_LTP="$LTP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LTP="lcov" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LTP=$ac_cv_prog_LTP -if test -n "$LTP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LTP" >&5 -$as_echo "$LTP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "genhtml", so it can be a program name with args. -set dummy genhtml; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LTP_GENHTML+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LTP_GENHTML"; then - ac_cv_prog_LTP_GENHTML="$LTP_GENHTML" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LTP_GENHTML="genhtml" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LTP_GENHTML=$ac_cv_prog_LTP_GENHTML -if test -n "$LTP_GENHTML"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LTP_GENHTML" >&5 -$as_echo "$LTP_GENHTML" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - if test "$LTP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ltp version" >&5 -$as_echo_n "checking for ltp version... " >&6; } -if ${cairo_cv_ltp_version+:} false; then : - $as_echo_n "(cached) " >&6 -else - - 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 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cairo_cv_ltp_version" >&5 -$as_echo "$cairo_cv_ltp_version" >&6; } - fi - - case $cairo_cv_ltp_version in - ""|invalid) - ;; - *) - cairo_has_lcov=yes - ;; - esac - - if test "x$cairo_has_lcov" != "xyes"; then - as_fn_error $? "To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list. -Please install the Linux Test Project [http://ltp.sourceforge.net/], and try again." "$LINENO" 5 - fi - - if test -z "$LTP_GENHTML"; then - as_fn_error $? "Could not find genhtml from the LTP package. -Please install the Linux Test Project [http://ltp.sourceforge.net/], and try again." "$LINENO" 5 - fi - - -$as_echo "#define HAVE_GCOV 1" >>confdefs.h - - - - CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'` - CAIRO_CFLAGS=`echo "$CAIRO_CFLAGS" | $SED -e 's/-O[0-9]*//g'` - - - CAIRO_CFLAGS="$CAIRO_CFLAGS -O0 -fprofile-arcs -ftest-coverage" - CAIRO_LDADD="$CAIRO_LDADD -lgcov" -fi - if test "x$cairo_has_lcov" = "xyes"; then - CAIRO_HAS_LCOV_TRUE= - CAIRO_HAS_LCOV_FALSE='#' -else - CAIRO_HAS_LCOV_TRUE='#' - CAIRO_HAS_LCOV_FALSE= -fi - - - -# Check whether --enable-test-surfaces was given. -if test "${enable_test_surfaces+set}" = set; then : - enableval=$enable_test_surfaces; use_test_surfaces=$enableval -else - use_test_surfaces=no -fi - - - if test "x$use_test_surfaces" = "xyes"; then - CAIRO_HAS_TEST_SURFACES_TRUE= - CAIRO_HAS_TEST_SURFACES_FALSE='#' -else - CAIRO_HAS_TEST_SURFACES_TRUE='#' - CAIRO_HAS_TEST_SURFACES_FALSE= -fi - -if test "x$use_test_surfaces" = "xyes"; then - -$as_echo "#define CAIRO_HAS_TEST_SURFACES 1" >>confdefs.h - -fi - - -# Check whether --enable-some-floating-point was given. -if test "${enable_some_floating_point+set}" = set; then : - enableval=$enable_some_floating_point; -if test "x$enableval" = "xno"; then - # A value of 'no' for $enableval means that they want to disable, which - # means 'yes' for $disable_some_floating_point. - disable_some_floating_point=yes -fi - -else - disable_some_floating_point=no -fi - - - if test "x$disable_some_floating_point" = "xyes"; then - DISABLE_SOME_FLOATING_POINT_TRUE= - DISABLE_SOME_FLOATING_POINT_FALSE='#' -else - DISABLE_SOME_FLOATING_POINT_TRUE='#' - DISABLE_SOME_FLOATING_POINT_FALSE= -fi - -if test "x$disable_some_floating_point" = "xyes"; then - -$as_echo "#define DISABLE_SOME_FLOATING_POINT 1" >>confdefs.h - -fi - - -ac_config_commands="$ac_config_commands src/cairo-features.h" - -ac_config_commands="$ac_config_commands src/cairo-no-features.h" - -ac_config_files="$ac_config_files Makefile src/Makefile src/cairo.pc" - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${CAIRO_HAS_XLIB_SURFACE_TRUE}" && test -z "${CAIRO_HAS_XLIB_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_XLIB_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE}" && test -z "${CAIRO_HAS_XLIB_XRENDER_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_XLIB_XRENDER_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_XCB_SURFACE_TRUE}" && test -z "${CAIRO_HAS_XCB_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_XCB_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_QUARTZ_SURFACE_TRUE}" && test -z "${CAIRO_HAS_QUARTZ_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_QUARTZ_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_QUARTZ_FONT_TRUE}" && test -z "${CAIRO_HAS_QUARTZ_FONT_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_QUARTZ_FONT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE}" && test -z "${CAIRO_HAS_QUARTZ_IMAGE_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_QUARTZ_IMAGE_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then - as_fn_error $? "conditional \"OS_WIN32\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_WIN32_SURFACE_TRUE}" && test -z "${CAIRO_HAS_WIN32_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_WIN32_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_WIN32_FONT_TRUE}" && test -z "${CAIRO_HAS_WIN32_FONT_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_WIN32_FONT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_OS2_SURFACE_TRUE}" && test -z "${CAIRO_HAS_OS2_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_OS2_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_BEOS_SURFACE_TRUE}" && test -z "${CAIRO_HAS_BEOS_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_BEOS_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_PNG_FUNCTIONS_TRUE}" && test -z "${CAIRO_HAS_PNG_FUNCTIONS_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_PNG_FUNCTIONS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_GLITZ_SURFACE_TRUE}" && test -z "${CAIRO_HAS_GLITZ_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_GLITZ_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_GLITZ_AGL_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_GLITZ_AGL_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_GLITZ_EGL_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_GLITZ_EGL_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_GLITZ_GLX_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_GLITZ_GLX_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_GLITZ_WGL_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_GLITZ_WGL_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_DIRECTFB_SURFACE_TRUE}" && test -z "${CAIRO_HAS_DIRECTFB_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_DIRECTFB_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_FT_FONT_TRUE}" && test -z "${CAIRO_HAS_FT_FONT_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_FT_FONT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_PTHREAD_TRUE}" && test -z "${HAVE_PTHREAD_FALSE}"; then - as_fn_error $? "conditional \"HAVE_PTHREAD\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_PS_SURFACE_TRUE}" && test -z "${CAIRO_HAS_PS_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_PS_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_PS_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_PS_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_PS_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_PDF_SURFACE_TRUE}" && test -z "${CAIRO_HAS_PDF_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_PDF_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_PDF_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_PDF_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_PDF_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_MULTI_PAGE_SURFACES_TRUE}" && test -z "${CAIRO_HAS_MULTI_PAGE_SURFACES_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_MULTI_PAGE_SURFACES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_SVG_SURFACE_TRUE}" && test -z "${CAIRO_HAS_SVG_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_SVG_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_CAN_TEST_SVG_SURFACE_TRUE}" && test -z "${CAIRO_CAN_TEST_SVG_SURFACE_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_CAN_TEST_SVG_SURFACE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then - as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_LCOV_TRUE}" && test -z "${CAIRO_HAS_LCOV_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_LCOV\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CAIRO_HAS_TEST_SURFACES_TRUE}" && test -z "${CAIRO_HAS_TEST_SURFACES_FALSE}"; then - as_fn_error $? "conditional \"CAIRO_HAS_TEST_SURFACES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${DISABLE_SOME_FLOATING_POINT_TRUE}" && test -z "${DISABLE_SOME_FLOATING_POINT_FALSE}"; then - as_fn_error $? "conditional \"DISABLE_SOME_FLOATING_POINT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by cairo $as_me 1.6.4, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -cairo config.status 1.6.4 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - - CAIRO_FEATURES='$CAIRO_FEATURES' - CAIRO_NO_FEATURES='$CAIRO_NO_FEATURES' - CAIRO_VERSION_MAJOR=$CAIRO_VERSION_MAJOR - CAIRO_VERSION_MINOR=$CAIRO_VERSION_MINOR - CAIRO_VERSION_MICRO=$CAIRO_VERSION_MICRO - - - CAIRO_NO_FEATURES='$CAIRO_NO_FEATURES' - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "src/cairo-features.h") CONFIG_COMMANDS="$CONFIG_COMMANDS src/cairo-features.h" ;; - "src/cairo-no-features.h") CONFIG_COMMANDS="$CONFIG_COMMANDS src/cairo-no-features.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/cairo.pc") CONFIG_FILES="$CONFIG_FILES src/cairo.pc" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - "src/cairo-features.h":C) - featuresfile=src/cairo-features.h - outfile=$featuresfile.tmp - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $featuresfile" >&5 -$as_echo "$as_me: creating $featuresfile" >&6;} - cat > $outfile <<_EOF -/* Generated by configure. Do not edit */ -#ifndef CAIRO_FEATURES_H -#define CAIRO_FEATURES_H - -#ifdef __cplusplus -# define CAIRO_BEGIN_DECLS extern "C" { -# define CAIRO_END_DECLS } -#else -# define CAIRO_BEGIN_DECLS -# define CAIRO_END_DECLS -#endif - -#ifndef cairo_public -# define cairo_public -#endif - -#define CAIRO_VERSION_MAJOR $CAIRO_VERSION_MAJOR -#define CAIRO_VERSION_MINOR $CAIRO_VERSION_MINOR -#define CAIRO_VERSION_MICRO $CAIRO_VERSION_MICRO - -#define CAIRO_VERSION_STRING "$CAIRO_VERSION_MAJOR.$CAIRO_VERSION_MINOR.$CAIRO_VERSION_MICRO" - -_EOF - for FEATURE in $CAIRO_FEATURES; do - echo "#define CAIRO_HAS_$FEATURE 1" >> $outfile - done - echo '' >> $outfile - for FEATURE in $CAIRO_NO_FEATURES; do - echo "/*#undef CAIRO_HAS_$FEATURE */" >> $outfile - done - - echo '' >> $outfile - echo '#endif' >> $outfile - - if cmp -s $outfile $featuresfile; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $featuresfile is unchanged" >&5 -$as_echo "$as_me: $featuresfile is unchanged" >&6;} - rm -f $outfile - else - mv $outfile $featuresfile - fi - ;; - "src/cairo-no-features.h":C) - nofeaturesfile=src/cairo-no-features.h - outfile=$nofeaturesfile.tmp - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $nofeaturesfile" >&5 -$as_echo "$as_me: creating $nofeaturesfile" >&6;} - cat > $outfile <<_EOF -/* Generated by configure. Do not edit */ -#ifndef CAIRO_NO_FEATURES_H -#define CAIRO_NO_FEATURES_H - -#include - -/* This is a dummy header, to trick gtk-doc only */ - -_EOF - for FEATURE in $CAIRO_NO_FEATURES; do - echo "#define CAIRO_HAS_$FEATURE 1" >> $outfile - done - - echo '' >> $outfile - echo '#endif' >> $outfile - - if cmp -s $outfile $nofeaturesfile; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $nofeaturesfile is unchanged" >&5 -$as_echo "$as_me: $nofeaturesfile is unchanged" >&6;} - rm -f $outfile - else - mv $outfile $nofeaturesfile - fi - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - - -V="$CAIRO_VERSION_MAJOR.$CAIRO_VERSION_MINOR.$CAIRO_VERSION_MICRO" -echo "" -echo "cairo (version $V) will be compiled with the following surface backends:" -echo " image: yes (always builtin)" -echo " Xlib: $use_xlib" -echo " Xlib Xrender: $use_xlib_xrender" -echo " Quartz: $use_quartz" -echo " Quartz-image: $use_quartz_image" -echo " XCB: $use_xcb" -echo " Win32: $use_win32" -echo " OS2: $use_os2" -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_ft" -echo " Win32: $use_win32_font" -echo " Quartz: $use_quartz_font" -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 " ps testing: $test_ps" -echo " pdf testing: $test_pdf" -echo " svg testing: $test_svg" -if test x"$use_win32" = "xyes"; then - echo " win32 printing testing: $test_win32_printing" -fi -echo "" -echo "using CFLAGS:" -echo $CAIRO_CFLAGS -echo "" - -if test x"$use_ft" != "xyes" && \ - test x"$use_win32_font" != "xyes" && \ - test x"$use_quartz_font" != "xyes" ; then - - as_fn_error $? "Cairo requires at least one font backend. - Please install freetype and fontconfig, then try again: - http://freetype.org/ http://fontconfig.org/ - " "$LINENO" 5 -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_image" = "xyes" ; then - echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/Quartz Image/' -fi - -if test x"$use_os2" = "xyes" ; then - echo "$WARNING_MESSAGE" | sed 's,@BACKEND@,OS/2,' -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 diff -Nru libgdiplus-4.0-2.10.9/cairo/configure.in libgdiplus-4.0-4.2.3+precise1/cairo/configure.in --- libgdiplus-4.0-2.10.9/cairo/configure.in 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/configure.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,1166 +0,0 @@ -AC_PREREQ(2.58) - -dnl cairo package version number, (as distinct from shared library version) -dnl For the minor number: odd => unstable series -dnl even => stable series -dnl For the micro number: odd => in-progress development (from git) -dnl even => tar-file snapshot or release -m4_define(cairo_version_major, 1) -m4_define(cairo_version_minor, 6) -m4_define(cairo_version_micro, 4) - -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) - -dnl automake 1.8 requires autoconf 2.58 -dnl automake 1.7 requires autoconf 2.54 -dnl automake < 1.8 does not handle TESTS=some-test$(EXEXT) as used -dnl in test/Makefile.am and perf/Makefile.am -AM_INIT_AUTOMAKE([1.8]) - -dnl =========================================================================== - -# libtool shared library version - -# Increment if the interface has additions, changes, removals. -LT_CURRENT=19 - -# Increment any time the source changes; set to -# 0 if you increment CURRENT -LT_REVISION=5 - -# 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=17 - -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) - -dnl =========================================================================== - -AC_PATH_PROG(FIND, find) -AC_PATH_PROG(XARGS, xargs) - -dnl =========================================================================== - -AC_PROG_CC -AC_PROG_CPP -AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL dnl required version (1.4) DON'T REMOVE! -AC_STDC_HEADERS -AC_C_INLINE - -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 =========================================================================== -dnl === Local macros -dnl =========================================================================== - -dnl _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([_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 ctime_r drand48) - -AC_MSG_CHECKING([for Sun Solaris (non-POSIX ctime_r)]) -case "$host" in - *-*-solaris*) - CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" - solaris_posix_pthread=yes - ;; - *) - solaris_posix_pthread=no - ;; -esac -AC_MSG_RESULT([$solaris_posix_pthread]) - -dnl =========================================================================== -dnl -dnl Test for native atomic operations. -dnl -AC_MSG_CHECKING([for native atomic primitives]) -cairo_atomic_primitives="none" - -AC_TRY_LINK([int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); }], [], - AC_DEFINE(CAIRO_HAS_INTEL_ATOMIC_PRIMITIVES, 1, [Enable if your compiler supports the Intel __sync_* atomic primitives]) - cairo_atomic_primitives="Intel" - ) - -AC_MSG_RESULT([$cairo_atomic_primitives]) - -AC_MSG_CHECKING([whether atomic ops require a memory barrier]) -case $host_cpu in - i?86) - cairo_atomic_op_needs_memory_barrier="no" - ;; - x86_64) - cairo_atomic_op_needs_memory_barrier="no" - ;; - arm*) - cairo_atomic_op_needs_memory_barrier="no" - ;; - *) - cairo_atomic_op_needs_memory_barrier="yes" - ;; -esac -if test "x$cairo_atomic_op_needs_memory_barrier" = "xyes"; then - AC_DEFINE_UNQUOTED(CAIRO_ATOMIC_OP_NEEDS_MEMORY_BARRIER, 1, - [whether Cairo needs memory barriers around atomic ops]) -fi -AC_MSG_RESULT([$cairo_atomic_op_needs_memory_barrier]) - -dnl =========================================================================== - -AC_CHECK_LIBM -LIBS="$LIBS $LIBM" - -AC_CHECK_LIB(z, compress, - [AC_CHECK_HEADER(zlib.h, [have_libz=yes], - [have_libz="no (requires zlib http://www.gzip.org/zlib/)"])], - [have_libz="no (requires zlib http://www.gzip.org/zlib/)"]) - -dnl =========================================================================== - -PKG_PROG_PKG_CONFIG() -if test "x$PKG_CONFIG" = x; then - AC_MSG_ERROR([pkg-config >= $PKGCONFIG_REQUIRED required but not found (http://pkgconfig.freedesktop.org/)]) -fi - - -dnl =========================================================================== -dnl -dnl cairo_cache_version should be increased every time that the backend -dnl detection stuff changes in a way that removing the config.cache file may be -dnl needed for correct operation. (this is only for the backend detection -dnl changes; it doesn't have any effect on any other cached thing.) -dnl -m4_define(cairo_cache_version, 4) - -dnl =========================================================================== -dnl -dnl Define a macro to enable backends. -dnl - Macro: CAIRO_BACKEND_ENABLE (NAMESPACE, NAME, ARG, FEATURE_NAME, DEFAULT, COMMANDS) -dnl -dnl where: -dnl -dnl 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-freetype -dnl FEATURE_NAME is what's used in cairo-features.h, eg. FT_FONT for CAIRO_HAS_FT_FONT -dnl DEFAULT is the default state of the backend: -dnl "no" for experimental backends, eg. your favorite new backend -dnl "yes" for mandatory backends, eg. png -dnl "auto" for other supported backends, eg. xlib -dnl COMMANDS are run to check whether the backend can be enabled. Their -dnl 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 the -dnl backend cannot be built, eg. "no (requires SomeThing)". It then -dnl should also set $(NAMESPACE)_REQUIRES/CFLAGS/LIBS/... -dnl appropriately. Look at the macro definition for more details, -dnl or ask if in doubt. -dnl -AC_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 - if test "x$cairo_cv_backend_[]$1[]_cache_version" != "x[]cairo_cache_version"; then - # cached results for this backend (if any) are stale. force rechecking. - unset cairo_cv_backend_[]$1[]_use - fi - AC_CACHE_CHECK([for cairo's $2 backend], cairo_cv_backend_[]$1[]_use, - [echo - use_[]$1=yes - $1[]_REQUIRES=$ac_env_[]$1[]_REQUIRES_value - $1[]_CFLAGS=$ac_env_[]$1[]_CFLAGS_value - $1[]_LIBS=$ac_env_[]$1[]_LIBS_value - $1[]_NONPKGCONFIG_CFLAGS=$ac_env_[]$1[]_NONPKGCONFIG_CFLAGS_value - $1[]_NONPKGCONFIG_LIBS=$ac_env_[]$1[]_NONPKGCONFIG_LIBS_value - $1[]_BASE=cairo - $6 - cairo_cv_backend_[]$1[]_use=$use_[]$1 - cairo_cv_backend_[]$1[]_cache_version=cairo_cache_version - 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 - cairo_cv_backend_[]$1[]_base=$[]$1[]_BASE - AC_MSG_CHECKING([whether cairo's $2 backend could be enabled])]) - - use_[]$1=$cairo_cv_backend_[]$1[]_use - $1[]_BASE=$cairo_cv_backend_[]$1[]_base - - $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 " - - # null the ones that only have space - test "x$$1[]_REQUIRES" = "x " && $1[]_REQUIRES="" - test "x$$1[]_CFLAGS" = "x " && $1[]_CFLAGS="" - test "x$$1[]_LIBS" = "x " && $1[]_LIBS="" - test "x$$1[]_NONPKGCONFIG_CFLAGS" = "x " && $1[]_NONPKGCONFIG_CFLAGS="" - test "x$$1[]_NONPKGCONFIG_LIBS" = "x " && $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="$4 $CAIRO_FEATURES" - CAIRO_REQUIRES="$$1_REQUIRES$CAIRO_REQUIRES" - CAIRO_CFLAGS="$$1_NONPKGCONFIG_CFLAGS$$1_CFLAGS$CAIRO_CFLAGS" - CAIRO_LIBS="$$1_NONPKGCONFIG_LIBS$$1_LIBS$CAIRO_LIBS" - CAIRO_NONPKGCONFIG_CFLAGS="$$1_NONPKGCONFIG_CFLAGS$CAIRO_NONPKGCONFIG_CFLAGS" - CAIRO_NONPKGCONFIG_LIBS="$$1_NONPKGCONFIG_LIBS$CAIRO_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_BASE@,$$1_BASE,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]) - ]) - else - CAIRO_NO_FEATURES="$4 $CAIRO_NO_FEATURES" - fi - fi - AM_CONDITIONAL(CAIRO_HAS_$4, test "x$use_$1" = xyes) - ]) - -CAIRO_FEATURES="" -CAIRO_NO_FEATURES="" -CAIRO_REQUIRES="" -CAIRO_NONPKGCONFIG_CFLAGS="" -CAIRO_NONPKGCONFIG_LIBS="$LIBM" -CAIRO_LDADD="" -CAIRO_CFLAGS=$CAIRO_NONPKGCONFIG_CFLAGS -CAIRO_LIBS=$CAIRO_NONPKGCONFIG_LIBS - -dnl =========================================================================== - -#PIXMAN_VERSION="0.10.0" -#PIXMAN_REQUIRES="pixman-1 >= $PIXMAN_VERSION" -#PKG_CHECK_MODULES(pixman, $PIXMAN_REQUIRES, , -# [AC_MSG_ERROR([pixman >= $PIXMAN_VERSION is required -#(http://cairographics.org/releases/)])]) - -pixman_CFLAGS='-I$(top_srcdir)/../pixman/pixman' -pixman_LIBS='$(top_builddir)/../pixman/pixman/libpixman-1.la' - -#CAIRO_REQUIRES="$PIXMAN_REQUIRES $CAIRO_REQUIRES" -CAIRO_CFLAGS="$pixman_CFLAGS $CAIRO_CFLAGS" -CAIRO_LIBS="$pixman_LIBS $CAIRO_LIBS" - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(xlib, Xlib, xlib, XLIB_SURFACE, auto, [ - xlib_REQUIRES="x11" - PKG_CHECK_MODULES(xlib, $xlib_REQUIRES, , - [AC_MSG_RESULT(no) - xlib_REQUIRES="" - AC_PATH_XTRA - if test "x$no_x" = xyes; then - use_xlib="no (requires X development libraries)" - else - xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" - xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS - fi]) -]) - -CAIRO_BACKEND_ENABLE(xlib_xrender, Xlib Xrender, xlib-xrender, XLIB_XRENDER_SURFACE, auto, [ - if test "x$use_xlib" != "xyes"; then - use_xlib_xrender="no (requires --enable-xlib)" - else - dnl Check for Xrender header files if the Xrender package is not installed: - xlib_xrender_BASE=cairo-xlib - xlib_xrender_REQUIRES="xrender >= 0.6" - PKG_CHECK_MODULES(xlib_xrender, $xlib_xrender_REQUIRES, , - [AC_MSG_RESULT(no) - xlib_xrender_REQUIRES="" - old_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $xlib_CFLAGS $xlib_NONPKGCONFIG_CFLAGS" - AC_CHECK_HEADER(X11/extensions/Xrender.h, - [xlib_xrender_NONPKGCONFIG_LIBS="-lXrender"], - [use_xlib_xrender="no (requires Xrender http://freedesktop.org/Software/xlibs)"]) - CPPFLAGS=$old_CPPFLAGS - ]) - fi -]) - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(xcb, XCB, xcb, XCB_SURFACE, no, [ - xcb_REQUIRES="xcb >= 0.9.92 xcb-render >= 0.9.92 xcb-renderutil" - PKG_CHECK_MODULES(xcb, $xcb_REQUIRES, , [AC_MSG_RESULT(no) - use_xcb="no (requires XCB http://xcb.freedesktop.org)"]) -]) - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(quartz, Quartz, quartz, QUARTZ_SURFACE, auto, [ - dnl There is no pkgconfig for quartz; lets do a header check - AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h, , [use_quartz="no (ApplicationServices framework not found)"]) - if test "x$use_quartz" != "xyes" ; then - dnl check for CoreGraphics as a separate framework - AC_CHECK_HEADER(CoreGraphics/CoreGraphics.h, , [use_quartz="no (CoreGraphics framework not found)"]) - quartz_LIBS="-Xlinker -framework -Xlinker CoreGraphics" - else - quartz_LIBS="-Xlinker -framework -Xlinker ApplicationServices" - fi -]) - -CAIRO_BACKEND_ENABLE(quartz_font, Quartz font, quartz-font, QUARTZ_FONT, auto, [ - use_quartz_font=$use_quartz -]) - -CAIRO_BACKEND_ENABLE(quartz_image, Quartz Image, quartz-image, QUARTZ_IMAGE_SURFACE, no, [ - use_quartz_image=$use_quartz -]) - -dnl =========================================================================== - -AC_MSG_CHECKING([for native Win32]) -case "$host" in - *-*-mingw*) - cairo_os_win32=yes - ;; - *) - cairo_os_win32=no - ;; -esac -AC_MSG_RESULT([$cairo_os_win32]) -AM_CONDITIONAL(OS_WIN32, test "$cairo_os_win32" = "yes") - -AC_CHECK_HEADERS([windows.h], have_windows=yes, have_windows=no) - -CAIRO_BACKEND_ENABLE(win32, Microsoft Windows, win32, WIN32_SURFACE, auto, [ - if test "x$have_windows" != xyes; then - use_win32="no (requires a Win32 platform)" - fi - win32_LIBS="-lgdi32 -lmsimg32" -]) - -CAIRO_BACKEND_ENABLE(win32_font, Microsoft Windows font, win32-font, WIN32_FONT, auto, [ - use_win32_font=$use_win32 -]) - -test_win32_printing=no -if test "x$use_win32" = "xyes"; then - AC_CHECK_PROG(GS, gs, gs) - if test "$GS"; then - AC_DEFINE([CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE], 1, [Define to 1 if the Win32 Printing backend can be tested (needs ghostscript)]) - test_win32_printing="yes" - else - AC_MSG_WARN([Win32 Printing backend will not be tested since ghostscript is not available]) - test_win32_printing="no (requires ghostscript)" - fi -fi - -AM_CONDITIONAL(CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE, test "x$test_win32_printing" = "xyes") - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(os2, OS/2, os2, OS2_SURFACE, no, [ - case "$host" in - *-*-os2*) - : - ;; - *) - use_os2="no (requires an OS/2 platform)" - ;; - esac -]) - -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 -]) - -# Uncomment the if, since with it in place compilation breaks on OpenSuSE 11.1b4 -#if test "x$use_beos" = "xyes"; then - AC_PROG_CXX -#fi - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(png, PNG, png, PNG_FUNCTIONS, yes, [ - use_png=no - AC_ARG_VAR([png_REQUIRES], [module name for libpng to search for using pkg-config]) - if test "x$png_REQUIRES" = x; then - # 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 - else - use_png=yes - fi - - if test "x$use_png" = "xyes" ; then - PKG_CHECK_MODULES(png, $png_REQUIRES, , AC_MSG_RESULT(no)) - 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 ***]) -fi - -dnl =========================================================================== - -GLITZ_MIN_VERSION=0.5.1 -CAIRO_BACKEND_ENABLE(glitz, glitz, glitz, GLITZ_SURFACE, no, [ - glitz_REQUIRES="glitz >= $GLITZ_MIN_VERSION" - PKG_CHECK_MODULES(glitz, $glitz_REQUIRES, , [AC_MSG_RESULT(no) - 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; AC_MSG_RESULT(no)]) - PKG_CHECK_MODULES(GLITZ_EGL, glitz-egl >= $GLITZ_MIN_VERSION, - [have_glitz_egl=yes], [have_glitz_egl=no; AC_MSG_RESULT(no)]) - PKG_CHECK_MODULES(GLITZ_GLX, glitz-glx >= $GLITZ_MIN_VERSION, - [have_glitz_glx=yes], [have_glitz_glx=no; AC_MSG_RESULT(no)]) - PKG_CHECK_MODULES(GLITZ_WGL, glitz-wgl >= $GLITZ_MIN_VERSION, - [have_glitz_wgl=yes], [have_glitz_wgl=no; AC_MSG_RESULT(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") - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(directfb, directfb, directfb, DIRECTFB_SURFACE, no, [ - directfb_REQUIRES=directfb - PKG_CHECK_MODULES(directfb, $directfb_REQUIRES, , AC_MSG_RESULT(no) - [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.9) -# libtool (such as 9.7.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 - -CAIRO_BACKEND_ENABLE(ft, FreeType font, freetype, FT_FONT, auto, [ - ft_REQUIRES="fontconfig" - PKG_CHECK_MODULES(FONTCONFIG, $ft_REQUIRES, - [use_ft=yes], - [AC_MSG_RESULT(no) - use_ft=no]) - - if test "x$use_ft" = "xyes"; then - PKG_CHECK_MODULES(FREETYPE, freetype2 >= $FREETYPE_MIN_VERSION, - [freetype_pkgconfig=yes], - [AC_MSG_RESULT(no) - 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` - fi - fi - fi - fi - ft_CFLAGS="$FREETYPE_CFLAGS $FONTCONFIG_CFLAGS" - ft_LIBS="$FREETYPE_LIBS $FONTCONFIG_LIBS" -]) - -if test "x$use_ft" = "xyes"; then - temp_save_libs="$LIBS" - temp_save_cflags="$CFLAGS" - LIBS="$LIBS $ft_LIBS" - CFLAGS="$CFLAGS $ft_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_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table) - - LIBS="$temp_save_libs" - CFLAGS="$temp_save_cflags" -fi - -dnl =========================================================================== - -AC_ARG_ENABLE(pthread, - AS_HELP_STRING([--disable-pthread], - [Do not use pthread]), - [use_pthread=$enableval], [use_pthread=auto]) - -have_pthread=no -if test "x$use_pthread" != "xno"; then - AC_CHECK_HEADERS([pthread.h], have_pthread=yes, have_pthread=no) -fi -AM_CONDITIONAL(HAVE_PTHREAD, test "x$have_pthread" = "xyes") -if test "x$have_pthread" = xno -a "x$use_pthread" = xyes; then - AC_MSG_ERROR([pthread requested but not found]) -fi - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(ps, PostScript, ps, PS_SURFACE, yes, [ - # The ps backend requires zlib. - use_ps=$have_libz - ps_NONPKGCONFIG_LIBS=-lz -]) - -test_ps=no -if test "x$use_ps" = "xyes"; then - AC_CHECK_PROG(GS, gs, gs) - if test "$GS"; then - AC_DEFINE([CAIRO_CAN_TEST_PS_SURFACE], 1, [Define to 1 if the PS backend can be tested (needs ghostscript)]) - test_ps="yes" - else - AC_MSG_WARN([PS backend will not be tested since ghostscript is not available]) - test_ps="no (requires ghostscript)" - fi -fi - -AM_CONDITIONAL(CAIRO_CAN_TEST_PS_SURFACE, test "x$test_ps" = "xyes") - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(pdf, PDF, pdf, PDF_SURFACE, yes, [ - # The pdf backend requires zlib. - use_pdf=$have_libz - pdf_NONPKGCONFIG_LIBS=-lz -]) - -POPPLER_VERSION_REQUIRED=0.8.0 -test_pdf=no -if test "x$use_pdf" = "xyes"; then - poppler_DEPENDENCY="poppler-glib >= $POPPLER_VERSION_REQUIRED" - PKG_CHECK_MODULES(POPPLER, $poppler_DEPENDENCY pango gtk+-2.0, - [_CHECK_FUNCS_WITH_FLAGS(poppler_page_render_to_pixbuf, [$POPPLER_CFLAGS], [$POPPLER_LIBS], - [test_pdf=yes], - [AC_MSG_RESULT(no); test_pdf="no (requires $poppler_DEPENDENCY)"])], - [AC_MSG_RESULT(no); test_pdf="no (requires $poppler_DEPENDENCY)"]) - 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 >= $POPPLER_VERSION_REQUIRED is not available]) - fi -fi - -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") - -dnl =========================================================================== - -CAIRO_BACKEND_ENABLE(svg, SVG, svg, SVG_SURFACE, yes, [ - if test "x$use_png" != "xyes"; then - use_svg="no (requires --enable-png)" - fi -]) - -LIBRSVG_VERSION_REQUIRED=2.15.0 -test_svg=no -if test "x$use_svg" = "xyes"; then - librsvg_DEPENDENCY="librsvg-2.0 >= $LIBRSVG_VERSION_REQUIRED" - PKG_CHECK_MODULES(LIBRSVG, $librsvg_DEPENDENCY gdk-2.0, - [_CHECK_FUNCS_WITH_FLAGS(rsvg_pixbuf_from_file, [$LIBRSVG_CFLAGS], [$LIBRSVG_LIBS], - [test_svg=yes], - [AC_MSG_RESULT(no); test_svg="no (requires $librsvg_DEPENDENCY)"])], - [AC_MSG_RESULT(no); test_svg="no (requires $librsvg_DEPENDENCY)"]) - 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]) - else - AC_MSG_WARN([SVG backend will not be tested since librsvg >= $LIBRSVG_VERSION_REQUIRED is not available]) - fi -fi - -AM_CONDITIONAL(CAIRO_CAN_TEST_SVG_SURFACE, test "x$test_svg" = "xyes") -AC_SUBST(LIBRSVG_CFLAGS) -AC_SUBST(LIBRSVG_LIBS) - -dnl =========================================================================== -dnl dump backend checking results -AC_CACHE_SAVE - -dnl =========================================================================== -dnl Checks for precise integer types -AC_CHECK_HEADERS([stdint.h signal.h inttypes.h sys/int_types.h]) -AC_CHECK_TYPES([uint64_t, uint128_t]) - -dnl =========================================================================== -dnl check for CPU affinity support -AC_CHECK_HEADERS([sched.h], [ - AC_CHECK_FUNCS([sched_getaffinity], [ - AC_DEFINE([HAVE_SCHED_GETAFFINITY], [1], - [Define to 1 if you have Linux compatible sched_getaffinity]) - ]) -]) - -AC_CHECK_LIB(rt, sched_yield, [RT_LIBS=-lrt], [RT_LIBS=]) -CAIROPERF_LIBS=$RT_LIBS - -dnl =========================================================================== -dnl Checks for misc headers -AC_CHECK_HEADERS([libgen.h]) - -dnl =========================================================================== -dnl check compiler flags -AC_DEFUN([CAIRO_CC_TRY_FLAG], [ - AC_MSG_CHECKING([whether $CC supports $1]) - - cairo_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $1" - - AC_COMPILE_IFELSE([ ], [cairo_cc_flag=yes], [cairo_cc_flag=no]) - CFLAGS="$cairo_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 Use lots of warning flags with with gcc and compatible compilers - -dnl Note: if you change the following variable, the cache is automatically -dnl skipped and all flags rechecked. So there's no need to do anything -dnl else. If for any reason you need to force a recheck, just change -dnl MAYBE_WARN in an ignorable way (like adding whitespace) - -MAYBE_WARN="-Wall -Wextra \ --Wsign-compare -Werror-implicit-function-declaration \ --Wpointer-arith -Wwrite-strings -Wstrict-prototypes \ --Wmissing-prototypes -Wmissing-declarations -Wnested-externs \ --Wpacked -Wswitch-enum -Wmissing-format-attribute \ --Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations \ --Wdeclaration-after-statement -Wold-style-definition \ --Wno-missing-field-initializers -Wno-unused-parameter \ --Wno-attributes -Wno-long-long -Winline" - - -# invalidate cached value if MAYBE_WARN has changed -if test "x$cairo_cv_warn_maybe" != "x$MAYBE_WARN"; then - unset cairo_cv_warn_cflags -fi -AC_CACHE_CHECK([for supported warning flags], cairo_cv_warn_cflags, [ - echo - WARN_CFLAGS="" - - # Some warning options are not supported by all versions of - # gcc, so test all desired options against the current - # compiler. - # - # Note that there are some order dependencies - # here. Specifically, an option that disables a warning will - # have no net effect if a later option then enables that - # warnings, (perhaps implicitly). So we put some grouped - # options (-Wall and -Wextra) up front and the -Wno options - # last. - - for W in $MAYBE_WARN; do - CAIRO_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"]) - done - - cairo_cv_warn_cflags=$WARN_CFLAGS - cairo_cv_warn_maybe=$MAYBE_WARN - - AC_MSG_CHECKING([which warning flags were supported])]) -WARN_CFLAGS="$cairo_cv_warn_cflags" -CAIRO_CFLAGS="$CAIRO_CFLAGS $WARN_CFLAGS" - -# We only wish to enable attribute(warn_unused_result) if we can prevent -# gcc from generating thousands of warnings about the misapplication of the -# attribute to void functions and variables. -AC_MSG_CHECKING([how to enable unused result warnings]) -warn_unused_result="" -if echo $WARN_CFLAGS | grep -e '-Wno-attributes' >/dev/null; then - AC_TRY_COMPILE([__attribute__((__warn_unused_result__)) - int f (int i) { return i; }], [], - [warn_unused_result="__attribute__((__warn_unused_result__))"]) -fi -AC_DEFINE_UNQUOTED([WARN_UNUSED_RESULT], [$warn_unused_result], - [Define to the value your compiler uses to support the warn-unused-result attribute]) -AC_MSG_RESULT([$warn_unused_result]) - -CAIRO_CC_TRY_FLAG([-fno-strict-aliasing], - [CAIRO_CFLAGS="$CAIRO_CFLAGS -fno-strict-aliasing"]) - -AC_SUBST(CAIRO_REQUIRES) -AC_SUBST(CAIRO_NONPKGCONFIG_CFLAGS) -AC_SUBST(CAIRO_NONPKGCONFIG_LIBS) -AC_SUBST(CAIRO_CFLAGS) -AC_SUBST(CAIRO_LDADD) -AC_SUBST(CAIRO_LIBS) -AC_SUBST(CAIROPERF_LIBS) - -dnl =========================================================================== -dnl Check for gtk-doc and docbook - -GTK_DOC_CHECK([1.6]) - -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) - -dnl =========================================================================== - -cairo_has_lcov=no -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 - AC_CHECK_PROG(SHTOOL, shtool, shtool) - 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 1.5" - 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 - ]) - fi - - case $cairo_cv_ltp_version in - ""|invalid[)] - ;; - *) - cairo_has_lcov=yes - ;; - esac - - if test "x$cairo_has_lcov" != "xyes"; then - AC_MSG_ERROR([[To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list. -Please install the Linux Test Project [http://ltp.sourceforge.net/], and try again.]]) - fi - - if test -z "$LTP_GENHTML"; then - AC_MSG_ERROR([[Could not find genhtml from the LTP package. -Please install the Linux Test Project [http://ltp.sourceforge.net/], and try again.]]) - 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({,}) - CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'` - 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" - CAIRO_LDADD="$CAIRO_LDADD -lgcov" -fi -AM_CONDITIONAL(CAIRO_HAS_LCOV, test "x$cairo_has_lcov" = "xyes") - -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_ARG_ENABLE(some-floating-point, - AS_HELP_STRING([--disable-some-floating-point], - [Disable certain code paths that rely heavily on double precision - floating-point calculation. This option can improve - performance on systems without a double precision floating-point - unit, but might degrade performance on those that do.]), [ -if test "x$enableval" = "xno"; then - # A value of 'no' for $enableval means that they want to disable, which - # means 'yes' for $disable_some_floating_point. - disable_some_floating_point=yes -fi -], [disable_some_floating_point=no]) - -AM_CONDITIONAL(DISABLE_SOME_FLOATING_POINT, - test "x$disable_some_floating_point" = "xyes") -if test "x$disable_some_floating_point" = "xyes"; then - AC_DEFINE(DISABLE_SOME_FLOATING_POINT, 1, - [Define to 1 to disable certain code paths that rely heavily on - double precision floating-point calculation]) -fi - -dnl =========================================================================== - -AC_CONFIG_COMMANDS([src/cairo-features.h], -[ - featuresfile=src/cairo-features.h - outfile=$featuresfile.tmp - AC_MSG_NOTICE([creating $featuresfile]) - cat > $outfile <<_EOF -/* Generated by configure. Do not edit */ -#ifndef CAIRO_FEATURES_H -#define CAIRO_FEATURES_H - -#ifdef __cplusplus -# define CAIRO_BEGIN_DECLS extern "C" { -# define CAIRO_END_DECLS } -#else -# define CAIRO_BEGIN_DECLS -# define CAIRO_END_DECLS -#endif - -#ifndef cairo_public -# define cairo_public -#endif - -#define CAIRO_VERSION_MAJOR $CAIRO_VERSION_MAJOR -#define CAIRO_VERSION_MINOR $CAIRO_VERSION_MINOR -#define CAIRO_VERSION_MICRO $CAIRO_VERSION_MICRO - -#define CAIRO_VERSION_STRING "$CAIRO_VERSION_MAJOR.$CAIRO_VERSION_MINOR.$CAIRO_VERSION_MICRO" - -_EOF - for FEATURE in $CAIRO_FEATURES; do - echo "#define CAIRO_HAS_$FEATURE 1" >> $outfile - done - echo '' >> $outfile - for FEATURE in $CAIRO_NO_FEATURES; do - echo "/*#undef CAIRO_HAS_$FEATURE */" >> $outfile - done - - echo '' >> $outfile - echo '#endif' >> $outfile - - if cmp -s $outfile $featuresfile; then - AC_MSG_NOTICE([$featuresfile is unchanged]) - rm -f $outfile - else - mv $outfile $featuresfile - fi -],[ - CAIRO_FEATURES='$CAIRO_FEATURES' - CAIRO_NO_FEATURES='$CAIRO_NO_FEATURES' - CAIRO_VERSION_MAJOR=$CAIRO_VERSION_MAJOR - CAIRO_VERSION_MINOR=$CAIRO_VERSION_MINOR - CAIRO_VERSION_MICRO=$CAIRO_VERSION_MICRO -]) -AC_CONFIG_COMMANDS([src/cairo-no-features.h], -[ - nofeaturesfile=src/cairo-no-features.h - outfile=$nofeaturesfile.tmp - AC_MSG_NOTICE([creating $nofeaturesfile]) - cat > $outfile <<_EOF -/* Generated by configure. Do not edit */ -#ifndef CAIRO_NO_FEATURES_H -#define CAIRO_NO_FEATURES_H - -#include - -/* This is a dummy header, to trick gtk-doc only */ - -_EOF - for FEATURE in $CAIRO_NO_FEATURES; do - echo "#define CAIRO_HAS_$FEATURE 1" >> $outfile - done - - echo '' >> $outfile - echo '#endif' >> $outfile - - if cmp -s $outfile $nofeaturesfile; then - AC_MSG_NOTICE([$nofeaturesfile is unchanged]) - rm -f $outfile - else - mv $outfile $nofeaturesfile - fi -],[ - CAIRO_NO_FEATURES='$CAIRO_NO_FEATURES' -]) -AC_CONFIG_FILES([ -Makefile -src/Makefile -src/cairo.pc -]) - -AC_OUTPUT - -dnl =========================================================================== - -V="$CAIRO_VERSION_MAJOR.$CAIRO_VERSION_MINOR.$CAIRO_VERSION_MICRO" -echo "" -echo "cairo (version $V) will be compiled with the following surface backends:" -echo " image: yes (always builtin)" -echo " Xlib: $use_xlib" -echo " Xlib Xrender: $use_xlib_xrender" -echo " Quartz: $use_quartz" -echo " Quartz-image: $use_quartz_image" -echo " XCB: $use_xcb" -echo " Win32: $use_win32" -echo " OS2: $use_os2" -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_ft" -echo " Win32: $use_win32_font" -echo " Quartz: $use_quartz_font" -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 " ps testing: $test_ps" -echo " pdf testing: $test_pdf" -echo " svg testing: $test_svg" -if test x"$use_win32" = "xyes"; then - echo " win32 printing testing: $test_win32_printing" -fi -echo "" -echo "using CFLAGS:" -echo $CAIRO_CFLAGS -echo "" - -if test x"$use_ft" != "xyes" && \ - test x"$use_win32_font" != "xyes" && \ - test x"$use_quartz_font" != "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_image" = "xyes" ; then - echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/Quartz Image/' -fi - -if test x"$use_os2" = "xyes" ; then - echo "$WARNING_MESSAGE" | sed 's,@BACKEND@,OS/2,' -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 diff -Nru libgdiplus-4.0-2.10.9/cairo/COPYING libgdiplus-4.0-4.2.3+precise1/cairo/COPYING --- libgdiplus-4.0-2.10.9/cairo/COPYING 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/COPYING 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -Cairo is free software. - -Every source file in the implementation[*] of cairo is available to be -redistributed and/or modified under the terms of either the GNU Lesser -General Public License (LGPL) version 2.1 or the Mozilla Public -License (MPL) version 1.1. Some files are available under more -liberal terms, but we believe that in all cases, each file may be used -under either the LGPL or the MPL. - -See the following files in this directory for the precise terms and -conditions of either license: - - COPYING-LGPL-2.1 - COPYING-MPL-1.1 - -Please see each file in the implementation for copyright and licensing -information, (in the opening comment of each file). - -[*] The implementation of cairo is contained entirely within the "src" -and "pixman" directories of the cairo source distribution. There are -other components of the cairo source distribution (such as the "test" -and "perf") that are auxiliary to the library itself. None of the -source code in these directories contributes to a build of the cairo -library itself, (libcairo.so or cairo.dll or similar). - -These auxilary components are also free software, but may be under -different license terms than cairo itself. For example, most of the -test cases in the perf and test directories are made available under -an MIT license to simplify any use of this code for reference purposes -in using cairo itself. Other files might be available under the GNU -General Public License (GPL), for example. Again, please see the -opening comment of each file for copyright and licensing information. diff -Nru libgdiplus-4.0-2.10.9/cairo/COPYING-LGPL-2.1 libgdiplus-4.0-4.2.3+precise1/cairo/COPYING-LGPL-2.1 --- libgdiplus-4.0-2.10.9/cairo/COPYING-LGPL-2.1 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/COPYING-LGPL-2.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,510 +0,0 @@ - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations -below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it -becomes a de-facto standard. To achieve this, non-free programs must -be allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control -compilation and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at least - three years, to give the same user the materials specified in - Subsection 6a, above, for a charge no more than the cost of - performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply, and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License -may add an explicit geographical distribution limitation excluding those -countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms -of the ordinary General Public License). - - To apply these terms, attach the following notices to the library. -It is safest to attach them to the start of each source file to most -effectively convey the exclusion of warranty; and each file should -have at least the "copyright" line and a pointer to where the full -notice is found. - - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the library, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James - Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff -Nru libgdiplus-4.0-2.10.9/cairo/COPYING-MPL-1.1 libgdiplus-4.0-4.2.3+precise1/cairo/COPYING-MPL-1.1 --- libgdiplus-4.0-2.10.9/cairo/COPYING-MPL-1.1 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/COPYING-MPL-1.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,470 +0,0 @@ - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - diff -Nru libgdiplus-4.0-2.10.9/cairo/INSTALL libgdiplus-4.0-4.2.3+precise1/cairo/INSTALL --- libgdiplus-4.0-2.10.9/cairo/INSTALL 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/INSTALL 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ -Quick-start build instructions ------------------------------- -1) Configure the package: - - ./configure - -2) Compile it: - - make - -3) Install it: - - make install - -This final step may require temporary root access (eg. with sudo) if -you don't have write permission to the directory in which cairo will -be installed. - -NOTE: If you are working with source from git/cvs rather than from a tar -file, then you should use ./autogen.sh in place of ./configure -anywhere it is mentioned in these instructions. - -More detailed build instructions --------------------------------- -1) Configure the package - - The first step in building cairo is to configure the package by - running the configure script. [Note: if you don't have a configure - script, skip down below to the Extremely detailed build - instructions.] - - The configure script attempts to automatically detect as much as - possible about your system. So, you should primarily just accept - its defaults by running: - - ./configure - - The configure script does accept a large number of options for - fine-tuning its behavior. See "./configure --help" for a complete - list. The most commonly used options are discussed here. - - --prefix=PREFIX - - This option specifies the directory under which the software - should be installed. By default configure will choose a - directory such as /usr/local. If you would like to install - cairo to some other location, pass the director to configure - with the --prefix option. For example: - - ./configure --prefix=/opt/cairo - - would install cairo into the /opt/cairo directory. You could - also choose a prefix directory within your home directory if - you don't have write access to any system-wide directory. - - After installing into a custom prefix, you will need to set - some environment variables to allow the software to be - found. Assuming the /opt/cairo prefix and assuming you are - using the bash shell, the following environment variables - should be set: - - PKG_CONFIG_PATH=/opt/cairo/lib/pkgconfig - LD_LIBRARY_PATH=/opt/cairo/lib - export PKG_CONFIG_PATH LD_LIBRARY_PATH - - (NOTE: On Mac OS X, at least, use DYLD_LIBRARY_PATH in place - of LD_LIBRARY_PATH above.) - - --enable-quartz - --enable-atsui - --enable-xcb - --enable-glitz - --enable-beos - --enable-os2 - --enable-directfb - - Some of cairo's backends are marked as experimental and will - not be built by default. If you would like to build and - experiment with these backends, you will need to pass one of - the above options to the configure script. You may need to - have certain libraries installed first as discussed in the - dependencies section of the README file. - - --disable-xlib - --disable-win32 - --disable-png - --disable-freetype - --disable-ps - --disable-pdf - --disable-svg - - Cairo's configure script detects the libraries needed to build - each stable backend, and when it finds them, enables each - backend. If you would like to override this detection and - disable a backend, (even when it would be possible to build - it), use one of the options above to disable the backend. - -2) Compile the package: - - This step is very simple. Just: - - make - - The Makefiles included with cairo are designed to work on as many - different systems as possible. - - When cairo is compiled, you can also run some automated tests of - cairo with: - - make check - - NOTE: Some versions of X servers will cause the -xlib tests to - report failures in make check even when cairo is working just - fine. If you see failures in nothing but -xlib tests, please - examine the corresponding -xlib-out.png images and compare them to - the -ref.png reference images (the -xlib-diff.png images might also - be useful). If the results seem "close enough" please do not report - a bug against cairo as the "failures" you are seeing are just due - to subtle variations in X server implementations. - -3) Install the package: - - The final step is to install the package with: - - make install - - If you are installing to a system-wide location you may need to - temporarily acquire root access in order to perform this - operation. A good way to do this is to use the sudo program: - - sudo make install - -Extremely detailed build instructions -------------------------------------- -So you want to build cairo but it didn't come with a configure -script. This is probably because you have checked out the latest -in-development code via git. If you need to be on the bleeding edge, -(for example, because you're wanting to develop some aspect of cairo -itself), then you're in the right place and should read on. - -However, if you don't need such a bleeding-edge version of cairo, then -you might prefer to start by building the latest stable cairo release: - - http://cairographics.org/releases - -or perhaps the latest (unstable) development snapshot: - - http://cairographics.org/snapshots - -There you'll find nicely packaged tar files that include a configure -script so you can go back the the simpler instructions above. - -But you're still reading, so you're someone that loves to -learn. Excellent! We hope you'll learn enough to make some excellent -contributions to cairo. Since you're not using a packaged tar file, -you're going to need some additional tools beyond just a C compiler in -order to compile cairo. Specifically, you need the following utilities: - - automake (1.8 or newer) - autoconf - libtool - -Hopefully your platform of choice has packages readily available so -that you can easily install things with your system's package -management tool, (such as "apt-get install automake" on Debian or "yum -install automake" on Fedora, etc.). Note that Mac OS X ships with it's -own utility called libtool which is not what you want, (the one you do -want goes by the name of glibtool). - -Once you have all of those packages installed, the next step is to run -the autogen.sh script. That can be as simple as: - - ./autogen.sh - -Or, if you're using Mac OS X, you'll have to let it know to use -glibtool by instead doing: - - LIBTOOLIZE=glibtoolize ./autogen.sh - -But before you run that command, note that the autogen.sh script -accepts all the same arguments as the configure script, (and in fact, -will generate the configure script and run it with the arguments you -provide). So go back up to step (1) above and see what additional -arguments you might want to pass, (such as prefix). Then continue with -the instructions, simply using ./autogen.sh in place of ./configure. - -Happy hacking! diff -Nru libgdiplus-4.0-2.10.9/cairo/Makefile.am libgdiplus-4.0-4.2.3+precise1/cairo/Makefile.am --- libgdiplus-4.0-2.10.9/cairo/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,247 +0,0 @@ -DIST_SUBDIRS = src #boilerplate test perf doc util -SUBDIRS = src #doc -# libpng is required for our test programs -if CAIRO_HAS_PNG_FUNCTIONS -#SUBDIRS += boilerplate test perf -endif - - -.PHONY: doc test retest recheck check-valgrind -# We have some generated header files, so we really need to build the -# library before we can build the docs -doc: all - cd doc && $(MAKE) $(AM_MAKEFLAGS) doc -test: all - cd test && $(MAKE) $(AM_MAKEFLAGS) test -retest: all - cd test && $(MAKE) $(AM_MAKEFLAGS) retest -recheck: all - cd test && $(MAKE) $(AM_MAKEFLAGS) recheck -check-valgrind: all - cd test && $(MAKE) $(AM_MAKEFLAGS) check-valgrind - cd perf && $(MAKE) $(AM_MAKEFLAGS) check-valgrind -perf: all - cd perf && $(MAKE) $(AM_MAKEFLAGS) perf - -if CAIRO_HAS_LCOV -# use recursive makes in order to ignore errors during check/perf -lcov: - -$(MAKE) $(AM_MAKEFLAGS) check - $(MAKE) $(AM_MAKEFLAGS) genlcov -lcov-perf: - -$(MAKE) $(AM_MAKEFLAGS) perf - $(MAKE) $(AM_MAKEFLAGS) genlcov - -# we have to massage the lcov.info file slightly to hide the effect of libtool -# placing the objects files in the .libs/ directory separate from the *.c -genlcov: - $(LTP) --directory $(top_builddir) --path $(top_builddir) --capture --output-file cairo-lcov.info --test-name CAIRO_TEST --no-checksum - $(SED) -e 's#.libs/##' \ - -e 's#boilerplate/src#src#' \ - -e 's#$(shell pwd)#$(shell cd $(top_srcdir) && pwd)#' \ - < cairo-lcov.info > cairo-lcov.info.tmp - LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory cairo-lcov --title "Cairo Code Coverage" --show-details cairo-lcov.info.tmp - $(RM) cairo-lcov.info.tmp -else -lcov lcov-perf genlcov: - @echo You need to configure Cairo with support for gcov enabled. - @echo e.g, ./configure --enable-gcov -endif - -lcov-clean: -if CAIRO_HAS_LCOV - -$(LTP) --directory $(top_builddir) -z -endif - -$(RM) -r cairo-lcov.info cairo-lcov - -$(FIND) -name '*.gcda' -print | $(XARGS) $(RM) - -EXTRA_DIST = \ - AUTHORS \ - BIBLIOGRAPHY \ - BUGS \ - CODING_STYLE \ - COPYING \ - COPYING-LGPL-2.1 \ - COPYING-MPL-1.1 \ - INSTALL \ - NEWS \ - PORTING_GUIDE \ - README \ - RELEASING -DISTCLEANFILES = config.cache -distclean-local: lcov-clean - -MAINTAINERCLEANFILES = \ - $(srcdir)/aclocal.m4 \ - $(srcdir)/autoscan.log \ - $(srcdir)/compile \ - $(srcdir)/config.guess \ - $(srcdir)/config.h.in \ - $(srcdir)/config.sub \ - $(srcdir)/configure.scan \ - $(srcdir)/depcomp \ - $(srcdir)/install-sh \ - $(srcdir)/ltmain.sh \ - $(srcdir)/missing \ - $(srcdir)/mkinstalldirs \ - `find "$(srcdir)" -type f -name Makefile.in -print` - -DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-test-surfaces - -include $(srcdir)/ChangeLog.mk - -# Some custom targets to make it easier to release things. -# -# To make real stable releases or devel snapshots, use either: -# make release-check -# or make release-publish -# -# To make a quick properly named (date and git hash stamped) tarball: -# make snapshot - -snapshot: - distdir="$(distdir)-`date '+%Y%m%d'`"; \ - test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \ - $(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist - -RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) -RELEASE_UPLOAD_HOST = cairographics.org -RELEASE_UPLOAD_BASE = /srv/cairo.freedesktop.org/www -RELEASE_UPLOAD_DIR = $(RELEASE_UPLOAD_BASE)/$(RELEASE_OR_SNAPSHOT)s -RELEASE_URL_BASE = http://cairographics.org/$(RELEASE_OR_SNAPSHOT)s -RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org (and CC gnome-announce-list@gnome.org) - -MANUAL_DATED = cairo-manual-`date +%Y%m%d` -MANUAL_TAR_FILE = $(MANUAL_DATED).tar.gz -MANUAL_UPLOAD_DIR = $(RELEASE_UPLOAD_BASE) - -tar_file = $(PACKAGE)-$(VERSION).tar.gz -sha1_file = $(tar_file).sha1 -gpg_file = $(sha1_file).asc - -$(sha1_file): $(tar_file) - sha1sum $^ > $@ - -$(gpg_file): $(sha1_file) - @echo "Please enter your GPG password to sign the checksum." - gpg --armor --sign $^ - -# Win32 package zipfiles -runtime_zip_file = /tmp/$(PACKAGE)-$(VERSION).zip -developer_zip_file = /tmp/$(PACKAGE)-dev-$(VERSION).zip - -$(runtime_zip_file): install - -$(RM) $@ - cd $(prefix); \ - zip $@ bin/libcairo-$(LT_CURRENT_MINUS_AGE).dll - -$(developer_zip_file): install - -$(RM) $@ - cd $(prefix); \ - zip -r $@ include/cairo lib/libcairo.dll.a lib/cairo.lib lib/pkgconfig/cairo.pc lib/pkgconfig/cairo-*.pc share/gtk-doc/html/cairo - -zips: $(runtime_zip_file) $(developer_zip_file) - -release-verify-sane-changelogs: changelogs - @echo -n "Checking that the ChangeLog files are sane..." - @if grep -q "is required to generate" $(CHANGELOGS); then \ - (echo "Ouch." && echo "Some of the ChangeLogs are not generated correctly." \ - && echo "Remove ChangeLog* and make changelogs" \ - && false); else :; fi - @echo "Good." - -release-verify-sane-tests: - @echo "Checking that the test suite is sane..." - @cd test && $(MAKE) $(AM_MAKEFLAGS) release-verify-sane-tests - -release-verify-soname-major: - @echo -n "Checking that the cairo soname major number is 2..." - @test "$(LT_CURRENT_MINUS_AGE)" = "2" \ - || (echo "Ouch." && echo "The soname major number is $(LT_CURRENT_MINUS_AGE) instead of 2." \ - && echo "The libtool shared library version numbers in configure.in must be incremented properly." \ - && false) - @echo "Good." - -release-verify-even-micro: - @echo -n "Checking that $(VERSION) has an even micro component..." - @test "$(CAIRO_VERSION_MICRO)" = "`echo $(CAIRO_VERSION_MICRO)/2*2 | bc`" \ - || (echo "Ouch." && echo "The version micro component '$(CAIRO_VERSION_MICRO)' is not an even number." \ - && echo "The version in configure.in must be incremented before a new release." \ - && false) - @echo "Good." - -release-verify-newer: - @echo -n "Checking that no $(VERSION) release already exists..." - @ssh $(RELEASE_UPLOAD_HOST) test ! -e $(RELEASE_UPLOAD_DIR)/$(tar_file) \ - || (echo "Ouch." && echo "Found: $(RELEASE_UPLOAD_HOST):$(RELEASE_UPLOAD_DIR)/$(tar_file)" \ - && echo "Are you sure you have an updated checkout?" \ - && echo "This should never happen." \ - && false) - @echo "Good." - -release-remove-old: - $(RM) $(tar_file) $(sha1_file) $(gpg_file) - -# Maybe it's just my system, but somehow group sticky bits keep -# getting set and this causes failures in un-tarring on some systems. -# Until I figure out where the sticky bit is coming from, just clean -# these up before building a release. -release-cleanup-group-sticky: - find . -type f | xargs chmod g-s - -release-check: release-verify-sane-changelogs release-verify-sane-tests release-verify-soname-major release-verify-even-micro release-verify-newer release-remove-old release-cleanup-group-sticky distcheck - -release-upload: release-check $(tar_file) $(sha1_file) $(gpg_file) - mkdir -p releases - scp $(tar_file) $(sha1_file) $(gpg_file) $(RELEASE_UPLOAD_HOST):$(RELEASE_UPLOAD_DIR) - mv $(tar_file) $(sha1_file) $(gpg_file) releases - ssh $(RELEASE_UPLOAD_HOST) "rm -f $(RELEASE_UPLOAD_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_file) $(RELEASE_UPLOAD_DIR)/LATEST-$(PACKAGE)-$(VERSION)" - git-tag -s -m "cairo $(CAIRO_VERSION_MAJOR).$(CAIRO_VERSION_MINOR).$(CAIRO_VERSION_MICRO) release" $(CAIRO_VERSION_MAJOR).$(CAIRO_VERSION_MINOR).$(CAIRO_VERSION_MICRO) - -release-publish-message: releases/$(sha1_file) - @echo "Please follow the instructions in RELEASING to push stuff out and" - @echo "send out the announcement mails. Here is the excerpt you need:" - @echo "" - @echo "Subject: $(PACKAGE) $(RELEASE_OR_SNAPSHOT) $(VERSION) now available" - @echo "" - @echo "============================== CUT HERE ==============================" - @echo "A new $(PACKAGE) $(RELEASE_OR_SNAPSHOT) $(VERSION) is now available from:" - @echo "" - @echo " $(RELEASE_URL_BASE)/$(tar_file)" - @echo "" - @echo " which can be verified with:" - @echo "" - @echo " $(RELEASE_URL_BASE)/$(sha1_file)" - @echo -n " " - @cat releases/$(sha1_file) - @echo "" - @echo " $(RELEASE_URL_BASE)/$(gpg_file)" - @echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)" - @echo "" - @echo " Additionally, a git clone of the source tree:" - @echo "" - @echo " git clone git://git.cairographics.org/git/cairo" - @echo "" - @echo " will include a signed $(VERSION) tag which points to a commit named:" - @echo " `git cat-file tag $(VERSION) | grep ^object | sed -e 's,object ,,'`" - @echo "" - @echo " which can be verified with:" - @echo " git verify-tag $(VERSION)" - @echo "" - @echo " and can be checked out with a command such as:" - @echo " git checkout -b build $(VERSION)" - @echo "" - @echo "============================== CUT HERE ==============================" - -release-publish: release-upload release-publish-message - -doc-publish: doc - rm -rf ./$(MANUAL_DATED) - cp -a doc/public/html $(MANUAL_DATED) - tar czf $(MANUAL_TAR_FILE) $(MANUAL_DATED) - scp $(MANUAL_TAR_FILE) $(RELEASE_UPLOAD_HOST):$(MANUAL_UPLOAD_DIR) - ssh $(RELEASE_UPLOAD_HOST) "cd $(MANUAL_UPLOAD_DIR) && tar xzf $(MANUAL_TAR_FILE) && rm -f manual && ln -s $(MANUAL_DATED) manual && ln -sf $(MANUAL_TAR_FILE) cairo-manual.tar.gz" - -.PHONY: release-verify-even-micro release-verify-newer release-remove-old release-cleanup-group-sticky release-check release-upload release-publish docs-publish lcov lcov-perf lcov-clean genlcov - -EXTRA_DIST += Makefile.win32 diff -Nru libgdiplus-4.0-2.10.9/cairo/Makefile.in libgdiplus-4.0-4.2.3+precise1/cairo/Makefile.in --- libgdiplus-4.0-2.10.9/cairo/Makefile.in 2011-12-14 17:04:33.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,1077 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Creating ChangeLog files from git log: - -# We always create a ChangeLog that contains the most recent changes, and -# multiple others for changes between major releases (other than the last such -# segment that we put in 'ChangeLog'. The old ones are named -# ChangeLog.pre-X.Y where X.Y is the version number of the major release. -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = README $(am__configure_deps) $(srcdir)/../config.guess \ - $(srcdir)/../config.sub $(srcdir)/../install-sh \ - $(srcdir)/../ltmain.sh $(srcdir)/../missing \ - $(srcdir)/ChangeLog.mk $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAIROPERF_LIBS = @CAIROPERF_LIBS@ -CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_LDADD = @CAIRO_LDADD@ -CAIRO_LIBS = @CAIRO_LIBS@ -CAIRO_NONPKGCONFIG_CFLAGS = @CAIRO_NONPKGCONFIG_CFLAGS@ -CAIRO_NONPKGCONFIG_LIBS = @CAIRO_NONPKGCONFIG_LIBS@ -CAIRO_REQUIRES = @CAIRO_REQUIRES@ -CAIRO_VERSION_MAJOR = @CAIRO_VERSION_MAJOR@ -CAIRO_VERSION_MICRO = @CAIRO_VERSION_MICRO@ -CAIRO_VERSION_MINOR = @CAIRO_VERSION_MINOR@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FIND = @FIND@ -FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ -FREETYPE_CONFIG = @FREETYPE_CONFIG@ -FREETYPE_LIBS = @FREETYPE_LIBS@ -GLITZ_AGL_CFLAGS = @GLITZ_AGL_CFLAGS@ -GLITZ_AGL_LIBS = @GLITZ_AGL_LIBS@ -GLITZ_EGL_CFLAGS = @GLITZ_EGL_CFLAGS@ -GLITZ_EGL_LIBS = @GLITZ_EGL_LIBS@ -GLITZ_GLX_CFLAGS = @GLITZ_GLX_CFLAGS@ -GLITZ_GLX_LIBS = @GLITZ_GLX_LIBS@ -GLITZ_WGL_CFLAGS = @GLITZ_WGL_CFLAGS@ -GLITZ_WGL_LIBS = @GLITZ_WGL_LIBS@ -GREP = @GREP@ -GS = @GS@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBRSVG_CFLAGS = @LIBRSVG_CFLAGS@ -LIBRSVG_LIBS = @LIBRSVG_LIBS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LTP = @LTP@ -LTP_GENHTML = @LTP_GENHTML@ -LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POPPLER_CFLAGS = @POPPLER_CFLAGS@ -POPPLER_LIBS = @POPPLER_LIBS@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SHTOOL = @SHTOOL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VERSION_INFO = @VERSION_INFO@ -XARGS = @XARGS@ -XMKMF = @XMKMF@ -X_CFLAGS = @X_CFLAGS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -directfb_CFLAGS = @directfb_CFLAGS@ -directfb_LIBS = @directfb_LIBS@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -glitz_CFLAGS = @glitz_CFLAGS@ -glitz_LIBS = @glitz_LIBS@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -png_CFLAGS = @png_CFLAGS@ -png_LIBS = @png_LIBS@ -png_REQUIRES = @png_REQUIRES@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -xcb_CFLAGS = @xcb_CFLAGS@ -xcb_LIBS = @xcb_LIBS@ -xlib_CFLAGS = @xlib_CFLAGS@ -xlib_LIBS = @xlib_LIBS@ -xlib_xrender_CFLAGS = @xlib_xrender_CFLAGS@ -xlib_xrender_LIBS = @xlib_xrender_LIBS@ -DIST_SUBDIRS = src #boilerplate test perf doc util -SUBDIRS = src #doc -EXTRA_DIST = AUTHORS BIBLIOGRAPHY BUGS CODING_STYLE COPYING \ - COPYING-LGPL-2.1 COPYING-MPL-1.1 INSTALL NEWS PORTING_GUIDE \ - README RELEASING Makefile.win32 -DISTCLEANFILES = config.cache $(srcdir)/ChangeLog.cache-* \ - ChangeLog.cache-* -MAINTAINERCLEANFILES = $(srcdir)/aclocal.m4 $(srcdir)/autoscan.log \ - $(srcdir)/compile $(srcdir)/config.guess $(srcdir)/config.h.in \ - $(srcdir)/config.sub $(srcdir)/configure.scan \ - $(srcdir)/depcomp $(srcdir)/install-sh $(srcdir)/ltmain.sh \ - $(srcdir)/missing $(srcdir)/mkinstalldirs `find "$(srcdir)" \ - -type f -name Makefile.in -print` $(srcdir)/ChangeLog \ - $(srcdir)/ChangeLog.pre-* -DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-test-surfaces -CURR_CHANGELOG_VERSION = $(CAIRO_VERSION_MAJOR).$$(echo "($(CAIRO_VERSION_MINOR)+1)/2*2" | bc) -# examines $version -PREV_CHANGELOG_VERSION = $$(if test "x$$(echo "($$version-0.1)*2/2"|bc)" = "x$$(echo "$$version*2/2"|bc)"; \ - then echo "$$version-$$(echo "$$version" | sed 's/[0-9]/0/g;s/[0-9]$$/2/')"; \ - else echo "$$version-1.0"; \ - fi | bc | sed 's/[.]0*/./;s/^0[.]\?$$/initial/;s/[.]$$/.0/') - -CHANGELOGS = ChangeLog \ - `version=$(CURR_CHANGELOG_VERSION); \ - version=$(PREV_CHANGELOG_VERSION); \ - while test "x$$version" != xinitial; do \ - echo ChangeLog.pre-$$version; \ - version=$(PREV_CHANGELOG_VERSION); \ - done` - -RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) -RELEASE_UPLOAD_HOST = cairographics.org -RELEASE_UPLOAD_BASE = /srv/cairo.freedesktop.org/www -RELEASE_UPLOAD_DIR = $(RELEASE_UPLOAD_BASE)/$(RELEASE_OR_SNAPSHOT)s -RELEASE_URL_BASE = http://cairographics.org/$(RELEASE_OR_SNAPSHOT)s -RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org (and CC gnome-announce-list@gnome.org) -MANUAL_DATED = cairo-manual-`date +%Y%m%d` -MANUAL_TAR_FILE = $(MANUAL_DATED).tar.gz -MANUAL_UPLOAD_DIR = $(RELEASE_UPLOAD_BASE) -tar_file = $(PACKAGE)-$(VERSION).tar.gz -sha1_file = $(tar_file).sha1 -gpg_file = $(sha1_file).asc - -# Win32 package zipfiles -runtime_zip_file = /tmp/$(PACKAGE)-$(VERSION).zip -developer_zip_file = /tmp/$(PACKAGE)-dev-$(VERSION).zip -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/ChangeLog.mk $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile config.h -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-local distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-local distclean-tags \ - distcleancheck distdir distuninstallcheck dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - -# libpng is required for our test programs -#SUBDIRS += boilerplate test perf - -.PHONY: doc test retest recheck check-valgrind -# We have some generated header files, so we really need to build the -# library before we can build the docs -doc: all - cd doc && $(MAKE) $(AM_MAKEFLAGS) doc -test: all - cd test && $(MAKE) $(AM_MAKEFLAGS) test -retest: all - cd test && $(MAKE) $(AM_MAKEFLAGS) retest -recheck: all - cd test && $(MAKE) $(AM_MAKEFLAGS) recheck -check-valgrind: all - cd test && $(MAKE) $(AM_MAKEFLAGS) check-valgrind - cd perf && $(MAKE) $(AM_MAKEFLAGS) check-valgrind -perf: all - cd perf && $(MAKE) $(AM_MAKEFLAGS) perf - -# use recursive makes in order to ignore errors during check/perf -@CAIRO_HAS_LCOV_TRUE@lcov: -@CAIRO_HAS_LCOV_TRUE@ -$(MAKE) $(AM_MAKEFLAGS) check -@CAIRO_HAS_LCOV_TRUE@ $(MAKE) $(AM_MAKEFLAGS) genlcov -@CAIRO_HAS_LCOV_TRUE@lcov-perf: -@CAIRO_HAS_LCOV_TRUE@ -$(MAKE) $(AM_MAKEFLAGS) perf -@CAIRO_HAS_LCOV_TRUE@ $(MAKE) $(AM_MAKEFLAGS) genlcov - -# we have to massage the lcov.info file slightly to hide the effect of libtool -# placing the objects files in the .libs/ directory separate from the *.c -@CAIRO_HAS_LCOV_TRUE@genlcov: -@CAIRO_HAS_LCOV_TRUE@ $(LTP) --directory $(top_builddir) --path $(top_builddir) --capture --output-file cairo-lcov.info --test-name CAIRO_TEST --no-checksum -@CAIRO_HAS_LCOV_TRUE@ $(SED) -e 's#.libs/##' \ -@CAIRO_HAS_LCOV_TRUE@ -e 's#boilerplate/src#src#' \ -@CAIRO_HAS_LCOV_TRUE@ -e 's#$(shell pwd)#$(shell cd $(top_srcdir) && pwd)#' \ -@CAIRO_HAS_LCOV_TRUE@ < cairo-lcov.info > cairo-lcov.info.tmp -@CAIRO_HAS_LCOV_TRUE@ LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory cairo-lcov --title "Cairo Code Coverage" --show-details cairo-lcov.info.tmp -@CAIRO_HAS_LCOV_TRUE@ $(RM) cairo-lcov.info.tmp -@CAIRO_HAS_LCOV_FALSE@lcov lcov-perf genlcov: -@CAIRO_HAS_LCOV_FALSE@ @echo You need to configure Cairo with support for gcov enabled. -@CAIRO_HAS_LCOV_FALSE@ @echo e.g, ./configure --enable-gcov - -lcov-clean: -@CAIRO_HAS_LCOV_TRUE@ -$(LTP) --directory $(top_builddir) -z - -$(RM) -r cairo-lcov.info cairo-lcov - -$(FIND) -name '*.gcda' -print | $(XARGS) $(RM) -distclean-local: lcov-clean - -changelogs: - @$(MAKE) $(AM_MAKEFLAGS) $(CHANGELOGS) - -dist-hook: changelogs - changelogs="$(CHANGELOGS)"; \ - for changelog in $$changelogs; do \ - cp $(srcdir)/$$changelog $(distdir)/ 2>/dev/null || \ - cp $$changelog $(distdir)/; \ - done - -$(srcdir)/ChangeLog: - @if test -d "$(srcdir)/.git"; then \ - version=$(CURR_CHANGELOG_VERSION); \ - prev=$(PREV_CHANGELOG_VERSION).0; \ - nearest_tag=`git-describe | sed 's/-.*//'`; \ - before=$(srcdir)/ChangeLog.cache-$$prev..$$nearest_tag; \ - after=$(srcdir)/ChangeLog.cache-$$nearest_tag..; \ - $(MAKE) $(AM_MAKEFLAGS) $$before $$after && \ - echo Creating $@ && \ - { cat $$after; echo; cat $$before; } > $@; \ - else \ - test -f $@ || \ - (echo A git checkout is required to generate $@ >&2 && \ - echo A git checkout is required to generate this file >> $@); \ - fi - -ChangeLog.cache-*..: .git/HEAD - -ChangeLog%: $(srcdir)/ChangeLog% - -$(srcdir)/ChangeLog.cache-% $(srcdir)/ChangeLog.pre-%: - @echo Creating $@ - @if test -d "$(srcdir)/.git"; then \ - (cd "$(srcdir)" && \ - version=$$(echo "$@" | sed 's/.*ChangeLog\([.].*-\)\?//'); \ - if echo "$@" | grep -q '^ChangeLog[.]cache'; then \ - spec=$$version; \ - else \ - to=$$version; \ - test "x$$version" = x && version=$(CURR_CHANGELOG_VERSION); \ - from=$(PREV_CHANGELOG_VERSION); \ - test "x$$to" = x || to=$$to.0; \ - test "x$$from" = xinitial || from=$$from.0; \ - spec=$$from..$$to; \ - fi; \ - ./missing --run git-log --stat "$$spec") > $@.tmp \ - && mv -f $@.tmp $@ \ - || ($(RM) $@.tmp; \ - echo Failed to generate $@, your $@ may be outdated >&2); \ - else \ - echo A git checkout is required to generate $@ >&2; \ - fi - -.PHONY: changelogs ChangeLog $(srcdir)/ChangeLog - -# Some custom targets to make it easier to release things. -# -# To make real stable releases or devel snapshots, use either: -# make release-check -# or make release-publish -# -# To make a quick properly named (date and git hash stamped) tarball: -# make snapshot - -snapshot: - distdir="$(distdir)-`date '+%Y%m%d'`"; \ - test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \ - $(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist - -$(sha1_file): $(tar_file) - sha1sum $^ > $@ - -$(gpg_file): $(sha1_file) - @echo "Please enter your GPG password to sign the checksum." - gpg --armor --sign $^ - -$(runtime_zip_file): install - -$(RM) $@ - cd $(prefix); \ - zip $@ bin/libcairo-$(LT_CURRENT_MINUS_AGE).dll - -$(developer_zip_file): install - -$(RM) $@ - cd $(prefix); \ - zip -r $@ include/cairo lib/libcairo.dll.a lib/cairo.lib lib/pkgconfig/cairo.pc lib/pkgconfig/cairo-*.pc share/gtk-doc/html/cairo - -zips: $(runtime_zip_file) $(developer_zip_file) - -release-verify-sane-changelogs: changelogs - @echo -n "Checking that the ChangeLog files are sane..." - @if grep -q "is required to generate" $(CHANGELOGS); then \ - (echo "Ouch." && echo "Some of the ChangeLogs are not generated correctly." \ - && echo "Remove ChangeLog* and make changelogs" \ - && false); else :; fi - @echo "Good." - -release-verify-sane-tests: - @echo "Checking that the test suite is sane..." - @cd test && $(MAKE) $(AM_MAKEFLAGS) release-verify-sane-tests - -release-verify-soname-major: - @echo -n "Checking that the cairo soname major number is 2..." - @test "$(LT_CURRENT_MINUS_AGE)" = "2" \ - || (echo "Ouch." && echo "The soname major number is $(LT_CURRENT_MINUS_AGE) instead of 2." \ - && echo "The libtool shared library version numbers in configure.in must be incremented properly." \ - && false) - @echo "Good." - -release-verify-even-micro: - @echo -n "Checking that $(VERSION) has an even micro component..." - @test "$(CAIRO_VERSION_MICRO)" = "`echo $(CAIRO_VERSION_MICRO)/2*2 | bc`" \ - || (echo "Ouch." && echo "The version micro component '$(CAIRO_VERSION_MICRO)' is not an even number." \ - && echo "The version in configure.in must be incremented before a new release." \ - && false) - @echo "Good." - -release-verify-newer: - @echo -n "Checking that no $(VERSION) release already exists..." - @ssh $(RELEASE_UPLOAD_HOST) test ! -e $(RELEASE_UPLOAD_DIR)/$(tar_file) \ - || (echo "Ouch." && echo "Found: $(RELEASE_UPLOAD_HOST):$(RELEASE_UPLOAD_DIR)/$(tar_file)" \ - && echo "Are you sure you have an updated checkout?" \ - && echo "This should never happen." \ - && false) - @echo "Good." - -release-remove-old: - $(RM) $(tar_file) $(sha1_file) $(gpg_file) - -# Maybe it's just my system, but somehow group sticky bits keep -# getting set and this causes failures in un-tarring on some systems. -# Until I figure out where the sticky bit is coming from, just clean -# these up before building a release. -release-cleanup-group-sticky: - find . -type f | xargs chmod g-s - -release-check: release-verify-sane-changelogs release-verify-sane-tests release-verify-soname-major release-verify-even-micro release-verify-newer release-remove-old release-cleanup-group-sticky distcheck - -release-upload: release-check $(tar_file) $(sha1_file) $(gpg_file) - mkdir -p releases - scp $(tar_file) $(sha1_file) $(gpg_file) $(RELEASE_UPLOAD_HOST):$(RELEASE_UPLOAD_DIR) - mv $(tar_file) $(sha1_file) $(gpg_file) releases - ssh $(RELEASE_UPLOAD_HOST) "rm -f $(RELEASE_UPLOAD_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_file) $(RELEASE_UPLOAD_DIR)/LATEST-$(PACKAGE)-$(VERSION)" - git-tag -s -m "cairo $(CAIRO_VERSION_MAJOR).$(CAIRO_VERSION_MINOR).$(CAIRO_VERSION_MICRO) release" $(CAIRO_VERSION_MAJOR).$(CAIRO_VERSION_MINOR).$(CAIRO_VERSION_MICRO) - -release-publish-message: releases/$(sha1_file) - @echo "Please follow the instructions in RELEASING to push stuff out and" - @echo "send out the announcement mails. Here is the excerpt you need:" - @echo "" - @echo "Subject: $(PACKAGE) $(RELEASE_OR_SNAPSHOT) $(VERSION) now available" - @echo "" - @echo "============================== CUT HERE ==============================" - @echo "A new $(PACKAGE) $(RELEASE_OR_SNAPSHOT) $(VERSION) is now available from:" - @echo "" - @echo " $(RELEASE_URL_BASE)/$(tar_file)" - @echo "" - @echo " which can be verified with:" - @echo "" - @echo " $(RELEASE_URL_BASE)/$(sha1_file)" - @echo -n " " - @cat releases/$(sha1_file) - @echo "" - @echo " $(RELEASE_URL_BASE)/$(gpg_file)" - @echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)" - @echo "" - @echo " Additionally, a git clone of the source tree:" - @echo "" - @echo " git clone git://git.cairographics.org/git/cairo" - @echo "" - @echo " will include a signed $(VERSION) tag which points to a commit named:" - @echo " `git cat-file tag $(VERSION) | grep ^object | sed -e 's,object ,,'`" - @echo "" - @echo " which can be verified with:" - @echo " git verify-tag $(VERSION)" - @echo "" - @echo " and can be checked out with a command such as:" - @echo " git checkout -b build $(VERSION)" - @echo "" - @echo "============================== CUT HERE ==============================" - -release-publish: release-upload release-publish-message - -doc-publish: doc - rm -rf ./$(MANUAL_DATED) - cp -a doc/public/html $(MANUAL_DATED) - tar czf $(MANUAL_TAR_FILE) $(MANUAL_DATED) - scp $(MANUAL_TAR_FILE) $(RELEASE_UPLOAD_HOST):$(MANUAL_UPLOAD_DIR) - ssh $(RELEASE_UPLOAD_HOST) "cd $(MANUAL_UPLOAD_DIR) && tar xzf $(MANUAL_TAR_FILE) && rm -f manual && ln -s $(MANUAL_DATED) manual && ln -sf $(MANUAL_TAR_FILE) cairo-manual.tar.gz" - -.PHONY: release-verify-even-micro release-verify-newer release-remove-old release-cleanup-group-sticky release-check release-upload release-publish docs-publish lcov lcov-perf lcov-clean genlcov - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/cairo/Makefile.win32 libgdiplus-4.0-4.2.3+precise1/cairo/Makefile.win32 --- libgdiplus-4.0-2.10.9/cairo/Makefile.win32 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/Makefile.win32 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ -# -# Win32 makefile -# - -CC := cl -LINK := link - -ifeq ($(CFG),debug) -OPT := -Od -Zi -else -OPT := -O2 -endif - -PIXMAN_CFLAGS := -I../../pixman/pixman -PIXMAN_LIBS := ../../pixman/pixman/$(CFG)/pixman-1.lib - -EXE_LDFLAGS = libpng.lib zlib.lib gdi32.lib msimg32.lib user32.lib - -DEFAULT_CFLAGS = -MD -nologo $(OPT) -DEFAULT_CFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DEFAULT_CFLAGS += -DPACKAGE_VERSION="" -DPACKAGE_BUGREPORT="" -DCAIRO_BUILD -DEFAULT_CFLAGS += -I. -DEFAULT_CFLAGS += $(PIXMAN_CFLAGS) -DEFAULT_CFLAGS += -DCAIRO_NO_MUTEX=1 -DLIBCAIRO_EXPORTS - -CFLAGS := $(DEFAULT_CFLAGS) - -CAIRO_VERSION_MAJOR = 1 -CAIRO_VERSION_MINOR = 5 -CAIRO_VERSION_MICRO = 1 - -CAIRO_VERSION = $(CAIRO_VERSION_MAJOR).$(CAIRO_VERSION_MINOR).$(CAIRO_VERSION_MICRO) - -# Only if this was called as the top-level makefile -ifeq ($(SUBMAKEFILE),) - -SUBDIRS = src - -TEST_SUBDIRS = boilerplate test - -all: inform cairo - -cairo: src/cairo-features.h - @list='$(SUBDIRS)'; for f in $$list ; do \ - echo making all in $$f... ; \ - (cd $$f ; $(MAKE) -f Makefile.win32 CC="$(CC)" LINK="$(LINK)" OPT="$(OPT)" CFLAGS="$(CFLAGS)" PIXMAN_LIBS="$(PIXMAN_LIBS)") || exit 1 ; \ - done - -test: cairo - @list='$(TEST_SUBDIRS)'; for f in $$list ; do \ - echo making all in $$f... ; \ - (cd $$f ; $(MAKE) -f Makefile.win32 CC="$(CC)" LINK="$(LINK)" OPT="$(OPT)" CFLAGS="$(CFLAGS)" PIXMAN_LIBS="$(PIXMAN_LIBS)") || exit 1 ; \ - done - @(cd test ; make -f Makefile.win32 test) - -html: - @(cd test ; make -f Makefile.win32 html) - -inform: -ifneq ($(CFG),release) -ifneq ($(CFG),debug) - @echo "Invalid configuration "$(CFG)" specified." - @echo -n "You must specify a configuration when " - @echo "running make, e.g. make CFG=debug" - @echo - @echo -n "Possible choices for configuration are " - @echo "'release' and 'debug'" - @exit 1 -endif -endif - -endif - -# Some generic rules - -$(CFG)/%.obj: %.c - @mkdir -p $(CFG) - @$(CC) $(CFLAGS) -c -Fo"$@" $< - -$(CFG)/%-static.obj: %.c - @mkdir -p $(CFG) - @$(CC) $(CFLAGS) -c -DCAIRO_WIN32_STATIC_BUILD=1 -Fo"$@" $< - diff -Nru libgdiplus-4.0-2.10.9/cairo/NEWS libgdiplus-4.0-4.2.3+precise1/cairo/NEWS --- libgdiplus-4.0-2.10.9/cairo/NEWS 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/NEWS 1970-01-01 00:00:00.000000000 +0000 @@ -1,5121 +0,0 @@ -Release 1.6.4 (2008-04-11 Carl Worth ) -========================================================= -The cairo community is wildly embarrassed to announce the 1.6.4 -release of the cairo graphics library. This release reverts the xlib -locking change introduced in 1.6.4, (and the application crashes that -it caused). The community would be glad to sack its current release -manager and is accepting applications for someone who could do the job -with more discipline. - -Revert 'add missing locking in cairo-xlib' ------------------------------------------- -This change was introduced in cairo 1.6.2, but also introduced a bug -which causes many cairo-xlib applications to crash, (with a -segmentation fault inside of XSetClipMask). Instead of attempting -another fix for the broken fix, the change in 1.6.2 has been -reverted. The original bug which the change was addressing has been -present since at least cairo 1.4, so it is not expected that leaving -this bug unfixed will cause any new problems for applications moving -from cairo 1.4 to cairo 1.6. - -At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only -in the fix for the PostScript-printer crashes. - -Tweak build to avoid linking with g++ -------------------------------------- -Cairo 1.6.4 avoids a quirk in automake that was causing the cairo -library to be linked with g++ and linked against libstdc++ even when -only C source files were compiled for the library. - -Release 1.6.2 (2008-04-11 Carl Worth ) -========================================================= -The cairo community is pleased (but somewhat sheepish) to announce the -1.6.2 release of the cairo graphics library. This is an update to -yesterday's 1.6.0 release with an important fix to prevent cairo's -PostScript output from crashing some printers. This release also -includes a locking fix for cairo's xlib backend to improve thread -safety. There are no changes beyond these two fixes. - -Fix for PostScript printer crash --------------------------------- -Adrian Johnson discovered that cairo 1.6.0 was being a bit hard on -PostScript printers, by changing the font matrix very frequently. This -causes some PostScript interpreters to allocate new font objects every -few glyphs, eventually exhausting available resources. The fix -involves leaving translational components of the font matrix as zero, -so that the PostScript interpreter sees an identical font matrix -repeatedly, and can more easily share internal font object resources. - -This fix has been tested to resolve the bugs posted here, (for both -Xerox and Dell printers): - - Printing some PDFs from evince is crashing our Xerox printer - http://bugs.freedesktop.org/show_bug.cgi?id=15348 - - Cairo-generated postscript blocks Dell 5100cn - http://bugs.freedesktop.org/show_bug.cgi?id=15445 - -Add missing locking in cairo-xlib ---------------------------------- -Chris Wilson noticed that cairo 1.6.0 was manipulating an internal -cache of GC object within cairo's Xlib backend without proper -locking. The missing locking could cause failures for multi-threaded -applications. He fixed this in 1.6.2 by adding the missing locks. - -Release 1.6.0 (2008-04-10 Carl Worth ) -========================================================= -The cairo community is quite pleased to announce the 1.6.0 release of -the cairo graphics library. This is a major update to cairo, with new -features and enhanced functionality which maintains compatibility for -applications written using cairo 1.4, 1.2, or 1.0. We recommend that -anybody using a previous version of cairo upgrade to cairo 1.6.0. - -The most significant new features in this release are dramatically -improved PDF and PostScript[*] output, support for arbitrary X server -visuals (including PseudoColor), a new Quartz backend, and and a new -"win32 printing" backend. See below for more details on these and -other new features. - -New dependency on external pixman library (Thanks, Søren!) ----------------------------------------------------------- -As of cairo 1.6, cairo now depends on the pixman library, for which -the latest release can be obtained alongside cairo: - - http://cairographics.org/releases/pixman-0.10.0.tar.gz - -This library provides all software rendering for cairo, (the -implementation of the image backend as well as any image fallbacks -required for other backends). This is the same code that was -previously included as part of cairo itself, but is now an external -library so that it can be shared by both cairo and by the X server, -(which is where the code originated). - -Improved PDF, PostScript, and SVG output (Thanks, Adrian!) ----------------------------------------------------------- -Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic -improvement from cairo 1.2/1.4 to 1.6. With this release there are now -almost no operations that will result in unnecessary rasterization in -the PDF and PostScript. Rasterized "image fallbacks" are restricted -only to minimal portions of the document where something is being -drawn with cairo that is beyond the native capabilities of the -document, (this is rare for PDF or SVG, but occurs when blending -translucent objects for PostScript). - -This means that the final output will be of higher quality, and will -also be much smaller, and therefore will print more quickly. The -machinery for doing analysis and minimal fallbacks also benefits the -win32-printing surface described below. - -In addition to doing less rasterization, the PostScript and PDF output -also has several other improvements to make the output more efficient -and more compatible with specifications. - -[*] Note: Just before this release, a bug has been reported that the -PostScript output from cairo can crash some printers, (so far the -following models have been reported as problematic Xerox Workcentre -7228 or 7328 and Dell 5100cn). We will implement a workaround as soon -as we can learn exactly what in cairo's output these printers object -to, (and we could use help from users that have access to misbehaving -printers). This bug is being tracked here: - - Printing some PDFs from evince is crashing our Xerox printer - http://bugs.freedesktop.org/show_bug.cgi?id=15348 - -New support for arbitrary X server visuals (Thanks, Keith and Behdad!) ----------------------------------------------------------------------- -As of cairo 1.6, cairo should now work with an arbitrary TrueColor or -8-bit PseudoColor X server visual. Previous versions of cairo did not -support these X servers and refused to draw anything. We're pleased to -announce that this limitation has been lifted and people stuck with -ancient display systems need no longer be stuck with ancient software -just because of cairo. - -New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!) ------------------------------------------------------------------------- -As of cairo 1.6, the cairo-quartz backend is now marked as "supported" -rather than "experimental" as in previous cairo releases. Its API now -has guarantees of API stability into future cairo releases, and its -output quality is comparable to other backends. There have been -significant improvements to cairo-quartz since 1.4. It now uses many -fewer image fallbacks, (meaning better performance), and has greatly -improved text rendering. - -New, "win32 printing" backend (Thanks, Adrian and Vladimir!) ------------------------------------------------------------- -A new win32-printing surface has been added with an interface very -similar to the original win32 surface, (both accept an HDC -parameter). But this new surface should only be called with a printing -DC, and will result in all drawing commands being stored into a -meta-surface and emitted after each page is complete. This allows -cairo to analyze the contents, (as it does with PDF, PostScript, and -SVG backends), and to do minimal image-based fallbacks as -necessary. The analysis keeps things as efficient as possible, while -the presence of fallbacks, (when necessary), ensure the consistent, -high-quality output expected from cairo. - -Robustness fixes (Thanks, Chris!) ---------------------------------- -There has been a tremendous number of improvements to cairo's -robustness. Areas that have been improved include: - - * Proper reporting of errors - - * Responding correctly to invalid input - - * Avoiding integer overflows - - * Avoiding memory leaks on error-recovery paths - - * Making reference counting thread safe - - * Exhaustive testing of memory allocation points - -Other fixes (Thanks, everybody!) --------------------------------- -Cairo's internal fixed-point representation has been changed from -16.16 to 24.8. This has a direct impact on applications as it allows -much larger objects to be drawn before internal limits in cairo make -the drawing not work. - -The CAIRO_EXTEND_PAD mode is now fully supported by surface -patterns. This mode allows applications to use cairo_rectangle and -cairo_fill to draw scaled images with high-quality bilinear filtering -for the internal of the image, but without any objectionably blurry -edges, (as would happen with the default EXTEND_NONE and cairo_paint). - -Rendering with CAIRO_ANTIALIAS_NONE has been fixed to be more -predictable, (previously image rendering and geometry rendering would -be slightly misaligned with respect to each other). - -The reference manual at http://cairographics.org/manual now documents -100% of the functions and types in cairo's public API. - -API additions -------------- -Several small features have been added to cairo with new API functions: - -cairo_format_stride_for_width - - Must be called to compute a properly aligned stride value before - calling cairo_image_surface_create_for_data. - -cairo_has_current_point - - Allows querying if there is a current point defined for the - current path. - -cairo_path_extents - - Allows querying for path extents, (independent of any fill or - stroke parameters). - -cairo_surface_copy_page -cairo_surface_show_page - - Allow beginning a new document page without requiring a cairo_t - object. - -cairo_ps_surface_restrict_to_level -cairo_ps_get_levels -cairo_ps_level_to_string -cairo_ps_surface_set_eps - - Allow controlling the Post PostScript level, (2 or 3), to - target, as well as to generate Encapsulated PostScript (EPS). - -cairo_quartz_font_face_create_for_cgfont - - Create a quartz-specific cairo_font_face_t from a CGFontRef. - -cairo_win32_font_face_create_for_logfontw_hfont - - Create a win32-specific cairo_font_face from a LOGFONTW and an - HFONT together. - -Thanks, Everyone! ------------------ -I've accounted for 32 distinct people with attributed code added to -cairo between 1.4.14 and 1.6.0, (their names are below). That's an -impressive number, but there are certainly dozens more that -contributed with testing, suggestions, clarifying questions, and -encouragement. I'm grateful for the friendships that have developed as -we have worked on cairo together. Thanks to everyone for making this -all so much fun! - -Adrian Johnson, Alp Toker, Antoine Azar, Behdad Esfahbod, -Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer, -Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson, -Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston, -Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain, -Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg, -Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher, -Richard Hult, Shailendra Jain, Søren Sandmann Pedersen, -Vladimir Vukicevic - -Snapshot 1.5.20 (2008-04-04 Carl Worth ) -=========================================================== -This is the tenth snapshot in cairo's unstable 1.5 series. It comes -just two days (and only one working day) after the 1.5.18 -snapshot. The quick snapshot is due to two embarrassing bugs (both -affecting cairo-xlib) that had been introduced in the 1.5.18 -snapshot. The fixes for these are described below along with a few -other fixes, (which hopefully aren't introducing new bugs this time). - -cairo-xlib ----------- -Revert fix from 1.5.18 to allow pattern expansion based on the filter -mode. This fix seemed so boring, (the use case it addresses is almost -never used in practice), that it didn't even get mentioned in the -1.5.18 release notes. However, the "fix" happened to break rendering -that is always used resulting in corrupt image rendering in mozilla, -evolution, and probably everything else that uses cairo. - -Fix to avoid BadMatch errors in cairo_surface_create_similar. These -were introduced, (inadvertently, of course), as part of the fix in -1.5.18 for creating similar surfaces without the Render -extension. Again, thanks to mozilla, (and Vladimir Vukicevic in -particular), for noticing our mistake. - -general -------- -Correctly handle an in-error surface in -cairo_surface_write_to_png. Previously this function would cause an -assertion failure if you gave it a finished surface. Now it cleanly -returns a CAIRO_STATUS_SURFACE_FINISHED result instead. - -Avoid potentially infinite wandering through memory inside -_cairo_hull_prev_valid. Thanks to Jonathan Watt for noticing this -problem: - - https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21 - -cairo-pdf ---------- -Fix generation of "soft" masks made by drawing to a similar surface -and then calling cairo_mask_surface() with it. - -cairo-svg ---------- -Fix for code that uses cairo_mask() on an intermediate surface which -is later passed to cairo_mask_surface(). - -Snapshot 1.5.18 (2008-04-05 Carl Worth ) -=========================================================== -This is the ninth snapshot in cairo's unstable 1.5 series. It comes -just 4 days after the 1.5.16 snapshot. We had hoped to not need -another snapshot before the final 1.6.0 release, but several critical -bugs were found and fixed in the last few days, so we thought it -important to let people test the fixes with this snapshot. See below -for details. - -documentation -------------- -The README now lists necessary dependencies. - -Various graphics state defaults are now documented, (source pattern is -opaque black, line width is 2.0, line join is miter, line cap is butt, -miter limit is 10.0, etc.). - -general -------- -Several cleanups have been made along many error-path returns, -(carefully propagating up the original error status values, cleaning -up memory leaks during error recovery, etc.). This is yet another in -Chris "ickle" Wilson's long series of error-handling cleanups during -the 1.5 series. - -Avoid undesired clipping when drawing scaled surface patterns with -bilinear filtering. - -cairo-pdf ---------- -Fix emission of 1-bit alpha masks in PDF output. - -Fix a bug that would cause glyphs to be misplaced along the Y axis: - - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136 - - Originally, an issue about a crash, but later leading to the - misplaced glyphs issue being discovered. - -cairo-ps --------- -Fix misplaced glyphs in cairo's PostScript output. - - This issue occurs when consecutive glyphs are placed far - apart. This case is exercised by the new ft-show-glyphs-table test - case, which was originally inspired by the Debian bug #23474136 - mentioned above. - -Fix more misplaced glyphs in cairo's PostScript output: - - The issue here showed up under very particular circumstance, (when - converting a PDF file with a CFF font with CID Identity-H encoding - and using glyph 0, (defined by the CFF specification as .notdef) - as a space instead). More concretely, this problem appeared when - converting the UbuntuDesktop.pdf file mentioned in this bug - report: - - https://bugs.freedesktop.org/show_bug.cgi?id=15348#c3 - - As usual with arcane font-encoding-specific bugs like this, many - thanks to Adrian Johnson for his magical ability to dive into - specifications and emerge almost instantaneously with fixes. And - thanks to Sebastien Bacher for bringing the bug to our attention. - -cairo-xlib ----------- -Fix serious failure on X servers without the Render extension. - - Since the 1.5.14 snapshot (with support for PseudoColor visuals), - any application attempting to create a "similar" xlib surface would - fail on an X server without the Render extension. Thanks to - Frederic Crozat for pointing out that cairo's test suite was - entirely failing when run against Xvfb. - -Avoid crashing cairo-xlib applications for too-large glyphs - - Naively sending glyphs of any size to the X server will eventually - violate the X limit on maximum request sizes. We now properly - detect when a glyph would be too large and use existing fallbacks - to render the glyph rather than trying to send it to the X server. - -Enable the buggy_repeat workaround for Xorg servers < 1.4 - - We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at - least) has a bug that can result in an X server crash when cairo - uses certain X Render repeat operations, (as exercised by cairo's - extend-reflect test). We avoid this crash by using fallbacks - whenever a repeating surface is needed for any Xorg server with a - version less than 1.4. This is slower, but should prevent the - crash. - - (Meanwhile, there appears to be a separate bug where some X - servers or specific X-server drivers will use random pixmap data - when asked to draw a repeating surface. The buggy_repeat - workaround would also avoid those problems, but we have not yet - characterized whether the new "version < 1.4" is a good - characterization of those problems or not.) - -cairo-quartz-font ------------------ -Implement cairo_font_extents for this backend. - -The cairo-quartz-font implementation added in the 1.5.14 snapshot was -entirely missing support for the cairo_font_extents function. Thanks to -Richard Hult for pointing out this obvious shortcoming, (and obvious -lack of coverage in our test suite): - - CGFont backend returns 0 font extents - https://bugs.freedesktop.org/show_bug.cgi?id=15319 - -Snapshot 1.5.16 (2008-04-01 Carl Worth ) -=========================================================== -This is the eighth snapshot in cairo's unstable 1.5 series. It comes -less than two weeks after the 1.5.14 snapshot and it really is a -legitimate snapshot, (in spite of sharing this date with that of many -bogus announcements). The major change in this snapshot is that the -cairo-quartz backend is now officially "supported", including new API -to construct a font face from a CGFontRef . Also several bug fixes -have been fixed in many backends. See below for details. - -general -------- -Cairo now depends on pixman 0.10.0 which was recently released. The -latest pixman release can always be found alongside cairo releases at: - - http://cairographics.org/releases - -Increase the precision of color stops for gradients. This fixes a -regression in gradient rendering that had been present since the -1.5.12 snapshot. - -paginated (all of ps, pdf, svg, and win32-printing) ---------------------------------------------------- -Fix assertion failure when some drawing elements are outside the page -boundaries, (this bug was noticed when using Inkscape to print a -drawing with landscape orientation to a portrait-oriented piece of -paper). - -cairo-ps --------- -Fix of bug causing incorrect glyph positioning. - -Fix handling of CAIRO_OPERATOR_SOURCE. - -cairo-pdf ---------- -More reduction of unnecessary digits of precision in PDF output. - -Fix handling of CAIRO_OPERATOR_SOURCE. - -cairo-svg ---------- -Fix bug in usage of libpng that was preventing cairo_mask from working -with the svg backend. - -Fix transformation of source pattern for cairo_stroke(). - -cairo-win32-printing --------------------- -Fix fallback resolution, (thanks again to inkscape users/developers -for helping us find this one). - -cairo-quartz ------------- -Mark the cairo-quartz backend as "supported" rather than -"experimental". This means the following: - - * The backend will now be built by default (if possible). - - * We are committing that the backend-specific API (as published in - cairo-quartz.h) are stable and will be supported in all future - cairo 1.x releases. - - * We are committing that the output quality of this backend - compares favorably with other cairo backends, (and that quality - is ensured by good results from the cairo test suite). - - * We recommend that distributions build and distribute this - backend when possible. - -Note that the cairo_quartz_image API (in cairo-quartz-image.h) is -still experimental, will not build by default, (pass ---enable-quartz-image to configure to build it), and may see API -changes before it is marked as "supported" in a future release. - -Put the CAIRO_FONT_TYPE_ATSUI name back into -cairo-deprecated.h. Without this, the cairo 1.5.14 snapshot broke all -builds for applications using the C++ cairomm bindings (and perhaps -others) which have the CAIRO_FONT_TYPE_ATSUI name in their header -files. This breakage happened even for applications not using -cairo-quartz at all. - - Note: Even though the CAIRO_FONT_TYPE_ATSUI name is provided to - avoid this build breakage, we still recommend that bindings and - applications move to the new, and more accurate, - CAIRO_FONT_TYPE_QUARTZ name. - -Replace the implementation of cairo-quartz-font to use CFFont instead -of ATSUI. The CGFont API is a better fit than ATSUI, and this new -implementation is also more correct than the old one as well. - -This also adds the following new API call: - - cairo_public cairo_font_face_t * - cairo_quartz_font_face_create_for_cgfont (CGFontRef font); - -The previous cairo_quartz_font_face_create_for_atsu_font_id function -continues to exist and is part of the supported API going -forward. (However, the old name of that same function, which was -cairo_atsui_font_face_create_for_atsu_font_id is officially -deprecated. Any source code using the old name should be updated to -use the new name.) - -Fix transformation of source pattern for cairo_stroke(). - -cairo-win32 ------------ -Avoid crash in create_similar is cairo_win32_surface_create fails. - -Snapshot 1.5.14 (2008-03-20 Carl Worth ) -=========================================================== -This is the seventh snapshot in cairo's unstable 1.5 series. It comes -3 weeks after the 1.5.12 snapshot. This snapshot includes support for -arbitrary X server visuals, (including PseudoColor), which was the -final remaining cairo-specific item on the cairo 1.6 roadmap. It also -includes a huge number of improvements to the cairo-quartz backend. So -this is effectively a cairo 1.6 release candidate. We expect very few -changes from now until 1.6 and only for specific bug fixes. - -API Change ----------- -Rename ATSUI font backend to Quartz font backend. This affects the -following usage: - - --enable-atsui -> --enable-quartz-font - CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT - CAIRO_FONT_TYPE_ATSUI -> CAIRO_FONT_TYPE_QUARTZ - - cairo_atsui_font_face_create_for_atsu_font_id -> - cairo_quartz_font_font_create_for_atsu_font_id - -This API change is justified by the cairo-quartz backend still be -marked as "experimental" rather than "supported", (though this is one -step toward making the change to "supported" before 1.6). Cairo will -still provide ABI compatibility with the old symbol name, however. - -paginated (all of ps, pdf, svg, and win32-printing) ---------------------------------------------------- -Optimize by not analyzing an image surface for transparency more than -once, (previously all images were analyzed twice). - -cairo-ps and cairo-pdf ----------------------- -Avoiding emitting a matrix into the stroke output when unnecessary, -(making output size more efficient). - -Reduce rounding error of path shapes by factoring large scale factors -out of the path matrix, (ensuring that a fixed-number of printed -digits for path coordinates contains as much information as possible). - -Reduce excess digits for text position coordinates. This makes the -output file size much smaller without making the result any less -correct. - -cairo-ps --------- -Eliminate bug causing extraneous text repetition on Linux PostScript -output in some cases. - - See: Mozilla Bug 419917 – Printed page contents are reflected - inside bordered tables (Linux-only) - - https://bugzilla.mozilla.org/show_bug.cgi?id=419917 - -Optimize output when EXTEND_PAD is used. - -cairo-pdf ---------- -Fix to not use fill-stroke operator with transparent fill, (else PDF -output doesn't match the cairo-defined correct result). See: - - https://bugs.launchpad.net/inkscape/+bug/202096 - -cairo-svg ---------- -Fix stroke of path with a non-solid-color source pattern: - - http://bugs.freedesktop.org/show_bug.cgi?id=14556 - -cairo-quartz ------------- -Fix text rendering with gradient or image source pattern. - -Handling antialiasing correctly for cairo_stroke(), cairo_clip(), and -cairo_show_text()/cairo_show_glyphs(). - -Correctly handle gradients with non-identity transformations: - - Fixes http://bugs.freedesktop.org/show_bug.cgi?id=14248 - -Add native implementation of REPEAT and REFLECT extend modes for -gradients. - -Fix implementation for the "unbounded" operators, (CAIRO_OPERATOR_OUT, -_IN, _DEST_IN, and _DEST_ATOP). - -Correctly handle endiannees in multi-architecture compiles on Mac OS -X. - -Avoid behavior which would cause Core Graphics to print warnings to -the console in some cases. - -cairo-win32 ------------ -Fix handling of miter limit. - -cairo-win32-printing --------------------- -Fix to not use a 1bpp temporary surface in some cases while printing, -(so grayscale data is preserved rather than just becoming black and -white). - -cairo-xlib ----------- -Add support for rendering to arbitrary TrueColor X server -visuals. This fixes at least the following bugs: - - cairo doesn't support 8-bit truecolor visuals - https://bugs.freedesktop.org/show_bug.cgi?id=7735 - - cairo doesn't support 655 xlib format - https://bugs.freedesktop.org/show_bug.cgi?id=9719 - -Add support for rendering to 8-bit PseudoColor X server visuals. This -fixes the following bug: - - Cairo doesn't support 8-bit pseudocolor visuals - https://bugs.freedesktop.org/show_bug.cgi?id=4945 - -Snapshot 1.5.12 (2008-02-28 Carl Worth ) -=========================================================== -This is the sixth snapshot in cairo's unstable 1.5 series. It comes 1 -week after the 1.5.10 snapshot. This snapshot includes the -long-awaited change from 16.16 to 24.8 fixed-point values, (see below -for why you should care). It also includes several backend-specific -bug fixes. - -24.8 fixed-point format ------------------------ -Cairo has always converted path coordinates to a fixed-point -representation very early in its processing. Historically, this has -been a 32-bit representation with 16 bits of integer for the -device-pixel grid and 16 bits of sub-pixel positioning. The choice of -16 bits for the integer coordinate space was based on the 16-bit limit -for X Window drawables. - -This 16-bit limit has proven problematic for many applications. It's -an especially vexing problem when targeting non-X backends that don't -have any 16-bit restriction. But even when targeting cairo-xlib, it's -often desirable to draw a large shape, (say a background rectangle), -that extends beyond the surface bounds and expect it to fill the -surface completely, (rather than overflowing and triggering random -behavior). - -Meanwhile, nobody has ever really needed 16 bits of sub-pixel -precision. - -With this snapshot, the fixed-point system is still in place and is -still using a 32-bit representation, (future versions of cairo might -move entirely to floating-point when targeting PDF output for -example). But the representation now provides 24 bits of pixel -addressing and only 8 bits of sub-pixel positioning. This should give -a much less stifling space to many applications. - -However, the underlying pixman library still has 16-bit limitations in -many places, (it has its roots in the X server as well). Until those -are also fixed, applications targeting cairo image surfaces, or -hitting software fallbacks when targeting other surfaces will still -encounter problems with device-space values needing more than 16 -integer bits. - -generic fixes -------------- -Add a few tests to the test suite to increase coverage. - -Cleanup a few error-handling paths, (propagate error correctly). - -cairo-ft --------- -Fix handling of font sizes smaller than 1 device pixel. - -cairo-pdf ---------- -Fix to properly save/restore clip when analyzing meta-surface -patterns, (fixing a couple of test-suite failures). - -Implement native support for CAIRO_OPERATOR_SOURCE when the source -pattern is opaque. - -Emit rectangles as PDF rectangles ("re" operator) rather than as -general paths. - -cairo-ps --------- -Fix to work properly with the 16.16->24.8 change. - -cairo-svg ---------- -Fix CAIRO_EXTEND_REFLECT by using an image fallback, (there's no -direct SVG support for reflected patterns). - -Fix the use of alpha-only masks, (such as CAIRO_FORMAT_A8). - -cairo-quartz ------------- -Add new API for efficiently using image data as a source: - - cairo_surface_t * - cairo_quartz_image_surface_create (cairo_surface_t *image_surface); - - cairo_surface_t * - cairo_quartz_image_surface_get_image (cairo_surface_t *surface); - -For full documentation, see: - - http://cairographics.org/manual/cairo-Quartz-Surfaces.html#cairo-quartz-image-surface-create - -Several fixes for cairo_mask(). - -cairo-atsui ------------ -Change default from from Monaco to Helvetica to be more consistent -with other font backends. - -Snapshot 1.5.10 (2008-02-20 Carl Worth ) -=========================================================== -This is the fifth snapshot in cairo's unstable 1.5 series. It comes 3 -weeks after the 1.5.8 snapshot. This snapshot adds one new API -function, (cairo_has_current_point), and the usual mix of -improvements, (more efficient PostScript/PDF output, optimized -stroking), and fixes (more robust error-handling, etc.). See below for -details. - -New API -------- -Add a new function to query if there is a current point: - - cairo_bool_t - cairo_has_current_point (cairo_t *cr); - -There is no current point immediately after cairo_create(), nor after -cairo_new_path() or cairo_new_sub_path(). There is a current point -after any of the path-creation functions, (cairo_move_to, -cairo_line_to, cairo_curve_to, etc.). - -With this new function, we also revert the change of the return type -of cairo_get_current_point from cairo 1.5.8, (it's now a void function -again). - -Optimizations -------------- -Optimize stroking code to avoid repeated calculation of redundant -values, (particularly significant for very large, offscreen paths). - -General fixes -------------- -Patch a few more potential buffer overruns, (due to integer -overflow). - -Many fixes and improvements to cairo's error-handling, (ensure that -correct error values are returned, clean up memory leaks on -error-handling paths, etc.). - -Fix a potential infinite loop when stroking a spline with a pen that -has been transformed to a line segment. - -Remove treating NULL as a synonym for a valid cairo_font_options_t* -with default values, (a change that had been introduced as of cairo -1.5.8). - -Remove the altered handling of tolerance and fallback-resolution that -had been introduced as of cairo 1.5.4. - -cairo-xlib ----------- -Pass the original Drawable, (as opposed to the root window), to -XCreatePixmap when creating a similar surface. This gives the X server -more information so that it can be clever and efficient. - -cairo-pdf ---------- -Fix the rendering of repeating and reflecting patterns. - -Ensure miter limit is always >= 1, (smaller limits are not meaningful, -but they can cause some PDF viewers to fail to display pages). - -Generate more efficient output when the same path is used for both -fill and stroke. - -cairo-ps --------- -Start sharing much of the cairo-pdf code rather than implementing very -similar code in cairo-ps. - -Implement native support for repeating and reflecting linear -gradients. - -Implement reflected surface patterns. - -Ensure miter limit is always >= 1, (smaller limits are not meaningful, -but they can cause some PostScript viewers to crash). - -Generate PostScript that will perform more efficiently and use less -memory on printers, (use currentfile instead of a giant string array -for image data, and avoid using PostScript patterns for paint() and -fill() when possible). - -cairo-svg ---------- -Avoid unnecessary rasterization when copying a "similar" surface to -another svg surface, (allow the SOURCE operator to be implemented with -all-vector operations if there are no underlying objects). - -cairo-atsui ------------ -Eliminate infinite loop when attempting to render an empty string. - -Snapshot 1.5.8 (2008-01-30 Carl Worth ) -========================================================== -This is the fourth snapshot in cairo's unstable 1.5 series. It comes 2 -weeks after the 1.5.6 snapshot. It adds a few new API functions. Most -notably all callers of cairo_image_surface_create_for_data should now -be calling cairo_format_stride_for_width to compute a legal stride -value. See below for more details. - -New API in cairo 1.5.8 ----------------------- -We've added a new function that should be called to compute a legal -stride value before allocating data to be used with -cairo_image_surface_create_for_data: - - int - cairo_format_stride_for_width (cairo_format_t format, - int width); - -We've also added a new cairo_path_extents function that can be used to -compute a bounding box for geometry such as a single line segment, -(contrast with cairo_path_extents and cairo_stroke_extents): - - void - cairo_path_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -And finally, we've added a function to allow for querying the -XRenderPictFormat of a cairo-xlib surface: - - XRenderPictFormat * - cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface); - -API changes ------------ -Fix return types of cairo_surface_show_page and -cairo_surface_copy_page. This is an API change to functions that are -new in the 1.5 series, so not an API break compared to any stable -cairo release, (1.0.x, 1.2.x, 1.4.x). - -Change the return type of cairo_get_current_point() from void to -cairo_status_t. This allows the caller to receive a -CAIRO_STATUS_NO_CURRENT_POINT value to distinguish the a current point -at the origin from no current point existing. - -Performance improvement ------------------------ -Improve performance of clipping by using an optimized code path -internally, (with the ADD operator instead of IN). - -General bug fixes ------------------ -Fix various cairo_*_extents functions to initialize the return-value -variables even in the case of a cairo_t in error. - -Treat NULL as a legitimate value for cairo_font_options_t*. [NOTE: -On discussion afterwards, we decided against this change so it has -been removed as of cairo 1.5.10.] - -Fix rendering with CAIRO_ANTIALIAS_NONE to be more predictable, (that -is, to avoid seams appearing when geometry and imagery share an -identical edge). Portions of this fix are in the pixman library and -will appear in a future release of that library. - -Avoid triggering an error for a font size of 0. - -Miscellaneous changes ---------------------- -Require pixman >= 0.9.6. - -There has been a tremendous amount improvement to cairo's -documentation. We're delighted that 100% of the public API has at -least some documentation in the API reference manual. Many thanks to -Behdad Esfahbod and Nis Martensen for leading this effort. - -cairo-pdf and cairo-ps ----------------------- -Eliminate failure when a Type 1 font is embedded with an explicit -glyph 0. - -cairo-pdf ---------- -Implement a more correct and more efficient approach for patterns with -an extend mode of CAIRO_EXTEND_REFLECT. - -cairo-ps --------- -Fix image masks to properly pack and pad mask bits. - -cairo-quartz ------------- -Take care to only use DrawTiledImage for integer-aligned images, (and -use slower paths to get the correct result in other cases). - -cairo-win32 ------------ -Fix for older versions of mingw. - -Improve the handling of the clipping with the win32 and win32-printing -surfaces. - -Fix rendering of non black/white text. - -Snapshot 1.5.6 (2008-01-15 Carl Worth ) -========================================================== -This is the third snapshot in cairo's unstable 1.5 series. It comes -about 6 weeks after the 1.5.4 snapshot. The only API addition compared -to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR). -The remainder of the changes are the usual accumulation of bug fixes -and improvements. See below for details. - -General bug fixes ------------------ -Fix handling of fonts that contain a mixture of outline and bitmapped -glyphs. There was a change in this handling in 1.5.4 that improved -some cases and also regressed other cases. Now, all cases should be -handled quite well. - -Fix alignment issues that were causing SIGBUS failures on SPARC. - -Fix a regression (which first appeared in 1.5.2) where stroking under -a large scale would sometimes incorrectly replace a miter join with a -bevel join. (Thanks to Keith Packard.) - -Fix reporting of zero-sized extents to be {0,0} rather than -{INT_MAX,INT_MIN}. This avoids several integer overflow and -allocations of massive regions in some cases. - -Fix failures of gradients with no stops, (quartz, ps, and pdf). - -Fix handling of Type 1 fonts on Windows platforms. - -Fix handling of Type 1 fonts with no specific family name in the font -itself, (generate a CairoFont-x-y name). - -Handle NULL string values in cairo_show_text, cairo_show_glyphs, and -friends. - -Many robustness improvements along error-handling paths, (thanks as -always, to Chris "ickle" Wilson). - -Various other minor fixes. - -Paginated backends (PDF/PostScript/win32-printing) --------------------------------------------------- -Avoid unnecessary rasterization when using a paginated surface as a -source, (such as drawing from one pdf surface to another). - -Fix replaying of paginated surface with more than one level of push/pop -group. - -cairo-xlib ----------- -Fix xlib backend to not consider recent X server release as having a -buggy repeat implementation in the Render extension. - -cairo-pdf ---------- -Fix PDF output to avoid triggering very slow rendering in PDF viewers, -(avoid starting and stopping the content stream for each pattern -emission). - -Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below -the object being drawn. - -Fix to avoid seams appearing between multiple fallback regions. - -cairo-ps (PostScript) ---------------------- -Use correct bounding box in Type 3 fonts. - -Fix several bugs in cairo's PostScript output. These include making -the PostScript output more compatible with recent versions of -ghostscript that are more strict about Type 3 fonts, for -example. - -Fix for win32 to not attempt to create temporary files in the root -directory, (where the user may not have write permission). - -Avoid generating Level 3 PostScript if Level 2 is sufficient. Also, -add code in output documents to alert the user if Level 3 PostScript -is handed to a device that cannot handle PostScript beyond Level -2. - -cairo-directfb --------------- -Various performance optimizations. - -Fixed support for small surfaces (less than 8x8). - -Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to -disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts -instead of A8. - -cairo-os2 ---------- -Allow OS/2 APIs instead of C library allocation functions. - -Snapshot 1.5.4 (2007-12-05 Carl Worth ) -========================================================== -This is the second snapshot in cairo's unstable 1.5 series. It comes -just over 1 month after the 1.5.2 snapshot. There are no API changes -or additions in 1.5.4 compared to 1.5.2, but there are several bug -fixes, and some optimizations. Most of these apply to particular -backends. See below for details. - -General improvements --------------------- -Use less memory for spline approximation calculations. - -Change how the tolerance value is interpreted with regard to -fallback-resolution. [Note: On further discussion, we decided against -this change for now. It is removed as of cairo 1.5.10.] - -Fix precision of floating-point values in vector-output backends to -avoid rounding errors with very small numbers. - -Xlib improvements ------------------ -Fix bug in glyph rendering with xlib, (due to everything being clipped -out). This was a regression in the 1.5.2 snapshot that was visible in -the GIMP, for example. See: - - cairo 1.5.2 causes font problems in GIMP 2.4 status bar and evolution 2.12.1 - https://bugs.freedesktop.org/show_bug.cgi?id=13084 - -PostScript improvements ------------------------ -Fix bug leading to invalid PostScript files when rendering -text, (need "0 0 xyshow" instead of "0 xyshow"). - -Fix many issues with Type 3 fonts, including making the resulting text -extractable. - -Quartz improvements -------------------- -Fix font metrics height value for ATSUI, (helps webkit on GTK+ OS X -layout nicely). - -Fix gradients. - -Fix EXTEND_NONE mode for patterns. - -Fix cairo_quartz_surface_create to properly clear the new surface -in cairo_quartz_surface_create. - -Fix to correctly handle 0x0 sized surfaces. - -Optimize drawing of EXTEND_REPEAT patterns for OS X 10.5. - -Snapshot 1.5.2 (2007-10-30 Carl Worth ) -========================================================== -This is the first snapshot in cairo's unstable 1.5 series. It comes 4 -months after the 1.4.10 release. This snapshot includes significant -improvements to PDF and PostScript output, which is one of the things -in which we're most interested in getting feedback. There are a couple -of minor API additions, and several optimizations, (primarily in the -"print/vector" backends). And there are dozens of bug fixes and -robustness improvements. - -New dependency on external pixman library ------------------------------------------ -A significant change in this snapshot compared to all previous cairo -releases is that cairo now depends on an external "pixman" library for -its software rendering. Previously this same code was compiled -internally as part of cairo, but now the code is separate so that both -cairo and the X server can now share common code, (thanks very much to -Søren Sandmann for his work on separating pixman and maintaining it). - -So users will need to acquire and build pixman before being able to -build cairo. The current release is 0.9.6 and can be obtained from -here: - - http://cairographics.org/releases/pixman-0.9.6.tar.gz - - which can be verified with: - - http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1 - 66f01a682c64403a3d7a855ba5aa609ed93bcb9e pixman-0.9.6.tar.gz - - http://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1.asc - (signed by Carl Worth) - -Major PDF/PostScript improvements ---------------------------------- -Adrian Johnson has done some long-awaited work to make cairo's PDF and -PostScript output more interesting than ever before. First, many -operations that previously triggered image fallbacks will now be -rendered as native vectors. These operations include: - - PDF: cairo_push_group, cairo_surface_create_similar, - cairo_mask, A8/A1 surface sources, repeating/reflecting linear - gradients. - - PostScript: cairo_push_group, cairo_surface_create_similar, - gradients, bilevel alpha masks, (for example, all values either 0 or - 255 for an A8 mask). - -Not only that, but when an image fallback is required, it will now be -limited to only the necessary region. For example, a tiny translucent -image overlaying a small portion of text would previously caused an -entire PostScript page to be rendered as a giant image. Now, the -majority of that page will be nice text, and there will only be a tiny -image in the output. - -Additionally, the PostScript output now carefully encodes text so that -if it is subsequently converted to PDF, the text will be -selectable. - -This is very exciting progress, and we're hoping to hear from users -during the 1.5 series about how things have improved, (for example, -inkscape users doing cairo-based PDF export: please let us know how -things look). And feel free to pass your thanks along to Adrian for his excellent work. - -NOTE: This much improved PDF output makes more sophisticated use of -functionality in the PDF specification. This means that cairo's output -will sometimes expose bugs in some free software PDF viewers, (evince, -poppler, and xpdf, for example), that are not yet ready for such PDF -files. We're working with the poppler maintainers to get these bugs -fixed as quickly as possible. In the meantime, please double-check -with other PDF viewers if cairo-generated PDF files are not being -rendered correctly. It may be due to a bug in the viewer rather than -in the PDF file that cairo has created. - -Robustness improvements ------------------------ -Chris Wilson has made the largest contribution by far to cairo 1.5.2, -(in number of commits). His more than 150 commits include a huge -number of fixes to increase cairo's robustness. These fixes make cairo -more robust against invalid and degenerate input, (NaN, empty path, -etc.), against size-0 malloc calls, against memory leaks on -error-recovery paths, and against other failures during error -handling. He also implemented atomic operations to cairo, and used -them to fix cairo's previously non-thread-safe reference counting, -again improving robustness. - -Chris has put a tremendous amount of time and effort into writing -analysis tools for this work, and in running those tools and fixing -the problems they report. We're very grateful for this work, and hope -that all cairo users appreciate the more robust implementation that -results from it. - -This work is largely thankless, so it might make sense to notice -sometime that cairo has been running quite smoothly for you, and when -you do, send a quick "thank you" off to Chris Wilson, since it -is all definitely running smoother thanks to his work. - -New API -------- -There are no major additions to cairo's core API. The only new, -generic functions are: - - void - cairo_surface_copy_page (cairo_surface_t *surface); - - void - cairo_surface_show_page (cairo_surface_t *surface); - -which can now be used much more conveniently than the existing -cairo_copy_page and cairo_show_page functions in some -situations. These functions act identically, but require only a -cairo_surface_t* and not a cairo_t*. - -All other API additions are specific to particular backends. - -New cairo-win32 API (new font face function and "win32 printing" surface) -------------------------------------------------------------------------- -There is a new function for creating a win32 font face for both a -logfontw and an hfont together. This complements the existing -functions for creating a font face from one or the other: - - cairo_font_face_t * - cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, - HFONT font); - -There is also a new "win32 printing" surface: - - cairo_surface_t * - cairo_win32_printing_surface_create (HDC hdc); - -This interface looks identical to the original -cairo_win32_surface_create, (both accept and HDC), but the behavior of -this new surface is very different. It should only be called with a -printing DC, and will result in all drawing commands being stored into -a meta-surface and emitted after each page is complete, with analysis -to do as minimal image-based fallbacks as necessary. The behavior and -implementation shares much with the PDF and PostScript backends. - -New cairo-ps API (EPS and PostScript level control) ---------------------------------------------------- -An often requested feature has been the ability to generate -Encapsulated PostScript (EPS) with cairo. We have that now with the -following very simple API. Just do cairo_ps_surface_create as usual -then call this function with a true value: - - void - cairo_ps_surface_set_eps (cairo_surface_t *surface, - cairo_bool_t eps); - -[NOTE: As always with snapshots, it's possible---though not very -likely---that the API could still be modified before a final -release. For example, this is the first public cairo function that -accepts a Boolean parameter. I'm generally opposed to Boolean -parameters, but this is probably the one case where I'm willing to -accept one, (namely a "set" function that accepts a single Boolean).] - -Also, it is now possible to control what PostScript level to target, -(either level 2 or level 3), with the following new API: - - typedef enum _cairo_ps_level { - CAIRO_PS_LEVEL_2, - CAIRO_PS_LEVEL_3 - } cairo_ps_level_t; - - void - cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, - cairo_ps_level_t level); - - void - cairo_ps_get_levels (cairo_ps_level_t const **levels, - int *num_levels); - - const char * - cairo_ps_level_to_string (cairo_ps_level_t level); - -Improvement for cairo-quartz ----------------------------- -Brian Ewins had contributed several improvements to cairo-quartz. These -include an implementation of EXTEND_NONE for linear and radial -gradients, (so this extend mode will no longer trigger image fallbacks -for these gradients), as well as native surface-mask clipping, (only -on OS X 10.4+ where the CGContextClipToMask function is available). - -He also fixed a semantic mismatch between cairo and quartz for dashing -with an odd number of entries in the dash array. - -We're grateful for Brian since not many quartz-specific improvements -to cairo would be happening without him. - -Optimizations -------------- -Optimize SVG output for when the same path is both filled and stroked, -and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud). - -Optimize PS output to take less space (Ken Herron). - -Make PS output more compliant with DSC recommendations (avoid initclip -and copy_page) (Adrian Johnson). - -Make PDF output more compact (Adrian Johnson). - -Release glyph surfaces after uploading them to the X server, (should -save some memory for many xlib-using cairo application). (Behdad -Esfahbod). - -Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic). - -win32-printing: Avoid falling back to images when alpha == 255 -everywhere. (Adrian Johnson). - -win32-printing: Avoid falling back for cairo_push_group and -cairo_surface_create_similar. (Adrian Johnson) - -Bug fixes ---------- -Avoid potential integer overflows when allocating large buffers -(Vladimir Vukicevic). - -Preparations to allow the 16.16 fixed-point format to change to -24.8 (Vladimir Vukicevic). - -Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and -abgr8888). (Carl Worth and Vladimir Vukicevic) - -Fix bugs in PDF gradients (Adrian Johnson). - -Fix cairo-xlib to build without requiring Xrender header -files (Behdad Esfahbod). - -Make cairo more resilient in the case of glyphs not being available in -the current font. (Behdad Esfahbod) - -Prevent crashes when both atsui and ft font backends are compiled in -(Brian Ewins). - -Make font subsetting code more robust against fonts that don't include -optional tables (Adrian Johnson). - -Fix CFF subsetting bug, (which manifested by generating PDF files that -Apple's Preview viewer could not read) (Adrian Johnson). - -Fixed error handling for quartz and ATSUI backends (Brian Ewins). - -Avoid rounding problems by pre-transforming to avoid integer-only -restrictions on transformation in GDI (Adrian Johnson). - -Fixed an obscure bug (#7245) computing extents for some stroked -paths (Carl Worth). - -Fix crashes due to extreme transformation of the pen, (seems to show -up in many .swf files for some reason) (Carl Worth). - -Release 1.4.10 (2007-06-27 Carl Worth ) -========================================================== -This is the fifth update in cairo's stable 1.4 series. It comes -roughly three weeks after the 1.4.8 release. The most significant -change in this release is a fix to avoid an X error in certain cases, -(that were causing OpenOffice.org to crash in Fedora). There is also a -semantic change to include child window contents when using an xlib -surface as a source, an optimization when drawing many rectangles, and -several minor fixes. - -Eliminate X errors that were killing OO.o (Chris Wilson) --------------------------------------------------------- -Cairo is fixed to avoid the X errors propagated when cleaning up -Render Pictures after the application had already destroyed the -Drawable they reference. (It would be nice if the X server wouldn't -complain that some cleanup work is already done, but there you have -it.) This fixes the bug causing OpenOffice.org to crash as described -here: - - XError on right click menus in OOo. - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811 - -Use IncludeInferiors when using xlib surface as a source (Ryan Lortie) ----------------------------------------------------------------------- -When an xlib surface is used as the source of a draw operation the -contents of child windows are now included in the source data. The -semantics of drawing to xlib surfaces are unchanged (ie: draws are -still clipped by child windows overlapping the destination window). - -Optimize drawing of many rectangles (Vladimir Vukicevic) --------------------------------------------------------- -Avoid O(N*N) loop when filling many axis-aligned rectangles, (either -many rectangles as separate sub-paths or due to dashing). - -Miscellaneous fixes -------------------- -Fix cairo-perf on Solaris by linking to librt. (Behdad Esfahbod) - -Fix make check for systems that require executable files to have a -particular extension. (Behdad Esfahbod) - -Eliminate some warnings in cairo-quartz. (Brian Ewins) - -Fix build-breaking typo for cairo-directfb. (Chris Wilson) - -Release 1.4.8 (2007-06-07 Carl Worth ) -========================================================= -This is the fourth update in cairo's stable 1.4 series. It comes just -over five weeks after the 1.4.6 release. This release includes a -thread-safe surface-cache for solid patterns which significantly -improves text rendering with the xlib backend. Also, dozens of error -paths in cairo have been fixed thanks to extensive fault-injection -testing by Chris Wilson. - -Surface cache for solid patterns --------------------------------- -Originally written by Jorn Baayen, the introduction of a small cache -for surfaces created for solid patterns improves performance -dramatically. For example, this reduces the volume of X requests -during text rendering to the same level as Xft. - -This cache first made its appearance in a 1.3.x snapshot, but was -removed before appearing in any previous major release due to -complications with multi-threaded programs. For example, programs like -evince that would carefully restrict usage of cairo-xlib to a single -thread were unpleasantly surprised to find that using cairo-image in a -separate thread could trigger X requests. - -Behdad Esfahbod designed a fix which was implemented by Chris -Wilson. Now, the necessary X requests are queued up until the next -time the application directly operates on an xlib surface. - -Improved error handling paths ------------------------------- -Chris Wilson continued the excellent work he started in cairo 1.4.4 to -make cairo much more robust against out-of-memory and other errors. He -applied his memory allocation fault injection cairo's main test suite, -(previously he had applied it to cairo's performance suite). - -Chris's testing found dozens of bugs which he fixed. Many of these -bugs had perhaps never been hit by any users. But at least one was -hit by the gnome-about program which resulted in dozens of duplicated -bug reports against that program: - - http://bugzilla.gnome.org/show_bug.cgi?id=431990 - -We were very pleasantly surprised to see this bug get fixed as a -side-effect of Chris's work. Well done, Chris! - -Other fixes ------------ -Cleanup of mutex declarations (Behdad Esfahbod) - -Remove unnecessary clip region from SVG output (Emmanuel Pacaud) - -Remove Xsun from the buggy_repeat blacklist (Elaine Xiong) - -ATSUI: Fix glyph measurement: faster and more correct (Brian Ewins) - -Quartz: fixed 'extend' behaviour for patterns, improved pattern performance, -and a few smaller correctness fixes. (Brian Ewins, Vladimir Vukicevic) - -Release 1.4.6 (2007-05-01 Carl Worth ) -========================================================= -This is the third update in cairo's stable 1.4 series. It comes a -little less than three weeks since the 1.4.4 release. This release -fixes the broken mutex initialization that made cairo 1.4.4 unusable -on win32, OS/2, and BeOS systems. This release also adds significant -improvements to cairo's PDF backend, (native gradients!), and a couple -of performance optimizations, (one of which is very significant for -users of the xlib backend). See below for more details. - -Repaired mutex initialization ------------------------------ -We apologize that cairo 1.4.4 did little more than crash on many -platforms which are less-frequently used by the most regular cairo -maintainers, (win32, OS/2, and BeOS). The mutex initialization -problems that caused those crashes should be fixed now. And to avoid -similar problems in the future, we've now started posting pre-release -snapshots to get better testing, (subscribe to cairo@cairographics.org -if you're interested in getting notified of those and testing them). - -PDF Improvements ----------------- -Thanks to Adrian Johnson, (cairo PDF hacker extraordinaire), we have -several improvements to cairo's PDF backend to announce: - -Native gradients: - - As of cairo 1.4.6, cairo will now generate native PDF gradients in - many cases, (previously, the presence of a gradient on any page - would force rasterized output for that page). Currently, only - gradients with extend types of PAD (the default) or NONE will - generate native PDF gradients---others will still trigger - rasterization, (but look for support for other extend modes in a - future release). Many thanks to Miklós Erdélyi as well, who did the - initial work for this support. - -Better compatibility with PDF viewers: - - The PDF output from cairo should now be displayed correctly by a - wider range of PDF viewers. Adrian tested cairo's PDF output against - many PDF viewers, identified a common bug in many of those viewers - (ignoring the CTM matrix in some cases), and modified cairo's output - to avoid triggering that bugs (pre-transforming coordinates and - using an identity matrix). - -Better OpenType/CFF subsetting: - - Cairo will now embed CFF and TrueType fonts as CID fonts. - -Performance optimizations -------------------------- -Faster cairo_paint_with_alpha: - - The cairo_paint_with_alpha call is used to apply a uniform alpha - mask to a pattern. For example, it can be used to gradually fade an - image out or in. Jeff Muizelaar fixed some missing/broken - optimizations within the implementation of this function resulting - in cairo_paint_with_alpha being up to 4 times faster when using - cairo's image backend. - -Optimize rendering of "off-screen" geometry: - - Something that applications often do is to ask cairo to render - things that are either partially or wholly outside the current clip - region. Since 1.4.0 the image backend has been fixed to not waste - too much time in this case. But other backends have still been - suffering. - - In particular, the xlib backend has often performed quite badly in - this situation. This is due to a bug in the implementation of - trapezoid rasterization in many X servers. - - Now, in cairo 1.4.6 there is a higher-level fix for this - situation. Cairo now eliminates or clips trapezoids that are wholly - or partially outside the clip region before handing the trapezoids - to the backend. This means that the X server's performance bug is - avoided in almost all cases. - - The net result is that doing an extreme zoom-in of vector-based - objects drawn with cairo might have previously brought the X server - to its knees as it allocated buffers large enough to fit all of the - geometry, (whether visible or not). But now the memory usage should - be bounded and performance should be dramatically better. - -Miscellaneous -------------- -Behdad contributed an impressively long series of changes that -organizes cairo's internals in several ways that will be very -beneficial to cairo developers. Thanks, Behdad! - -Behdad has also provided a utility for generating malloc statistics, -(which was used during the great malloc purges of 1.4.2 and -1.4.4). This utility isn't specific to cairo so may be of benefit to -others. It is found in cairo/util/malloc-stats.c and here are Behdad's -notes on using it: - - To build, do: - - make malloc-stats.so - - inside util/, and to use, run: - - LD_PRELOAD=malloc-stats.so some-program - - For binaries managed by libtool, eg, cairo-perf, do: - - ../libtool --mode=execute /bin/true ./cairo-perf - LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf - -Finally, the cairo-perf-diff-files utility was enhanced to allow for -generating performance reports from several runs of the same backend -while some system variables were changed. For example, this is now -being used to allow cairo-perf to measure the performance of various -different acceleration architectures and configuration options of the -X.org X server. - -Release 1.4.4 (2007-04-13 Carl Worth ) -========================================================= -This is the second update release in cairo's stable 1.4 series. It -comes just less than a month after 1.4.2. The changes since 1.4.2 -consist primarily of bug fixes, but also include at least one -optimization. See below for details. - -Of all the work that went into the 1.4.4 release - -There have been lots of individuals doing lots of great work on cairo, -but two efforts during the 1.4.4 series deserve particular mention: - -Internal cleanup of error handling, (Chris Wilson) --------------------------------------------------- -Chris contributed a tremendous series of patches (74 patches!) to -improve cairo's handling of out-of-memory and other errors. He began -by adding gcc's warn_unused_attribute to as many functions as -possible, and then launched into the ambitious efforts of adding -correct code to quiet the dozens of resulting warnings. - -Chris also wrote a custom valgrind skin to systematically inject -malloc failures into cairo, and did all the work necessary to verify -that cairo's performance test suite runs to completion without -crashing. - -The end result is a much more robust implementation. Previously, many -error conditions would have gone unnoticed and would have led to -assertion failures, segmentation faults, or other harder-to-diagnose -problems. Now, more than ever, cairo should cleanly let the user know -of problems through cairo_status and other similar status -functions. Well done, Chris! - -More malloc reduction, (Mathias Hasselmann) -------------------------------------------- -After 1.4.0, Behdad launched an effort to chase down excessive calls -to malloc within the implementation of cairo. He fixed a lot of -malloc-happy objects for 1.4.2, but one of the worst offenders, -(pixman regions), was left around. Mathias contributed an excellent -series of 15 patches to finish off this effort. - -The end result is a cairo that calls malloc much less often than it -did before. Compared to 1.4.2, 55% of the calls to malloc have been -eliminate, (and 60% have been eliminated compared to 1.4.0). Well -done, Mathias! - -Other improvements since 1.4.2 ------------------------------- -• Centralize mutex declarations (will reduce future build breaks), - (Mathias Hasselmann) - -• Reduce malloc by caching recently freed pattern objects (Chris - Wilson) - -• Fix some broken composite operations (David Reveman) - https://bugs.freedesktop.org/show_bug.cgi?id=5777 - -Backend-specific fixes ----------------------- -PDF: - • Use TJ operator for more compact representation of glyphs (Adrian - Johnson) - - • Fix glyph positioning bug when glyphs are not horizontal - http://lists.freedesktop.org/archives/cairo/2007-April/010337.html - -win32: - • Fix crash when rendering with bitmap fonts (Carl Worth) - https://bugzilla.mozilla.org/show_bug.cgi?id=376498 - -xlib: - • Turn metrics-hinting on by default (Behdad Esfahbod) - - • Fix edge-effect problem with transformed images drawn to xlib - (Behdad Esfahbod) - https://bugs.freedesktop.org/show_bug.cgi?id=10508 - - • Avoid dereferencing a NULL screen. (Chris Wilson) - https://bugs.freedesktop.org/show_bug.cgi?id=10517 - -Quartz/ATSUI: - • Fix scaling of glyph surfaces - (Brian Ewins) - https://bugs.freedesktop.org/show_bug.cgi?id=9568 - - • Fix compilation failure when both xlib and quartz enabled - (Brian Ewins) - - • Fix rounding bug leading to incorrectly positioned glyphs - (Robert O'Callahan) - https://bugs.freedesktop.org/show_bug.cgi?id=10531 - -Release 1.4.2 (2007-03-19 Carl Worth ) -========================================================= -This is the first update release in cairo's stable 1.4 series. It -comes just less than 2 weeks after 1.4.0. We hadn't anticipated an -update this early, but we've managed to collect some important fixes -that we wanted to get out to cairo users as soon as possible, (6 fixes -for crashes, 1 case where graphical elements would not be drawn at -all, a handful of backend-specific bugs, and several important build -fixes). - -There's almost nothing but bug fixes in this release, (see below one -optimization that Behdad did sneak in), so we recommend that everyone -upgrade to this release when possible. - -Thanks to the many people that worked to fix these bugs, and those -that did the work to report them and to test the fixes, (wherever -possible both names are credited below). - -Critical fixes --------------- -• Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl - Worth's embarrassing typo). - - http://bugs.freedesktop.org/show_bug.cgi?id=10235 - -• Fix potential buffer overflow, which on some systems with a checking - variant of snprintf would lead to a crash (Adrian Johnson, Stanislav - Brabec, and sangu). - - https://bugs.freedesktop.org/show_bug.cgi?id=10267 - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576 - -• Fix a crash in cairo_stroke_extents or cairo_in_stroke when line - width is 0.0. (Carl Worth and Sebastien Bacher) - - https://bugs.freedesktop.org/show_bug.cgi?id=10231 - -• Fix a crash on certain combinations of X server/video drivers (Carl - Worth and Tomas Carnecky). - - https://bugs.freedesktop.org/show_bug.cgi?id=10250 - -• Fix a crash due to mishandling of invalid user input (Carl Worth and - Alexander Darovsky). - - https://bugs.freedesktop.org/show_bug.cgi?id=9844 - -• xlib: Cleanup server-side glyph caches on XCloseDisplay. This - eliminated a crash detected by the perf suite, (and that - applications could have run into as well). (Chris Wilson) - -Other bug fixes ---------------- -• Fix for some geometry which simply disappeared under some - transformations---a stroked line with an extreme skew in X, for - example (Carl Worth and Jonathan Watt). - - https://bugzilla.mozilla.org/show_bug.cgi?id=373632 - -• SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1 - (Emmanuel Pacaud). - -• PDF: Set page group color space to DeviceRGB. - - This fixes incorrect (muddy) transparent colors when rendering cairo - PDF output in some viewers. (Adrian Johnson, Adam Goode, and - MenTaLguY). - - http://lists.freedesktop.org/archives/cairo/2006-November/008551.html - -• win32: Return correct metrics when hinting is off, and fix font - descent computation (Behdad Esfahbod). - -• quartz: Fix glyph interfaces to correctly return user-space rather - than device-space coordinates (Brian Ewins). - - https://bugs.freedesktop.org/show_bug.cgi?id=9568 - -• xcb: Fix parameter-order confusion with xcb_create_pixmap, which now - makes all tests that pass with xlib now pass with xcb (Carl Worth, - Jamey Sharp). - -• Fix some memory leaks in the perf suite (Chris Wilson). - -• Fix perf suite to consider changes in pixman/src (Mathias - Hasselmann). - -Build fixes ------------ -• Don't include pre-generated cairo-features.h file. This was causing - build failures when building with the directfb backend enabled - (Behdad Esfahbod). - - https://bugs.freedesktop.org/show_bug.cgi?id=10189 - -• Eliminate use of maintainer mode from cairo's automake/configure - script. This means that updates to files such as Makefile.am will - take effect, (by rerunning automake and friends as necessary) when - invoking make rather than being silently ignored. (Behdad Esfahbod) - -• Don't compile cairo-deflate-stream.c, which depends on zlib, unless - building the pdf backend which requires it. (Carl Worth, Tor - Lillqvist) - - https://bugs.freedesktop.org/show_bug.cgi?id=10202 - -• Don't make the ps backend link against zlib anymore, since it - doesn't require it (Carl Worth). - -• Use "find !" rather than "find -not" for better portability (Thomas - Klausner). - - https://bugs.freedesktop.org/show_bug.cgi?id=10226 - -• Don't use unsupported visibility attribute "hidden" on Solaris - (Gilles Dauphin, Thomas Klausner). - - https://bugs.freedesktop.org/show_bug.cgi?id=10227 - -Optimization ------------- -• It was Behdad that suggested we focus strictly on bug fixes now that - we shipped so many performance improvements in 1.4.0, but it was - also Behdad that got distracted by the chance to remove a lot of - mallocs from cairo. Paths, gstates, trapezoids, splines, polygons, - and gradient color stops will now use small, stack-allocated buffers - in the most common cases rather than calling malloc as - often. (Behdad Esfahbod). And look for more from Mathias Hasselmann - soon. - -Release 1.4.0 (2007-03-06 Carl Worth ) -========================================================= -The many people[*] who have been working hard on cairo are very -pleased to announce the long-awaited release of cairo 1.4. This -release comes 4 months after the last stable update release (1.2.6) -and 9 months since the initial release of 1.2.0. - -The release notes below are intended to capture the highlights of the -changes that have occurred from the 1.2 series to the new 1.4.0 -release. - -Performance improvements ------------------------- -Within the cairo project, the last 6 months or so has seen an intense -effort focusing on the performance of cairo itself. That effort has -paid off considerably, as can be seen in the following highlights of -some of the performance differences from cairo 1.2.6 to cairo 1.4.0. - -(Note: The performance results reported here were measured on an x86 -laptop. Many of the improvements in 1.4---particular those involving -text rendering---are even more dramatic on embedded platforms without -hardware floating-point units. Such devices played an important part -of many of the optimizations that found their way into cairo over the -last few months.) - -• Dramatic improvement when drawing objects that are mostly off-screen - with the image backend (with the xlib backend this case is still - slow due to an X server bug): - - image-rgba long-lines-uncropped-100 479.64 -> 4.98: 96.24x speedup - ███████████████████████████████████████████████▋ - -• Dramatic improvement when copying a small fraction of an image - surface to an xlib surface: - - xlib-rgba subimage_copy-512 3.93 -> 0.07: 54.52x speedup - ██████████████████████████▊ - -• Dramatic improvement to tessellation speed for complex objects: - - image-rgb tessellate-256-100 874.16 -> 34.79: 25.13x speedup - ████████████■- xlib-rgba zrusin_another_fill-415 148.40 -> 13.85: 10.72x speedup - ████▉ - xlib-rgb world_map-800 680.20 -> 345.54: 1.97x speedup - â–Œ - -• Dramatic improvement to the speed of stroking rectilinear shapes, - (such as the outline of a rectangle or "box"): - - image-rgb box-outline-stroke-100 0.18 -> 0.01: 24.22x speedup - ███████████▋ - xlib-rgb box-outline-stroke-100 0.46 -> 0.06: 8.05x speedup - ███▌ - - -• Dramatic improvements to text rendering speeds: - - xlib-rgba text_image_rgba_over-256 63.12 -> 9.61: 6.57x speedup - ██▊ - -• 3x improvements to floating-point to fixed-point conversion speeds: - - image-rgba pattern_create_radial-16 9.29 -> 3.44: 2.70x speedup - â–‰ - -• 2x improvements to linear gradient computation: - - image-rgb paint_linear_rgb_source-512 26.22 -> 11.61: 2.26x speedup - â–‹ - -• 2x improvement to a case common in PDF rendering: - - image-rgb unaligned_clip-100 0.10 -> 0.06: 1.81x speedup - â– - -• 1.3x improvement to rectangle filling speed (note: this improvement - is new since 1.3.16---previously this test case was a 1.3x slowdown - compared to 1.2.6): - - image-rgba rectangles-512 6.19 -> 4.37: 1.42x speedup - â–Ž - xlib-rgba rectangles-512 7.48 -> 5.58: 1.34x speedup - â– - -NOTE: In spite of our best efforts, there are some measurable -performance regressions in 1.4 compared to 1.2. It appears that the -primary problem is the increased overhead of the new tessellator when -drawing many, very simple shapes. The following test cases capture -some of that slowdown: - - image-rgba mosaic_tessellate_lines-800 11.03 -> 14.29: 1.30x slowdown - â– - image-rgba box-outline-fill-100 0.01 -> 0.01: 1.26x slowdown - â– - image-rgba fill_solid_rgb_over-64 0.20 -> 0.22: 1.12x slowdown - - image-rgba fill_image_rgba_over-64 0.23 -> 0.25: 1.10x slowdown - - xlib-rgb paint_image_rgba_source-256 3.24 -> 3.47: 1.07x slowdown - -We did put some special effort into eliminating this slowdown for the -very common case of drawing axis-aligned rectangles with an identity -matrix (see the box-outline-stroke and rectangles speedup numbers -above). Eliminating the rest of this slowdown will be a worthwhile -project going forward. - -Also note that the "box-outline-fill" case is a slowdown while -"box-outline-stroke" is a (huge) speedup. These two test cases -resulted from the fact that some GTK+ theme authors were filling -between two rectangles to avoid slow performance from the more natural -means of achieving the same shape by stroking a single rectangle. With -1.4 that workaround should definitely be eliminated as it will now -cause things to perform more slowly. - -Greatly improved PDF output ---------------------------- -We are very happy to be able to announce that cairo-generated PDF -output will now have text that can be selected, cut-and-pasted, and -searched with most capable PDF viewer applications. This is something -that was not ever possible with cairo 1.2. - -Also, the PDF output now has much more compact encoding of text than -before. Cairo is now much more careful to not embed multiple copies of -the same font at different sizes. It also compresses text and font -streams within the PDF output. - -API additions -------------- -There are several new functions available in 1.4 that were not -available in 1.2. Curiously, almost all of the new functions simply -allow the user to query state that has been set in cairo (many new -"get" functions) rather than providing any fundamentally new -operations. The new functionality is: - -• Getting information about the current clip region - - cairo_clip_extents - cairo_copy_clip_rectangle_list - cairo_rectangle_list_destroy - -• Getting information about the current dash setting - - cairo_get_dash_count - cairo_get_dash - -• Getting information from a pattern - - cairo_pattern_get_rgba - cairo_pattern_get_surface - cairo_pattern_get_color_stop_rgba - cairo_pattern_get_color_stop_count - cairo_pattern_get_linear_points - cairo_pattern_get_radial_circles - -• Getting the current scaled font - - cairo_get_scaled_font - -• Getting reference counts - - cairo_get_reference_count - cairo_surface_get_reference_count - cairo_pattern_get_reference_count - cairo_font_face_get_reference_count - cairo_scaled_font_get_reference_count - -• Setting/getting user data on objects - - cairo_set_user_data - cairo_get_user_data - cairo_pattern_set_user_data - cairo_pattern_get_user_data - cairo_scaled_font_set_user_data - cairo_scaled_font_get_user_data - -• New cairo-win32 functions: - - cairo_win32_surface_create_with_ddb - cairo_win32_surface_get_image - cairo_win32_scaled_font_get_logical_to_device - cairo_win32_scaled_font_get_device_to_logical - -API deprecation ---------------- -The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never -worked as a format value for cairo_image_surface_create, and it wasn't -necessary for supporting 16-bit 565 X server visuals. - -A sampling of bug fixes in cairo 1.4 ------------------------------------- - • Fixed radial gradients - • Fixed dashing (degenerate and "leaky" cases) - • Fixed transformed images in PDF/PS output (eliminate bogus repeating) - • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD - • cairo_show_page no longer needed for single-page output - • SVG: Fix bug preventing text from appearing in many viewers - • cairo-ft: Return correct metrics when hinting is off - • Eliminate crash in cairo_create_similar if nil surface is returned - • Eliminate crash after INVALID_RESTORE error - • Fix many bugs related to multi-threaded use and locking - • Fix for glyph spacing 32 times larger than desired (cairo-win32) - • Fixed several problems in cairo-atsui (assertion failures) - • Fix PDF output to avoid problems when printing from Acrobat Reader - • Fix segfault on Mac OS X (measuring a zero-length string) - • Fix text extents to not include the size of non-inked characters - • Fix for glyph cache race condition in glitz backend (Jinghua Luo) - • Fix make check to work on OPD platforms (IA64 or PPC64) - • Fix compilation problems of cairo "wideint" code on some platforms - • Many, many others... - -Experimental backends (quartz, XCB, OS/2, BeOS, directfb) ---------------------------------------------------------- -None of cairo's experimental backends are graduating to "supported" -status with 1.4.0, but two of them in particular (quartz and xcb), are -very close. - -The quartz baceknd has been entirely rewritten and is now much more -efficient. The XCB backend has been updated to track the latest XCB -API (which recently had a 1.0 release). - -We hope to see these backends become supported in a future release, -(once they are passing all the tests in cairo's test suite). - -The experimental OS/2 backend is new in cairo 1.4 compared to cairo -1.2. - -Documentation improvements --------------------------- -We have added documentation for several functions and types that -were previously undocumented, and improved documentation on other -ones. As of this release, there remain only two undocumented -symbols: cairo_filter_t and cairo_operator_t. - -[*]Thanks to everyone ---------------------- -I've accounted for 41 distinct people with attributed code added to -cairo between 1.2.6 and 1.4.0, (their names are below). That's an -impressive number, but there are certainly dozens more that -contributed with testing, suggestions, clarifying questions, and -encouragement. I'm grateful for the friendships that have developed as -we have worked on cairo together. Thanks to everyone for making this -all so much fun! - -Adrian Johnson, Alfred Peng, Alp Toker, Behdad Esfahbod, -Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger, -Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams, -Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov, -Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar, -Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen, -Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja, -Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell, -Pavel Roskin, Peter Weilbacher, Robert O'Callahan, -Soren Sandmann Pedersen, Stuart Parmenter, T Rowley, -Vladimir Vukicevic - -Snapshot 1.3.16 (2007-03-02 Carl Worth ) -=========================================================== -New API functions ------------------ -A few new public functions have been added to the cairo API since the -1.3.14 snapshot. These include a function to query the current scaled -font: - - cairo_get_scaled_font - -New functions to query the reference count of all cairo objects: - - cairo_get_reference_count - - cairo_surface_get_reference_count - cairo_pattern_get_reference_count - - cairo_font_face_get_reference_count - cairo_scaled_font_get_reference_count - -And new functions to allow the use of user_data with any cairo object, -(previously these were only available on cairo_surface_t and -cairo_font_face_t objects): - - cairo_set_user_data - cairo_get_user_data - - cairo_pattern_set_user_data - cairo_pattern_get_user_data - - cairo_scaled_font_set_user_data - cairo_scaled_font_get_user_data - -Usability improvement for PDF/PS/SVG generation ------------------------------------------------ -In previous versions of cairo, generating single-page output with the -cairo-pdf, cairo-ps, or cairo-svg backends required a final call to -cairo_show_page. This was often quite confusing as people would port -functional code from a non-paginated backend and be totally mystified -as to why the output was blank until they learned to add this call. - -Now that call to cairo_show_page is optional, (it will be generated -implicitly if the user does not call it). So cairo_show_page is only -needed to explicitly separate multiple pages. - -Greatly improved PDF output ---------------------------- -We are very happy to be able to announce that cairo-generated PDF -output will now have text that can be selected, cut-and-paste, and -searched with most capable PDF viewer applications. This is something -that was not ever possible with cairo 1.2. - -Also, the PDF output now has much more compact encoding of text than -before. Cairo is now much more careful to not embed multiple copies of -the same font at different sizes. It also compresses text and font -streams within the PDF output. - -Major bug fixes ---------------- - • Fixed radial gradients - - The rendering of radial gradients has been greatly improved. In - the cairo 1.2 series, there was a serious regression affecting - radial gradients---results would be very incorrect unless one of - the gradient circles had a radius of 0.0 and a center point within - the other circle. These bugs have now been fixed. - - • Fixed dashing - - Several fixes have been made to the implementation of dashed - stroking. Previously, some dashed, stroked rectangles would - mis-render and fill half of the rectangle with a large triangular - shape. This bug has now been fixed. - - • Fixed transformed images in PDF/PS output - - In previous versions of cairo, painting with an image-based source - surface pattern to the PDF or PS backends would cause many kinds - of incorrect results. One of the most common problems was that an - image would be repeated many times even when the user had - explicitly requested no repetition with CAIRO_EXTEND_NONE. These - bugs have now been fixed. - - • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD - - In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or - CAIRO_EXTEND_PAD with a surface-based pattern resulted in an - error, (cairo would stop rendering). This bug has now been - fixed. - - Now, CAIRO_EXTEND_REFLECT should work properly with surface - patterns. - - CAIRO_EXTEND_PAD is still not working correctly, but it will now - simply behave as CAIRO_EXTEND_NONE rather than triggering the - error. - -New rewrite of quartz backend (still experimental) --------------------------------------------------- -Cairo's quartz backend has been entirely rewritten and is now much -more efficient. This backend is still marked as experimental, not -supported, but it is now much closer to becoming an officially -supported backend. (For people that used the experimental nquartz -backend in previous snapshots, that implementation has now been -renamed from "nquartz" to "quartz" and has replaced the old quartz -backend.) - -Documentation improvements --------------------------- -We have added documentation for several functions and types that -were previously undocumented, and improved documentation on other -ones. As of this release, there remain only two undocumented -symbols: cairo_filter_t and cairo_operator_t. - -Other bug fixes ---------------- - • cairo-svg: Fix bug that was preventing text from appearing in many - viewers - - • cairo-ft: Return correct metrics when hinting is off - - • Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or - _cairo_ft_unscaled_font_lock_face - - https://bugs.freedesktop.org/show_bug.cgi?id=10035 - - • cairo crashes in cairo_create_similar if nil surface returned by - other->backend->create_similar - - https://bugs.freedesktop.org/show_bug.cgi?id=9844 - - • evolution crash in _cairo_gstate_backend_to_user() - https://bugs.freedesktop.org/show_bug.cgi?id=9906 - - • Fix memory leak in rectilinear stroking code - -Things not in this release --------------------------- - • Solid-surface-pattern cache: This patch had been applied during - the 1.3.x series, but it was reverted due to some inter-thread - problems it caused. The patch is interesting since it made a big - benefit for text rendering performance---so we'll work to bring a - corrected version of this patch back as soon as possible. - -Snapshot 1.3.14 (2006-02-13 Carl Worth ) -=========================================================== -This is the seventh development snapshot in the 1.3 series, (and there -likely won't be many more before the 1.4.0 release). It comes just -over 3 weeks after the 1.3.12 snapshot. - -Since we're so close to the 1.4.0 release, there are not a lot of new -features nor even a lot of new performance improvements in this -snapshot. Instead, there are a great number of bug fixes. Some are -long-standing bugs that we're glad to say goodbye to, and several are -fixes for regressions that were introduced as part of the optimization -efforts during the 1.3.x series. - -PDF text selection fixed ------------------------- -The inability to correctly select text in cairo-generated PDF has been -a defect ever since the initial support for the PDF backend in the -cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and -with most PDF viewer applications, the PDF generated by cairo will -allow text to be correctly selected for copy-and-paste, (as well as -searching). - -We're very excited about this new functionality, (and very grateful to -Adrian Johnson, Behdad Esfahbod, and others that have put a lot of -work into this lately). Please test this new ability and give feedback -on the cairo@cairographics.org list. - -Many thread-safety issues fixed -------------------------------- -We've discovered that no release of cairo has ever provided safe text -rendering from a multi-threaded application. With the 1.3.14 snapshot -a huge number of the bugs in this area have been fixed, and multiple -application dvelopers have now reported success at writing -multi-threaded applications with cairo. - -Other fixes ------------ -Fixed a bug that was causing glyph spacing to be 32 times larger than -desired when using cairo-win32. - -Fixed a regression in the rendering of linear gradients that had been -present since the 1.3.8 snapshot. - -Fixed several problems in cairo-atsui that were leading to assertion -failures when rendering text. - -Fix corrupted results when rendering a transformed source image -surface to an xlib surface. This was a regression that had been -present since the 1.3.2 snapshot. - -Fixed PDF output to prevent problems printing from some versions of -Acrobat Reader, (a single glyph was being substituted for every -glyph). - -And many other fixes as well, (see the logs for details). - -Snapshot 1.3.12 (2007-01-20 Carl Worth ) -=========================================================== -The relentless march toward the cairo 1.4 release continues, (even if -slightly late out of the starting blocks in 2007). This is the sixth -development snapshot in the 1.3 series. It comes 4 weeks after the -1.3.10 snapshot. - -Performance ------------ -As usual, this snapshot has some fun performance improvements to show -off: - -image-rgba long-lines-uncropped-100 470.08 -> 4.95: 94.91x speedup -███████████████████████████████████████████████ -image-rgb long-lines-uncropped-100 461.60 -> 4.96: 93.02x speedup -██████████████████████████████████████████████ - -This 100x improvement, (and yes, that's 100x, not 100%), in the image -backend occurs when drawing large shapes where only a fraction of the -shape actually appears in the final result, (the rest being outside -the bounds of the destination surface). Many applications should see -speedups here, and the actual amount of speedup depends on the ratio -of non-visible to visible portions of geometry. - -[Note: There remains a similar performance bug when drawing mostly -non-visible objects with the xlib backend. This is due to a similar -bug in the X server itself, but we hope a future cairo snapshot will -workaround that bug to get a similar speedup with the xlib backend.] - -image-rgba unaligned_clip-100 0.09 -> 0.06: 1.67x speedup -â– -image-rgb unaligned_clip-100 0.09 -> 0.06: 1.66x speedup -â– - -This speedup is due to further MMX optimization by Soeren Sandmann for -a case commonly hit when rendering PDF files, (and thanks to Jeff -Muizelaar for writing code to extract the test case for us). - -There's another MMX optimization in this snapshot (without a fancy -speedup chart) by Dan Williams which improves compositing performance -specifically for the OLPC machine. - -Thanks to Adrian Johnson, cairo's PDF output is now much more -efficient in the way it encodes text output. By reducing redundant -information and adding compression to text output streams, Adrian -achieved a ~25x improvement in the efficiency of encoding text in PDF -files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph). - -Bug fixes ---------- -In addition to those performance improvements, this snapshot includes -several bug fixes: - - * A huge number of bug fixes for cairo-atsui text rendering, (for mac - OS X). These bugs affect font selection, glyph positioning, glyph - rendering, etc. One noteworthy bug fixes is that - cairo_select_font_face will no longer arbitrarily select bold nor - italic when not requested, (at least not when using a standard CSS2 - font family name such as "serif", "sans-serif", "monospace", etc.). - All these fixes are thanks to Brian Ewins who continues to do a - great job as the new cairo-atsui maintainer. - - * Fix PDF output so that images that are scaled down no longer - mysteriously repeat (Carl Worth). - - * Fix segfault on Mac OS X dues to attempt to measure extents of a - zero-length string (Behdad Esfahbod). - - * Fix text extents to not include the size of initial/trailing - non-inked characters (Behdad Esfahbod). - -API tweaks ----------- -Three functions have had API changes to improve consistency. Note that -the API functions being changed here are all functions that were -introduced as new functions during these 1.3.x snapshots. As always, -there will not be any API changes to functions included in a major -release (1.2.x, 1.4.x, etc.) of cairo. - -The changes are as follows: - - * Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list. - - * Change cairo_get_dash_count to return an int rather than accepting a - pointer to an int for the return value. - - * Change cairo_get_dash to have a void return type rather than - returning cairo_status_t. - -It's possible there will be one more round of changes to these -functions, (and perhaps cairo_get_color_stop as well), as we seek to -establish a unifying convention for returning lists of values. - -Snapshot 1.3.10 (2006-12-23 Carl Worth ) -=========================================================== -Santa Claus is coming just a little bit early this year, and he's -bringing a shiny new cairo snapshot for all the good little boys and -girls to play with. - -This is the fifth development snapshot in the 1.3 series. It comes 9 -days after the 1.3.8 snapshot, and still well within our goal of -having a new snapshot every week, (though don't expect one next -week---we'll all be too stuffed with sugar plums). - -Speaking of sugar plums, there's a sweet treat waiting in this cairo -snapshot---greatly improved performance for stroking rectilinear -shapes, like the ever common rectangle: - -image-rgb box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup -████████████████████████▋ -image-rgba box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup -████████████████████████▋ -xlib-rgb box-outline-stroke-100 0.49 -> 0.06: 8.67x speedup -███████▋ -xlib-rgba box-outline-stroke-100 0.22 -> 0.04: 5.39x speedup -████■- -In past releases of cairo, some people had noticed that using -cairo_stroke to draw rectilinear shapes could be awfully slow. Many -people had worked around this by using cairo_fill with a more complex -path and gotten a 5-15x performance benefit from that. - -If you're one of those people, please rip that workaround out, as now -the more natural use of cairo_stroke should be 1.2-2x faster than the -unnatural use of cairo_fill. - -And if you hadn't ever implemented that workaround, then you just -might get to see your stroked rectangles now get drawn 5-25x faster. - -Beyond that performance fix, there are a handful of bug fixes in this -snapshot: - - * Fix for glyph cache race condition in glitz backend (Jinghua Luo) - - * Many fixes for ATSUI text rendering (Brian Ewins) - - * Un-break recent optimization-triggered regression in rendering text - with a translation in the font matrix (Behdad Esfahbod) - - * Fix make check to work on OPD platforms (IA64 or PPC64) - (Frederic Crozat) - - * Fix a couple of character spacing issues on Windows - (Jonathan Watt) - -Have fun with that, everybody, and we'll be back for more in the new -year, (with a plan to add the last of our performance improvements in -this round, fix a few bad, lingering bugs, and then finish off a nice, -stable 1.4 release before the end of January). - --Carl - -Snapshot 1.3.8 (2006-12-14 Carl Worth ) -========================================================== -This is the fourth development snapshot in the 1.3 series. It comes -just slightly more than one week after the 1.3.6 snapshot. - -After the bug fixes in 1.3.6, we're back to our original program of -weekly snapshots, each one faster than the one from the week -before. Cairo 1.3.8 brings a 2x improvement in the speed of rendering -linear gradients (thanks to David Turner), and a significant reduction -in X traffic when rendering text (thanks to Xan Lopez and Behdad -Esfahbod), making cairo behave very much like Xft does. - -A few other things in the 1.3.8 snapshot worth noting include a more -forgiving image comparator in the test suite, (using the "perceptual -diff" metric and GPL implementation by Hector Yee[*]), a bug fix for -broken linking on x86_64 (thanks to M Joonas Pihlaja) and an even -better implementation of _cairo_lround, (not faster, but supporting a -more complete input range), from Daniel Amelang. - -[*] http://pdiff.sourceforge.net/ - -Snapshot 1.3.6 (2006-12-06 Carl Worth ) -========================================================== -This is the third development snapshot in the 1.3 series. It comes two -weeks after the 1.3.4 snapshot. - -We don't have fancy performance charts this week as the primary -changes in this snapshot are bug fixes. The performance work continues -and the next snapshot (planned for one week from today) should include -several improvements. The bug fixes in this snapshot include: - - * Fix undesirable rounding in glyph positioning (Dan Amelang) - - This bug was noticed by several users, most commonly by seeing - improper text spacing or scrambled glyphs as drawn by nautilus. For - example: - - Update to cairo-1.3.4 worsen font rendering - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819 - - * Fix reduced range of valid input coordinates to tessellator - (M Joonas Pihlaja) - - This bug was causing lots of assertion failures in mozilla as - mentioned here: - - CAIRO_BO_GUARD_BITS and coordinate space? - http://lists.freedesktop.org/archives/cairo/2006-December/008743.html - - * Fix several regressions in new tessellator (M Joonas Pihlaja) - - Joonas just had a good eye for detail here. I don't think any - external cairo users had noticed any of these bugs yet. - - * Fix compilation problems of cairo "wideint" code on some platforms - (Mathieu Lacage) - - * Fix failed configure due to broken grep (Dan Amelang) - - This bug was reported here: - - AX_C_FLOAT_WORDS_BIGENDIAN doesn't work because grep doesn't - work with binary file - https://bugs.freedesktop.org/show_bug.cgi?id=9124 - - * Remove the pkg-config minimum version requirement (Behdad Esfahbod) - - Some systems ship with pkg-config 0.15 and there was really no good - reason for cairo to insist on having version 0.19 before it would - build. - -There is also one new (but inert) feature in this snapshot. There's a -new option that can be passed to cairo's configure script: - - --disable-some-floating-point - - Disable certain code paths that rely heavily on double precision - floating-point calculation. This option can improve - performance on systems without a double precision floating-point - unit, but might degrade performance on those that do. - -As of this snapshot, this option does not make any change to cairo, -but it is possible that future versions of cairo will respect this -option and change the implementation of various functions as -appropriate. - -Snapshot 1.3.4 (2006-11-22 Carl Worth ) -========================================================== -This is the second development snapshot in the 1.3 series. It comes -one week after the 1.3.2 snapshot. - -This snapshot has a couple of significant performance improvements, -and also adds new support for producing multi-page SVG output, (when -targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the -performance improvements are as follows: - -1. The long-awaited "new tessellator". - - The credit for this being an improvement goes to Joonas Pihlaja. He - took my really slow code and really put it through its paces to get - the dramatic performance improvement seen below (up to 38x faster - on realistic cases, and more than 10x faster for the zrusin_another - test). - - His own writeup of the work he did is quite thorough, but more than - can be quoted here. Please see his post for the interesting details: - - http://lists.freedesktop.org/archives/cairo/2006-November/008483.html - - (Though note that this snapshot also includes some additional, - significant improvements that were only sketched out in that - email---see "Generating fewer trapezoids"). - -2. More floating-point improvements - - Daniel Amelang continues to work the magic he began in the 1.3.2 - snapshot. This time he short-circuits floating-point - transformations by identity matrices and applies the earlier - floating-to-fixed-point technique to the problem of rounding. - - The improvements here will primarily benefit text performance, and - will benefit platforms without hardware floating-point more than - those that have it, (some text tests show 20% improvement on an x86 - machine and closer to 80% improvement on arm). - -The performance chart comparing 1.3.2 to 1.3.4 really speaks for -itself, (this is on an x86 laptop). This is quite a lot of progress -for one week: - - xlib-rgb stroke_similar_rgba_over-256 74.99 1.45% -> 2.03 68.38%: 36.86x speedup -███████████████████████████████████▉ - xlib-rgb stroke_similar_rgba_source-256 78.23 1.43% -> 3.30 67.05%: 23.71x speedup -██████████████████████▊ - xlib-rgba tessellate-256-100 820.42 0.15% -> 35.06 2.84%: 23.40x speedup -██████████████████████■-image-rgba tessellate-256-100 819.55 0.32% -> 35.04 3.56%: 23.39x speedup -██████████████████████■- xlib-rgb stroke_image_rgba_over-256 78.10 1.43% -> 4.33 65.56%: 18.04x speedup -█████████████████ - xlib-rgb stroke_image_rgba_source-256 80.11 1.63% -> 5.75 63.99%: 13.94x speedup -█████████████ - xlib-rgba zrusin_another_tessellate-415 89.22 0.35% -> 8.38 5.23%: 10.65x speedup -█████████▋ -image-rgba zrusin_another_tessellate-415 87.38 0.89% -> 8.37 5.22%: 10.44x speedup -█████████■-image-rgba zrusin_another_fill-415 117.67 1.34% -> 12.88 2.77%: 9.14x speedup -████████■- xlib-rgba zrusin_another_fill-415 140.52 1.57% -> 15.79 2.88%: 8.90x speedup -███████▉ -image-rgba tessellate-64-100 9.68 3.42% -> 1.42 0.60%: 6.82x speedup -█████▉ - xlib-rgba tessellate-64-100 9.78 4.35% -> 1.45 0.83%: 6.72x speedup -█████▊ - xlib-rgb stroke_linear_rgba_over-256 46.01 2.44% -> 7.74 54.51%: 5.94x speedup -█████ - xlib-rgb stroke_linear_rgba_source-256 48.09 2.15% -> 9.14 53.00%: 5.26x speedup -████▎ - xlib-rgb stroke_radial_rgba_over-256 50.96 2.34% -> 12.46 47.99%: 4.09x speedup -███■- xlib-rgb stroke_radial_rgba_source-256 53.06 1.57% -> 13.96 46.57%: 3.80x speedup -██▊ -image-rgba paint_similar_rgba_source-256 0.12 1.57% -> 0.08 9.92%: 1.42x speedup -â– -image-rgba paint_image_rgba_source-256 0.12 2.49% -> 0.08 10.70%: 1.41x speedup -â– -image-rgba world_map-800 356.28 0.46% -> 275.72 1.15%: 1.29x speedup -â–Ž - xlib-rgba world_map-800 456.81 0.39% -> 357.95 1.39%: 1.28x speedup -â–Ž -image-rgb tessellate-16-100 0.09 0.57% -> 0.07 3.43%: 1.23x speedup -â–Ž -image-rgba tessellate-16-100 0.09 0.06% -> 0.07 2.46%: 1.23x speedup -â–Ž -image-rgba text_solid_rgb_over-256 5.39 4.01% -> 4.47 0.70%: 1.21x speedup -â–Ž -image-rgba text_solid_rgba_over-256 5.37 0.82% -> 4.45 0.75%: 1.21x speedup -â–Ž -image-rgba text_image_rgb_over-64 0.78 0.10% -> 0.65 0.74%: 1.20x speedup -â–Ž -image-rgba text_image_rgba_over-64 0.78 0.29% -> 0.65 0.68%: 1.19x speedup -â–Ž -image-rgb text_solid_rgb_over-64 0.76 2.45% -> 0.63 0.81%: 1.19x speedup -â–Ž -image-rgba text_solid_rgba_over-64 0.76 0.33% -> 0.64 0.66%: 1.19x speedup -â–Ž -image-rgba text_similar_rgba_over-256 5.99 4.72% -> 5.04 1.09%: 1.19x speedup -â–Ž - -We should point out that there is some potential for slowdown in this -snapshot. The following are the worst slowdowns reported by the cairo -performance suite when comparing 1.3.2 to 1.3.4: - -image-rgba subimage_copy-256 0.01 0.87% -> 0.01 3.61%: 1.45x slowdown -â–Œ - xlib-rgb paint_solid_rgb_over-256 0.31 10.23% -> 0.38 0.33%: 1.26x slowdown -â–Ž -image-rgba box-outline-fill-100 0.01 0.30% -> 0.01 2.52%: 1.21x slowdown -â–Ž -image-rgba fill_solid_rgb_over-64 0.20 1.22% -> 0.22 1.59%: 1.12x slowdown -â– -image-rgb fill_similar_rgb_over-64 0.21 1.04% -> 0.24 1.06%: 1.11x slowdown -â– -image-rgba fill_image_rgb_over-64 0.21 1.19% -> 0.24 0.72%: 1.11x slowdown -â– -image-rgba fill_similar_rgb_over-64 0.21 0.18% -> 0.24 0.30%: 1.11x slowdown -â– -image-rgb fill_solid_rgba_over-64 0.22 1.66% -> 0.24 1.15%: 1.11x slowdown -â– -image-rgb fill_image_rgb_over-64 0.21 0.14% -> 0.24 0.80%: 1.11x slowdown -â– -image-rgba fill_image_rgba_over-64 0.22 1.34% -> 0.25 0.20%: 1.11x slowdown -â– -image-rgba fill_solid_rgba_over-64 0.22 1.48% -> 0.24 0.95%: 1.11x slowdown -â– -image-rgb fill_similar_rgba_over-64 0.22 1.13% -> 0.25 1.25%: 1.10x slowdown -â– - -The 45% slowdown for subimage_copy is an extreme case. It's unlikely -to hit many applications unless they often use cairo_rectangle; -cairo_fill to copy a single pixel at a time. In any case, it shows a -worst-case impact of the overhead of the new tessellator. The other -slowdowns (~ 10%) are probably more realistic, and still very -concerning. - -We will work to ensure that performance regressions like these are not -present from one major release of cairo to the next, (for example, -from 1.2 to 1.4). - -But we're putting this 1.3.4 snapshot out there now, even with this -potential slowdown so that people can experiment with it. If you've -got complex geometry, we hope you will see some benefit from the new -tessellator. If you've got primarily simple geometry, we hope things -won't slowdown too much, but please let us know what slowdown you see, -if any, so we can calibrate our performance suite against real-world -impacts. - -Thanks, and have fun with cairo! - -Snapshot 1.3.2 (2006-11-14 Carl Worth ) -========================================================== -This is the first development snapshot since the 1.2 stable series -branched off shortly after the 1.2.4 release in August 2006. - -This snapshot includes all the bug fixes from the 1.2.6 release, -(since they originated here on the 1.3 branch first and were -cherry-picked over to 1.2). But more importantly, it contains some new -API in preparation for a future 1.4 release, and most importantly, it -contains several performance improvements. - -The bug fixes will not be reviewed here, as most of them are already -described in the 1.2.6 release notes. But details for the new API and -some performance improvements are included here. - -As with all snapshots, this is experimental code, and the new API -added here is still experimental and is not guaranteed to appear -unchanged in any future release of cairo. - -API additions -------------- -Several new API additions are available in this release. There is a -common theme among all the additions in that they allow cairo to -advertise information about its state that it was refusing to -volunteer earlier. So this isn't groundbreaking new functionality, but -it is essential for easily achieving several tasks. - -The new functions can be divided into three categories: - - Getting information about the current clip region - ------------------------------------------------- - cairo_clip_extents - cairo_copy_clip_rectangles - cairo_rectangle_list_destroy - - Getting information about the current dash setting - -------------------------------------------------- - cairo_get_dash_count - cairo_get_dash - - Getting information from a pattern - ---------------------------------- - cairo_pattern_get_rgba - cairo_pattern_get_surface - cairo_pattern_get_color_stop_rgba - cairo_pattern_get_color_stop_count - cairo_pattern_get_linear_points - cairo_pattern_get_radial_circles - -In each of these areas, we have new API for providing a list of -uniform values from cairo. The closest thing we had to this before was -cairo_copy_path, (which is rather unique in providing a list of -non-uniform data). - -The copy_clip_rectangles/rectangle_list_destroy functions follow a -style similar to that of cairo_copy_path. Meanwhile, the dash and -pattern color stop functions introduce a new style in which there is a -single call to return the number of elements available (get_dash_count -and get_color_stop_count) and then a function to be called once to get -each element (get_dash and get_color_stop_rgba). - -I'm interested in hearing feedback from users of these new API -functions, particularly from people writing language bindings. One -open question is whether the clip "getter" functionality should adopt -a style similar to that of the new dash and color_stop interfaces. - -API deprecation ---------------- -The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never -worked as a format value for cairo_image_surface_create, and it wasn't -necessary for supporting 16-bit 565 X server visuals. - -XCB backend changes -------------------- -The XCB backend has been updated to track the latest XCB API (which -recently had a 1.0 release). - -New quartz backend ------------------- -Vladimir Vukicevic has written a new "native quartz" backend which -will eventually replace the current "image-surface wrapping" quartz -backend. For now, both backends are available, (the old one is -"quartz" and the new one is "nquartz"). But it is anticipated that the -new backend will replace the old one and take on the "quartz" name -before this backend is marked as supported in a release of cairo. - -New OS/2 backend ----------------- -Doodle and Peter Weilbacher have contributed a new, experimental -backend for using cairo on OS/2 systems. - -Performance improvements ------------------------- -Here are some highlights from cairo's performance suite showing -improvements from cairo 1.2.6 to cairo 1.3.2. The command used to -generate this data is: - - ./cairo-perf-diff 1.2.6 HEAD - -available in the perf/ directory of a recent checkout of cairo's -source, (the cairo-perf-diff script does require a git checkout and -will not work from a tar file---though ./cairo-perf can still be used -to generate a single report there and ./cairo-perf-diff-files can be -used to compare two reports). - -Results are described below both for an x86 laptop (with an old Radeon -video card, recent X.org build, XAA, free software drivers), as well -as for a Nokia 770. First the x86 results with comments on each, (all -times are reported in milliseconds). - -Copying subsets of an image surface to an xlib surface (much faster) --------------------------------------------------------------------- - xlib-rgba subimage_copy-512 10.50 -> : 53.97x speedup -█████████████████████████████████████████████████████ - -Thanks to Christopher (Monty) Montgomery for this big performance -improvement. Any application which has a large image surface and is -copying small pieces of it at a time to an xlib surface, (imagine an -application that loads a single image containing all the "sprites" for -that application), will benefit from this fix. The larger the ratio of -the image surface to the portion being copied, the larger the benefit. - -Floating-point conversion (3x faster) -------------------------------------- - xlib-rgba pattern_create_radial-16 27.75 -> 3.93 : 2.94x speedup -██ -image-rgb pattern_create_radial-16 26.06 -> 3.74 : 2.90x speedup -█▉ - -Thanks to Daniel Amelang, (and others who had contributed the idea -earlier), for this nice improvement in the speed of converting -floating-point values to fixed-point. - -Text rendering (1.3 - 2x faster) ------------------------------- - xlib-rgba text_image_rgba_source-256 319.73 -> 62.40 : 2.13x speedup -█■-image-rgb text_solid_rgba_over-64 2.85 -> 0.88 : 1.35x speedup -â– - -I don't think we've ever set out to improve text performance -specifically, but we did it a bit anyway. I believe the extra -improvement in the xlib backend is due to Monty's image copying fix -above, and the rest is due to the floating-point conversion speedup. - -Thin stroke improvements (1.5x faster) ---------------------------------------------- -image-rgb world_map-800 1641.09 -> 414.77 : 1.65x speedup -â–‹ - xlib-rgba world_map-800 1939.66 -> 529.94 : 1.52x speedup -â–Œ - -The most modest stuff to announce in this release is the 50% -improvement I made in the world_map case. This is in improvement that -should help basically anything that is doing strokes with many -straight line segments, (and the thinner the better, since that makes -tessellation dominate rasterization). The fixes here are to use a -custom quadrilateral tessellator rather than the generic tessellator -for straight line segments and the miter joins. - -Performance results from the Nokia 770 --------------------------------------- - xlib-rgba subimage_copy-512 55.88 -> 2.04 : 27.34x speedup -██████████████████████████■- xlib-rgb text_image_rgb_over-256 1487.58 -> 294.43 : 5.05x speedup -████ -image-rgb pattern_create_radial-16 187.13 -> 91.86 : 2.04x speedup -â–ˆ - xlib-rgba world_map-800 21261.41 -> 15628.02 : 1.36x speedup -â– - -Here we see that the subimage_copy improvement was only about half as -large as the corresponding improvement on my laptop, (27x faster -compared to 54x) and the floating-point conversion fix also was quite -as significant, (2x compared to 3x). Oddly the improvement to text -rendering performance was more than twice as good (5x compared to -2x). I don't know what the reason for that is, but I don't think it's -anything anybody should complain about. - -Release 1.2.6 (2006-11-02 Behdad Esfahbod ) -============================================================== -This is the third bug fix release in the 1.2 series, coming less than -two months after the 1.2.4 release made on August 18. - -The 1.2.4 release turned out to be a pretty solid one, except for a crasher -bug when forwarding an X connection where the client and the server have -varying byte orders, eg. from a PPC to an i686. Other than that, various -other small bugs have been fixed. - -Various improvements have been made in the testing infrastructure to prevent -false positives, and to make sure the generated cairo shared object behaves as -expected in terms of exported symbols and relocations. - -There were a total of 89 changes since 1.2.4. The following list the most -important ones: - -Common fixes ------------- -- Avoid unsigned loop control variable to eliminate infinite, - memory-scribbling loop. (#7593) -- Fix cairo_image_surface_create to report INVALID_FORMAT errors. - Previously the detected error was being lost and a nil surface was - returned that erroneously reported CAIRO_STATUS_NO_MEMORY. -- Change _cairo_color_compute_shorts to not rely on any particular - floating-point epsilon value. (#7497) -- Fix infinite-join test case (bug #8379) -- Pass correct surface to create_similar in _cairo_clip_init_deep_copy(). - -PS/PDF fixes ------------- -- Fix Type 1 embedding in PDF. -- Correct the value of /LastChar in the PDF Type 1 font dictionary. -- Improve error checking in TrueType subsetting. -- Compute right index when looking up left side bearing. (bug #8180) -- Correct an unsigned to signed conversion problem in truetype subsetting - bbox. -- Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs. -- Add cairo version to PS header / PDF document info dictionary. -- Set CTM before path construction. - -Win32 fixes ------------ -- Get correct unhinted outlines on win32. (bug 7603) -- Make cairo as a win32 static library possible. -- Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too. - -Build system fixes ------------------- -- Define WINVER if it's not defined. (bug 6456) -- Fix the AMD64 final link by removing SLIM from pixman. -- Misc win32 compilation fixes. -- Add Sun Pro C definition of pixman_private. -- Use pixman_private consistently as prefix not suffix. -- Added three tests check-plt.sh, check-def.sh, and check-header.sh that check - that the shared object, the .def file, and the public headers agree about - the exported symbols. -- Require pkg-config 0.19. (#8686) - - -Release 1.2.4 (2006-08-18 Carl Worth ) -========================================================= -This is the second bug fix release in the 1.2 series, coming less than -two weeks after the 1.2.2 release made on August 8. - -The big motivation for a quick release was that there were a log of -build system snags that people ran into with the 1.2.2 release. But, -by the time we got those all done, we found that we had a bunch of -fixes for cairo's rendering as well. So there's a lot of goodness in -here for such a short time period. - -Rendering fixes ---------------- -Fix image surfaces to not be clipped when used as a source (Vladimir Vukicevic) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=72e25648c4c4bc82ddd938aa4e05887a293f0d8b - -Fix a couple of corner cases in dashing degenerate paths (Jeff Muizelaar) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=fbb1758ba8384650157b2bbbc93d161b0c2a05f0 - -Fix support for type1 fonts on win32 (Adrian Johnson) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=da1019c9138695cb838a54f8b871bbfd0e8996d7 - -Fix assertion failure when rotating bitmap fonts (Carl Worth) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9 - -Fix assertion failure when calling cairo_text_path with bitmap fonts (Carl Worth) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9878a033531e6b96b5f27e69e10e90dee7440cd9 - -Fix mis-handling of cairo_close_path in some situations (Tim Rowley, Carl Worth) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=53f74e59faf1af78f2f0741ccf1f23aa5dad4efc - -Respect font_matrix translation in _cairo_gstate_glyph_path (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f183b835b111d23e838889178aa8106ec84663b3 - -Fix vertical metrics adjustment to work with non-identity shapes (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7bc263842a798d657a95e539e1693372448837f - -[PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=d47388ad759b0a1a0869655a87d9b5eb6ae2445d - -Build system fixes ------------------- -Fix xlib detection to prefer pkg-config to avoid false libXt dependency (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=0e78e7144353703cbd28aae6a67cd9ca261f1d68 - -Fix typos causing win32 build problem with PS,PDF, and SVG backends (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=aea83b908d020e26732753830bb3056e6702a774 - -Fix configure cache to not use stale results (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e - -Fix to not pass unsupported warning options to the compiler (Jens Granseuer) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=97524a8fdb899de1ae4a3e920fb7bda6d76c5571 - -Fix to allow env. variables such as png_REQUIRES to override configure detection (Jens Granseuer) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=abd16e47d6331bd3811c908e524b4dcb6bd23bf0 - -Fix test suite to not use an old system cairo when converting svg2png (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6122cc85c8f71b1ba2df3ab86907768edebe1781 - -Fix test suite to not require signal.h to be present (Behdad Esfahbod) -http://gitweb.freedesktop.org/?p=cairo;a=commit;h=6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40 - -Code cleanups -------------- -Many useful warnings cleanups from sparse, valgrind, and careful eyes -(Kjartan Maraas, Pavel Roskin) - -Release 1.2.2 (2006-08-08 Carl Worth ) -========================================================= -This is the first bug fix release in the 1.2 series since the original -1.2.0 release made six weeks ago. - -There were some very serious bugs in the 1.2.0 release, (see below), -so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2 -release maintains source and binary compatibility with 1.2.0 and does -not make any API additions. - -Fix crashes with BGR X servers ------------------------------- -With cairo 1.2.0 many people reported problems with all cairo-using -programs, (including all GTK+ programs with GTK+ >= 2.8) immediately -crashing with a complaint about an unsupported image format. This bug -affected X servers that do not provide the Render extension and that -provide a visual with BGR rather than RGB channel order. - -report: https://bugs.freedesktop.org/show_bug.cgi?id=7294 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59 - -Fix the "disappearing text" bug -------------------------------- -With cairo 1.2.0 many people reported that text would disappear from -applications, sometimes reappearing with mouse motion or -selection. The text would disappear after the first space in a string -of text. This bug was caused by an underlying bug in (very common) X -servers, and only affected text rendered without antialiasing, (either -a bitmap font or a vector font with antialiasing disabled). The bug -was also exacerbated by a KDE migration bug that caused antialiasing -to be disabled more than desired. - -report: https://bugs.freedesktop.org/show_bug.cgi?id=7494 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14 -see also: -Xorg: https://bugs.freedesktop.org/show_bug.cgi?id=7681 -KDE: http://qa.mandriva.com/show_bug.cgi?id=23990 - -Fix broken image fallback scaling (aka. "broken printing") ----------------------------------------------------------- -The various "print" backends, (pdf, ps, and svg), sometimes fallback -to using image-based rendering for some operations. In cairo 1.2.0 -these image fallbacks were scaled improperly. Applications using cairo -can influence the resolution of the image fallbacks with -cairo_surface_set_fallback_resolution. With the bug, any value other -than 72.0 would lead to incorrect results, (larger values would lead -to increasingly shrunken output). - -report: https://bugs.freedesktop.org/show_bug.cgi?id=7533 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb - -Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod) ----------------------------------------------------------------------------- -The 1.2.0 release introduced an inadvertent change to how the -translation components of a font matrix are interpreted. In the 1.0 -series, font matrix translation could be used to offset the glyph -origin, (though glyph metrics were reported incorrectly in -1.0). However in 1.2.0, the translation was applied to the advance -values between each glyph. The 1.2.0 behavior is fairly useless in -practice, and it was not intentional to introduce a semantic -change. With 1.2.2 we return to the 1.0 semantics, with a much better -implementation that provides correct glyph metrics. - -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051 - -Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod) -------------------------------------------------------------------------------------- -There has been a long-standing issue with cairo_surface_create_similar -such that font options and other settings from the original -destination surface would not be preserved to the intermediate -"similar" surface. This could result in incorrect rendering -(particularly with respect to text hinting/antialiasing) with -fallbacks, for example. - -report: https://bugs.freedesktop.org/show_bug.cgi?id=4106 -fixes: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0 - http://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec - -xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic) ----------------------------------------------------------------------------- -Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0 -caused a significant performance regression when using the xlib -backend. This performance regression was particularly noticeable when -doing lots of text rendering and when using a high-latency connection -to the X server, (such as a remote X server over an ssh -connection). The slowdown was identified and fixed in 1.2.2. - -report: https://bugs.freedesktop.org/show_bug.cgi?id=7514 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c - -PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson) -------------------------------------------------------------------------- -The cairo 1.2 series adds a supported pdf backend to cairo. In cairo -1.2.0 this backend required the freetype library, which was an -undesirable dependency on systems such as win32, (cairo is designed to -always prefer the "native" font system). As of cairo 1.2.2 the -freetype library is not required to use the pdf backend on the win32 -platform. - -report: https://bugs.freedesktop.org/show_bug.cgi?id=7538 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691 - -PDF: Fix broken output on amd64 (Adrian Johnson) ------------------------------------------------- -report: http://bugzilla.gnome.org/show_bug.cgi?id=349826 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60 - -PS: Fix broken output for truetype fonts > 64k (Adrian Johnson) ---------------------------------------------------------------- -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94 - -PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop) ------------------------------------------------------------- -Kent notices that with the PDF backend in cairo 1.2.0 as soon as a -stroke was performed with dashing, all subsequent strokes would also -be dashed. There was no way to turn dashing off again. - -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256 - -Fix memory leaks in failure paths in gradient creation (Alfred Peng) --------------------------------------------------------------------- -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2 - -Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson) ------------------------------------------------------------- -report: https://bugs.freedesktop.org/show_bug.cgi?id=7766 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd - -Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng) ------------------------------------------------------------------------------ -report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6 - -Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron) -------------------------------------------------------------------------------------- -report: https://bugs.freedesktop.org/show_bug.cgi?id=7483 -fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235 - -Various memory leak fixes -------------------------- -Fix memory leak in _cairo_surface_show_glyphs (bug 7766) -Fix file handle leak in failure path (bug 7616) -Fix some memory leaks in the test cases. -Fix some memory leaks in font subsetting code used in print backends. - -Documentation improvements (Behdad Esfahbod) --------------------------------------------- -Added new documentation for several functions (cairo_show_page, -cairo_copy_page, cairo_in_stroke, cairo_in_fill). - -Fixed some syntax errors that were preventing some existing -documentation from being published. - -Fixed several minor typographical errors. - -Added an index for new symbols in 1.2. - -Release 1.2.0 (2006-06-27 Carl Worth ) -========================================================= -This is the culmination of the work that has gone on within the 1.1 -branch of cairo. - -There has been one API addition since the cairo 1.1.10 snapshot: - - cairo_xlib_surface_get_width - cairo_xlib_surface_get_height - -There's also a new feature without any API change: - - Dots can now be drawn by using CAIRO_LINE_CAP_ROUND with - degenerate sub-paths, (cairo_move_to() followed by either - cairo_close_path() or a cairo_line_to() to the same location). - -And at least the following bugs have been fixed: - - 6759 fontconfig option AntiAlias doesn't work in cairo 1.1.2 - 6955 Some characters aren't displayed when using xlib (cache u... - 7268 positive device_offset values don't work as source - * PDF emit_glyph function needs to support bitmapped glyphs - * PS emit_glyph function needs to support bitmapped glyphs - * SVG emit_glyph function needs to support bitmapped glyphs - * PDF: minefield page one is falling back unnecessarily - * PS/PDF: Fix broken placement for vertical glyphs - * PS: Fix to not draw BUTT-capped zero-length dash segments - * Do device offset before float->fixed conversion - http://bugzilla.gnome.org/show_bug.cgi?id=332266 - * PS: Fix source surfaces with transformations - * PS: Fix to not draw BUTT-capped degnerate sub-paths - * PS: Don't walk off end of array when printing "~>" - * Fix some memory leaks in the test suite rig - * SVG: Fix memory leak when using cairo_mask - * Fix EXTEND_REFLECT and EXTEND_PAD to not crash (though these are - still not yet fully implemented for surface patterns). - -This has been a tremendous effort by everyone, and I'm proud to have -been a part of it. Congratulations to all contributors to cairo! - -Snapshot 1.1.10 (2006-06-16 Carl Worth ) -=========================================================== -This is the fifth in a series of snapshots working toward the 1.2 -release of cairo. - -The primary motivation for this snapshot is to fix a long-standing bug -that had long been silent, but as of the 1.1.8 snapshot started -causing crashes when run against 16-bit depth X servers, (often Xvnc -or Xnest). The fix for this adds a new CAIRO_FORMAT_RGB16_565 to the -API. - -This snapshot also includes a rewrite of cairo's SVG backend to -eliminate the dependency on libxml2. With this in place, cairo 1.2 -will not depend on any libraries that cairo 1.0 did not. - -As usual, there are also a few fixes for minor bugs. - -Snapshot 1.1.8 (2006-06-14 Carl Worth ) -========================================================== -This is the fourth in a series of snapshots working toward the 1.2 -release of cairo. At this point, all major features of the 1.2 release -are in place, leaving just a few bug fixes left. - -In particular, there well be no additional API changes between this -1.1.8 snapshot and the 1.2 release. - -The announcement for 1.1.6 mentioned several API changes being -considered. Only one of these changes was actually implemented -(set_dpi -> fallback_resolution). This change does introduce one -source-level incompatibility with respect to previous 1.1.x snapshots, -so see below for details. - -Here is an abbreviated summary of changes since the 1.1.6 snapshot: - -** API Change ** ----------------- -According to the plan mentioned in the 1.1.6 notes, one source-level -incompatible change has been implemented. The following three -functions have been removed from cairo's API: - - cairo_pdf_surface_set_dpi - cairo_ps_surface_set_dpi - cairo_svg_surface_set_dpi - -and in their place the following function has been added: - - cairo_surface_set_fallback_resolution - -The signature and semantics of the function remains the same, so it is -a simple matter of changing the name of the function when calling -it. As a transition mechanism, this snapshot will (on many systems) -build to include the old symbols so that code previously compiled will -still run. However, all source code using the old names must be -updated before it will compile. And the upcoming 1.2 release is not -anticipated to include the old symbols. - -Finally, it should be pointed out that the old symbols never existed -in the supported API of any stable release of cairo. (In the stable -1.0 releases the PDF, PS, and SVG backends were advertised as -experimental and unstable.) - -And, as always, cairo continues to maintain source and binary -compatibility between major releases. So applications compiled against -supported backends in a stable release of cairo (1.0.4 say) will -continue to compile and run without modification against new major -releases (1.2.0 say) without modification. - -API additions -------------- -The following new functions have been added to cairo's API: - - cairo_surface_get_content - cairo_debug_reset_static_data - cairo_image_surface_get_data - cairo_image_surface_get_format - cairo_image_surface_get_stride - cairo_win32_font_face_create_for_hfont - -New, backend-specific pkg-config files --------------------------------------- -In addition to the original cairo.pc file, cairo will also now install -a pkg-config files for each configured backend, (for example -cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this -also includes optional font backends (such as cairo-ft.pc) and the -optional png functionality (cairo-png.pc). - -These new pkg-config files should be very convenient for allowing -cairo-using code to easily check for the existing of optional -functionality in cairo without having to write complex rules to grub -through cairo header files or the compiled library looking for -symbols. - -Printing backend (PS, PDF, and SVG) ------------------------------------ -Improving the quality of the "printing" backends has been a priority -of the development between cairo 1.1.6 and cairo 1.1.8. - -The big improvement here is in the area of text output. Previously, at -best, text was output as paths without taking advantage of any font -support available in the output file format. - -Now, at the minimum text paths will be shared by using type3 fonts -(for PS and PDF---and similarly, defs for SVG). Also, if possible, -type3 and truetype fonts will be embedded in PostScript and PDF -output. There are still some known bugs with this, (for example, -selecting text in a cairo-generated PDF file with an embedded truetype -font does not work). So there will be some more changes in this area -before cairo 1.2, but do try test this feature out as it exists so -far. - -Many thanks to Kristian Høgsberg for the truetype and type1 font -embedding. - -win32 backend -------------- -Performance improvements by preferring GDI over pixman rendering when possible. -Fixes for text rendering. - -xlib backend ------------- -Fix potentially big performance bug by making xlib's create_similar -try harder to create a pixmap of a depth matching that of the screen. - -Bug fixes ---------- -Among various other fixes, the following bugs listed in bugzilla have -been fixed: - - Bug 2488: Patch to fix pixman samping location bug (#2488). - https://bugs.freedesktop.org/show_bug.cgi?id=2488 - - Bug 4196: undef MIN an MAX before defining to avoid duplicate definition - https://bugs.freedesktop.org/show_bug.cgi?id=4196 - - Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version - https://bugs.freedesktop.org/show_bug.cgi?id=4723 - - Bug 4882: Flag Sun's X server has having buggy_repeat. - https://bugs.freedesktop.org/show_bug.cgi?id=4882 - - Bug 5306: test/pdf2png: Add missing include of stdio.h - https://bugs.freedesktop.org/show_bug.cgi?id=5306 - - Bug 7075: Fix make clean to remove cairo.def - https://bugs.freedesktop.org/show_bug.cgi?id=7075 - -(Many thanks to Behdad Esfahbod for helping us track down and fix many -of these.) - -Snapshot 1.1.6 (2006-05-04 Carl Worth ) -========================================================== -This is the third in a series of snapshots working toward the imminent -1.2 release of cairo. For a list of items still needing work on the -cairo 1.2 roadmap, please see: - - http://cairographics.org/ROADMAP - -As can be seen in that list, there are no longer any API additions -left on the roadmap. Instead, there is a feature (PDF type 3 fonts) a -performance optimization (X server gradients) and a list of bug -fixes. This gives us a fair amount of freedom to cut the 1.2 release -at almost any point by deciding to defer remaining bug fixes to -subsequent maintenance releases such as 1.2.2 and 1.2.4. - -Before we will do that, we must first be wiling to commit to all the -new API additions. As a heads-up, there are a couple of potential API -changes being considered. (Note that these are changes to new API -introduced during 1.1 so these will not introduce API -incompatibilities compared to the stable 1.0 series). The changes -being considered are: - - cairo_get_group_target: may acquire x and y offset return - parameters. May also be eliminated in favor of - cairo_get_target assuming its role - - cairo_pdf_surface_set_dpi: - cairo_ps_surface_set_dpi: - cairo_svg_surface_set_dpi: These functions may be removed in favor - of a new cairo_surface_set_fallback_resolution - -Additionally there is the possibility of a slight change in the -semantics of cairo_set_line_width. We believe the current behavior of the sequence: - - cairo_set_line_width; ... change CTM ...; cairo_stroke; - -is buggy. It is currently behaving the same as: - - ... change CTM ...; cairo_set_line_width; cairo_stroke; - -We are considering fixing this bug before 1.2 with the hope that -nobody is already relying on the buggy behavior described here. Do -shout if you suspect you might be in that position. - -The items included in this snapshot (since the 1.1.4 snapshot) are -described below. - -API additions -------------- -The long-awaited group-rendering support is now available with the -following function calls: - - cairo_push_group - cairo_push_group_with_content - cairo_pop_group - cairo_pop_group_to_source - cairo_get_group_target - -This API provides a much more convenient mechanism for doing rendering -to an intermediate surface without the need to manually create a -temporary cairo_surface_t and a temporary cairo_t and clean them up -afterwards. - -Add the following missing get function to complement -cairo_surface_set_device_offset: - - cairo_surface_get_device_offset - -PDF backend (API addition) --------------------------- -The PDF backend now provides for per-page size changes, (similar to -what the PostScript backend got in the 1.1.4 snapshot). The new API -is: - - cairo_pdf_surface_set_size - -Xlib backend (API additions) ----------------------------- -The following functions have been added to allow the extraction of -Xlib surface: - - cairo_xlib_surface_get_display - cairo_xlib_surface_get_drawable - cairo_xlib_surface_get_screen - cairo_xlib_surface_get_visual - cairo_xlib_surface_get_depth - -XCB backend (experimental) --------------------------- -Update backend so that it now compiles with the recent XCB 0.9 release. - -Bug fixes and memory leak cleanup ---------------------------------- -Various little things, nothing too significant though. - -Snapshot 1.1.4 (2006-05-03 Carl Worth ) -========================================================== -This is the second in a series of snapshots working toward the -upcoming 1.2 release of cairo. For a list of items still needing work -on the cairo 1.2 roadmap, please see: - - http://cairographics.org/ROADMAP - -The items included in this snapshot (since the 1.1.2 snapshot) are -described below. - -PostScript backend: new printing-oriented API ---------------------------------------------- -We anticipate that with cairo 1.2, toolkits will begin to use cairo -for printing on systems that use PostScript as the spool format. To -support this use case, we have added 4 new function calls that are -specific to the PostScript backend: - - cairo_ps_surface_set_size - cairo_ps_surface_dsc_comment - cairo_ps_surface_dsc_begin_setup - cairo_ps_surface_dsc_begin_page_setup - -These functions allow variation of the page size/orientation from one -page to the next in the PostScript output. They also allow the toolkit -to provide per-document and per-page printer control options in a -device-independent way, (for example, by using PPD options and -emitting them as DSC comments into the PostScript output). This should -allow toolkits to provide very fine-grained control of many options -available in printers, (media size, media type, tray selection, etc.). - -SVG backend: builds by default, version control ------------------------------------------------ -The SVG backend continues to see major improvements. It is expected -that the SVG backend will be a supported backend in the 1.2 -release. This backend will now be built by default if its dependencies -(freetype and libxml2) are met. - -Additionally, the SVG backend now has flexibility with regard to what -version of SVG it targets. It will target SVG 1.1 by default, which -will require image fallbacks for some of the "fancier" cairo -compositing operators. Or with the following new function calls: - - cairo_svg_surface_restrict_to_version - cairo_svg_get_versions - cairo_svg_version_to_string - -it can be made to target SVG 1.2 in which there is native support for -these compositing operators. - -Bug fixes ---------- -At least the following bugs have been fixed since the 1.1.2 snapshot: - -crash at XRenderAddGlyphs -https://bugs.freedesktop.org/show_bug.cgi?id=4705 - -Can't build cairo-1.1.2 on opensolaris due to " void function cannot return value" -https://bugs.freedesktop.org/show_bug.cgi?id=6792 - -Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185 -https://bugzilla.mozilla.org/show_bug.cgi?id=336129 - -A couple of memory leaks. - -Snapshot 1.1.2 (2006-04-25 Carl Worth ) -========================================================== -This is the first in a series of snapshots working toward the upcoming -1.2 release of cairo. (Subsequent snapshot will use successive even -numbers for the third digit, 1.1.4, 1.1.6, etc.) This snapshot is -backwards-compatible with the 1.0 series---it makes a few API -additions but does not remove any API. - -PostScript and PDF backends are no longer "experimental" --------------------------------------------------------- -The major theme of the 1.2 release is improved PostScript and PDF -backends for cairo. Unlike the 1.0 series, in the 1.2 series these -backends will not be marked as experimental and will be enabled by -default. We encourage people to test this snapshot and the PS/PDF -backends in particular as much as possible. - -The PostScript and PDF output is not yet ideal. - - * One major problem with the PostScript output is that image - fallbacks are used more often than strictly necessary, and the - image fallbacks are at a lower resolution than desired, (the - cairo_ps_surface_set_dpi call is ignored). - - * The major drawback of the current PDF backend implementation is - its text support. Every glyph is represented by a filled path in - the PDF file. The causes file sizes to be much larger and - rendering to be much slower than desired. - -It is anticipated that both of these shortcomings will see some -improvements before the final 1.2 release. - -In spite of those shortcomings, we hope that the PS and PDF backends -will yield faithful results for pretty much any cairo operations you -can throw at them. Please let us know if you are getting obviously -"different" results from the PS/PDF backends than from the image or -xlib backends. - -Other new experimental backends -------------------------------- -This snapshot includes three new backends that did not exist in the -1.0 series: - - * beos backend - - * directfb backend - - * svg backend - -These are all currently marked "experimental" and are disabled by -default. But the SVG backend in particular has seen a lot of recent -development and is very close to passing the entire cairo test -suite. It is possible that this backend will become a fully supported -backend by the time of the cairo 1.2 release. - -Public API additions --------------------- -There have been a few new API functions added to cairo, including: - -New get_type functions for querying sub-types of object: - - cairo_surface_get_type - cairo_pattern_get_type - cairo_font_face_get_type - cairo_scaled_font_get_type - -More convenience in working with cairo_scaled_font_t with new getter -functions: - - cairo_scaled_font_get_font_face - cairo_scaled_font_get_font_matrix - cairo_scaled_font_get_ctm - cairo_scaled_font_get_font_options - -As well as a convenience function for setting a scaled font into a -cairo context: - - cairo_set_scaled_font - -and a function to allow text extents to be queried directly from a -scaled font, (without requiring a cairo_surface_t or a cairo_t): - - cairo_scaled_font_text_extents - -These new scaled font functions were motivated by the needs of the -pango library. - -Finally, a new path-construction function was added which clears the -current point in preparation for a new sub path. This makes cairo_arc -easier to use in some situations: - - cairo_new_sub_path - -Before the 1.2 release is final we do still plan a few more API -additions specifically motivated by the needs of Mozilla/Firefox. - -Optimizations and bug fixes ---------------------------- -Shortly after the 1.0 maintenance series branched off the mainline -there was a major rework of the cairo font internals. This should -provide some good performance benefits, but it's also another area -people should look at closely for potential regressions. - -There has not yet been any widespread, systematic optimization of -cairo, but various performance improvements have been made, (and some -of them are fairly significant). So if some things seem faster than -1.0 then things are good. If there are any performance regressions -compared to 1.0 then there is a real problem and we would like to hear -about that. - -There has been a huge number of bug fixes---too many to mention in -detail. Again, things should be better, and never worse compared to -1.0. Please let us know if your testing shows otherwise. - -Release 1.0.2 (2005-10-03 Carl Worth ) -========================================================= -For each bug number XXXX below, see: - - https://bugs.freedesktop.org/show_bug.cgi?id=XXXX - -for more details. - -General bug fixes ------------------ - * 4408 - Add support for dashing of stroked curves - (Carl Worth) - - * 4409 - Fix dashing so that each dash is capped on both ends - (Carl Worth) - - * 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags) - (Sebastien Bacher, Billy Biggs) - - * 4299 - Fix crashes with text display in multi-threaded program - (Alexey Shabalin, Carl Worth) - - * 4401 - Do not use sincos function since it is buggy on some platforms) - (Tim Mooney, Carl Worth) - - * 4245 - Fix several bugs in the test suite exposed by amd64 systems - (Seemant Kulleen, Carl Worth) - - * 4321 - Add missing byteswapping on GetImage/PutImage - (Sjoerd Simons, Owen Taylor) - - * 4220 - Make the check for rectangular trapezoids simpler and more accurate - (Richard Stellingwerff, Owen Taylor) - - * 4260 - Add missing channel-order swapping for antialised fonts - (Barbie LeVile, Owen Taylor) - - * 4283 - Fix compilation failure with aggressive inlining (gcc -O3) - (Marco Manfredini, Owen Taylor) - - * 4208 - Fix some warnings from sparse - (Kjartan Maraas, Billy Biggs) - - * 4269 - Fix to not crash when compiled with -fomit-frame-pointer - (Ronald Wahl, Owen Taylor) - - * 4263 - Improve performance for vertical gradients - (Richard Stellingwerff, Owen Taylor) - - * 4231 - * 4298 - Accomodate gentoo and Mandriva versions in X server vendor string check - (Billy Biggs, Frederic Crozat, Owen Taylor) - -win32-specific fixes --------------------- - * 4599 - Fix "missing wedges" on some stroked paths (win32) - (Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard) - - * 4612 - Fix disappearing text if first character out of surface (win32) - (Tim Rowley) - - * 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32) - Aka. the "white rectangles" bug from mozilla-svg testing - (Tim Rowley) - - * Various portability improvements for win32 - (Hans Breuer, Owen Taylor, Carl Worth) - - * 4593 - Fix font sizes to match user expectations (win32) - (Tor Lillqvist, Owen Taylor) - - * 3927 - Fix to report metrics of size 0 for glyph-not-available (win32) - (Hans Breuer, Owen Taylor, Tor Lillqvist) - - * Add locking primitives for win32 - (Hans Breuer) - -xlib-specific fixes -------------------- - * Fix crash from size-0 pixmap due to empty clip region (xlib) - (Radek Doulík, Carl Worth) - -Release 1.0.0 (2005-08-24 Carl Worth ) -========================================================= -Experimental backends ---------------------- - * The Glitz, PS, PDF, Quartz, and XCB backends have been declared - experimental, and are not part of the API guarantees that accompany - this release. They are not built by default, even when the required - libraries are available, and must be enabled explicitly with - --enable-ps, --enable-pdf, --enable-quartz or --enable-xcb. - - It is very painful for us to be pushing out a major release without - these backends enabled. There has been a tremendous amount of work - put into each one and all are quite functional to some - extent. However, each also has some limitations. And none of these - backends have been tested to the level of completeness and - correctness that we expect from cairo backends. - - We do encourage people to experiment with these backends and report - success, failure, or means of improving them. - -Operator behavior ------------------ - * Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators - behaved in an inconsistent and buggy fashion and could affect areas - outside the clip mask. In 0.9.0, these six "unbounded" operators - were fixed to consistently clear areas outside the shape but within - the clip mask. This is useful behavior for an operator such as IN, - but not what was expected for SOURCE and CLEAR. So, in this release - the behavior of SOURCE and CLEAR has been changed again. They now - affect areas only within both the source and shape. We can write - the new operators as: - - SOURCE: dest' = (mask IN clip) ? source : dest - CLEAR: dest' = (mask IN clip) ? 0 : dest - -Behavior and API changes ------------------------- - * Setting the filter on a gradient pattern would change the - interpolation between color stops away from the normal linear - interpolation. This dubious behavior has been removed. - - * The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros -- - implementation details that leaked into cairo.h -- have been moved - into an internal header. - - * The cairo_show_text function now advances the current point - according to the total advance values of the string. - -API additions -------------- - * cairo_set_dash can now detect error and can set - CAIRO_STATUS_INVALID_DASH. - -Features --------- - * When compiled against recent versions of fontconfig and FreeType, - artificial bold fonts can now be turned on from fonts.conf using - the FC_EMBOLDEN fontconfig key. - -Optimization ------------- - * The compositing code from the 'xserver' code tree has now been - completely merged into libpixman. This includes MMX optimization of - common operations. - - * The image transformation code in libpixman has been improved and - now performs significantly faster. - -Bug fixes ---------- - * Several crashes related to corruption in the font caches have been - fixed. - - * All test cases now match pixel-for-pixel on x86 and PPC; this - required fixing bugs in the compositing, stroking, and pattern - rendering code. - - * Negative dash offsets have been fixed to work correctly. - - * The stroking of paths with mutiple subpaths has now been fixed to - apply caps to all subpaths rather than just the last one. - - * Many build fixes for better portability on various systems. - - * Lots of other bug fixes, but we're too tired to describe them in - more detail here. - -Release 0.9.2 (2005-08-13 Carl Worth ) -========================================================= -Release numbering ------------------ - * You will notice that this release jumped from 0.9.0 to 0.9.2. We've - decided to use an odd micro version number (eg. 0.9.1) to indicate - in-progress development between releases. As soon as 0.9.2 is - tagged, the version will be incremented in CVS to 0.9.3 where it - will stay until just before 0.9.4 is built, uploaded, and tagged. - - So, even-micro == a released version, odd-micro == something in-between. - -Libpixman dependency dropped ----------------------------- - * As of this release, the dependency on an external libpixman has - been dropped. Instead, the code from libpixman needed for cairo has - been incorporated into the cairo source tree. The motivation for - this change is that while cairo's API is stable and ready to be - maintained after the 1.0 release, libpixman's API is not, so we do - not want to expose it at this time. - - Also, the incorporation of libpixman into cairo also renames all - previously-public libpixman symbols in order to avoid any conflict - with a future release of libpixman - -API additions -------------- - * Macros and functions have been added so that the version of cairo - can be queried at either compile-time or at run-time. The version - is made available as both a human-readable string and as a single - integer: - - CAIRO_VERSION_STRING eg. "0.9.2" - CAIRO_VERSION eg. 000902 - - const char* - cairo_version_string (void); /* eg. "0.9.2" */ - - int - cairo_version (void); /* eg. 000902 */ - - A macro is provided to convert a three-part component version into - the encoded single-integer form: - - CAIRO_VERSION_ENCODE(X,Y,Z) - - For example, the CAIRO_VERSION value of 000902 is obtained as - CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version - comparisons easy, either at compile-time: - - #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(0,9,2) - ... - #endif - - Or at run-time: - - if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ } - -Thread safety -------------- - * This release adds pthread-based locking (when available) to make - the caches used by cairo safe for threaded programs. Some may - remember a failed experiment with this locking between the 0.5.1 - and 0.5.2 snapshots, (where even single-threaded programs that - linked with -lpthread would deadlock). We believe that that problem - has been fixed, so we are looking forward to testing and reports - from users with threaded applications. - -Bug fixes ---------- - * The XCB and Quartz backends failed to compiled in the 0.9.0 release - due to minor syntax errors. These have now been fixed. - - * Various crashes in glitz and pixman due to size 0 glyphs have been - fixed. - -Release 0.9.0 (2005-08-08 Carl Worth ) -========================================================= -Soname change -------------- - * In all prior snapshots, the libtool library versioning was set to - 1:0:0. As this release is intended to mark the beginning of - backwards-compatible releases, the versioning has been incremented - to 2:0:0. You will notice that the numeric extension on the - installed library filename will change similarly. - - This change will also require all cairo-using applications to be - recompiled. We recognize that this may cause some frustration since - this release is backwards-compatible with 0.6.0 and in that sense - "shouldn't" require re-compilation. However, since all historical - snapshots have used the same 1:0:0 version in spite of incompatible - API changes between them, it was essential that the upcoming 1.0 - release series have distinct library versioning. - - All future releases will use the library versioning to properly - indicate compatibility between releases. So, any application - re-compiled now to work with the 0.9.0 will not need to be - recompiled when a compatible 1.0 release of cairo is made in the - future. - -API additions -------------- - * Add new function calls to set/get the current antialiasing mode in - the graphics state: - - cairo_set_antialias - cairo_get_antialias - - This call accepts the same modes recently added for font options - (NONE or GRAY) but affects the rendering of geometry other than - text. The intent of this call is to enable more precise control of - which pixels are affected by each operation, for example to allow - for full-scene antialiasing for seam-free rendering. It is not - expected that non-antialiased rendering will perform better than - anti-aliased rendering. - - * Three new functions were added to provide support for mixed cairo- - and non-cairo drawing to the same surface: - - cairo_surface_mark_dirty - cairo_surface_mark_dirty_rectangle - cairo_surface_flush - - * The return type of the several "reference" functions was change, - (API compatibly), from void to the same type as the argument. The - affected functions are: - - cairo_font_face_reference - cairo_scaled_font_reference - cairo_pattern_reference - cairo_surface_reference - cairo_reference - - This allows a convenient way to assign and reference in a single - statement. - -Semantic changes ----------------- - * The behavior of cairo_set_source with a pattern with a non-identity - matrix was previously not well-defined. The new behavior is as - follows: - - The pattern's transformation matrix will be locked to the - user space in effect at the time of cairo_set_source(). This means - that further modifications of the CTM will not affect the source - pattern. - -cairo-win32 ------------ - * Some portability improvements, (eg. workaround for missing stdint.h). - -cairo-ft --------- - * Updated to allow compilation with older versions of freetype. - -Bug fixes ---------- - * Fix the unbounded operators to actually produce a correct result, - (previously the results were artificially restricted to the - bounding box of whatever shape was being drawn rather than - extending out infinitely). The fixed operators are: - - CAIRO_OPERATOR_CLEAR - CAIRO_OPERATOR_SOURCE - CAIRO_OPERATOR_OUT - CAIRO_OPERATOR_IN - CAIRO_OPERATOR_DEST_IN - CAIRO_OPERATOR_DEST_ATOP - - * Fix cairo_mask and cairo_mask_surface to transform the mask by the - current transformation matrix (CTM). - - * Fix cairo_set_source to lock the CTM used to transform the pattern. - - * Workaround for X server Render bug involving repeating patterns - with a general transformation matrix. - - * cairo_get_font_face fixed to return a "nil" font face object rather - than NULL on error. - - * cairo_set_font_face fixed to not crash if given a NULL font face, - (which is the documented interface for restoring the default font - face). - - * Fix xlib glyphset caching to not try to free a NULL glyph. - -Snapshot 0.6.0 (2005-07-28 Carl Worth ) -========================================================== -API changes ------------ -* The prototypes of the following functions have changed: - - cairo_xlib_surface_create_with_xrender_format - cairo_xlib_surface_create_for_bitmap - - A Screen* parameter has been added to each. This allows the cairo - xlib backend to work correctly with multi-head X servers. - -* The following function has been modified: - - cairo_scaled_font_create - - to accept a cairo_font_options_t*. See below fore more details. - -* All opaque, reference-counted cairo objects have now been moved to a - standard error-handling scheme. The new objects to receive this - treatment are cairo_font_face_t, cairo_scaled_font_t, and - cairo_surface_t. (Previous snapshots already provided this scheme - for cairo_t, cairo_path_t, and cairo_pattern_t.) - - This changes two functions to have a return type of void rather than - cairo_status_t: - - cairo_scaled_font_extent - cairo_surface_finish - - And significantly, none of the create functions for any of the - objects listed above will return NULL. The pointer returned from any - function will now always be a valid pointer and should always be - passed to the corresponding destroy function when finished - - The simplest strategy for porting code is to switch from: - - object = cairo__create (); - if (object == NULL) - goto BAILOUT; - - /* act on object */ - - cairo__destroy (object); - - to: - - object = cairo__create (); - if (cairo__status (object)) - goto BAILOUT; - - /* act on object */ - - cairo__destroy (object); - - But significantly, it is not required to check for an error status - before the "act on object" portions of the code above. All - operations on an object with an error status are, by definition, - no-ops without side effect. So new code might be written in an - easier-to-read style of: - - object = cairo__create (); - - /* act on object */ - - cairo__destroy (object); - - with cairo__status checks placed only at strategic - locations. For example, passing an error object to another object, - (eg. cairo_set_source with an in-error pattern), will propagate the - error to the subsequent object (eg. the cairo_t). This means that - error checking can often be deferred even beyond the destruction of - a temporary object. - -API additions -------------- -* New functions for checking the status of objects that have been - switched to the common error-handling scheme: - - cairo_font_face_status - cairo_scaled_font_status - cairo_surface_status - -* The _cairo_error function which was added in 0.5.1 has now been made - much more useful. In 0.5.1 only errors on cairo_t objects passed - through _cairo_error. Now, an error on any object should pass - through _cairo_error making it much more reliable as a debugging - mechanism for finding when an error first occurs. - -* Added new font options support with a myriad of functions: - - cairo_font_options_create - cairo_font_options_copy - cairo_font_options_destroy - - cairo_font_options_status - - cairo_font_options_merge - cairo_font_options_equal - cairo_font_options_hash - - cairo_font_options_set_antialias - cairo_font_options_get_antialias - cairo_font_options_set_subpixel_order - cairo_font_options_get_subpixel_order - cairo_font_options_set_hint_style - cairo_font_options_get_hint_style - cairo_font_options_set_hint_metrics - cairo_font_options_get_hint_metrics - - cairo_surface_get_font_options - - cairo_ft_font_options_substitute - - cairo_set_font_options - cairo_get_font_options - - This new font options support allows the application to have much - more fine-grained control over how fonts are rendered. - Significantly, it also allows surface backends to have some - influence over the process. For example, the xlib backend now - queries existing Xft properties to set font option defaults. - -* New function: - - cairo_xlib_surface_set_drawable - - which allows the target drawable for an xlib cairo_surface_t to be - changed to another with the same format, screen, and display. This - is necessary in certain double-buffering techniques. - -New features ------------- -* Sub-pixel text antialiasing is now supported. - -Bug fixes ---------- -* Fixed assertion failure in cairo_surface_create_similar when - application commits an error by passing a cairo_format_t rather than - a cairo_content_t. - -* Avoid division by zero in various places (cairo-ft). - -* Fix infinite loop when using non-default visuals (cairo-xlib). - -* Eliminate segfault in cairo_image_surface_create_from_png_stream. - -* Prevent errant sign-extension of masks on 64-bit architectures - (cairo-xlib and cairo-xcb). - -* Other miscellaneous fixes. - -Snapshot 0.5.2 (2005-07-18 Carl Worth ) -========================================================== -API changes ------------ -* New functions for creating patterns of a single color: - - cairo_pattern_create_rgb - cairo_pattern_create_rgba - -* Change cairo_surface_create_similar to accept a new type of - cairo_content_t rather than cairo_format_t: - - typedef enum _cairo_content { - CAIRO_CONTENT_COLOR = 0x1000, - CAIRO_CONTENT_ALPHA = 0x2000, - CAIRO_CONTENT_COLOR_ALPHA = 0x3000 - } cairo_content_t; - -* Add new CAIRO_FORMAT_VALID and CAIRO_CONTENT_VALID macros. - -* Remove unused status value: - - CAIRO_STATUS_NO_TARGET_SURFACE - -* Add new status values: - - CAIRO_STATUS_INVALID_STATUS - -* Require libpixman >= 0.1.5 (for necessary bug fixes) - -Bug fixes ---------- -* Fix cairo_surface_write_to_png for RGB24 images. - -* Fix broken metrics and rendering for bitmap fonts. Add mostly - useless bitmap glyph transformation. - -* Fix glyph caches to not eject entries that might be immediately - needed, (fixing intermittent crashes when rendering text). - -* Fix all memory leaks found by running "make check-valgrind". - -ATSUI backend changes ---------------------- -* Allow building against < 10.3 SDK. - -* Prevent crash on empty strings. - -Glitz backend changes ---------------------- -* Require glitz >= 0.4.4. - -* Use frame buffer objects instead of pbuffers for accelerated - offscreen drawing. - -* Minor improvement to gradient pattern creation. - -PostScript backend fixes ------------------------- -* Rewrite of the PS backend to generate more interesting output that - the old big-image implementation. - -Win32 backend fixes -------------------- -* Implement glyph path support. - -* Fix swap of blue and green values in the fill_rectangles path. - -Xlib backend fixes ------------------- -* Add optimization to use XCopyArea rather than XRenderComposite when - transforming only with an integer translation, and using SOURCE - operator or OVER with a source pattern without alpha. - -Snapshot 0.5.1 (2005-06-20 Carl Worth ) -========================================================== -API changes ------------ -* Removed cairo_status_string(cairo_t*) and add - cairo_status_to_string(cairo_status_t) in its place. Code using - cairo_status_string can be ported forward as follows: - - cairo_status (cr); - -> - cairo_status_to_string (cairo_status (cr)); - -* Removed the BAD_NESTING restriction which means that two different - cairo_t objects can now interleave drawing to the same - cairo_surface_t without causing an error. - -* The following functions which previously had a return type of - cairo_status_t now have a return type of void: - - cairo_pattern_add_color_stop_rgba - cairo_pattern_set_matrix - cairo_pattern_get_matrix - cairo_pattern_set_extend - cairo_pattern_set_filter - - See discussion of cairo_pattern_status below for more details. - -API additions -------------- -* Improved error handling: - - cairo_status_t - cairo_pattern_status (cairo_pattern_t *pattern); - - This snapshot expands the status-based error handling scheme from - cairo_t to cairo_path_t and cairo_pattern_t. It also expands the - scheme so that object-creating functions, (cairo_create, - cairo_pattern_create_*, cairo_copy_path_*), are now guaranteed to - not return NULL. Instead, in the case of out-of-memory these - functions will return a static object with - status==CAIRO_STATUS_NO_MEMORY. The status can be checked with the - functions cairo_status and cairo_pattern_status, or by direct - inspection of the new status field in cairo_path_t. - - Please note that some objects, including cairo_surface_t and all of - the font-related objects have not been converted to this - error-handling scheme. - -* In addition to the above changes, a new private function has been added: - - _cairo_error - - This function can be used to set a breakpoint in a debugger to make - it easier to find programming error in cairo-using code. (Currently, - _cairo_error is called when any error is detected within a cairo_t - context, but is not called for non-cairo_t errors such as for - cairo_path_t and cairo_pattern_t). - -* Fixed cairo_path_data_t so that its enum is visible to C++ code, (as - cairo_path_data_type_t). - -Performance improvements ------------------------- -* Made a minor performance improvement for clipping, (restrict clip - surface to the new intersected bounds). - -* Optimize rendering of a solid source pattern with a pixel-aligned - rectangular path to use backend clipping rather than rasterization - and backend compositing. - -* Optimize cairo_paint_with_alpha to defer to cairo_paint when alpha - is 1.0. - -Bug fixes ---------- -* Fixed memory leak in cairo_copy_path. - -* A build fix for non-srcdir builds. - -PDF backend fixes ------------------ -* New support for path-based clipping. - -* Fix for text rotated to angles other than multiples of Ï€/2. - -Win32 backend fixes -------------------- -* Fix for text extents. - -Xlib backend ------------- -* Implemented a complex workaround for X server bug[*] related to - Render-based compositing with untransformed, repeating source - pictures. The workaround uses core Xlib when possible for - performance, (ie. with CAIRO_OPERATOR_SOURCE or CAIRO_OPERATOR_OVER - with an opaque source surface), and falls back to the pixman - image-based compositing otherwise. - - [*] https://bugs.freedesktop.org/show_bug.cgi?id=3566 - -* Various bug fixes, particularly in the fallback paths. - -Snapshot 0.5.0 (2005-05-17 Carl Worth ) -========================================================== -This is a pretty big, and fairly significant snapshot. It represents -between 2 and 3 months of solid work from a lot of people on improving -the API as much as possible. I'd like to express my appreciation and -congratulations to everyone who has worked on the big API Shakeup, -(whether in email battles over names, or fixing my silly bugs). - -This snapshot will require some effort on the part of users, since -there are a _lot_ of API changes (ie. no cairo program ever written is -safe --- they're all broken now in at least one way). But, in spite of -that, we do encourage everyone to move their code to this snapshot as -soon as possible. And we're doing everything we can think of to make -the transition as smooth as possible. - -The idea behind 0.5 is that we've tried to make every good API change -we could want now, and get them all done with. That is, between now -and the 1.0 release of cairo, we expect very few new API changes, -(though some will certainly sneak in). We will have some significant -additions, but the pain of moving code from cairo 0.4 to cairo 0.5 -should be a one time experience, and things should be much smoother as -we continue to move toward cairo 1.0. - -And with so many changes coming out for the first time in this 0.5 -release, we really do need a lot of people trying this out to make -sure the ideas are solid before we freeze the API in preparation for -the 1.0 release. - -OK, enough introduction. Here is a (not-quite-complete) description of -the API removals, changes and additions in this snapshot, (compared to -0.4.0) - -API removals -============ -The following public functions have been removed: - -- cairo_set_target_* - - This is a big change. See the description of cairo_create in - the API changes section for how to deal with this. - -- cairo_set_alpha - - Alpha blending hasn't gone away; there's just a much more - unified rendering model now. Almost all uses of - cairo_set_alpha will be trivially replaced with - cairo_set_source_rgba and a few others will be replaced just - as easily with cairo_paint_with_alpha. - -- cairo_show_surface - - Another useful function that we realized was muddling up the - rendering model. The replacement is quite easy: - cairo_set_source_surface and cairo_paint. - -- cairo_matrix_create -- cairo_matrix_destroy -- cairo_matrix_copy -- cairo_matrix_get_affine - - These functions supported an opaque cairo_matrix_t. We now - have an exposed cairo_matrix_t structure, so these can be - dropped. - -- cairo_surface_set_repeat -- cairo_surface_set_matrix -- cairo_surface_set_filter - - These properties don't belong on surfaces. If you were using - them, you'll just want to instead use - cairo_pattern_create_for_surface and then set these properties - on the pattern. - -- cairo_copy - - This was a confusing function and hopefully nobody will miss - it. But if you really don't find cairo_save/restore adequate, - let us know and we have another idea for a potential - replacement. - -And while we're on the subject of removals, we carefully tightened up -the cairo header files so they no longer gratuitously include header -files that are not strictly necessary, (stdio.h, stdint.h, pixman.h, -Xrender.h, etc. and their dependencies). This may lead to some -surprising errors, so keep your eyes open for that. - -API changes -=========== -Here are some of the API changes that have occurred: - -~ cairo_create(void) -> cairo_create(cairo_surface_t *) - - This is the big change that breaks every program. The ability - to re-target a cairo_t was not particularly useful, but it did - introduce a lot of muddy semantic questions. To eliminate - that, cairo_create now requires its target surface to be - passed in at creation time. This isn't too hard to cope with - as the typical first operation after cairo_create was often - cairo_set_target_foo. So the order of those two swap and the - application instead has cairo_foo_surface_create, then - cairo_create. - -~ cairo_current_* -> cairo_get_* - - We had a strange mixture of cairo_get and cairo_current - functions. They've all been standardized on cairo_get, (though - note one is cairo_get_current_point). - -~ CAIRO_OPERATOR_SRC -> CAIRO_OPERATOR_SOURCE -~ CAIRO_OPERATOR_OVER_REVERSE -> CAIRO_OPERATOR_DEST_OVER - - Many of the cairo_operator_t symbolic values were renamed to - reduce the amount of abbreviation. The confusing "OP_REVERSE" - naming was also changed to use "DEST_OP" instead which is - easier to read and has wider acceptance in other - libraries/languages. - -~ cairo_set_pattern -> cairo_set_source -~ cairo_set_rgb_color -> cairo_set_source_rgb - - All of the various functions that changed the source - color/pattern were unified to use cairo_set_source names to - make the relation more clear. - -~ cairo_transform_point -> cairo_user_to_device -~ cairo_transform_distance -> cairo_user_to_device_distance -~ cairo_inverse_transform_point -> cairo_device_to_user -~ cairo_inverse_transform_distance -> cairo_device_to_user_distance - - These names just seemed a lot more clear. - -~ cairo_init_clip -> cairo_reset_clip -~ cairo_concat_matrix -> cairo_transform - - More abbreviation elimination - -~ cairo_current_path -> cairo_copy_path -~ cairo_current_path_flat -> cairo_copy_path_flat - - The former mechanism for examining the current path was a - function that required 3 or 4 callbacks. This was more - complexity than warranted in most situations. The new - cairo_copy_path function copies the current path into an - exposed data structure, and the documentation provides a - convenient idiom for navigating the path data. - -API additions -------------- -+ cairo_paint - - A generalized version of the painting operators cairo_stroke - and cairo_fill. The cairo_paint call applies the source paint - everywhere within the current clip region. Very useful for - clearing a surface to a solid color, or painting an image, - (see cairo_set_source_surface). - -+ cairo_paint_with_alpha - - Like cairo_paint but applying some alpha to the source, - (making the source paint translucent, eg. to blend an image on - top of another). - -+ cairo_mask - - A more generalized version of cairo_paint_with_alpha which - allows a pattern to specify the amount of translucence at each - point rather than using a constant value everywhere. - -+ cairo_mask_surface - - A convenience function on cairo_mask for when the mask pattern - is already contained within a surface. - -+ cairo_surface_set_user_data -+ cairo_surface_get_user_data -+ cairo_font_face_set_user_data -+ cairo_font_face_get_user_data - - Associate arbitrary data with a surface or font face for later - retrieval. Get notified when a surface or font face object is - destroyed. - -+ cairo_surface_finish - - Allows the user to instruct cairo to finish all of its - operations for a given surface. This provides a safe point for - doing things such as flushing and closing files that the - surface may have had open for writing. - -+ cairo_fill_preserve -+ cairo_stroke_preserve -+ cairo_clip_preserve - - One interesting change in cairo is that the path is no longer - part of the graphics state managed by - cairo_save/restore. This allows functions to construct paths - without interfering with the graphics state. But it prevents - the traditional idiom for fill-and-stroke: - - cairo_save; cairo_fill; cairo_restore; cairo_stroke - - Instead we know have alternate versions cairo cairo_fill, - cairo_stroke, and cairo_clip that preserve the current path - rather than consuming it. So the idiom now becomes simply: - - cairo_fill_preserve; cairo_stroke - -+ cairo_surface_write_to_png -+ cairo_surface_write_to_png_stream - - In place of a single PNG backend, now a surface created - through any backend (except PDF currently) can be written out - to a PNG image. - -+ cairo_image_surface_create_from_png -+ cairo_image_surface_create_from_png_stream - - And its just as easy to load a PNG image into a surface as well. - -+ cairo_append_path - - With the new, exposed path data structure, it's now possible - to append bulk path data to the current path, (rather than - issuing a long sequence of cairo_move_to/line_to/curve_to - function calls). - -Xlib and XCB backends ---------------------- - -Any cairo_format_t and Colormap arguments have been dropped from -cairo_xlib_surface_create. There are also two new -cairo_xlib|xcb_surface_create functions: - - cairo_xlib|xcb_surface_create_for_bitmap - (Particular for creating A1 surfaces) - cairo_xlib|xcb_surface_create_with_xrender_format - (For any other surface types, not described by a Visual*) - -All of these surface create functions now accept width and height. In -addition, there are new cairo_xlib|xcb_surface_set_size functions -which must be called each time a window that is underlying a surface -changes size. - -Print backends (PS and PDF) ---------------------------- -The old FILE* based interfaces have been eliminated. In their place we -have two different functions. One accepts a simple const char -*filename. The other is a more general function which accepts a -callback write function and a void* closure. This should allow the -flexibility needed to hook up with various stream object in many -languages. - -In addition, when specifying the surface size during construction, the -units are now device-space units (ie. points) rather than inches. This -provides consistency with all the other surface types and also makes -it much easier to reason about the size of the surface when drawing to -it with the default identity matrix. - -Finally, the DPI parameters, which are only needed to control the -quality of fallbacks, have been made optional. Nothing is required -during surface_create (300 DPI is assumed) and -cairo_ps|pdf_surface_set_dpi can be used to set alternate values if -needed. - -Font system ------------ -Owen very graciously listened to feedback after the big font rework he -had done for 0.4, and came up with way to improve it even more. In 0.4 -there was a cairo_font_t that was always pre-scaled. Now, there is an -unscaled cairo_font_face_t which is easier to construct, (eg. no -scaling matrix required) and work with, (it can be scaled and -transformed after being set on the graphics state). And the font size -manipulation functions are much easier. You can set an explicit size -and read/modify/write the font matrix with: - - cairo_set_font_size - cairo_get_font_matrix - cairo_set_font_matrix - -(Previously you could only multiply in a scale factor or a matrix.) A -pleasant side effect is that we can (and do) now have a default font -size that is reasonable, as opposed to the old default height of one -device-space unit which was useless until scaled. - -Of course, the old pre-scaled font had allowed some performance -benefits when getting many metrics for a font. Those benefits are -still made available through the new cairo_scaled_font_t. And a -cairo_font_face_t can be "promoted" to a cairo_scaled_font_t by -suppling a font_matrix and the desired CTM. - -Quartz backend --------------- -Tim Rowley put in the work to bring the Quartz backend back after it -had been disabled in the 0.4.0 snapshot. He was not able to bring back -the function that allows one to create a cairo_font_t from an ATSUI -style: - - cairo_font_t * - cairo_atsui_font_create (ATSUStyle style); - -because he didn't have a test case for it. If you care about this -function, please provide a fairly minimal test and we'll try to bring -it back in an upcoming snapshot. - -Snapshot 0.4.0 (2005-03-08 Carl Worth ) -========================================================== -New documentation ------------------ -Owen Taylor has converted cairo's documentation system to gtk-doc and -has begun some long-needed work on the documentation, which can now be -viewed online here: - - http://cairographics.org/manual/ - -New backend: win32 ------------------- -This is the first snapshot to include a functional win32 backend, -(thanks to Owen Taylor). The interface is as follows: - - #include - - void - cairo_set_target_win32 (cairo_t *cr, - HDC hdc); - - cairo_surface_t * - cairo_win32_surface_create (HDC hdc); - - cairo_font_t * - cairo_win32_font_create_for_logfontw (LOGFONTW *logfont, - cairo_matrix_t *scale); - - cairo_status_t - cairo_win32_font_select_font (cairo_font_t *font, - HDC hdc); - - void - cairo_win32_font_done_font (cairo_font_t *font); - - double - cairo_win32_font_get_scale_factor (cairo_font_t *font); - -And see also the documentation at: - -http://cairographics.org/manual/cairo-Microsoft-Windows-Backend.html - -Disabled backend: quartz ------------------------- -Unfortunately, the quartz backend code is currently out of date with -respect to some recent backend interface changes. So, the quartz -backend is disabled in this snapshot. - -If the quartz backend is brought up-to-date before the next snapshot, -we would be glad to make a 0.4.1 snapshot that re-enables it, (we do -not expect many more big backend interface changes). - -API Changes ------------ -The font system has been revamped, (as Owen Taylor's work with -integrating pango and cairo gave us the first serious usage of the -non-toy font API). - -One fundamental, user-visible change is that the cairo_font_t object -now represents a font that is scaled to a particular device -resolution. Further changes are described below. - - cairo.h - ------- - Removed cairo_font_set_transform and cairo_font_current_transform. - - Added cairo_font_extents and cairo_font_glyph_extents. See - documentation for details: - - http://cairographics.org/manual/cairo-cairo-t.html#cairo-font-extents - - cairo-ft.h - ---------- - The cairo_ft_font API changed considerably. Please see the - documentation for details: - - http://cairographics.org/manual/cairo-FreeType-Fonts.html - -Performance ------------ -Make the fast-path clipping (pixel-aligned rectangles) faster. - -Add optimization for applying a constant alpha to a pattern. - -Optimize gradients that are horizontal or vertical in device space. - -Xlib: When RENDER is not available, use image surfaces for -intermediate surfaces rather than xlib surfaces. - -Backend-specific changes ------------------------- - Glitz - ----- - Major update to glitz backend. The output quality should now be just - as good as the image and xlib backends. - - Track changes to glitz 0.4.0. - - PDF - --- - Various improvements to produce more conformant output. - -Internals ---------- -David Reveman contributed a large re-work of the cairo_pattern_t -implementation, providing cleaner code and more optimization -opportunities. - - Backend interface changes - ------------------------- - Rework backend interface to accept patterns, not surfaces for source - and mask. - - Remove set_matrix, set_filter, and set_repeat functions. - - More sophisticated backend interface for image fallbacks, - ({acquire,release}_{source,dest}_image() and clone_similar). - -Bug fixes ---------- -Only install header files for backends that have been compiled. - -Fixed some rounding errors leading to incorrectly placed glyphs. - -Many other minor fixes. - -Snapshot 0.3.0 (2005-01-21 Carl Worth ) -========================================================== -Major API changes ------------------ -1) The public header files will no longer be directly installed into - the system include directory. They will now be installed in a - subdirectory named "cairo", (eg. in /usr/include/cairo rather than - in /usr/include). - - As always, the easiest way for applications to discover the - location of the header file is to let pkg-config generate the - necessary -I CFLAGS and -L/-l LDFLAGS. For example: - - cc `pkg-config --cflags --libs cairo` -o foo foo.c - - IMPORTANT: Users with old versions of cairo installed will need to - manually remove cairo.h and cairo-features.h from the - system include directories in order to prevent the old - headers from being used in preference to the new ones. - -2) The backend-specific portions of the old monolithic cairo.h have - been split out into individual public header files. The new files - are: - - cairo-atsui.h - cairo-ft.h - cairo-glitz.h - cairo-pdf.h - cairo-png.h - cairo-ps.h - cairo-quartz.h - cairo-xcb.h - cairo-xlib.h - - Applications will need to be modified to explicitly include the new - header files where appropriate. - -3) There are two new graphics backends in this snapshot, a PDF - backend, and a Quartz backend. There is also one new font backend, - ATSUI. - -PDF backend ------------ -Kristian Høgsberg has contributed a new backend to allow cairo-based -applications to generate PDF output. The interface for creating a PDF -surface is similar to that of the PS backend, as can be seen in -cairo-pdf.h: - - void - cairo_set_target_pdf (cairo_t *cr, - FILE *file, - double width_inches, - double height_inches, - double x_pixels_per_inch, - double y_pixels_per_inch); - - cairo_surface_t * - cairo_pdf_surface_create (FILE *file, - double width_inches, - double height_inches, - double x_pixels_per_inch, - double y_pixels_per_inch); - -Once a PDF surface has been created, applications can draw to it as -any other cairo surface. - -This code is still a bit rough around the edges, and does not yet -support clipping, surface patterns, or transparent gradients. Text -only works with TrueType fonts at this point and only black text is -supported. Also, the size of the generated PDF files is currently -quite big. - -Kristian is still actively developing this backend, so watch this -space for future progress. - -Quartz backend --------------- -Calum Robinson has contributed a new backend to allow cairo -applications to target native Mac OS X windows through the Quartz -API. Geoff Norton integrated this backend into the current -configure-based build system, while Calum also provided Xcode build -support in the separate "macosx" module available in CVS. - -The new interface, available in cairo-quartz.h, is as follows: - - void - cairo_set_target_quartz_context (cairo_t *cr, - CGContextRef context, - int width, - int height); - - cairo_surface_t * - cairo_quartz_surface_create (CGContextRef context, - int width, - int height); - -There is an example program available in CVS in cairo-demo/quartz. It -is a port of Keith Packard's fdclock program originally written for -the xlib backend. A screenshot of this program running on Mac OS X is -available here: - - http://cairographics.org/~cworth/images/fdclock-quartz.png - -ATSUI font backend ------------------- -This new font backend complements the Quartz backend by allowing -applications to use native font selection on Mac OS X. The interface -is a single new function: - - cairo_font_t * - cairo_atsui_font_create (ATSUStyle style); - -Minor API changes ------------------ -Prototype for non-existent function "cairo_ft_font_destroy" removed. - -Now depends on libpixman 0.1.2 or newer, (0.1.3 is being released -concurrently and has some useful performance improvements). - -Default paint color is now opaque black, (was opaque white). Default -background color is transparent (as before). - -Renamed "struct cairo" to "struct _cairo" to free up the word "cairo" -from the C++ identifier name space. - -Functions returning multiple return values through provided pointers, -(cairo_matrix_get_affine, cairo_current_point, and -cairo_current_color_rgb), will now accept NULL for values the user -wants to ignore. - -CAIRO_HAS_FREETYPE_FONT has now been renamed to CAIRO_HAS_FT_FONT. - -Performance improvements ------------------------- -Alexander Larsson provided some fantastic performance improvements -yielding a 10000% performance improvement in his application, (when -also including his performance work in libpixman-0.1.3). These include - - * Fixed handling of cache misses. - - * Creating intermediate clip surfaces at the minimal size required. - - * Eliminating roundtrips when creating intermediate Xlib surfaces. - -Implementation --------------- -Major re-work of font metrics system by Keith Packard. Font metrics -should now be much more reliable. - -Glitz backend -------------- -Updated for glitz-0.3.0. -Bug fixes in reference counting. - -Test suite ----------- -New tests for cache crashing, rotating text, improper filling of -complex polygons, and leaky rasterization. - -Bug fixes ---------- -Fixed assertion failure when selecting the same font multiple times in -sequence. - -Fixed reference counting so cache_destroy functions work. - -Remove unintended copyright statement from files generated with -PostScript backend. - -Fixed to eliminate new warnings from gcc 3.4 and gcc 4. - -Snapshot 0.2.0 (2004-10-27 Carl Worth ) -=========================================================== -New license: LGPL/MPL ---------------------- -The most significant news with this release is that the license of -cairo has changed. It is now dual-licensed under the LGPL and the -MPL. For details see the COPYING file as well as COPYING-LGPL-2.1 and -COPYING-MPL-1.1. - -I express my thanks to everyone involved in the license change process -for their patience and support! - -New font and glyph internals ----------------------------- -Graydon Hoare has put a tremendous amount of work into new internals -for handling fonts and glyphs, including caches where appropriate. -This work has no impact on the user-level API, but should result in -great performance improvements for applications using text. - -New test suite --------------- -This snapshot of cairo includes a (small) test suite in -cairo/test. The tests can be run with "make check". The test suite was -designed to make it very easy to add new tests, and we hope to see -many contributions here. As you find bugs, please try adding a minimal -test case to the suite, and submit it with the bug report to the -cairo@cairographics.org mailing list. This will make it much easier -for us to track progress in fixing bugs. - -New name for glitz backend --------------------------- -The gl backend has now been renamed to the glitz backend. This means -that the following names have changed: - - CAIRO_HAS_GL_SURFACE -> CAIRO_HAS_GLITZ_SURFACE - cairo_set_target_gl -> cairo_set_target_glitz - cairo_gl_surface_create -> cairo_glitz_surface_create - -This change obviously breaks backwards compatibility for applications -using the old gl backend. - -Up-to-date with latest glitz snapshots --------------------------------------- -This snapshot of cairo is now up to date with the latest glitz -snapshot, (currently 0.2.3). We know that the latest cairo and glitz -snapshots have been incompatible for a very long time. We've finally -fixed that now and we're determined to not let that happen again. - -Revert some tessellation regression bugs ----------------------------------------- -People that have been seeing some tessellation bugs, (eg. leaked -fills), in the CVS version of cairo may have better luck with this -release. A change since the last snapshot was identified to trigger -some of these bugs and was reverted before making the snapshot. The -behavior should be the same as the previous (0.1.23) snapshot. - -Miscellaneous changes ---------------------- -Changed CAIRO_FILTER_DEFAULT to CAIRO_FILTER_BEST to make gradients -easier. - -Track XCB API change regarding iterators. - -Various bug fixes ------------------ -Fix calculation of required number of vertices for pen. - -Fix to avoid zero-dimensioned pixmaps. - -Fix broken sort of pen vertices. - -Fix bug when cairo_show_text called with a NULL string. - -Fix clipping bugs. - -Fix bug in computing image length with XCB. - -Fix infinite loop bug in cairo_arc. - -Fix memory management interactions with libpixman. - -Snapshot 0.1.23 (2004-05-11 Carl Worth ) -======================================================== -Fixes for gcc 3.4 ------------------ -Fix prototype mismatches so that cairo can be built by gcc 3.4. - -Updates to track glitz ----------------------- -Various fixes to support the latest glitz snapshot (0.1.2). - -Gradient updates ----------------- -Radial gradients now support both inner and outer circles. -Transformed linear gradients are now properly handled. -Fixes for extend type reflect. - -Glitz updates -------------- -Converted shading routines to use fixed point values and introduced a -shading operator structure for more efficient shading calculations. -Support compositing with mask surface when mask is solid or -multi-texturing is available. - -PNG backend cleanups --------------------- -Fix output to properly compensate for pre-multiplied alpha format in cairo. -Add support for A8 and A1 image formats. - -Bug fixes ---------- -Avoid crash or infinite loop on null strings and degeneratively short -splines. - -New? bugs in cairo_clip ------------------------ -There are some fairly serious bugs in cairo_clip. It is sometimes -causing an incorrect result. And even when it does work, it is -sometimes so slow as to be unusable. Some of these bugs may not be -new, (indeed cairo_clip has only ever had a braindead-slow -implementation), but I think they're worth mentioning here. - -Snapshot 0.1.22 (2004-04-16 Carl Worth ) -======================================================== -Cairo was updated to track the changes in libpixman, and now depends -on libpixman version 0.1.1. - -Snapshot 0.1.21 (2004-04-09 David Reveman ) -============================================================= -New OpenGL backend ------------------- -The OpenGL backend provides hardware accelerated output for -X11 and OS X. The significant new functions are: - - cairo_set_target_gl - cairo_gl_surface_create - -Automatic detection of available backends ------------------------------------------ -The configure script now automatically detect what backends are -available, (use ./configure --disable-`backend' to prevent -compilation of specific backends). - -Snapshot 0.1.20 (2004-04-06 Carl Worth ) -======================================================== -New pattern API ---------------- -David Reveman has contributed a new pattern API which enable linear -and radial gradient patterns in addition to the original surface-based -patterns. The significant new top-level functions are: - - cairo_pattern_create_linear - cairo_pattern_create_radial - cairo_pattern_create_for_surface - cairo_pattern_add_color_stop - cairo_set_pattern - -Any code using the old cairo_set_pattern, (which accepted a -cairo_surface_t rather than a cairo_pattern_t), will need to be -updated. - -Update to XCB backend ---------------------- -The XCB backend is now enabled by default, (use ./configure ---disable-xcb to turn it off). - -Faster clipping ---------------- -Graydon Hoare has added optimizations that make cairo_clip much faster -when the path is a pixel-aligned, rectangular region. - -Bug fixes. - -Snapshot 0.1.19 (2004-02-24 Carl Worth ) -======================================================== -New PNG backend ---------------- -Olivier Andrieu contributed a new PNG backend. It builds on the -existing image backend to make it easy to render "directly" to a -.png file. The user never needs to deal with the actual image -buffer. The significant new functions are: - - cairo_set_target_png - cairo_png_surface_create - -The PNG backend is not enabled by default so that by default there is -not a new dependency on libpng. Use ./configure --enable-png to enable -this backend. - -Snapshot 0.1.18 (2004-02-17 Carl Worth ) -======================================================== -Path query functionality ------------------------- -It's now possible to query the current path. The two new functions -are: - - cairo_current_path - cairo_current_path_flat - -Each function accepts a number of callback functions that will be -called for each element in the path (move_to, line_to, curve_to, -close_path). The cairo_current_path_flat function does not accept a -curve_to callback. Instead, all curved portions of the path will be -converted to line segments, (within the current tolerance value). This -can be handy for doing things like text-on-path without having to -manually interpolate Bézier splines. - -New XCB backend ---------------- -Jamey Sharp has contributed a second X backend that uses the new, lean -XCB library rather than Xlib. It cannot currently be compiled at the -same time as the Xlib backend. See ./configure --enable-xcb. - -Build fixes for cygwin. - -Bug fixes. - -Snapshot 0.1.17 (2003-12-16 Carl Worth ) -======================================================== - -Better text support -------------------- -This snapshot provides much better text support by implementing the -following four functions: - - cairo_text_extents - cairo_glyph_extents - cairo_text_path - cairo_glyph_path - -The text/glyph_extents functions can be used to determine the bounding -box (and advance) for text as if drawn by show_text/glyphs. - -The text/glyph_path objects functions place text shapes on the current -path, where they can be subsequently manipulated. For example, -following these functions with cairo_stroke allows outline text to be -drawn. Calling cairo_clip allows clipping to a text-shaped region. - -Combined dependencies ---------------------- -The cairo core now depends only on the libpixman library. This single -library replaces the three previous libraries libic, libpixregion, and -slim. Thanks to Dave Beckett for all of -the heavy lifting with this renaming effort. - -Conditional compilation of backends ------------------------------------ -Cairo now allows optional backends to be disabled at compile time. The -following options may now be passed to the configure script: - - --disable-xlib - --disable-ps - -Note that the first option is a change from the old --without-x option -which will no longer have any effect. - -OS X supported - several byte-order issues resolved ---------------------------------------------------- -Cairo has now been successfully compiled under OS X. Testing revealed -that there were some byte-order problems in the PostScript backend and -the PNG generation in the demos. These have now been resolved. - -2003-10 -======= -Graydon Hoare implemented the first real text -support using Freetype/fontconfig, (previous versions of cairo used -Xft and could only draw text when using an X backend). - -2003-09 -======= -Graydon Hoare added the first real support for -running cairo with a non-render-aware X server. - -Jamey Sharp virtualized the backend font and -surface interfaces in September, 2003. - -2003-06 -======= -Xr is renamed cairo to avoid confusion since it no longer had a strict -dependence on X. - -2003-05 -======= -A new image surface backend is added to Xr. Keith Packard - wrote the image compositing code in libic that is -used for the image_surface backend. This code was originally written -as the software fallback for the render extension within the X -server. - -2002-06 -======= -Carl Worth wrote the first lines of Xr, after Keith -Packard proposed the plan for a stateful drawing -library in C providing a PostScript-like rendering model. - - LocalWords: mutex BeOS extraordinaire diff -Nru libgdiplus-4.0-2.10.9/cairo/PORTING_GUIDE libgdiplus-4.0-4.2.3+precise1/cairo/PORTING_GUIDE --- libgdiplus-4.0-2.10.9/cairo/PORTING_GUIDE 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/PORTING_GUIDE 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ - ...-----=======-----... - Cairo 1.0 Porting Guide - ...-----=======-----... - -Here are some notes on more easily porting cairo_code from cairo 0.4 -to cairo 1.0. It is sorted roughly in order of importance, (the items -near the top are expected to affect the most people). - -Automated API renamings -======================= -There have been a lot of simple renamings where the functionality is -the same but the name of the symbol is different. We have provided a -script to automate the conversion of these symbols. It can be found -within the cairo distribution in: - - util/cairo-api-update - -This script is used by installing it somewhere on your PATH, and the -running it and providing the names of your source files on the command -line. For example: - - cairo-api-update *.[ch] - -The script will first save backup copies of each file (renamed with a -.bak extension) and then will perform all of the simple renamings. - -For your benefit, the script also produces messages giving filenames -and line numbers for several of the manual API updates that you will -need to perform as described below. - - -Manual API changes -================== -This section of the porting guide describes changes you will have to -manually make to your source code. In addition to the information in -this guide, the cairo-api-update script will notify you of some of -these issues as described above. - -Cairo's deprecation warnings ----------------------------- -Also, if your compiler provides warnings for implicit declarations of -functions, (eg. "gcc -Wall"), then simply attempting to compile your -program will cause cairo to generate messages intended to guide you -through the porting process. - -For example, if you neglect to update an old call to -cairo_set_target_drawable, you might see an error message as follows: - - foo.c:10: warning: implicit declaration of function - ‘cairo_set_target_drawable_DEPRECATED_BY_cairo_xlib_surface_create’ - -This message is indicating to you that the deprecatd function -cairo_set_target_drawable appears in your program foo.c on line 10, -and you should rewrite your program to call cairo_xlib_surface_create -instead. - -The remainder of this porting guide is arranged as a set of common -code patterns that appear in old (cairo-0.4) code and how it should be -transformed to new (cairo-0.5) code. - -cairo_create ------------- -Was: cr = cairo_create (); - cairo_set_target_foo (cr, args); - /* draw */ - cairo_destroy (cr); - -Now: cairo_surface_t *surface; - - surface = cairo_foo_surface_create (args); - cr = cairo_create (surface); - /* draw */ - cairo_destroy (cr); - cairo_surface_destroy (surface); - -Or: cairo_surface_t *surface; - - surface = cairo_foo_surface_create (args); - cr = cairo_create (surface); - cairo_surface_destroy (surface); - /* draw */ - cairo_destroy (cr); - -NOTE: Many of the cairo_foo_surface_create functions accept the - identical arguments as the the old cairo_set_target_foo - functions, (minus the cairo_t*), making this transformation - quite easy. One notable exception is cairo_set_target_drawable - which, when it becomes cairo_xlib_surface_create must pickup new - arguments for the Visual*, the width, and the height. - -cairo_set_alpha (1) -------------------- -Was: cairo_set_rgb_color (cr, red, green, blue); - cairo_set_alpha (cr, alpha); - -Now: cairo_set_source_rgba (cr, red, green, blue, alpha); - -cairo_show_surface ------------------- -Was: cairo_show_surface (cr, surface, width, height); - -Now: cairo_set_source_surface (cr, surface, x, y); - cairo_paint (cr); - -NOTE: The type signatures of cairo_show_surface and cairo_set_source - are the same, but pay attention that cairo_show_surface required - the width and height, while cairo_set_source_surface requires - the X,Y location to where the surface will be placed. - -cairo_set_alpha (2) -------------------- -Was: cairo_set_alpha (cr, alpha); - cairo_show_surface (cr, surface, width, height); - -Now: cairo_set_source_surface (cr, surface, x, y); - cairo_paint_with_alpha (cr, alpha); - -filling and stroking --------------------- -Was: cairo_save (cr); - /* set fill color */ - cairo_fiill (cr); - cairo_restore (cr); - /* set stroke color */ - cairo_stroke (cr); - -Now: /* set fill color */ - cairo_fill_preserve (cr); - /* set stroke color */ - cairo_stroke (cr); - -NOTE: The current path is no longer saved/restored by - cairo_save/cairo_restore. This can lead to some subtle - surprises, so look out. - -cairo_matrix_t --------------- -Was: cairo_matrix_t *matrix; - - matrix = cairo_matrix_create (); - /* Do stuff with matrix */ - cairo_matrix_destroy (matrix); - -Now: cairo_matrix_t matrix; - cairo_matrix_init_identity (&matrix); - /* Do stuff with &matrix */ - -NOTE: If you are really lazy, you can still use a cairo_matrix_t* and - avoid putting the &matrix all over by just replacing - cairo_matrix_create() with malloc() and cairo_matrix_destroy() - with free(). That's not as nice, and you still need to be - careful to see if you need to initialize it to an identity - matrix as cairo_matrix_create() did for you. - -Rendering to a temporary surface --------------------------------- -Was: cairo_save (cr); - { - cairo_set_target_surface (cr, temporary); - /* draw through cr onto temporary */ - } - cairo_restore (cr); - /* use temporary as source on cr */ - -Now: { - cr2 = cairo_create (temporary); - /* draw through cr2 onto temporary */ - cairo_destory (cr2); - } - /* use temporary as source on cr */ - -NOTE: Having to create another cairo_t is a bit annoying, but having - to invent a new name for it is just awful, (imagine a deeply - nested version of this code). Fortunately, the style above is - just a stop-gap measure until the new group API comes along. - -Iterating over a path ---------------------- -Was: cairo_current_path (cr, - my_move_to, - my_line_to, - my_curve_to, - my_close_path, - closure); - -Now: int i; - cairo_path_t *path; - cairo_path_data_t *data; - - path = cairo_copy_path (cr); - - for (i=0; i < path->num_data; i += path->data[i].header.length) { - data = &path->data[i]; - switch (data->header.type) { - case CAIRO_PATH_MOVE_TO: - my_move_to (closure, data[1].point.x, data[1].point.y); - break; - case CAIRO_PATH_LINE_TO: - my_line_to (closure, data[1].point.x, data[1].point.y); - break; - case CAIRO_PATH_CURVE_TO: - my_curve_to (closure, data[1].point.x, data[1].point.y, - data[2].point.x, data[2].point.y, - data[3].point.x, data[3].point.y); - break; - case CAIRO_PATH_CLOSE_PATH: - my_close_path (closure); - break; - } - } - cairo_path_destroy (path); - -NOTE: This version makes it looks like the new form is a _lot_ more - verbose than the old version. But realize that the old version - required the support of 4 additional functions. The new approach - allows great flexibility including the ability to inline the - entire operation within the switch statement when appropriate. - -Erasing a surface to transparent --------------------------------- -Was: cairo_set_rgb_color (cr, 0., 0., 0.); - cairo_set_alpha (cr, 0.) - cairo_set_operator (cr, CAIRO_OPERATOR_SRC); - cairo_rectangle (cr, 0., 0., surface_width, surface_height); - cairo_fill (cr); - - or: cairo_set_rgb_color (cr, 0., 0., 0.); - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_rectangle (cr, 0., 0., surface_width, surface_height); - cairo_fill (cr); - -Now: cairo_set_source_rgba (cr, 0., 0., 0., 0.); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - or: cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr); - -NOTE: Using cairo_rectangle and fill would still work just fine. It's - just a lot more convenient to use cairo_paint now, (particularly - as it doesn't require you to even know what the bounds of the - target surface are). - -Drawing to a PNG file ---------------------- -Was: file = fopen (filename, "w"); - cr = cairo_create (); - cairo_set_target_png (cr, file, format, width, height); - /* draw image */ - cairo_destroy (cr); - fclose (file); - -Now: surface = cairo_image_surface_create (format, width, height); - cr = cairo_create (surface); - /* draw image */ - cairo_surface_write_to_png (surface, filename); - cairo_destroy (cr); - cairo_surface_destroy (surface); - -NOTE: The png backend is gone. So there is no cairo_png_surface_create - to take the place of cairo_set_target_png. And notice that we - used an image surface here, but it is just as easy to use - cairo_surface_write_to_png with an xlib or other surface, (but - not PDF at the moment). This is one of the big advantages of - this approach as opposed to a PNG surface. diff -Nru libgdiplus-4.0-2.10.9/cairo/README libgdiplus-4.0-4.2.3+precise1/cairo/README --- libgdiplus-4.0-2.10.9/cairo/README 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -Cairo - Multi-platform 2D graphics library -http://cairographics.org - -What is cairo -============= -Cairo is a 2D graphics library with support for multiple output -devices. Currently supported output targets include the X Window -System, win32, and image buffers, as well as PDF, PostScript, and SVG -file output. Experimental backends include OpenGL (through glitz), -Quartz, XCB, BeOS, OS/2, and DirectFB. - -Cairo is designed to produce consistent output on all output media -while taking advantage of display hardware acceleration when available -(for example, through the X Render Extension). - -The cairo API provides operations similar to the drawing operators of -PostScript and PDF. Operations in cairo include stroking and filling -cubic Bézier splines, transforming and compositing translucent images, -and antialiased text rendering. All drawing operations can be -transformed by any affine transformation (scale, rotation, shear, -etc.). - -Cairo has been designed to let you draw anything you want in a modern -2D graphical user interface. At the same time, the cairo API has been -designed to be as fun and easy to learn as possible. If you're not -having fun while programming with cairo, then we have failed -somewhere---let us know and we'll try to fix it next time around. - -Cairo is free software and is available to be redistributed and/or -modified under the terms of either the GNU Lesser General Public -License (LGPL) version 2.1 or the Mozilla Public License (MPL) version -1.1. - -Where to get more information about cairo -========================================= -The primary source of information about cairo is: - - http://cairographics.org/ - -The latest versions of cairo can always be found at: - - http://cairographics.org/download - -Documentation on using cairo and frequently-asked questions: - - http://cairographics.org/documentation - http://cairographics.org/FAQ - -Mailing lists for contacting cairo users and developers: - - http://cairographics.org/lists - -Roadmap and unscheduled things to do, (please feel free to help out): - - http://cairographics.org/roadmap - http://cairographics.org/todo - -Dependencies -============ -The set of libraries needed to compile cairo depends on which backends -are enabled when cairo is configured. So look at the list below to -determine which dependencies are needed for the backends of interest. - -For the surface backends, we have both "supported" and "experimental" -backends. Further, the supported backends can be divided into the -"standard" backends which can be easily built on any platform, and the -"platform" backends which depend on some underlying platform-specific -system, (such as the X Window System or some other window system). - -As an example, for a standard Linux build, (with image, png, pdf, -PostScript, svg, and xlib surface backends, and the freetype font -backend), the following sample commands will install necessary -dependencies: - - Debian (and similar): - - apt-get install libpng12-dev libz-dev libxrender-dev libfontconfig1-dev - - Fedora (and similar): - - yum install libpng-devel zlib-devel libXrender-devel fontconfig-devel - -(Those commands intentionally don't install pixman from a distribution -package since if you're manually compiling cairo, then you likely want -to grab pixman from the same place at the same time and compile it as -well.) - -Supported, "standard" surface backends ------------------------------------- - image backend (required) - ------------------------ - pixman >= 0.10.0 http://cairographics.org/releases - - png support (can be left out if desired, but many - ----------- applications expect it to be present) - libpng http://www.libpng.org/pub/png/libpng.html - - pdf backend - ----------- - zlib http://www.gzip.org/zlib - - postscript backend - ------------------ - zlib http://www.gzip.org/zlib - - svg backend - ----------- - [none] - -Supported, "platform" surface backends ------------------------------------ - xlib backend - ------------ - X11 http://freedesktop.org/Software/xlibs - - xlib-xrender backend - -------------------- - Xrender >= 0.6 http://freedesktop.org/Software/xlibs - - quartz backend - -------------- - MacOS X >= 10.4 with Xcode >= 2.4 - - win32 backend - ------------- - Microsoft Windows 2000 or newer[*]. - -Font backends (required to have at least one) ---------------------------------------------- - freetype font backend - --------------------- - freetype >= 2.1.9 http://freetype.org - fontconfig http://fontconfig.org - - quartz-font backend - ------------------- - MacOS X >= 10.4 with Xcode >= 2.4 - - win32 font backend - ------------------ - Microsoft Windows 2000 or newer[*]. - - [*] The Win32 backend should work on Windows 2000 and newer - (excluding Windows Me.) Most testing has been done on - Windows XP. While some portions of the code have been - adapted to work on older versions of Windows, considerable - work still needs to be done to get cairo running in those - environments. - - Cairo can be compiled on Windows with either the gcc - toolchain (see http://www.mingw.org) or with Microsoft - Visual C++. If the gcc toolchain is used, the standard - build instructions using configure apply, (see INSTALL). - If Visual C++ is desired, GNU make is required and - Makefile.win32 can be used via 'make -f Makefile.win32'. - The compiler, include paths, and library paths must be set - up correctly in the environment. - - MSVC versions earlier than 7.1 are known to miscompile - parts of cairo and pixman, and so should be avoided. MSVC - 7.1 or later, including the free Microsoft Visual Studio - Express editions, produce correct code. - -Experimental surface backends ------------------------------ - glitz - ------------- - glitz >= 0.4.4 http://freedesktop.org/Software/glitz - - xcb backend - ----------- - XCB http://xcb.freedesktop.org - - beos backend - ------------ - No dependencies in itself other than an installed BeOS system, but cairo - requires a font backend. See the freetype dependency list. - - os2 backend - ----------- - Cairo should run on any recent version of OS/2 or eComStation, but it - requires a font backend. See the freetype dependency list. Ready to use - packages and developer dependencies are available at Netlabs: - ftp://ftp.netlabs.org/pub/cairo - -Compiling -========= -See the INSTALL document for build instructions. - -History -======= -Cairo was originally developed by Carl Worth and -Keith Packard . Many thanks are due to Lyle Ramshaw -without whose patient help our ignorance would be much more apparent. - -Since the original development, many more people have contributed to -cairo. See the AUTHORS files for as complete a list as we've been able -to compile so far. diff -Nru libgdiplus-4.0-2.10.9/cairo/RELEASING libgdiplus-4.0-4.2.3+precise1/cairo/RELEASING --- libgdiplus-4.0-2.10.9/cairo/RELEASING 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/RELEASING 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -Here are the steps to follow to create a new cairo release: - -1) Ensure that there are no local, uncommitted/unspushed - modifications. You're probably in a good state if both "git diff - HEAD" and "git log master..origin/master" give no output. - -2) Verify that the code passes "make distcheck" - - First, make sure you have 'nm' and 'readelf' commands in PATH. - this should be Ok with any Linux distro. - - Running "make distcheck" should result in no warnings or - errors and end with a message of the form: - - ================================================== - cairo-X.Y.Z-head archives ready for distribution: - cairo-X.Y.Z-head.tar.gz - ================================================== - - (But the tar file isn't actually ready yet, as we still have - some more steps to follow). - - If you get errors about local PLT entries, you get the list of - cairo and pixman entries with the error. For each of these, a - call to slim_hidden_def and slim_hidden_proto is needed in the - cairo or pixman implementation in the style of other similar calls. - -3) Fill out an entry in the NEWS file - - Sift through the logs since the last release. This is most - easily done with a comand such as: - - git log --stat X.Y.Z.. - - where X.Y.Z is the previous release version. - - Summarize major changes briefly in a style similar to other - entries in NEWS. Take special care to note any additions in - the API. These should be easy to find by noting modifications - to .h files in the log command above. And more specifically, - the following command will show each patch that has changed a - public header file since the given version: - - find src/ -name '*.h' ! -name '*-private.h' ! -name 'cairoint.h' | \ - xargs git log -p X.Y.Z.. -- - -4) Increment cairo_version_{minor|micro} and LT_{CURRENT|VERSION|AGE} - in configure.in: - - If there are backward-incompatible changes in the API, stop - now and don't release. Go back and fix the API instead. Cairo - is intended to remain backwards-compatible as far as API. - - So cairo_version_major will not be incremented unless we come - up with a new versioning scheme to take advantage of it. - - If there are API additions, then increment cairo_version_minor - and reset cairo_version_micro to 0. NOTE: The minor version is - only incremented for releases, not for snapshots. - - Otherwise, (ie. there are only bug fixes), increment - cairo_version_micro to the next larger (even) number. - - Adjust LT_CURRENT, LT_VERSION, and LT_AGE as described in the - comments in configure.in. - -5) Commit the changes to NEWS and configure.in - - It's especially important to mention the new version number in your - commit log. - -6) Run "make release-publish" which will perform the following steps - for you: - - * Generate ChangeLog files out of git repository - * Check that ChangeLog files were generated properly - * Check that the version number ends with an even micro component - * Check that no release exists with the current version - * Verify that make distcheck completes successfully - * Generate the final tar file - * Generate an sha1sum file - * Sign the sha1sum using your GPG setup (asks for your GPG password) - * scp the three files to appear on http://cairographics.org/releases - * Place local copies of the three files in the releases directory - * Create a LATEST-package-version file (after deleting any old one) - * Tag the entire source tree with a tag of the form X.Y.Z, and sign - the tag with your GPG key (asks for your GPG password, and you - may need to set GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL to match - your public-key's setting or this fails.) - * Provide some text for the release announcement (see below). - If for some reason you lost this message, "make release-publish-message" - prints it for you. - -7) Increment cairo_version_micro to the next larger (odd) number in - configure, commit, and push. - -8) Push the newly created tag out to the central tree with a command - something like: - - git push cairo X.Y.Z - -9) Edit the cairo bugzilla product and add the new version numbers. Note - that you need to add two versions. One for the release/snapshot (with - an even micro version), another with the post-release version (with an - odd micro version). - -10) Send a message to cairo-announce@cairographics.org and CC - gnome-announce-list@gnome.org to announce the new release using - the text provided from "make release-publish", adding the excerpt - from NEWS, your signature, followed by the standard "What is cairo" - and "Where to get more information about cairo" blurbs from README, - and finally tacking on the detailed changelog-ish thing that gets - mailed out when you push the tag (but not the diffstat thing). - -11) Edit the cairo wiki to add the announcement to the NEWS page and - the front page. (just the parts before your signature). - -12) For minor releases (no X.Y change), notify desktop-devel-list@gnome.org - or update the ExternalDependencies page for the current cycle if you - know where it is. Currently it's: - - http://live.gnome.org/TwoPointNineteen/ExternalDependencies diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-analysis-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-analysis-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-analysis-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-analysis-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,730 +0,0 @@ -/* - * Copyright © 2006 Keith Packard - * Copyright © 2007 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith Packard - * Adrian Johnson - */ - -#include "cairoint.h" - -#include "cairo-analysis-surface-private.h" -#include "cairo-paginated-private.h" -#include "cairo-region-private.h" -#include "cairo-meta-surface-private.h" - -typedef struct { - cairo_surface_t base; - int width; - int height; - - cairo_surface_t *target; - - cairo_bool_t first_op; - cairo_bool_t has_supported; - cairo_bool_t has_unsupported; - - cairo_region_t supported_region; - cairo_region_t fallback_region; - cairo_rectangle_int_t current_clip; - cairo_box_t page_bbox; - - cairo_bool_t has_ctm; - cairo_matrix_t ctm; - -} cairo_analysis_surface_t; - -static cairo_int_status_t -_cairo_analysis_surface_analyze_meta_surface_pattern (cairo_analysis_surface_t *surface, - cairo_pattern_t *pattern) -{ - cairo_surface_t *analysis = &surface->base; - cairo_surface_pattern_t *surface_pattern; - cairo_status_t status; - cairo_bool_t old_has_ctm; - cairo_matrix_t old_ctm, p2d; - cairo_rectangle_int_t old_clip; - cairo_rectangle_int_t meta_extents; - int old_width; - int old_height; - - assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE); - surface_pattern = (cairo_surface_pattern_t *) pattern; - assert (_cairo_surface_is_meta (surface_pattern->surface)); - - old_width = surface->width; - old_height = surface->height; - old_clip = surface->current_clip; - status = _cairo_surface_get_extents (surface_pattern->surface, &meta_extents); - if (status) - return status; - - surface->width = meta_extents.width; - surface->height = meta_extents.height; - surface->current_clip.x = 0; - surface->current_clip.y = 0; - surface->current_clip.width = surface->width; - surface->current_clip.height = surface->height; - old_ctm = surface->ctm; - old_has_ctm = surface->has_ctm; - p2d = pattern->matrix; - status = cairo_matrix_invert (&p2d); - /* _cairo_pattern_set_matrix guarantees invertibility */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&surface->ctm, &p2d, &surface->ctm); - surface->has_ctm = !_cairo_matrix_is_identity (&surface->ctm); - - status = _cairo_meta_surface_replay_and_create_regions (surface_pattern->surface, - analysis); - if (status == CAIRO_STATUS_SUCCESS) - status = analysis->status; - - surface->ctm = old_ctm; - surface->has_ctm = old_has_ctm; - surface->current_clip = old_clip; - surface->width = old_width; - surface->height = old_height; - - return status; -} - -static cairo_int_status_t -_cairo_analysis_surface_add_operation (cairo_analysis_surface_t *surface, - cairo_rectangle_int_t *rect, - cairo_int_status_t backend_status) -{ - cairo_int_status_t status; - cairo_box_t bbox; - - if (rect->width == 0 || rect->height == 0) { - /* Even though the operation is not visible we must be careful - * to not allow unsupported operations to be replayed to the - * backend during CAIRO_PAGINATED_MODE_RENDER */ - if (backend_status == CAIRO_STATUS_SUCCESS || - backend_status == CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY) - { - return CAIRO_STATUS_SUCCESS; - } - else - { - return CAIRO_INT_STATUS_IMAGE_FALLBACK; - } - } - - if (surface->has_ctm) { - double x1, y1, x2, y2; - - x1 = rect->x; - y1 = rect->y; - x2 = rect->x + rect->width; - y2 = rect->y + rect->height; - _cairo_matrix_transform_bounding_box (&surface->ctm, - &x1, &y1, &x2, &y2, - NULL); - rect->x = floor (x1); - rect->y = floor (y1); - - x2 = ceil (x2) - rect->x; - y2 = ceil (y2) - rect->y; - if (x2 <= 0 || y2 <= 0) { - /* Even though the operation is not visible we must be - * careful to not allow unsupported operations to be - * replayed to the backend during - * CAIRO_PAGINATED_MODE_RENDER */ - if (backend_status == CAIRO_STATUS_SUCCESS || - backend_status == CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY) - { - return CAIRO_STATUS_SUCCESS; - } - else - { - return CAIRO_INT_STATUS_IMAGE_FALLBACK; - } - } - - rect->width = x2; - rect->height = y2; - } - - bbox.p1.x = _cairo_fixed_from_int (rect->x); - bbox.p1.y = _cairo_fixed_from_int (rect->y); - bbox.p2.x = _cairo_fixed_from_int (rect->x + rect->width); - bbox.p2.y = _cairo_fixed_from_int (rect->y + rect->height); - - if (surface->first_op) { - surface->first_op = FALSE; - surface->page_bbox = bbox; - } else { - if (bbox.p1.x < surface->page_bbox.p1.x) - surface->page_bbox.p1.x = bbox.p1.x; - if (bbox.p1.y < surface->page_bbox.p1.y) - surface->page_bbox.p1.y = bbox.p1.y; - if (bbox.p2.x > surface->page_bbox.p2.x) - surface->page_bbox.p2.x = bbox.p2.x; - if (bbox.p2.y > surface->page_bbox.p2.y) - surface->page_bbox.p2.y = bbox.p2.y; - } - - /* If the operation is completely enclosed within the fallback - * region there is no benefit in emitting a native operation as - * the fallback image will be painted on top. - */ - if (_cairo_region_contains_rectangle (&surface->fallback_region, rect) == PIXMAN_REGION_IN) - return CAIRO_INT_STATUS_IMAGE_FALLBACK; - - if (backend_status == CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY) { - /* A status of CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY indicates - * that the backend only supports this operation if the - * transparency removed. If the extents of this operation does - * not intersect any other native operation, the operation is - * natively supported and the backend will blend the - * transparency into the white background. - */ - if (_cairo_region_contains_rectangle (&surface->supported_region, rect) == PIXMAN_REGION_OUT) - backend_status = CAIRO_STATUS_SUCCESS; - } - - if (backend_status == CAIRO_STATUS_SUCCESS) { - /* Add the operation to the supported region. Operations in - * this region will be emitted as native operations. - */ - surface->has_supported = TRUE; - status = _cairo_region_union_rect (&surface->supported_region, - &surface->supported_region, - rect); - return status; - } - - /* Add the operation to the unsupported region. This region will - * be painted as an image after all native operations have been - * emitted. - */ - surface->has_unsupported = TRUE; - status = _cairo_region_union_rect (&surface->fallback_region, - &surface->fallback_region, - rect); - - /* The status CAIRO_INT_STATUS_IMAGE_FALLBACK is used to indicate - * unsupported operations to the meta surface as using - * CAIRO_INT_STATUS_UNSUPPORTED would cause cairo-surface to - * invoke the cairo-surface-fallback path then return - * CAIRO_STATUS_SUCCESS. - */ - if (status == CAIRO_STATUS_SUCCESS) - return CAIRO_INT_STATUS_IMAGE_FALLBACK; - else - return status; -} - -static cairo_status_t -_cairo_analysis_surface_finish (void *abstract_surface) -{ - cairo_analysis_surface_t *surface = (cairo_analysis_surface_t *) abstract_surface; - - _cairo_region_fini (&surface->supported_region); - _cairo_region_fini (&surface->fallback_region); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_analysis_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_analysis_surface_t *surface = abstract_surface; - double x1, y1, x2, y2; - cairo_rectangle_int_t extent; - - if (path == NULL) { - surface->current_clip.x = 0; - surface->current_clip.y = 0; - surface->current_clip.width = surface->width; - surface->current_clip.height = surface->height; - } else { - cairo_status_t status; - - status = _cairo_path_fixed_bounds (path, &x1, &y1, &x2, &y2, tolerance); - if (status) - return status; - - extent.x = floor (x1); - extent.y = floor (y1); - extent.width = ceil (x2) - extent.x; - extent.height = ceil (y2) - extent.y; - - _cairo_rectangle_intersect (&surface->current_clip, &extent); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_analysis_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_analysis_surface_t *surface = abstract_surface; - - return _cairo_surface_get_extents (surface->target, rectangle); -} - -static cairo_int_status_t -_cairo_analysis_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_analysis_surface_t *surface = abstract_surface; - cairo_status_t status, backend_status; - cairo_rectangle_int_t extents; - - if (!surface->target->backend->paint) - backend_status = CAIRO_INT_STATUS_UNSUPPORTED; - else - backend_status = (*surface->target->backend->paint) (surface->target, op, - source); - - if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) - backend_status = _cairo_analysis_surface_analyze_meta_surface_pattern (surface, - source); - - status = _cairo_surface_get_extents (&surface->base, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - _cairo_rectangle_intersect (&extents, &surface->current_clip); - - status = _cairo_analysis_surface_add_operation (surface, &extents, backend_status); - - return status; -} - -static cairo_int_status_t -_cairo_analysis_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_analysis_surface_t *surface = abstract_surface; - cairo_status_t status, backend_status; - cairo_rectangle_int_t extents; - - if (!surface->target->backend->mask) - backend_status = CAIRO_INT_STATUS_UNSUPPORTED; - else - backend_status = (*surface->target->backend->mask) (surface->target, op, - source, mask); - - if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) { - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) source; - if (_cairo_surface_is_meta (surface_pattern->surface)) - backend_status = _cairo_analysis_surface_analyze_meta_surface_pattern (surface, - source); - if (backend_status != CAIRO_STATUS_SUCCESS && - backend_status != CAIRO_INT_STATUS_IMAGE_FALLBACK) - return backend_status; - } - - if (mask->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) mask; - if (_cairo_surface_is_meta (surface_pattern->surface)) - backend_status = _cairo_analysis_surface_analyze_meta_surface_pattern (surface, - mask); - if (backend_status != CAIRO_STATUS_SUCCESS && - backend_status != CAIRO_INT_STATUS_IMAGE_FALLBACK) - return backend_status; - } - } - - status = _cairo_surface_get_extents (&surface->base, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - - status = _cairo_pattern_get_extents (mask, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - _cairo_rectangle_intersect (&extents, &surface->current_clip); - - status = _cairo_analysis_surface_add_operation (surface, &extents, backend_status); - - return status; -} - -static cairo_int_status_t -_cairo_analysis_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_analysis_surface_t *surface = abstract_surface; - cairo_status_t status, backend_status; - cairo_traps_t traps; - cairo_box_t box; - cairo_rectangle_int_t extents; - - if (!surface->target->backend->stroke) - backend_status = CAIRO_INT_STATUS_UNSUPPORTED; - else - backend_status = (*surface->target->backend->stroke) (surface->target, op, - source, path, style, - ctm, ctm_inverse, - tolerance, antialias); - - if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) - backend_status = _cairo_analysis_surface_analyze_meta_surface_pattern (surface, - source); - - status = _cairo_surface_get_extents (&surface->base, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - _cairo_rectangle_intersect (&extents, &surface->current_clip); - - if (_cairo_operator_bounded_by_mask (op)) { - box.p1.x = _cairo_fixed_from_int (extents.x); - box.p1.y = _cairo_fixed_from_int (extents.y); - box.p2.x = _cairo_fixed_from_int (extents.x + extents.width); - box.p2.y = _cairo_fixed_from_int (extents.y + extents.height); - - _cairo_traps_init (&traps); - _cairo_traps_limit (&traps, &box); - status = _cairo_path_fixed_stroke_to_traps (path, - style, - ctm, ctm_inverse, - tolerance, - &traps); - if (status) { - _cairo_traps_fini (&traps); - return status; - } - - if (traps.num_traps == 0) { - extents.x = 0; - extents.y = 0; - extents.width = 0; - extents.height = 0; - } else { - _cairo_traps_extents (&traps, &box); - extents.x = _cairo_fixed_integer_floor (box.p1.x); - extents.y = _cairo_fixed_integer_floor (box.p1.y); - extents.width = _cairo_fixed_integer_ceil (box.p2.x) - extents.x; - extents.height = _cairo_fixed_integer_ceil (box.p2.y) - extents.y; - } - _cairo_traps_fini (&traps); - } - - status = _cairo_analysis_surface_add_operation (surface, &extents, backend_status); - - return status; -} - -static cairo_int_status_t -_cairo_analysis_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_analysis_surface_t *surface = abstract_surface; - cairo_status_t status, backend_status; - cairo_traps_t traps; - cairo_box_t box; - cairo_rectangle_int_t extents; - - if (!surface->target->backend->fill) - backend_status = CAIRO_INT_STATUS_UNSUPPORTED; - else - backend_status = (*surface->target->backend->fill) (surface->target, op, - source, path, fill_rule, - tolerance, antialias); - - if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) - backend_status = _cairo_analysis_surface_analyze_meta_surface_pattern (surface, - source); - - status = _cairo_surface_get_extents (&surface->base, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - _cairo_rectangle_intersect (&extents, &surface->current_clip); - - if (_cairo_operator_bounded_by_mask (op)) { - box.p1.x = _cairo_fixed_from_int (extents.x); - box.p1.y = _cairo_fixed_from_int (extents.y); - box.p2.x = _cairo_fixed_from_int (extents.x + extents.width); - box.p2.y = _cairo_fixed_from_int (extents.y + extents.height); - - _cairo_traps_init (&traps); - _cairo_traps_limit (&traps, &box); - status = _cairo_path_fixed_fill_to_traps (path, - fill_rule, - tolerance, - &traps); - if (status) { - _cairo_traps_fini (&traps); - return status; - } - - if (traps.num_traps == 0) { - extents.x = 0; - extents.y = 0; - extents.width = 0; - extents.height = 0; - } else { - _cairo_traps_extents (&traps, &box); - extents.x = _cairo_fixed_integer_floor (box.p1.x); - extents.y = _cairo_fixed_integer_floor (box.p1.y); - extents.width = _cairo_fixed_integer_ceil (box.p2.x) - extents.x; - extents.height = _cairo_fixed_integer_ceil (box.p2.y) - extents.y; - } - - _cairo_traps_fini (&traps); - } - - status = _cairo_analysis_surface_add_operation (surface, &extents, backend_status); - - return status; -} - -static cairo_int_status_t -_cairo_analysis_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_analysis_surface_t *surface = abstract_surface; - cairo_status_t status, backend_status; - cairo_rectangle_int_t extents, glyph_extents; - - if (!surface->target->backend->show_glyphs) - backend_status = CAIRO_INT_STATUS_UNSUPPORTED; - else - backend_status = (*surface->target->backend->show_glyphs) (surface->target, op, - source, - glyphs, num_glyphs, - scaled_font); - - if (backend_status == CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) - backend_status = _cairo_analysis_surface_analyze_meta_surface_pattern (surface, - source); - - status = _cairo_surface_get_extents (&surface->base, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - _cairo_rectangle_intersect (&extents, &surface->current_clip); - - if (_cairo_operator_bounded_by_mask (op)) { - status = _cairo_scaled_font_glyph_device_extents (scaled_font, - glyphs, - num_glyphs, - &glyph_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &glyph_extents); - } - - status = _cairo_analysis_surface_add_operation (surface, &extents, backend_status); - - return status; -} - -static const cairo_surface_backend_t cairo_analysis_surface_backend = { - CAIRO_INTERNAL_SURFACE_TYPE_ANALYSIS, - NULL, /* create_similar */ - _cairo_analysis_surface_finish, - NULL, /* acquire_source_image */ - NULL, /* release_source_image */ - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - NULL, /* set_clip_region */ - _cairo_analysis_surface_intersect_clip_path, - _cairo_analysis_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - _cairo_analysis_surface_paint, - _cairo_analysis_surface_mask, - _cairo_analysis_surface_stroke, - _cairo_analysis_surface_fill, - _cairo_analysis_surface_show_glyphs, - NULL, /* snapshot */ - NULL, /* is_similar */ - NULL, /* reset */ - NULL, /* fill_stroke */ -}; - -cairo_surface_t * -_cairo_analysis_surface_create (cairo_surface_t *target, - int width, - int height) -{ - cairo_analysis_surface_t *surface; - - surface = malloc (sizeof (cairo_analysis_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - /* I believe the content type here is truly arbitrary. I'm quite - * sure nothing will ever use this value. */ - _cairo_surface_init (&surface->base, &cairo_analysis_surface_backend, - CAIRO_CONTENT_COLOR_ALPHA); - - surface->width = width; - surface->height = height; - cairo_matrix_init_identity (&surface->ctm); - surface->has_ctm = FALSE; - - surface->target = target; - surface->first_op = TRUE; - surface->has_supported = FALSE; - surface->has_unsupported = FALSE; - _cairo_region_init (&surface->supported_region); - _cairo_region_init (&surface->fallback_region); - - surface->current_clip.x = 0; - surface->current_clip.y = 0; - surface->current_clip.width = width; - surface->current_clip.height = height; - - return &surface->base; -} - -cairo_region_t * -_cairo_analysis_surface_get_supported (cairo_surface_t *abstract_surface) -{ - cairo_analysis_surface_t *surface = (cairo_analysis_surface_t *) abstract_surface; - - return &surface->supported_region; -} - -cairo_region_t * -_cairo_analysis_surface_get_unsupported (cairo_surface_t *abstract_surface) -{ - cairo_analysis_surface_t *surface = (cairo_analysis_surface_t *) abstract_surface; - - return &surface->fallback_region; -} - -cairo_bool_t -_cairo_analysis_surface_has_supported (cairo_surface_t *abstract_surface) -{ - cairo_analysis_surface_t *surface = (cairo_analysis_surface_t *) abstract_surface; - - return surface->has_supported; -} - -cairo_bool_t -_cairo_analysis_surface_has_unsupported (cairo_surface_t *abstract_surface) -{ - cairo_analysis_surface_t *surface = (cairo_analysis_surface_t *) abstract_surface; - - return surface->has_unsupported; -} - -void -_cairo_analysis_surface_get_bounding_box (cairo_surface_t *abstract_surface, - cairo_box_t *bbox) -{ - cairo_analysis_surface_t *surface = (cairo_analysis_surface_t *) abstract_surface; - - *bbox = surface->page_bbox; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-analysis-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-analysis-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-analysis-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-analysis-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * Copyright © 2005 Keith Packard - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith Packard - */ - -#ifndef CAIRO_ANALYSIS_SURFACE_H -#define CAIRO_ANALYSIS_SURFACE_H - -#include "cairoint.h" - -cairo_private cairo_surface_t * -_cairo_analysis_surface_create (cairo_surface_t *target, - int width, - int height); - -cairo_private cairo_region_t * -_cairo_analysis_surface_get_supported (cairo_surface_t *surface); - -cairo_private cairo_region_t * -_cairo_analysis_surface_get_unsupported (cairo_surface_t *surface); - -cairo_private cairo_bool_t -_cairo_analysis_surface_has_supported (cairo_surface_t *surface); - -cairo_private cairo_bool_t -_cairo_analysis_surface_has_unsupported (cairo_surface_t *surface); - -cairo_private void -_cairo_analysis_surface_get_bounding_box (cairo_surface_t *surface, - cairo_box_t *bbox); - -#endif /* CAIRO_ANALYSIS_SURFACE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-arc.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-arc.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-arc.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-arc.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,290 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-arc-private.h" - -/* Spline deviation from the circle in radius would be given by: - - error = sqrt (x**2 + y**2) - 1 - - A simpler error function to work with is: - - e = x**2 + y**2 - 1 - - From "Good approximation of circles by curvature-continuous Bezier - curves", Tor Dokken and Morten Daehlen, Computer Aided Geometric - Design 8 (1990) 22-41, we learn: - - abs (max(e)) = 4/27 * sin**6(angle/4) / cos**2(angle/4) - - and - abs (error) =~ 1/2 * e - - Of course, this error value applies only for the particular spline - approximation that is used in _cairo_gstate_arc_segment. -*/ -static double -_arc_error_normalized (double angle) -{ - return 2.0/27.0 * pow (sin (angle / 4), 6) / pow (cos (angle / 4), 2); -} - -static double -_arc_max_angle_for_tolerance_normalized (double tolerance) -{ - double angle, error; - int i; - - /* Use table lookup to reduce search time in most cases. */ - struct { - double angle; - double error; - } table[] = { - { M_PI / 1.0, 0.0185185185185185036127 }, - { M_PI / 2.0, 0.000272567143730179811158 }, - { M_PI / 3.0, 2.38647043651461047433e-05 }, - { M_PI / 4.0, 4.2455377443222443279e-06 }, - { M_PI / 5.0, 1.11281001494389081528e-06 }, - { M_PI / 6.0, 3.72662000942734705475e-07 }, - { M_PI / 7.0, 1.47783685574284411325e-07 }, - { M_PI / 8.0, 6.63240432022601149057e-08 }, - { M_PI / 9.0, 3.2715520137536980553e-08 }, - { M_PI / 10.0, 1.73863223499021216974e-08 }, - { M_PI / 11.0, 9.81410988043554039085e-09 }, - }; - int table_size = ARRAY_LENGTH (table); - - for (i = 0; i < table_size; i++) - if (table[i].error < tolerance) - return table[i].angle; - - ++i; - do { - angle = M_PI / i++; - error = _arc_error_normalized (angle); - } while (error > tolerance); - - return angle; -} - -static int -_arc_segments_needed (double angle, - double radius, - cairo_matrix_t *ctm, - double tolerance) -{ - double major_axis, max_angle; - - /* the error is amplified by at most the length of the - * major axis of the circle; see cairo-pen.c for a more detailed analysis - * of this. */ - major_axis = _cairo_matrix_transformed_circle_major_axis (ctm, radius); - max_angle = _arc_max_angle_for_tolerance_normalized (tolerance / major_axis); - - return (int) ceil (angle / max_angle); -} - -/* We want to draw a single spline approximating a circular arc radius - R from angle A to angle B. Since we want a symmetric spline that - matches the endpoints of the arc in position and slope, we know - that the spline control points must be: - - (R * cos(A), R * sin(A)) - (R * cos(A) - h * sin(A), R * sin(A) + h * cos (A)) - (R * cos(B) + h * sin(B), R * sin(B) - h * cos (B)) - (R * cos(B), R * sin(B)) - - for some value of h. - - "Approximation of circular arcs by cubic poynomials", Michael - Goldapp, Computer Aided Geometric Design 8 (1991) 227-238, provides - various values of h along with error analysis for each. - - From that paper, a very practical value of h is: - - h = 4/3 * tan(angle/4) - - This value does not give the spline with minimal error, but it does - provide a very good approximation, (6th-order convergence), and the - error expression is quite simple, (see the comment for - _arc_error_normalized). -*/ -static void -_cairo_arc_segment (cairo_t *cr, - double xc, - double yc, - double radius, - double angle_A, - double angle_B) -{ - double r_sin_A, r_cos_A; - double r_sin_B, r_cos_B; - double h; - - r_sin_A = radius * sin (angle_A); - r_cos_A = radius * cos (angle_A); - r_sin_B = radius * sin (angle_B); - r_cos_B = radius * cos (angle_B); - - h = 4.0/3.0 * tan ((angle_B - angle_A) / 4.0); - - cairo_curve_to (cr, - xc + r_cos_A - h * r_sin_A, - yc + r_sin_A + h * r_cos_A, - xc + r_cos_B + h * r_sin_B, - yc + r_sin_B - h * r_cos_B, - xc + r_cos_B, - yc + r_sin_B); -} - -static void -_cairo_arc_in_direction (cairo_t *cr, - double xc, - double yc, - double radius, - double angle_min, - double angle_max, - cairo_direction_t dir) -{ - while (angle_max - angle_min > 4 * M_PI) - angle_max -= 2 * M_PI; - - /* Recurse if drawing arc larger than pi */ - if (angle_max - angle_min > M_PI) { - double angle_mid = angle_min + (angle_max - angle_min) / 2.0; - /* XXX: Something tells me this block could be condensed. */ - if (dir == CAIRO_DIRECTION_FORWARD) { - _cairo_arc_in_direction (cr, xc, yc, radius, - angle_min, angle_mid, - dir); - - _cairo_arc_in_direction (cr, xc, yc, radius, - angle_mid, angle_max, - dir); - } else { - _cairo_arc_in_direction (cr, xc, yc, radius, - angle_mid, angle_max, - dir); - - _cairo_arc_in_direction (cr, xc, yc, radius, - angle_min, angle_mid, - dir); - } - } else { - cairo_matrix_t ctm; - int i, segments; - double angle, angle_step; - - cairo_get_matrix (cr, &ctm); - segments = _arc_segments_needed (angle_max - angle_min, - radius, &ctm, - cairo_get_tolerance (cr)); - angle_step = (angle_max - angle_min) / (double) segments; - - if (dir == CAIRO_DIRECTION_FORWARD) { - angle = angle_min; - } else { - angle = angle_max; - angle_step = - angle_step; - } - - for (i = 0; i < segments; i++, angle += angle_step) { - _cairo_arc_segment (cr, xc, yc, - radius, - angle, - angle + angle_step); - } - } -} - -/** - * _cairo_arc_path - * @cr: a cairo context - * @xc: X position of the center of the arc - * @yc: Y position of the center of the arc - * @radius: the radius of the arc - * @angle1: the start angle, in radians - * @angle2: the end angle, in radians - * - * Compute a path for the given arc and append it onto the current - * path within @cr. The arc will be accurate within the current - * tolerance and given the current transformation. - **/ -void -_cairo_arc_path (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2) -{ - _cairo_arc_in_direction (cr, xc, yc, - radius, - angle1, angle2, - CAIRO_DIRECTION_FORWARD); -} - -/** - * _cairo_arc_path_negative: - * @xc: X position of the center of the arc - * @yc: Y position of the center of the arc - * @radius: the radius of the arc - * @angle1: the start angle, in radians - * @angle2: the end angle, in radians - * @ctm: the current transformation matrix - * @tolerance: the current tolerance value - * @path: the path onto which the arc will be appended - * - * Compute a path for the given arc (defined in the negative - * direction) and append it onto the current path within @cr. The arc - * will be accurate within the current tolerance and given the current - * transformation. - **/ -void -_cairo_arc_path_negative (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2) -{ - _cairo_arc_in_direction (cr, xc, yc, - radius, - angle2, angle1, - CAIRO_DIRECTION_REVERSE); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-arc-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-arc-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-arc-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-arc-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_ARC_PRIVATE_H -#define CAIRO_ARC_PRIVATE_H - -#include "cairoint.h" - -cairo_private void -_cairo_arc_path (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2); - -cairo_private void -_cairo_arc_path_negative (cairo_t *cr, - double xc, - double yc, - double radius, - double angle1, - double angle2); - -#endif /* CAIRO_ARC_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-array.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-array.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-array.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-array.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,478 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Carl Worth - */ - -#include "cairoint.h" - -/** - * _cairo_array_init: - * - * Initialize a new #cairo_array_t object to store objects each of size - * @element_size. - * - * The #cairo_array_t object provides grow-by-doubling storage. It - * never interprets the data passed to it, nor does it provide any - * sort of callback mechanism for freeing resources held onto by - * stored objects. - * - * When finished using the array, _cairo_array_fini() should be - * called to free resources allocated during use of the array. - **/ -void -_cairo_array_init (cairo_array_t *array, int element_size) -{ - array->size = 0; - array->num_elements = 0; - array->element_size = element_size; - array->elements = NULL; - - array->is_snapshot = FALSE; -} - -/** - * _cairo_array_init_snapshot: - * @array: A #cairo_array_t to be initialized as a snapshot - * @other: The #cairo_array_t from which to create the snapshot - * - * Initialize @array as an immutable copy of @other. It is an error to - * call an array-modifying function (other than _cairo_array_fini) on - * @array after calling this function. - **/ -void -_cairo_array_init_snapshot (cairo_array_t *array, - const cairo_array_t *other) -{ - array->size = other->size; - array->num_elements = other->num_elements; - array->element_size = other->element_size; - array->elements = other->elements; - - array->is_snapshot = TRUE; -} - -/** - * _cairo_array_fini: - * - * Free all resources associated with @array. After this call, @array - * should not be used again without a subsequent call to - * _cairo_array_init() again first. - **/ -void -_cairo_array_fini (cairo_array_t *array) -{ - if (array->is_snapshot) - return; - - if (array->elements) { - free (* array->elements); - free (array->elements); - } -} - -/** - * _cairo_array_grow_by: - * - * Increase the size of @array (if needed) so that there are at least - * @additional free spaces in the array. The actual size of the array - * is always increased by doubling as many times as necessary. - **/ -cairo_status_t -_cairo_array_grow_by (cairo_array_t *array, unsigned int additional) -{ - char *new_elements; - unsigned int old_size = array->size; - unsigned int required_size = array->num_elements + additional; - unsigned int new_size; - - assert (! array->is_snapshot); - - /* check for integer overflow */ - if (required_size > INT_MAX || required_size < array->num_elements) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (required_size <= old_size) - return CAIRO_STATUS_SUCCESS; - - if (old_size == 0) - new_size = 1; - else - new_size = old_size * 2; - - while (new_size < required_size) - new_size = new_size * 2; - - if (array->elements == NULL) { - array->elements = malloc (sizeof (char *)); - if (array->elements == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - *array->elements = NULL; - } - - array->size = new_size; - new_elements = _cairo_realloc_ab (*array->elements, - array->size, array->element_size); - - if (new_elements == NULL) { - array->size = old_size; - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - *array->elements = new_elements; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_array_truncate: - * - * Truncate size of the array to @num_elements if less than the - * current size. No memory is actually freed. The stored objects - * beyond @num_elements are simply "forgotten". - **/ -void -_cairo_array_truncate (cairo_array_t *array, unsigned int num_elements) -{ - assert (! array->is_snapshot); - - if (num_elements < array->num_elements) - array->num_elements = num_elements; -} - -/** - * _cairo_array_index: - * - * Return value: A pointer to object stored at @index. If the - * resulting value is assigned to a pointer to an object of the same - * element_size as initially passed to _cairo_array_init() then that - * pointer may be used for further direct indexing with []. For - * example: - * - * #cairo_array_t array; - * double *values; - * - * _cairo_array_init (&array, sizeof(double)); - * ... calls to _cairo_array_append() here ... - * - * values = _cairo_array_index (&array, 0); - * for (i = 0; i < _cairo_array_num_elements (&array); i++) - * ... use values[i] here ... - **/ -void * -_cairo_array_index (cairo_array_t *array, unsigned int index) -{ - /* We allow an index of 0 for the no-elements case. - * This makes for cleaner calling code which will often look like: - * - * elements = _cairo_array_index (array, num_elements); - * for (i=0; i < num_elements; i++) { - * ... use elements[i] here ... - * } - * - * which in the num_elements==0 case gets the NULL pointer here, - * but never dereferences it. - */ - if (index == 0 && array->num_elements == 0) - return NULL; - - assert (index < array->num_elements); - - return (void *) &(*array->elements)[index * array->element_size]; -} - -/** - * _cairo_array_copy_element: - * - * Copy a single element out of the array from index @index into the - * location pointed to by @dst. - **/ -void -_cairo_array_copy_element (cairo_array_t *array, int index, void *dst) -{ - memcpy (dst, _cairo_array_index (array, index), array->element_size); -} - -/** - * _cairo_array_append: - * - * Append a single item onto the array by growing the array by at - * least one element, then copying element_size bytes from @element - * into the array. The address of the resulting object within the - * array can be determined with: - * - * _cairo_array_index (array, _cairo_array_num_elements (array) - 1); - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if insufficient memory is available for the - * operation. - **/ -cairo_status_t -_cairo_array_append (cairo_array_t *array, - const void *element) -{ - assert (! array->is_snapshot); - - return _cairo_array_append_multiple (array, element, 1); -} - -/** - * _cairo_array_append: - * - * Append one or more items onto the array by growing the array by - * @num_elements, then copying @num_elements * element_size bytes from - * @elements into the array. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if insufficient memory is available for the - * operation. - **/ -cairo_status_t -_cairo_array_append_multiple (cairo_array_t *array, - const void *elements, - int num_elements) -{ - cairo_status_t status; - void *dest; - - assert (! array->is_snapshot); - - status = _cairo_array_allocate (array, num_elements, &dest); - if (status) - return status; - - memcpy (dest, elements, num_elements * array->element_size); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_array_allocate: - * - * Allocate space at the end of the array for @num_elements additional - * elements, providing the address of the new memory chunk in - * @elements. This memory will be unitialized, but will be accounted - * for in the return value of _cairo_array_num_elements(). - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if insufficient memory is available for the - * operation. - **/ -cairo_status_t -_cairo_array_allocate (cairo_array_t *array, - unsigned int num_elements, - void **elements) -{ - cairo_status_t status; - - assert (! array->is_snapshot); - - status = _cairo_array_grow_by (array, num_elements); - if (status) - return status; - - assert (array->num_elements + num_elements <= array->size); - - *elements = &(*array->elements)[array->num_elements * array->element_size]; - - array->num_elements += num_elements; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_array_num_elements: - * - * Return value: The number of elements stored in @array. - **/ -int -_cairo_array_num_elements (cairo_array_t *array) -{ - return array->num_elements; -} - -/** - * _cairo_array_size: - * - * Return value: The number of elements for which there is currently - * space allocated in array. - **/ -int -_cairo_array_size (cairo_array_t *array) -{ - return array->size; -} - -/* #cairo_user_data_array_t */ - -typedef struct { - const cairo_user_data_key_t *key; - void *user_data; - cairo_destroy_func_t destroy; -} cairo_user_data_slot_t; - -/** - * _cairo_user_data_array_init: - * @array: a #cairo_user_data_array_t - * - * Initializes a #cairo_user_data_array_t structure for future - * use. After initialization, the array has no keys. Call - * _cairo_user_data_array_fini() to free any allocated memory - * when done using the array. - **/ -void -_cairo_user_data_array_init (cairo_user_data_array_t *array) -{ - _cairo_array_init (array, sizeof (cairo_user_data_slot_t)); -} - -/** - * _cairo_user_data_array_fini: - * @array: a #cairo_user_data_array_t - * - * Destroys all current keys in the user data array and deallocates - * any memory allocated for the array itself. - **/ -void -_cairo_user_data_array_fini (cairo_user_data_array_t *array) -{ - int i, num_slots; - cairo_user_data_slot_t *slots; - - num_slots = array->num_elements; - slots = _cairo_array_index (array, 0); - for (i = 0; i < num_slots; i++) { - if (slots[i].user_data != NULL && slots[i].destroy != NULL) - slots[i].destroy (slots[i].user_data); - } - - _cairo_array_fini (array); -} - -/** - * _cairo_user_data_array_get_data: - * @array: a #cairo_user_data_array_t - * @key: the address of the #cairo_user_data_key_t the user data was - * attached to - * - * Returns user data previously attached using the specified - * key. If no user data has been attached with the given key this - * function returns %NULL. - * - * Return value: the user data previously attached or %NULL. - **/ -void * -_cairo_user_data_array_get_data (cairo_user_data_array_t *array, - const cairo_user_data_key_t *key) -{ - int i, num_slots; - cairo_user_data_slot_t *slots; - - /* We allow this to support degenerate objects such as cairo_surface_nil. */ - if (array == NULL) - return NULL; - - num_slots = array->num_elements; - slots = _cairo_array_index (array, 0); - for (i = 0; i < num_slots; i++) { - if (slots[i].key == key) - return slots[i].user_data; - } - - return NULL; -} - -/** - * _cairo_user_data_array_set_data: - * @array: a #cairo_user_data_array_t - * @key: the address of a #cairo_user_data_key_t to attach the user data to - * @user_data: the user data to attach - * @destroy: a #cairo_destroy_func_t which will be called when the - * user data array is destroyed or when new user data is attached using the - * same key. - * - * Attaches user data to a user data array. To remove user data, - * call this function with the key that was used to set it and %NULL - * for @data. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a - * slot could not be allocated for the user data. - **/ -cairo_status_t -_cairo_user_data_array_set_data (cairo_user_data_array_t *array, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy) -{ - cairo_status_t status; - int i, num_slots; - cairo_user_data_slot_t *slots, *slot, new_slot; - - if (user_data) { - new_slot.key = key; - new_slot.user_data = user_data; - new_slot.destroy = destroy; - } else { - new_slot.key = NULL; - new_slot.user_data = NULL; - new_slot.destroy = NULL; - } - - slot = NULL; - num_slots = array->num_elements; - slots = _cairo_array_index (array, 0); - for (i = 0; i < num_slots; i++) { - if (slots[i].key == key) { - slot = &slots[i]; - if (slot->destroy && slot->user_data) - slot->destroy (slot->user_data); - break; - } - if (user_data && slots[i].user_data == NULL) { - slot = &slots[i]; /* Have to keep searching for an exact match */ - } - } - - if (slot) { - *slot = new_slot; - return CAIRO_STATUS_SUCCESS; - } - - status = _cairo_array_append (array, &new_slot); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-atomic.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-atomic.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-atomic.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-atomic.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * Contributor(s): - * Chris Wilson - */ - -#include "cairoint.h" - -#include "cairo-atomic-private.h" -#include "cairo-mutex-private.h" - -#ifndef CAIRO_HAS_ATOMIC_OPS -void -_cairo_atomic_int_inc (int *x) -{ - CAIRO_MUTEX_LOCK (_cairo_atomic_mutex); - *x += 1; - CAIRO_MUTEX_UNLOCK (_cairo_atomic_mutex); -} - -cairo_bool_t -_cairo_atomic_int_dec_and_test (int *x) -{ - cairo_bool_t ret; - - CAIRO_MUTEX_LOCK (_cairo_atomic_mutex); - ret = --*x == 0; - CAIRO_MUTEX_UNLOCK (_cairo_atomic_mutex); - - return ret; -} - -int -_cairo_atomic_int_cmpxchg (int *x, int oldv, int newv) -{ - int ret; - - CAIRO_MUTEX_LOCK (_cairo_atomic_mutex); - ret = *x; - if (ret == oldv) - *x = newv; - CAIRO_MUTEX_UNLOCK (_cairo_atomic_mutex); - - return ret; -} - -#endif - -#ifdef CAIRO_ATOMIC_OP_NEEDS_MEMORY_BARRIER -int -_cairo_atomic_int_get (int *x) -{ - int ret; - - CAIRO_MUTEX_LOCK (_cairo_atomic_mutex); - ret = *x; - CAIRO_MUTEX_UNLOCK (_cairo_atomic_mutex); - - return ret; -} - -void -_cairo_atomic_int_set (int *x, int value) -{ - CAIRO_MUTEX_LOCK (_cairo_atomic_mutex); - *x = value; - CAIRO_MUTEX_UNLOCK (_cairo_atomic_mutex); -} -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-atomic-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-atomic-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-atomic-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-atomic-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Chris Wilson - */ - -#ifndef CAIRO_ATOMIC_PRIVATE_H -#define CAIRO_ATOMIC_PRIVATE_H - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -CAIRO_BEGIN_DECLS - -#define CAIRO_HAS_ATOMIC_OPS 1 - -#if CAIRO_HAS_INTEL_ATOMIC_PRIMITIVES - -typedef int cairo_atomic_int_t; - -# define _cairo_atomic_int_inc(x) ((void) __sync_fetch_and_add(x, 1)) -# define _cairo_atomic_int_dec_and_test(x) (__sync_fetch_and_add(x, -1) == 1) -# define _cairo_atomic_int_cmpxchg(x, oldv, newv) __sync_val_compare_and_swap (x, oldv, newv) - -#else - -# include "cairo-compiler-private.h" - -# undef CAIRO_HAS_ATOMIC_OPS - -typedef int cairo_atomic_int_t; - -cairo_private void -_cairo_atomic_int_inc (int *x); - -cairo_private cairo_bool_t -_cairo_atomic_int_dec_and_test (int *x); - -cairo_private int -_cairo_atomic_int_cmpxchg (int *x, int oldv, int newv); - -#endif - - -#ifdef CAIRO_ATOMIC_OP_NEEDS_MEMORY_BARRIER - -# include "cairo-compiler-private.h" - -cairo_private int -_cairo_atomic_int_get (int *x); - -cairo_private void -_cairo_atomic_int_set (int *x, int value); - -#else - -# define _cairo_atomic_int_get(x) (*x) -# define _cairo_atomic_int_set(x, value) ((*x) = value) - -#endif - - -#define _cairo_status_set_error(status, err) do { \ - /* hide compiler warnings about cairo_status_t != int (gcc treats its as \ - * an unsigned integer instead, and about ignoring the return value. */ \ - int ret__ = _cairo_atomic_int_cmpxchg ((int *) status, CAIRO_STATUS_SUCCESS, err); \ - (void) ret__; \ -} while (0) - -CAIRO_END_DECLS - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-backend.pc.in libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-backend.pc.in --- libgdiplus-4.0-2.10.9/cairo/src/cairo-backend.pc.in 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-backend.pc.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: cairo-@backend_name@ -Description: @Backend_Name@ backend for cairo graphics library -Version: @VERSION@ - -Requires: @BACKEND_BASE@ @BACKEND_REQUIRES@ -Libs: @BACKEND_NONPKGCONFIG_LIBS@ -Cflags: -I${includedir}/cairo @BACKEND_NONPKGCONFIG_CFLAGS@ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-base85-stream.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-base85-stream.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-base85-stream.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-base85-stream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ -/* cairo_output_stream.c: Output stream abstraction - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Author(s): - * Kristian Høgsberg - */ - -#include "cairoint.h" -#include "cairo-output-stream-private.h" - -typedef struct _cairo_base85_stream { - cairo_output_stream_t base; - cairo_output_stream_t *output; - unsigned char four_tuple[4]; - int pending; -} cairo_base85_stream_t; - -static void -_expand_four_tuple_to_five (unsigned char four_tuple[4], - unsigned char five_tuple[5], - cairo_bool_t *all_zero) -{ - uint32_t value; - int digit, i; - - value = four_tuple[0] << 24 | four_tuple[1] << 16 | four_tuple[2] << 8 | four_tuple[3]; - if (all_zero) - *all_zero = TRUE; - for (i = 0; i < 5; i++) { - digit = value % 85; - if (digit != 0 && all_zero) - *all_zero = FALSE; - five_tuple[4-i] = digit + 33; - value = value / 85; - } -} - -static cairo_status_t -_cairo_base85_stream_write (cairo_output_stream_t *base, - const unsigned char *data, - unsigned int length) -{ - cairo_base85_stream_t *stream = (cairo_base85_stream_t *) base; - const unsigned char *ptr = data; - unsigned char five_tuple[5]; - cairo_bool_t is_zero; - - while (length) { - stream->four_tuple[stream->pending++] = *ptr++; - length--; - if (stream->pending == 4) { - _expand_four_tuple_to_five (stream->four_tuple, five_tuple, &is_zero); - if (is_zero) - _cairo_output_stream_write (stream->output, "z", 1); - else - _cairo_output_stream_write (stream->output, five_tuple, 5); - stream->pending = 0; - } - } - - return _cairo_output_stream_get_status (stream->output); -} - -static cairo_status_t -_cairo_base85_stream_close (cairo_output_stream_t *base) -{ - cairo_base85_stream_t *stream = (cairo_base85_stream_t *) base; - unsigned char five_tuple[5]; - - if (stream->pending) { - memset (stream->four_tuple + stream->pending, 0, 4 - stream->pending); - _expand_four_tuple_to_five (stream->four_tuple, five_tuple, NULL); - _cairo_output_stream_write (stream->output, five_tuple, stream->pending + 1); - } - - /* Mark end of base85 data */ - _cairo_output_stream_printf (stream->output, "~>"); - - return _cairo_output_stream_get_status (stream->output); -} - -cairo_output_stream_t * -_cairo_base85_stream_create (cairo_output_stream_t *output) -{ - cairo_base85_stream_t *stream; - - if (output->status) - return _cairo_output_stream_create_in_error (output->status); - - stream = malloc (sizeof (cairo_base85_stream_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, - _cairo_base85_stream_write, - _cairo_base85_stream_close); - stream->output = output; - stream->pending = 0; - - return &stream->base; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-bentley-ottmann.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-bentley-ottmann.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-bentley-ottmann.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-bentley-ottmann.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1829 +0,0 @@ -/* - * Copyright © 2004 Carl Worth - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Carl Worth - * - * Contributor(s): - * Carl D. Worth - */ - -/* Provide definitions for standalone compilation */ -#include "cairoint.h" - -#include "cairo-skiplist-private.h" -#include "cairo-freelist-private.h" - -typedef cairo_point_t cairo_bo_point32_t; - -typedef struct _cairo_bo_point128 { - cairo_int128_t x; - cairo_int128_t y; -} cairo_bo_point128_t; - -typedef struct _cairo_bo_intersect_ordinate { - int32_t ordinate; - enum { EXACT, INEXACT } exactness; -} cairo_bo_intersect_ordinate_t; - -typedef struct _cairo_bo_intersect_point { - cairo_bo_intersect_ordinate_t x; - cairo_bo_intersect_ordinate_t y; -} cairo_bo_intersect_point_t; - -typedef struct _cairo_bo_edge cairo_bo_edge_t; -typedef struct _sweep_line_elt sweep_line_elt_t; -typedef struct _cairo_bo_trap cairo_bo_trap_t; -typedef struct _cairo_bo_traps cairo_bo_traps_t; - -/* A deferred trapezoid of an edge. */ -struct _cairo_bo_trap { - cairo_bo_edge_t *right; - int32_t top; -}; - -struct _cairo_bo_traps { - cairo_traps_t *traps; - cairo_freelist_t freelist; - - /* These form the closed bounding box of the original input - * points. */ - cairo_fixed_t xmin; - cairo_fixed_t ymin; - cairo_fixed_t xmax; - cairo_fixed_t ymax; -}; - -struct _cairo_bo_edge { - cairo_bo_point32_t top; - cairo_bo_point32_t middle; - cairo_bo_point32_t bottom; - cairo_bool_t reversed; - cairo_bo_edge_t *prev; - cairo_bo_edge_t *next; - cairo_bo_trap_t *deferred_trap; - sweep_line_elt_t *sweep_line_elt; -}; - -struct _sweep_line_elt { - cairo_bo_edge_t *edge; - skip_elt_t elt; -}; - -#define SKIP_ELT_TO_EDGE_ELT(elt) SKIP_LIST_ELT_TO_DATA (sweep_line_elt_t, (elt)) -#define SKIP_ELT_TO_EDGE(elt) (SKIP_ELT_TO_EDGE_ELT (elt)->edge) - -typedef enum { - CAIRO_BO_STATUS_INTERSECTION, - CAIRO_BO_STATUS_PARALLEL, - CAIRO_BO_STATUS_NO_INTERSECTION -} cairo_bo_status_t; - -typedef enum { - CAIRO_BO_EVENT_TYPE_START, - CAIRO_BO_EVENT_TYPE_STOP, - CAIRO_BO_EVENT_TYPE_INTERSECTION -} cairo_bo_event_type_t; - -typedef struct _cairo_bo_event { - cairo_bo_event_type_t type; - cairo_bo_edge_t *e1; - cairo_bo_edge_t *e2; - cairo_bo_point32_t point; - skip_elt_t elt; -} cairo_bo_event_t; - -#define SKIP_ELT_TO_EVENT(elt) SKIP_LIST_ELT_TO_DATA (cairo_bo_event_t, (elt)) - -typedef struct _cairo_bo_event_queue { - cairo_skip_list_t intersection_queue; - - cairo_bo_event_t *startstop_events; - cairo_bo_event_t **sorted_startstop_event_ptrs; - unsigned next_startstop_event_index; - unsigned num_startstop_events; -} cairo_bo_event_queue_t; - -/* This structure extends #cairo_skip_list_t, which must come first. */ -typedef struct _cairo_bo_sweep_line { - cairo_skip_list_t active_edges; - cairo_bo_edge_t *head; - cairo_bo_edge_t *tail; - int32_t current_y; -} cairo_bo_sweep_line_t; - - -static inline int -_cairo_bo_point32_compare (cairo_bo_point32_t const *a, - cairo_bo_point32_t const *b) -{ - int cmp = a->y - b->y; - if (cmp) return cmp; - return a->x - b->x; -} - -/* Compare the slope of a to the slope of b, returning 1, 0, -1 if the - * slope a is respectively greater than, equal to, or less than the - * slope of b. - * - * For each edge, consider the direction vector formed from: - * - * top -> bottom - * - * which is: - * - * (dx, dy) = (bottom.x - top.x, bottom.y - top.y) - * - * We then define the slope of each edge as dx/dy, (which is the - * inverse of the slope typically used in math instruction). We never - * compute a slope directly as the value approaches infinity, but we - * can derive a slope comparison without division as follows, (where - * the ? represents our compare operator). - * - * 1. slope(a) ? slope(b) - * 2. adx/ady ? bdx/bdy - * 3. (adx * bdy) ? (bdx * ady) - * - * Note that from step 2 to step 3 there is no change needed in the - * sign of the result since both ady and bdy are guaranteed to be - * greater than or equal to 0. - * - * When using this slope comparison to sort edges, some care is needed - * when interpreting the results. Since the slope compare operates on - * distance vectors from top to bottom it gives a correct left to - * right sort for edges that have a common top point, (such as two - * edges with start events at the same location). On the other hand, - * the sense of the result will be exactly reversed for two edges that - * have a common stop point. - */ -static int -_slope_compare (cairo_bo_edge_t *a, - cairo_bo_edge_t *b) -{ - /* XXX: We're assuming here that dx and dy will still fit in 32 - * bits. That's not true in general as there could be overflow. We - * should prevent that before the tessellation algorithm - * begins. - */ - int32_t adx = a->bottom.x - a->top.x; - int32_t bdx = b->bottom.x - b->top.x; - - /* Since the dy's are all positive by construction we can fast - * path the case where the two edges point in different directions - * with respect to x. */ - if ((adx ^ bdx) < 0) { - return adx < 0 ? -1 : +1; - } - else { - int32_t ady = a->bottom.y - a->top.y; - int32_t bdy = b->bottom.y - b->top.y; - int64_t adx_bdy = _cairo_int32x32_64_mul (adx, bdy); - int64_t bdx_ady = _cairo_int32x32_64_mul (bdx, ady); - - /* if (adx * bdy > bdx * ady) */ - if (_cairo_int64_gt (adx_bdy, bdx_ady)) - return 1; - - /* if (adx * bdy < bdx * ady) */ - if (_cairo_int64_lt (adx_bdy, bdx_ady)) - return -1; - return 0; - } -} - -static cairo_quorem64_t -edge_x_for_y (cairo_bo_edge_t *edge, - int32_t y) -{ - /* XXX: We're assuming here that dx and dy will still fit in 32 - * bits. That's not true in general as there could be overflow. We - * should prevent that before the tessellation algorithm - * begins. - */ - int32_t dx = edge->bottom.x - edge->top.x; - int32_t dy = edge->bottom.y - edge->top.y; - int64_t numerator; - cairo_quorem64_t quorem; - - if (edge->middle.y == y) { - quorem.quo = edge->middle.x; - quorem.rem = 0; - return quorem; - } - if (edge->bottom.y == y) { - quorem.quo = edge->bottom.x; - quorem.rem = 0; - return quorem; - } - if (dy == 0) { - quorem.quo = _cairo_int32_to_int64 (edge->top.x); - quorem.rem = 0; - return quorem; - } - - /* edge->top.x + (y - edge->top.y) * dx / dy */ - numerator = _cairo_int32x32_64_mul ((y - edge->top.y), dx); - quorem = _cairo_int64_divrem (numerator, dy); - quorem.quo += edge->top.x; - - return quorem; -} - -static int -_cairo_bo_sweep_line_compare_edges (cairo_bo_sweep_line_t *sweep_line, - cairo_bo_edge_t *a, - cairo_bo_edge_t *b) -{ - cairo_quorem64_t ax; - cairo_quorem64_t bx; - int cmp; - - if (a == b) - return 0; - - /* don't bother solving for abscissa if the edges' bounding boxes - * can be used to order them. */ - { - int32_t amin, amax; - int32_t bmin, bmax; - if (a->middle.x < a->bottom.x) { - amin = a->middle.x; - amax = a->bottom.x; - } else { - amin = a->bottom.x; - amax = a->middle.x; - } - if (b->middle.x < b->bottom.x) { - bmin = b->middle.x; - bmax = b->bottom.x; - } else { - bmin = b->bottom.x; - bmax = b->middle.x; - } - if (amax < bmin) return -1; - if (amin > bmax) return +1; - } - - ax = edge_x_for_y (a, sweep_line->current_y); - bx = edge_x_for_y (b, sweep_line->current_y); - if (ax.quo > bx.quo) - return 1; - else if (ax.quo < bx.quo) - return -1; - - /* Quotients are identical, test remainder. */ - if (ax.rem > bx.rem) - return 1; - else if (ax.rem < bx.rem) - return -1; - - /* The two edges intersect exactly at y, so fall back on slope - * comparison. We know that this compare_edges function will be - * called only when starting a new edge, (not when stopping an - * edge), so we don't have to worry about conditionally inverting - * the sense of _slope_compare. */ - cmp = _slope_compare (a, b); - if (cmp) - return cmp; - - /* We've got two collinear edges now. */ - - /* Since we're dealing with start events, prefer comparing top - * edges before bottom edges. */ - cmp = _cairo_bo_point32_compare (&a->top, &b->top); - if (cmp) - return cmp; - - cmp = _cairo_bo_point32_compare (&a->bottom, &b->bottom); - if (cmp) - return cmp; - - /* Finally, we've got two identical edges. Let's finally - * discriminate by a simple pointer comparison, (which works only - * because we "know" the edges are all in a single array and don't - * move. */ - if (a > b) - return 1; - else - return -1; -} - -static int -_sweep_line_elt_compare (void *list, - void *a, - void *b) -{ - cairo_bo_sweep_line_t *sweep_line = list; - sweep_line_elt_t *edge_elt_a = a; - sweep_line_elt_t *edge_elt_b = b; - - return _cairo_bo_sweep_line_compare_edges (sweep_line, - edge_elt_a->edge, - edge_elt_b->edge); -} - -static inline int -cairo_bo_event_compare (cairo_bo_event_t const *a, - cairo_bo_event_t const *b) -{ - int cmp; - - /* The major motion of the sweep line is vertical (top-to-bottom), - * and the minor motion is horizontal (left-to-right), dues to the - * infinitesimal tilt rule. - * - * Our point comparison function respects these rules. - */ - cmp = _cairo_bo_point32_compare (&a->point, &b->point); - if (cmp) - return cmp; - - /* The events share a common point, so further discrimination is - * determined by the event type. Due to the infinitesimal - * shortening rule, stop events come first, then intersection - * events, then start events. - */ - if (a->type != b->type) { - if (a->type == CAIRO_BO_EVENT_TYPE_STOP) - return -1; - if (a->type == CAIRO_BO_EVENT_TYPE_START) - return 1; - - if (b->type == CAIRO_BO_EVENT_TYPE_STOP) - return 1; - if (b->type == CAIRO_BO_EVENT_TYPE_START) - return -1; - } - - /* At this stage we are looking at two events of the same type at - * the same point. The final sort key is a slope comparison. We - * need a different sense for start and stop events based on the - * shortening rule. - * - * Note: Fortunately, we get to ignore errors in the relative - * ordering of intersection events. This means we don't even have - * to look at e2 here, nor worry about which sense of the slope - * comparison test is used for intersection events. - */ - cmp = _slope_compare (a->e1, b->e1); - if (cmp) { - if (a->type == CAIRO_BO_EVENT_TYPE_START) - return cmp; - else - return - cmp; - } - - /* Next look at the opposite point. This leaves ambiguities only - * for identical edges. */ - if (a->type == CAIRO_BO_EVENT_TYPE_START) { - cmp = _cairo_bo_point32_compare (&b->e1->bottom, - &a->e1->bottom); - if (cmp) - return cmp; - } - else if (a->type == CAIRO_BO_EVENT_TYPE_STOP) { - cmp = _cairo_bo_point32_compare (&a->e1->top, - &b->e1->top); - if (cmp) - return cmp; - } - else { /* CAIRO_BO_EVENT_TYPE_INTERSECT */ - /* For two intersection events at the identical point, we - * don't care what order they sort in, but we do care that we - * have a stable sort. In particular intersections between - * different pairs of edges must never return 0. */ - cmp = _cairo_bo_point32_compare (&a->e2->top, &b->e2->top); - if (cmp) - return cmp; - cmp = _cairo_bo_point32_compare (&a->e2->bottom, &b->e2->bottom); - if (cmp) - return cmp; - cmp = _cairo_bo_point32_compare (&a->e1->top, &b->e1->top); - if (cmp) - return cmp; - cmp = _cairo_bo_point32_compare (&a->e1->bottom, &b->e1->bottom); - if (cmp) - return cmp; - } - - /* Discrimination based on the edge pointers. */ - if (a->e1 < b->e1) - return -1; - if (a->e1 > b->e1) - return +1; - if (a->e2 < b->e2) - return -1; - if (a->e2 > b->e2) - return +1; - return 0; -} - -static int -cairo_bo_event_compare_abstract (void *list, - void *a, - void *b) -{ - cairo_bo_event_t *event_a = a; - cairo_bo_event_t *event_b = b; - - return cairo_bo_event_compare (event_a, event_b); -} - -static int -cairo_bo_event_compare_pointers (void const *voida, - void const *voidb) -{ - cairo_bo_event_t const * const *a = voida; - cairo_bo_event_t const * const *b = voidb; - if (*a != *b) { - int cmp = cairo_bo_event_compare (*a, *b); - if (cmp) - return cmp; - if (*a < *b) - return -1; - if (*a > *b) - return +1; - } - return 0; -} - -static inline cairo_int64_t -det32_64 (int32_t a, - int32_t b, - int32_t c, - int32_t d) -{ - cairo_int64_t ad; - cairo_int64_t bc; - - /* det = a * d - b * c */ - ad = _cairo_int32x32_64_mul (a, d); - bc = _cairo_int32x32_64_mul (b, c); - - return _cairo_int64_sub (ad, bc); -} - -static inline cairo_int128_t -det64_128 (cairo_int64_t a, - cairo_int64_t b, - cairo_int64_t c, - cairo_int64_t d) -{ - cairo_int128_t ad; - cairo_int128_t bc; - - /* det = a * d - b * c */ - ad = _cairo_int64x64_128_mul (a, d); - bc = _cairo_int64x64_128_mul (b, c); - - return _cairo_int128_sub (ad, bc); -} - -/* Compute the intersection of two lines as defined by two edges. The - * result is provided as a coordinate pair of 128-bit integers. - * - * Returns %CAIRO_BO_STATUS_INTERSECTION if there is an intersection or - * CAIRO_BO_STATUS_PARALLEL if the two lines are exactly parallel. - */ -static cairo_bo_status_t -intersect_lines (cairo_bo_edge_t *a, - cairo_bo_edge_t *b, - cairo_bo_intersect_point_t *intersection) -{ - cairo_int64_t a_det, b_det; - - /* XXX: We're assuming here that dx and dy will still fit in 32 - * bits. That's not true in general as there could be overflow. We - * should prevent that before the tessellation algorithm begins. - * What we're doing to mitigate this is to perform clamping in - * cairo_bo_tessellate_polygon(). - */ - int32_t dx1 = a->top.x - a->bottom.x; - int32_t dy1 = a->top.y - a->bottom.y; - - int32_t dx2 = b->top.x - b->bottom.x; - int32_t dy2 = b->top.y - b->bottom.y; - - cairo_int64_t den_det = det32_64 (dx1, dy1, dx2, dy2); - cairo_quorem64_t qr; - - if (_cairo_int64_eq (den_det, 0)) - return CAIRO_BO_STATUS_PARALLEL; - - a_det = det32_64 (a->top.x, a->top.y, - a->bottom.x, a->bottom.y); - b_det = det32_64 (b->top.x, b->top.y, - b->bottom.x, b->bottom.y); - - /* x = det (a_det, dx1, b_det, dx2) / den_det */ - qr = _cairo_int_96by64_32x64_divrem (det64_128 (a_det, dx1, - b_det, dx2), - den_det); - if (_cairo_int64_eq (qr.rem,den_det)) - return CAIRO_BO_STATUS_NO_INTERSECTION; - intersection->x.ordinate = qr.quo; - intersection->x.exactness = qr.rem ? INEXACT : EXACT; - - /* y = det (a_det, dy1, b_det, dy2) / den_det */ - qr = _cairo_int_96by64_32x64_divrem (det64_128 (a_det, dy1, - b_det, dy2), - den_det); - if (_cairo_int64_eq (qr.rem, den_det)) - return CAIRO_BO_STATUS_NO_INTERSECTION; - intersection->y.ordinate = qr.quo; - intersection->y.exactness = qr.rem ? INEXACT : EXACT; - - return CAIRO_BO_STATUS_INTERSECTION; -} - -static int -_cairo_bo_intersect_ordinate_32_compare (cairo_bo_intersect_ordinate_t a, - int32_t b) -{ - /* First compare the quotient */ - if (a.ordinate > b) - return +1; - if (a.ordinate < b) - return -1; - /* With quotient identical, if remainder is 0 then compare equal */ - /* Otherwise, the non-zero remainder makes a > b */ - return INEXACT == a.exactness; -} - -/* Does the given edge contain the given point. The point must already - * be known to be contained within the line determined by the edge, - * (most likely the point results from an intersection of this edge - * with another). - * - * If we had exact arithmetic, then this function would simply be a - * matter of examining whether the y value of the point lies within - * the range of y values of the edge. But since intersection points - * are not exact due to being rounded to the nearest integer within - * the available precision, we must also examine the x value of the - * point. - * - * The definition of "contains" here is that the given intersection - * point will be seen by the sweep line after the start event for the - * given edge and before the stop event for the edge. See the comments - * in the implementation for more details. - */ -static cairo_bool_t -_cairo_bo_edge_contains_intersect_point (cairo_bo_edge_t *edge, - cairo_bo_intersect_point_t *point) -{ - int cmp_top, cmp_bottom; - - /* XXX: When running the actual algorithm, we don't actually need to - * compare against edge->top at all here, since any intersection above - * top is eliminated early via a slope comparison. We're leaving these - * here for now only for the sake of the quadratic-time intersection - * finder which needs them. - */ - - cmp_top = _cairo_bo_intersect_ordinate_32_compare (point->y, edge->top.y); - cmp_bottom = _cairo_bo_intersect_ordinate_32_compare (point->y, edge->bottom.y); - - if (cmp_top < 0 || cmp_bottom > 0) - { - return FALSE; - } - - if (cmp_top > 0 && cmp_bottom < 0) - { - return TRUE; - } - - /* At this stage, the point lies on the same y value as either - * edge->top or edge->bottom, so we have to examine the x value in - * order to properly determine containment. */ - - /* If the y value of the point is the same as the y value of the - * top of the edge, then the x value of the point must be greater - * to be considered as inside the edge. Similarly, if the y value - * of the point is the same as the y value of the bottom of the - * edge, then the x value of the point must be less to be - * considered as inside. */ - - if (cmp_top == 0) - return (_cairo_bo_intersect_ordinate_32_compare (point->x, edge->top.x) > 0); - else /* cmp_bottom == 0 */ - return (_cairo_bo_intersect_ordinate_32_compare (point->x, edge->bottom.x) < 0); -} - -/* Compute the intersection of two edges. The result is provided as a - * coordinate pair of 128-bit integers. - * - * Returns %CAIRO_BO_STATUS_INTERSECTION if there is an intersection - * that is within both edges, %CAIRO_BO_STATUS_NO_INTERSECTION if the - * intersection of the lines defined by the edges occurs outside of - * one or both edges, and %CAIRO_BO_STATUS_PARALLEL if the two edges - * are exactly parallel. - * - * Note that when determining if a candidate intersection is "inside" - * an edge, we consider both the infinitesimal shortening and the - * infinitesimal tilt rules described by John Hobby. Specifically, if - * the intersection is exactly the same as an edge point, it is - * effectively outside (no intersection is returned). Also, if the - * intersection point has the same - */ -static cairo_bo_status_t -_cairo_bo_edge_intersect (cairo_bo_edge_t *a, - cairo_bo_edge_t *b, - cairo_bo_point32_t *intersection) -{ - cairo_bo_status_t status; - cairo_bo_intersect_point_t quorem; - - status = intersect_lines (a, b, &quorem); - if (status) - return status; - - if (! _cairo_bo_edge_contains_intersect_point (a, &quorem)) - return CAIRO_BO_STATUS_NO_INTERSECTION; - - if (! _cairo_bo_edge_contains_intersect_point (b, &quorem)) - return CAIRO_BO_STATUS_NO_INTERSECTION; - - /* Now that we've correctly compared the intersection point and - * determined that it lies within the edge, then we know that we - * no longer need any more bits of storage for the intersection - * than we do for our edge coordinates. We also no longer need the - * remainder from the division. */ - intersection->x = quorem.x.ordinate; - intersection->y = quorem.y.ordinate; - - return CAIRO_BO_STATUS_INTERSECTION; -} - -static void -_cairo_bo_event_init (cairo_bo_event_t *event, - cairo_bo_event_type_t type, - cairo_bo_edge_t *e1, - cairo_bo_edge_t *e2, - cairo_bo_point32_t point) -{ - event->type = type; - event->e1 = e1; - event->e2 = e2; - event->point = point; -} - -static cairo_status_t -_cairo_bo_event_queue_insert (cairo_bo_event_queue_t *queue, - cairo_bo_event_t *event) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - /* Don't insert if there's already an equivalent intersection event in the queue. */ - if (_cairo_skip_list_insert (&queue->intersection_queue, event, - event->type == CAIRO_BO_EVENT_TYPE_INTERSECTION) == NULL) - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return status; -} - -static void -_cairo_bo_event_queue_delete (cairo_bo_event_queue_t *queue, - cairo_bo_event_t *event) -{ - if (CAIRO_BO_EVENT_TYPE_INTERSECTION == event->type) - _cairo_skip_list_delete_given ( &queue->intersection_queue, &event->elt ); -} - -static cairo_bo_event_t * -_cairo_bo_event_dequeue (cairo_bo_event_queue_t *event_queue) -{ - skip_elt_t *elt = event_queue->intersection_queue.chains[0]; - cairo_bo_event_t *intersection = elt ? SKIP_ELT_TO_EVENT (elt) : NULL; - cairo_bo_event_t *startstop; - - if (event_queue->next_startstop_event_index == event_queue->num_startstop_events) - return intersection; - startstop = event_queue->sorted_startstop_event_ptrs[ - event_queue->next_startstop_event_index]; - - if (!intersection || cairo_bo_event_compare (startstop, intersection) <= 0) - { - event_queue->next_startstop_event_index++; - return startstop; - } - return intersection; -} - -static cairo_status_t -_cairo_bo_event_queue_init (cairo_bo_event_queue_t *event_queue, - cairo_bo_edge_t *edges, - int num_edges) -{ - int i; - cairo_bo_event_t *events, **sorted_event_ptrs; - unsigned num_events = 2*num_edges; - - memset (event_queue, 0, sizeof(*event_queue)); - - _cairo_skip_list_init (&event_queue->intersection_queue, - cairo_bo_event_compare_abstract, - sizeof (cairo_bo_event_t)); - if (0 == num_edges) - return CAIRO_STATUS_SUCCESS; - - /* The skip_elt_t field of a cairo_bo_event_t isn't used for start - * or stop events, so this allocation is safe. XXX: make the - * event type a union so it doesn't always contain the skip - * elt? */ - events = _cairo_malloc_ab (num_events, sizeof (cairo_bo_event_t) + sizeof(cairo_bo_event_t*)); - if (events == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - sorted_event_ptrs = (cairo_bo_event_t **) (events + num_events); - event_queue->startstop_events = events; - event_queue->sorted_startstop_event_ptrs = sorted_event_ptrs; - event_queue->num_startstop_events = num_events; - event_queue->next_startstop_event_index = 0; - - for (i = 0; i < num_edges; i++) { - sorted_event_ptrs[2*i] = &events[2*i]; - sorted_event_ptrs[2*i+1] = &events[2*i+1]; - - /* Initialize "middle" to top */ - edges[i].middle = edges[i].top; - - _cairo_bo_event_init (&events[2*i], - CAIRO_BO_EVENT_TYPE_START, - &edges[i], NULL, - edges[i].top); - - _cairo_bo_event_init (&events[2*i+1], - CAIRO_BO_EVENT_TYPE_STOP, - &edges[i], NULL, - edges[i].bottom); - } - - qsort (sorted_event_ptrs, num_events, - sizeof(cairo_bo_event_t *), - cairo_bo_event_compare_pointers); - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_bo_event_queue_fini (cairo_bo_event_queue_t *event_queue) -{ - _cairo_skip_list_fini (&event_queue->intersection_queue); - if (event_queue->startstop_events) - free (event_queue->startstop_events); -} - -static cairo_status_t -_cairo_bo_event_queue_insert_if_intersect_below_current_y (cairo_bo_event_queue_t *event_queue, - cairo_bo_edge_t *left, - cairo_bo_edge_t *right) -{ - cairo_bo_status_t status; - cairo_bo_point32_t intersection; - cairo_bo_event_t event; - - if (left == NULL || right == NULL) - return CAIRO_STATUS_SUCCESS; - - /* The names "left" and "right" here are correct descriptions of - * the order of the two edges within the active edge list. So if a - * slope comparison also puts left less than right, then we know - * that the intersection of these two segments has oalready - * occurred before the current sweep line position. */ - if (_slope_compare (left, right) < 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_bo_edge_intersect (left, right, &intersection); - if (status == CAIRO_BO_STATUS_PARALLEL || - status == CAIRO_BO_STATUS_NO_INTERSECTION) - { - return CAIRO_STATUS_SUCCESS; - } - - _cairo_bo_event_init (&event, - CAIRO_BO_EVENT_TYPE_INTERSECTION, - left, right, - intersection); - - return _cairo_bo_event_queue_insert (event_queue, &event); -} - -static void -_cairo_bo_sweep_line_init (cairo_bo_sweep_line_t *sweep_line) -{ - _cairo_skip_list_init (&sweep_line->active_edges, - _sweep_line_elt_compare, - sizeof (sweep_line_elt_t)); - sweep_line->head = NULL; - sweep_line->tail = NULL; - sweep_line->current_y = 0; -} - -static void -_cairo_bo_sweep_line_fini (cairo_bo_sweep_line_t *sweep_line) -{ - _cairo_skip_list_fini (&sweep_line->active_edges); -} - -static cairo_status_t -_cairo_bo_sweep_line_insert (cairo_bo_sweep_line_t *sweep_line, - cairo_bo_edge_t *edge) -{ - skip_elt_t *next_elt; - sweep_line_elt_t *sweep_line_elt; - cairo_bo_edge_t **prev_of_next, **next_of_prev; - - sweep_line_elt = _cairo_skip_list_insert (&sweep_line->active_edges, &edge, - 1 /* unique inserts*/); - if (sweep_line_elt == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - next_elt = sweep_line_elt->elt.next[0]; - if (next_elt) - prev_of_next = & (SKIP_ELT_TO_EDGE (next_elt)->prev); - else - prev_of_next = &sweep_line->tail; - - if (*prev_of_next) - next_of_prev = &(*prev_of_next)->next; - else - next_of_prev = &sweep_line->head; - - edge->prev = *prev_of_next; - edge->next = *next_of_prev; - *prev_of_next = edge; - *next_of_prev = edge; - - edge->sweep_line_elt = sweep_line_elt; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_bo_sweep_line_delete (cairo_bo_sweep_line_t *sweep_line, - cairo_bo_edge_t *edge) -{ - cairo_bo_edge_t **left_next, **right_prev; - - _cairo_skip_list_delete_given (&sweep_line->active_edges, &edge->sweep_line_elt->elt); - - left_next = &sweep_line->head; - if (edge->prev) - left_next = &edge->prev->next; - - right_prev = &sweep_line->tail; - if (edge->next) - right_prev = &edge->next->prev; - - *left_next = edge->next; - *right_prev = edge->prev; -} - -static void -_cairo_bo_sweep_line_swap (cairo_bo_sweep_line_t *sweep_line, - cairo_bo_edge_t *left, - cairo_bo_edge_t *right) -{ - sweep_line_elt_t *left_elt, *right_elt; - cairo_bo_edge_t **before_left, **after_right; - - /* Within the skip list we can do the swap simply by swapping the - * pointers to the edge elements and leaving all of the skip list - * elements and pointers unchanged. */ - left_elt = left->sweep_line_elt; - right_elt = SKIP_ELT_TO_EDGE_ELT (left_elt->elt.next[0]); - - left_elt->edge = right; - right->sweep_line_elt = left_elt; - - right_elt->edge = left; - left->sweep_line_elt = right_elt; - - /* Within the doubly-linked list of edges, there's a bit more - * bookkeeping involved with the swap. */ - before_left = &sweep_line->head; - if (left->prev) - before_left = &left->prev->next; - *before_left = right; - - after_right = &sweep_line->tail; - if (right->next) - after_right = &right->next->prev; - *after_right = left; - - left->next = right->next; - right->next = left; - - right->prev = left->prev; - left->prev = right; -} - -#define DEBUG_PRINT_STATE 0 -#if DEBUG_PRINT_STATE -static void -_cairo_bo_edge_print (cairo_bo_edge_t *edge) -{ - printf ("(0x%x, 0x%x)-(0x%x, 0x%x)", - edge->top.x, edge->top.y, - edge->bottom.x, edge->bottom.y); -} - -static void -_cairo_bo_event_print (cairo_bo_event_t *event) -{ - switch (event->type) { - case CAIRO_BO_EVENT_TYPE_START: - printf ("Start: "); - break; - case CAIRO_BO_EVENT_TYPE_STOP: - printf ("Stop: "); - break; - case CAIRO_BO_EVENT_TYPE_INTERSECTION: - printf ("Intersection: "); - break; - } - printf ("(%d, %d)\t", event->point.x, event->point.y); - _cairo_bo_edge_print (event->e1); - if (event->type == CAIRO_BO_EVENT_TYPE_INTERSECTION) { - printf (" X "); - _cairo_bo_edge_print (event->e2); - } - printf ("\n"); -} - -static void -_cairo_bo_event_queue_print (cairo_bo_event_queue_t *event_queue) -{ - skip_elt_t *elt; - /* XXX: fixme to print the start/stop array too. */ - cairo_skip_list_t *queue = &event_queue->intersection_queue; - cairo_bo_event_t *event; - - printf ("Event queue:\n"); - - for (elt = queue->chains[0]; - elt; - elt = elt->next[0]) - { - event = SKIP_ELT_TO_EVENT (elt); - _cairo_bo_event_print (event); - } -} - -static void -_cairo_bo_sweep_line_print (cairo_bo_sweep_line_t *sweep_line) -{ - cairo_bool_t first = TRUE; - skip_elt_t *elt; - cairo_bo_edge_t *edge; - - printf ("Sweep line (reversed): "); - - for (edge = sweep_line->tail; - edge; - edge = edge->prev) - { - if (!first) - printf (", "); - _cairo_bo_edge_print (edge); - first = FALSE; - } - printf ("\n"); - - - printf ("Sweep line from edge list: "); - first = TRUE; - for (edge = sweep_line->head; - edge; - edge = edge->next) - { - if (!first) - printf (", "); - _cairo_bo_edge_print (edge); - first = FALSE; - } - printf ("\n"); - - printf ("Sweep line from skip list: "); - first = TRUE; - for (elt = sweep_line->active_edges.chains[0]; - elt; - elt = elt->next[0]) - { - if (!first) - printf (", "); - _cairo_bo_edge_print (SKIP_ELT_TO_EDGE (elt)); - first = FALSE; - } - printf ("\n"); -} - -static void -print_state (const char *msg, - cairo_bo_event_queue_t *event_queue, - cairo_bo_sweep_line_t *sweep_line) -{ - printf ("%s\n", msg); - _cairo_bo_event_queue_print (event_queue); - _cairo_bo_sweep_line_print (sweep_line); - printf ("\n"); -} -#endif - -/* Adds the trapezoid, if any, of the left edge to the #cairo_traps_t - * of bo_traps. */ -static cairo_status_t -_cairo_bo_edge_end_trap (cairo_bo_edge_t *left, - int32_t bot, - cairo_bo_traps_t *bo_traps) -{ - cairo_fixed_t fixed_top, fixed_bot; - cairo_bo_trap_t *trap = left->deferred_trap; - cairo_bo_edge_t *right; - - if (!trap) - return CAIRO_STATUS_SUCCESS; - - /* If the right edge of the trapezoid stopped earlier than the - * left edge, then cut the trapezoid bottom early. */ - right = trap->right; - if (right->bottom.y < bot) - bot = right->bottom.y; - - fixed_top = trap->top; - fixed_bot = bot; - - /* Only emit trapezoids with positive height. */ - if (fixed_top < fixed_bot) { - cairo_point_t left_top, left_bot, right_top, right_bot; - cairo_fixed_t xmin = bo_traps->xmin; - cairo_fixed_t ymin = bo_traps->ymin; - fixed_top += ymin; - fixed_bot += ymin; - - left_top.x = left->top.x + xmin; - left_top.y = left->top.y + ymin; - right_top.x = right->top.x + xmin; - right_top.y = right->top.y + ymin; - left_bot.x = left->bottom.x + xmin; - left_bot.y = left->bottom.y + ymin; - right_bot.x = right->bottom.x + xmin; - right_bot.y = right->bottom.y + ymin; - - /* Avoid emitting the trapezoid if it is obviously degenerate. - * TODO: need a real collinearity test here for the cases - * where the trapezoid is degenerate, yet the top and bottom - * coordinates aren't equal. */ - if (left_top.x != right_top.x || - left_top.y != right_top.y || - left_bot.x != right_bot.x || - left_bot.y != right_bot.y) - { - _cairo_traps_add_trap_from_points (bo_traps->traps, - fixed_top, - fixed_bot, - left_top, left_bot, - right_top, right_bot); - -#if DEBUG_PRINT_STATE - printf ("Deferred trap: left=(%08x, %08x)-(%08x,%08x) " - "right=(%08x,%08x)-(%08x,%08x) top=%08x, bot=%08x\n", - left->top.x, left->top.y, left->bottom.x, left->bottom.y, - right->top.x, right->top.y, right->bottom.x, right->bottom.y, - trap->top, bot); -#endif - } - } - - _cairo_freelist_free (&bo_traps->freelist, trap); - left->deferred_trap = NULL; - - return _cairo_traps_status (bo_traps->traps); -} - -/* Start a new trapezoid at the given top y coordinate, whose edges - * are `edge' and `edge->next'. If `edge' already has a trapezoid, - * then either add it to the traps in `bo_traps', if the trapezoid's - * right edge differs from `edge->next', or do nothing if the new - * trapezoid would be a continuation of the existing one. */ -static cairo_status_t -_cairo_bo_edge_start_or_continue_trap (cairo_bo_edge_t *edge, - int32_t top, - cairo_bo_traps_t *bo_traps) -{ - cairo_status_t status; - cairo_bo_trap_t *trap = edge->deferred_trap; - - if (trap) { - if (trap->right == edge->next) return CAIRO_STATUS_SUCCESS; - status = _cairo_bo_edge_end_trap (edge, top, bo_traps); - if (status) - return status; - } - - if (edge->next) { - trap = edge->deferred_trap = _cairo_freelist_alloc (&bo_traps->freelist); - if (!edge->deferred_trap) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - trap->right = edge->next; - trap->top = top; - } - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_bo_traps_init (cairo_bo_traps_t *bo_traps, - cairo_traps_t *traps, - cairo_fixed_t xmin, - cairo_fixed_t ymin, - cairo_fixed_t xmax, - cairo_fixed_t ymax) -{ - bo_traps->traps = traps; - _cairo_freelist_init (&bo_traps->freelist, sizeof(cairo_bo_trap_t)); - bo_traps->xmin = xmin; - bo_traps->ymin = ymin; - bo_traps->xmax = xmax; - bo_traps->ymax = ymax; -} - -static void -_cairo_bo_traps_fini (cairo_bo_traps_t *bo_traps) -{ - _cairo_freelist_fini (&bo_traps->freelist); -} - -static void -_cairo_bo_sweep_line_validate (cairo_bo_sweep_line_t *sweep_line) -{ - cairo_bo_edge_t *edge; - skip_elt_t *elt; - - /* March through both the skip list's singly-linked list and the - * sweep line's own list through pointers in the edges themselves - * and make sure they agree at every point. */ - - for (edge = sweep_line->head, elt = sweep_line->active_edges.chains[0]; - edge && elt; - edge = edge->next, elt = elt->next[0]) - { - if (SKIP_ELT_TO_EDGE (elt) != edge) { - fprintf (stderr, "*** Error: Sweep line fails to validate: Inconsistent data in the two lists.\n"); - exit (1); - } - } - - if (edge || elt) { - fprintf (stderr, "*** Error: Sweep line fails to validate: One list ran out before the other.\n"); - exit (1); - } -} - - -static cairo_status_t -_active_edges_to_traps (cairo_bo_edge_t *head, - int32_t top, - cairo_fill_rule_t fill_rule, - cairo_bo_traps_t *bo_traps) -{ - cairo_status_t status; - int in_out = 0; - cairo_bo_edge_t *edge; - - for (edge = head; edge && edge->next; edge = edge->next) { - if (fill_rule == CAIRO_FILL_RULE_WINDING) { - if (edge->reversed) - in_out++; - else - in_out--; - if (in_out == 0) { - status = _cairo_bo_edge_end_trap (edge, top, bo_traps); - if (status) - return status; - continue; - } - } else { - in_out++; - if ((in_out & 1) == 0) { - status = _cairo_bo_edge_end_trap (edge, top, bo_traps); - if (status) - return status; - continue; - } - } - - status = _cairo_bo_edge_start_or_continue_trap (edge, top, bo_traps); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -/* Execute a single pass of the Bentley-Ottmann algorithm on edges, - * generating trapezoids according to the fill_rule and appending them - * to traps. */ -static cairo_status_t -_cairo_bentley_ottmann_tessellate_bo_edges (cairo_bo_edge_t *edges, - int num_edges, - cairo_fill_rule_t fill_rule, - cairo_traps_t *traps, - cairo_fixed_t xmin, - cairo_fixed_t ymin, - cairo_fixed_t xmax, - cairo_fixed_t ymax, - int *num_intersections) -{ - cairo_status_t status; - int intersection_count = 0; - cairo_bo_event_queue_t event_queue; - cairo_bo_sweep_line_t sweep_line; - cairo_bo_traps_t bo_traps; - cairo_bo_event_t *event, event_saved; - cairo_bo_edge_t *edge; - cairo_bo_edge_t *left, *right; - cairo_bo_edge_t *edge1, *edge2; - - status = _cairo_bo_event_queue_init (&event_queue, edges, num_edges); - if (status) - return status; - - _cairo_bo_sweep_line_init (&sweep_line); - _cairo_bo_traps_init (&bo_traps, traps, xmin, ymin, xmax, ymax); - -#if DEBUG_PRINT_STATE - print_state ("After initializing", &event_queue, &sweep_line); -#endif - - while (1) - { - event = _cairo_bo_event_dequeue (&event_queue); - if (!event) - break; - - if (event->point.y != sweep_line.current_y) { - status = _active_edges_to_traps (sweep_line.head, - sweep_line.current_y, - fill_rule, &bo_traps); - if (status) - goto unwind; - - sweep_line.current_y = event->point.y; - } - - event_saved = *event; - _cairo_bo_event_queue_delete (&event_queue, event); - event = &event_saved; - - switch (event->type) { - case CAIRO_BO_EVENT_TYPE_START: - edge = event->e1; - - status = _cairo_bo_sweep_line_insert (&sweep_line, edge); - if (status) - goto unwind; - /* Cache the insert position for use in pass 2. - event->e2 = Sortlist::prev (sweep_line, edge); - */ - - left = edge->prev; - right = edge->next; - - status = _cairo_bo_event_queue_insert_if_intersect_below_current_y (&event_queue, left, edge); - if (status) - goto unwind; - - status = _cairo_bo_event_queue_insert_if_intersect_below_current_y (&event_queue, edge, right); - if (status) - goto unwind; - -#if DEBUG_PRINT_STATE - print_state ("After processing start", &event_queue, &sweep_line); -#endif - _cairo_bo_sweep_line_validate (&sweep_line); - - break; - case CAIRO_BO_EVENT_TYPE_STOP: - edge = event->e1; - - left = edge->prev; - right = edge->next; - - _cairo_bo_sweep_line_delete (&sweep_line, edge); - - status = _cairo_bo_edge_end_trap (edge, edge->bottom.y, &bo_traps); - if (status) - goto unwind; - - status = _cairo_bo_event_queue_insert_if_intersect_below_current_y (&event_queue, left, right); - if (status) - goto unwind; - -#if DEBUG_PRINT_STATE - print_state ("After processing stop", &event_queue, &sweep_line); -#endif - _cairo_bo_sweep_line_validate (&sweep_line); - - break; - case CAIRO_BO_EVENT_TYPE_INTERSECTION: - edge1 = event->e1; - edge2 = event->e2; - - /* skip this intersection if its edges are not adjacent */ - if (edge2 != edge1->next) - break; - - intersection_count++; - - edge1->middle = event->point; - edge2->middle = event->point; - - left = edge1->prev; - right = edge2->next; - - _cairo_bo_sweep_line_swap (&sweep_line, edge1, edge2); - - /* after the swap e2 is left of e1 */ - - status = _cairo_bo_event_queue_insert_if_intersect_below_current_y (&event_queue, - left, edge2); - if (status) - goto unwind; - - status = _cairo_bo_event_queue_insert_if_intersect_below_current_y (&event_queue, - edge1, right); - if (status) - goto unwind; - -#if DEBUG_PRINT_STATE - print_state ("After processing intersection", &event_queue, &sweep_line); -#endif - _cairo_bo_sweep_line_validate (&sweep_line); - - break; - } - } - - *num_intersections = intersection_count; - unwind: - for (edge = sweep_line.head; edge; edge = edge->next) { - cairo_status_t status2 = _cairo_bo_edge_end_trap (edge, - sweep_line.current_y, - &bo_traps); - if (!status) - status = status2; - } - _cairo_bo_traps_fini (&bo_traps); - _cairo_bo_sweep_line_fini (&sweep_line); - _cairo_bo_event_queue_fini (&event_queue); - return status; -} - -static void -update_minmax(cairo_fixed_t *inout_min, - cairo_fixed_t *inout_max, - cairo_fixed_t v) -{ - if (v < *inout_min) - *inout_min = v; - if (v > *inout_max) - *inout_max = v; -} - -cairo_status_t -_cairo_bentley_ottmann_tessellate_polygon (cairo_traps_t *traps, - cairo_polygon_t *polygon, - cairo_fill_rule_t fill_rule) -{ - int intersections; - cairo_status_t status; - cairo_bo_edge_t stack_edges[CAIRO_STACK_ARRAY_LENGTH (cairo_bo_edge_t)]; - cairo_bo_edge_t *edges; - cairo_fixed_t xmin = 0x7FFFFFFF; - cairo_fixed_t ymin = 0x7FFFFFFF; - cairo_fixed_t xmax = -0x80000000; - cairo_fixed_t ymax = -0x80000000; - int num_bo_edges; - int i; - - if (0 == polygon->num_edges) - return CAIRO_STATUS_SUCCESS; - - if (polygon->num_edges < ARRAY_LENGTH (stack_edges)) { - edges = stack_edges; - } else { - edges = _cairo_malloc_ab (polygon->num_edges, sizeof (cairo_bo_edge_t)); - if (edges == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* Figure out the bounding box of the input coordinates and - * validate that we're not given invalid polygon edges. */ - for (i = 0; i < polygon->num_edges; i++) { - update_minmax (&xmin, &xmax, polygon->edges[i].edge.p1.x); - update_minmax (&ymin, &ymax, polygon->edges[i].edge.p1.y); - update_minmax (&xmin, &xmax, polygon->edges[i].edge.p2.x); - update_minmax (&ymin, &ymax, polygon->edges[i].edge.p2.y); - assert (polygon->edges[i].edge.p1.y <= polygon->edges[i].edge.p2.y && - "BUG: tessellator given upside down or horizontal edges"); - } - - /* The tessellation functions currently assume that no line - * segment extends more than 2^31-1 in either dimension. We - * guarantee this by offsetting the internal coordinates to the - * range [0,2^31-1], and clamping to 2^31-1 if a coordinate - * exceeds the range (and yes, this generates an incorrect - * result). First we have to clamp the bounding box itself. */ - /* XXX: Rather than changing the input values, a better approach - * would be to detect out-of-bounds input and return a - * CAIRO_STATUS_OVERFLOW value to the user. */ - if (xmax - xmin < 0) - xmax = xmin + 0x7FFFFFFF; - if (ymax - ymin < 0) - ymax = ymin + 0x7FFFFFFF; - - for (i = 0, num_bo_edges = 0; i < polygon->num_edges; i++) { - cairo_bo_edge_t *edge = &edges[num_bo_edges]; - cairo_point_t top = polygon->edges[i].edge.p1; - cairo_point_t bot = polygon->edges[i].edge.p2; - - /* Offset coordinates into the non-negative range. */ - top.x -= xmin; - top.y -= ymin; - bot.x -= xmin; - bot.y -= ymin; - - /* If the coordinates are still negative, then their extent is - * overflowing 2^31-1. We're going to kludge it and clamp the - * coordinates into the clamped bounding box. */ - if (top.x < 0) top.x = xmax - xmin; - if (top.y < 0) top.y = ymax - ymin; - if (bot.x < 0) bot.x = xmax - xmin; - if (bot.y < 0) bot.y = ymax - ymin; - - if (top.y == bot.y) { - /* Clamping might have produced horizontal edges. Ignore - * those. */ - continue; - } - assert (top.y < bot.y && - "BUG: clamping the input range flipped the " - "orientation of an edge"); - - edge->top.x = top.x; - edge->top.y = top.y; - edge->bottom.x = bot.x; - edge->bottom.y = bot.y; - /* XXX: The 'clockWise' name that cairo_polygon_t uses is - * totally bogus. It's really a (negated!) description of - * whether the edge is reversed. */ - edge->reversed = (! polygon->edges[i].clockWise); - edge->deferred_trap = NULL; - edge->prev = NULL; - edge->next = NULL; - edge->sweep_line_elt = NULL; - - num_bo_edges++; - } - - /* XXX: This would be the convenient place to throw in multiple - * passes of the Bentley-Ottmann algorithm. It would merely - * require storing the results of each pass into a temporary - * cairo_traps_t. */ - status = _cairo_bentley_ottmann_tessellate_bo_edges (edges, num_bo_edges, - fill_rule, traps, - xmin, ymin, xmax, ymax, - &intersections); - - if (edges != stack_edges) - free (edges); - - return status; -} - -#if 0 -static cairo_bool_t -edges_have_an_intersection_quadratic (cairo_bo_edge_t *edges, - int num_edges) - -{ - int i, j; - cairo_bo_edge_t *a, *b; - cairo_bo_point32_t intersection; - cairo_bo_status_t status; - - /* We must not be given any upside-down edges. */ - for (i = 0; i < num_edges; i++) { - assert (_cairo_bo_point32_compare (&edges[i].top, &edges[i].bottom) < 0); - edges[i].top.x <<= CAIRO_BO_GUARD_BITS; - edges[i].top.y <<= CAIRO_BO_GUARD_BITS; - edges[i].bottom.x <<= CAIRO_BO_GUARD_BITS; - edges[i].bottom.y <<= CAIRO_BO_GUARD_BITS; - } - - for (i = 0; i < num_edges; i++) { - for (j = 0; j < num_edges; j++) { - if (i == j) - continue; - - a = &edges[i]; - b = &edges[j]; - - status = _cairo_bo_edge_intersect (a, b, &intersection); - if (status == CAIRO_BO_STATUS_PARALLEL || - status == CAIRO_BO_STATUS_NO_INTERSECTION) - { - continue; - } - - printf ("Found intersection (%d,%d) between (%d,%d)-(%d,%d) and (%d,%d)-(%d,%d)\n", - intersection.x, - intersection.y, - a->top.x, a->top.y, - a->bottom.x, a->bottom.y, - b->top.x, b->top.y, - b->bottom.x, b->bottom.y); - - return TRUE; - } - } - return FALSE; -} - -#define TEST_MAX_EDGES 10 - -typedef struct test { - const char *name; - const char *description; - int num_edges; - cairo_bo_edge_t edges[TEST_MAX_EDGES]; -} test_t; - -static test_t -tests[] = { - { - "3 near misses", - "3 edges all intersecting very close to each other", - 3, - { - { { 4, 2}, {0, 0}, { 9, 9}, NULL, NULL }, - { { 7, 2}, {0, 0}, { 2, 3}, NULL, NULL }, - { { 5, 2}, {0, 0}, { 1, 7}, NULL, NULL } - } - }, - { - "inconsistent data", - "Derived from random testing---was leading to skip list and edge list disagreeing.", - 2, - { - { { 2, 3}, {0, 0}, { 8, 9}, NULL, NULL }, - { { 2, 3}, {0, 0}, { 6, 7}, NULL, NULL } - } - }, - { - "failed sort", - "A test derived from random testing that leads to an inconsistent sort --- looks like we just can't attempt to validate the sweep line with edge_compare?", - 3, - { - { { 6, 2}, {0, 0}, { 6, 5}, NULL, NULL }, - { { 3, 5}, {0, 0}, { 5, 6}, NULL, NULL }, - { { 9, 2}, {0, 0}, { 5, 6}, NULL, NULL }, - } - }, - { - "minimal-intersection", - "Intersection of a two from among the smallest possible edges.", - 2, - { - { { 0, 0}, {0, 0}, { 1, 1}, NULL, NULL }, - { { 1, 0}, {0, 0}, { 0, 1}, NULL, NULL } - } - }, - { - "simple", - "A simple intersection of two edges at an integer (2,2).", - 2, - { - { { 1, 1}, {0, 0}, { 3, 3}, NULL, NULL }, - { { 2, 1}, {0, 0}, { 2, 3}, NULL, NULL } - } - }, - { - "bend-to-horizontal", - "With intersection truncation one edge bends to horizontal", - 2, - { - { { 9, 1}, {0, 0}, {3, 7}, NULL, NULL }, - { { 3, 5}, {0, 0}, {9, 9}, NULL, NULL } - } - } -}; - -/* - { - "endpoint", - "An intersection that occurs at the endpoint of a segment.", - { - { { 4, 6}, { 5, 6}, NULL, { { NULL }} }, - { { 4, 5}, { 5, 7}, NULL, { { NULL }} }, - { { 0, 0}, { 0, 0}, NULL, { { NULL }} }, - } - } - { - name = "overlapping", - desc = "Parallel segments that share an endpoint, with different slopes.", - edges = { - { top = { x = 2, y = 0}, bottom = { x = 1, y = 1}}, - { top = { x = 2, y = 0}, bottom = { x = 0, y = 2}}, - { top = { x = 0, y = 3}, bottom = { x = 1, y = 3}}, - { top = { x = 0, y = 3}, bottom = { x = 2, y = 3}}, - { top = { x = 0, y = 4}, bottom = { x = 0, y = 6}}, - { top = { x = 0, y = 5}, bottom = { x = 0, y = 6}} - } - }, - { - name = "hobby_stage_3", - desc = "A particularly tricky part of the 3rd stage of the 'hobby' test below.", - edges = { - { top = { x = -1, y = -2}, bottom = { x = 4, y = 2}}, - { top = { x = 5, y = 3}, bottom = { x = 9, y = 5}}, - { top = { x = 5, y = 3}, bottom = { x = 6, y = 3}}, - } - }, - { - name = "hobby", - desc = "Example from John Hobby's paper. Requires 3 passes of the iterative algorithm.", - edges = { - { top = { x = 0, y = 0}, bottom = { x = 9, y = 5}}, - { top = { x = 0, y = 0}, bottom = { x = 13, y = 6}}, - { top = { x = -1, y = -2}, bottom = { x = 9, y = 5}} - } - }, - { - name = "slope", - desc = "Edges with same start/stop points but different slopes", - edges = { - { top = { x = 4, y = 1}, bottom = { x = 6, y = 3}}, - { top = { x = 4, y = 1}, bottom = { x = 2, y = 3}}, - { top = { x = 2, y = 4}, bottom = { x = 4, y = 6}}, - { top = { x = 6, y = 4}, bottom = { x = 4, y = 6}} - } - }, - { - name = "horizontal", - desc = "Test of a horizontal edge", - edges = { - { top = { x = 1, y = 1}, bottom = { x = 6, y = 6}}, - { top = { x = 2, y = 3}, bottom = { x = 5, y = 3}} - } - }, - { - name = "vertical", - desc = "Test of a vertical edge", - edges = { - { top = { x = 5, y = 1}, bottom = { x = 5, y = 7}}, - { top = { x = 2, y = 4}, bottom = { x = 8, y = 5}} - } - }, - { - name = "congruent", - desc = "Two overlapping edges with the same slope", - edges = { - { top = { x = 5, y = 1}, bottom = { x = 5, y = 7}}, - { top = { x = 5, y = 2}, bottom = { x = 5, y = 6}}, - { top = { x = 2, y = 4}, bottom = { x = 8, y = 5}} - } - }, - { - name = "multi", - desc = "Several segments with a common intersection point", - edges = { - { top = { x = 1, y = 2}, bottom = { x = 5, y = 4} }, - { top = { x = 1, y = 1}, bottom = { x = 5, y = 5} }, - { top = { x = 2, y = 1}, bottom = { x = 4, y = 5} }, - { top = { x = 4, y = 1}, bottom = { x = 2, y = 5} }, - { top = { x = 5, y = 1}, bottom = { x = 1, y = 5} }, - { top = { x = 5, y = 2}, bottom = { x = 1, y = 4} } - } - } -}; -*/ - -static int -run_test (const char *test_name, - cairo_bo_edge_t *test_edges, - int num_edges) -{ - int i, intersections, passes; - cairo_bo_edge_t *edges; - cairo_array_t intersected_edges; - - printf ("Testing: %s\n", test_name); - - _cairo_array_init (&intersected_edges, sizeof (cairo_bo_edge_t)); - - intersections = _cairo_bentley_ottmann_intersect_edges (test_edges, num_edges, &intersected_edges); - if (intersections) - printf ("Pass 1 found %d intersections:\n", intersections); - - - /* XXX: Multi-pass Bentley-Ottmmann. Preferable would be to add a - * pass of Hobby's tolerance-square algorithm instead. */ - passes = 1; - while (intersections) { - int num_edges = _cairo_array_num_elements (&intersected_edges); - passes++; - edges = _cairo_malloc_ab (num_edges, sizeof (cairo_bo_edge_t)); - assert (edges != NULL); - memcpy (edges, _cairo_array_index (&intersected_edges, 0), num_edges * sizeof (cairo_bo_edge_t)); - _cairo_array_fini (&intersected_edges); - _cairo_array_init (&intersected_edges, sizeof (cairo_bo_edge_t)); - intersections = _cairo_bentley_ottmann_intersect_edges (edges, num_edges, &intersected_edges); - free (edges); - - if (intersections){ - printf ("Pass %d found %d remaining intersections:\n", passes, intersections); - } else { - if (passes > 3) - for (i = 0; i < passes; i++) - printf ("*"); - printf ("No remainining intersections found after pass %d\n", passes); - } - } - - if (edges_have_an_intersection_quadratic (_cairo_array_index (&intersected_edges, 0), - _cairo_array_num_elements (&intersected_edges))) - printf ("*** FAIL ***\n"); - else - printf ("PASS\n"); - - _cairo_array_fini (&intersected_edges); - - return 0; -} - -#define MAX_RANDOM 300 - -int -main (void) -{ - char random_name[] = "random-XX"; - cairo_bo_edge_t random_edges[MAX_RANDOM], *edge; - unsigned int i, num_random; - test_t *test; - - for (i = 0; i < ARRAY_LENGTH (tests); i++) { - test = &tests[i]; - run_test (test->name, test->edges, test->num_edges); - } - - for (num_random = 0; num_random < MAX_RANDOM; num_random++) { - srand (0); - for (i = 0; i < num_random; i++) { - do { - edge = &random_edges[i]; - edge->top.x = (int32_t) (10.0 * (rand() / (RAND_MAX + 1.0))); - edge->top.y = (int32_t) (10.0 * (rand() / (RAND_MAX + 1.0))); - edge->bottom.x = (int32_t) (10.0 * (rand() / (RAND_MAX + 1.0))); - edge->bottom.y = (int32_t) (10.0 * (rand() / (RAND_MAX + 1.0))); - if (edge->top.y > edge->bottom.y) { - int32_t tmp = edge->top.y; - edge->top.y = edge->bottom.y; - edge->bottom.y = tmp; - } - } while (edge->top.y == edge->bottom.y); - } - - sprintf (random_name, "random-%02d", num_random); - - run_test (random_name, random_edges, num_random); - } - - return 0; -} -#endif - diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-beos.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-beos.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-beos.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-beos.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Christian Biesinger - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Christian Biesinger - * - * - * Contributor(s): - */ - -#ifndef CAIRO_BEOS_H -#define CAIRO_BEOS_H - -#include - -#if CAIRO_HAS_BEOS_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_beos_surface_create (BView* view); - -cairo_public cairo_surface_t * -cairo_beos_surface_create_for_bitmap (BView* view, - BBitmap* bmp); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_BEOS_SURFACE */ -# error Cairo was not compiled with support for the beos backend -#endif /* CAIRO_HAS_BEOS_SURFACE */ - -#endif /* CAIRO_BEOS_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3680 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" -#include "cairo-private.h" - -#include "cairo-arc-private.h" -#include "cairo-path-private.h" - -#define CAIRO_TOLERANCE_MINIMUM 0.0002 /* We're limited by 16 bits of sub-pixel precision */ - -static const cairo_t _cairo_nil = { - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ - CAIRO_STATUS_NO_MEMORY, /* status */ - { 0, 0, 0, NULL }, /* user_data */ - NULL, /* gstate */ - {{ /* gstate_tail */ - 0 - }}, - {{ /* path */ - { 0, 0 }, /* last_move_point */ - { 0, 0 }, /* current point */ - FALSE, /* has_current_point */ - FALSE, /* has_curve_to */ - NULL, {{NULL}} /* buf_tail, buf_head */ - }} -}; - -#include - -/** - * _cairo_error: - * @status: a status value indicating an error, (eg. not - * CAIRO_STATUS_SUCCESS) - * - * Checks that status is an error status, but does nothing else. - * - * All assignments of an error status to any user-visible object - * within the cairo application should result in a call to - * _cairo_error(). - * - * The purpose of this function is to allow the user to set a - * breakpoint in _cairo_error() to generate a stack trace for when the - * user causes cairo to detect an error. - * - * Return value: the error status. - **/ -cairo_status_t -_cairo_error (cairo_status_t status) -{ - assert (status > CAIRO_STATUS_SUCCESS && - status <= CAIRO_STATUS_LAST_STATUS); - - return status; -} - -/** - * _cairo_set_error: - * @cr: a cairo context - * @status: a status value indicating an error, (eg. not - * CAIRO_STATUS_SUCCESS) - * - * Atomically sets cr->status to @status and calls _cairo_error; - * - * All assignments of an error status to cr->status should happen - * through _cairo_set_error(). Note that due to the nature of the atomic - * operation, it is not safe to call this function on the nil objects. - * - * The purpose of this function is to allow the user to set a - * breakpoint in _cairo_error() to generate a stack trace for when the - * user causes cairo to detect an error. - **/ -static void -_cairo_set_error (cairo_t *cr, cairo_status_t status) -{ - /* Don't overwrite an existing error. This preserves the first - * error, which is the most significant. */ - _cairo_status_set_error (&cr->status, status); - - status = _cairo_error (status); -} - -/** - * cairo_version: - * - * Returns the version of the cairo library encoded in a single - * integer as per %CAIRO_VERSION_ENCODE. The encoding ensures that - * later versions compare greater than earlier versions. - * - * A run-time comparison to check that cairo's version is greater than - * or equal to version X.Y.Z could be performed as follows: - * - * - * if (cairo_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...} - * - * - * See also cairo_version_string() as well as the compile-time - * equivalents %CAIRO_VERSION and %CAIRO_VERSION_STRING. - * - * Return value: the encoded version. - **/ -int -cairo_version (void) -{ - return CAIRO_VERSION; -} - -/** - * cairo_version_string: - * - * Returns the version of the cairo library as a human-readable string - * of the form "X.Y.Z". - * - * See also cairo_version() as well as the compile-time equivalents - * %CAIRO_VERSION_STRING and %CAIRO_VERSION. - * - * Return value: a string containing the version. - **/ -const char* -cairo_version_string (void) -{ - return CAIRO_VERSION_STRING; -} -slim_hidden_def (cairo_version_string); - -/** - * cairo_create: - * @target: target surface for the context - * - * Creates a new #cairo_t with all graphics state parameters set to - * default values and with @target as a target surface. The target - * surface should be constructed with a backend-specific function such - * as cairo_image_surface_create() (or any other - * cairo_backend_surface_create variant). - * - * This function references @target, so you can immediately - * call cairo_surface_destroy() on it if you don't need to - * maintain a separate reference to it. - * - * Return value: a newly allocated #cairo_t with a reference - * count of 1. The initial reference count should be released - * with cairo_destroy() when you are done using the #cairo_t. - * This function never returns %NULL. If memory cannot be - * allocated, a special #cairo_t object will be returned on - * which cairo_status() returns %CAIRO_STATUS_NO_MEMORY. - * You can use this object normally, but no drawing will - * be done. - **/ -cairo_t * -cairo_create (cairo_surface_t *target) -{ - cairo_t *cr; - cairo_status_t status; - - /* special case OOM in order to avoid another allocation */ - if (target && target->status == CAIRO_STATUS_NO_MEMORY) - return (cairo_t *) &_cairo_nil; - - cr = malloc (sizeof (cairo_t)); - if (cr == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return (cairo_t *) &_cairo_nil; - } - - CAIRO_REFERENCE_COUNT_INIT (&cr->ref_count, 1); - - cr->status = CAIRO_STATUS_SUCCESS; - - _cairo_user_data_array_init (&cr->user_data); - _cairo_path_fixed_init (cr->path); - - cr->gstate = cr->gstate_tail; - status = _cairo_gstate_init (cr->gstate, target); - - if (status) - _cairo_set_error (cr, status); - - return cr; -} -slim_hidden_def (cairo_create); - -/** - * cairo_reference: - * @cr: a #cairo_t - * - * Increases the reference count on @cr by one. This prevents - * @cr from being destroyed until a matching call to cairo_destroy() - * is made. - * - * The number of references to a #cairo_t can be get using - * cairo_get_reference_count(). - * - * Return value: the referenced #cairo_t. - **/ -cairo_t * -cairo_reference (cairo_t *cr) -{ - if (cr == NULL || CAIRO_REFERENCE_COUNT_IS_INVALID (&cr->ref_count)) - return cr; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&cr->ref_count)); - - _cairo_reference_count_inc (&cr->ref_count); - - return cr; -} - -/** - * cairo_destroy: - * @cr: a #cairo_t - * - * Decreases the reference count on @cr by one. If the result - * is zero, then @cr and all associated resources are freed. - * See cairo_reference(). - **/ -void -cairo_destroy (cairo_t *cr) -{ - if (cr == NULL || CAIRO_REFERENCE_COUNT_IS_INVALID (&cr->ref_count)) - return; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&cr->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&cr->ref_count)) - return; - - while (cr->gstate != cr->gstate_tail) { - if (_cairo_gstate_restore (&cr->gstate)) - break; - } - - _cairo_gstate_fini (cr->gstate); - - _cairo_path_fixed_fini (cr->path); - - _cairo_user_data_array_fini (&cr->user_data); - - free (cr); -} -slim_hidden_def (cairo_destroy); - -/** - * cairo_get_user_data: - * @cr: a #cairo_t - * @key: the address of the #cairo_user_data_key_t the user data was - * attached to - * - * Return user data previously attached to @cr using the specified - * key. If no user data has been attached with the given key this - * function returns %NULL. - * - * Return value: the user data previously attached or %NULL. - * - * Since: 1.4 - **/ -void * -cairo_get_user_data (cairo_t *cr, - const cairo_user_data_key_t *key) -{ - return _cairo_user_data_array_get_data (&cr->user_data, - key); -} - -/** - * cairo_set_user_data: - * @cr: a #cairo_t - * @key: the address of a #cairo_user_data_key_t to attach the user data to - * @user_data: the user data to attach to the #cairo_t - * @destroy: a #cairo_destroy_func_t which will be called when the - * #cairo_t is destroyed or when new user data is attached using the - * same key. - * - * Attach user data to @cr. To remove user data from a surface, - * call this function with the key that was used to set it and %NULL - * for @data. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a - * slot could not be allocated for the user data. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_set_user_data (cairo_t *cr, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy) -{ - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&cr->ref_count)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return _cairo_user_data_array_set_data (&cr->user_data, - key, user_data, destroy); -} - -/** - * cairo_get_reference_count: - * @cr: a #cairo_t - * - * Returns the current reference count of @cr. - * - * Return value: the current reference count of @cr. If the - * object is a nil object, 0 will be returned. - * - * Since: 1.4 - **/ -unsigned int -cairo_get_reference_count (cairo_t *cr) -{ - if (cr == NULL || CAIRO_REFERENCE_COUNT_IS_INVALID (&cr->ref_count)) - return 0; - - return CAIRO_REFERENCE_COUNT_GET_VALUE (&cr->ref_count); -} - -/** - * cairo_save: - * @cr: a #cairo_t - * - * Makes a copy of the current state of @cr and saves it - * on an internal stack of saved states for @cr. When - * cairo_restore() is called, @cr will be restored to - * the saved state. Multiple calls to cairo_save() and - * cairo_restore() can be nested; each call to cairo_restore() - * restores the state from the matching paired cairo_save(). - * - * It isn't necessary to clear all saved states before - * a #cairo_t is freed. If the reference count of a #cairo_t - * drops to zero in response to a call to cairo_destroy(), - * any saved states will be freed along with the #cairo_t. - **/ -void -cairo_save (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_save (&cr->gstate); - if (status) { - _cairo_set_error (cr, status); - } -} -slim_hidden_def(cairo_save); - -/** - * cairo_restore: - * @cr: a #cairo_t - * - * Restores @cr to the state saved by a preceding call to - * cairo_save() and removes that state from the stack of - * saved states. - **/ -void -cairo_restore (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_restore (&cr->gstate); - if (status) { - _cairo_set_error (cr, status); - } -} -slim_hidden_def(cairo_restore); - -/** - * cairo_push_group: - * @cr: a cairo context - * - * Temporarily redirects drawing to an intermediate surface known as a - * group. The redirection lasts until the group is completed by a call - * to cairo_pop_group() or cairo_pop_group_to_source(). These calls - * provide the result of any drawing to the group as a pattern, - * (either as an explicit object, or set as the source pattern). - * - * This group functionality can be convenient for performing - * intermediate compositing. One common use of a group is to render - * objects as opaque within the group, (so that they occlude each - * other), and then blend the result with translucence onto the - * destination. - * - * Groups can be nested arbitrarily deep by making balanced calls to - * cairo_push_group()/cairo_pop_group(). Each call pushes/pops the new - * target group onto/from a stack. - * - * The cairo_push_group() function calls cairo_save() so that any - * changes to the graphics state will not be visible outside the - * group, (the pop_group functions call cairo_restore()). - * - * By default the intermediate group will have a content type of - * CAIRO_CONTENT_COLOR_ALPHA. Other content types can be chosen for - * the group by using cairo_push_group_with_content() instead. - * - * As an example, here is how one might fill and stroke a path with - * translucence, but without any portion of the fill being visible - * under the stroke: - * - * - * cairo_push_group (cr); - * cairo_set_source (cr, fill_pattern); - * cairo_fill_preserve (cr); - * cairo_set_source (cr, stroke_pattern); - * cairo_stroke (cr); - * cairo_pop_group_to_source (cr); - * cairo_paint_with_alpha (cr, alpha); - * - * - * Since: 1.2 - */ -void -cairo_push_group (cairo_t *cr) -{ - cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA); -} -slim_hidden_def(cairo_push_group); - -/** - * cairo_push_group_with_content: - * @cr: a cairo context - * @content: a %#cairo_content_t indicating the type of group that - * will be created - * - * Temporarily redirects drawing to an intermediate surface known as a - * group. The redirection lasts until the group is completed by a call - * to cairo_pop_group() or cairo_pop_group_to_source(). These calls - * provide the result of any drawing to the group as a pattern, - * (either as an explicit object, or set as the source pattern). - * - * The group will have a content type of @content. The ability to - * control this content type is the only distinction between this - * function and cairo_push_group() which you should see for a more - * detailed description of group rendering. - * - * Since: 1.2 - */ -void -cairo_push_group_with_content (cairo_t *cr, cairo_content_t content) -{ - cairo_status_t status; - cairo_rectangle_int_t extents; - cairo_surface_t *parent_surface, *group_surface = NULL; - - if (cr->status) - return; - - parent_surface = _cairo_gstate_get_target (cr->gstate); - /* Get the extents that we'll use in creating our new group surface */ - status = _cairo_surface_get_extents (parent_surface, &extents); - if (status) - goto bail; - status = _cairo_clip_intersect_to_rectangle (_cairo_gstate_get_clip (cr->gstate), &extents); - if (status) - goto bail; - - group_surface = cairo_surface_create_similar (_cairo_gstate_get_target (cr->gstate), - content, - extents.width, - extents.height); - status = cairo_surface_status (group_surface); - if (status) - goto bail; - - /* Set device offsets on the new surface so that logically it appears at - * the same location on the parent surface -- when we pop_group this, - * the source pattern will get fixed up for the appropriate target surface - * device offsets, so we want to set our own surface offsets from /that/, - * and not from the device origin. */ - cairo_surface_set_device_offset (group_surface, - parent_surface->device_transform.x0 - extents.x, - parent_surface->device_transform.y0 - extents.y); - - /* create a new gstate for the redirect */ - cairo_save (cr); - if (cr->status) - goto bail; - - status = _cairo_gstate_redirect_target (cr->gstate, group_surface); - -bail: - cairo_surface_destroy (group_surface); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_push_group_with_content); - -/** - * cairo_pop_group: - * @cr: a cairo context - * - * Terminates the redirection begun by a call to cairo_push_group() or - * cairo_push_group_with_content() and returns a new pattern - * containing the results of all drawing operations performed to the - * group. - * - * The cairo_pop_group() function calls cairo_restore(), (balancing a - * call to cairo_save() by the push_group function), so that any - * changes to the graphics state will not be visible outside the - * group. - * - * Return value: a newly created (surface) pattern containing the - * results of all drawing operations performed to the group. The - * caller owns the returned object and should call - * cairo_pattern_destroy() when finished with it. - * - * Since: 1.2 - **/ -cairo_pattern_t * -cairo_pop_group (cairo_t *cr) -{ - cairo_surface_t *group_surface, *parent_target; - cairo_pattern_t *group_pattern = (cairo_pattern_t*) &_cairo_pattern_nil.base; - cairo_matrix_t group_matrix; - - if (cr->status) - return group_pattern; - - /* Grab the active surfaces */ - group_surface = _cairo_gstate_get_target (cr->gstate); - parent_target = _cairo_gstate_get_parent_target (cr->gstate); - - /* Verify that we are at the right nesting level */ - if (parent_target == NULL) { - _cairo_set_error (cr, CAIRO_STATUS_INVALID_POP_GROUP); - return group_pattern; - } - - /* We need to save group_surface before we restore; we don't need - * to reference parent_target and original_target, since the - * gstate will still hold refs to them once we restore. */ - group_surface = cairo_surface_reference (group_surface); - - cairo_restore (cr); - - if (cr->status) - goto done; - - group_pattern = cairo_pattern_create_for_surface (group_surface); - if (cairo_pattern_status (group_pattern)) { - _cairo_set_error (cr, cairo_pattern_status (group_pattern)); - goto done; - } - - _cairo_gstate_get_matrix (cr->gstate, &group_matrix); - cairo_pattern_set_matrix (group_pattern, &group_matrix); -done: - cairo_surface_destroy (group_surface); - - return group_pattern; -} -slim_hidden_def(cairo_pop_group); - -/** - * cairo_pop_group_to_source: - * @cr: a cairo context - * - * Terminates the redirection begun by a call to cairo_push_group() or - * cairo_push_group_with_content() and installs the resulting pattern - * as the source pattern in the given cairo context. - * - * The behavior of this function is equivalent to the sequence of - * operations: - * - * - * #cairo_pattern_t *group = cairo_pop_group (cr); - * cairo_set_source (cr, group); - * cairo_pattern_destroy (group); - * - * - * but is more convenient as their is no need for a variable to store - * the short-lived pointer to the pattern. - * - * The cairo_pop_group() function calls cairo_restore(), (balancing a - * call to cairo_save() by the push_group function), so that any - * changes to the graphics state will not be visible outside the - * group. - * - * Since: 1.2 - **/ -void -cairo_pop_group_to_source (cairo_t *cr) -{ - cairo_pattern_t *group_pattern; - - group_pattern = cairo_pop_group (cr); - cairo_set_source (cr, group_pattern); - cairo_pattern_destroy (group_pattern); -} -slim_hidden_def(cairo_pop_group_to_source); - -/** - * cairo_set_operator: - * @cr: a #cairo_t - * @op: a compositing operator, specified as a #cairo_operator_t - * - * Sets the compositing operator to be used for all drawing - * operations. See #cairo_operator_t for details on the semantics of - * each available compositing operator. - * - * The default operator is %CAIRO_OPERATOR_OVER. - **/ -void -cairo_set_operator (cairo_t *cr, cairo_operator_t op) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_operator (cr->gstate, op); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_set_operator); - -/** - * cairo_set_source_rgb - * @cr: a cairo context - * @red: red component of color - * @green: green component of color - * @blue: blue component of color - * - * Sets the source pattern within @cr to an opaque color. This opaque - * color will then be used for any subsequent drawing operation until - * a new source pattern is set. - * - * The color components are floating point numbers in the range 0 to - * 1. If the values passed in are outside that range, they will be - * clamped. - * - * The default source pattern is opaque black, (that is, it is - * equivalent to cairo_set_source_rgb (cr, 0.0, 0.0, 0.0)). - **/ -void -cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue) -{ - cairo_pattern_t *pattern; - - if (cr->status) - return; - - /* push the current pattern to the freed lists */ - cairo_set_source (cr, (cairo_pattern_t *) &cairo_pattern_none); - - pattern = cairo_pattern_create_rgb (red, green, blue); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -/** - * cairo_set_source_rgba: - * @cr: a cairo context - * @red: red component of color - * @green: green component of color - * @blue: blue component of color - * @alpha: alpha component of color - * - * Sets the source pattern within @cr to a translucent color. This - * color will then be used for any subsequent drawing operation until - * a new source pattern is set. - * - * The color and alpha components are floating point numbers in the - * range 0 to 1. If the values passed in are outside that range, they - * will be clamped. - * - * The default source pattern is opaque black, (that is, it is - * equivalent to cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 1.0)). - **/ -void -cairo_set_source_rgba (cairo_t *cr, - double red, double green, double blue, - double alpha) -{ - cairo_pattern_t *pattern; - - if (cr->status) - return; - - /* push the current pattern to the freed lists */ - cairo_set_source (cr, (cairo_pattern_t *) &cairo_pattern_none); - - pattern = cairo_pattern_create_rgba (red, green, blue, alpha); - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} - -/** - * cairo_set_source_surface: - * @cr: a cairo context - * @surface: a surface to be used to set the source pattern - * @x: User-space X coordinate for surface origin - * @y: User-space Y coordinate for surface origin - * - * This is a convenience function for creating a pattern from @surface - * and setting it as the source in @cr with cairo_set_source(). - * - * The @x and @y parameters give the user-space coordinate at which - * the surface origin should appear. (The surface origin is its - * upper-left corner before any transformation has been applied.) The - * @x and @y patterns are negated and then set as translation values - * in the pattern matrix. - * - * Other than the initial translation pattern matrix, as described - * above, all other pattern attributes, (such as its extend mode), are - * set to the default values as in cairo_pattern_create_for_surface(). - * The resulting pattern can be queried with cairo_get_source() so - * that these attributes can be modified if desired, (eg. to create a - * repeating pattern with cairo_pattern_set_extend()). - **/ -void -cairo_set_source_surface (cairo_t *cr, - cairo_surface_t *surface, - double x, - double y) -{ - cairo_pattern_t *pattern; - cairo_matrix_t matrix; - - if (cr->status) - return; - - /* push the current pattern to the freed lists */ - cairo_set_source (cr, (cairo_pattern_t *) &cairo_pattern_none); - - pattern = cairo_pattern_create_for_surface (surface); - - cairo_matrix_init_translate (&matrix, -x, -y); - cairo_pattern_set_matrix (pattern, &matrix); - - cairo_set_source (cr, pattern); - cairo_pattern_destroy (pattern); -} -slim_hidden_def (cairo_set_source_surface); - -/** - * cairo_set_source - * @cr: a cairo context - * @source: a #cairo_pattern_t to be used as the source for - * subsequent drawing operations. - * - * Sets the source pattern within @cr to @source. This pattern - * will then be used for any subsequent drawing operation until a new - * source pattern is set. - * - * Note: The pattern's transformation matrix will be locked to the - * user space in effect at the time of cairo_set_source(). This means - * that further modifications of the current transformation matrix - * will not affect the source pattern. See cairo_pattern_set_matrix(). - * - * The default source pattern is a solid pattern that is opaque black, - * (that is, it is equivalent to cairo_set_source_rgb (cr, 0.0, 0.0, - * 0.0)). - **/ -void -cairo_set_source (cairo_t *cr, cairo_pattern_t *source) -{ - cairo_status_t status; - - if (cr->status) - return; - - if (source == NULL) { - _cairo_set_error (cr, CAIRO_STATUS_NULL_POINTER); - return; - } - - if (source->status) { - _cairo_set_error (cr, source->status); - return; - } - - status = _cairo_gstate_set_source (cr->gstate, source); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_set_source); - -/** - * cairo_get_source: - * @cr: a cairo context - * - * Gets the current source pattern for @cr. - * - * Return value: the current source pattern. This object is owned by - * cairo. To keep a reference to it, you must call - * cairo_pattern_reference(). - **/ -cairo_pattern_t * -cairo_get_source (cairo_t *cr) -{ - if (cr->status) - return (cairo_pattern_t*) &_cairo_pattern_nil.base; - - return _cairo_gstate_get_source (cr->gstate); -} - -/** - * cairo_set_tolerance: - * @cr: a #cairo_t - * @tolerance: the tolerance, in device units (typically pixels) - * - * Sets the tolerance used when converting paths into trapezoids. - * Curved segments of the path will be subdivided until the maximum - * deviation between the original path and the polygonal approximation - * is less than @tolerance. The default value is 0.1. A larger - * value will give better performance, a smaller value, better - * appearance. (Reducing the value from the default value of 0.1 - * is unlikely to improve appearance significantly.) - **/ -void -cairo_set_tolerance (cairo_t *cr, double tolerance) -{ - cairo_status_t status; - - if (cr->status) - return; - - _cairo_restrict_value (&tolerance, CAIRO_TOLERANCE_MINIMUM, tolerance); - - status = _cairo_gstate_set_tolerance (cr->gstate, tolerance); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_antialias: - * @cr: a #cairo_t - * @antialias: the new antialiasing mode - * - * Set the antialiasing mode of the rasterizer used for drawing shapes. - * This value is a hint, and a particular backend may or may not support - * a particular value. At the current time, no backend supports - * %CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes. - * - * Note that this option does not affect text rendering, instead see - * cairo_font_options_set_antialias(). - **/ -void -cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_antialias (cr->gstate, antialias); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_fill_rule: - * @cr: a #cairo_t - * @fill_rule: a fill rule, specified as a #cairo_fill_rule_t - * - * Set the current fill rule within the cairo context. The fill rule - * is used to determine which regions are inside or outside a complex - * (potentially self-intersecting) path. The current fill rule affects - * both cairo_fill() and cairo_clip(). See #cairo_fill_rule_t for details - * on the semantics of each available fill rule. - * - * The default fill rule is %CAIRO_FILL_RULE_WINDING. - **/ -void -cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_fill_rule (cr->gstate, fill_rule); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_line_width: - * @cr: a #cairo_t - * @width: a line width - * - * Sets the current line width within the cairo context. The line - * width value specifies the diameter of a pen that is circular in - * user space, (though device-space pen may be an ellipse in general - * due to scaling/shear/rotation of the CTM). - * - * Note: When the description above refers to user space and CTM it - * refers to the user space and CTM in effect at the time of the - * stroking operation, not the user space and CTM in effect at the - * time of the call to cairo_set_line_width(). The simplest usage - * makes both of these spaces identical. That is, if there is no - * change to the CTM between a call to cairo_set_line_with() and the - * stroking operation, then one can just pass user-space values to - * cairo_set_line_width() and ignore this note. - * - * As with the other stroke parameters, the current line width is - * examined by cairo_stroke(), cairo_stroke_extents(), and - * cairo_stroke_to_path(), but does not have any effect during path - * construction. - * - * The default line width value is 2.0. - **/ -void -cairo_set_line_width (cairo_t *cr, double width) -{ - cairo_status_t status; - - if (cr->status) - return; - - _cairo_restrict_value (&width, 0.0, width); - - status = _cairo_gstate_set_line_width (cr->gstate, width); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_line_cap: - * @cr: a cairo context - * @line_cap: a line cap style - * - * Sets the current line cap style within the cairo context. See - * #cairo_line_cap_t for details about how the available line cap - * styles are drawn. - * - * As with the other stroke parameters, the current line cap style is - * examined by cairo_stroke(), cairo_stroke_extents(), and - * cairo_stroke_to_path(), but does not have any effect during path - * construction. - * - * The default line cap style is %CAIRO_LINE_CAP_BUTT. - **/ -void -cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_line_cap (cr->gstate, line_cap); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_line_join: - * @cr: a cairo context - * @line_join: a line join style - * - * Sets the current line join style within the cairo context. See - * #cairo_line_join_t for details about how the available line join - * styles are drawn. - * - * As with the other stroke parameters, the current line join style is - * examined by cairo_stroke(), cairo_stroke_extents(), and - * cairo_stroke_to_path(), but does not have any effect during path - * construction. - * - * The default line join style is %CAIRO_LINE_JOIN_MITER. - **/ -void -cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_line_join (cr->gstate, line_join); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_dash: - * @cr: a cairo context - * @dashes: an array specifying alternate lengths of on and off stroke portions - * @num_dashes: the length of the dashes array - * @offset: an offset into the dash pattern at which the stroke should start - * - * Sets the dash pattern to be used by cairo_stroke(). A dash pattern - * is specified by @dashes, an array of positive values. Each value - * provides the length of alternate "on" and "off" portions of the - * stroke. The @offset specifies an offset into the pattern at which - * the stroke begins. - * - * Each "on" segment will have caps applied as if the segment were a - * separate sub-path. In particular, it is valid to use an "on" length - * of 0.0 with %CAIRO_LINE_CAP_ROUND or %CAIRO_LINE_CAP_SQUARE in order - * to distributed dots or squares along a path. - * - * Note: The length values are in user-space units as evaluated at the - * time of stroking. This is not necessarily the same as the user - * space at the time of cairo_set_dash(). - * - * If @num_dashes is 0 dashing is disabled. - * - * If @num_dashes is 1 a symmetric pattern is assumed with alternating - * on and off portions of the size specified by the single value in - * @dashes. - * - * If any value in @dashes is negative, or if all values are 0, then - * @cr will be put into an error state with a status of - * #%CAIRO_STATUS_INVALID_DASH. - **/ -void -cairo_set_dash (cairo_t *cr, - const double *dashes, - int num_dashes, - double offset) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_dash (cr->gstate, - dashes, num_dashes, offset); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_get_dash_count: - * @cr: a #cairo_t - * - * This function returns the length of the dash array in @cr (0 if dashing - * is not currently in effect). - * - * See also cairo_set_dash() and cairo_get_dash(). - * - * Return value: the length of the dash array, or 0 if no dash array set. - * - * Since: 1.4 - */ -int -cairo_get_dash_count (cairo_t *cr) -{ - int num_dashes; - - if (cr->status) - return 0; - - _cairo_gstate_get_dash (cr->gstate, NULL, &num_dashes, NULL); - - return num_dashes; -} - -/** - * cairo_get_dash: - * @cr: a #cairo_t - * @dashes: return value for the dash array, or %NULL - * @offset: return value for the current dash offset, or %NULL - * - * Gets the current dash array. If not %NULL, @dashes should be big - * enough to hold at least the number of values returned by - * cairo_get_dash_count(). - * - * Since: 1.4 - **/ -void -cairo_get_dash (cairo_t *cr, - double *dashes, - double *offset) -{ - if (cr->status) - return; - - _cairo_gstate_get_dash (cr->gstate, dashes, NULL, offset); -} - -/** - * cairo_set_miter_limit: - * @cr: a cairo context - * @limit: miter limit to set - * - * Sets the current miter limit within the cairo context. - * - * If the current line join style is set to %CAIRO_LINE_JOIN_MITER - * (see cairo_set_line_join()), the miter limit is used to determine - * whether the lines should be joined with a bevel instead of a miter. - * Cairo divides the length of the miter by the line width. - * If the result is greater than the miter limit, the style is - * converted to a bevel. - * - * As with the other stroke parameters, the current line miter limit is - * examined by cairo_stroke(), cairo_stroke_extents(), and - * cairo_stroke_to_path(), but does not have any effect during path - * construction. - * - * The default miter limit value is 10.0, which will convert joins - * with interior angles less than 11 degrees to bevels instead of - * miters. For reference, a miter limit of 2.0 makes the miter cutoff - * at 60 degrees, and a miter limit of 1.414 makes the cutoff at 90 - * degrees. - * - * A miter limit for a desired angle can be computed as: miter limit = - * 1/sin(angle/2) - **/ -void -cairo_set_miter_limit (cairo_t *cr, double limit) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_miter_limit (cr->gstate, limit); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_translate: - * @cr: a cairo context - * @tx: amount to translate in the X direction - * @ty: amount to translate in the Y direction - * - * Modifies the current transformation matrix (CTM) by translating the - * user-space origin by (@tx, @ty). This offset is interpreted as a - * user-space coordinate according to the CTM in place before the new - * call to cairo_translate(). In other words, the translation of the - * user-space origin takes place after any existing transformation. - **/ -void -cairo_translate (cairo_t *cr, double tx, double ty) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_translate (cr->gstate, tx, ty); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_scale: - * @cr: a cairo context - * @sx: scale factor for the X dimension - * @sy: scale factor for the Y dimension - * - * Modifies the current transformation matrix (CTM) by scaling the X - * and Y user-space axes by @sx and @sy respectively. The scaling of - * the axes takes place after any existing transformation of user - * space. - **/ -void -cairo_scale (cairo_t *cr, double sx, double sy) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_scale (cr->gstate, sx, sy); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_scale); - -/** - * cairo_rotate: - * @cr: a cairo context - * @angle: angle (in radians) by which the user-space axes will be - * rotated - * - * Modifies the current transformation matrix (CTM) by rotating the - * user-space axes by @angle radians. The rotation of the axes takes - * places after any existing transformation of user space. The - * rotation direction for positive angles is from the positive X axis - * toward the positive Y axis. - **/ -void -cairo_rotate (cairo_t *cr, double angle) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_rotate (cr->gstate, angle); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_transform: - * @cr: a cairo context - * @matrix: a transformation to be applied to the user-space axes - * - * Modifies the current transformation matrix (CTM) by applying - * @matrix as an additional transformation. The new transformation of - * user space takes place after any existing transformation. - **/ -void -cairo_transform (cairo_t *cr, - const cairo_matrix_t *matrix) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_transform (cr->gstate, matrix); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_matrix: - * @cr: a cairo context - * @matrix: a transformation matrix from user space to device space - * - * Modifies the current transformation matrix (CTM) by setting it - * equal to @matrix. - **/ -void -cairo_set_matrix (cairo_t *cr, - const cairo_matrix_t *matrix) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_matrix (cr->gstate, matrix); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_identity_matrix: - * @cr: a cairo context - * - * Resets the current transformation matrix (CTM) by setting it equal - * to the identity matrix. That is, the user-space and device-space - * axes will be aligned and one user-space unit will transform to one - * device-space unit. - **/ -void -cairo_identity_matrix (cairo_t *cr) -{ - if (cr->status) - return; - - _cairo_gstate_identity_matrix (cr->gstate); -} - -/** - * cairo_user_to_device: - * @cr: a cairo context - * @x: X value of coordinate (in/out parameter) - * @y: Y value of coordinate (in/out parameter) - * - * Transform a coordinate from user space to device space by - * multiplying the given point by the current transformation matrix - * (CTM). - **/ -void -cairo_user_to_device (cairo_t *cr, double *x, double *y) -{ - if (cr->status) - return; - - _cairo_gstate_user_to_device (cr->gstate, x, y); -} - -/** - * cairo_user_to_device_distance: - * @cr: a cairo context - * @dx: X component of a distance vector (in/out parameter) - * @dy: Y component of a distance vector (in/out parameter) - * - * Transform a distance vector from user space to device space. This - * function is similar to cairo_user_to_device() except that the - * translation components of the CTM will be ignored when transforming - * (@dx,@dy). - **/ -void -cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy) -{ - if (cr->status) - return; - - _cairo_gstate_user_to_device_distance (cr->gstate, dx, dy); -} - -/** - * cairo_device_to_user: - * @cr: a cairo - * @x: X value of coordinate (in/out parameter) - * @y: Y value of coordinate (in/out parameter) - * - * Transform a coordinate from device space to user space by - * multiplying the given point by the inverse of the current - * transformation matrix (CTM). - **/ -void -cairo_device_to_user (cairo_t *cr, double *x, double *y) -{ - if (cr->status) - return; - - _cairo_gstate_device_to_user (cr->gstate, x, y); -} - -/** - * cairo_device_to_user_distance: - * @cr: a cairo context - * @dx: X component of a distance vector (in/out parameter) - * @dy: Y component of a distance vector (in/out parameter) - * - * Transform a distance vector from device space to user space. This - * function is similar to cairo_device_to_user() except that the - * translation components of the inverse CTM will be ignored when - * transforming (@dx,@dy). - **/ -void -cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy) -{ - if (cr->status) - return; - - _cairo_gstate_device_to_user_distance (cr->gstate, dx, dy); -} - -/** - * cairo_new_path: - * @cr: a cairo context - * - * Clears the current path. After this call there will be no path and - * no current point. - **/ -void -cairo_new_path (cairo_t *cr) -{ - if (cr->status) - return; - - _cairo_path_fixed_fini (cr->path); -} -slim_hidden_def(cairo_new_path); - -/** - * cairo_move_to: - * @cr: a cairo context - * @x: the X coordinate of the new position - * @y: the Y coordinate of the new position - * - * Begin a new sub-path. After this call the current point will be (@x, - * @y). - **/ -void -cairo_move_to (cairo_t *cr, double x, double y) -{ - cairo_status_t status; - cairo_fixed_t x_fixed, y_fixed; - - if (cr->status) - return; - - _cairo_gstate_user_to_backend (cr->gstate, &x, &y); - x_fixed = _cairo_fixed_from_double (x); - y_fixed = _cairo_fixed_from_double (y); - - status = _cairo_path_fixed_move_to (cr->path, x_fixed, y_fixed); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_move_to); - -/** - * cairo_new_sub_path: - * @cr: a cairo context - * - * Begin a new sub-path. Note that the existing path is not - * affected. After this call there will be no current point. - * - * In many cases, this call is not needed since new sub-paths are - * frequently started with cairo_move_to(). - * - * A call to cairo_new_sub_path() is particularly useful when - * beginning a new sub-path with one of the cairo_arc() calls. This - * makes things easier as it is no longer necessary to manually - * compute the arc's initial coordinates for a call to - * cairo_move_to(). - * - * Since: 1.2 - **/ -void -cairo_new_sub_path (cairo_t *cr) -{ - if (cr->status) - return; - - _cairo_path_fixed_new_sub_path (cr->path); -} - -/** - * cairo_line_to: - * @cr: a cairo context - * @x: the X coordinate of the end of the new line - * @y: the Y coordinate of the end of the new line - * - * Adds a line to the path from the current point to position (@x, @y) - * in user-space coordinates. After this call the current point - * will be (@x, @y). - * - * If there is no current point before the call to cairo_line_to() - * this function will behave as cairo_move_to (@cr, @x, @y). - **/ -void -cairo_line_to (cairo_t *cr, double x, double y) -{ - cairo_status_t status; - cairo_fixed_t x_fixed, y_fixed; - - if (cr->status) - return; - - _cairo_gstate_user_to_backend (cr->gstate, &x, &y); - x_fixed = _cairo_fixed_from_double (x); - y_fixed = _cairo_fixed_from_double (y); - - status = _cairo_path_fixed_line_to (cr->path, x_fixed, y_fixed); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_line_to); - -/** - * cairo_curve_to: - * @cr: a cairo context - * @x1: the X coordinate of the first control point - * @y1: the Y coordinate of the first control point - * @x2: the X coordinate of the second control point - * @y2: the Y coordinate of the second control point - * @x3: the X coordinate of the end of the curve - * @y3: the Y coordinate of the end of the curve - * - * Adds a cubic Bézier spline to the path from the current point to - * position (@x3, @y3) in user-space coordinates, using (@x1, @y1) and - * (@x2, @y2) as the control points. After this call the current point - * will be (@x3, @y3). - * - * If there is no current point before the call to cairo_curve_to() - * this function will behave as if preceded by a call to - * cairo_move_to (@cr, @x1, @y1). - **/ -void -cairo_curve_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double x3, double y3) -{ - cairo_status_t status; - cairo_fixed_t x1_fixed, y1_fixed; - cairo_fixed_t x2_fixed, y2_fixed; - cairo_fixed_t x3_fixed, y3_fixed; - - if (cr->status) - return; - - _cairo_gstate_user_to_backend (cr->gstate, &x1, &y1); - _cairo_gstate_user_to_backend (cr->gstate, &x2, &y2); - _cairo_gstate_user_to_backend (cr->gstate, &x3, &y3); - - x1_fixed = _cairo_fixed_from_double (x1); - y1_fixed = _cairo_fixed_from_double (y1); - - x2_fixed = _cairo_fixed_from_double (x2); - y2_fixed = _cairo_fixed_from_double (y2); - - x3_fixed = _cairo_fixed_from_double (x3); - y3_fixed = _cairo_fixed_from_double (y3); - - status = _cairo_path_fixed_curve_to (cr->path, - x1_fixed, y1_fixed, - x2_fixed, y2_fixed, - x3_fixed, y3_fixed); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_curve_to); - -/** - * cairo_arc: - * @cr: a cairo context - * @xc: X position of the center of the arc - * @yc: Y position of the center of the arc - * @radius: the radius of the arc - * @angle1: the start angle, in radians - * @angle2: the end angle, in radians - * - * Adds a circular arc of the given @radius to the current path. The - * arc is centered at (@xc, @yc), begins at @angle1 and proceeds in - * the direction of increasing angles to end at @angle2. If @angle2 is - * less than @angle1 it will be progressively increased by 2*M_PI - * until it is greater than @angle1. - * - * If there is a current point, an initial line segment will be added - * to the path to connect the current point to the beginning of the - * arc. If this initial line is undesired, it can be avoided by - * calling cairo_new_sub_path() before calling cairo_arc(). - * - * Angles are measured in radians. An angle of 0.0 is in the direction - * of the positive X axis (in user space). An angle of %M_PI/2.0 radians - * (90 degrees) is in the direction of the positive Y axis (in - * user space). Angles increase in the direction from the positive X - * axis toward the positive Y axis. So with the default transformation - * matrix, angles increase in a clockwise direction. - * - * (To convert from degrees to radians, use degrees * (M_PI / - * 180.).) - * - * This function gives the arc in the direction of increasing angles; - * see cairo_arc_negative() to get the arc in the direction of - * decreasing angles. - * - * The arc is circular in user space. To achieve an elliptical arc, - * you can scale the current transformation matrix by different - * amounts in the X and Y directions. For example, to draw an ellipse - * in the box given by @x, @y, @width, @height: - * - * - * cairo_save (cr); - * cairo_translate (cr, x + width / 2., y + height / 2.); - * cairo_scale (cr, width / 2., height / 2.); - * cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI); - * cairo_restore (cr); - * - **/ -void -cairo_arc (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2) -{ - if (cr->status) - return; - - /* Do nothing, successfully, if radius is <= 0 */ - if (radius <= 0.0) - return; - - while (angle2 < angle1) - angle2 += 2 * M_PI; - - cairo_line_to (cr, - xc + radius * cos (angle1), - yc + radius * sin (angle1)); - - _cairo_arc_path (cr, xc, yc, radius, - angle1, angle2); -} - -/** - * cairo_arc_negative: - * @cr: a cairo context - * @xc: X position of the center of the arc - * @yc: Y position of the center of the arc - * @radius: the radius of the arc - * @angle1: the start angle, in radians - * @angle2: the end angle, in radians - * - * Adds a circular arc of the given @radius to the current path. The - * arc is centered at (@xc, @yc), begins at @angle1 and proceeds in - * the direction of decreasing angles to end at @angle2. If @angle2 is - * greater than @angle1 it will be progressively decreased by 2*M_PI - * until it is less than @angle1. - * - * See cairo_arc() for more details. This function differs only in the - * direction of the arc between the two angles. - **/ -void -cairo_arc_negative (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2) -{ - if (cr->status) - return; - - /* Do nothing, successfully, if radius is <= 0 */ - if (radius <= 0.0) - return; - - while (angle2 > angle1) - angle2 -= 2 * M_PI; - - cairo_line_to (cr, - xc + radius * cos (angle1), - yc + radius * sin (angle1)); - - _cairo_arc_path_negative (cr, xc, yc, radius, - angle1, angle2); -} - -/* XXX: NYI -void -cairo_arc_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double radius) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_arc_to (cr->gstate, - x1, y1, - x2, y2, - radius); - if (status) - _cairo_set_error (cr, status); -} -*/ - -/** - * cairo_rel_move_to: - * @cr: a cairo context - * @dx: the X offset - * @dy: the Y offset - * - * Begin a new sub-path. After this call the current point will offset - * by (@x, @y). - * - * Given a current point of (x, y), cairo_rel_move_to(@cr, @dx, @dy) - * is logically equivalent to cairo_move_to (@cr, x + @dx, y + @dy). - * - * It is an error to call this function with no current point. Doing - * so will cause @cr to shutdown with a status of - * CAIRO_STATUS_NO_CURRENT_POINT. - **/ -void -cairo_rel_move_to (cairo_t *cr, double dx, double dy) -{ - cairo_fixed_t dx_fixed, dy_fixed; - cairo_status_t status; - - if (cr->status) - return; - - _cairo_gstate_user_to_device_distance (cr->gstate, &dx, &dy); - - dx_fixed = _cairo_fixed_from_double (dx); - dy_fixed = _cairo_fixed_from_double (dy); - - status = _cairo_path_fixed_rel_move_to (cr->path, dx_fixed, dy_fixed); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_rel_line_to: - * @cr: a cairo context - * @dx: the X offset to the end of the new line - * @dy: the Y offset to the end of the new line - * - * Relative-coordinate version of cairo_line_to(). Adds a line to the - * path from the current point to a point that is offset from the - * current point by (@dx, @dy) in user space. After this call the - * current point will be offset by (@dx, @dy). - * - * Given a current point of (x, y), cairo_rel_line_to(@cr, @dx, @dy) - * is logically equivalent to cairo_line_to (@cr, x + @dx, y + @dy). - * - * It is an error to call this function with no current point. Doing - * so will cause @cr to shutdown with a status of - * CAIRO_STATUS_NO_CURRENT_POINT. - **/ -void -cairo_rel_line_to (cairo_t *cr, double dx, double dy) -{ - cairo_fixed_t dx_fixed, dy_fixed; - cairo_status_t status; - - if (cr->status) - return; - - _cairo_gstate_user_to_device_distance (cr->gstate, &dx, &dy); - - dx_fixed = _cairo_fixed_from_double (dx); - dy_fixed = _cairo_fixed_from_double (dy); - - status = _cairo_path_fixed_rel_line_to (cr->path, dx_fixed, dy_fixed); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_rel_line_to); - -/** - * cairo_rel_curve_to: - * @cr: a cairo context - * @dx1: the X offset to the first control point - * @dy1: the Y offset to the first control point - * @dx2: the X offset to the second control point - * @dy2: the Y offset to the second control point - * @dx3: the X offset to the end of the curve - * @dy3: the Y offset to the end of the curve - * - * Relative-coordinate version of cairo_curve_to(). All offsets are - * relative to the current point. Adds a cubic Bézier spline to the - * path from the current point to a point offset from the current - * point by (@dx3, @dy3), using points offset by (@dx1, @dy1) and - * (@dx2, @dy2) as the control points. After this call the current - * point will be offset by (@dx3, @dy3). - * - * Given a current point of (x, y), cairo_rel_curve_to (@cr, @dx1, - * @dy1, @dx2, @dy2, @dx3, @dy3) is logically equivalent to - * cairo_curve_to (@cr, x + @dx1, y + @dy1, x + @dx2, y + @dy2, x + - * @dx3, y + @dy3). - * - * It is an error to call this function with no current point. Doing - * so will cause @cr to shutdown with a status of - * CAIRO_STATUS_NO_CURRENT_POINT. - **/ -void -cairo_rel_curve_to (cairo_t *cr, - double dx1, double dy1, - double dx2, double dy2, - double dx3, double dy3) -{ - cairo_fixed_t dx1_fixed, dy1_fixed; - cairo_fixed_t dx2_fixed, dy2_fixed; - cairo_fixed_t dx3_fixed, dy3_fixed; - cairo_status_t status; - - if (cr->status) - return; - - _cairo_gstate_user_to_device_distance (cr->gstate, &dx1, &dy1); - _cairo_gstate_user_to_device_distance (cr->gstate, &dx2, &dy2); - _cairo_gstate_user_to_device_distance (cr->gstate, &dx3, &dy3); - - dx1_fixed = _cairo_fixed_from_double (dx1); - dy1_fixed = _cairo_fixed_from_double (dy1); - - dx2_fixed = _cairo_fixed_from_double (dx2); - dy2_fixed = _cairo_fixed_from_double (dy2); - - dx3_fixed = _cairo_fixed_from_double (dx3); - dy3_fixed = _cairo_fixed_from_double (dy3); - - status = _cairo_path_fixed_rel_curve_to (cr->path, - dx1_fixed, dy1_fixed, - dx2_fixed, dy2_fixed, - dx3_fixed, dy3_fixed); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_rectangle: - * @cr: a cairo context - * @x: the X coordinate of the top left corner of the rectangle - * @y: the Y coordinate to the top left corner of the rectangle - * @width: the width of the rectangle - * @height: the height of the rectangle - * - * Adds a closed sub-path rectangle of the given size to the current - * path at position (@x, @y) in user-space coordinates. - * - * This function is logically equivalent to: - * - * cairo_move_to (cr, x, y); - * cairo_rel_line_to (cr, width, 0); - * cairo_rel_line_to (cr, 0, height); - * cairo_rel_line_to (cr, -width, 0); - * cairo_close_path (cr); - * - **/ -void -cairo_rectangle (cairo_t *cr, - double x, double y, - double width, double height) -{ - if (cr->status) - return; - - cairo_move_to (cr, x, y); - cairo_rel_line_to (cr, width, 0); - cairo_rel_line_to (cr, 0, height); - cairo_rel_line_to (cr, -width, 0); - cairo_close_path (cr); -} - -/* XXX: NYI -void -cairo_stroke_to_path (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_stroke_path (cr->gstate); - if (status) - _cairo_set_error (cr, status); -} -*/ - -/** - * cairo_close_path: - * @cr: a cairo context - * - * Adds a line segment to the path from the current point to the - * beginning of the current sub-path, (the most recent point passed to - * cairo_move_to()), and closes this sub-path. After this call the - * current point will be at the joined endpoint of the sub-path. - * - * The behavior of cairo_close_path() is distinct from simply calling - * cairo_line_to() with the equivalent coordinate in the case of - * stroking. When a closed sub-path is stroked, there are no caps on - * the ends of the sub-path. Instead, there is a line join connecting - * the final and initial segments of the sub-path. - * - * If there is no current point before the call to cairo_close_path(), - * this function will have no effect. - * - * Note: As of cairo version 1.2.4 any call to cairo_close_path() will - * place an explicit MOVE_TO element into the path immediately after - * the CLOSE_PATH element, (which can be seen in cairo_copy_path() for - * example). This can simplify path processing in some cases as it may - * not be necessary to save the "last move_to point" during processing - * as the MOVE_TO immediately after the CLOSE_PATH will provide that - * point. - **/ -void -cairo_close_path (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_path_fixed_close_path (cr->path); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_close_path); - -/** - * cairo_path_extents: - * @cr: a cairo context - * @x1: left of the resulting extents - * @y1: top of the resulting extents - * @x2: right of the resulting extents - * @y2: bottom of the resulting extents - * - * Computes a bounding box in user-space coordinates covering the - * points on the current path. If the current path is empty, returns - * an empty rectangle ((0,0), (0,0)). Stroke parameters, fill rule, - * surface dimensions and clipping are not taken into account. - * - * Contrast with cairo_fill_extents() and cairo_stroke_extents() which - * return the extents of only the area that would be "inked" by - * the corresponding drawing operations. - * - * The result of cairo_path_extents() is defined as equivalent to the - * limit of cairo_stroke_extents() with %CAIRO_LINE_CAP_ROUND as the - * line width approaches 0.0, (but never reaching the empty-rectangle - * returned by cairo_stroke_extents() for a line width of 0.0). - * - * Specifically, this means that zero-area sub-paths such as - * cairo_move_to();cairo_line_to() segments, (even degenerate cases - * where the coordinates to both calls are identical), will be - * considered as contributing to the extents. However, a lone - * cairo_move_to() will not contribute to the results of - * cairo_path_extents(). - * - * Since: 1.6 - **/ -void -cairo_path_extents (cairo_t *cr, - double *x1, double *y1, double *x2, double *y2) -{ - cairo_status_t status; - - if (cr->status) { - if (x1) - *x1 = 0.0; - if (y1) - *y1 = 0.0; - if (x2) - *x2 = 0.0; - if (y2) - *y2 = 0.0; - - return; - } - - status = _cairo_gstate_path_extents (cr->gstate, - cr->path, - x1, y1, x2, y2); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_path_extents); - -/** - * cairo_paint: - * @cr: a cairo context - * - * A drawing operator that paints the current source everywhere within - * the current clip region. - **/ -void -cairo_paint (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_paint (cr->gstate); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_paint); - -/** - * cairo_paint_with_alpha: - * @cr: a cairo context - * @alpha: alpha value, between 0 (transparent) and 1 (opaque) - * - * A drawing operator that paints the current source everywhere within - * the current clip region using a mask of constant alpha value - * @alpha. The effect is similar to cairo_paint(), but the drawing - * is faded out using the alpha value. - **/ -void -cairo_paint_with_alpha (cairo_t *cr, - double alpha) -{ - cairo_status_t status; - cairo_color_t color; - cairo_pattern_union_t pattern; - - if (cr->status) - return; - - if (CAIRO_ALPHA_IS_OPAQUE (alpha)) { - cairo_paint (cr); - return; - } - - if (CAIRO_ALPHA_IS_ZERO (alpha)) { - return; - } - - _cairo_color_init_rgba (&color, 1., 1., 1., alpha); - _cairo_pattern_init_solid (&pattern.solid, &color, CAIRO_CONTENT_ALPHA); - - status = _cairo_gstate_mask (cr->gstate, &pattern.base); - if (status) - _cairo_set_error (cr, status); - - _cairo_pattern_fini (&pattern.base); -} - -/** - * cairo_mask: - * @cr: a cairo context - * @pattern: a #cairo_pattern_t - * - * A drawing operator that paints the current source - * using the alpha channel of @pattern as a mask. (Opaque - * areas of @pattern are painted with the source, transparent - * areas are not painted.) - */ -void -cairo_mask (cairo_t *cr, - cairo_pattern_t *pattern) -{ - cairo_status_t status; - - if (cr->status) - return; - - if (pattern == NULL) { - _cairo_set_error (cr, CAIRO_STATUS_NULL_POINTER); - return; - } - - if (pattern->status) { - _cairo_set_error (cr, pattern->status); - return; - } - - status = _cairo_gstate_mask (cr->gstate, pattern); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def (cairo_mask); - -/** - * cairo_mask_surface: - * @cr: a cairo context - * @surface: a #cairo_surface_t - * @surface_x: X coordinate at which to place the origin of @surface - * @surface_y: Y coordinate at which to place the origin of @surface - * - * A drawing operator that paints the current source - * using the alpha channel of @surface as a mask. (Opaque - * areas of @surface are painted with the source, transparent - * areas are not painted.) - */ -void -cairo_mask_surface (cairo_t *cr, - cairo_surface_t *surface, - double surface_x, - double surface_y) -{ - cairo_pattern_t *pattern; - cairo_matrix_t matrix; - - if (cr->status) - return; - - pattern = cairo_pattern_create_for_surface (surface); - - cairo_matrix_init_translate (&matrix, - surface_x, - surface_y); - cairo_pattern_set_matrix (pattern, &matrix); - - cairo_mask (cr, pattern); - - cairo_pattern_destroy (pattern); -} - -/** - * cairo_stroke: - * @cr: a cairo context - * - * A drawing operator that strokes the current path according to the - * current line width, line join, line cap, and dash settings. After - * cairo_stroke, the current path will be cleared from the cairo - * context. See cairo_set_line_width(), cairo_set_line_join(), - * cairo_set_line_cap(), cairo_set_dash(), and - * cairo_stroke_preserve(). - * - * Note: Degenerate segments and sub-paths are treated specially and - * provide a useful result. These can result in two different - * situations: - * - * 1. Zero-length "on" segments set in cairo_set_dash(). If the cap - * style is %CAIRO_LINE_CAP_ROUND or %CAIRO_LINE_CAP_SQUARE then these - * segments will be drawn as circular dots or squares respectively. In - * the case of %CAIRO_LINE_CAP_SQUARE, the orientation of the squares - * is determined by the direction of the underlying path. - * - * 2. A sub-path created by cairo_move_to() followed by either a - * cairo_close_path() or one or more calls to cairo_line_to() to the - * same coordinate as the cairo_move_to(). If the cap style is - * CAIRO_LINE_CAP_ROUND then these sub-paths will be drawn as circular - * dots. Note that in the case of %CAIRO_LINE_CAP_SQUARE a degenerate - * sub-path will not be drawn at all, (since the correct orientation - * is indeterminate). - * - * In no case will a cap style of %CAIRO_LINE_CAP_BUTT cause anything - * to be drawn in the case of either degenerate segments or sub-paths. - **/ -void -cairo_stroke (cairo_t *cr) -{ - cairo_stroke_preserve (cr); - - cairo_new_path (cr); -} - -/** - * cairo_stroke_preserve: - * @cr: a cairo context - * - * A drawing operator that strokes the current path according to the - * current line width, line join, line cap, and dash settings. Unlike - * cairo_stroke(), cairo_stroke_preserve() preserves the path within the - * cairo context. - * - * See cairo_set_line_width(), cairo_set_line_join(), - * cairo_set_line_cap(), cairo_set_dash(), and - * cairo_stroke_preserve(). - **/ -void -cairo_stroke_preserve (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_stroke (cr->gstate, cr->path); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_stroke_preserve); - -/** - * cairo_fill: - * @cr: a cairo context - * - * A drawing operator that fills the current path according to the - * current fill rule, (each sub-path is implicitly closed before being - * filled). After cairo_fill(), the current path will be cleared from - * the cairo context. See cairo_set_fill_rule() and - * cairo_fill_preserve(). - **/ -void -cairo_fill (cairo_t *cr) -{ - cairo_fill_preserve (cr); - - cairo_new_path (cr); -} - -/** - * cairo_fill_preserve: - * @cr: a cairo context - * - * A drawing operator that fills the current path according to the - * current fill rule, (each sub-path is implicitly closed before being - * filled). Unlike cairo_fill(), cairo_fill_preserve() preserves the - * path within the cairo context. - * - * See cairo_set_fill_rule() and cairo_fill(). - **/ -void -cairo_fill_preserve (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_fill (cr->gstate, cr->path); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_fill_preserve); - -/** - * cairo_copy_page: - * @cr: a cairo context - * - * Emits the current page for backends that support multiple pages, but - * doesn't clear it, so, the contents of the current page will be retained - * for the next page too. Use cairo_show_page() if you want to get an - * empty page after the emission. - * - * This is a convenience function that simply calls - * cairo_surface_copy_page() on @cr's target. - **/ -void -cairo_copy_page (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_copy_page (cr->gstate); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_show_page: - * @cr: a cairo context - * - * Emits and clears the current page for backends that support multiple - * pages. Use cairo_copy_page() if you don't want to clear the page. - * - * This is a convenience function that simply calls - * cairo_surface_show_page() on @cr's target. - **/ -void -cairo_show_page (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_show_page (cr->gstate); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_in_stroke: - * @cr: a cairo context - * @x: X coordinate of the point to test - * @y: Y coordinate of the point to test - * - * Tests whether the given point is inside the area that would be - * affected by a cairo_stroke() operation given the current path and - * stroking parameters. Surface dimensions and clipping are not taken - * into account. - * - * See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), - * cairo_set_line_cap(), cairo_set_dash(), and - * cairo_stroke_preserve(). - * - * Return value: A non-zero value if the point is inside, or zero if - * outside. - **/ -cairo_bool_t -cairo_in_stroke (cairo_t *cr, double x, double y) -{ - cairo_status_t status; - cairo_bool_t inside = FALSE; - - if (cr->status) - return 0; - - status = _cairo_gstate_in_stroke (cr->gstate, - cr->path, - x, y, &inside); - if (status) - _cairo_set_error (cr, status); - - return inside; -} - -/** - * cairo_in_fill: - * @cr: a cairo context - * @x: X coordinate of the point to test - * @y: Y coordinate of the point to test - * - * Tests whether the given point is inside the area that would be - * affected by a cairo_fill() operation given the current path and - * filling parameters. Surface dimensions and clipping are not taken - * into account. - * - * See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). - * - * Return value: A non-zero value if the point is inside, or zero if - * outside. - **/ -cairo_bool_t -cairo_in_fill (cairo_t *cr, double x, double y) -{ - cairo_status_t status; - cairo_bool_t inside = FALSE; - - if (cr->status) - return 0; - - status = _cairo_gstate_in_fill (cr->gstate, - cr->path, - x, y, &inside); - if (status) - _cairo_set_error (cr, status); - - return inside; -} - -/** - * cairo_stroke_extents: - * @cr: a cairo context - * @x1: left of the resulting extents - * @y1: top of the resulting extents - * @x2: right of the resulting extents - * @y2: bottom of the resulting extents - * - * Computes a bounding box in user coordinates covering the area that - * would be affected, (the "inked" area), by a cairo_stroke() - * operation operation given the current path and stroke - * parameters. If the current path is empty, returns an empty - * rectangle ((0,0), (0,0)). Surface dimensions and clipping are not - * taken into account. - * - * Note that if the line width is set to exactly zero, then - * cairo_stroke_extents() will return an empty rectangle. Contrast with - * cairo_path_extents() which can be used to compute the non-empty - * bounds as the line width approaches zero. - * - * Note that cairo_stroke_extents() must necessarily do more work to - * compute the precise inked areas in light of the stroke parameters, - * so cairo_path_extents() may be more desirable for sake of - * performance if non-inked path extents are desired. - * - * See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), - * cairo_set_line_cap(), cairo_set_dash(), and - * cairo_stroke_preserve(). - **/ -void -cairo_stroke_extents (cairo_t *cr, - double *x1, double *y1, double *x2, double *y2) -{ - cairo_status_t status; - - if (cr->status) { - if (x1) - *x1 = 0.0; - if (y1) - *y1 = 0.0; - if (x2) - *x2 = 0.0; - if (y2) - *y2 = 0.0; - - return; - } - - status = _cairo_gstate_stroke_extents (cr->gstate, - cr->path, - x1, y1, x2, y2); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_fill_extents: - * @cr: a cairo context - * @x1: left of the resulting extents - * @y1: top of the resulting extents - * @x2: right of the resulting extents - * @y2: bottom of the resulting extents - * - * Computes a bounding box in user coordinates covering the area that - * would be affected, (the "inked" area), by a cairo_fill() operation - * given the current path and fill parameters. If the current path is - * empty, returns an empty rectangle ((0,0), (0,0)). Surface - * dimensions and clipping are not taken into account. - * - * Contrast with cairo_path_extents(), which is similar, but returns - * non-zero extents for some paths with no inked area, (such as a - * simple line segment). - * - * Note that cairo_fill_extents() must necessarily do more work to - * compute the precise inked areas in light of the fill rule, so - * cairo_path_extents() may be more desirable for sake of performance - * if the non-inked path extents are desired. - * - * See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). - **/ -void -cairo_fill_extents (cairo_t *cr, - double *x1, double *y1, double *x2, double *y2) -{ - cairo_status_t status; - - if (cr->status) { - if (x1) - *x1 = 0.0; - if (y1) - *y1 = 0.0; - if (x2) - *x2 = 0.0; - if (y2) - *y2 = 0.0; - - return; - } - - status = _cairo_gstate_fill_extents (cr->gstate, - cr->path, - x1, y1, x2, y2); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_clip: - * @cr: a cairo context - * - * Establishes a new clip region by intersecting the current clip - * region with the current path as it would be filled by cairo_fill() - * and according to the current fill rule (see cairo_set_fill_rule()). - * - * After cairo_clip(), the current path will be cleared from the cairo - * context. - * - * The current clip region affects all drawing operations by - * effectively masking out any changes to the surface that are outside - * the current clip region. - * - * Calling cairo_clip() can only make the clip region smaller, never - * larger. But the current clip is part of the graphics state, so a - * temporary restriction of the clip region can be achieved by - * calling cairo_clip() within a cairo_save()/cairo_restore() - * pair. The only other means of increasing the size of the clip - * region is cairo_reset_clip(). - **/ -void -cairo_clip (cairo_t *cr) -{ - cairo_clip_preserve (cr); - - cairo_new_path (cr); -} - -/** - * cairo_clip_preserve: - * @cr: a cairo context - * - * Establishes a new clip region by intersecting the current clip - * region with the current path as it would be filled by cairo_fill() - * and according to the current fill rule (see cairo_set_fill_rule()). - * - * Unlike cairo_clip(), cairo_clip_preserve() preserves the path within - * the cairo context. - * - * The current clip region affects all drawing operations by - * effectively masking out any changes to the surface that are outside - * the current clip region. - * - * Calling cairo_clip() can only make the clip region smaller, never - * larger. But the current clip is part of the graphics state, so a - * temporary restriction of the clip region can be achieved by - * calling cairo_clip() within a cairo_save()/cairo_restore() - * pair. The only other means of increasing the size of the clip - * region is cairo_reset_clip(). - **/ -void -cairo_clip_preserve (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_clip (cr->gstate, cr->path); - if (status) - _cairo_set_error (cr, status); -} -slim_hidden_def(cairo_clip_preserve); - -/** - * cairo_reset_clip: - * @cr: a cairo context - * - * Reset the current clip region to its original, unrestricted - * state. That is, set the clip region to an infinitely large shape - * containing the target surface. Equivalently, if infinity is too - * hard to grasp, one can imagine the clip region being reset to the - * exact bounds of the target surface. - * - * Note that code meant to be reusable should not call - * cairo_reset_clip() as it will cause results unexpected by - * higher-level code which calls cairo_clip(). Consider using - * cairo_save() and cairo_restore() around cairo_clip() as a more - * robust means of temporarily restricting the clip region. - **/ -void -cairo_reset_clip (cairo_t *cr) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_reset_clip (cr->gstate); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_clip_extents: - * @cr: a cairo context - * @x1: left of the resulting extents - * @y1: top of the resulting extents - * @x2: right of the resulting extents - * @y2: bottom of the resulting extents - * - * Computes a bounding box in user coordinates covering the area inside the - * current clip. - * - * Since: 1.4 - **/ -void -cairo_clip_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2) -{ - cairo_status_t status; - - if (cr->status) { - if (x1) - *x1 = 0.0; - if (y1) - *y1 = 0.0; - if (x2) - *x2 = 0.0; - if (y2) - *y2 = 0.0; - - return; - } - - status = _cairo_gstate_clip_extents (cr->gstate, x1, y1, x2, y2); - if (status) - _cairo_set_error (cr, status); -} - -static cairo_rectangle_list_t * -_cairo_rectangle_list_create_in_error (cairo_status_t status) -{ - cairo_rectangle_list_t *list; - - if (status == CAIRO_STATUS_NO_MEMORY) - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - - list = malloc (sizeof (cairo_rectangle_list_t)); - if (list == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - } - - list->status = status; - list->rectangles = NULL; - list->num_rectangles = 0; - return list; -} - -/** - * cairo_copy_clip_rectangle_list: - * @cr: a cairo context - * - * Gets the current clip region as a list of rectangles in user coordinates. - * Never returns %NULL. - * - * The status in the list may be %CAIRO_STATUS_CLIP_NOT_REPRESENTABLE to - * indicate that the clip region cannot be represented as a list of - * user-space rectangles. The status may have other values to indicate - * other errors. - * - * Returns: the current clip region as a list of rectangles in user coordinates, - * which should be destroyed using cairo_rectangle_list_destroy(). - * - * Since: 1.4 - **/ -cairo_rectangle_list_t * -cairo_copy_clip_rectangle_list (cairo_t *cr) -{ - if (cr->status) - return _cairo_rectangle_list_create_in_error (cr->status); - - return _cairo_gstate_copy_clip_rectangle_list (cr->gstate); -} - -/** - * cairo_select_font_face: - * @cr: a #cairo_t - * @family: a font family name, encoded in UTF-8 - * @slant: the slant for the font - * @weight: the weight for the font - * - * Note: The cairo_select_font_face() function call is part of what - * the cairo designers call the "toy" text API. It is convenient for - * short demos and simple programs, but it is not expected to be - * adequate for serious text-using applications. - * - * Selects a family and style of font from a simplified description as - * a family name, slant and weight. Cairo provides no operation to - * list available family names on the system (this is a "toy", - * remember"), but the standard CSS2 generic family names, ("serif", - * "sans-serif", "cursive", "fantasy", "monospace"), are likely to - * work as expected. - * - * For "real" font selection, see the font-backend-specific - * font_face_create functions for the font backend you are using. (For - * example, if you are using the freetype-based cairo-ft font backend, - * see cairo_ft_font_face_create_for_ft_face() or - * cairo_ft_font_face_create_for_pattern().) The resulting font face - * could then be used with cairo_scaled_font_create() and - * cairo_set_scaled_font(). - * - * Similarly, when using the "real" font support, you can call - * directly into the underlying font system, (such as fontconfig or - * freetype), for operations such as listing available fonts, etc. - * - * It is expected that most applications will need to use a more - * comprehensive font handling and text layout library, (for example, - * pango), in conjunction with cairo. - * - * If text is drawn without a call to cairo_select_font_face(), (nor - * cairo_set_font_face() nor cairo_set_scaled_font()), the default - * family is "sans", slant is %CAIRO_FONT_SLANT_NORMAL, and weight is - * %CAIRO_FONT_WEIGHT_NORMAL. - **/ -void -cairo_select_font_face (cairo_t *cr, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_select_font_face (cr->gstate, family, slant, weight); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_font_extents: - * @cr: a #cairo_t - * @extents: a #cairo_font_extents_t object into which the results - * will be stored. - * - * Gets the font extents for the currently selected font. - **/ -void -cairo_font_extents (cairo_t *cr, - cairo_font_extents_t *extents) -{ - cairo_status_t status; - - extents->ascent = 0.0; - extents->descent = 0.0; - extents->height = 0.0; - extents->max_x_advance = 0.0; - extents->max_y_advance = 0.0; - - if (cr->status) - return; - - status = _cairo_gstate_get_font_extents (cr->gstate, extents); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_font_face: - * @cr: a #cairo_t - * @font_face: a #cairo_font_face_t, or %NULL to restore to the default font - * - * Replaces the current #cairo_font_face_t object in the #cairo_t with - * @font_face. The replaced font face in the #cairo_t will be - * destroyed if there are no other references to it. - **/ -void -cairo_set_font_face (cairo_t *cr, - cairo_font_face_t *font_face) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_font_face (cr->gstate, font_face); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_get_font_face: - * @cr: a #cairo_t - * - * Gets the current font face for a #cairo_t. - * - * Return value: the current font face. This object is owned by - * cairo. To keep a reference to it, you must call - * cairo_font_face_reference. - * - * This function never returns %NULL. If memory cannot be allocated, a - * special "nil" #cairo_font_face_t object will be returned on which - * cairo_font_face_status() returns %CAIRO_STATUS_NO_MEMORY. Using - * this nil object will cause its error state to propagate to other - * objects it is passed to, (for example, calling - * cairo_set_font_face() with a nil font will trigger an error that - * will shutdown the #cairo_t object). - **/ -cairo_font_face_t * -cairo_get_font_face (cairo_t *cr) -{ - cairo_status_t status; - cairo_font_face_t *font_face; - - if (cr->status) - return (cairo_font_face_t*) &_cairo_font_face_nil; - - status = _cairo_gstate_get_font_face (cr->gstate, &font_face); - if (status) { - _cairo_set_error (cr, status); - return (cairo_font_face_t*) &_cairo_font_face_nil; - } - - return font_face; -} - -/** - * cairo_set_font_size: - * @cr: a #cairo_t - * @size: the new font size, in user space units - * - * Sets the current font matrix to a scale by a factor of @size, replacing - * any font matrix previously set with cairo_set_font_size() or - * cairo_set_font_matrix(). This results in a font size of @size user space - * units. (More precisely, this matrix will result in the font's - * em-square being a @size by @size square in user space.) - * - * If text is drawn without a call to cairo_set_font_size(), (nor - * cairo_set_font_matrix() nor cairo_set_scaled_font()), the default - * font size is 10.0. - **/ -void -cairo_set_font_size (cairo_t *cr, double size) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_font_size (cr->gstate, size); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_set_font_matrix - * @cr: a #cairo_t - * @matrix: a #cairo_matrix_t describing a transform to be applied to - * the current font. - * - * Sets the current font matrix to @matrix. The font matrix gives a - * transformation from the design space of the font (in this space, - * the em-square is 1 unit by 1 unit) to user space. Normally, a - * simple scale is used (see cairo_set_font_size()), but a more - * complex font matrix can be used to shear the font - * or stretch it unequally along the two axes - **/ -void -cairo_set_font_matrix (cairo_t *cr, - const cairo_matrix_t *matrix) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = _cairo_gstate_set_font_matrix (cr->gstate, matrix); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_get_font_matrix - * @cr: a #cairo_t - * @matrix: return value for the matrix - * - * Stores the current font matrix into @matrix. See - * cairo_set_font_matrix(). - **/ -void -cairo_get_font_matrix (cairo_t *cr, cairo_matrix_t *matrix) -{ - if (cr->status) { - cairo_matrix_init_identity (matrix); - return; - } - - _cairo_gstate_get_font_matrix (cr->gstate, matrix); -} - -/** - * cairo_set_font_options: - * @cr: a #cairo_t - * @options: font options to use - * - * Sets a set of custom font rendering options for the #cairo_t. - * Rendering options are derived by merging these options with the - * options derived from underlying surface; if the value in @options - * has a default value (like %CAIRO_ANTIALIAS_DEFAULT), then the value - * from the surface is used. - **/ -void -cairo_set_font_options (cairo_t *cr, - const cairo_font_options_t *options) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = cairo_font_options_status ((cairo_font_options_t *) options); - if (status) { - _cairo_set_error (cr, status); - return; - } - - _cairo_gstate_set_font_options (cr->gstate, options); -} - -/** - * cairo_get_font_options: - * @cr: a #cairo_t - * @options: a #cairo_font_options_t object into which to store - * the retrieved options. All existing values are overwritten - * - * Retrieves font rendering options set via #cairo_set_font_options. - * Note that the returned options do not include any options derived - * from the underlying surface; they are literally the options - * passed to cairo_set_font_options(). - **/ -void -cairo_get_font_options (cairo_t *cr, - cairo_font_options_t *options) -{ - /* check that we aren't trying to overwrite the nil object */ - if (cairo_font_options_status (options)) - return; - - if (cr->status) { - _cairo_font_options_init_default (options); - return; - } - - _cairo_gstate_get_font_options (cr->gstate, options); -} - -/** - * cairo_set_scaled_font: - * @cr: a #cairo_t - * @scaled_font: a #cairo_scaled_font_t - * - * Replaces the current font face, font matrix, and font options in - * the #cairo_t with those of the #cairo_scaled_font_t. Except for - * some translation, the current CTM of the #cairo_t should be the - * same as that of the #cairo_scaled_font_t, which can be accessed - * using cairo_scaled_font_get_ctm(). - * - * Since: 1.2 - **/ -void -cairo_set_scaled_font (cairo_t *cr, - const cairo_scaled_font_t *scaled_font) -{ - cairo_status_t status; - - if (cr->status) - return; - - status = scaled_font->status; - if (status) - goto BAIL; - - status = _cairo_gstate_set_font_face (cr->gstate, scaled_font->font_face); - if (status) - goto BAIL; - - status = _cairo_gstate_set_font_matrix (cr->gstate, &scaled_font->font_matrix); - if (status) - goto BAIL; - - _cairo_gstate_set_font_options (cr->gstate, &scaled_font->options); - - return; - -BAIL: - _cairo_set_error (cr, status); -} - -/** - * cairo_get_scaled_font: - * @cr: a #cairo_t - * - * Gets the current scaled font for a #cairo_t. - * - * Return value: the current scaled font. This object is owned by - * cairo. To keep a reference to it, you must call - * cairo_scaled_font_reference(). - * - * This function never returns %NULL. If memory cannot be allocated, a - * special "nil" #cairo_scaled_font_t object will be returned on which - * cairo_scaled_font_status() returns %CAIRO_STATUS_NO_MEMORY. Using - * this nil object will cause its error state to propagate to other - * objects it is passed to, (for example, calling - * cairo_set_scaled_font() with a nil font will trigger an error that - * will shutdown the #cairo_t object). - * - * Since: 1.4 - **/ -cairo_scaled_font_t * -cairo_get_scaled_font (cairo_t *cr) -{ - cairo_status_t status; - cairo_scaled_font_t *scaled_font; - - if (cr->status) - return _cairo_scaled_font_create_in_error (cr->status); - - status = _cairo_gstate_get_scaled_font (cr->gstate, &scaled_font); - if (status) { - _cairo_set_error (cr, status); - return _cairo_scaled_font_create_in_error (status); - } - - return scaled_font; -} - -/** - * cairo_text_extents: - * @cr: a #cairo_t - * @utf8: a string of text, encoded in UTF-8 - * @extents: a #cairo_text_extents_t object into which the results - * will be stored - * - * Gets the extents for a string of text. The extents describe a - * user-space rectangle that encloses the "inked" portion of the text, - * (as it would be drawn by cairo_show_text()). Additionally, the - * x_advance and y_advance values indicate the amount by which the - * current point would be advanced by cairo_show_text(). - * - * Note that whitespace characters do not directly contribute to the - * size of the rectangle (extents.width and extents.height). They do - * contribute indirectly by changing the position of non-whitespace - * characters. In particular, trailing whitespace characters are - * likely to not affect the size of the rectangle, though they will - * affect the x_advance and y_advance values. - **/ -void -cairo_text_extents (cairo_t *cr, - const char *utf8, - cairo_text_extents_t *extents) -{ - cairo_status_t status; - cairo_glyph_t *glyphs = NULL; - int num_glyphs; - double x, y; - - extents->x_bearing = 0.0; - extents->y_bearing = 0.0; - extents->width = 0.0; - extents->height = 0.0; - extents->x_advance = 0.0; - extents->y_advance = 0.0; - - if (cr->status) - return; - - if (utf8 == NULL) - return; - - cairo_get_current_point (cr, &x, &y); - - status = _cairo_gstate_text_to_glyphs (cr->gstate, utf8, - x, y, - &glyphs, &num_glyphs); - - if (status == CAIRO_STATUS_SUCCESS) - status = _cairo_gstate_glyph_extents (cr->gstate, - glyphs, num_glyphs, - extents); - if (glyphs) - free (glyphs); - - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_glyph_extents: - * @cr: a #cairo_t - * @glyphs: an array of #cairo_glyph_t objects - * @num_glyphs: the number of elements in @glyphs - * @extents: a #cairo_text_extents_t object into which the results - * will be stored - * - * Gets the extents for an array of glyphs. The extents describe a - * user-space rectangle that encloses the "inked" portion of the - * glyphs, (as they would be drawn by cairo_show_glyphs()). - * Additionally, the x_advance and y_advance values indicate the - * amount by which the current point would be advanced by - * cairo_show_glyphs. - * - * Note that whitespace glyphs do not contribute to the size of the - * rectangle (extents.width and extents.height). - **/ -void -cairo_glyph_extents (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents) -{ - cairo_status_t status; - - extents->x_bearing = 0.0; - extents->y_bearing = 0.0; - extents->width = 0.0; - extents->height = 0.0; - extents->x_advance = 0.0; - extents->y_advance = 0.0; - - if (cr->status) - return; - - status = _cairo_gstate_glyph_extents (cr->gstate, glyphs, num_glyphs, - extents); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_show_text: - * @cr: a cairo context - * @utf8: a string of text encoded in UTF-8 - * - * A drawing operator that generates the shape from a string of UTF-8 - * characters, rendered according to the current font_face, font_size - * (font_matrix), and font_options. - * - * This function first computes a set of glyphs for the string of - * text. The first glyph is placed so that its origin is at the - * current point. The origin of each subsequent glyph is offset from - * that of the previous glyph by the advance values of the previous - * glyph. - * - * After this call the current point is moved to the origin of where - * the next glyph would be placed in this same progression. That is, - * the current point will be at the origin of the final glyph offset - * by its advance values. This allows for easy display of a single - * logical string with multiple calls to cairo_show_text(). - * - * Note: The cairo_show_text() function call is part of what the cairo - * designers call the "toy" text API. It is convenient for short demos - * and simple programs, but it is not expected to be adequate for - * serious text-using applications. See cairo_show_glyphs() for the - * "real" text display API in cairo. - **/ -void -cairo_show_text (cairo_t *cr, const char *utf8) -{ - cairo_text_extents_t extents; - cairo_status_t status; - cairo_glyph_t *glyphs = NULL, *last_glyph; - int num_glyphs; - double x, y; - - if (cr->status) - return; - - if (utf8 == NULL) - return; - - cairo_get_current_point (cr, &x, &y); - - status = _cairo_gstate_text_to_glyphs (cr->gstate, utf8, - x, y, - &glyphs, &num_glyphs); - if (status) - goto BAIL; - - if (num_glyphs == 0) - return; - - status = _cairo_gstate_show_glyphs (cr->gstate, glyphs, num_glyphs); - if (status) - goto BAIL; - - last_glyph = &glyphs[num_glyphs - 1]; - status = _cairo_gstate_glyph_extents (cr->gstate, - last_glyph, 1, - &extents); - if (status) - goto BAIL; - - x = last_glyph->x + extents.x_advance; - y = last_glyph->y + extents.y_advance; - cairo_move_to (cr, x, y); - - BAIL: - if (glyphs) - free (glyphs); - - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_show_glyphs: - * @cr: a cairo context - * @glyphs: array of glyphs to show - * @num_glyphs: number of glyphs to show - * - * A drawing operator that generates the shape from an array of glyphs, - * rendered according to the current font_face, font_size - * (font_matrix), and font_options. - **/ -void -cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs) -{ - cairo_status_t status; - - if (cr->status) - return; - - if (num_glyphs == 0) - return; - - status = _cairo_gstate_show_glyphs (cr->gstate, glyphs, num_glyphs); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_text_path: - * @cr: a cairo context - * @utf8: a string of text encoded in UTF-8 - * - * Adds closed paths for text to the current path. The generated - * path if filled, achieves an effect similar to that of - * cairo_show_text(). - * - * Text conversion and positioning is done similar to cairo_show_text(). - * - * Like cairo_show_text(), After this call the current point is - * moved to the origin of where the next glyph would be placed in - * this same progression. That is, the current point will be at - * the origin of the final glyph offset by its advance values. - * This allows for chaining multiple calls to to cairo_text_path() - * without having to set current point in between. - * - * Note: The cairo_text_path() function call is part of what the cairo - * designers call the "toy" text API. It is convenient for short demos - * and simple programs, but it is not expected to be adequate for - * serious text-using applications. See cairo_glyph_path() for the - * "real" text path API in cairo. - **/ -void -cairo_text_path (cairo_t *cr, const char *utf8) -{ - cairo_status_t status; - cairo_text_extents_t extents; - cairo_glyph_t *glyphs = NULL, *last_glyph; - int num_glyphs; - double x, y; - - if (cr->status) - return; - - if (utf8 == NULL) - return; - - cairo_get_current_point (cr, &x, &y); - - status = _cairo_gstate_text_to_glyphs (cr->gstate, utf8, - x, y, - &glyphs, &num_glyphs); - - if (status) - goto BAIL; - - if (num_glyphs == 0) - return; - - status = _cairo_gstate_glyph_path (cr->gstate, - glyphs, num_glyphs, - cr->path); - - if (status) - goto BAIL; - - last_glyph = &glyphs[num_glyphs - 1]; - status = _cairo_gstate_glyph_extents (cr->gstate, - last_glyph, 1, - &extents); - - if (status) - goto BAIL; - - x = last_glyph->x + extents.x_advance; - y = last_glyph->y + extents.y_advance; - cairo_move_to (cr, x, y); - - BAIL: - if (glyphs) - free (glyphs); - - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_glyph_path: - * @cr: a cairo context - * @glyphs: array of glyphs to show - * @num_glyphs: number of glyphs to show - * - * Adds closed paths for the glyphs to the current path. The generated - * path if filled, achieves an effect similar to that of - * cairo_show_glyphs(). - **/ -void -cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs) -{ - cairo_status_t status; - - if (cr->status) - return; - - if (num_glyphs == 0) - return; - - status = _cairo_gstate_glyph_path (cr->gstate, - glyphs, num_glyphs, - cr->path); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_get_operator: - * @cr: a cairo context - * - * Gets the current compositing operator for a cairo context. - * - * Return value: the current compositing operator. - **/ -cairo_operator_t -cairo_get_operator (cairo_t *cr) -{ - if (cr->status) - return (cairo_operator_t) 0; - - return _cairo_gstate_get_operator (cr->gstate); -} - -/** - * cairo_get_tolerance: - * @cr: a cairo context - * - * Gets the current tolerance value, as set by cairo_set_tolerance(). - * - * Return value: the current tolerance value. - **/ -double -cairo_get_tolerance (cairo_t *cr) -{ - if (cr->status) - return 0.; - - return _cairo_gstate_get_tolerance (cr->gstate); -} -slim_hidden_def (cairo_get_tolerance); - -/** - * cairo_get_antialias: - * @cr: a cairo context - * - * Gets the current shape antialiasing mode, as set by cairo_set_shape_antialias(). - * - * Return value: the current shape antialiasing mode. - **/ -cairo_antialias_t -cairo_get_antialias (cairo_t *cr) -{ - if (cr->status) - return (cairo_antialias_t) 0; - - return _cairo_gstate_get_antialias (cr->gstate); -} - -/** - * cairo_has_current_point: - * @cr: a cairo context - * - * Returns whether a current point is defined on the current path. - * See cairo_get_current_point() for details on the current point. - * - * Return value: whether a current point is defined. - * - * Since: 1.6 - **/ -cairo_bool_t -cairo_has_current_point (cairo_t *cr) -{ - if (cr->status) - return FALSE; - - return cr->path->has_current_point; -} - -/** - * cairo_get_current_point: - * @cr: a cairo context - * @x: return value for X coordinate of the current point - * @y: return value for Y coordinate of the current point - * - * Gets the current point of the current path, which is - * conceptually the final point reached by the path so far. - * - * The current point is returned in the user-space coordinate - * system. If there is no defined current point or if @cr is in an - * error status, @x and @y will both be set to 0.0. It is possible to - * check this in advance with cairo_has_current_point(). - * - * Most path construction functions alter the current point. See the - * following for details on how they affect the current point: - * cairo_new_path(), cairo_new_sub_path(), - * cairo_append_path(), cairo_close_path(), - * cairo_move_to(), cairo_line_to(), cairo_curve_to(), - * cairo_rel_move_to(), cairo_rel_line_to(), cairo_rel_curve_to(), - * cairo_arc(), cairo_arc_negative(), cairo_rectangle(), - * cairo_text_path(), cairo_glyph_path(), cairo_stroke_to_path() - * - * Some functions use and alter the current point but do not otherwise - * change current path: - * cairo_show_text(), cairo_show_glyphs(). - * - * Some functions unset the current path and as a result, current point: - * cairo_fill(), cairo_stroke(). - **/ -void -cairo_get_current_point (cairo_t *cr, double *x_ret, double *y_ret) -{ - cairo_fixed_t x_fixed, y_fixed; - double x, y; - - if (cr->status == CAIRO_STATUS_SUCCESS && - _cairo_path_fixed_get_current_point (cr->path, &x_fixed, &y_fixed)) - { - x = _cairo_fixed_to_double (x_fixed); - y = _cairo_fixed_to_double (y_fixed); - _cairo_gstate_backend_to_user (cr->gstate, &x, &y); - } - else - { - x = 0.0; - y = 0.0; - } - - if (x_ret) - *x_ret = x; - if (y_ret) - *y_ret = y; -} -slim_hidden_def(cairo_get_current_point); - -/** - * cairo_get_fill_rule: - * @cr: a cairo context - * - * Gets the current fill rule, as set by cairo_set_fill_rule(). - * - * Return value: the current fill rule. - **/ -cairo_fill_rule_t -cairo_get_fill_rule (cairo_t *cr) -{ - if (cr->status) - return (cairo_fill_rule_t) 0; - - return _cairo_gstate_get_fill_rule (cr->gstate); -} - -/** - * cairo_get_line_width: - * @cr: a cairo context - * - * This function returns the current line width value exactly as set by - * cairo_set_line_width(). Note that the value is unchanged even if - * the CTM has changed between the calls to cairo_set_line_width() and - * cairo_get_line_width(). - * - * Return value: the current line width. - **/ -double -cairo_get_line_width (cairo_t *cr) -{ - if (cr->status) - return 0.; - - return _cairo_gstate_get_line_width (cr->gstate); -} - -/** - * cairo_get_line_cap: - * @cr: a cairo context - * - * Gets the current line cap style, as set by cairo_set_line_cap(). - * - * Return value: the current line cap style. - **/ -cairo_line_cap_t -cairo_get_line_cap (cairo_t *cr) -{ - if (cr->status) - return (cairo_line_cap_t) 0; - - return _cairo_gstate_get_line_cap (cr->gstate); -} - -/** - * cairo_get_line_join: - * @cr: a cairo context - * - * Gets the current line join style, as set by cairo_set_line_join(). - * - * Return value: the current line join style. - **/ -cairo_line_join_t -cairo_get_line_join (cairo_t *cr) -{ - if (cr->status) - return (cairo_line_join_t) 0; - - return _cairo_gstate_get_line_join (cr->gstate); -} - -/** - * cairo_get_miter_limit: - * @cr: a cairo context - * - * Gets the current miter limit, as set by cairo_set_miter_limit(). - * - * Return value: the current miter limit. - **/ -double -cairo_get_miter_limit (cairo_t *cr) -{ - if (cr->status) - return 0.; - - return _cairo_gstate_get_miter_limit (cr->gstate); -} - -/** - * cairo_get_matrix: - * @cr: a cairo context - * @matrix: return value for the matrix - * - * Stores the current transformation matrix (CTM) into @matrix. - **/ -void -cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix) -{ - if (cr->status) { - cairo_matrix_init_identity (matrix); - return; - } - - _cairo_gstate_get_matrix (cr->gstate, matrix); -} -slim_hidden_def (cairo_get_matrix); - -/** - * cairo_get_target: - * @cr: a cairo context - * - * Gets the target surface for the cairo context as passed to - * cairo_create(). - * - * This function will always return a valid pointer, but the result - * can be a "nil" surface if @cr is already in an error state, - * (ie. cairo_status() != %CAIRO_STATUS_SUCCESS). - * A nil surface is indicated by cairo_surface_status() - * != %CAIRO_STATUS_SUCCESS. - * - * Return value: the target surface. This object is owned by cairo. To - * keep a reference to it, you must call cairo_surface_reference(). - **/ -cairo_surface_t * -cairo_get_target (cairo_t *cr) -{ - if (cr->status) - return _cairo_surface_create_in_error (cr->status); - - return _cairo_gstate_get_original_target (cr->gstate); -} - -/** - * cairo_get_group_target: - * @cr: a cairo context - * - * Gets the current destination surface for the context. This is either - * the original target surface as passed to cairo_create() or the target - * surface for the current group as started by the most recent call to - * cairo_push_group() or cairo_push_group_with_content(). - * - * This function will always return a valid pointer, but the result - * can be a "nil" surface if @cr is already in an error state, - * (ie. cairo_status() != %CAIRO_STATUS_SUCCESS). - * A nil surface is indicated by cairo_surface_status() - * != %CAIRO_STATUS_SUCCESS. - * - * Return value: the target surface. This object is owned by cairo. To - * keep a reference to it, you must call cairo_surface_reference(). - * - * Since: 1.2 - **/ -cairo_surface_t * -cairo_get_group_target (cairo_t *cr) -{ - if (cr->status) - return _cairo_surface_create_in_error (cr->status); - - return _cairo_gstate_get_target (cr->gstate); -} - -/** - * cairo_copy_path: - * @cr: a cairo context - * - * Creates a copy of the current path and returns it to the user as a - * #cairo_path_t. See #cairo_path_data_t for hints on how to iterate - * over the returned data structure. - * - * This function will always return a valid pointer, but the result - * will have no data (data==%NULL and - * num_data==0), if either of the following - * conditions hold: - * - * - * If there is insufficient memory to copy the path. In this - * case path->status will be set to - * %CAIRO_STATUS_NO_MEMORY. - * If @cr is already in an error state. In this case - * path->status will contain the same status that - * would be returned by cairo_status(). - * - * - * In either case, path->status will be set to - * %CAIRO_STATUS_NO_MEMORY (regardless of what the error status in - * @cr might have been). - * - * Return value: the copy of the current path. The caller owns the - * returned object and should call cairo_path_destroy() when finished - * with it. - **/ -cairo_path_t * -cairo_copy_path (cairo_t *cr) -{ - if (cr->status) - return _cairo_path_create_in_error (cr->status); - - return _cairo_path_create (cr->path, cr->gstate); -} - -/** - * cairo_copy_path_flat: - * @cr: a cairo context - * - * Gets a flattened copy of the current path and returns it to the - * user as a #cairo_path_t. See #cairo_path_data_t for hints on - * how to iterate over the returned data structure. - * - * This function is like cairo_copy_path() except that any curves - * in the path will be approximated with piecewise-linear - * approximations, (accurate to within the current tolerance - * value). That is, the result is guaranteed to not have any elements - * of type %CAIRO_PATH_CURVE_TO which will instead be replaced by a - * series of %CAIRO_PATH_LINE_TO elements. - * - * This function will always return a valid pointer, but the result - * will have no data (data==%NULL and - * num_data==0), if either of the following - * conditions hold: - * - * - * If there is insufficient memory to copy the path. In this - * case path->status will be set to - * %CAIRO_STATUS_NO_MEMORY. - * If @cr is already in an error state. In this case - * path->status will contain the same status that - * would be returned by cairo_status(). - * - * - * Return value: the copy of the current path. The caller owns the - * returned object and should call cairo_path_destroy() when finished - * with it. - **/ -cairo_path_t * -cairo_copy_path_flat (cairo_t *cr) -{ - if (cr->status) - return _cairo_path_create_in_error (cr->status); - - return _cairo_path_create_flat (cr->path, cr->gstate); -} - -/** - * cairo_append_path: - * @cr: a cairo context - * @path: path to be appended - * - * Append the @path onto the current path. The @path may be either the - * return value from one of cairo_copy_path() or - * cairo_copy_path_flat() or it may be constructed manually. See - * #cairo_path_t for details on how the path data structure should be - * initialized, and note that path->status must be - * initialized to %CAIRO_STATUS_SUCCESS. - **/ -void -cairo_append_path (cairo_t *cr, - const cairo_path_t *path) -{ - cairo_status_t status; - - if (cr->status) - return; - - if (path == NULL) { - _cairo_set_error (cr, CAIRO_STATUS_NULL_POINTER); - return; - } - - if (path->status) { - if (path->status > CAIRO_STATUS_SUCCESS && - path->status <= CAIRO_STATUS_LAST_STATUS) - _cairo_set_error (cr, path->status); - else - _cairo_set_error (cr, CAIRO_STATUS_INVALID_STATUS); - return; - } - - if (path->num_data == 0) - return; - - if (path->data == NULL) { - _cairo_set_error (cr, CAIRO_STATUS_NULL_POINTER); - return; - } - - status = _cairo_path_append_to_context (path, cr); - if (status) - _cairo_set_error (cr, status); -} - -/** - * cairo_status: - * @cr: a cairo context - * - * Checks whether an error has previously occurred for this context. - * - * Returns: the current status of this context, see #cairo_status_t - **/ -cairo_status_t -cairo_status (cairo_t *cr) -{ - return cr->status; -} -slim_hidden_def (cairo_status); diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-cache.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-cache.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-cache.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-cache.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,371 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Keith Packard - * Graydon Hoare - * Carl Worth - */ - -#include "cairoint.h" - -static void -_cairo_cache_remove (cairo_cache_t *cache, - cairo_cache_entry_t *entry); - -static void -_cairo_cache_shrink_to_accommodate (cairo_cache_t *cache, - unsigned long additional); - -static cairo_status_t -_cairo_cache_init (cairo_cache_t *cache, - cairo_cache_keys_equal_func_t keys_equal, - cairo_destroy_func_t entry_destroy, - unsigned long max_size) -{ - cache->hash_table = _cairo_hash_table_create (keys_equal); - if (cache->hash_table == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - cache->entry_destroy = entry_destroy; - - cache->max_size = max_size; - cache->size = 0; - - cache->freeze_count = 0; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_cache_fini (cairo_cache_t *cache) -{ - cairo_cache_entry_t *entry; - - /* We have to manually remove all entries from the cache ourselves - * rather than relying on _cairo_hash_table_destroy() to do that - * since otherwise the cache->entry_destroy callback would not get - * called on each entry. */ - - while (1) { - entry = _cairo_hash_table_random_entry (cache->hash_table, NULL); - if (entry == NULL) - break; - _cairo_cache_remove (cache, entry); - } - - _cairo_hash_table_destroy (cache->hash_table); - cache->size = 0; -} - -/** - * _cairo_cache_create: - * @keys_equal: a function to return %TRUE if two keys are equal - * @entry_destroy: destroy notifier for cache entries - * @max_size: the maximum size for this cache - * - * Creates a new cache using the keys_equal() function to determine - * the equality of entries. - * - * Data is provided to the cache in the form of user-derived version - * of #cairo_cache_entry_t. A cache entry must be able to hold hash - * code, a size, and the key/value pair being stored in the - * cache. Sometimes only the key will be necessary, (as in - * _cairo_cache_lookup()), and in these cases the value portion of the - * entry need not be initialized. - * - * The units for max_size can be chosen by the caller, but should be - * consistent with the units of the size field of cache entries. When - * adding an entry with _cairo_cache_insert() if the total size of - * entries in the cache would exceed max_size then entries will be - * removed at random until the new entry would fit or the cache is - * empty. Then the new entry is inserted. - * - * There are cases in which the automatic removal of entries is - * undesired. If the cache entries have reference counts, then it is a - * simple matter to use the reference counts to ensure that entries - * continue to live even after being ejected from the cache. However, - * in some cases the memory overhead of adding a reference count to - * the entry would be objectionable. In such cases, the - * _cairo_cache_freeze() and _cairo_cache_thaw() calls can be - * used to establish a window during which no automatic removal of - * entries will occur. - * - * Return value: - **/ -cairo_cache_t * -_cairo_cache_create (cairo_cache_keys_equal_func_t keys_equal, - cairo_destroy_func_t entry_destroy, - unsigned long max_size) -{ - cairo_status_t status; - cairo_cache_t *cache; - - cache = malloc (sizeof (cairo_cache_t)); - if (cache == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - status = _cairo_cache_init (cache, keys_equal, entry_destroy, max_size); - if (status) { - free (cache); - return NULL; - } - - return cache; -} - -/** - * _cairo_cache_destroy: - * @cache: a cache to destroy - * - * Immediately destroys the given cache, freeing all resources - * associated with it. As part of this process, the entry_destroy() - * function, (as passed to _cairo_cache_create()), will be called for - * each entry in the cache. - **/ -void -_cairo_cache_destroy (cairo_cache_t *cache) -{ - _cairo_cache_fini (cache); - - free (cache); -} - -/** - * _cairo_cache_freeze: - * @cache: a cache with some precious entries in it (or about to be - * added) - * - * Disable the automatic ejection of entries from the cache. For as - * long as the cache is "frozen", calls to _cairo_cache_insert() will - * add new entries to the cache regardless of how large the cache - * grows. See _cairo_cache_thaw(). - * - * Note: Multiple calls to _cairo_cache_freeze() will stack, in that - * the cache will remain "frozen" until a corresponding number of - * calls are made to _cairo_cache_thaw(). - **/ -void -_cairo_cache_freeze (cairo_cache_t *cache) -{ - assert (cache->freeze_count >= 0); - - cache->freeze_count++; -} - -/** - * _cairo_cache_thaw: - * @cache: a cache, just after the entries in it have become less - * precious - * - * Cancels the effects of _cairo_cache_freeze(). - * - * When a number of calls to _cairo_cache_thaw() is made corresponding - * to the number of calls to _cairo_cache_freeze() the cache will no - * longer be "frozen". If the cache had grown larger than max_size - * while frozen, entries will immediately be ejected (by random) from - * the cache until the cache is smaller than max_size. Also, the - * automatic ejection of entries on _cairo_cache_insert() will resume. - **/ -void -_cairo_cache_thaw (cairo_cache_t *cache) -{ - assert (cache->freeze_count > 0); - - cache->freeze_count--; - - if (cache->freeze_count == 0) - _cairo_cache_shrink_to_accommodate (cache, 0); -} - -/** - * _cairo_cache_lookup: - * @cache: a cache - * @key: the key of interest - * @entry_return: pointer for return value - * - * Performs a lookup in @cache looking for an entry which has a key - * that matches @key, (as determined by the keys_equal() function - * passed to _cairo_cache_create()). - * - * Return value: %TRUE if there is an entry in the cache that matches - * @key, (which will now be in *entry_return). %FALSE otherwise, (in - * which case *entry_return will be %NULL). - **/ -cairo_bool_t -_cairo_cache_lookup (cairo_cache_t *cache, - cairo_cache_entry_t *key, - cairo_cache_entry_t **entry_return) -{ - return _cairo_hash_table_lookup (cache->hash_table, - (cairo_hash_entry_t *) key, - (cairo_hash_entry_t **) entry_return); -} - -/** - * _cairo_cache_remove_random: - * @cache: a cache - * - * Remove a random entry from the cache. - * - * Return value: %CAIRO_STATUS_SUCCESS if an entry was successfully - * removed. %CAIRO_INT_STATUS_CACHE_EMPTY if there are no entries that - * can be removed. - **/ -static cairo_int_status_t -_cairo_cache_remove_random (cairo_cache_t *cache) -{ - cairo_cache_entry_t *entry; - - entry = _cairo_hash_table_random_entry (cache->hash_table, NULL); - if (entry == NULL) - return CAIRO_INT_STATUS_CACHE_EMPTY; - - _cairo_cache_remove (cache, entry); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_cache_shrink_to_accommodate: - * @cache: a cache - * @additional: additional size requested in bytes - * - * If cache is not frozen, eject entries randomly until the size of - * the cache is at least @additional bytes less than - * cache->max_size. That is, make enough room to accommodate a new - * entry of size @additional. - **/ -static void -_cairo_cache_shrink_to_accommodate (cairo_cache_t *cache, - unsigned long additional) -{ - cairo_int_status_t status; - - if (cache->freeze_count) - return; - - while (cache->size + additional > cache->max_size) { - status = _cairo_cache_remove_random (cache); - if (status) { - if (status == CAIRO_INT_STATUS_CACHE_EMPTY) - return; - ASSERT_NOT_REACHED; - } - } -} - -/** - * _cairo_cache_insert: - * @cache: a cache - * @entry: an entry to be inserted - * - * Insert @entry into the cache. If an entry exists in the cache with - * a matching key, then the old entry will be removed first, (and the - * entry_destroy() callback will be called on it). - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if insufficient memory is available. - **/ -cairo_status_t -_cairo_cache_insert (cairo_cache_t *cache, - cairo_cache_entry_t *entry) -{ - cairo_status_t status; - - _cairo_cache_shrink_to_accommodate (cache, entry->size); - - status = _cairo_hash_table_insert (cache->hash_table, - (cairo_hash_entry_t *) entry); - if (status) - return status; - - cache->size += entry->size; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_cache_remove: - * @cache: a cache - * @entry: an entry that exists in the cache - * - * Remove an existing entry from the cache. - * - * (Note: If any caller wanted access to a non-static version of this - * function, an improved version would require only a key rather than - * an entry. Fixing that would require fixing _cairo_hash_table_remove - * to return (a copy of?) the entry being removed.) - **/ -static void -_cairo_cache_remove (cairo_cache_t *cache, - cairo_cache_entry_t *entry) -{ - cache->size -= entry->size; - - _cairo_hash_table_remove (cache->hash_table, - (cairo_hash_entry_t *) entry); - - if (cache->entry_destroy) - cache->entry_destroy (entry); -} - -/** - * _cairo_cache_foreach: - * @cache: a cache - * @cache_callback: function to be called for each entry - * @closure: additional argument to be passed to @cache_callback - * - * Call @cache_callback for each entry in the cache, in a - * non-specified order. - **/ -void -_cairo_cache_foreach (cairo_cache_t *cache, - cairo_cache_callback_func_t cache_callback, - void *closure) -{ - _cairo_hash_table_foreach (cache->hash_table, - cache_callback, - closure); -} - -unsigned long -_cairo_hash_string (const char *c) -{ - /* This is the djb2 hash. */ - unsigned long hash = 5381; - while (c && *c) - hash = ((hash << 5) + hash) + *c++; - return hash; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-cache-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-cache-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-cache-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-cache-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Keith Packard - * Graydon Hoare - * Carl Worth - */ - -#ifndef CAIRO_CACHE_PRIVATE_H -#define CAIRO_CACHE_PRIVATE_H - -#include "cairo-compiler-private.h" -#include "cairo-types-private.h" - -/** - * cairo_cache_entry_t: - * - * A #cairo_cache_entry_t contains both a key and a value for - * #cairo_cache_t. User-derived types for #cairo_cache_entry_t must - * have a #cairo_cache_entry_t as their first field. For example: - * - * typedef _my_entry { - * cairo_cache_entry_t base; - * ... Remainder of key and value fields here .. - * } my_entry_t; - * - * which then allows a pointer to my_entry_t to be passed to any of - * the #cairo_cache_t functions as follows without requiring a cast: - * - * _cairo_cache_insert (cache, &my_entry->base, size); - * - * IMPORTANT: The caller is responsible for initializing - * my_entry->base.hash with a hash code derived from the key. The - * essential property of the hash code is that keys_equal must never - * return %TRUE for two keys that have different hashes. The best hash - * code will reduce the frequency of two keys with the same code for - * which keys_equal returns %FALSE. - * - * The user must also initialize my_entry->base.size to indicate - * the size of the current entry. What units to use for size is - * entirely up to the caller, (though the same units must be used for - * the max_size parameter passed to _cairo_cache_create()). If all - * entries are close to the same size, the simplest thing to do is to - * just use units of "entries", (eg. set size==1 in all entries and - * set max_size to the number of entries which you want to be saved - * in the cache). - * - * Which parts of the entry make up the "key" and which part make up - * the value are entirely up to the caller, (as determined by the - * computation going into base.hash as well as the keys_equal - * function). A few of the #cairo_cache_t functions accept an entry which - * will be used exclusively as a "key", (indicated by a parameter name - * of key). In these cases, the value-related fields of the entry need - * not be initialized if so desired. - **/ -typedef struct _cairo_cache_entry { - unsigned long hash; - unsigned long size; -} cairo_cache_entry_t; - -typedef cairo_bool_t -(*cairo_cache_keys_equal_func_t) (const void *key_a, const void *key_b); - -typedef void -(*cairo_cache_callback_func_t) (void *entry, - void *closure); - -cairo_private cairo_cache_t * -_cairo_cache_create (cairo_cache_keys_equal_func_t keys_equal, - cairo_destroy_func_t entry_destroy, - unsigned long max_size); - -cairo_private void -_cairo_cache_destroy (cairo_cache_t *cache); - -cairo_private void -_cairo_cache_freeze (cairo_cache_t *cache); - -cairo_private void -_cairo_cache_thaw (cairo_cache_t *cache); - -cairo_private cairo_bool_t -_cairo_cache_lookup (cairo_cache_t *cache, - cairo_cache_entry_t *key, - cairo_cache_entry_t **entry_return); - -cairo_private cairo_status_t -_cairo_cache_insert (cairo_cache_t *cache, - cairo_cache_entry_t *entry); - -cairo_private void -_cairo_cache_foreach (cairo_cache_t *cache, - cairo_cache_callback_func_t cache_callback, - void *closure); - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-cff-subset.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-cff-subset.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-cff-subset.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-cff-subset.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2284 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Adrian Johnson. - * - * Contributor(s): - * Adrian Johnson - * Eugeniy Meshcheryakov - */ - -/* - * Useful links: - * http://www.adobe.com/devnet/font/pdfs/5176.CFF.pdf - */ - -#define _BSD_SOURCE /* for snprintf(), strdup() */ -#include "cairoint.h" -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-truetype-subset-private.h" -#include - -/* CFF Dict Operators. If the high byte is 0 the command is encoded - * with a single byte. */ -#define BASEFONTNAME_OP 0x0c16 -#define CIDCOUNT_OP 0x0c22 -#define CHARSET_OP 0x000f -#define CHARSTRINGS_OP 0x0011 -#define COPYRIGHT_OP 0x0c00 -#define ENCODING_OP 0x0010 -#define FAMILYNAME_OP 0x0003 -#define FDARRAY_OP 0x0c24 -#define FDSELECT_OP 0x0c25 -#define FONTBBOX_OP 0x0005 -#define FONTNAME_OP 0x0c26 -#define FULLNAME_OP 0x0002 -#define LOCAL_SUB_OP 0x0013 -#define NOTICE_OP 0x0001 -#define POSTSCRIPT_OP 0x0c15 -#define PRIVATE_OP 0x0012 -#define ROS_OP 0x0c1e -#define UNIQUEID_OP 0x000d -#define VERSION_OP 0x0000 -#define WEIGHT_OP 0x0004 -#define XUID_OP 0x000e - -#define NUM_STD_STRINGS 391 - -typedef struct _cff_header { - uint8_t major; - uint8_t minor; - uint8_t header_size; - uint8_t offset_size; -} cff_header_t; - -typedef struct _cff_index_element { - cairo_bool_t is_copy; - unsigned char *data; - int length; -} cff_index_element_t; - -typedef struct _cff_dict_operator { - cairo_hash_entry_t base; - - unsigned short operator; - unsigned char *operand; - int operand_length; - int operand_offset; -} cff_dict_operator_t; - -typedef struct _cairo_cff_font { - - cairo_scaled_font_subset_t *scaled_font_subset; - const cairo_scaled_font_backend_t *backend; - - /* Font Data */ - unsigned char *data; - unsigned long data_length; - unsigned char *current_ptr; - unsigned char *data_end; - cff_header_t *header; - char *font_name; - cairo_hash_table_t *top_dict; - cairo_hash_table_t *private_dict; - cairo_array_t strings_index; - cairo_array_t charstrings_index; - cairo_array_t global_sub_index; - cairo_array_t local_sub_index; - int num_glyphs; - cairo_bool_t is_cid; - - /* CID Font Data */ - int *fdselect; - unsigned int num_fontdicts; - cairo_hash_table_t **fd_dict; - cairo_hash_table_t **fd_private_dict; - cairo_array_t *fd_local_sub_index; - - /* Subsetted Font Data */ - char *subset_font_name; - cairo_array_t charstrings_subset_index; - cairo_array_t strings_subset_index; - int *fdselect_subset; - unsigned int num_subset_fontdicts; - int *fd_subset_map; - int *private_dict_offset; - cairo_array_t output; - - /* Subset Metrics */ - int *widths; - int x_min, y_min, x_max, y_max; - int ascent, descent; - -} cairo_cff_font_t; - -/* Encoded integer using maximum sized encoding. This is required for - * operands that are later modified after encoding. */ -static unsigned char * -encode_integer_max (unsigned char *p, int i) -{ - *p++ = 29; - *p++ = i >> 24; - *p++ = (i >> 16) & 0xff; - *p++ = (i >> 8) & 0xff; - *p++ = i & 0xff; - return p; -} - -static unsigned char * -encode_integer (unsigned char *p, int i) -{ - if (i >= -107 && i <= 107) { - *p++ = i + 139; - } else if (i >= 108 && i <= 1131) { - i -= 108; - *p++ = (i >> 8)+ 247; - *p++ = i & 0xff; - } else if (i >= -1131 && i <= -108) { - i = -i - 108; - *p++ = (i >> 8)+ 251; - *p++ = i & 0xff; - } else if (i >= -32768 && i <= 32767) { - *p++ = 28; - *p++ = (i >> 8) & 0xff; - *p++ = i & 0xff; - } else { - p = encode_integer_max (p, i); - } - return p; -} - -static unsigned char * -decode_integer (unsigned char *p, int *integer) -{ - if (*p == 28) { - *integer = (int)(p[1]<<8 | p[2]); - p += 3; - } else if (*p == 29) { - *integer = (int)((p[1] << 24) | (p[2] << 16) | (p[3] << 8) | p[4]); - p += 5; - } else if (*p >= 32 && *p <= 246) { - *integer = *p++ - 139; - } else if (*p <= 250) { - *integer = (p[0] - 247) * 256 + p[1] + 108; - p += 2; - } else if (*p <= 254) { - *integer = -(p[0] - 251) * 256 - p[1] - 108; - p += 2; - } else { - *integer = 0; - p += 1; - } - return p; -} - -static unsigned char * -decode_operator (unsigned char *p, unsigned short *operator) -{ - unsigned short op = 0; - - op = *p++; - if (op == 12) { - op <<= 8; - op |= *p++; - } - *operator = op; - return p; -} - -/* return 0 if not an operand */ -static int -operand_length (unsigned char *p) -{ - unsigned char *begin = p; - - if (*p == 28) - return 3; - - if (*p == 29) - return 5; - - if (*p >= 32 && *p <= 246) - return 1; - - if (*p >= 247 && *p <= 254) - return 2; - - if (*p == 30) { - while ((*p & 0x0f) != 0x0f) - p++; - return p - begin + 1; - } - - return 0; -} - -static unsigned char * -encode_index_offset (unsigned char *p, int offset_size, unsigned long offset) -{ - while (--offset_size >= 0) { - p[offset_size] = (unsigned char) (offset & 0xff); - offset >>= 8; - } - return p + offset_size; -} - -static unsigned long -decode_index_offset(unsigned char *p, int off_size) -{ - unsigned long offset = 0; - - while (off_size-- > 0) - offset = offset*256 + *p++; - return offset; -} - -static void -cff_index_init (cairo_array_t *index) -{ - _cairo_array_init (index, sizeof (cff_index_element_t)); -} - -static cairo_int_status_t -cff_index_read (cairo_array_t *index, unsigned char **ptr, unsigned char *end_ptr) -{ - cff_index_element_t element; - unsigned char *data, *p; - cairo_status_t status; - int offset_size, count, start, i; - int end = 0; - - p = *ptr; - if (p + 2 > end_ptr) - return CAIRO_INT_STATUS_UNSUPPORTED; - count = be16_to_cpu( *((uint16_t *)p) ); - p += 2; - if (count > 0) { - offset_size = *p++; - if (p + (count + 1)*offset_size > end_ptr) - return CAIRO_INT_STATUS_UNSUPPORTED; - data = p + offset_size*(count + 1) - 1; - start = decode_index_offset (p, offset_size); - p += offset_size; - for (i = 0; i < count; i++) { - end = decode_index_offset (p, offset_size); - p += offset_size; - if (p > end_ptr) - return CAIRO_INT_STATUS_UNSUPPORTED; - element.length = end - start; - element.is_copy = FALSE; - element.data = data + start; - status = _cairo_array_append (index, &element); - if (status) - return status; - start = end; - } - p = data + end; - } - *ptr = p; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cff_index_write (cairo_array_t *index, cairo_array_t *output) -{ - int offset_size; - int offset; - int num_elem; - int i; - cff_index_element_t *element; - uint16_t count; - unsigned char buf[5]; - cairo_status_t status; - - num_elem = _cairo_array_num_elements (index); - count = cpu_to_be16 ((uint16_t) num_elem); - status = _cairo_array_append_multiple (output, &count, 2); - if (status) - return status; - - if (num_elem == 0) - return CAIRO_STATUS_SUCCESS; - - /* Find maximum offset to determine offset size */ - offset = 1; - for (i = 0; i < num_elem; i++) { - element = _cairo_array_index (index, i); - offset += element->length; - } - if (offset < 0x100) - offset_size = 1; - else if (offset < 0x10000) - offset_size = 2; - else if (offset < 0x1000000) - offset_size = 3; - else - offset_size = 4; - - buf[0] = (unsigned char) offset_size; - status = _cairo_array_append (output, buf); - if (status) - return status; - - offset = 1; - encode_index_offset (buf, offset_size, offset); - status = _cairo_array_append_multiple (output, buf, offset_size); - if (status) - return status; - - for (i = 0; i < num_elem; i++) { - element = _cairo_array_index (index, i); - offset += element->length; - encode_index_offset (buf, offset_size, offset); - status = _cairo_array_append_multiple (output, buf, offset_size); - if (status) - return status; - } - - for (i = 0; i < num_elem; i++) { - element = _cairo_array_index (index, i); - status = _cairo_array_append_multiple (output, - element->data, - element->length); - if (status) - return status; - } - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cff_index_append (cairo_array_t *index, unsigned char *object , int length) -{ - cff_index_element_t element; - - element.length = length; - element.is_copy = FALSE; - element.data = object; - - return _cairo_array_append (index, &element); -} - -static cairo_status_t -cff_index_append_copy (cairo_array_t *index, - const unsigned char *object, - unsigned int length) -{ - cff_index_element_t element; - cairo_status_t status; - - element.length = length; - element.is_copy = TRUE; - element.data = malloc (element.length); - if (element.data == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (element.data, object, element.length); - - status = _cairo_array_append (index, &element); - if (status) { - free (element.data); - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static void -cff_index_fini (cairo_array_t *index) -{ - cff_index_element_t *element; - int i; - - for (i = 0; i < _cairo_array_num_elements (index); i++) { - element = _cairo_array_index (index, i); - if (element->is_copy) - free (element->data); - } - _cairo_array_fini (index); -} - -static cairo_bool_t -_cairo_cff_dict_equal (const void *key_a, const void *key_b) -{ - const cff_dict_operator_t *op_a = key_a; - const cff_dict_operator_t *op_b = key_b; - - return op_a->operator == op_b->operator; -} - -static cairo_status_t -cff_dict_init (cairo_hash_table_t **dict) -{ - *dict = _cairo_hash_table_create (_cairo_cff_dict_equal); - if (*dict == NULL) - return CAIRO_STATUS_NO_MEMORY; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_dict_init_key (cff_dict_operator_t *key, int operator) -{ - key->base.hash = (unsigned long) operator; - key->operator = operator; -} - -static cairo_status_t -cff_dict_create_operator (int operator, - unsigned char *operand, - int operand_length, - cff_dict_operator_t **out) -{ - cff_dict_operator_t *op; - - op = malloc (sizeof (cff_dict_operator_t)); - if (op == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_dict_init_key (op, operator); - op->operand = malloc (operand_length); - if (op->operand == NULL) { - free (op); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - memcpy (op->operand, operand, operand_length); - op->operand_length = operand_length; - op->operand_offset = -1; - - *out = op; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cff_dict_read (cairo_hash_table_t *dict, unsigned char *p, int dict_size) -{ - unsigned char *end; - cairo_array_t operands; - cff_dict_operator_t *op; - unsigned short operator; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - int size; - - end = p + dict_size; - _cairo_array_init (&operands, 1); - while (p < end) { - size = operand_length (p); - if (size != 0) { - status = _cairo_array_append_multiple (&operands, p, size); - if (status) - goto fail; - - p += size; - } else { - p = decode_operator (p, &operator); - status = cff_dict_create_operator (operator, - _cairo_array_index (&operands, 0), - _cairo_array_num_elements (&operands), - &op); - if (status) - goto fail; - - status = _cairo_hash_table_insert (dict, &op->base); - if (status) - goto fail; - - _cairo_array_truncate (&operands, 0); - } - } - -fail: - _cairo_array_fini (&operands); - - return status; -} - -static void -cff_dict_remove (cairo_hash_table_t *dict, unsigned short operator) -{ - cff_dict_operator_t key, *op; - - _cairo_dict_init_key (&key, operator); - if (_cairo_hash_table_lookup (dict, &key.base, - (cairo_hash_entry_t **) &op)) - { - free (op->operand); - _cairo_hash_table_remove (dict, (cairo_hash_entry_t *) op); - free (op); - } -} - -static unsigned char * -cff_dict_get_operands (cairo_hash_table_t *dict, - unsigned short operator, - int *size) -{ - cff_dict_operator_t key, *op; - - _cairo_dict_init_key (&key, operator); - if (_cairo_hash_table_lookup (dict, &key.base, - (cairo_hash_entry_t **) &op)) - { - *size = op->operand_length; - return op->operand; - } - - return NULL; -} - -static cairo_status_t -cff_dict_set_operands (cairo_hash_table_t *dict, - unsigned short operator, - unsigned char *operand, - int size) -{ - cff_dict_operator_t key, *op; - cairo_status_t status; - - _cairo_dict_init_key (&key, operator); - if (_cairo_hash_table_lookup (dict, &key.base, - (cairo_hash_entry_t **) &op)) - { - free (op->operand); - op->operand = malloc (size); - if (op->operand == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (op->operand, operand, size); - op->operand_length = size; - } - else - { - status = cff_dict_create_operator (operator, operand, size, &op); - if (status) - return status; - - status = _cairo_hash_table_insert (dict, &op->base); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static int -cff_dict_get_location (cairo_hash_table_t *dict, - unsigned short operator, - int *size) -{ - cff_dict_operator_t key, *op; - - _cairo_dict_init_key (&key, operator); - if (_cairo_hash_table_lookup (dict, &key.base, - (cairo_hash_entry_t **) &op)) - { - *size = op->operand_length; - return op->operand_offset; - } - - return -1; -} - -typedef struct _dict_write_info { - cairo_array_t *output; - cairo_status_t status; -} dict_write_info_t; - -static void -cairo_dict_write_operator (cff_dict_operator_t *op, dict_write_info_t *write_info) -{ - unsigned char data; - - op->operand_offset = _cairo_array_num_elements (write_info->output); - write_info->status = _cairo_array_append_multiple (write_info->output, op->operand, op->operand_length); - if (write_info->status) - return; - - if (op->operator & 0xff00) { - data = op->operator >> 8; - write_info->status = _cairo_array_append (write_info->output, &data); - if (write_info->status) - return; - } - data = op->operator & 0xff; - write_info->status = _cairo_array_append (write_info->output, &data); -} - -static void -_cairo_dict_collect (void *entry, void *closure) -{ - dict_write_info_t *write_info = closure; - cff_dict_operator_t *op = entry; - - if (write_info->status) - return; - - /* The ROS operator is handled separately in cff_dict_write() */ - if (op->operator != ROS_OP) - cairo_dict_write_operator (op, write_info); -} - -static cairo_status_t -cff_dict_write (cairo_hash_table_t *dict, cairo_array_t *output) -{ - dict_write_info_t write_info; - cff_dict_operator_t key, *op; - - write_info.output = output; - write_info.status = CAIRO_STATUS_SUCCESS; - - /* The CFF specification requires that the Top Dict of CID fonts - * begin with the ROS operator. */ - _cairo_dict_init_key (&key, ROS_OP); - if (_cairo_hash_table_lookup (dict, &key.base, - (cairo_hash_entry_t **) &op)) - cairo_dict_write_operator (op, &write_info); - - _cairo_hash_table_foreach (dict, _cairo_dict_collect, &write_info); - - return write_info.status; -} - -static void -cff_dict_fini (cairo_hash_table_t *dict) -{ - cff_dict_operator_t *entry; - - while (1) { - entry = _cairo_hash_table_random_entry (dict, NULL); - if (entry == NULL) - break; - free (entry->operand); - _cairo_hash_table_remove (dict, (cairo_hash_entry_t *) entry); - free (entry); - } - _cairo_hash_table_destroy (dict); -} - -static cairo_int_status_t -cairo_cff_font_read_header (cairo_cff_font_t *font) -{ - if (font->data_length < sizeof (cff_header_t)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - font->header = (cff_header_t *) font->data; - font->current_ptr = font->data + font->header->header_size; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_cff_font_read_name (cairo_cff_font_t *font) -{ - cairo_array_t index; - cairo_int_status_t status; - - /* The original font name is not used in the subset. Read the name - * index to skip over it. */ - cff_index_init (&index); - status = cff_index_read (&index, &font->current_ptr, font->data_end); - cff_index_fini (&index); - - return status; -} - -static cairo_int_status_t -cairo_cff_font_read_private_dict (cairo_cff_font_t *font, - cairo_hash_table_t *private_dict, - cairo_array_t *local_sub_index, - unsigned char *ptr, - int size) -{ - cairo_int_status_t status; - unsigned char buf[10]; - unsigned char *end_buf; - int offset; - int i; - unsigned char *operand; - unsigned char *p; - - status = cff_dict_read (private_dict, ptr, size); - if (status) - return status; - - operand = cff_dict_get_operands (private_dict, LOCAL_SUB_OP, &i); - if (operand) { - decode_integer (operand, &offset); - p = ptr + offset; - status = cff_index_read (local_sub_index, &p, font->data_end); - if (status) - return status; - - /* Use maximum sized encoding to reserve space for later modification. */ - end_buf = encode_integer_max (buf, 0); - status = cff_dict_set_operands (private_dict, LOCAL_SUB_OP, buf, end_buf - buf); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_cff_font_read_fdselect (cairo_cff_font_t *font, unsigned char *p) -{ - int type, num_ranges, first, last, fd, i, j; - - font->fdselect = calloc (font->num_glyphs, sizeof (int)); - if (font->fdselect == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - type = *p++; - if (type == 0) - { - for (i = 0; i < font->num_glyphs; i++) - font->fdselect[i] = *p++; - } else if (type == 3) { - num_ranges = be16_to_cpu( *((uint16_t *)p) ); - p += 2; - for (i = 0; i < num_ranges; i++) - { - first = be16_to_cpu( *((uint16_t *)p) ); - p += 2; - fd = *p++; - last = be16_to_cpu( *((uint16_t *)p) ); - for (j = first; j < last; j++) - font->fdselect[j] = fd; - } - } else { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_cff_font_read_cid_fontdict (cairo_cff_font_t *font, unsigned char *ptr) -{ - cairo_array_t index; - cff_index_element_t *element; - unsigned int i; - int size; - unsigned char *operand; - int offset; - cairo_int_status_t status; - unsigned char buf[100]; - unsigned char *end_buf; - - cff_index_init (&index); - status = cff_index_read (&index, &ptr, font->data_end); - if (status) - goto fail; - - font->num_fontdicts = _cairo_array_num_elements (&index); - - font->fd_dict = calloc (sizeof (cairo_hash_table_t *), font->num_fontdicts); - if (font->fd_dict == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail; - } - - font->fd_private_dict = calloc (sizeof (cairo_hash_table_t *), font->num_fontdicts); - if (font->fd_private_dict == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail; - } - - font->fd_local_sub_index = calloc (sizeof (cairo_array_t), font->num_fontdicts); - if (font->fd_local_sub_index == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail; - } - - for (i = 0; i < font->num_fontdicts; i++) { - status = cff_dict_init (&font->fd_dict[i]); - if (status) - goto fail; - - element = _cairo_array_index (&index, i); - status = cff_dict_read (font->fd_dict[i], element->data, element->length); - if (status) - goto fail; - - operand = cff_dict_get_operands (font->fd_dict[i], PRIVATE_OP, &size); - if (operand == NULL) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto fail; - } - operand = decode_integer (operand, &size); - decode_integer (operand, &offset); - status = cff_dict_init (&font->fd_private_dict[i]); - if (status) - goto fail; - - cff_index_init (&font->fd_local_sub_index[i]); - status = cairo_cff_font_read_private_dict (font, - font->fd_private_dict[i], - &font->fd_local_sub_index[i], - font->data + offset, - size); - if (status) - goto fail; - - /* Set integer operand to max value to use max size encoding to reserve - * space for any value later */ - end_buf = encode_integer_max (buf, 0); - end_buf = encode_integer_max (end_buf, 0); - status = cff_dict_set_operands (font->fd_dict[i], PRIVATE_OP, buf, end_buf - buf); - if (status) - goto fail; - } - - return CAIRO_STATUS_SUCCESS; - -fail: - cff_index_fini (&index); - - return status; -} - -static cairo_int_status_t -cairo_cff_font_read_top_dict (cairo_cff_font_t *font) -{ - cairo_array_t index; - cff_index_element_t *element; - unsigned char buf[20]; - unsigned char *end_buf; - unsigned char *operand; - cairo_int_status_t status; - unsigned char *p; - int size; - int offset; - - cff_index_init (&index); - status = cff_index_read (&index, &font->current_ptr, font->data_end); - if (status) - goto fail; - - element = _cairo_array_index (&index, 0); - status = cff_dict_read (font->top_dict, element->data, element->length); - if (status) - goto fail; - - if (cff_dict_get_operands (font->top_dict, ROS_OP, &size) != NULL) - font->is_cid = TRUE; - else - font->is_cid = FALSE; - - operand = cff_dict_get_operands (font->top_dict, CHARSTRINGS_OP, &size); - decode_integer (operand, &offset); - p = font->data + offset; - status = cff_index_read (&font->charstrings_index, &p, font->data_end); - if (status) - goto fail; - font->num_glyphs = _cairo_array_num_elements (&font->charstrings_index); - - if (font->is_cid) { - operand = cff_dict_get_operands (font->top_dict, FDSELECT_OP, &size); - decode_integer (operand, &offset); - status = cairo_cff_font_read_fdselect (font, font->data + offset); - if (status) - goto fail; - - operand = cff_dict_get_operands (font->top_dict, FDARRAY_OP, &size); - decode_integer (operand, &offset); - status = cairo_cff_font_read_cid_fontdict (font, font->data + offset); - if (status) - goto fail; - } else { - operand = cff_dict_get_operands (font->top_dict, PRIVATE_OP, &size); - operand = decode_integer (operand, &size); - decode_integer (operand, &offset); - status = cairo_cff_font_read_private_dict (font, - font->private_dict, - &font->local_sub_index, - font->data + offset, - size); - if (status) - goto fail; - } - - /* Use maximum sized encoding to reserve space for later modification. */ - end_buf = encode_integer_max (buf, 0); - status = cff_dict_set_operands (font->top_dict, - CHARSTRINGS_OP, buf, end_buf - buf); - if (status) - goto fail; - - status = cff_dict_set_operands (font->top_dict, - FDSELECT_OP, buf, end_buf - buf); - if (status) - goto fail; - - status = cff_dict_set_operands (font->top_dict, - FDARRAY_OP, buf, end_buf - buf); - if (status) - goto fail; - - status = cff_dict_set_operands (font->top_dict, - CHARSET_OP, buf, end_buf - buf); - if (status) - goto fail; - - cff_dict_remove (font->top_dict, ENCODING_OP); - cff_dict_remove (font->top_dict, PRIVATE_OP); - - /* Remove the unique identifier operators as the subsetted font is - * not the same is the original font. */ - cff_dict_remove (font->top_dict, UNIQUEID_OP); - cff_dict_remove (font->top_dict, XUID_OP); - -fail: - cff_index_fini (&index); - - return status; -} - -static cairo_int_status_t -cairo_cff_font_read_strings (cairo_cff_font_t *font) -{ - return cff_index_read (&font->strings_index, &font->current_ptr, font->data_end); -} - -static cairo_int_status_t -cairo_cff_font_read_global_subroutines (cairo_cff_font_t *font) -{ - return cff_index_read (&font->global_sub_index, &font->current_ptr, font->data_end); -} - -typedef cairo_int_status_t -(*font_read_t) (cairo_cff_font_t *font); - -static const font_read_t font_read_funcs[] = { - cairo_cff_font_read_header, - cairo_cff_font_read_name, - cairo_cff_font_read_top_dict, - cairo_cff_font_read_strings, - cairo_cff_font_read_global_subroutines, -}; - -static cairo_int_status_t -cairo_cff_font_read_font (cairo_cff_font_t *font) -{ - cairo_int_status_t status; - unsigned int i; - - for (i = 0; i < ARRAY_LENGTH (font_read_funcs); i++) { - status = font_read_funcs[i] (font); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_set_ros_strings (cairo_cff_font_t *font) -{ - cairo_status_t status; - unsigned char buf[30]; - unsigned char *p; - int sid1, sid2; - const char *registry = "Adobe"; - const char *ordering = "Identity"; - - sid1 = NUM_STD_STRINGS + _cairo_array_num_elements (&font->strings_subset_index); - status = cff_index_append_copy (&font->strings_subset_index, - (unsigned char *)registry, - strlen(registry)); - if (status) - return status; - - sid2 = NUM_STD_STRINGS + _cairo_array_num_elements (&font->strings_subset_index); - status = cff_index_append_copy (&font->strings_subset_index, - (unsigned char *)ordering, - strlen(ordering)); - if (status) - return status; - - p = encode_integer (buf, sid1); - p = encode_integer (p, sid2); - p = encode_integer (p, 0); - status = cff_dict_set_operands (font->top_dict, ROS_OP, buf, p - buf); - if (status) - return status; - - p = encode_integer (buf, font->scaled_font_subset->num_glyphs); - status = cff_dict_set_operands (font->top_dict, CIDCOUNT_OP, buf, p - buf); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_subset_dict_string(cairo_cff_font_t *font, - cairo_hash_table_t *dict, - int operator) -{ - int size; - unsigned char *p; - int sid; - unsigned char buf[100]; - cff_index_element_t *element; - cairo_status_t status; - - p = cff_dict_get_operands (dict, operator, &size); - if (!p) - return CAIRO_STATUS_SUCCESS; - - decode_integer (p, &sid); - if (sid < NUM_STD_STRINGS) - return CAIRO_STATUS_SUCCESS; - - element = _cairo_array_index (&font->strings_index, sid - NUM_STD_STRINGS); - sid = NUM_STD_STRINGS + _cairo_array_num_elements (&font->strings_subset_index); - status = cff_index_append (&font->strings_subset_index, element->data, element->length); - if (status) - return status; - - p = encode_integer (buf, sid); - status = cff_dict_set_operands (dict, operator, buf, p - buf); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static const int dict_strings[] = { - VERSION_OP, - NOTICE_OP, - COPYRIGHT_OP, - FULLNAME_OP, - FAMILYNAME_OP, - WEIGHT_OP, - POSTSCRIPT_OP, - BASEFONTNAME_OP, - FONTNAME_OP, -}; - -static cairo_status_t -cairo_cff_font_subset_dict_strings (cairo_cff_font_t *font, - cairo_hash_table_t *dict) -{ - cairo_status_t status; - unsigned int i; - - for (i = 0; i < ARRAY_LENGTH (dict_strings); i++) { - status = cairo_cff_font_subset_dict_string (font, dict, dict_strings[i]); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_subset_charstrings (cairo_cff_font_t *font) -{ - cff_index_element_t *element; - unsigned int i; - cairo_status_t status; - - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - element = _cairo_array_index (&font->charstrings_index, - font->scaled_font_subset->glyphs[i]); - status = cff_index_append (&font->charstrings_subset_index, - element->data, - element->length); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_subset_fontdict (cairo_cff_font_t *font) -{ - unsigned int i; - int fd; - int *reverse_map; - - font->fdselect_subset = calloc (font->scaled_font_subset->num_glyphs, - sizeof (int)); - if (font->fdselect_subset == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->fd_subset_map = calloc (font->num_fontdicts, sizeof (int)); - if (font->fd_subset_map == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->private_dict_offset = calloc (font->num_fontdicts, sizeof (int)); - if (font->private_dict_offset == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - reverse_map = calloc (font->num_fontdicts, sizeof (int)); - if (reverse_map == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (i = 0; i < font->num_fontdicts; i++) - reverse_map[i] = -1; - - font->num_subset_fontdicts = 0; - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - fd = font->fdselect[font->scaled_font_subset->glyphs[i]]; - if (reverse_map[fd] < 0) { - font->fd_subset_map[font->num_subset_fontdicts] = fd; - reverse_map[fd] = font->num_subset_fontdicts++; - } - font->fdselect_subset[i] = reverse_map[fd]; - } - - free (reverse_map); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_create_cid_fontdict (cairo_cff_font_t *font) -{ - unsigned char buf[100]; - unsigned char *end_buf; - cairo_status_t status; - - font->num_fontdicts = 1; - font->fd_dict = malloc (sizeof (cairo_hash_table_t *)); - if (font->fd_dict == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (cff_dict_init (&font->fd_dict[0])) { - free (font->fd_dict); - font->fd_dict = NULL; - font->num_fontdicts = 0; - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - font->fd_subset_map = malloc (sizeof (int)); - if (font->fd_subset_map == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->private_dict_offset = malloc (sizeof (int)); - if (font->private_dict_offset == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->fd_subset_map[0] = 0; - font->num_subset_fontdicts = 1; - - /* Set integer operand to max value to use max size encoding to reserve - * space for any value later */ - end_buf = encode_integer_max (buf, 0); - end_buf = encode_integer_max (end_buf, 0); - status = cff_dict_set_operands (font->fd_dict[0], PRIVATE_OP, buf, end_buf - buf); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_subset_strings (cairo_cff_font_t *font) -{ - cairo_status_t status; - unsigned int i; - - status = cairo_cff_font_subset_dict_strings (font, font->top_dict); - if (status) - return status; - - if (font->is_cid) { - for (i = 0; i < font->num_subset_fontdicts; i++) { - status = cairo_cff_font_subset_dict_strings (font, font->fd_dict[font->fd_subset_map[i]]); - if (status) - return status; - - status = cairo_cff_font_subset_dict_strings (font, font->fd_private_dict[font->fd_subset_map[i]]); - if (status) - return status; - } - } else { - status = cairo_cff_font_subset_dict_strings (font, font->private_dict); - } - - return status; -} - -static cairo_status_t -cairo_cff_font_subset_font (cairo_cff_font_t *font) -{ - cairo_status_t status; - - status = cairo_cff_font_set_ros_strings (font); - if (status) - return status; - - status = cairo_cff_font_subset_charstrings (font); - if (status) - return status; - - if (font->is_cid) - status = cairo_cff_font_subset_fontdict (font); - else - status = cairo_cff_font_create_cid_fontdict (font); - if (status) - return status; - - status = cairo_cff_font_subset_strings (font); - if (status) - return status; - - return status; -} - -/* Set the operand of the specified operator in the (already written) - * top dict to point to the current position in the output - * array. Operands updated with this function must have previously - * been encoded with the 5-byte (max) integer encoding. */ -static void -cairo_cff_font_set_topdict_operator_to_cur_pos (cairo_cff_font_t *font, - int operator) -{ - int cur_pos; - int offset; - int size; - unsigned char buf[10]; - unsigned char *buf_end; - unsigned char *op_ptr; - - cur_pos = _cairo_array_num_elements (&font->output); - buf_end = encode_integer_max (buf, cur_pos); - offset = cff_dict_get_location (font->top_dict, operator, &size); - assert (offset > 0); - op_ptr = _cairo_array_index (&font->output, offset); - memcpy (op_ptr, buf, buf_end - buf); -} - -static cairo_status_t -cairo_cff_font_write_header (cairo_cff_font_t *font) -{ - return _cairo_array_append_multiple (&font->output, - font->header, - font->header->header_size); -} - -static cairo_status_t -cairo_cff_font_write_name (cairo_cff_font_t *font) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_array_t index; - - cff_index_init (&index); - - status = cff_index_append_copy (&index, - (unsigned char *) font->subset_font_name, - strlen(font->subset_font_name)); - if (status) - goto FAIL; - - status = cff_index_write (&index, &font->output); - if (status) - goto FAIL; - -FAIL: - cff_index_fini (&index); - - return status; -} - -static cairo_status_t -cairo_cff_font_write_top_dict (cairo_cff_font_t *font) -{ - uint16_t count; - unsigned char buf[10]; - unsigned char *p; - int offset_index; - int dict_start, dict_size; - int offset_size = 4; - cairo_status_t status; - - /* Write an index containing the top dict */ - - count = cpu_to_be16 (1); - status = _cairo_array_append_multiple (&font->output, &count, 2); - if (status) - return status; - buf[0] = offset_size; - status = _cairo_array_append (&font->output, buf); - if (status) - return status; - encode_index_offset (buf, offset_size, 1); - status = _cairo_array_append_multiple (&font->output, buf, offset_size); - if (status) - return status; - - /* Reserve space for last element of offset array and update after - * dict is written */ - offset_index = _cairo_array_num_elements (&font->output); - status = _cairo_array_append_multiple (&font->output, buf, offset_size); - if (status) - return status; - - dict_start = _cairo_array_num_elements (&font->output); - status = cff_dict_write (font->top_dict, &font->output); - if (status) - return status; - dict_size = _cairo_array_num_elements (&font->output) - dict_start; - - encode_index_offset (buf, offset_size, dict_size + 1); - p = _cairo_array_index (&font->output, offset_index); - memcpy (p, buf, offset_size); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_write_strings (cairo_cff_font_t *font) -{ - return cff_index_write (&font->strings_subset_index, &font->output); -} - -static cairo_status_t -cairo_cff_font_write_global_subrs (cairo_cff_font_t *font) -{ - return cff_index_write (&font->global_sub_index, &font->output); -} - -static cairo_status_t -cairo_cff_font_write_fdselect (cairo_cff_font_t *font) -{ - unsigned char data; - unsigned int i; - cairo_int_status_t status; - - cairo_cff_font_set_topdict_operator_to_cur_pos (font, FDSELECT_OP); - - if (font->is_cid) { - data = 0; - status = _cairo_array_append (&font->output, &data); - if (status) - return status; - - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - data = font->fdselect_subset[i]; - status = _cairo_array_append (&font->output, &data); - if (status) - return status; - } - } else { - unsigned char byte; - uint16_t word; - - status = _cairo_array_grow_by (&font->output, 9); - if (status) - return status; - - byte = 3; - status = _cairo_array_append (&font->output, &byte); - assert (status == CAIRO_STATUS_SUCCESS); - - word = cpu_to_be16 (1); - status = _cairo_array_append_multiple (&font->output, &word, 2); - assert (status == CAIRO_STATUS_SUCCESS); - - word = cpu_to_be16 (0); - status = _cairo_array_append_multiple (&font->output, &word, 2); - assert (status == CAIRO_STATUS_SUCCESS); - - byte = 0; - status = _cairo_array_append (&font->output, &byte); - assert (status == CAIRO_STATUS_SUCCESS); - - word = cpu_to_be16 (font->scaled_font_subset->num_glyphs); - status = _cairo_array_append_multiple (&font->output, &word, 2); - assert (status == CAIRO_STATUS_SUCCESS); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_write_charset (cairo_cff_font_t *font) -{ - unsigned char byte; - uint16_t word; - cairo_status_t status; - - cairo_cff_font_set_topdict_operator_to_cur_pos (font, CHARSET_OP); - status = _cairo_array_grow_by (&font->output, 5); - if (status) - return status; - - byte = 2; - status = _cairo_array_append (&font->output, &byte); - assert (status == CAIRO_STATUS_SUCCESS); - - word = cpu_to_be16 (1); - status = _cairo_array_append_multiple (&font->output, &word, 2); - assert (status == CAIRO_STATUS_SUCCESS); - - word = cpu_to_be16 (font->scaled_font_subset->num_glyphs - 2); - status = _cairo_array_append_multiple (&font->output, &word, 2); - assert (status == CAIRO_STATUS_SUCCESS); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_write_charstrings (cairo_cff_font_t *font) -{ - cairo_cff_font_set_topdict_operator_to_cur_pos (font, CHARSTRINGS_OP); - - return cff_index_write (&font->charstrings_subset_index, &font->output); -} - -static cairo_status_t -cairo_cff_font_write_cid_fontdict (cairo_cff_font_t *font) -{ - unsigned int i; - cairo_int_status_t status; - uint32_t *offset_array; - int offset_base; - uint16_t count; - uint8_t offset_size = 4; - - cairo_cff_font_set_topdict_operator_to_cur_pos (font, FDARRAY_OP); - count = cpu_to_be16 (font->num_subset_fontdicts); - status = _cairo_array_append_multiple (&font->output, &count, sizeof (uint16_t)); - if (status) - return status; - status = _cairo_array_append (&font->output, &offset_size); - if (status) - return status; - status = _cairo_array_allocate (&font->output, - (font->num_subset_fontdicts + 1)*offset_size, - (void **) &offset_array); - if (status) - return status; - offset_base = _cairo_array_num_elements (&font->output) - 1; - *offset_array++ = cpu_to_be32(1); - for (i = 0; i < font->num_subset_fontdicts; i++) { - status = cff_dict_write (font->fd_dict[font->fd_subset_map[i]], - &font->output); - if (status) - return status; - *offset_array++ = cpu_to_be32(_cairo_array_num_elements (&font->output) - offset_base); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_write_private_dict (cairo_cff_font_t *font, - int dict_num, - cairo_hash_table_t *parent_dict, - cairo_hash_table_t *private_dict) -{ - int offset; - int size; - unsigned char buf[10]; - unsigned char *buf_end; - unsigned char *p; - cairo_status_t status; - - /* Write private dict and update offset and size in top dict */ - font->private_dict_offset[dict_num] = _cairo_array_num_elements (&font->output); - status = cff_dict_write (private_dict, &font->output); - if (status) - return status; - - size = _cairo_array_num_elements (&font->output) - font->private_dict_offset[dict_num]; - /* private entry has two operands - size and offset */ - buf_end = encode_integer_max (buf, size); - buf_end = encode_integer_max (buf_end, font->private_dict_offset[dict_num]); - offset = cff_dict_get_location (parent_dict, PRIVATE_OP, &size); - assert (offset > 0); - p = _cairo_array_index (&font->output, offset); - memcpy (p, buf, buf_end - buf); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_cff_font_write_local_sub (cairo_cff_font_t *font, - int dict_num, - cairo_hash_table_t *private_dict, - cairo_array_t *local_sub_index) -{ - int offset; - int size; - unsigned char buf[10]; - unsigned char *buf_end; - unsigned char *p; - cairo_status_t status; - - if (_cairo_array_num_elements (local_sub_index) > 0) { - /* Write local subroutines and update offset in private - * dict. Local subroutines offset is relative to start of - * private dict */ - offset = _cairo_array_num_elements (&font->output) - font->private_dict_offset[dict_num]; - buf_end = encode_integer_max (buf, offset); - offset = cff_dict_get_location (private_dict, LOCAL_SUB_OP, &size); - assert (offset > 0); - p = _cairo_array_index (&font->output, offset); - memcpy (p, buf, buf_end - buf); - status = cff_index_write (local_sub_index, &font->output); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - - -static cairo_status_t -cairo_cff_font_write_cid_private_dict_and_local_sub (cairo_cff_font_t *font) -{ - unsigned int i; - cairo_int_status_t status; - - if (font->is_cid) { - for (i = 0; i < font->num_subset_fontdicts; i++) { - status = cairo_cff_font_write_private_dict ( - font, - i, - font->fd_dict[font->fd_subset_map[i]], - font->fd_private_dict[font->fd_subset_map[i]]); - if (status) - return status; - } - - for (i = 0; i < font->num_subset_fontdicts; i++) { - status = cairo_cff_font_write_local_sub ( - font, - i, - font->fd_private_dict[font->fd_subset_map[i]], - &font->fd_local_sub_index[font->fd_subset_map[i]]); - if (status) - return status; - } - } else { - status = cairo_cff_font_write_private_dict (font, - 0, - font->fd_dict[0], - font->private_dict); - if (status) - return status; - - status = cairo_cff_font_write_local_sub (font, - 0, - font->private_dict, - &font->local_sub_index); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -typedef cairo_status_t -(*font_write_t) (cairo_cff_font_t *font); - -static const font_write_t font_write_funcs[] = { - cairo_cff_font_write_header, - cairo_cff_font_write_name, - cairo_cff_font_write_top_dict, - cairo_cff_font_write_strings, - cairo_cff_font_write_global_subrs, - cairo_cff_font_write_charset, - cairo_cff_font_write_fdselect, - cairo_cff_font_write_charstrings, - cairo_cff_font_write_cid_fontdict, - cairo_cff_font_write_cid_private_dict_and_local_sub, -}; - -static cairo_status_t -cairo_cff_font_write_subset (cairo_cff_font_t *font) -{ - cairo_int_status_t status; - unsigned int i; - - for (i = 0; i < ARRAY_LENGTH (font_write_funcs); i++) { - status = font_write_funcs[i] (font); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_cff_font_generate (cairo_cff_font_t *font, - const char **data, - unsigned long *length) -{ - cairo_int_status_t status; - - status = cairo_cff_font_read_font (font); - if (status) - return status; - - status = cairo_cff_font_subset_font (font); - if (status) - return status; - - status = cairo_cff_font_write_subset (font); - if (status) - return status; - - *data = _cairo_array_index (&font->output, 0); - *length = _cairo_array_num_elements (&font->output); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_cff_font_create_set_widths (cairo_cff_font_t *font) -{ - unsigned long size; - unsigned long long_entry_size; - unsigned long short_entry_size; - unsigned int i; - tt_hhea_t hhea; - int num_hmetrics; - unsigned char buf[10]; - int glyph_index; - cairo_int_status_t status; - - size = sizeof (tt_hhea_t); - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hhea, 0, - (unsigned char*) &hhea, &size); - if (status) - return status; - num_hmetrics = be16_to_cpu (hhea.num_hmetrics); - - for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { - glyph_index = font->scaled_font_subset->glyphs[i]; - long_entry_size = 2 * sizeof (int16_t); - short_entry_size = sizeof (int16_t); - if (glyph_index < num_hmetrics) { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hmtx, - glyph_index * long_entry_size, - buf, &short_entry_size); - if (status) - return status; - } - else - { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hmtx, - (num_hmetrics - 1) * long_entry_size, - buf, &short_entry_size); - if (status) - return status; - } - font->widths[i] = be16_to_cpu (*((int16_t*)buf)); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_cff_font_create (cairo_scaled_font_subset_t *scaled_font_subset, - cairo_cff_font_t **font_return, - const char *subset_name) -{ - const cairo_scaled_font_backend_t *backend; - cairo_status_t status; - cairo_cff_font_t *font; - tt_head_t head; - tt_hhea_t hhea; - tt_name_t *name; - tt_name_record_t *record; - unsigned long size, data_length; - int i, j; - - backend = scaled_font_subset->scaled_font->backend; - if (!backend->load_truetype_table) - return CAIRO_INT_STATUS_UNSUPPORTED; - - data_length = 0; - status = backend->load_truetype_table( scaled_font_subset->scaled_font, - TT_TAG_CFF, 0, NULL, &data_length); - if (status) - return status; - - size = sizeof (tt_head_t); - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_head, 0, - (unsigned char *) &head, &size); - if (status) - return status; - - size = sizeof (tt_hhea_t); - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_hhea, 0, - (unsigned char *) &hhea, &size); - if (status) - return status; - - size = 0; - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_hmtx, 0, NULL, &size); - if (status) - return status; - - size = 0; - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_name, 0, NULL, &size); - if (status) - return status; - - name = malloc (size); - if (name == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_name, 0, - (unsigned char *) name, &size); - if (status) - goto fail1; - - font = malloc (sizeof (cairo_cff_font_t)); - if (font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - font->backend = backend; - font->scaled_font_subset = scaled_font_subset; - - _cairo_array_init (&font->output, sizeof (char)); - status = _cairo_array_grow_by (&font->output, 4096); - if (status) - goto fail2; - - font->subset_font_name = strdup (subset_name); - if (font->subset_font_name == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - font->x_min = (int16_t) be16_to_cpu (head.x_min); - font->y_min = (int16_t) be16_to_cpu (head.y_min); - font->x_max = (int16_t) be16_to_cpu (head.x_max); - font->y_max = (int16_t) be16_to_cpu (head.y_max); - font->ascent = (int16_t) be16_to_cpu (hhea.ascender); - font->descent = (int16_t) be16_to_cpu (hhea.descender); - - /* Extract the font name from the name table. At present this - * just looks for the Mac platform/Roman encoded font name. It - * should be extended to use any suitable font name in the - * name table. If the mac/roman font name is not found a - * CairoFont-x-y name is created. - */ - font->font_name = NULL; - for (i = 0; i < be16_to_cpu(name->num_records); i++) { - record = &(name->records[i]); - if ((be16_to_cpu (record->platform) == 1) && - (be16_to_cpu (record->encoding) == 0) && - (be16_to_cpu (record->name) == 4)) { - font->font_name = malloc (be16_to_cpu(record->length) + 1); - if (font->font_name) { - strncpy(font->font_name, - ((char*)name) + be16_to_cpu (name->strings_offset) + be16_to_cpu (record->offset), - be16_to_cpu (record->length)); - font->font_name[be16_to_cpu (record->length)] = 0; - } - break; - } - } - - if (font->font_name == NULL) { - font->font_name = malloc (30); - if (font->font_name == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - snprintf(font->font_name, 30, "CairoFont-%u-%u", - scaled_font_subset->font_id, - scaled_font_subset->subset_id); - } - - for (i = 0, j = 0; font->font_name[j]; j++) { - if (font->font_name[j] == ' ') - continue; - font->font_name[i++] = font->font_name[j]; - } - font->font_name[i] = '\0'; - - font->widths = calloc (font->scaled_font_subset->num_glyphs, sizeof (int)); - if (font->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail4; - } - - status = cairo_cff_font_create_set_widths (font); - if (status) - goto fail5; - - font->data_length = data_length; - font->data = malloc (data_length); - if (font->data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail5; - } - status = font->backend->load_truetype_table ( font->scaled_font_subset->scaled_font, - TT_TAG_CFF, 0, font->data, - &font->data_length); - if (status) - goto fail6; - - font->data_end = font->data + font->data_length; - - status = cff_dict_init (&font->top_dict); - if (status) - goto fail6; - - status = cff_dict_init (&font->private_dict); - if (status) - goto fail7; - - cff_index_init (&font->strings_index); - cff_index_init (&font->charstrings_index); - cff_index_init (&font->global_sub_index); - cff_index_init (&font->local_sub_index); - cff_index_init (&font->charstrings_subset_index); - cff_index_init (&font->strings_subset_index); - font->fdselect = NULL; - font->fd_dict = NULL; - font->fd_private_dict = NULL; - font->fd_local_sub_index = NULL; - font->fdselect_subset = NULL; - font->fd_subset_map = NULL; - font->private_dict_offset = NULL; - - free (name); - *font_return = font; - - return CAIRO_STATUS_SUCCESS; - -fail7: - _cairo_hash_table_destroy (font->top_dict); -fail6: - free (font->data); -fail5: - free (font->widths); -fail4: - free (font->font_name); -fail3: - free (font->subset_font_name); -fail2: - _cairo_array_fini (&font->output); - free (font); -fail1: - free (name); - return status; -} - -static void -cairo_cff_font_destroy (cairo_cff_font_t *font) -{ - unsigned int i; - - free (font->widths); - free (font->font_name); - free (font->subset_font_name); - _cairo_array_fini (&font->output); - cff_dict_fini (font->top_dict); - cff_dict_fini (font->private_dict); - cff_index_fini (&font->strings_index); - cff_index_fini (&font->charstrings_index); - cff_index_fini (&font->global_sub_index); - cff_index_fini (&font->local_sub_index); - cff_index_fini (&font->charstrings_subset_index); - cff_index_fini (&font->strings_subset_index); - - /* If we bailed out early as a result of an error some of the - * following cairo_cff_font_t members may still be NULL */ - if (font->fd_dict) { - for (i = 0; i < font->num_fontdicts; i++) { - if (font->fd_dict[i]) - cff_dict_fini (font->fd_dict[i]); - } - free (font->fd_dict); - } - if (font->fd_subset_map) - free (font->fd_subset_map); - if (font->private_dict_offset) - free (font->private_dict_offset); - - if (font->is_cid) { - if (font->fdselect) - free (font->fdselect); - if (font->fdselect_subset) - free (font->fdselect_subset); - if (font->fd_private_dict) { - for (i = 0; i < font->num_fontdicts; i++) { - if (font->fd_private_dict[i]) - cff_dict_fini (font->fd_private_dict[i]); - } - free (font->fd_private_dict); - } - if (font->fd_local_sub_index) { - for (i = 0; i < font->num_fontdicts; i++) - cff_index_fini (&font->fd_local_sub_index[i]); - free (font->fd_local_sub_index); - } - } - - if (font->data) - free (font->data); - - free (font); -} - -cairo_status_t -_cairo_cff_subset_init (cairo_cff_subset_t *cff_subset, - const char *subset_name, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_cff_font_t *font = NULL; /* squelch bogus compiler warning */ - cairo_status_t status; - const char *data = NULL; /* squelch bogus compiler warning */ - unsigned long length = 0; /* squelch bogus compiler warning */ - unsigned int i; - - status = _cairo_cff_font_create (font_subset, &font, subset_name); - if (status) - return status; - - status = cairo_cff_font_generate (font, &data, &length); - if (status) - goto fail1; - - cff_subset->base_font = strdup (font->font_name); - if (cff_subset->base_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - cff_subset->widths = calloc (sizeof (int), font->scaled_font_subset->num_glyphs); - if (cff_subset->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) - cff_subset->widths[i] = font->widths[i]; - - cff_subset->x_min = font->x_min; - cff_subset->y_min = font->y_min; - cff_subset->x_max = font->x_max; - cff_subset->y_max = font->y_max; - cff_subset->ascent = font->ascent; - cff_subset->descent = font->descent; - - cff_subset->data = malloc (length); - if (cff_subset->data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - - memcpy (cff_subset->data, data, length); - cff_subset->data_length = length; - - cairo_cff_font_destroy (font); - - return CAIRO_STATUS_SUCCESS; - - fail3: - free (cff_subset->widths); - fail2: - free (cff_subset->base_font); - fail1: - cairo_cff_font_destroy (font); - - return status; -} - -void -_cairo_cff_subset_fini (cairo_cff_subset_t *subset) -{ - free (subset->base_font); - free (subset->widths); - free (subset->data); -} - -static cairo_int_status_t -_cairo_cff_font_fallback_create (cairo_scaled_font_subset_t *scaled_font_subset, - cairo_cff_font_t **font_return, - const char *subset_name) -{ - cairo_status_t status; - cairo_cff_font_t *font; - - font = malloc (sizeof (cairo_cff_font_t)); - if (font == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->backend = NULL; - font->scaled_font_subset = scaled_font_subset; - - _cairo_array_init (&font->output, sizeof (char)); - status = _cairo_array_grow_by (&font->output, 4096); - if (status) - goto fail1; - - font->subset_font_name = strdup (subset_name); - if (font->subset_font_name == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - font->font_name = strdup (subset_name); - if (font->subset_font_name == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - - font->x_min = 0; - font->y_min = 0; - font->x_max = 0; - font->y_max = 0; - font->ascent = 0; - font->descent = 0; - - font->widths = calloc (font->scaled_font_subset->num_glyphs, sizeof (int)); - if (font->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - - font->data_length = 0; - font->data = NULL; - font->data_end = NULL; - - status = cff_dict_init (&font->top_dict); - if (status) - goto fail4; - - status = cff_dict_init (&font->private_dict); - if (status) - goto fail5; - - cff_index_init (&font->strings_index); - cff_index_init (&font->charstrings_index); - cff_index_init (&font->global_sub_index); - cff_index_init (&font->local_sub_index); - cff_index_init (&font->charstrings_subset_index); - cff_index_init (&font->strings_subset_index); - font->fdselect = NULL; - font->fd_dict = NULL; - font->fd_private_dict = NULL; - font->fd_local_sub_index = NULL; - font->fdselect_subset = NULL; - font->fd_subset_map = NULL; - font->private_dict_offset = NULL; - - *font_return = font; - - return CAIRO_STATUS_SUCCESS; - -fail5: - _cairo_hash_table_destroy (font->top_dict); -fail4: - free (font->widths); -fail3: - free (font->font_name); -fail2: - free (font->subset_font_name); -fail1: - _cairo_array_fini (&font->output); - free (font); - return status; -} - -static cairo_int_status_t -cairo_cff_font_fallback_generate (cairo_cff_font_t *font, - cairo_type2_charstrings_t *type2_subset, - const char **data, - unsigned long *length) -{ - cairo_int_status_t status; - cff_header_t header; - cairo_array_t *charstring; - unsigned char buf[40]; - unsigned char *end_buf; - unsigned int i; - - /* Create header */ - header.major = 1; - header.minor = 0; - header.header_size = 4; - header.offset_size = 4; - font->header = &header; - - /* Create Top Dict */ - font->is_cid = FALSE; - end_buf = encode_integer (buf, type2_subset->x_min); - end_buf = encode_integer (end_buf, type2_subset->y_min); - end_buf = encode_integer (end_buf, type2_subset->x_max); - end_buf = encode_integer (end_buf, type2_subset->y_max); - status = cff_dict_set_operands (font->top_dict, - FONTBBOX_OP, buf, end_buf - buf); - if (status) - return status; - - end_buf = encode_integer_max (buf, 0); - status = cff_dict_set_operands (font->top_dict, - CHARSTRINGS_OP, buf, end_buf - buf); - if (status) - return status; - - status = cff_dict_set_operands (font->top_dict, - FDSELECT_OP, buf, end_buf - buf); - if (status) - return status; - - status = cff_dict_set_operands (font->top_dict, - FDARRAY_OP, buf, end_buf - buf); - if (status) - return status; - - status = cff_dict_set_operands (font->top_dict, - CHARSET_OP, buf, end_buf - buf); - if (status) - return status; - - status = cairo_cff_font_set_ros_strings (font); - if (status) - return status; - - /* Create CID FD dictionary */ - status = cairo_cff_font_create_cid_fontdict (font); - if (status) - return status; - - /* Create charstrings */ - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - charstring = _cairo_array_index(&type2_subset->charstrings, i); - - status = cff_index_append (&font->charstrings_subset_index, - _cairo_array_index (charstring, 0), - _cairo_array_num_elements (charstring)); - - if (status) - return status; - } - - status = cairo_cff_font_write_subset (font); - if (status) - return status; - - *data = _cairo_array_index (&font->output, 0); - *length = _cairo_array_num_elements (&font->output); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_cff_fallback_init (cairo_cff_subset_t *cff_subset, - const char *subset_name, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_cff_font_t *font = NULL; /* squelch bogus compiler warning */ - cairo_status_t status; - const char *data = NULL; /* squelch bogus compiler warning */ - unsigned long length = 0; /* squelch bogus compiler warning */ - unsigned int i; - cairo_type2_charstrings_t type2_subset; - - status = _cairo_cff_font_fallback_create (font_subset, &font, subset_name); - if (status) - return status; - - status = _cairo_type2_charstrings_init (&type2_subset, font_subset); - if (status) - goto fail1; - - status = cairo_cff_font_fallback_generate (font, &type2_subset, &data, &length); - if (status) - goto fail2; - - cff_subset->base_font = strdup (font->font_name); - if (cff_subset->base_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - - cff_subset->widths = calloc (sizeof (int), font->scaled_font_subset->num_glyphs); - if (cff_subset->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) - cff_subset->widths[i] = type2_subset.widths[i]; - - cff_subset->x_min = type2_subset.x_min; - cff_subset->y_min = type2_subset.y_min; - cff_subset->x_max = type2_subset.x_max; - cff_subset->y_max = type2_subset.y_max; - cff_subset->ascent = type2_subset.y_max; - cff_subset->descent = type2_subset.y_min; - - cff_subset->data = malloc (length); - if (cff_subset->data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail4; - } - - memcpy (cff_subset->data, data, length); - cff_subset->data_length = length; - cff_subset->data_length = length; - - _cairo_type2_charstrings_fini (&type2_subset); - cairo_cff_font_destroy (font); - - return CAIRO_STATUS_SUCCESS; - - fail4: - free (cff_subset->widths); - fail3: - free (cff_subset->base_font); - fail2: - _cairo_type2_charstrings_fini (&type2_subset); - fail1: - cairo_cff_font_destroy (font); - - return status; -} - -void -_cairo_cff_fallback_fini (cairo_cff_subset_t *subset) -{ - free (subset->base_font); - free (subset->widths); - free (subset->data); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-clip.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-clip.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-clip.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-clip.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,835 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Kristian Høgsberg - */ - -#include "cairoint.h" -#include "cairo-clip-private.h" - -static cairo_clip_path_t * -_cairo_clip_path_reference (cairo_clip_path_t *clip_path); - -static void -_cairo_clip_path_destroy (cairo_clip_path_t *clip_path); - -void -_cairo_clip_init (cairo_clip_t *clip, cairo_surface_t *target) -{ - if (target) - clip->mode = _cairo_surface_get_clip_mode (target); - else - clip->mode = CAIRO_CLIP_MODE_MASK; - - clip->all_clipped = FALSE; - - clip->surface = NULL; - clip->surface_rect.x = 0; - clip->surface_rect.y = 0; - clip->surface_rect.width = 0; - clip->surface_rect.height = 0; - - clip->serial = 0; - - _cairo_region_init (&clip->region); - clip->has_region = FALSE; - - clip->path = NULL; -} - -cairo_status_t -_cairo_clip_init_copy (cairo_clip_t *clip, cairo_clip_t *other) -{ - clip->mode = other->mode; - - clip->all_clipped = other->all_clipped; - - clip->surface = cairo_surface_reference (other->surface); - clip->surface_rect = other->surface_rect; - - clip->serial = other->serial; - - _cairo_region_init (&clip->region); - - if (other->has_region) { - cairo_status_t status; - status = _cairo_region_copy (&clip->region, &other->region); - if (status) { - _cairo_region_fini (&clip->region); - cairo_surface_destroy (clip->surface); - return status; - } - clip->has_region = TRUE; - } else { - clip->has_region = FALSE; - } - - clip->path = _cairo_clip_path_reference (other->path); - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_clip_reset (cairo_clip_t *clip) -{ - clip->all_clipped = FALSE; - - /* destroy any existing clip-region artifacts */ - cairo_surface_destroy (clip->surface); - clip->surface = NULL; - - clip->serial = 0; - - if (clip->has_region) { - /* _cairo_region_fini just releases the resources used but - * doesn't bother with leaving the region in a valid state. - * So _cairo_region_init has to be called afterwards. */ - _cairo_region_fini (&clip->region); - _cairo_region_init (&clip->region); - - clip->has_region = FALSE; - } - - _cairo_clip_path_destroy (clip->path); - clip->path = NULL; -} - -static void -_cairo_clip_set_all_clipped (cairo_clip_t *clip, cairo_surface_t *target) -{ - _cairo_clip_reset (clip); - - clip->all_clipped = TRUE; - clip->serial = _cairo_surface_allocate_clip_serial (target); -} - - -static cairo_status_t -_cairo_clip_path_intersect_to_rectangle (cairo_clip_path_t *clip_path, - cairo_rectangle_int_t *rectangle) -{ - while (clip_path) { - cairo_status_t status; - cairo_traps_t traps; - cairo_box_t extents; - cairo_rectangle_int_t extents_rect; - - _cairo_traps_init (&traps); - - status = _cairo_path_fixed_fill_to_traps (&clip_path->path, - clip_path->fill_rule, - clip_path->tolerance, - &traps); - if (status) { - _cairo_traps_fini (&traps); - return status; - } - - _cairo_traps_extents (&traps, &extents); - _cairo_box_round_to_rectangle (&extents, &extents_rect); - _cairo_rectangle_intersect (rectangle, &extents_rect); - - _cairo_traps_fini (&traps); - - clip_path = clip_path->prev; - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_clip_intersect_to_rectangle (cairo_clip_t *clip, - cairo_rectangle_int_t *rectangle) -{ - if (!clip) - return CAIRO_STATUS_SUCCESS; - - if (clip->all_clipped) { - *rectangle = clip->surface_rect; - return CAIRO_STATUS_SUCCESS; - } - - if (clip->path) { - cairo_status_t status; - - status = _cairo_clip_path_intersect_to_rectangle (clip->path, - rectangle); - if (status) - return status; - } - - if (clip->has_region) { - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_region_t intersection; - - _cairo_region_init_rect (&intersection, rectangle); - - status = _cairo_region_intersect (&intersection, &clip->region, - &intersection); - - if (!status) - _cairo_region_get_extents (&intersection, rectangle); - - _cairo_region_fini (&intersection); - - if (status) - return status; - } - - if (clip->surface) - _cairo_rectangle_intersect (rectangle, &clip->surface_rect); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_clip_intersect_to_region (cairo_clip_t *clip, - cairo_region_t *region) -{ - cairo_status_t status; - - if (!clip) - return CAIRO_STATUS_SUCCESS; - - if (clip->all_clipped) { - cairo_region_t clip_rect; - - _cairo_region_init_rect (&clip_rect, &clip->surface_rect); - - status = _cairo_region_intersect (region, &clip_rect, region); - - _cairo_region_fini (&clip_rect); - - return status; - } - - if (clip->path) { - /* Intersect clip path into region. */ - } - - if (clip->has_region) { - status = _cairo_region_intersect (region, &clip->region, region); - if (status) - return status; - } - - if (clip->surface) { - cairo_region_t clip_rect; - - _cairo_region_init_rect (&clip_rect, &clip->surface_rect); - - status = _cairo_region_intersect (region, &clip_rect, region); - - _cairo_region_fini (&clip_rect); - - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -/* Combines the region of clip->surface given by extents in - * device backend coordinates into the given temporary surface, - * which has its origin at dst_x, dst_y in backend coordinates - */ -cairo_status_t -_cairo_clip_combine_to_surface (cairo_clip_t *clip, - cairo_operator_t op, - cairo_surface_t *dst, - int dst_x, - int dst_y, - const cairo_rectangle_int_t *extents) -{ - cairo_pattern_union_t pattern; - cairo_status_t status; - - if (clip->all_clipped) - return CAIRO_STATUS_SUCCESS; - - _cairo_pattern_init_for_surface (&pattern.surface, clip->surface); - - status = _cairo_surface_composite (op, - &pattern.base, - NULL, - dst, - extents->x - clip->surface_rect.x, - extents->y - clip->surface_rect.y, - 0, 0, - extents->x - dst_x, - extents->y - dst_y, - extents->width, extents->height); - - _cairo_pattern_fini (&pattern.base); - - return status; -} - -static cairo_status_t -_cairo_clip_intersect_path (cairo_clip_t *clip, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_clip_path_t *clip_path; - cairo_status_t status; - - if (clip->mode != CAIRO_CLIP_MODE_PATH) - return CAIRO_INT_STATUS_UNSUPPORTED; - - clip_path = malloc (sizeof (cairo_clip_path_t)); - if (clip_path == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_path_fixed_init_copy (&clip_path->path, path); - if (status) { - free (clip_path); - return status; - } - - CAIRO_REFERENCE_COUNT_INIT (&clip_path->ref_count, 1); - clip_path->fill_rule = fill_rule; - clip_path->tolerance = tolerance; - clip_path->antialias = antialias; - clip_path->prev = clip->path; - clip->path = clip_path; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_clip_path_t * -_cairo_clip_path_reference (cairo_clip_path_t *clip_path) -{ - if (clip_path == NULL) - return NULL; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&clip_path->ref_count)); - - _cairo_reference_count_inc (&clip_path->ref_count); - - return clip_path; -} - -static void -_cairo_clip_path_destroy (cairo_clip_path_t *clip_path) -{ - if (clip_path == NULL) - return; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&clip_path->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&clip_path->ref_count)) - return; - - _cairo_path_fixed_fini (&clip_path->path); - _cairo_clip_path_destroy (clip_path->prev); - free (clip_path); -} - - -static cairo_int_status_t -_cairo_clip_intersect_region (cairo_clip_t *clip, - cairo_traps_t *traps, - cairo_surface_t *target) -{ - cairo_region_t region; - cairo_int_status_t status; - - if (clip->all_clipped) - return CAIRO_STATUS_SUCCESS; - - if (clip->mode != CAIRO_CLIP_MODE_REGION) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_traps_extract_region (traps, ®ion); - - if (status) - return status; - - status = CAIRO_STATUS_SUCCESS; - - if (!clip->has_region) { - status = _cairo_region_copy (&clip->region, ®ion); - if (status == CAIRO_STATUS_SUCCESS) - clip->has_region = TRUE; - } else { - cairo_region_t intersection; - _cairo_region_init (&intersection); - - status = _cairo_region_intersect (&intersection, - &clip->region, - ®ion); - - if (status == CAIRO_STATUS_SUCCESS) - status = _cairo_region_copy (&clip->region, &intersection); - - _cairo_region_fini (&intersection); - } - - clip->serial = _cairo_surface_allocate_clip_serial (target); - _cairo_region_fini (®ion); - - if (! _cairo_region_not_empty (&clip->region)) - _cairo_clip_set_all_clipped (clip, target); - - return status; -} - -static cairo_status_t -_cairo_clip_intersect_mask (cairo_clip_t *clip, - cairo_traps_t *traps, - cairo_antialias_t antialias, - cairo_surface_t *target) -{ - cairo_pattern_union_t pattern; - cairo_box_t extents; - cairo_rectangle_int_t surface_rect, target_rect; - cairo_surface_t *surface; - cairo_status_t status; - - if (clip->all_clipped) - return CAIRO_STATUS_SUCCESS; - - /* Represent the clip as a mask surface. We create a new surface - * the size of the intersection of the old mask surface and the - * extents of the new clip path. */ - - _cairo_traps_extents (traps, &extents); - _cairo_box_round_to_rectangle (&extents, &surface_rect); - - if (clip->surface != NULL) - _cairo_rectangle_intersect (&surface_rect, &clip->surface_rect); - - /* Intersect with the target surface rectangle so we don't use - * more memory and time than we need to. */ - - status = _cairo_surface_get_extents (target, &target_rect); - if (!status) - _cairo_rectangle_intersect (&surface_rect, &target_rect); - - if (surface_rect.width == 0 || surface_rect.height == 0) { - surface = NULL; - status = CAIRO_STATUS_SUCCESS; - if (clip->surface != NULL) - cairo_surface_destroy (clip->surface); - goto DONE; - } - - _cairo_pattern_init_solid (&pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - /* The clipping operation should ideally be something like the following to - * avoid having to do as many passes over the data - - if (clip->surface != NULL) { - _cairo_pattern_init_for_surface (&pattern.surface, clip->surface); - } else { - _cairo_pattern_init_solid (&pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - } - status = _cairo_surface_composite_trapezoids (CAIRO_OPERATOR_IN, - &pattern.base, - surface, - antialias, - 0, 0, - 0, 0, - surface_rect.width, - surface_rect.height, - traps->traps, - traps->num_traps); - - However this operation is not accelerated by pixman - - I believe the best possible operation would probably an unbounded SRC - operator. Using SRC we could potentially avoid having to initialize - the surface which would be ideal from an efficiency point of view. - However, _cairo_surface_composite_trapezoids (CAIRO_OPERATOR_SOURCE) is - bounded by the mask. - - */ - - surface = _cairo_surface_create_similar_solid (target, - CAIRO_CONTENT_ALPHA, - surface_rect.width, - surface_rect.height, - CAIRO_COLOR_TRANSPARENT, - &pattern.base); - if (surface->status) { - _cairo_pattern_fini (&pattern.base); - return surface->status; - } - - /* Render the new clipping path into the new mask surface. */ - - _cairo_traps_translate (traps, -surface_rect.x, -surface_rect.y); - - status = _cairo_surface_composite_trapezoids (CAIRO_OPERATOR_ADD, - &pattern.base, - surface, - antialias, - 0, 0, - 0, 0, - surface_rect.width, - surface_rect.height, - traps->traps, - traps->num_traps); - - _cairo_pattern_fini (&pattern.base); - - if (status) { - cairo_surface_destroy (surface); - return status; - } - - /* If there was a clip surface already, combine it with the new - * mask surface using the IN operator, so we get the intersection - * of the old and new clipping paths. */ - - if (clip->surface != NULL) { - _cairo_pattern_init_for_surface (&pattern.surface, clip->surface); - - status = _cairo_surface_composite (CAIRO_OPERATOR_IN, - &pattern.base, - NULL, - surface, - surface_rect.x - clip->surface_rect.x, - surface_rect.y - clip->surface_rect.y, - 0, 0, - 0, 0, - surface_rect.width, - surface_rect.height); - - _cairo_pattern_fini (&pattern.base); - - if (status) { - cairo_surface_destroy (surface); - return status; - } - - cairo_surface_destroy (clip->surface); - } - - DONE: - clip->surface = surface; - clip->surface_rect = surface_rect; - clip->serial = _cairo_surface_allocate_clip_serial (target); - - if (surface_rect.width == 0 || surface_rect.height == 0) - _cairo_clip_set_all_clipped (clip, target); - - return status; -} - -cairo_status_t -_cairo_clip_clip (cairo_clip_t *clip, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias, - cairo_surface_t *target) -{ - cairo_status_t status; - cairo_traps_t traps; - - if (clip->all_clipped) - return CAIRO_STATUS_SUCCESS; - - /* catch the empty clip path */ - if (! path->has_current_point) { - _cairo_clip_set_all_clipped (clip, target); - return CAIRO_STATUS_SUCCESS; - } - - status = _cairo_clip_intersect_path (clip, - path, fill_rule, tolerance, - antialias); - if (status == CAIRO_STATUS_SUCCESS) - clip->serial = _cairo_surface_allocate_clip_serial (target); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - _cairo_traps_init (&traps); - status = _cairo_path_fixed_fill_to_traps (path, - fill_rule, - tolerance, - &traps); - if (status) - goto bail; - - status = _cairo_clip_intersect_region (clip, &traps, target); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto bail; - - status = _cairo_clip_intersect_mask (clip, &traps, antialias, target); - - bail: - _cairo_traps_fini (&traps); - - return status; -} - -void -_cairo_clip_translate (cairo_clip_t *clip, - cairo_fixed_t tx, - cairo_fixed_t ty) -{ - if (clip->all_clipped) - return; - - if (clip->has_region) { - _cairo_region_translate (&clip->region, - _cairo_fixed_integer_part (tx), - _cairo_fixed_integer_part (ty)); - } - - if (clip->surface) { - clip->surface_rect.x += _cairo_fixed_integer_part (tx); - clip->surface_rect.y += _cairo_fixed_integer_part (ty); - } - - if (clip->path) { - cairo_clip_path_t *clip_path = clip->path; - cairo_matrix_t matrix; - - cairo_matrix_init_translate (&matrix, - _cairo_fixed_to_double (tx), - _cairo_fixed_to_double (ty)); - - while (clip_path) { - _cairo_path_fixed_device_transform (&clip_path->path, &matrix); - clip_path = clip_path->prev; - } - } -} - -static cairo_status_t -_cairo_clip_path_reapply_clip_path (cairo_clip_t *clip, - cairo_clip_path_t *clip_path) -{ - cairo_status_t status; - - if (clip_path->prev) { - status = _cairo_clip_path_reapply_clip_path (clip, clip_path->prev); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - } - - return _cairo_clip_intersect_path (clip, - &clip_path->path, - clip_path->fill_rule, - clip_path->tolerance, - clip_path->antialias); -} - -cairo_status_t -_cairo_clip_init_deep_copy (cairo_clip_t *clip, - cairo_clip_t *other, - cairo_surface_t *target) -{ - cairo_status_t status; - - _cairo_clip_init (clip, target); - - if (other->mode != clip->mode) { - /* We should reapply the original clip path in this case, and let - * whatever the right handling is happen */ - } else { - if (other->has_region) { - status = _cairo_region_copy (&clip->region, &other->region); - if (status) - goto BAIL; - - clip->has_region = TRUE; - } - - if (other->surface) { - status = _cairo_surface_clone_similar (target, other->surface, - other->surface_rect.x, - other->surface_rect.y, - other->surface_rect.width, - other->surface_rect.height, - &clip->surface); - if (status) - goto BAIL; - - clip->surface_rect = other->surface_rect; - } - - if (other->path) { - status = _cairo_clip_path_reapply_clip_path (clip, other->path); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - goto BAIL; - } - } - - return CAIRO_STATUS_SUCCESS; - -BAIL: - if (clip->has_region) - _cairo_region_fini (&clip->region); - if (clip->surface) - cairo_surface_destroy (clip->surface); - - return status; -} - -const cairo_rectangle_list_t _cairo_rectangles_nil = - { CAIRO_STATUS_NO_MEMORY, NULL, 0 }; -static const cairo_rectangle_list_t _cairo_rectangles_not_representable = - { CAIRO_STATUS_CLIP_NOT_REPRESENTABLE, NULL, 0 }; - -static cairo_bool_t -_cairo_clip_int_rect_to_user (cairo_gstate_t *gstate, - cairo_rectangle_int_t *clip_rect, - cairo_rectangle_t *user_rect) -{ - cairo_bool_t is_tight; - - double x1 = clip_rect->x; - double y1 = clip_rect->y; - double x2 = clip_rect->x + clip_rect->width; - double y2 = clip_rect->y + clip_rect->height; - - _cairo_gstate_backend_to_user_rectangle (gstate, &x1, &y1, &x2, &y2, &is_tight); - - user_rect->x = x1; - user_rect->y = y1; - user_rect->width = x2 - x1; - user_rect->height = y2 - y1; - - return is_tight; -} - -cairo_rectangle_list_t * -_cairo_clip_copy_rectangle_list (cairo_clip_t *clip, cairo_gstate_t *gstate) -{ - cairo_rectangle_list_t *list; - cairo_rectangle_t *rectangles = NULL; - int n_boxes = 0; - - if (clip->all_clipped) - goto DONE; - - if (clip->path || clip->surface) { - _cairo_error_throw (CAIRO_STATUS_CLIP_NOT_REPRESENTABLE); - return (cairo_rectangle_list_t*) &_cairo_rectangles_not_representable; - } - - if (clip->has_region) { - cairo_box_int_t *boxes; - int i; - - if (_cairo_region_get_boxes (&clip->region, &n_boxes, &boxes)) - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - - if (n_boxes) { - rectangles = _cairo_malloc_ab (n_boxes, sizeof (cairo_rectangle_t)); - if (rectangles == NULL) { - _cairo_region_boxes_fini (&clip->region, boxes); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - } - - for (i = 0; i < n_boxes; ++i) { - cairo_rectangle_int_t clip_rect = { boxes[i].p1.x, boxes[i].p1.y, - boxes[i].p2.x - boxes[i].p1.x, - boxes[i].p2.y - boxes[i].p1.y }; - - if (!_cairo_clip_int_rect_to_user(gstate, &clip_rect, &rectangles[i])) { - _cairo_error_throw (CAIRO_STATUS_CLIP_NOT_REPRESENTABLE); - _cairo_region_boxes_fini (&clip->region, boxes); - free (rectangles); - return (cairo_rectangle_list_t*) &_cairo_rectangles_not_representable; - } - } - } - - _cairo_region_boxes_fini (&clip->region, boxes); - } else { - cairo_rectangle_int_t extents; - - n_boxes = 1; - - rectangles = malloc(sizeof (cairo_rectangle_t)); - if (rectangles == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - } - - if (_cairo_surface_get_extents (_cairo_gstate_get_target (gstate), &extents) || - !_cairo_clip_int_rect_to_user(gstate, &extents, rectangles)) - { - _cairo_error_throw (CAIRO_STATUS_CLIP_NOT_REPRESENTABLE); - free (rectangles); - return (cairo_rectangle_list_t*) &_cairo_rectangles_not_representable; - } - } - - DONE: - list = malloc (sizeof (cairo_rectangle_list_t)); - if (list == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - free (rectangles); - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - } - - list->status = CAIRO_STATUS_SUCCESS; - list->rectangles = rectangles; - list->num_rectangles = n_boxes; - return list; -} - -/** - * cairo_rectangle_list_destroy: - * @rectangle_list: a rectangle list, as obtained from cairo_copy_clip_rectangles() - * - * Unconditionally frees @rectangle_list and all associated - * references. After this call, the @rectangle_list pointer must not - * be dereferenced. - * - * Since: 1.4 - **/ -void -cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list) -{ - if (rectangle_list == NULL || rectangle_list == &_cairo_rectangles_nil || - rectangle_list == &_cairo_rectangles_not_representable) - return; - - free (rectangle_list->rectangles); - free (rectangle_list); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-clip-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-clip-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-clip-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-clip-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Kristian Høgsberg - */ - -#ifndef CAIRO_CLIP_PRIVATE_H -#define CAIRO_CLIP_PRIVATE_H - -#include "cairo-compiler-private.h" -#include "cairo-path-fixed-private.h" - -extern const cairo_private cairo_rectangle_list_t _cairo_rectangles_nil; - -struct _cairo_clip_path { - cairo_reference_count_t ref_count; - cairo_path_fixed_t path; - cairo_fill_rule_t fill_rule; - double tolerance; - cairo_antialias_t antialias; - cairo_clip_path_t *prev; -}; - -struct _cairo_clip { - cairo_clip_mode_t mode; - - cairo_bool_t all_clipped; - - /* - * Mask-based clipping for cases where the backend - * clipping isn't sufficiently able. - * - * The rectangle here represents the - * portion of the destination surface that this - * clip surface maps to, it does not - * represent the extents of the clip region or - * clip paths - */ - cairo_surface_t *surface; - cairo_rectangle_int_t surface_rect; - /* - * Surface clip serial number to store - * in the surface when this clip is set - */ - unsigned int serial; - /* - * A clip region that can be placed in the surface - */ - cairo_region_t region; - cairo_bool_t has_region; - /* - * If the surface supports path clipping, we store the list of - * clipping paths that has been set here as a linked list. - */ - cairo_clip_path_t *path; -}; - -cairo_private void -_cairo_clip_init (cairo_clip_t *clip, cairo_surface_t *target); - -cairo_private cairo_status_t -_cairo_clip_init_copy (cairo_clip_t *clip, cairo_clip_t *other); - -cairo_private cairo_status_t -_cairo_clip_init_deep_copy (cairo_clip_t *clip, - cairo_clip_t *other, - cairo_surface_t *target); - -cairo_private void -_cairo_clip_reset (cairo_clip_t *clip); - -cairo_private cairo_status_t -_cairo_clip_clip (cairo_clip_t *clip, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias, - cairo_surface_t *target); - -cairo_private cairo_status_t -_cairo_clip_intersect_to_rectangle (cairo_clip_t *clip, - cairo_rectangle_int_t *rectangle); - -cairo_private cairo_status_t -_cairo_clip_intersect_to_region (cairo_clip_t *clip, - cairo_region_t *region); - -cairo_private cairo_status_t -_cairo_clip_combine_to_surface (cairo_clip_t *clip, - cairo_operator_t op, - cairo_surface_t *dst, - int dst_x, - int dst_y, - const cairo_rectangle_int_t *extents); - -cairo_private void -_cairo_clip_translate (cairo_clip_t *clip, - cairo_fixed_t tx, - cairo_fixed_t ty); - -cairo_private cairo_rectangle_list_t* -_cairo_clip_copy_rectangle_list (cairo_clip_t *clip, cairo_gstate_t *gstate); - -#endif /* CAIRO_CLIP_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-color.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-color.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-color.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-color.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -static cairo_color_t const cairo_color_white = { - 1.0, 1.0, 1.0, 1.0, - 0xffff, 0xffff, 0xffff, 0xffff -}; - -static cairo_color_t const cairo_color_black = { - 0.0, 0.0, 0.0, 1.0, - 0x0, 0x0, 0x0, 0xffff -}; - -static cairo_color_t const cairo_color_transparent = { - 0.0, 0.0, 0.0, 0.0, - 0x0, 0x0, 0x0, 0x0 -}; - -static cairo_color_t const cairo_color_magenta = { - 1.0, 0.0, 1.0, 1.0, - 0xffff, 0x0, 0xffff, 0xffff -}; - -const cairo_color_t * -_cairo_stock_color (cairo_stock_t stock) -{ - switch (stock) { - case CAIRO_STOCK_WHITE: - return &cairo_color_white; - case CAIRO_STOCK_BLACK: - return &cairo_color_black; - case CAIRO_STOCK_TRANSPARENT: - return &cairo_color_transparent; - } - - ASSERT_NOT_REACHED; - - /* If the user can get here somehow, give a color that indicates a - * problem. */ - return &cairo_color_magenta; -} - -void -_cairo_color_init (cairo_color_t *color) -{ - *color = cairo_color_white; -} - -void -_cairo_color_init_rgb (cairo_color_t *color, - double red, double green, double blue) -{ - _cairo_color_init_rgba (color, red, green, blue, 1.0); -} - -/* Convert a double in [0.0, 1.0] to an integer in [0, 65535] - * The conversion is designed to divide the input range into 65536 - * equally-sized regions. This is achieved by multiplying by 65536 and - * then special-casing the result of an input value of 1.0 so that it - * maps to 65535 instead of 65536. - */ -uint16_t -_cairo_color_double_to_short (double d) -{ - uint32_t i; - i = (uint32_t) (d * 65536); - i -= (i >> 16); - return i; -} - -static void -_cairo_color_compute_shorts (cairo_color_t *color) -{ - color->red_short = _cairo_color_double_to_short (color->red * color->alpha); - color->green_short = _cairo_color_double_to_short (color->green * color->alpha); - color->blue_short = _cairo_color_double_to_short (color->blue * color->alpha); - color->alpha_short = _cairo_color_double_to_short (color->alpha); -} - -void -_cairo_color_init_rgba (cairo_color_t *color, - double red, double green, double blue, - double alpha) -{ - color->red = red; - color->green = green; - color->blue = blue; - color->alpha = alpha; - - _cairo_color_compute_shorts (color); -} - -void -_cairo_color_multiply_alpha (cairo_color_t *color, - double alpha) -{ - color->alpha *= alpha; - - _cairo_color_compute_shorts (color); -} - -void -_cairo_color_get_rgba (cairo_color_t *color, - double *red, - double *green, - double *blue, - double *alpha) -{ - *red = color->red; - *green = color->green; - *blue = color->blue; - *alpha = color->alpha; -} - -void -_cairo_color_get_rgba_premultiplied (cairo_color_t *color, - double *red, - double *green, - double *blue, - double *alpha) -{ - *red = color->red * color->alpha; - *green = color->green * color->alpha; - *blue = color->blue * color->alpha; - *alpha = color->alpha; -} - -cairo_bool_t -_cairo_color_equal (const cairo_color_t *color_a, - const cairo_color_t *color_b) -{ - return color_a->red_short == color_b->red_short && - color_a->green_short == color_b->green_short && - color_a->blue_short == color_b->blue_short && - color_a->alpha_short == color_b->alpha_short; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-compiler-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-compiler-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-compiler-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-compiler-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_COMPILER_PRIVATE_H -#define CAIRO_COMPILER_PRIVATE_H - -CAIRO_BEGIN_DECLS - -#if __GNUC__ >= 3 && defined(__ELF__) && !defined(__sun) -# define slim_hidden_proto(name) slim_hidden_proto1(name, slim_hidden_int_name(name)) cairo_private -# define slim_hidden_proto_no_warn(name) slim_hidden_proto1(name, slim_hidden_int_name(name)) cairo_private_no_warn -# define slim_hidden_def(name) slim_hidden_def1(name, slim_hidden_int_name(name)) -# define slim_hidden_int_name(name) INT_##name -# define slim_hidden_proto1(name, internal) \ - extern __typeof (name) name \ - __asm__ (slim_hidden_asmname (internal)) -# define slim_hidden_def1(name, internal) \ - extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name)) \ - __attribute__((__alias__(slim_hidden_asmname(internal)))) -# define slim_hidden_ulp slim_hidden_ulp1(__USER_LABEL_PREFIX__) -# define slim_hidden_ulp1(x) slim_hidden_ulp2(x) -# define slim_hidden_ulp2(x) #x -# define slim_hidden_asmname(name) slim_hidden_asmname1(name) -# define slim_hidden_asmname1(name) slim_hidden_ulp #name -#else -# define slim_hidden_proto(name) int _cairo_dummy_prototype(void) -# define slim_hidden_proto_no_warn(name) int _cairo_dummy_prototype(void) -# define slim_hidden_def(name) int _cairo_dummy_prototype(void) -#endif - -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) -#define CAIRO_PRINTF_FORMAT(fmt_index, va_index) \ - __attribute__((__format__(__printf__, fmt_index, va_index))) -#else -#define CAIRO_PRINTF_FORMAT(fmt_index, va_index) -#endif - -/* slim_internal.h */ -#define CAIRO_HAS_HIDDEN_SYMBOLS 1 -#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) && !defined(__sun) -#define cairo_private_no_warn __attribute__((__visibility__("hidden"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) -#define cairo_private_no_warn __hidden -#else /* not gcc >= 3.3 and not Sun Studio >= 8 */ -#define cairo_private_no_warn -#undef CAIRO_HAS_HIDDEN_SYMBOLS -#endif - -#ifndef WARN_UNUSED_RESULT -#define WARN_UNUSED_RESULT -#endif -/* Add attribute(warn_unused_result) if supported */ -#define cairo_warn WARN_UNUSED_RESULT -#define cairo_private cairo_private_no_warn cairo_warn - -/* This macro allow us to deprecate a function by providing an alias - for the old function name to the new function name. With this - macro, binary compatibility is preserved. The macro only works on - some platforms --- tough. - - Meanwhile, new definitions in the public header file break the - source code so that it will no longer link against the old - symbols. Instead it will give a descriptive error message - indicating that the old function has been deprecated by the new - function. -*/ -#if __GNUC__ >= 2 && defined(__ELF__) -# define CAIRO_FUNCTION_ALIAS(old, new) \ - extern __typeof (new) old \ - __asm__ ("" #old) \ - __attribute__((__alias__("" #new))) -#else -# define CAIRO_FUNCTION_ALIAS(old, new) -#endif - -#ifndef __GNUC__ -#define __attribute__(x) -#endif - -#if defined(__WIN32__) || defined(_MSC_VER) -#define snprintf _snprintf -#endif - -#ifdef _MSC_VER -#undef inline -#define inline __inline -#endif - -#ifdef __STRICT_ANSI__ -#undef inline -#define inline __inline__ -#endif - -CAIRO_END_DECLS - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-debug.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-debug.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-debug.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-debug.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -/** - * cairo_debug_reset_static_data: - * - * Resets all static data within cairo to its original state, - * (ie. identical to the state at the time of program invocation). For - * example, all caches within cairo will be flushed empty. - * - * This function is intended to be useful when using memory-checking - * tools such as valgrind. When valgrind's memcheck analyzes a - * cairo-using program without a call to cairo_debug_reset_static_data(), - * it will report all data reachable via cairo's static objects as - * "still reachable". Calling cairo_debug_reset_static_data() just prior - * to program termination will make it easier to get squeaky clean - * reports from valgrind. - * - * WARNING: It is only safe to call this function when there are no - * active cairo objects remaining, (ie. the appropriate destroy - * functions have been called as necessary). If there are active cairo - * objects, this call is likely to cause a crash, (eg. an assertion - * failure due to a hash table being destroyed when non-empty). - **/ -void -cairo_debug_reset_static_data (void) -{ - CAIRO_MUTEX_INITIALIZE (); - - _cairo_font_reset_static_data (); - -#if CAIRO_HAS_FT_FONT - _cairo_ft_font_reset_static_data (); -#endif - - _cairo_pattern_reset_static_data (); - - _cairo_scaled_font_reset_static_data (); - - CAIRO_MUTEX_FINALIZE (); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-deflate-stream.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-deflate-stream.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-deflate-stream.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-deflate-stream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,148 +0,0 @@ -/* cairo_deflate_stream.c: Output stream abstraction - * - * Copyright © 2006 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Adrian Johnson. - * - * Author(s): - * Adrian Johnson - */ - -#include "cairoint.h" -#include "cairo-output-stream-private.h" -#include - -#define BUFFER_SIZE 16384 - -typedef struct _cairo_deflate_stream { - cairo_output_stream_t base; - cairo_output_stream_t *output; - z_stream zlib_stream; - unsigned char input_buf[BUFFER_SIZE]; - unsigned char output_buf[BUFFER_SIZE]; -} cairo_deflate_stream_t; - -static void -cairo_deflate_stream_deflate (cairo_deflate_stream_t *stream, cairo_bool_t flush) -{ - int ret; - cairo_bool_t finished; - - do { - ret = deflate (&stream->zlib_stream, flush ? Z_FINISH : Z_NO_FLUSH); - if (flush || stream->zlib_stream.avail_out == 0) - { - _cairo_output_stream_write (stream->output, - stream->output_buf, - BUFFER_SIZE - stream->zlib_stream.avail_out); - stream->zlib_stream.next_out = stream->output_buf; - stream->zlib_stream.avail_out = BUFFER_SIZE; - } - - finished = TRUE; - if (stream->zlib_stream.avail_in != 0) - finished = FALSE; - if (flush && ret != Z_STREAM_END) - finished = FALSE; - - } while (!finished); - - stream->zlib_stream.next_in = stream->input_buf; -} - -static cairo_status_t -_cairo_deflate_stream_write (cairo_output_stream_t *base, - const unsigned char *data, - unsigned int length) -{ - cairo_deflate_stream_t *stream = (cairo_deflate_stream_t *) base; - unsigned int count; - const unsigned char *p = data; - - while (length) { - count = length; - if (count > BUFFER_SIZE - stream->zlib_stream.avail_in) - count = BUFFER_SIZE - stream->zlib_stream.avail_in; - memcpy (stream->input_buf + stream->zlib_stream.avail_in, p, count); - p += count; - stream->zlib_stream.avail_in += count; - length -= count; - - if (stream->zlib_stream.avail_in == BUFFER_SIZE) - cairo_deflate_stream_deflate (stream, FALSE); - } - - return _cairo_output_stream_get_status (stream->output); -} - -static cairo_status_t -_cairo_deflate_stream_close (cairo_output_stream_t *base) -{ - cairo_deflate_stream_t *stream = (cairo_deflate_stream_t *) base; - - cairo_deflate_stream_deflate (stream, TRUE); - deflateEnd (&stream->zlib_stream); - - return _cairo_output_stream_get_status (stream->output); -} - -cairo_output_stream_t * -_cairo_deflate_stream_create (cairo_output_stream_t *output) -{ - cairo_deflate_stream_t *stream; - - if (output->status) - return _cairo_output_stream_create_in_error (output->status); - - stream = malloc (sizeof (cairo_deflate_stream_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, - _cairo_deflate_stream_write, - _cairo_deflate_stream_close); - stream->output = output; - - stream->zlib_stream.zalloc = Z_NULL; - stream->zlib_stream.zfree = Z_NULL; - stream->zlib_stream.opaque = Z_NULL; - - if (deflateInit (&stream->zlib_stream, Z_DEFAULT_COMPRESSION) != Z_OK) { - free (stream); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - stream->zlib_stream.next_in = stream->input_buf; - stream->zlib_stream.avail_in = 0; - stream->zlib_stream.next_out = stream->output_buf; - stream->zlib_stream.avail_out = BUFFER_SIZE; - - return &stream->base; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-deprecated.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-deprecated.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-deprecated.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-deprecated.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,142 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_DEPRECATED_H -#define CAIRO_DEPRECATED_H - -/* The %CAIRO_FORMAT_RGB16_565 value was added in cairo 1.2.0 as part - * of fixing cairo's xlib backend to work with X servers advertising a - * 16-bit, 565 visual. But as it turned out, adding this format to - * #cairo_format_t was not necessary, and was a mistake, (cairo's xlib - * backend can work fine with 16-bit visuals in the same way it works - * with BGR visuals without any BGR formats in - * #cairo_format_t). - * - * Additionally, the support for the RGB16_565 format was never - * completely implemented. So while this format value is currently - * deprecated, it may eventually acquire complete support in the future. - */ -#define CAIRO_FORMAT_RGB16_565 4 - -#define CAIRO_FONT_TYPE_ATSUI CAIRO_FONT_TYPE_QUARTZ - -#ifndef _CAIROINT_H_ - -/* Obsolete functions. These definitions exist to coerce the compiler - * into providing a little bit of guidance with its error - * messages. The idea is to help users port their old code without - * having to dig through lots of documentation. - * - * The first set of REPLACED_BY functions is for functions whose names - * have just been changed. So fixing these up is mechanical, (and - * automated by means of the cairo/util/cairo-api-update script. - * - * The second set of DEPRECATED_BY functions is for functions where - * the replacement is used in a different way, (ie. different - * arguments, multiple functions instead of one, etc). Fixing these up - * will require a bit more work on the user's part, (and hopefully we - * can get cairo-api-update to find these and print some guiding - * information). - */ -#define cairo_current_font_extents cairo_current_font_extents_REPLACED_BY_cairo_font_extents -#define cairo_get_font_extents cairo_get_font_extents_REPLACED_BY_cairo_font_extents -#define cairo_current_operator cairo_current_operator_REPLACED_BY_cairo_get_operator -#define cairo_current_tolerance cairo_current_tolerance_REPLACED_BY_cairo_get_tolerance -#define cairo_current_point cairo_current_point_REPLACED_BY_cairo_get_current_point -#define cairo_current_fill_rule cairo_current_fill_rule_REPLACED_BY_cairo_get_fill_rule -#define cairo_current_line_width cairo_current_line_width_REPLACED_BY_cairo_get_line_width -#define cairo_current_line_cap cairo_current_line_cap_REPLACED_BY_cairo_get_line_cap -#define cairo_current_line_join cairo_current_line_join_REPLACED_BY_cairo_get_line_join -#define cairo_current_miter_limit cairo_current_miter_limit_REPLACED_BY_cairo_get_miter_limit -#define cairo_current_matrix cairo_current_matrix_REPLACED_BY_cairo_get_matrix -#define cairo_current_target_surface cairo_current_target_surface_REPLACED_BY_cairo_get_target -#define cairo_get_status cairo_get_status_REPLACED_BY_cairo_status -#define cairo_concat_matrix cairo_concat_matrix_REPLACED_BY_cairo_transform -#define cairo_scale_font cairo_scale_font_REPLACED_BY_cairo_set_font_size -#define cairo_select_font cairo_select_font_REPLACED_BY_cairo_select_font_face -#define cairo_transform_font cairo_transform_font_REPLACED_BY_cairo_set_font_matrix -#define cairo_transform_point cairo_transform_point_REPLACED_BY_cairo_user_to_device -#define cairo_transform_distance cairo_transform_distance_REPLACED_BY_cairo_user_to_device_distance -#define cairo_inverse_transform_point cairo_inverse_transform_point_REPLACED_BY_cairo_device_to_user -#define cairo_inverse_transform_distance cairo_inverse_transform_distance_REPLACED_BY_cairo_device_to_user_distance -#define cairo_init_clip cairo_init_clip_REPLACED_BY_cairo_reset_clip -#define cairo_surface_create_for_image cairo_surface_create_for_image_REPLACED_BY_cairo_image_surface_create_for_data -#define cairo_default_matrix cairo_default_matrix_REPLACED_BY_cairo_identity_matrix -#define cairo_matrix_set_affine cairo_matrix_set_affine_REPLACED_BY_cairo_matrix_init -#define cairo_matrix_set_identity cairo_matrix_set_identity_REPLACED_BY_cairo_matrix_init_identity -#define cairo_pattern_add_color_stop cairo_pattern_add_color_stop_REPLACED_BY_cairo_pattern_add_color_stop_rgba -#define cairo_set_rgb_color cairo_set_rgb_color_REPLACED_BY_cairo_set_source_rgb -#define cairo_set_pattern cairo_set_pattern_REPLACED_BY_cairo_set_source -#define cairo_xlib_surface_create_for_pixmap_with_visual cairo_xlib_surface_create_for_pixmap_with_visual_REPLACED_BY_cairo_xlib_surface_create -#define cairo_xlib_surface_create_for_window_with_visual cairo_xlib_surface_create_for_window_with_visual_REPLACED_BY_cairo_xlib_surface_create -#define cairo_xcb_surface_create_for_pixmap_with_visual cairo_xcb_surface_create_for_pixmap_with_visual_REPLACED_BY_cairo_xcb_surface_create -#define cairo_xcb_surface_create_for_window_with_visual cairo_xcb_surface_create_for_window_with_visual_REPLACED_BY_cairo_xcb_surface_create -#define cairo_ps_surface_set_dpi cairo_ps_surface_set_dpi_REPLACED_BY_cairo_surface_set_fallback_resolution -#define cairo_pdf_surface_set_dpi cairo_pdf_surface_set_dpi_REPLACED_BY_cairo_surface_set_fallback_resolution -#define cairo_svg_surface_set_dpi cairo_svg_surface_set_dpi_REPLACED_BY_cairo_surface_set_fallback_resolution -#define cairo_atsui_font_face_create_for_atsu_font_id cairo_atsui_font_face_create_for_atsu_font_id_REPLACED_BY_cairo_quartz_font_face_create_for_atsu_font_id - -#define cairo_current_path cairo_current_path_DEPRECATED_BY_cairo_copy_path -#define cairo_current_path_flat cairo_current_path_flat_DEPRECATED_BY_cairo_copy_path_flat -#define cairo_get_path cairo_get_path_DEPRECATED_BY_cairo_copy_path -#define cairo_get_path_flat cairo_get_path_flat_DEPRECATED_BY_cairo_get_path_flat -#define cairo_set_alpha cairo_set_alpha_DEPRECATED_BY_cairo_set_source_rgba_OR_cairo_paint_with_alpha -#define cairo_show_surface cairo_show_surface_DEPRECATED_BY_cairo_set_source_surface_AND_cairo_paint -#define cairo_copy cairo_copy_DEPRECATED_BY_cairo_create_AND_MANY_INDIVIDUAL_FUNCTIONS -#define cairo_surface_set_repeat cairo_surface_set_repeat_DEPRECATED_BY_cairo_pattern_set_extend -#define cairo_surface_set_matrix cairo_surface_set_matrix_DEPRECATED_BY_cairo_pattern_set_matrix -#define cairo_surface_get_matrix cairo_surface_get_matrix_DEPRECATED_BY_cairo_pattern_get_matrix -#define cairo_surface_set_filter cairo_surface_set_filter_DEPRECATED_BY_cairo_pattern_set_filter -#define cairo_surface_get_filter cairo_surface_get_filter_DEPRECATED_BY_cairo_pattern_get_filter -#define cairo_matrix_create cairo_matrix_create_DEPRECATED_BY_cairo_matrix_t -#define cairo_matrix_destroy cairo_matrix_destroy_DEPRECATED_BY_cairo_matrix_t -#define cairo_matrix_copy cairo_matrix_copy_DEPRECATED_BY_cairo_matrix_t -#define cairo_matrix_get_affine cairo_matrix_get_affine_DEPRECATED_BY_cairo_matrix_t -#define cairo_set_target_surface cairo_set_target_surface_DEPRECATED_BY_cairo_create -#define cairo_set_target_glitz cairo_set_target_glitz_DEPRECATED_BY_cairo_glitz_surface_create -#define cairo_set_target_image cairo_set_target_image_DEPRECATED_BY_cairo_image_surface_create_for_data -#define cairo_set_target_pdf cairo_set_target_pdf_DEPRECATED_BY_cairo_pdf_surface_create -#define cairo_set_target_png cairo_set_target_png_DEPRECATED_BY_cairo_surface_write_to_png -#define cairo_set_target_ps cairo_set_target_ps_DEPRECATED_BY_cairo_ps_surface_create -#define cairo_set_target_quartz cairo_set_target_quartz_DEPRECATED_BY_cairo_quartz_surface_create -#define cairo_set_target_win32 cairo_set_target_win32_DEPRECATED_BY_cairo_win32_surface_create -#define cairo_set_target_xcb cairo_set_target_xcb_DEPRECATED_BY_cairo_xcb_surface_create -#define cairo_set_target_drawable cairo_set_target_drawable_DEPRECATED_BY_cairo_xlib_surface_create -#define cairo_get_status_string cairo_get_status_string_DEPRECATED_BY_cairo_status_AND_cairo_status_to_string -#define cairo_status_string cairo_status_string_DEPRECATED_BY_cairo_status_AND_cairo_status_to_string - -#endif - -#endif /* CAIRO_DEPRECATED_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-directfb.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-directfb.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-directfb.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-directfb.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -/* - * Environment variables affecting the backend: - * - * %CAIRO_DIRECTFB_NO_ACCEL (boolean) - * if found, disables acceleration at all - * - * %CAIRO_DIRECTFB_ARGB_FONT (boolean) - * if found, enables using ARGB fonts instead of A8 - */ - -#ifndef CAIRO_DIRECTFB_H -#define CAIRO_DIRECTFB_H - -#include - -#ifdef CAIRO_HAS_DIRECTFB_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_directfb_surface_create (IDirectFB *dfb, IDirectFBSurface *surface); - -CAIRO_END_DECLS - -#else /*CAIRO_HAS_DIRECTFB_SURFACE*/ -# error Cairo was not compiled with support for the directfb backend -#endif /*CAIRO_HAS_DIRECTFB_SURFACE*/ - -#endif /*CAIRO_DIRECTFB_H*/ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-directfb-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-directfb-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-directfb-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-directfb-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1816 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Michael Emmel - * Claudio Ciccani - */ - - -#include "cairoint.h" -#include "cairo-directfb.h" - -#include - -#include -#include -#include -#include -#include - - -/* - * Rectangle works fine. - * Bugs 361377, 359553, 359243 in Gnome BTS are caused - * by GDK/DirectFB, not by Cairo/DirectFB. - */ -#define DFB_RECTANGLES 1 - -/* - * Composite works fine. - */ -#define DFB_COMPOSITE 1 - -/* - * CompositeTrapezoids works (without antialiasing). - */ -#define DFB_COMPOSITE_TRAPEZOIDS 0 - -/* - * ShowGlyphs works fine. - */ -#define DFB_SHOW_GLYPHS 1 - - -D_DEBUG_DOMAIN (Cairo_DirectFB, "Cairo/DirectFB", "Cairo DirectFB backend"); - -/*****************************************************************************/ - - -typedef struct _cairo_directfb_surface { - cairo_surface_t base; - cairo_format_t format; - cairo_content_t content; - - IDirectFB *dfb; - IDirectFBSurface *dfbsurface; - IDirectFBSurface *tmpsurface; - - /* color buffer */ - cairo_surface_t *color; - - DFBRegion *clips; - int n_clips; - - int width; - int height; - - cairo_bool_t local; -} cairo_directfb_surface_t; - - -typedef struct _cairo_directfb_font_cache { - IDirectFB *dfb; - IDirectFBSurface *dfbsurface; - - int width; - int height; - - /* coordinates within the surface - * of the last loaded glyph */ - int x; - int y; -} cairo_directfb_font_cache_t; - - -static cairo_surface_backend_t cairo_directfb_surface_backend; - -/*****************************************************************************/ - -static int _directfb_argb_font = 0; - -/*****************************************************************************/ - - -#define RUN_CLIPPED( surface, clip, func ) {\ - if ((surface)->clips) {\ - int k;\ - for (k = 0; k < (surface)->n_clips; k++) {\ - if (clip) {\ - DFBRegion reg = (surface)->clips[k];\ - DFBRegion *cli = (clip);\ - if (reg.x2 < cli->x1 || reg.y2 < cli->y1 ||\ - reg.x1 > cli->x2 || reg.y1 > cli->y2)\ - continue;\ - if (reg.x1 < cli->x1)\ - reg.x1 = cli->x1;\ - if (reg.y1 < cli->y1)\ - reg.y1 = cli->y1;\ - if (reg.x2 > cli->x2)\ - reg.x2 = cli->x2;\ - if (reg.y2 > cli->y2)\ - reg.y2 = cli->y2;\ - (surface)->dfbsurface->SetClip ((surface)->dfbsurface, ®);\ - }\ - else {\ - (surface)->dfbsurface->SetClip ((surface)->dfbsurface,\ - &(surface)->clips[k]);\ - }\ - func;\ - }\ - }\ - else {\ - (surface)->dfbsurface->SetClip ((surface)->dfbsurface, clip);\ - func;\ - }\ -} - -#define TRANSFORM_POINT2X( m, x, y, ret_x, ret_y ) {\ - double _x = (x);\ - double _y = (y);\ - (ret_x) = (_x * (m).xx + (m).x0);\ - (ret_y) = (_y * (m).yy + (m).y0);\ -} - -#define TRANSFORM_POINT3X( m, x, y, ret_x, ret_y ) {\ - double _x = (x);\ - double _y = (y);\ - (ret_x) = (_x * (m).xx + _y * (m).xy + (m).x0);\ - (ret_y) = (_x * (m).yx + _y * (m).yy + (m).y0);\ -} - -/* XXX: A1 has a different bits ordering in cairo. - * Probably we should drop it. - */ - -static cairo_content_t -_directfb_format_to_content (DFBSurfacePixelFormat format) -{ - if (DFB_PIXELFORMAT_HAS_ALPHA(format)) { - if (DFB_COLOR_BITS_PER_PIXEL(format)) - return CAIRO_CONTENT_COLOR_ALPHA; - - return CAIRO_CONTENT_ALPHA; - } - - return CAIRO_CONTENT_COLOR; -} - - -static inline DFBSurfacePixelFormat -_cairo_to_directfb_format (cairo_format_t format) -{ - switch (format) { - case CAIRO_FORMAT_RGB24: - return DSPF_RGB32; - case CAIRO_FORMAT_ARGB32: - return DSPF_ARGB; - case CAIRO_FORMAT_A8: - return DSPF_A8; - case CAIRO_FORMAT_A1: - return DSPF_A1; - default: - break; - } - - return -1; -} - -static inline cairo_format_t -_directfb_to_cairo_format (DFBSurfacePixelFormat format) -{ - switch (format) { - case DSPF_RGB32: - return CAIRO_FORMAT_RGB24; - case DSPF_ARGB: - return CAIRO_FORMAT_ARGB32; - case DSPF_A8: - return CAIRO_FORMAT_A8; - case DSPF_A1: - return CAIRO_FORMAT_A1; - default: - break; - } - - return -1; -} - - -static cairo_status_t -_directfb_get_operator (cairo_operator_t operator, - DFBSurfaceBlendFunction *ret_srcblend, - DFBSurfaceBlendFunction *ret_dstblend ) -{ - DFBSurfaceBlendFunction srcblend = DSBF_ONE; - DFBSurfaceBlendFunction dstblend = DSBF_ZERO; - - switch (operator) { - case CAIRO_OPERATOR_CLEAR: - srcblend = DSBF_ZERO; - dstblend = DSBF_ZERO; - break; - case CAIRO_OPERATOR_SOURCE: - srcblend = DSBF_ONE; - dstblend = DSBF_ZERO; - break; - case CAIRO_OPERATOR_OVER: - srcblend = DSBF_ONE; - dstblend = DSBF_INVSRCALPHA; - break; - case CAIRO_OPERATOR_IN: - srcblend = DSBF_DESTALPHA; - dstblend = DSBF_ZERO; - break; - case CAIRO_OPERATOR_OUT: - srcblend = DSBF_INVDESTALPHA; - dstblend = DSBF_ZERO; - break; - case CAIRO_OPERATOR_ATOP: - srcblend = DSBF_DESTALPHA; - dstblend = DSBF_INVSRCALPHA; - break; - case CAIRO_OPERATOR_DEST: - srcblend = DSBF_ZERO; - dstblend = DSBF_ONE; - break; - case CAIRO_OPERATOR_DEST_OVER: - srcblend = DSBF_INVDESTALPHA; - dstblend = DSBF_ONE; - break; - case CAIRO_OPERATOR_DEST_IN: - srcblend = DSBF_ZERO; - dstblend = DSBF_SRCALPHA; - break; - case CAIRO_OPERATOR_DEST_OUT: - srcblend = DSBF_ZERO; - dstblend = DSBF_INVSRCALPHA; - break; - case CAIRO_OPERATOR_DEST_ATOP: - srcblend = DSBF_INVDESTALPHA; - dstblend = DSBF_SRCALPHA; - break; - case CAIRO_OPERATOR_XOR: - srcblend = DSBF_INVDESTALPHA; - dstblend = DSBF_INVSRCALPHA; - break; - case CAIRO_OPERATOR_ADD: - srcblend = DSBF_ONE; - dstblend = DSBF_ONE; - break; - case CAIRO_OPERATOR_SATURATE: - srcblend = DSBF_SRCALPHASAT; - dstblend = DSBF_ONE; - break; - default: - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - if (ret_srcblend) - *ret_srcblend = srcblend; - if (ret_dstblend) - *ret_dstblend = dstblend; - - return CAIRO_STATUS_SUCCESS; -} - -static IDirectFBSurface* -_directfb_buffer_surface_create (IDirectFB *dfb, - DFBSurfacePixelFormat format, - int width, - int height) -{ - IDirectFBSurface *buffer; - DFBSurfaceDescription dsc; - DFBResult ret; - - dsc.flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT; - dsc.width = width; - dsc.height = height; - dsc.pixelformat = format; - - ret = dfb->CreateSurface (dfb, &dsc, &buffer); - if (ret) { - DirectFBError ("IDirectFB::CreateSurface()", ret); - return NULL; - } - - return buffer; -} - -static cairo_status_t -_directfb_acquire_surface (cairo_directfb_surface_t *surface, - cairo_rectangle_int_t *intrest_rec, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra, - DFBSurfaceLockFlags lock_flags) -{ - IDirectFBSurface *buffer = NULL; - DFBRectangle source_rect; - cairo_format_t cairo_format; - void *data; - int pitch; - - if (surface->format == (cairo_format_t) -1) { - DFBSurfaceCapabilities caps; - - if (intrest_rec) { - source_rect.x = intrest_rec->x; - source_rect.y = intrest_rec->y; - source_rect.w = intrest_rec->width; - source_rect.h = intrest_rec->height; - } else { - source_rect.x = 0; - source_rect.y = 0; - surface->dfbsurface->GetSize (surface->dfbsurface, - &source_rect.w, &source_rect.h); - } - - if (surface->tmpsurface) { - int w, h; - surface->tmpsurface->GetSize (surface->tmpsurface, &w, &h); - if (w < source_rect.w || h < source_rect.h) { - surface->tmpsurface->Release (surface->tmpsurface); - surface->tmpsurface = NULL; - } - } - - cairo_format = _cairo_format_from_content (surface->content); - if (!surface->tmpsurface) { - D_DEBUG_AT (Cairo_DirectFB, "Allocating buffer for surface %p.\n", surface); - - surface->tmpsurface = - _directfb_buffer_surface_create (surface->dfb, - _cairo_to_directfb_format (cairo_format), - source_rect.w, source_rect.h); - if (!surface->tmpsurface) - goto ERROR; - } - buffer = surface->tmpsurface; - - surface->dfbsurface->GetCapabilities (surface->dfbsurface, &caps); - if (caps & DSCAPS_FLIPPING) { - DFBRegion region = { .x1 = source_rect.x, .y1 = source_rect.y, - .x2 = source_rect.x + source_rect.w - 1, - .y2 = source_rect.y + source_rect.h - 1 }; - surface->dfbsurface->Flip (surface->dfbsurface, ®ion, DSFLIP_BLIT); - } - buffer->Blit (buffer, surface->dfbsurface, &source_rect, 0, 0); - } - else { - /*might be a subsurface get the offset*/ - surface->dfbsurface->GetVisibleRectangle (surface->dfbsurface, &source_rect); - cairo_format = surface->format; - buffer = surface->dfbsurface; - } - - *image_extra = buffer; - - if (buffer->Lock (buffer, lock_flags, &data, &pitch)) { - D_DEBUG_AT (Cairo_DirectFB, "Couldn't lock surface!\n"); - goto ERROR; - } - - *image_out = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (data, cairo_format, - source_rect.w, source_rect.h, pitch); - if (*image_out == NULL) - goto ERROR; - - if (image_rect_out) { - image_rect_out->x = source_rect.x; - image_rect_out->y = source_rect.y; - image_rect_out->width = source_rect.w; - image_rect_out->height = source_rect.h; - } else { - /* lock for read */ - cairo_surface_t *sur = &((*image_out)->base); - /* might be a subsurface */ - if (buffer == surface->dfbsurface) - cairo_surface_set_device_offset (sur, source_rect.x, source_rect.y); - } - - return CAIRO_STATUS_SUCCESS; - -ERROR: - *image_extra = NULL; - if (buffer) { - buffer->Unlock (buffer); - if (buffer != surface->dfbsurface) - buffer->Release (buffer); - } - return _cairo_error (CAIRO_STATUS_NO_MEMORY); -} - - - -static cairo_surface_t * -_cairo_directfb_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - cairo_directfb_surface_t *source = abstract_src; - cairo_directfb_surface_t *surface; - cairo_format_t format; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( src=%p, content=0x%x, width=%d, height=%d).\n", - __FUNCTION__, source, content, width, height); - - width = (width <= 0) ? 1 : width; - height = (height<= 0) ? 1 : height; - - format = _cairo_format_from_content (content); - surface = calloc (1, sizeof(cairo_directfb_surface_t)); - if (!surface) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - surface->dfb = source->dfb; - - if (width < 8 || height < 8) { - IDirectFBSurface *tmp; - /* Some cards (e.g. Matrox) don't support surfaces smaller than 8x8 */ - tmp = _directfb_buffer_surface_create (surface->dfb, - _cairo_to_directfb_format (format), - MAX (width, 8), MAX (height, 8)); - if (tmp) { - DFBRectangle rect = { .x=0, .y=0, .w=width, .h=height }; - tmp->GetSubSurface (tmp, &rect, &surface->dfbsurface); - tmp->Release (tmp); - } - } - else { - surface->dfbsurface = _directfb_buffer_surface_create (surface->dfb, - _cairo_to_directfb_format (format), width, height); - } - - if (!surface->dfbsurface) { - D_ASSERT (surface->dfbsurface != NULL); - free (surface); - return NULL; - } - - _cairo_surface_init (&surface->base, &cairo_directfb_surface_backend, content); - surface->format = format; - surface->content = content; - surface->width = width; - surface->height = height; - surface->local = true; - - return &surface->base; -} - -static cairo_status_t -_cairo_directfb_surface_finish (void *data) -{ - cairo_directfb_surface_t *surface = (cairo_directfb_surface_t *)data; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p ).\n", __FUNCTION__, surface); - - if (surface->clips) { - free (surface->clips); - surface->clips = NULL; - surface->n_clips = 0; - } - - if (surface->color) { - cairo_surface_destroy (surface->color); - surface->color = NULL; - } - - if (surface->tmpsurface) { - surface->tmpsurface->Release (surface->tmpsurface); - surface->tmpsurface = NULL; - } - - if (surface->dfbsurface) { - surface->dfbsurface->Release (surface->dfbsurface); - surface->dfbsurface = NULL; - } - - if (surface->dfb) - surface->dfb = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_directfb_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_directfb_surface_t *surface = abstract_surface; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p ).\n", __FUNCTION__, surface); - - return _directfb_acquire_surface (surface, NULL, image_out, - NULL, image_extra, DSLF_READ); -} - -static void -_cairo_directfb_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_directfb_surface_t *surface = abstract_surface; - IDirectFBSurface *buffer = image_extra; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p ).\n", __FUNCTION__, surface); - - buffer->Unlock (buffer); - - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_cairo_directfb_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra) -{ - cairo_directfb_surface_t *surface = abstract_surface; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p, interest_rect={ %d %d %d %d } ).\n", - __FUNCTION__, surface, - interest_rect ? interest_rect->x : 0, - interest_rect ? interest_rect->y : 0, - interest_rect ? interest_rect->width : surface->width, - interest_rect ? interest_rect->height : surface->height); - - return _directfb_acquire_surface (surface, interest_rect, image_out, - image_rect_out, image_extra, DSLF_READ | DSLF_WRITE); -} - -static void -_cairo_directfb_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - cairo_directfb_surface_t *surface = abstract_surface; - IDirectFBSurface *buffer = image_extra; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p ).\n", __FUNCTION__, surface); - - buffer->Unlock (buffer); - - if (surface->dfbsurface != buffer) { - DFBRegion region = { .x1 = interest_rect->x, .y1 = interest_rect->y, - .x2 = interest_rect->x+interest_rect->width-1, - .y2 = interest_rect->y+interest_rect->height-1 }; - surface->dfbsurface->SetClip (surface->dfbsurface, ®ion); - surface->dfbsurface->SetBlittingFlags (surface->dfbsurface, DSBLIT_NOFX); - surface->dfbsurface->Blit (surface->dfbsurface, buffer, - NULL, image_rect->x, image_rect->y); - } - - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_cairo_directfb_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_directfb_surface_t *surface = abstract_surface; - cairo_directfb_surface_t *clone; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p, src=%p ).\n", __FUNCTION__, surface, src); - - if (src->backend == surface->base.backend) { - cairo_surface_reference (src); - *clone_out = src; - - return CAIRO_STATUS_SUCCESS; - } - else if (_cairo_surface_is_image (src)) { - cairo_image_surface_t *image_src = (cairo_image_surface_t *) src; - unsigned char *dst, *src = image_src->data; - int pitch; - int i, j; - DFBResult ret; - - clone = (cairo_directfb_surface_t *) - _cairo_directfb_surface_create_similar (surface, - _cairo_content_from_format (image_src->format), - image_src->width, image_src->height); - if (!clone) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - ret = clone->dfbsurface->Lock (clone->dfbsurface, - DSLF_WRITE, (void *)&dst, &pitch); - if (ret) { - DirectFBError ("IDirectFBSurface::Lock()", ret); - cairo_surface_destroy ((cairo_surface_t *)clone); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - dst += pitch * src_y; - src += image_src->stride * src_y; - - if (image_src->format == CAIRO_FORMAT_A1) { - /* A1 -> A8 */ - for (i = 0; i < height; i++) { - for (j = src_x; j < src_x + width; j++) - dst[j] = (src[j>>3] & (1 << (j&7))) ? 0xff : 0x00; - dst += pitch; - src += image_src->stride; - } - } - else { - int len; - - if (image_src->format == CAIRO_FORMAT_A8) { - dst += src_x; - src += src_x; - len = width; - } else { - dst += src_x * 4; - src += src_x * 4; - len = width * 4; - } - - for (i = 0; i < height; i++) { - direct_memcpy (dst, src, len); - dst += pitch; - src += image_src->stride; - } - } - - clone->dfbsurface->Unlock (clone->dfbsurface); - - *clone_out = &clone->base; - - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -#if DFB_COMPOSITE || DFB_COMPOSITE_TRAPEZOIDS -static cairo_int_status_t -_directfb_prepare_composite (cairo_directfb_surface_t *dst, - cairo_pattern_t *src_pattern, - cairo_pattern_t *mask_pattern, - cairo_operator_t op, - int *src_x, int *src_y, - int *mask_x, int *mask_y, - unsigned int width, - unsigned int height, - cairo_directfb_surface_t **ret_src, - cairo_surface_attributes_t *ret_src_attr) -{ - cairo_directfb_surface_t *src; - cairo_surface_attributes_t src_attr; - cairo_status_t ret; - DFBSurfaceBlittingFlags flags; - DFBSurfaceBlendFunction sblend; - DFBSurfaceBlendFunction dblend; - DFBColor color; - - if (_directfb_get_operator (op, &sblend, &dblend)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (mask_pattern) { - cairo_solid_pattern_t *pattern; - - if (mask_pattern->type != CAIRO_PATTERN_TYPE_SOLID) { - cairo_pattern_t *tmp; - int tmp_x, tmp_y; - - if (src_pattern->type != CAIRO_PATTERN_TYPE_SOLID || - sblend == DSBF_INVDESTALPHA) /* Doesn't work correctly */ - return CAIRO_INT_STATUS_UNSUPPORTED; - - D_DEBUG_AT (Cairo_DirectFB, "Replacing src pattern by mask pattern.\n"); - - tmp = src_pattern; - tmp_x = *src_x; tmp_y = *src_y; - - src_pattern = mask_pattern; - *src_x = *mask_x; *src_y = *mask_y; - - mask_pattern = tmp; - *mask_x = tmp_x; *mask_y = tmp_y; - - if (sblend == DSBF_ONE) { - sblend = DSBF_SRCALPHA; - /*dblend = DSBF_INVSRCALPHA;*/ - } - } - - pattern = (cairo_solid_pattern_t *)mask_pattern; - color.a = pattern->color.alpha_short >> 8; - color.r = pattern->color.red_short >> 8; - color.g = pattern->color.green_short >> 8; - color.b = pattern->color.blue_short >> 8; - } - else { - color.a = color.r = color.g = color.b = 0xff; - } - - if (src_pattern->type == CAIRO_PATTERN_TYPE_SOLID) { - cairo_solid_pattern_t *pattern = (cairo_solid_pattern_t *)src_pattern; - - if (!dst->color) { - dst->color = _cairo_directfb_surface_create_similar (dst, - CAIRO_CONTENT_COLOR_ALPHA, 1, 1); - if (!dst->color) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - src = (cairo_directfb_surface_t *)dst->color; - src->dfbsurface->Clear (src->dfbsurface, - pattern->color.red_short >> 8, - pattern->color.green_short >> 8, - pattern->color.blue_short >> 8, - pattern->color.alpha_short >> 8); - - src_attr.matrix = src_pattern->matrix; - src_attr.extend = CAIRO_EXTEND_NONE; - src_attr.filter = CAIRO_FILTER_NEAREST; - src_attr.x_offset = - src_attr.y_offset = 0; - } - else { - ret = _cairo_pattern_acquire_surface (src_pattern, &dst->base, - *src_x, *src_y, width, height, - (cairo_surface_t **)&src, &src_attr); - if (ret) - return ret; - } - - if (src->content == CAIRO_CONTENT_COLOR) { - if (sblend == DSBF_SRCALPHA) - sblend = DSBF_ONE; - else if (sblend == DSBF_INVSRCALPHA) - sblend = DSBF_ZERO; - - if (dblend == DSBF_SRCALPHA) - dblend = DSBF_ONE; - else if (dblend == DSBF_INVSRCALPHA) - dblend = DSBF_ZERO; - } - if (dst->content == CAIRO_CONTENT_COLOR) { - if (sblend == DSBF_DESTALPHA) - sblend = DSBF_ONE; - else if (sblend == DSBF_INVDESTALPHA) - sblend = DSBF_ZERO; - - if (dblend == DSBF_DESTALPHA) - dblend = DSBF_ONE; - else if (dblend == DSBF_INVDESTALPHA) - dblend = DSBF_ZERO; - } - - flags = (sblend == DSBF_ONE && dblend == DSBF_ZERO) - ? DSBLIT_NOFX : DSBLIT_BLEND_ALPHACHANNEL; - if (color.a != 0xff) - flags |= DSBLIT_BLEND_COLORALPHA; - if (color.r != 0xff || color.g != 0xff || color.b != 0xff) - flags |= DSBLIT_COLORIZE; - - dst->dfbsurface->SetBlittingFlags (dst->dfbsurface, flags); - - if (flags & (DSBLIT_BLEND_ALPHACHANNEL | DSBLIT_BLEND_COLORALPHA)) { - dst->dfbsurface->SetSrcBlendFunction (dst->dfbsurface, sblend); - dst->dfbsurface->SetDstBlendFunction (dst->dfbsurface, dblend); - } - - if (flags & (DSBLIT_BLEND_COLORALPHA | DSBLIT_COLORIZE)) - dst->dfbsurface->SetColor (dst->dfbsurface, color.r, color.g, color.b, color.a); - - *ret_src = src; - *ret_src_attr = src_attr; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_directfb_finish_composite (cairo_directfb_surface_t *dst, - cairo_pattern_t *src_pattern, - cairo_surface_t *src, - cairo_surface_attributes_t *src_attr) -{ - if (src != dst->color) - _cairo_pattern_release_surface (src_pattern, src, src_attr); -} -#endif /* DFB_COMPOSITE || DFB_COMPOSITE_TRAPEZOIDS */ - -#if DFB_COMPOSITE -static DFBAccelerationMask -_directfb_categorize_operation (cairo_surface_attributes_t *src_attr) -{ - cairo_matrix_t *m = &src_attr->matrix; - - if (m->xy != 0 || m->yx != 0 || m->xx < 0 || m->yy < 0) { - if (src_attr->extend != CAIRO_EXTEND_NONE) - return DFXL_NONE; - return DFXL_TEXTRIANGLES; - } - - if (m->xx != 1 || m->yy != 1) { - if (src_attr->extend != CAIRO_EXTEND_NONE) - return DFXL_NONE; - return DFXL_STRETCHBLIT; - } - - if (src_attr->extend != CAIRO_EXTEND_NONE && - src_attr->extend != CAIRO_EXTEND_REPEAT) - return DFXL_NONE; - - return DFXL_BLIT; -} - -static cairo_int_status_t -_cairo_directfb_surface_composite (cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_pattern_t *mask_pattern, - void *abstract_dst, - int src_x, int src_y, - int mask_x, int mask_y, - int dst_x, int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_directfb_surface_t *dst = abstract_dst; - cairo_directfb_surface_t *src; - cairo_surface_attributes_t src_attr; - DFBAccelerationMask accel, mask; - cairo_int_status_t ret; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( op=%d, src_pattern=%p, mask_pattern=%p, dst=%p," - " src_x=%d, src_y=%d, mask_x=%d, mask_y=%d, dst_x=%d," - " dst_y=%d, width=%u, height=%u ).\n", - __FUNCTION__, op, src_pattern, mask_pattern, dst, - src_x, src_y, mask_x, mask_y, dst_x, dst_y, width, height); - - ret = _directfb_prepare_composite (dst, src_pattern, mask_pattern, op, - &src_x, &src_y, &mask_x, &mask_y, - width, height, &src, &src_attr); - if (ret) - return ret; - - accel = _directfb_categorize_operation (&src_attr); - - dst->dfbsurface->GetAccelerationMask (dst->dfbsurface, src->dfbsurface, &mask); - if (!(mask & accel)) { - D_DEBUG_AT (Cairo_DirectFB, "No acceleration (%08x)!\n", accel); - if (accel != DFXL_BLIT) { - _directfb_finish_composite (dst, src_pattern, &src->base, &src_attr); - return CAIRO_INT_STATUS_UNSUPPORTED; - } - } - - src_x += src_attr.x_offset; - src_y += src_attr.y_offset; - - switch (accel) { - case DFXL_BLIT: { - DFBRectangle sr; - - sr.x = src_x + _cairo_lround (src_attr.matrix.x0); - sr.y = src_y + _cairo_lround (src_attr.matrix.y0); - sr.w = width; - sr.h = height; - - if (src_attr.extend == CAIRO_EXTEND_NONE) { - D_DEBUG_AT (Cairo_DirectFB, "Running Blit().\n"); - - RUN_CLIPPED( dst, NULL, - dst->dfbsurface->Blit (dst->dfbsurface, - src->dfbsurface, &sr, dst_x, dst_y)); - } - else if (src_attr.extend == CAIRO_EXTEND_REPEAT) { - DFBRegion clip; - - clip.x1 = dst_x; - clip.y1 = dst_y; - clip.x2 = dst_x + width - 1; - clip.y2 = dst_y + height - 1; - - D_DEBUG_AT (Cairo_DirectFB, "Running TileBlit().\n"); - - RUN_CLIPPED( dst, &clip, - dst->dfbsurface->TileBlit (dst->dfbsurface, - src->dfbsurface, &sr, dst_x, dst_y)); - } - } break; - - case DFXL_STRETCHBLIT: { - DFBRectangle sr, dr; - double x1, y1, x2, y2; - - TRANSFORM_POINT2X (src_attr.matrix, - src_x, src_y, x1, y1); - TRANSFORM_POINT2X (src_attr.matrix, - src_x+width, src_y+height, x2, y2); - - sr.x = _cairo_lround (x1); - sr.y = _cairo_lround (y1); - sr.w = _cairo_lround (x2-x1); - sr.h = _cairo_lround (y2-y1); - - dr.x = dst_x; - dr.y = dst_y; - dr.w = width; - dr.h = height; - - D_DEBUG_AT (Cairo_DirectFB, "Running StretchBlit().\n"); - - RUN_CLIPPED (dst, NULL, - dst->dfbsurface->StretchBlit (dst->dfbsurface, - src->dfbsurface, &sr, &dr)); - } break; - - case DFXL_TEXTRIANGLES: { - DFBRegion clip; - DFBVertex v[4]; - float x1, y1, x2, y2; - int w, h; - - if (cairo_matrix_invert (&src_attr.matrix) != CAIRO_STATUS_SUCCESS) { - ret = CAIRO_INT_STATUS_UNSUPPORTED; - break; - } - - x1 = src_attr.x_offset; - y1 = src_attr.y_offset; - x2 = src->width - x1; - y2 = src->height - y1; - - src->dfbsurface->GetSize (src->dfbsurface, &w, &h); - - TRANSFORM_POINT3X (src_attr.matrix, - x1, y1, v[0].x, v[0].y); - v[0].z = 0; - v[0].w = 1; - v[0].s = x1 / w; - v[0].t = y1 / h; - - TRANSFORM_POINT3X (src_attr.matrix, - x2, y1, v[1].x, v[1].y); - v[1].z = 0; - v[1].w = 1; - v[1].s = x2 / w; - v[1].t = y1 / h; - - TRANSFORM_POINT3X (src_attr.matrix, - x2, y2, v[2].x, v[2].y); - v[2].z = 0; - v[2].w = 1; - v[2].s = x2 / w; - v[2].t = y2 / h; - - TRANSFORM_POINT3X (src_attr.matrix, - x1, y2, v[3].x, v[3].y); - v[3].z = 0; - v[3].w = 1; - v[3].s = x1 / w; - v[3].t = y2 / h; - - clip.x1 = dst_x; - clip.y1 = dst_y; - clip.x2 = dst_x + width - 1; - clip.y2 = dst_y + height - 1; - - D_DEBUG_AT (Cairo_DirectFB, "Running TextureTriangles().\n"); - - RUN_CLIPPED (dst, &clip, - dst->dfbsurface->TextureTriangles (dst->dfbsurface, - src->dfbsurface, v, NULL, 4, DTTF_FAN)); - } break; - - default: - D_BUG ("Unexpected operation"); - break; - } - - _directfb_finish_composite (dst, src_pattern, &src->base, &src_attr); - - return ret; -} -#endif /* DFB_COMPOSITE */ - -#if DFB_RECTANGLES -static cairo_int_status_t -_cairo_directfb_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int n_rects) -{ - cairo_directfb_surface_t *dst = abstract_surface; - DFBSurfaceDrawingFlags flags; - DFBSurfaceBlendFunction sblend; - DFBSurfaceBlendFunction dblend; - DFBRectangle r[n_rects]; - int i; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( dst=%p, op=%d, color=%p, rects=%p, n_rects=%d ).\n", - __FUNCTION__, dst, op, color, rects, n_rects); - - if (_directfb_get_operator (op, &sblend, &dblend)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (color->alpha_short >= 0xff00) { - if (sblend == DSBF_SRCALPHA) - sblend = DSBF_ONE; - else if (sblend == DSBF_INVSRCALPHA) - sblend = DSBF_ZERO; - - if (dblend == DSBF_SRCALPHA) - dblend = DSBF_ONE; - else if (dblend == DSBF_INVSRCALPHA) - dblend = DSBF_ZERO; - } - if (dst->content == CAIRO_CONTENT_COLOR) { - if (sblend == DSBF_DESTALPHA) - sblend = DSBF_ONE; - else if (sblend == DSBF_INVDESTALPHA) - sblend = DSBF_ZERO; - - if (dblend == DSBF_DESTALPHA) - dblend = DSBF_ONE; - else if (dblend == DSBF_INVDESTALPHA) - dblend = DSBF_ZERO; - } - - flags = (sblend == DSBF_ONE && dblend == DSBF_ZERO) ? DSDRAW_NOFX : DSDRAW_BLEND; - dst->dfbsurface->SetDrawingFlags (dst->dfbsurface, flags); - if (flags & DSDRAW_BLEND) { - dst->dfbsurface->SetSrcBlendFunction (dst->dfbsurface, sblend); - dst->dfbsurface->SetDstBlendFunction (dst->dfbsurface, dblend); - } - - dst->dfbsurface->SetColor (dst->dfbsurface, - color->red_short >> 8, - color->green_short >> 8, - color->blue_short >> 8, - color->alpha_short >> 8 ); - - for (i = 0; i < n_rects; i++) { - r[i].x = rects[i].x; - r[i].y = rects[i].y; - r[i].w = rects[i].width; - r[i].h = rects[i].height; - } - - RUN_CLIPPED (dst, NULL, - dst->dfbsurface->FillRectangles (dst->dfbsurface, r, n_rects)); - - return CAIRO_STATUS_SUCCESS; -} -#endif - -#if DFB_COMPOSITE_TRAPEZOIDS -static cairo_int_status_t -_cairo_directfb_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - void *abstract_dst, - cairo_antialias_t antialias, - int src_x, int src_y, - int dst_x, int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps ) -{ - cairo_directfb_surface_t *dst = abstract_dst; - cairo_directfb_surface_t *src; - cairo_surface_attributes_t src_attr; - cairo_status_t ret; - DFBAccelerationMask accel; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( op=%d, pattern=%p, dst=%p, antialias=%d," - " src_x=%d, src_y=%d, dst_x=%d, dst_y=%d," - " width=%u, height=%u, traps=%p, num_traps=%d ).\n", - __FUNCTION__, op, pattern, dst, antialias, - src_x, src_y, dst_x, dst_y, width, height, traps, num_traps); - - if (antialias != CAIRO_ANTIALIAS_NONE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Textures are not supported yet. */ - if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) - return CAIRO_INT_STATUS_UNSUPPORTED; - - ret = _directfb_prepare_composite (dst, pattern, NULL, op, - &src_x, &src_y, NULL, NULL, - width, height, &src, &src_attr); - if (ret) - return ret; - - dst->dfbsurface->GetAccelerationMask (dst->dfbsurface, src->dfbsurface, &accel); - - ret = CAIRO_INT_STATUS_UNSUPPORTED; - - if (accel & DFXL_TEXTRIANGLES) { - DFBVertex vertex[6*num_traps]; - DFBVertex *v = &vertex[0]; - int n; - -#define ADD_TRI(id, x1, y1, s1, t1, x2, y2, s2, t2, x3, y3, s3, t3) {\ - const int p = (id)*3;\ - v[p+0].x=(x1); v[p+0].y=(y1); v[p+0].z=0; v[p+0].w=1; v[p+0].s=(s1); v[p+0].t=(t1);\ - v[p+1].x=(x2); v[p+1].y=(y2); v[p+1].z=0; v[p+1].w=1; v[p+1].s=(s2); v[p+1].t=(t2);\ - v[p+2].x=(x3); v[p+2].y=(y3); v[p+2].z=0; v[p+2].w=1; v[p+2].s=(s3); v[p+2].t=(t3);\ -} - - for (n = 0; num_traps; num_traps--) { - float lx1, ly1, lx2, ly2; - float rx1, ry1, rx2, ry2; - - /* XXX: Do we need to validate the trapezoid? */ - - lx1 = traps->left.p1.x/65536.0; - ly1 = traps->left.p1.y/65536.0; - lx2 = traps->left.p2.x/65536.0; - ly2 = traps->left.p2.y/65536.0; - rx1 = traps->right.p1.x/65536.0; - ry1 = traps->right.p1.y/65536.0; - rx2 = traps->right.p2.x/65536.0; - ry2 = traps->right.p2.y/65536.0; - - if (traps->left.p1.y < traps->top) { - float y = traps->top/65536.0; - if (lx2 != lx1) - lx1 = (y - ly1) * (lx2 - lx1) / (ly2 - ly1) + lx1; - ly1 = y; - } - if (traps->left.p2.y > traps->bottom) { - float y = traps->bottom/65536.0; - if (lx2 != lx1) - lx2 = (y - ly1) * (lx2 - lx1) / (ly2 - ly1) + lx1; - ly2 = y; - } - - if (traps->right.p1.y < traps->top) { - float y = traps->top/65536.0; - if (rx2 != rx1) - rx1 = (y - ry1) * (rx2 - rx1) / (ry2 - ry1) + rx1; - ry1 = y; - } - if (traps->right.p2.y > traps->bottom) { - float y = traps->bottom/65536.0; - if (rx2 != rx1) - rx2 = (y - ry1) * (rx2 - rx1) / (ry2 - ry1) + rx1; - ry2 = y; - } - - if (lx1 == rx1 && ly1 == ry1) { - ADD_TRI (0, lx2, ly2, 0, 0, - lx1, ly1, 0, 0, - rx2, ry2, 0, 0 ); - v += 3; - n += 3; - } - else if (lx2 == rx2 && ly2 == ry2) { - ADD_TRI (0, lx1, ly1, 0, 0, - lx2, ly2, 0, 0, - rx1, ry1, 0, 0 ); - v += 3; - n += 3; - } - else { - ADD_TRI (0, lx1, ly1, 0, 0, - rx1, ry1, 0, 0, - lx2, ly2, 0, 0); - ADD_TRI (1, lx2, ly2, 0, 0, - rx1, ry1, 0, 0, - rx2, ry2, 0, 0); - v += 6; - n += 6; - } - - traps++; - } - -#undef ADD_TRI - - D_DEBUG_AT (Cairo_DirectFB, "Running TextureTriangles().\n"); - - RUN_CLIPPED (dst, NULL, - dst->dfbsurface->TextureTriangles (dst->dfbsurface, src->dfbsurface, - vertex, NULL, n, DTTF_LIST)); - - ret = CAIRO_STATUS_SUCCESS; - } - - _directfb_finish_composite (dst, pattern, &src->base, &src_attr); - - return ret; -} -#endif /* DFB_COMPOSITE_TRAPEZOIDS */ - -static cairo_int_status_t -_cairo_directfb_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - cairo_directfb_surface_t *surface = abstract_surface; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p, region=%p ).\n", - __FUNCTION__, surface, region); - - if (region) { - cairo_box_int_t *boxes; - int n_boxes; - cairo_status_t status; - int i; - - status = _cairo_region_get_boxes (region, &n_boxes, &boxes); - if (status) - return status; - - if (surface->n_clips != n_boxes) { - if (surface->clips) - free (surface->clips); - - surface->clips = _cairo_malloc_ab (n_boxes, sizeof(DFBRegion)); - if (!surface->clips) { - surface->n_clips = 0; - _cairo_region_boxes_fini (region, boxes); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - surface->n_clips = n_boxes; - } - - for (i = 0; i < n_boxes; i++) { - surface->clips[i].x1 = boxes[i].p1.x; - surface->clips[i].y1 = boxes[i].p1.y; - surface->clips[i].x2 = boxes[i].p2.x; - surface->clips[i].y2 = boxes[i].p2.y; - } - - _cairo_region_boxes_fini (region, boxes); - } - else { - if (surface->clips) { - free (surface->clips); - surface->clips = NULL; - surface->n_clips = 0; - } - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_directfb_abstract_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_directfb_surface_t *surface = abstract_surface; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( surface=%p, rectangle=%p ).\n", - __FUNCTION__, surface, rectangle); - - if (rectangle) { - if (!surface->local) { - surface->dfbsurface->GetSize (surface->dfbsurface, - &surface->width, &surface->height); - } - rectangle->x = 0; - rectangle->y = 0; - rectangle->width = surface->width; - rectangle->height = surface->height; - } - - return CAIRO_STATUS_SUCCESS; -} - -#if DFB_SHOW_GLYPHS -static cairo_directfb_font_cache_t* -_directfb_allocate_font_cache (IDirectFB *dfb, int width, int height) -{ - cairo_directfb_font_cache_t *cache; - - cache = calloc (1, sizeof(cairo_directfb_font_cache_t)); - if (!cache) - return NULL; - - cache->dfb = dfb; - cache->dfbsurface = _directfb_buffer_surface_create (dfb, - _directfb_argb_font ? DSPF_ARGB : DSPF_A8, width, height); - if (!cache->dfbsurface) { - free (cache); - return NULL; - } - cache->width = width; - cache->height = height; - - return cache; -} - -static void -_directfb_destroy_font_cache (cairo_directfb_font_cache_t *cache) -{ - cache->dfbsurface->Release (cache->dfbsurface); - free (cache); -} - -static cairo_status_t -_directfb_acquire_font_cache (cairo_directfb_surface_t *surface, - cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_directfb_font_cache_t **ret_cache, - DFBRectangle *rects, - DFBPoint *points, - int *ret_num ) -{ - cairo_status_t ret; - cairo_scaled_glyph_t *chars[num_glyphs]; - int num_chars = 0; - cairo_directfb_font_cache_t *cache = NULL; - int n = 0; - int x = 0; - int y = 0; - int w = 8; - int h = 8; - int i; - - if (scaled_font->surface_private) { - cache = scaled_font->surface_private; - x = cache->x; - y = cache->y; - } - - for (i = 0; i < num_glyphs; i++) { - cairo_scaled_glyph_t *scaled_glyph; - cairo_image_surface_t *img; - - ret = _cairo_scaled_glyph_lookup (scaled_font, glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - if (ret) - return ret; - - img = scaled_glyph->surface; - switch (img->format) { - case CAIRO_FORMAT_A1: - case CAIRO_FORMAT_A8: - case CAIRO_FORMAT_ARGB32: - break; - default: - D_DEBUG_AT (Cairo_DirectFB, - "Unsupported font format %d!\n", img->format); - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - points[n].x = _cairo_lround (glyphs[i].x - img->base.device_transform.x0); - points[n].y = _cairo_lround (glyphs[i].y - img->base.device_transform.y0); - - if (points[n].x >= surface->width || - points[n].y >= surface->height || - points[n].x+img->width <= 0 || - points[n].y+img->height <= 0) - continue; - - if (!scaled_glyph->surface_private) { - DFBRectangle *rect; - - if (x+img->width > 2048) { - x = 0; - y = h; - h = 0; - } - - rects[n].x = x; - rects[n].y = y; - rects[n].w = img->width; - rects[n].h = img->height; - - x += img->width; - h = MAX (h, img->height); - w = MAX (w, x); - - /* Remember glyph location */ - rect = malloc (sizeof(DFBRectangle)); - if (!rect) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - *rect = rects[n]; - - scaled_glyph->surface_private = rect; - chars[num_chars++] = scaled_glyph; - - /*D_DEBUG_AT (Cairo_DirectFB, - "Glyph %lu will be loaded at (%d,%d).\n", - glyphs[i].index, rects[n].x, rects[n].y);*/ - } - else { - rects[n] = *((DFBRectangle *)scaled_glyph->surface_private); - - /*D_DEBUG_AT (Cairo_DirectFB, - "Glyph %lu already loaded at (%d,%d).\n", - glyphs[i].index, rects[n].x, rects[n].y);*/ - } - - n++; - } - - if (!n) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - h += y; - w = MAX (w, 8); - h = MAX (h, 8); - - if (cache) { - if (cache->width < w || cache->height < h) { - cairo_directfb_font_cache_t *new_cache; - - w = MAX (w, cache->width); - h = MAX (h, cache->height); - - D_DEBUG_AT (Cairo_DirectFB, - "Reallocating font cache (%dx%d).\n", w, h); - - new_cache = _directfb_allocate_font_cache (surface->dfb, w, h); - if (!new_cache) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - new_cache->dfbsurface->Blit (new_cache->dfbsurface, - cache->dfbsurface, NULL, 0, 0); - - _directfb_destroy_font_cache (cache); - scaled_font->surface_private = cache = new_cache; - } - } - else { - D_DEBUG_AT (Cairo_DirectFB, - "Allocating font cache (%dx%d).\n", w, h); - - cache = _directfb_allocate_font_cache (surface->dfb, w, h); - if (!cache) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - scaled_font->surface_backend = &cairo_directfb_surface_backend; - scaled_font->surface_private = cache; - } - - if (num_chars) { - unsigned char *data; - int pitch; - - if (cache->dfbsurface->Lock (cache->dfbsurface, - DSLF_WRITE, (void *)&data, &pitch)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (i = 0; i < num_chars; i++) { - cairo_image_surface_t *img = chars[i]->surface; - DFBRectangle *rect = chars[i]->surface_private; - unsigned char *dst = data; - unsigned char *src = img->data; - int j; - - dst += rect->y * pitch + (_directfb_argb_font ? (rect->x<<2) : rect->x); - - if (img->format == CAIRO_FORMAT_A1) { - for (h = rect->h; h; h--) { - if (_directfb_argb_font) { - for (j = 0; j < rect->w; j++) - ((uint32_t *)dst)[j] = (src[j>>3] & (1 << (j&7))) ? 0xffffffff : 0; - } - else { - for (j = 0; j < rect->w; j++) - dst[j] = (src[j>>3] & (1 << (j&7))) ? 0xff : 0; - } - - dst += pitch; - src += img->stride; - } - } - else if (img->format == CAIRO_FORMAT_A8) { - for (h = rect->h; h; h--) { - if (_directfb_argb_font) { - for (j = 0; j < rect->w; j++) - ((uint32_t *)dst)[j] = src[j] * 0x01010101; - } - else { - direct_memcpy (dst, src, rect->w); - } - - dst += pitch; - src += img->stride; - } - } - else { /* ARGB32 */ - for (h = rect->h; h; h--) { - if (_directfb_argb_font) { - direct_memcpy (dst, src, rect->w<<2); - } - else { - for (j = 0; j < rect->w; j++) - dst[j] = ((uint32_t *)src)[j] >> 24; - } - - dst += pitch; - src += img->stride; - } - } - } - - cache->dfbsurface->Unlock (cache->dfbsurface); - } - - cache->x = x; - cache->y = y; - - *ret_cache = cache; - *ret_num = n; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_directfb_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font) -{ - cairo_directfb_font_cache_t *cache = scaled_font->surface_private; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( scaled_font=%p ).\n", __FUNCTION__, scaled_font); - - if (cache) { - _directfb_destroy_font_cache (cache); - scaled_font->surface_private = NULL; - } -} - -static void -_cairo_directfb_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font) -{ - D_DEBUG_AT (Cairo_DirectFB, - "%s( scaled_glyph=%p, scaled_font=%p ).\n", - __FUNCTION__, scaled_glyph, scaled_font); - - if (scaled_glyph->surface_private) { - free (scaled_glyph->surface_private); - scaled_glyph->surface_private = NULL; - } -} - -static cairo_int_status_t -_cairo_directfb_surface_show_glyphs (void *abstract_dst, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_directfb_surface_t *dst = abstract_dst; - cairo_directfb_font_cache_t *cache; - cairo_status_t ret; - DFBSurfaceBlittingFlags flags; - DFBSurfaceBlendFunction sblend; - DFBSurfaceBlendFunction dblend; - DFBColor color; - DFBRectangle rects[num_glyphs]; - DFBPoint points[num_glyphs]; - int num; - - D_DEBUG_AT (Cairo_DirectFB, - "%s( dst=%p, op=%d, pattern=%p, glyphs=%p, num_glyphs=%d, scaled_font=%p ).\n", - __FUNCTION__, dst, op, pattern, glyphs, num_glyphs, scaled_font); - - if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (_directfb_get_operator (op, &sblend, &dblend) || - sblend == DSBF_DESTALPHA || sblend == DSBF_INVDESTALPHA) - return CAIRO_INT_STATUS_UNSUPPORTED; - - ret = _directfb_acquire_font_cache (dst, scaled_font, glyphs, num_glyphs, - &cache, &rects[0], &points[0], &num); - if (ret) { - if (ret == CAIRO_INT_STATUS_NOTHING_TO_DO) - ret = CAIRO_STATUS_SUCCESS; - return ret; - } - - color.a = ((cairo_solid_pattern_t *)pattern)->color.alpha_short >> 8; - color.r = ((cairo_solid_pattern_t *)pattern)->color.red_short >> 8; - color.g = ((cairo_solid_pattern_t *)pattern)->color.green_short >> 8; - color.b = ((cairo_solid_pattern_t *)pattern)->color.blue_short >> 8; - - flags = DSBLIT_BLEND_ALPHACHANNEL | DSBLIT_COLORIZE; - if (color.a != 0xff) - flags |= DSBLIT_BLEND_COLORALPHA; - - if (!_directfb_argb_font) { - if (sblend == DSBF_ONE) { - sblend = DSBF_SRCALPHA; - if (dblend == DSBF_ZERO) - dblend = DSBF_INVSRCALPHA; - } - } - - dst->dfbsurface->SetBlittingFlags (dst->dfbsurface, flags); - dst->dfbsurface->SetSrcBlendFunction (dst->dfbsurface, sblend); - dst->dfbsurface->SetDstBlendFunction (dst->dfbsurface, dblend); - dst->dfbsurface->SetColor (dst->dfbsurface, color.r, color.g, color.b, color.a); - - D_DEBUG_AT (Cairo_DirectFB, "Running BatchBlit().\n"); - - RUN_CLIPPED (dst, NULL, - dst->dfbsurface->BatchBlit (dst->dfbsurface, - cache->dfbsurface, rects, points, num)); - - return CAIRO_STATUS_SUCCESS; -} -#endif /* DFB_SHOW_GLYPHS */ - - -static cairo_bool_t -_cairo_directfb_surface_is_similar (void *surface_a, void *surface_b, cairo_content_t content) -{ - cairo_directfb_surface_t *a = (cairo_directfb_surface_t *) surface_a; - cairo_directfb_surface_t *b = (cairo_directfb_surface_t *) surface_b; - - return a->dfb == b->dfb; -} - -static cairo_surface_backend_t cairo_directfb_surface_backend = { - CAIRO_SURFACE_TYPE_DIRECTFB, /*type*/ - _cairo_directfb_surface_create_similar,/*create_similar*/ - _cairo_directfb_surface_finish, /*finish*/ - _cairo_directfb_surface_acquire_source_image,/*acquire_source_image*/ - _cairo_directfb_surface_release_source_image,/*release_source_image*/ - _cairo_directfb_surface_acquire_dest_image,/*acquire_dest_image*/ - _cairo_directfb_surface_release_dest_image,/*release_dest_image*/ - _cairo_directfb_surface_clone_similar,/*clone_similar*/ -#if DFB_COMPOSITE - _cairo_directfb_surface_composite,/*composite*/ -#else - NULL,/*composite*/ -#endif -#if DFB_RECTANGLES - _cairo_directfb_surface_fill_rectangles,/*fill_rectangles*/ -#else - NULL,/*fill_rectangles*/ -#endif -#if DFB_COMPOSITE_TRAPEZOIDS - _cairo_directfb_surface_composite_trapezoids,/*composite_trapezoids*/ -#else - NULL,/*composite_trapezoids*/ -#endif - NULL, /* copy_page */ - NULL, /* show_page */ - _cairo_directfb_surface_set_clip_region,/* set_clip_region */ - NULL, /* intersect_clip_path */ - _cairo_directfb_abstract_surface_get_extents,/* get_extents */ - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ -#if DFB_SHOW_GLYPHS - _cairo_directfb_surface_scaled_font_fini,/* scaled_font_fini */ - _cairo_directfb_surface_scaled_glyph_fini,/* scaled_glyph_fini */ -#else - NULL, - NULL, -#endif - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ -#if DFB_SHOW_GLYPHS - _cairo_directfb_surface_show_glyphs,/* show_glyphs */ -#else - NULL, /* show_glyphs */ -#endif - NULL, /* snapshot */ - _cairo_directfb_surface_is_similar, - NULL /* reset */ -}; - - -static void -cairo_directfb_surface_backend_init (IDirectFB *dfb) -{ - static int done = 0; - - if (done) - return; - - if (getenv ("CAIRO_DIRECTFB_NO_ACCEL")) { -#if DFB_RECTANGLES - cairo_directfb_surface_backend.fill_rectangles = NULL; -#endif -#if DFB_COMPOSITE - cairo_directfb_surface_backend.composite = NULL; -#endif -#if DFB_COMPOSITE_TRAPEZOIDS - cairo_directfb_surface_backend.composite_trapezoids = NULL; -#endif -#if DFB_SHOW_GLYPHS - cairo_directfb_surface_backend.scaled_font_fini = NULL; - cairo_directfb_surface_backend.scaled_glyph_fini = NULL; - cairo_directfb_surface_backend.show_glyphs = NULL; -#endif - D_DEBUG_AT (Cairo_DirectFB, "Acceleration disabled.\n"); - } - else { - DFBGraphicsDeviceDescription dsc; - - dfb->GetDeviceDescription (dfb, &dsc); - -#if DFB_COMPOSITE - if (!(dsc.acceleration_mask & DFXL_BLIT)) - cairo_directfb_surface_backend.composite = NULL; -#endif - -#if DFB_COMPOSITE_TRAPEZOIDS - if (!(dsc.acceleration_mask & DFXL_TEXTRIANGLES)) - cairo_directfb_surface_backend.composite_trapezoids = NULL; -#endif - } - - if (getenv ("CAIRO_DIRECTFB_ARGB_FONT")) { - _directfb_argb_font = 1; - D_DEBUG_AT (Cairo_DirectFB, "Using ARGB fonts.\n"); - } - - done = 1; -} - - -cairo_surface_t * -cairo_directfb_surface_create (IDirectFB *dfb, IDirectFBSurface *dfbsurface) -{ - cairo_directfb_surface_t *surface; - DFBSurfacePixelFormat format; - - D_ASSERT (dfb != NULL); - D_ASSERT (dfbsurface != NULL); - - cairo_directfb_surface_backend_init (dfb); - - surface = calloc (1, sizeof(cairo_directfb_surface_t)); - if (!surface) - return NULL; - - dfbsurface->AddRef (dfbsurface); - dfbsurface->GetPixelFormat (dfbsurface, &format); - dfbsurface->GetSize (dfbsurface, &surface->width, &surface->height); - surface->dfb = dfb; - surface->dfbsurface = dfbsurface; - surface->format = _directfb_to_cairo_format (format); - surface->content = _directfb_format_to_content (format); - - _cairo_surface_init (&surface->base, - &cairo_directfb_surface_backend, surface->content); - - return &surface->base; -} - diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-embed.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-embed.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-embed.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-embed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,1207 +0,0 @@ -/* - * Copyright (C) 2007 Novell, Inc (http://www.novell.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT - * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Larry Ewing (via script) - * - */ - -#ifndef CAIRO_EMBED_H_ -#define CAIRO_EMBED_H_ -#define _cairo_analysis_surface_add_operation _mono_cairo_analysis_surface_add_operation -#define _cairo_analysis_surface_analyze_meta_surface_pattern _mono_cairo_analysis_surface_analyze_meta_surface_pattern -#define _cairo_analysis_surface_create _mono_cairo_analysis_surface_create -#define _cairo_analysis_surface_fill _mono_cairo_analysis_surface_fill -#define _cairo_analysis_surface_finish _mono_cairo_analysis_surface_finish -#define _cairo_analysis_surface_get_bounding_box _mono_cairo_analysis_surface_get_bounding_box -#define _cairo_analysis_surface_get_extents _mono_cairo_analysis_surface_get_extents -#define _cairo_analysis_surface_get_supported _mono_cairo_analysis_surface_get_supported -#define _cairo_analysis_surface_get_unsupported _mono_cairo_analysis_surface_get_unsupported -#define _cairo_analysis_surface_has_supported _mono_cairo_analysis_surface_has_supported -#define _cairo_analysis_surface_has_unsupported _mono_cairo_analysis_surface_has_unsupported -#define _cairo_analysis_surface_intersect_clip_path _mono_cairo_analysis_surface_intersect_clip_path -#define _cairo_analysis_surface_mask _mono_cairo_analysis_surface_mask -#define _cairo_analysis_surface_paint _mono_cairo_analysis_surface_paint -#define _cairo_analysis_surface_show_glyphs _mono_cairo_analysis_surface_show_glyphs -#define _cairo_analysis_surface_stroke _mono_cairo_analysis_surface_stroke -#define _cairo_arc_in_direction _mono_cairo_arc_in_direction -#define _cairo_arc_path _mono_cairo_arc_path -#define _cairo_arc_path_negative _mono_cairo_arc_path_negative -#define _cairo_array_allocate _mono_cairo_array_allocate -#define _cairo_array_append _mono_cairo_array_append -#define _cairo_array_append_multiple _mono_cairo_array_append_multiple -#define _cairo_array_copy_element _mono_cairo_array_copy_element -#define _cairo_array_fini _mono_cairo_array_fini -#define _cairo_array_grow_by _mono_cairo_array_grow_by -#define _cairo_array_index _mono_cairo_array_index -#define _cairo_array_init _mono_cairo_array_init -#define _cairo_array_init_snapshot _mono_cairo_array_init_snapshot -#define _cairo_array_num_elements _mono_cairo_array_num_elements -#define _cairo_array_size _mono_cairo_array_size -#define _cairo_array_truncate _mono_cairo_array_truncate -#define _cairo_atomic_int_cmpxchg _mono_cairo_atomic_int_cmpxchg -#define _cairo_atomic_int_dec_and_test _mono_cairo_atomic_int_dec_and_test -#define _cairo_atomic_int_inc _mono_cairo_atomic_int_inc -#define _cairo_atomic_mutex _mono_cairo_atomic_mutex -#define _cairo_base85_stream_close _mono_cairo_base85_stream_close -#define _cairo_base85_stream_create _mono_cairo_base85_stream_create -#define _cairo_base85_stream_write _mono_cairo_base85_stream_write -#define _cairo_bentley_ottmann_tessellate_polygon _mono_cairo_bentley_ottmann_tessellate_polygon -#define _cairo_bo_edge_contains_intersect_point _mono_cairo_bo_edge_contains_intersect_point -#define _cairo_bo_edge_end_trap _mono_cairo_bo_edge_end_trap -#define _cairo_bo_event_init _mono_cairo_bo_event_init -#define _cairo_bo_event_queue_insert_if_intersect_below_current_y _mono_cairo_bo_event_queue_insert_if_intersect_below_current_y -#define _cairo_bo_intersect_ordinate_32_compare _mono_cairo_bo_intersect_ordinate_32_compare -#define _cairo_bo_sweep_line_validate _mono_cairo_bo_sweep_line_validate -#define _cairo_box_contains_point _mono_cairo_box_contains_point -#define _cairo_box_intersects_line_segment _mono_cairo_box_intersects_line_segment -#define _cairo_box_round_to_rectangle _mono_cairo_box_round_to_rectangle -#define _cairo_cache_create _mono_cairo_cache_create -#define _cairo_cache_destroy _mono_cairo_cache_destroy -#define _cairo_cache_foreach _mono_cairo_cache_foreach -#define _cairo_cache_freeze _mono_cairo_cache_freeze -#define _cairo_cache_insert _mono_cairo_cache_insert -#define _cairo_cache_lookup _mono_cairo_cache_lookup -#define _cairo_cache_remove _mono_cairo_cache_remove -#define _cairo_cache_shrink_to_accommodate _mono_cairo_cache_shrink_to_accommodate -#define _cairo_cache_thaw _mono_cairo_cache_thaw -#define _cairo_cff_dict_equal _mono_cairo_cff_dict_equal -#define _cairo_cff_fallback_fini _mono_cairo_cff_fallback_fini -#define _cairo_cff_fallback_init _mono_cairo_cff_fallback_init -#define _cairo_cff_subset_fini _mono_cairo_cff_subset_fini -#define _cairo_cff_subset_init _mono_cairo_cff_subset_init -#define _cairo_clip_clip _mono_cairo_clip_clip -#define _cairo_clip_combine_to_surface _mono_cairo_clip_combine_to_surface -#define _cairo_clip_copy_rectangle_list _mono_cairo_clip_copy_rectangle_list -#define _cairo_clip_init _mono_cairo_clip_init -#define _cairo_clip_init_copy _mono_cairo_clip_init_copy -#define _cairo_clip_init_deep_copy _mono_cairo_clip_init_deep_copy -#define _cairo_clip_int_rect_to_user _mono_cairo_clip_int_rect_to_user -#define _cairo_clip_intersect_path _mono_cairo_clip_intersect_path -#define _cairo_clip_intersect_to_rectangle _mono_cairo_clip_intersect_to_rectangle -#define _cairo_clip_intersect_to_region _mono_cairo_clip_intersect_to_region -#define _cairo_clip_path_destroy _mono_cairo_clip_path_destroy -#define _cairo_clip_path_reapply_clip_path _mono_cairo_clip_path_reapply_clip_path -#define _cairo_clip_reset _mono_cairo_clip_reset -#define _cairo_clip_set_all_clipped _mono_cairo_clip_set_all_clipped -#define _cairo_clip_translate _mono_cairo_clip_translate -#define _cairo_color_compute_shorts _mono_cairo_color_compute_shorts -#define _cairo_color_double_to_short _mono_cairo_color_double_to_short -#define _cairo_color_equal _mono_cairo_color_equal -#define _cairo_color_get_rgba _mono_cairo_color_get_rgba -#define _cairo_color_get_rgba_premultiplied _mono_cairo_color_get_rgba_premultiplied -#define _cairo_color_init _mono_cairo_color_init -#define _cairo_color_init_rgb _mono_cairo_color_init_rgb -#define _cairo_color_init_rgba _mono_cairo_color_init_rgba -#define _cairo_color_multiply_alpha _mono_cairo_color_multiply_alpha -#define _cairo_command_get_path _mono_cairo_command_get_path -#define _cairo_content_from_format _mono_cairo_content_from_format -#define _cairo_deflate_stream_close _mono_cairo_deflate_stream_close -#define _cairo_deflate_stream_create _mono_cairo_deflate_stream_create -#define _cairo_deflate_stream_write _mono_cairo_deflate_stream_write -#define _cairo_dict_collect _mono_cairo_dict_collect -#define _cairo_dict_init_key _mono_cairo_dict_init_key -#define _cairo_dtostr _mono_cairo_dtostr -#define _cairo_error _mono_cairo_error -#define _cairo_filler_close_path _mono_cairo_filler_close_path -#define _cairo_filler_curve_to _mono_cairo_filler_curve_to -#define _cairo_filler_line_to _mono_cairo_filler_line_to -#define _cairo_filler_move_to _mono_cairo_filler_move_to -#define _cairo_font_face_init _mono_cairo_font_face_init -#define _cairo_font_face_mutex _mono_cairo_font_face_mutex -#define _cairo_font_face_nil _mono_cairo_font_face_nil -#define _cairo_font_face_set_error _mono_cairo_font_face_set_error -#define _cairo_font_options_init_copy _mono_cairo_font_options_init_copy -#define _cairo_font_options_init_default _mono_cairo_font_options_init_default -#define _cairo_font_options_nil _mono_cairo_font_options_nil -#define _cairo_font_reset_static_data _mono_cairo_font_reset_static_data -#define _cairo_format_bits_per_pixel _mono_cairo_format_bits_per_pixel -#define _cairo_format_from_content _mono_cairo_format_from_content -#define _cairo_format_to_pixman_format_code _mono_cairo_format_to_pixman_format_code -#define _cairo_freelist_alloc _mono_cairo_freelist_alloc -#define _cairo_freelist_calloc _mono_cairo_freelist_calloc -#define _cairo_freelist_fini _mono_cairo_freelist_fini -#define _cairo_freelist_free _mono_cairo_freelist_free -#define _cairo_freelist_init _mono_cairo_freelist_init -#define _cairo_ft_font_face_backend _mono_cairo_ft_font_face_backend -#define _cairo_ft_font_face_create _mono_cairo_ft_font_face_create -#define _cairo_ft_font_face_destroy _mono_cairo_ft_font_face_destroy -#define _cairo_ft_font_face_scaled_font_create _mono_cairo_ft_font_face_scaled_font_create -#define _cairo_ft_font_options_substitute _mono_cairo_ft_font_options_substitute -#define _cairo_ft_font_reset_static_data _mono_cairo_ft_font_reset_static_data -#define _cairo_ft_load_truetype_table _mono_cairo_ft_load_truetype_table -#define _cairo_ft_map_glyphs_to_unicode _mono_cairo_ft_map_glyphs_to_unicode -#define _cairo_ft_scaled_font_create _mono_cairo_ft_scaled_font_create -#define _cairo_ft_scaled_font_create_toy _mono_cairo_ft_scaled_font_create_toy -#define _cairo_ft_scaled_font_fini _mono_cairo_ft_scaled_font_fini -#define _cairo_ft_scaled_font_get_unscaled_font _mono_cairo_ft_scaled_font_get_unscaled_font -#define _cairo_ft_scaled_font_is_vertical _mono_cairo_ft_scaled_font_is_vertical -#define _cairo_ft_scaled_glyph_init _mono_cairo_ft_scaled_glyph_init -#define _cairo_ft_scaled_glyph_vertical_layout_bearing_fix _mono_cairo_ft_scaled_glyph_vertical_layout_bearing_fix -#define _cairo_ft_ucs4_to_index _mono_cairo_ft_ucs4_to_index -#define _cairo_ft_unscaled_font_create_for_pattern _mono_cairo_ft_unscaled_font_create_for_pattern -#define _cairo_ft_unscaled_font_destroy _mono_cairo_ft_unscaled_font_destroy -#define _cairo_ft_unscaled_font_fini _mono_cairo_ft_unscaled_font_fini -#define _cairo_ft_unscaled_font_init _mono_cairo_ft_unscaled_font_init -#define _cairo_ft_unscaled_font_init_key _mono_cairo_ft_unscaled_font_init_key -#define _cairo_ft_unscaled_font_keys_equal _mono_cairo_ft_unscaled_font_keys_equal -#define _cairo_ft_unscaled_font_lock_face _mono_cairo_ft_unscaled_font_lock_face -#define _cairo_ft_unscaled_font_map_lock _mono_cairo_ft_unscaled_font_map_lock -#define _cairo_ft_unscaled_font_map_mutex _mono_cairo_ft_unscaled_font_map_mutex -#define _cairo_ft_unscaled_font_map_unlock _mono_cairo_ft_unscaled_font_map_unlock -#define _cairo_ft_unscaled_font_set_scale _mono_cairo_ft_unscaled_font_set_scale -#define _cairo_ft_unscaled_font_unlock_face _mono_cairo_ft_unscaled_font_unlock_face -#define _cairo_gstate_backend_to_user _mono_cairo_gstate_backend_to_user -#define _cairo_gstate_backend_to_user_rectangle _mono_cairo_gstate_backend_to_user_rectangle -#define _cairo_gstate_clip _mono_cairo_gstate_clip -#define _cairo_gstate_clip_extents _mono_cairo_gstate_clip_extents -#define _cairo_gstate_copy_clip_rectangle_list _mono_cairo_gstate_copy_clip_rectangle_list -#define _cairo_gstate_copy_page _mono_cairo_gstate_copy_page -#define _cairo_gstate_copy_transformed_pattern _mono_cairo_gstate_copy_transformed_pattern -#define _cairo_gstate_copy_transformed_source _mono_cairo_gstate_copy_transformed_source -#define _cairo_gstate_device_to_user _mono_cairo_gstate_device_to_user -#define _cairo_gstate_device_to_user_distance _mono_cairo_gstate_device_to_user_distance -#define _cairo_gstate_ensure_font_face _mono_cairo_gstate_ensure_font_face -#define _cairo_gstate_ensure_scaled_font _mono_cairo_gstate_ensure_scaled_font -#define _cairo_gstate_fill _mono_cairo_gstate_fill -#define _cairo_gstate_fill_extents _mono_cairo_gstate_fill_extents -#define _cairo_gstate_fini _mono_cairo_gstate_fini -#define _cairo_gstate_get_antialias _mono_cairo_gstate_get_antialias -#define _cairo_gstate_get_clip _mono_cairo_gstate_get_clip -#define _cairo_gstate_get_dash _mono_cairo_gstate_get_dash -#define _cairo_gstate_get_fill_rule _mono_cairo_gstate_get_fill_rule -#define _cairo_gstate_get_font_extents _mono_cairo_gstate_get_font_extents -#define _cairo_gstate_get_font_face _mono_cairo_gstate_get_font_face -#define _cairo_gstate_get_font_matrix _mono_cairo_gstate_get_font_matrix -#define _cairo_gstate_get_font_options _mono_cairo_gstate_get_font_options -#define _cairo_gstate_get_line_cap _mono_cairo_gstate_get_line_cap -#define _cairo_gstate_get_line_join _mono_cairo_gstate_get_line_join -#define _cairo_gstate_get_line_width _mono_cairo_gstate_get_line_width -#define _cairo_gstate_get_matrix _mono_cairo_gstate_get_matrix -#define _cairo_gstate_get_miter_limit _mono_cairo_gstate_get_miter_limit -#define _cairo_gstate_get_operator _mono_cairo_gstate_get_operator -#define _cairo_gstate_get_original_target _mono_cairo_gstate_get_original_target -#define _cairo_gstate_get_parent_target _mono_cairo_gstate_get_parent_target -#define _cairo_gstate_get_scaled_font _mono_cairo_gstate_get_scaled_font -#define _cairo_gstate_get_source _mono_cairo_gstate_get_source -#define _cairo_gstate_get_target _mono_cairo_gstate_get_target -#define _cairo_gstate_get_tolerance _mono_cairo_gstate_get_tolerance -#define _cairo_gstate_glyph_extents _mono_cairo_gstate_glyph_extents -#define _cairo_gstate_glyph_path _mono_cairo_gstate_glyph_path -#define _cairo_gstate_identity_matrix _mono_cairo_gstate_identity_matrix -#define _cairo_gstate_in_fill _mono_cairo_gstate_in_fill -#define _cairo_gstate_in_stroke _mono_cairo_gstate_in_stroke -#define _cairo_gstate_init _mono_cairo_gstate_init -#define _cairo_gstate_is_redirected _mono_cairo_gstate_is_redirected -#define _cairo_gstate_mask _mono_cairo_gstate_mask -#define _cairo_gstate_paint _mono_cairo_gstate_paint -#define _cairo_gstate_path_extents _mono_cairo_gstate_path_extents -#define _cairo_gstate_redirect_target _mono_cairo_gstate_redirect_target -#define _cairo_gstate_reset_clip _mono_cairo_gstate_reset_clip -#define _cairo_gstate_restore _mono_cairo_gstate_restore -#define _cairo_gstate_rotate _mono_cairo_gstate_rotate -#define _cairo_gstate_save _mono_cairo_gstate_save -#define _cairo_gstate_scale _mono_cairo_gstate_scale -#define _cairo_gstate_select_font_face _mono_cairo_gstate_select_font_face -#define _cairo_gstate_set_antialias _mono_cairo_gstate_set_antialias -#define _cairo_gstate_set_dash _mono_cairo_gstate_set_dash -#define _cairo_gstate_set_fill_rule _mono_cairo_gstate_set_fill_rule -#define _cairo_gstate_set_font_face _mono_cairo_gstate_set_font_face -#define _cairo_gstate_set_font_matrix _mono_cairo_gstate_set_font_matrix -#define _cairo_gstate_set_font_options _mono_cairo_gstate_set_font_options -#define _cairo_gstate_set_font_size _mono_cairo_gstate_set_font_size -#define _cairo_gstate_set_line_cap _mono_cairo_gstate_set_line_cap -#define _cairo_gstate_set_line_join _mono_cairo_gstate_set_line_join -#define _cairo_gstate_set_line_width _mono_cairo_gstate_set_line_width -#define _cairo_gstate_set_matrix _mono_cairo_gstate_set_matrix -#define _cairo_gstate_set_miter_limit _mono_cairo_gstate_set_miter_limit -#define _cairo_gstate_set_operator _mono_cairo_gstate_set_operator -#define _cairo_gstate_set_source _mono_cairo_gstate_set_source -#define _cairo_gstate_set_tolerance _mono_cairo_gstate_set_tolerance -#define _cairo_gstate_show_glyphs _mono_cairo_gstate_show_glyphs -#define _cairo_gstate_show_page _mono_cairo_gstate_show_page -#define _cairo_gstate_stroke _mono_cairo_gstate_stroke -#define _cairo_gstate_stroke_extents _mono_cairo_gstate_stroke_extents -#define _cairo_gstate_text_to_glyphs _mono_cairo_gstate_text_to_glyphs -#define _cairo_gstate_transform _mono_cairo_gstate_transform -#define _cairo_gstate_transform_glyphs_to_backend _mono_cairo_gstate_transform_glyphs_to_backend -#define _cairo_gstate_translate _mono_cairo_gstate_translate -#define _cairo_gstate_traps_extents_to_user_rectangle _mono_cairo_gstate_traps_extents_to_user_rectangle -#define _cairo_gstate_unset_scaled_font _mono_cairo_gstate_unset_scaled_font -#define _cairo_gstate_user_to_backend _mono_cairo_gstate_user_to_backend -#define _cairo_gstate_user_to_device _mono_cairo_gstate_user_to_device -#define _cairo_gstate_user_to_device_distance _mono_cairo_gstate_user_to_device_distance -#define _cairo_hash_string _mono_cairo_hash_string -#define _cairo_hash_table_create _mono_cairo_hash_table_create -#define _cairo_hash_table_destroy _mono_cairo_hash_table_destroy -#define _cairo_hash_table_foreach _mono_cairo_hash_table_foreach -#define _cairo_hash_table_insert _mono_cairo_hash_table_insert -#define _cairo_hash_table_lookup _mono_cairo_hash_table_lookup -#define _cairo_hash_table_lookup_internal _mono_cairo_hash_table_lookup_internal -#define _cairo_hash_table_random_entry _mono_cairo_hash_table_random_entry -#define _cairo_hash_table_remove _mono_cairo_hash_table_remove -#define _cairo_hash_table_resize _mono_cairo_hash_table_resize -#define _cairo_hull_compute _mono_cairo_hull_compute -#define _cairo_hull_next_valid _mono_cairo_hull_next_valid -#define _cairo_hull_vertex_compare _mono_cairo_hull_vertex_compare -#define _cairo_image_analyze_transparency _mono_cairo_image_analyze_transparency -#define _cairo_image_surface_acquire_dest_image _mono_cairo_image_surface_acquire_dest_image -#define _cairo_image_surface_acquire_source_image _mono_cairo_image_surface_acquire_source_image -#define _cairo_image_surface_assume_ownership_of_data _mono_cairo_image_surface_assume_ownership_of_data -#define _cairo_image_surface_clone _mono_cairo_image_surface_clone -#define _cairo_image_surface_clone_similar _mono_cairo_image_surface_clone_similar -#define _cairo_image_surface_composite _mono_cairo_image_surface_composite -#define _cairo_image_surface_composite_trapezoids _mono_cairo_image_surface_composite_trapezoids -#define _cairo_image_surface_create_for_data_with_content _mono_cairo_image_surface_create_for_data_with_content -#define _cairo_image_surface_create_for_pixman_image _mono_cairo_image_surface_create_for_pixman_image -#define _cairo_image_surface_create_similar _mono_cairo_image_surface_create_similar -#define _cairo_image_surface_create_with_content _mono_cairo_image_surface_create_with_content -#define _cairo_image_surface_create_with_masks _mono_cairo_image_surface_create_with_masks -#define _cairo_image_surface_create_with_pixman_format _mono_cairo_image_surface_create_with_pixman_format -#define _cairo_image_surface_fill_rectangles _mono_cairo_image_surface_fill_rectangles -#define _cairo_image_surface_finish _mono_cairo_image_surface_finish -#define _cairo_image_surface_get_extents _mono_cairo_image_surface_get_extents -#define _cairo_image_surface_get_font_options _mono_cairo_image_surface_get_font_options -#define _cairo_image_surface_release_dest_image _mono_cairo_image_surface_release_dest_image -#define _cairo_image_surface_release_source_image _mono_cairo_image_surface_release_source_image -#define _cairo_image_surface_reset _mono_cairo_image_surface_reset -#define _cairo_image_surface_set_attributes _mono_cairo_image_surface_set_attributes -#define _cairo_image_surface_set_clip_region _mono_cairo_image_surface_set_clip_region -#define _cairo_int128_divrem _mono_cairo_int128_divrem -#define _cairo_int128_lt _mono_cairo_int128_lt -#define _cairo_int32_to_int128 _mono_cairo_int32_to_int128 -#define _cairo_int64_divrem _mono_cairo_int64_divrem -#define _cairo_int64_to_int128 _mono_cairo_int64_to_int128 -#define _cairo_int64x64_128_mul _mono_cairo_int64x64_128_mul -#define _cairo_int_96by64_32x64_divrem _mono_cairo_int_96by64_32x64_divrem -#define _cairo_lfsr_random_lut _mono_cairo_lfsr_random_lut -#define _cairo_lfsr_random_state _mono_cairo_lfsr_random_state -#define _cairo_lround _mono_cairo_lround -#define _cairo_lzw_compress _mono_cairo_lzw_compress -#define _cairo_matrix_compute_determinant _mono_cairo_matrix_compute_determinant -#define _cairo_matrix_compute_scale_factors _mono_cairo_matrix_compute_scale_factors -#define _cairo_matrix_get_affine _mono_cairo_matrix_get_affine -#define _cairo_matrix_is_identity _mono_cairo_matrix_is_identity -#define _cairo_matrix_is_integer_translation _mono_cairo_matrix_is_integer_translation -#define _cairo_matrix_is_invertible _mono_cairo_matrix_is_invertible -#define _cairo_matrix_is_translation _mono_cairo_matrix_is_translation -#define _cairo_matrix_to_pixman_matrix _mono_cairo_matrix_to_pixman_matrix -#define _cairo_matrix_transform_bounding_box _mono_cairo_matrix_transform_bounding_box -#define _cairo_matrix_transformed_circle_major_axis _mono_cairo_matrix_transformed_circle_major_axis -#define _cairo_memory_stream_copy _mono_cairo_memory_stream_copy -#define _cairo_memory_stream_create _mono_cairo_memory_stream_create -#define _cairo_memory_stream_length _mono_cairo_memory_stream_length -#define _cairo_meta_surface_acquire_source_image _mono_cairo_meta_surface_acquire_source_image -#define _cairo_meta_surface_create _mono_cairo_meta_surface_create -#define _cairo_meta_surface_create_similar _mono_cairo_meta_surface_create_similar -#define _cairo_meta_surface_fill _mono_cairo_meta_surface_fill -#define _cairo_meta_surface_finish _mono_cairo_meta_surface_finish -#define _cairo_meta_surface_get_extents _mono_cairo_meta_surface_get_extents -#define _cairo_meta_surface_intersect_clip_path _mono_cairo_meta_surface_intersect_clip_path -#define _cairo_meta_surface_mask _mono_cairo_meta_surface_mask -#define _cairo_meta_surface_paint _mono_cairo_meta_surface_paint -#define _cairo_meta_surface_release_source_image _mono_cairo_meta_surface_release_source_image -#define _cairo_meta_surface_replay _mono_cairo_meta_surface_replay -#define _cairo_meta_surface_replay_and_create_regions _mono_cairo_meta_surface_replay_and_create_regions -#define _cairo_meta_surface_replay_internal _mono_cairo_meta_surface_replay_internal -#define _cairo_meta_surface_replay_region _mono_cairo_meta_surface_replay_region -#define _cairo_meta_surface_show_glyphs _mono_cairo_meta_surface_show_glyphs -#define _cairo_meta_surface_snapshot _mono_cairo_meta_surface_snapshot -#define _cairo_meta_surface_stroke _mono_cairo_meta_surface_stroke -#define _cairo_nil _mono_cairo_nil -#define _cairo_operator_bounded_by_mask _mono_cairo_operator_bounded_by_mask -#define _cairo_operator_bounded_by_source _mono_cairo_operator_bounded_by_source -#define _cairo_output_stream_close _mono_cairo_output_stream_close -#define _cairo_output_stream_create _mono_cairo_output_stream_create -#define _cairo_output_stream_create_for_file _mono_cairo_output_stream_create_for_file -#define _cairo_output_stream_create_for_filename _mono_cairo_output_stream_create_for_filename -#define _cairo_output_stream_create_in_error _mono_cairo_output_stream_create_in_error -#define _cairo_output_stream_destroy _mono_cairo_output_stream_destroy -#define _cairo_output_stream_fini _mono_cairo_output_stream_fini -#define _cairo_output_stream_get_position _mono_cairo_output_stream_get_position -#define _cairo_output_stream_get_status _mono_cairo_output_stream_get_status -#define _cairo_output_stream_init _mono_cairo_output_stream_init -#define _cairo_output_stream_nil _mono_cairo_output_stream_nil -#define _cairo_output_stream_nil_write_error _mono_cairo_output_stream_nil_write_error -#define _cairo_output_stream_printf _mono_cairo_output_stream_printf -#define _cairo_output_stream_vprintf _mono_cairo_output_stream_vprintf -#define _cairo_output_stream_write _mono_cairo_output_stream_write -#define _cairo_output_stream_write_hex_string _mono_cairo_output_stream_write_hex_string -#define _cairo_paginated_surface_acquire_source_image _mono_cairo_paginated_surface_acquire_source_image -#define _cairo_paginated_surface_copy_page _mono_cairo_paginated_surface_copy_page -#define _cairo_paginated_surface_create _mono_cairo_paginated_surface_create -#define _cairo_paginated_surface_create_image_surface _mono_cairo_paginated_surface_create_image_surface -#define _cairo_paginated_surface_create_similar _mono_cairo_paginated_surface_create_similar -#define _cairo_paginated_surface_fill _mono_cairo_paginated_surface_fill -#define _cairo_paginated_surface_finish _mono_cairo_paginated_surface_finish -#define _cairo_paginated_surface_get_extents _mono_cairo_paginated_surface_get_extents -#define _cairo_paginated_surface_get_font_options _mono_cairo_paginated_surface_get_font_options -#define _cairo_paginated_surface_get_target _mono_cairo_paginated_surface_get_target -#define _cairo_paginated_surface_intersect_clip_path _mono_cairo_paginated_surface_intersect_clip_path -#define _cairo_paginated_surface_mask _mono_cairo_paginated_surface_mask -#define _cairo_paginated_surface_paint _mono_cairo_paginated_surface_paint -#define _cairo_paginated_surface_release_source_image _mono_cairo_paginated_surface_release_source_image -#define _cairo_paginated_surface_set_size _mono_cairo_paginated_surface_set_size -#define _cairo_paginated_surface_show_glyphs _mono_cairo_paginated_surface_show_glyphs -#define _cairo_paginated_surface_show_page _mono_cairo_paginated_surface_show_page -#define _cairo_paginated_surface_snapshot _mono_cairo_paginated_surface_snapshot -#define _cairo_paginated_surface_stroke _mono_cairo_paginated_surface_stroke -#define _cairo_path_append_to_context _mono_cairo_path_append_to_context -#define _cairo_path_bounder_add_point _mono_cairo_path_bounder_add_point -#define _cairo_path_bounder_close_path _mono_cairo_path_bounder_close_path -#define _cairo_path_bounder_line_to _mono_cairo_path_bounder_line_to -#define _cairo_path_bounder_move_to _mono_cairo_path_bounder_move_to -#define _cairo_path_buf_create _mono_cairo_path_buf_create -#define _cairo_path_create _mono_cairo_path_create -#define _cairo_path_create_flat _mono_cairo_path_create_flat -#define _cairo_path_create_in_error _mono_cairo_path_create_in_error -#define _cairo_path_create_internal _mono_cairo_path_create_internal -#define _cairo_path_fixed_add _mono_cairo_path_fixed_add -#define _cairo_path_fixed_add_buf _mono_cairo_path_fixed_add_buf -#define _cairo_path_fixed_bounds _mono_cairo_path_fixed_bounds -#define _cairo_path_fixed_close_path _mono_cairo_path_fixed_close_path -#define _cairo_path_fixed_create _mono_cairo_path_fixed_create -#define _cairo_path_fixed_curve_to _mono_cairo_path_fixed_curve_to -#define _cairo_path_fixed_destroy _mono_cairo_path_fixed_destroy -#define _cairo_path_fixed_device_transform _mono_cairo_path_fixed_device_transform -#define _cairo_path_fixed_fill_to_traps _mono_cairo_path_fixed_fill_to_traps -#define _cairo_path_fixed_fini _mono_cairo_path_fixed_fini -#define _cairo_path_fixed_get_current_point _mono_cairo_path_fixed_get_current_point -#define _cairo_path_fixed_init _mono_cairo_path_fixed_init -#define _cairo_path_fixed_init_copy _mono_cairo_path_fixed_init_copy -#define _cairo_path_fixed_interpret _mono_cairo_path_fixed_interpret -#define _cairo_path_fixed_interpret_flat _mono_cairo_path_fixed_interpret_flat -#define _cairo_path_fixed_is_box _mono_cairo_path_fixed_is_box -#define _cairo_path_fixed_is_empty _mono_cairo_path_fixed_is_empty -#define _cairo_path_fixed_is_equal _mono_cairo_path_fixed_is_equal -#define _cairo_path_fixed_is_rectangle _mono_cairo_path_fixed_is_rectangle -#define _cairo_path_fixed_line_to _mono_cairo_path_fixed_line_to -#define _cairo_path_fixed_move_to _mono_cairo_path_fixed_move_to -#define _cairo_path_fixed_new_sub_path _mono_cairo_path_fixed_new_sub_path -#define _cairo_path_fixed_rel_curve_to _mono_cairo_path_fixed_rel_curve_to -#define _cairo_path_fixed_rel_line_to _mono_cairo_path_fixed_rel_line_to -#define _cairo_path_fixed_rel_move_to _mono_cairo_path_fixed_rel_move_to -#define _cairo_path_fixed_stroke_to_traps _mono_cairo_path_fixed_stroke_to_traps -#define _cairo_path_nil _mono_cairo_path_nil -#define _cairo_pattern_acquire_surface _mono_cairo_pattern_acquire_surface -#define _cairo_pattern_acquire_surface_for_solid _mono_cairo_pattern_acquire_surface_for_solid -#define _cairo_pattern_acquire_surfaces _mono_cairo_pattern_acquire_surfaces -#define _cairo_pattern_add_color_stop _mono_cairo_pattern_add_color_stop -#define _cairo_pattern_create_copy _mono_cairo_pattern_create_copy -#define _cairo_pattern_create_solid _mono_cairo_pattern_create_solid -#define _cairo_pattern_fini _mono_cairo_pattern_fini -#define _cairo_pattern_get_extents _mono_cairo_pattern_get_extents -#define _cairo_pattern_init _mono_cairo_pattern_init -#define _cairo_pattern_init_copy _mono_cairo_pattern_init_copy -#define _cairo_pattern_init_for_surface _mono_cairo_pattern_init_for_surface -#define _cairo_pattern_init_gradient _mono_cairo_pattern_init_gradient -#define _cairo_pattern_init_linear _mono_cairo_pattern_init_linear -#define _cairo_pattern_init_radial _mono_cairo_pattern_init_radial -#define _cairo_pattern_init_solid _mono_cairo_pattern_init_solid -#define _cairo_pattern_is_opaque _mono_cairo_pattern_is_opaque -#define _cairo_pattern_is_opaque_solid _mono_cairo_pattern_is_opaque_solid -#define _cairo_pattern_nil _mono_cairo_pattern_nil -#define _cairo_pattern_nil_null_pointer _mono_cairo_pattern_nil_null_pointer -#define _cairo_pattern_release_surface _mono_cairo_pattern_release_surface -#define _cairo_pattern_reset_static_data _mono_cairo_pattern_reset_static_data -#define _cairo_pattern_set_error _mono_cairo_pattern_set_error -#define _cairo_pattern_solid_pattern_cache_lock _mono_cairo_pattern_solid_pattern_cache_lock -#define _cairo_pattern_solid_surface_cache_lock _mono_cairo_pattern_solid_surface_cache_lock -#define _cairo_pattern_solid_surface_matches _mono_cairo_pattern_solid_surface_matches -#define _cairo_pattern_transform _mono_cairo_pattern_transform -#define _cairo_pdf_group_resources_clear _mono_cairo_pdf_group_resources_clear -#define _cairo_pdf_operators_clip _mono_cairo_pdf_operators_clip -#define _cairo_pdf_operators_emit_path _mono_cairo_pdf_operators_emit_path -#define _cairo_pdf_operators_emit_stroke _mono_cairo_pdf_operators_emit_stroke -#define _cairo_pdf_operators_fill _mono_cairo_pdf_operators_fill -#define _cairo_pdf_operators_fill_stroke _mono_cairo_pdf_operators_fill_stroke -#define _cairo_pdf_operators_fini _mono_cairo_pdf_operators_fini -#define _cairo_pdf_operators_init _mono_cairo_pdf_operators_init -#define _cairo_pdf_operators_set_cairo_to_pdf_matrix _mono_cairo_pdf_operators_set_cairo_to_pdf_matrix -#define _cairo_pdf_operators_set_font_subsets_callback _mono_cairo_pdf_operators_set_font_subsets_callback -#define _cairo_pdf_operators_set_stream _mono_cairo_pdf_operators_set_stream -#define _cairo_pdf_operators_show_glyphs _mono_cairo_pdf_operators_show_glyphs -#define _cairo_pdf_operators_stroke _mono_cairo_pdf_operators_stroke -#define _cairo_pdf_path_close_path _mono_cairo_pdf_path_close_path -#define _cairo_pdf_path_curve_to _mono_cairo_pdf_path_curve_to -#define _cairo_pdf_path_line_to _mono_cairo_pdf_path_line_to -#define _cairo_pdf_path_move_to _mono_cairo_pdf_path_move_to -#define _cairo_pdf_smask_group_destroy _mono_cairo_pdf_smask_group_destroy -#define _cairo_pdf_surface_add_alpha _mono_cairo_pdf_surface_add_alpha -#define _cairo_pdf_surface_add_font _mono_cairo_pdf_surface_add_font -#define _cairo_pdf_surface_add_pattern _mono_cairo_pdf_surface_add_pattern -#define _cairo_pdf_surface_add_pdf_pattern _mono_cairo_pdf_surface_add_pdf_pattern -#define _cairo_pdf_surface_add_smask _mono_cairo_pdf_surface_add_smask -#define _cairo_pdf_surface_add_smask_group _mono_cairo_pdf_surface_add_smask_group -#define _cairo_pdf_surface_add_xobject _mono_cairo_pdf_surface_add_xobject -#define _cairo_pdf_surface_analyze_operation _mono_cairo_pdf_surface_analyze_operation -#define _cairo_pdf_surface_clear _mono_cairo_pdf_surface_clear -#define _cairo_pdf_surface_close_content_stream _mono_cairo_pdf_surface_close_content_stream -#define _cairo_pdf_surface_close_group _mono_cairo_pdf_surface_close_group -#define _cairo_pdf_surface_close_stream _mono_cairo_pdf_surface_close_stream -#define _cairo_pdf_surface_create_for_stream_internal _mono_cairo_pdf_surface_create_for_stream_internal -#define _cairo_pdf_surface_create_similar _mono_cairo_pdf_surface_create_similar -#define _cairo_pdf_surface_create_smask_group _mono_cairo_pdf_surface_create_smask_group -#define _cairo_pdf_surface_emit_cff_font _mono_cairo_pdf_surface_emit_cff_font -#define _cairo_pdf_surface_emit_group_resources _mono_cairo_pdf_surface_emit_group_resources -#define _cairo_pdf_surface_emit_pattern_stops _mono_cairo_pdf_surface_emit_pattern_stops -#define _cairo_pdf_surface_emit_repeating_function _mono_cairo_pdf_surface_emit_repeating_function -#define _cairo_pdf_surface_emit_scaled_font_subset _mono_cairo_pdf_surface_emit_scaled_font_subset -#define _cairo_pdf_surface_emit_stitched_colorgradient _mono_cairo_pdf_surface_emit_stitched_colorgradient -#define _cairo_pdf_surface_emit_surface_pattern _mono_cairo_pdf_surface_emit_surface_pattern -#define _cairo_pdf_surface_emit_to_unicode_stream _mono_cairo_pdf_surface_emit_to_unicode_stream -#define _cairo_pdf_surface_emit_type1_font _mono_cairo_pdf_surface_emit_type1_font -#define _cairo_pdf_surface_emit_unscaled_font_subset _mono_cairo_pdf_surface_emit_unscaled_font_subset -#define _cairo_pdf_surface_fill _mono_cairo_pdf_surface_fill -#define _cairo_pdf_surface_fill_stroke _mono_cairo_pdf_surface_fill_stroke -#define _cairo_pdf_surface_finish _mono_cairo_pdf_surface_finish -#define _cairo_pdf_surface_get_extents _mono_cairo_pdf_surface_get_extents -#define _cairo_pdf_surface_get_font_options _mono_cairo_pdf_surface_get_font_options -#define _cairo_pdf_surface_get_font_resource _mono_cairo_pdf_surface_get_font_resource -#define _cairo_pdf_surface_intersect_clip_path _mono_cairo_pdf_surface_intersect_clip_path -#define _cairo_pdf_surface_mask _mono_cairo_pdf_surface_mask -#define _cairo_pdf_surface_new_object _mono_cairo_pdf_surface_new_object -#define _cairo_pdf_surface_open_content_stream _mono_cairo_pdf_surface_open_content_stream -#define _cairo_pdf_surface_open_group _mono_cairo_pdf_surface_open_group -#define _cairo_pdf_surface_open_stream _mono_cairo_pdf_surface_open_stream -#define _cairo_pdf_surface_operation_supported _mono_cairo_pdf_surface_operation_supported -#define _cairo_pdf_surface_paint _mono_cairo_pdf_surface_paint -#define _cairo_pdf_surface_select_pattern _mono_cairo_pdf_surface_select_pattern -#define _cairo_pdf_surface_set_paginated_mode _mono_cairo_pdf_surface_set_paginated_mode -#define _cairo_pdf_surface_set_size_internal _mono_cairo_pdf_surface_set_size_internal -#define _cairo_pdf_surface_show_glyphs _mono_cairo_pdf_surface_show_glyphs -#define _cairo_pdf_surface_show_page _mono_cairo_pdf_surface_show_page -#define _cairo_pdf_surface_start_fallback _mono_cairo_pdf_surface_start_fallback -#define _cairo_pdf_surface_start_page _mono_cairo_pdf_surface_start_page -#define _cairo_pdf_surface_stroke _mono_cairo_pdf_surface_stroke -#define _cairo_pdf_surface_unselect_pattern _mono_cairo_pdf_surface_unselect_pattern -#define _cairo_pdf_surface_update_object _mono_cairo_pdf_surface_update_object -#define _cairo_pen_add_points _mono_cairo_pen_add_points -#define _cairo_pen_compute_slopes _mono_cairo_pen_compute_slopes -#define _cairo_pen_find_active_ccw_vertex_index _mono_cairo_pen_find_active_ccw_vertex_index -#define _cairo_pen_find_active_cw_vertex_index _mono_cairo_pen_find_active_cw_vertex_index -#define _cairo_pen_fini _mono_cairo_pen_fini -#define _cairo_pen_init _mono_cairo_pen_init -#define _cairo_pen_init_copy _mono_cairo_pen_init_copy -#define _cairo_pen_init_empty _mono_cairo_pen_init_empty -#define _cairo_pen_stroke_spline _mono_cairo_pen_stroke_spline -#define _cairo_pen_stroke_spline_half _mono_cairo_pen_stroke_spline_half -#define _cairo_polygon_add_edge _mono_cairo_polygon_add_edge -#define _cairo_polygon_close _mono_cairo_polygon_close -#define _cairo_polygon_fini _mono_cairo_polygon_fini -#define _cairo_polygon_init _mono_cairo_polygon_init -#define _cairo_polygon_line_to _mono_cairo_polygon_line_to -#define _cairo_polygon_move_to _mono_cairo_polygon_move_to -#define _cairo_polygon_status _mono_cairo_polygon_status -#define _cairo_ps_level_strings _mono_cairo_ps_level_strings -#define _cairo_ps_levels _mono_cairo_ps_levels -#define _cairo_ps_surface_acquire_surface _mono_cairo_ps_surface_acquire_surface -#define _cairo_ps_surface_analyze_operation _mono_cairo_ps_surface_analyze_operation -#define _cairo_ps_surface_create_for_stream_internal _mono_cairo_ps_surface_create_for_stream_internal -#define _cairo_ps_surface_create_similar _mono_cairo_ps_surface_create_similar -#define _cairo_ps_surface_emit_base85_string _mono_cairo_ps_surface_emit_base85_string -#define _cairo_ps_surface_emit_body _mono_cairo_ps_surface_emit_body -#define _cairo_ps_surface_emit_linear_colorgradient _mono_cairo_ps_surface_emit_linear_colorgradient -#define _cairo_ps_surface_emit_pattern _mono_cairo_ps_surface_emit_pattern -#define _cairo_ps_surface_emit_pattern_stops _mono_cairo_ps_surface_emit_pattern_stops -#define _cairo_ps_surface_emit_scaled_font_subset _mono_cairo_ps_surface_emit_scaled_font_subset -#define _cairo_ps_surface_emit_surface _mono_cairo_ps_surface_emit_surface -#define _cairo_ps_surface_emit_unscaled_font_subset _mono_cairo_ps_surface_emit_unscaled_font_subset -#define _cairo_ps_surface_fill _mono_cairo_ps_surface_fill -#define _cairo_ps_surface_finish _mono_cairo_ps_surface_finish -#define _cairo_ps_surface_flatten_transparency _mono_cairo_ps_surface_flatten_transparency -#define _cairo_ps_surface_get_extents _mono_cairo_ps_surface_get_extents -#define _cairo_ps_surface_get_font_options _mono_cairo_ps_surface_get_font_options -#define _cairo_ps_surface_intersect_clip_path _mono_cairo_ps_surface_intersect_clip_path -#define _cairo_ps_surface_operation_supported _mono_cairo_ps_surface_operation_supported -#define _cairo_ps_surface_paint _mono_cairo_ps_surface_paint -#define _cairo_ps_surface_paint_surface _mono_cairo_ps_surface_paint_surface -#define _cairo_ps_surface_set_bounding_box _mono_cairo_ps_surface_set_bounding_box -#define _cairo_ps_surface_set_paginated_mode _mono_cairo_ps_surface_set_paginated_mode -#define _cairo_ps_surface_show_glyphs _mono_cairo_ps_surface_show_glyphs -#define _cairo_ps_surface_show_page _mono_cairo_ps_surface_show_page -#define _cairo_ps_surface_start_page _mono_cairo_ps_surface_start_page -#define _cairo_ps_surface_stroke _mono_cairo_ps_surface_stroke -#define _cairo_rectangle_intersect _mono_cairo_rectangle_intersect -#define _cairo_rectangles_nil _mono_cairo_rectangles_nil -#define _cairo_rectangles_not_representable _mono_cairo_rectangles_not_representable -#define _cairo_rectilinear_stroker_close_path _mono_cairo_rectilinear_stroker_close_path -#define _cairo_rectilinear_stroker_emit_segments _mono_cairo_rectilinear_stroker_emit_segments -#define _cairo_rectilinear_stroker_line_to _mono_cairo_rectilinear_stroker_line_to -#define _cairo_rectilinear_stroker_move_to _mono_cairo_rectilinear_stroker_move_to -#define _cairo_region_boxes_fini _mono_cairo_region_boxes_fini -#define _cairo_region_contains_rectangle _mono_cairo_region_contains_rectangle -#define _cairo_region_copy _mono_cairo_region_copy -#define _cairo_region_fini _mono_cairo_region_fini -#define _cairo_region_get_boxes _mono_cairo_region_get_boxes -#define _cairo_region_get_extents _mono_cairo_region_get_extents -#define _cairo_region_init _mono_cairo_region_init -#define _cairo_region_init_boxes _mono_cairo_region_init_boxes -#define _cairo_region_init_rect _mono_cairo_region_init_rect -#define _cairo_region_intersect _mono_cairo_region_intersect -#define _cairo_region_not_empty _mono_cairo_region_not_empty -#define _cairo_region_num_boxes _mono_cairo_region_num_boxes -#define _cairo_region_subtract _mono_cairo_region_subtract -#define _cairo_region_translate _mono_cairo_region_translate -#define _cairo_region_union_rect _mono_cairo_region_union_rect -#define _cairo_restrict_value _mono_cairo_restrict_value -#define _cairo_scaled_font_create_in_error _mono_cairo_scaled_font_create_in_error -#define _cairo_scaled_font_error_mutex _mono_cairo_scaled_font_error_mutex -#define _cairo_scaled_font_fini _mono_cairo_scaled_font_fini -#define _cairo_scaled_font_freeze_cache _mono_cairo_scaled_font_freeze_cache -#define _cairo_scaled_font_glyph_device_extents _mono_cairo_scaled_font_glyph_device_extents -#define _cairo_scaled_font_glyph_path _mono_cairo_scaled_font_glyph_path -#define _cairo_scaled_font_init _mono_cairo_scaled_font_init -#define _cairo_scaled_font_init_key _mono_cairo_scaled_font_init_key -#define _cairo_scaled_font_is_ft _mono_cairo_scaled_font_is_ft -#define _cairo_scaled_font_keys_equal _mono_cairo_scaled_font_keys_equal -#define _cairo_scaled_font_map_destroy _mono_cairo_scaled_font_map_destroy -#define _cairo_scaled_font_map_lock _mono_cairo_scaled_font_map_lock -#define _cairo_scaled_font_map_mutex _mono_cairo_scaled_font_map_mutex -#define _cairo_scaled_font_map_unlock _mono_cairo_scaled_font_map_unlock -#define _cairo_scaled_font_nil _mono_cairo_scaled_font_nil -#define _cairo_scaled_font_nil_objects _mono_cairo_scaled_font_nil_objects -#define _cairo_scaled_font_reset_cache _mono_cairo_scaled_font_reset_cache -#define _cairo_scaled_font_reset_static_data _mono_cairo_scaled_font_reset_static_data -#define _cairo_scaled_font_set_error _mono_cairo_scaled_font_set_error -#define _cairo_scaled_font_set_metrics _mono_cairo_scaled_font_set_metrics -#define _cairo_scaled_font_show_glyphs _mono_cairo_scaled_font_show_glyphs -#define _cairo_scaled_font_subset_create_glyph_names _mono_cairo_scaled_font_subset_create_glyph_names -#define _cairo_scaled_font_subsets_create_composite _mono_cairo_scaled_font_subsets_create_composite -#define _cairo_scaled_font_subsets_create_internal _mono_cairo_scaled_font_subsets_create_internal -#define _cairo_scaled_font_subsets_create_scaled _mono_cairo_scaled_font_subsets_create_scaled -#define _cairo_scaled_font_subsets_create_simple _mono_cairo_scaled_font_subsets_create_simple -#define _cairo_scaled_font_subsets_destroy _mono_cairo_scaled_font_subsets_destroy -#define _cairo_scaled_font_subsets_foreach_internal _mono_cairo_scaled_font_subsets_foreach_internal -#define _cairo_scaled_font_subsets_foreach_scaled _mono_cairo_scaled_font_subsets_foreach_scaled -#define _cairo_scaled_font_subsets_foreach_unscaled _mono_cairo_scaled_font_subsets_foreach_unscaled -#define _cairo_scaled_font_subsets_map_glyph _mono_cairo_scaled_font_subsets_map_glyph -#define _cairo_scaled_font_text_to_glyphs _mono_cairo_scaled_font_text_to_glyphs -#define _cairo_scaled_font_thaw_cache _mono_cairo_scaled_font_thaw_cache -#define _cairo_scaled_glyph_destroy _mono_cairo_scaled_glyph_destroy -#define _cairo_scaled_glyph_keys_equal _mono_cairo_scaled_glyph_keys_equal -#define _cairo_scaled_glyph_lookup _mono_cairo_scaled_glyph_lookup -#define _cairo_scaled_glyph_set_metrics _mono_cairo_scaled_glyph_set_metrics -#define _cairo_scaled_glyph_set_path _mono_cairo_scaled_glyph_set_path -#define _cairo_scaled_glyph_set_surface _mono_cairo_scaled_glyph_set_surface -#define _cairo_set_error _mono_cairo_set_error -#define _cairo_skip_list_delete _mono_cairo_skip_list_delete -#define _cairo_skip_list_delete_given _mono_cairo_skip_list_delete_given -#define _cairo_skip_list_find _mono_cairo_skip_list_find -#define _cairo_skip_list_fini _mono_cairo_skip_list_fini -#define _cairo_skip_list_init _mono_cairo_skip_list_init -#define _cairo_skip_list_insert _mono_cairo_skip_list_insert -#define _cairo_slope_compare _mono_cairo_slope_compare -#define _cairo_slope_compare_sgn _mono_cairo_slope_compare_sgn -#define _cairo_slope_init _mono_cairo_slope_init -#define _cairo_spline_add_point _mono_cairo_spline_add_point -#define _cairo_spline_decompose _mono_cairo_spline_decompose -#define _cairo_spline_decompose_into _mono_cairo_spline_decompose_into -#define _cairo_spline_fini _mono_cairo_spline_fini -#define _cairo_spline_init _mono_cairo_spline_init -#define _cairo_stock_color _mono_cairo_stock_color -#define _cairo_string_equal _mono_cairo_string_equal -#define _cairo_string_init_key _mono_cairo_string_init_key -#define _cairo_stroke_style_fini _mono_cairo_stroke_style_fini -#define _cairo_stroke_style_init _mono_cairo_stroke_style_init -#define _cairo_stroke_style_init_copy _mono_cairo_stroke_style_init_copy -#define _cairo_stroke_style_max_distance_from_path _mono_cairo_stroke_style_max_distance_from_path -#define _cairo_stroker_add_cap _mono_cairo_stroker_add_cap -#define _cairo_stroker_add_caps _mono_cairo_stroker_add_caps -#define _cairo_stroker_add_leading_cap _mono_cairo_stroker_add_leading_cap -#define _cairo_stroker_add_sub_edge _mono_cairo_stroker_add_sub_edge -#define _cairo_stroker_add_trailing_cap _mono_cairo_stroker_add_trailing_cap -#define _cairo_stroker_close_path _mono_cairo_stroker_close_path -#define _cairo_stroker_curve_to _mono_cairo_stroker_curve_to -#define _cairo_stroker_curve_to_dashed _mono_cairo_stroker_curve_to_dashed -#define _cairo_stroker_join _mono_cairo_stroker_join -#define _cairo_stroker_line_to _mono_cairo_stroker_line_to -#define _cairo_stroker_line_to_dashed _mono_cairo_stroker_line_to_dashed -#define _cairo_stroker_move_to _mono_cairo_stroker_move_to -#define _cairo_stroker_move_to_dashed _mono_cairo_stroker_move_to_dashed -#define _cairo_stroker_start_dash _mono_cairo_stroker_start_dash -#define _cairo_sub_font_collect _mono_cairo_sub_font_collect -#define _cairo_sub_font_create _mono_cairo_sub_font_create -#define _cairo_sub_font_destroy _mono_cairo_sub_font_destroy -#define _cairo_sub_font_glyph_collect _mono_cairo_sub_font_glyph_collect -#define _cairo_sub_font_glyph_destroy _mono_cairo_sub_font_glyph_destroy -#define _cairo_sub_font_glyph_init_key _mono_cairo_sub_font_glyph_init_key -#define _cairo_sub_font_glyph_pluck _mono_cairo_sub_font_glyph_pluck -#define _cairo_sub_font_glyphs_equal _mono_cairo_sub_font_glyphs_equal -#define _cairo_sub_font_init_key _mono_cairo_sub_font_init_key -#define _cairo_sub_font_lookup_glyph _mono_cairo_sub_font_lookup_glyph -#define _cairo_sub_font_map_glyph _mono_cairo_sub_font_map_glyph -#define _cairo_sub_font_pluck _mono_cairo_sub_font_pluck -#define _cairo_sub_fonts_equal _mono_cairo_sub_fonts_equal -#define _cairo_surface_acquire_dest_image _mono_cairo_surface_acquire_dest_image -#define _cairo_surface_acquire_source_image _mono_cairo_surface_acquire_source_image -#define _cairo_surface_allocate_clip_serial _mono_cairo_surface_allocate_clip_serial -#define _cairo_surface_clone_similar _mono_cairo_surface_clone_similar -#define _cairo_surface_composite _mono_cairo_surface_composite -#define _cairo_surface_composite_fixup_unbounded _mono_cairo_surface_composite_fixup_unbounded -#define _cairo_surface_composite_fixup_unbounded_internal _mono_cairo_surface_composite_fixup_unbounded_internal -#define _cairo_surface_composite_shape_fixup_unbounded _mono_cairo_surface_composite_shape_fixup_unbounded -#define _cairo_surface_composite_trapezoids _mono_cairo_surface_composite_trapezoids -#define _cairo_surface_copy_pattern_for_destination _mono_cairo_surface_copy_pattern_for_destination -#define _cairo_surface_create_in_error _mono_cairo_surface_create_in_error -#define _cairo_surface_create_similar_scratch _mono_cairo_surface_create_similar_scratch -#define _cairo_surface_create_similar_solid _mono_cairo_surface_create_similar_solid -#define _cairo_surface_fallback_clone_similar _mono_cairo_surface_fallback_clone_similar -#define _cairo_surface_fallback_composite _mono_cairo_surface_fallback_composite -#define _cairo_surface_fallback_composite_trapezoids _mono_cairo_surface_fallback_composite_trapezoids -#define _cairo_surface_fallback_fill _mono_cairo_surface_fallback_fill -#define _cairo_surface_fallback_fill_rectangles _mono_cairo_surface_fallback_fill_rectangles -#define _cairo_surface_fallback_mask _mono_cairo_surface_fallback_mask -#define _cairo_surface_fallback_paint _mono_cairo_surface_fallback_paint -#define _cairo_surface_fallback_show_glyphs _mono_cairo_surface_fallback_show_glyphs -#define _cairo_surface_fallback_snapshot _mono_cairo_surface_fallback_snapshot -#define _cairo_surface_fallback_stroke _mono_cairo_surface_fallback_stroke -#define _cairo_surface_fill _mono_cairo_surface_fill -#define _cairo_surface_fill_rectangle _mono_cairo_surface_fill_rectangle -#define _cairo_surface_fill_rectangles _mono_cairo_surface_fill_rectangles -#define _cairo_surface_fill_region _mono_cairo_surface_fill_region -#define _cairo_surface_fill_stroke _mono_cairo_surface_fill_stroke -#define _cairo_surface_get_clip _mono_cairo_surface_get_clip -#define _cairo_surface_get_clip_mode _mono_cairo_surface_get_clip_mode -#define _cairo_surface_get_current_clip_serial _mono_cairo_surface_get_current_clip_serial -#define _cairo_surface_get_extents _mono_cairo_surface_get_extents -#define _cairo_surface_has_device_transform _mono_cairo_surface_has_device_transform -#define _cairo_surface_init _mono_cairo_surface_init -#define _cairo_surface_intersect_clip_path _mono_cairo_surface_intersect_clip_path -#define _cairo_surface_is_image _mono_cairo_surface_is_image -#define _cairo_surface_is_meta _mono_cairo_surface_is_meta -#define _cairo_surface_is_paginated _mono_cairo_surface_is_paginated -#define _cairo_surface_is_similar _mono_cairo_surface_is_similar -#define _cairo_surface_is_xlib _mono_cairo_surface_is_xlib -#define _cairo_surface_mask _mono_cairo_surface_mask -#define _cairo_surface_mask_draw_func _mono_cairo_surface_mask_draw_func -#define _cairo_surface_nil _mono_cairo_surface_nil -#define _cairo_surface_nil_file_not_found _mono_cairo_surface_nil_file_not_found -#define _cairo_surface_nil_invalid_content _mono_cairo_surface_nil_invalid_content -#define _cairo_surface_nil_invalid_format _mono_cairo_surface_nil_invalid_format -#define _cairo_surface_nil_invalid_stride _mono_cairo_surface_nil_invalid_stride -#define _cairo_surface_nil_invalid_visual _mono_cairo_surface_nil_invalid_visual -#define _cairo_surface_nil_read_error _mono_cairo_surface_nil_read_error -#define _cairo_surface_nil_temp_file_error _mono_cairo_surface_nil_temp_file_error -#define _cairo_surface_nil_write_error _mono_cairo_surface_nil_write_error -#define _cairo_surface_old_show_glyphs _mono_cairo_surface_old_show_glyphs -#define _cairo_surface_old_show_glyphs_draw_func _mono_cairo_surface_old_show_glyphs_draw_func -#define _cairo_surface_paint _mono_cairo_surface_paint -#define _cairo_surface_release_dest_image _mono_cairo_surface_release_dest_image -#define _cairo_surface_release_source_image _mono_cairo_surface_release_source_image -#define _cairo_surface_reset _mono_cairo_surface_reset -#define _cairo_surface_reset_clip _mono_cairo_surface_reset_clip -#define _cairo_surface_set_clip _mono_cairo_surface_set_clip -#define _cairo_surface_set_clip_path_recursive _mono_cairo_surface_set_clip_path_recursive -#define _cairo_surface_set_clip_region _mono_cairo_surface_set_clip_region -#define _cairo_surface_set_device_scale _mono_cairo_surface_set_device_scale -#define _cairo_surface_set_empty_clip_path _mono_cairo_surface_set_empty_clip_path -#define _cairo_surface_set_error _mono_cairo_surface_set_error -#define _cairo_surface_set_font_options _mono_cairo_surface_set_font_options -#define _cairo_surface_set_resolution _mono_cairo_surface_set_resolution -#define _cairo_surface_show_glyphs _mono_cairo_surface_show_glyphs -#define _cairo_surface_snapshot _mono_cairo_surface_snapshot -#define _cairo_surface_stroke _mono_cairo_surface_stroke -#define _cairo_svg_document_destroy _mono_cairo_svg_document_destroy -#define _cairo_svg_document_emit_font_subset _mono_cairo_svg_document_emit_font_subset -#define _cairo_svg_document_finish _mono_cairo_svg_document_finish -#define _cairo_svg_internal_version_strings _mono_cairo_svg_internal_version_strings -#define _cairo_svg_path_close_path _mono_cairo_svg_path_close_path -#define _cairo_svg_path_curve_to _mono_cairo_svg_path_curve_to -#define _cairo_svg_path_line_to _mono_cairo_svg_path_line_to -#define _cairo_svg_path_move_to _mono_cairo_svg_path_move_to -#define _cairo_svg_surface_analyze_operation _mono_cairo_svg_surface_analyze_operation -#define _cairo_svg_surface_copy_page _mono_cairo_svg_surface_copy_page -#define _cairo_svg_surface_create_for_document _mono_cairo_svg_surface_create_for_document -#define _cairo_svg_surface_create_for_stream_internal _mono_cairo_svg_surface_create_for_stream_internal -#define _cairo_svg_surface_create_similar _mono_cairo_svg_surface_create_similar -#define _cairo_svg_surface_emit_alpha_filter _mono_cairo_svg_surface_emit_alpha_filter -#define _cairo_svg_surface_emit_composite_pattern _mono_cairo_svg_surface_emit_composite_pattern -#define _cairo_svg_surface_emit_fill_style _mono_cairo_svg_surface_emit_fill_style -#define _cairo_svg_surface_emit_operator _mono_cairo_svg_surface_emit_operator -#define _cairo_svg_surface_emit_paint _mono_cairo_svg_surface_emit_paint -#define _cairo_svg_surface_emit_path _mono_cairo_svg_surface_emit_path -#define _cairo_svg_surface_emit_pattern _mono_cairo_svg_surface_emit_pattern -#define _cairo_svg_surface_emit_pattern_extend _mono_cairo_svg_surface_emit_pattern_extend -#define _cairo_svg_surface_emit_pattern_stops _mono_cairo_svg_surface_emit_pattern_stops -#define _cairo_svg_surface_emit_stroke_style _mono_cairo_svg_surface_emit_stroke_style -#define _cairo_svg_surface_emit_transform _mono_cairo_svg_surface_emit_transform -#define _cairo_svg_surface_fill _mono_cairo_svg_surface_fill -#define _cairo_svg_surface_fill_stroke _mono_cairo_svg_surface_fill_stroke -#define _cairo_svg_surface_finish _mono_cairo_svg_surface_finish -#define _cairo_svg_surface_get_extents _mono_cairo_svg_surface_get_extents -#define _cairo_svg_surface_get_font_options _mono_cairo_svg_surface_get_font_options -#define _cairo_svg_surface_intersect_clip_path _mono_cairo_svg_surface_intersect_clip_path -#define _cairo_svg_surface_mask _mono_cairo_svg_surface_mask -#define _cairo_svg_surface_operation_supported _mono_cairo_svg_surface_operation_supported -#define _cairo_svg_surface_paint _mono_cairo_svg_surface_paint -#define _cairo_svg_surface_set_paginated_mode _mono_cairo_svg_surface_set_paginated_mode -#define _cairo_svg_surface_show_glyphs _mono_cairo_svg_surface_show_glyphs -#define _cairo_svg_surface_show_page _mono_cairo_svg_surface_show_page -#define _cairo_svg_surface_store_page _mono_cairo_svg_surface_store_page -#define _cairo_svg_surface_stroke _mono_cairo_svg_surface_stroke -#define _cairo_svg_version_strings _mono_cairo_svg_version_strings -#define _cairo_svg_versions _mono_cairo_svg_versions -#define _cairo_toy_font_face_backend _mono_cairo_toy_font_face_backend -#define _cairo_toy_font_face_create _mono_cairo_toy_font_face_create -#define _cairo_toy_font_face_destroy _mono_cairo_toy_font_face_destroy -#define _cairo_toy_font_face_fini _mono_cairo_toy_font_face_fini -#define _cairo_toy_font_face_hash_table_lock _mono_cairo_toy_font_face_hash_table_lock -#define _cairo_toy_font_face_hash_table_unlock _mono_cairo_toy_font_face_hash_table_unlock -#define _cairo_toy_font_face_init_key _mono_cairo_toy_font_face_init_key -#define _cairo_toy_font_face_keys_equal _mono_cairo_toy_font_face_keys_equal -#define _cairo_toy_font_face_scaled_font_create _mono_cairo_toy_font_face_scaled_font_create -#define _cairo_trapezoid_array_translate_and_scale _mono_cairo_trapezoid_array_translate_and_scale -#define _cairo_traps_add_trap_from_points _mono_cairo_traps_add_trap_from_points -#define _cairo_traps_contain _mono_cairo_traps_contain -#define _cairo_traps_extents _mono_cairo_traps_extents -#define _cairo_traps_extract_region _mono_cairo_traps_extract_region -#define _cairo_traps_fini _mono_cairo_traps_fini -#define _cairo_traps_get_limit _mono_cairo_traps_get_limit -#define _cairo_traps_init _mono_cairo_traps_init -#define _cairo_traps_init_box _mono_cairo_traps_init_box -#define _cairo_traps_limit _mono_cairo_traps_limit -#define _cairo_traps_status _mono_cairo_traps_status -#define _cairo_traps_tessellate_convex_quad _mono_cairo_traps_tessellate_convex_quad -#define _cairo_traps_tessellate_triangle _mono_cairo_traps_tessellate_triangle -#define _cairo_traps_translate _mono_cairo_traps_translate -#define _cairo_truetype_create_glyph_to_unicode_map _mono_cairo_truetype_create_glyph_to_unicode_map -#define _cairo_truetype_font_set_error _mono_cairo_truetype_font_set_error -#define _cairo_truetype_subset_fini _mono_cairo_truetype_subset_fini -#define _cairo_truetype_subset_init _mono_cairo_truetype_subset_init -#define _cairo_type1_fallback_fini _mono_cairo_type1_fallback_fini -#define _cairo_type1_fallback_init_binary _mono_cairo_type1_fallback_init_binary -#define _cairo_type1_fallback_init_hex _mono_cairo_type1_fallback_init_hex -#define _cairo_type1_fallback_init_internal _mono_cairo_type1_fallback_init_internal -#define _cairo_type1_scaled_font_is_type1 _mono_cairo_type1_scaled_font_is_type1 -#define _cairo_type1_subset_fini _mono_cairo_type1_subset_fini -#define _cairo_type1_subset_init _mono_cairo_type1_subset_init -#define _cairo_type2_charstrings_fini _mono_cairo_type2_charstrings_fini -#define _cairo_type2_charstrings_init _mono_cairo_type2_charstrings_init -#define _cairo_uint128_add _mono_cairo_uint128_add -#define _cairo_uint128_divrem _mono_cairo_uint128_divrem -#define _cairo_uint128_eq _mono_cairo_uint128_eq -#define _cairo_uint128_lsl _mono_cairo_uint128_lsl -#define _cairo_uint128_lt _mono_cairo_uint128_lt -#define _cairo_uint128_mul _mono_cairo_uint128_mul -#define _cairo_uint128_negate _mono_cairo_uint128_negate -#define _cairo_uint128_not _mono_cairo_uint128_not -#define _cairo_uint128_rsa _mono_cairo_uint128_rsa -#define _cairo_uint128_rsl _mono_cairo_uint128_rsl -#define _cairo_uint128_sub _mono_cairo_uint128_sub -#define _cairo_uint32_to_uint128 _mono_cairo_uint32_to_uint128 -#define _cairo_uint64_divrem _mono_cairo_uint64_divrem -#define _cairo_uint64_to_uint128 _mono_cairo_uint64_to_uint128 -#define _cairo_uint64x64_128_mul _mono_cairo_uint64x64_128_mul -#define _cairo_uint_96by64_32x64_divrem _mono_cairo_uint_96by64_32x64_divrem -#define _cairo_unscaled_font_destroy _mono_cairo_unscaled_font_destroy -#define _cairo_unscaled_font_init _mono_cairo_unscaled_font_init -#define _cairo_unscaled_font_is_ft _mono_cairo_unscaled_font_is_ft -#define _cairo_unscaled_font_reference _mono_cairo_unscaled_font_reference -#define _cairo_user_data_array_fini _mono_cairo_user_data_array_fini -#define _cairo_user_data_array_get_data _mono_cairo_user_data_array_get_data -#define _cairo_user_data_array_init _mono_cairo_user_data_array_init -#define _cairo_user_data_array_set_data _mono_cairo_user_data_array_set_data -#define _cairo_utf8_to_ucs4 _mono_cairo_utf8_to_ucs4 -#define _cairo_xlib_add_close_display_hook _mono_cairo_xlib_add_close_display_hook -#define _cairo_xlib_close_display _mono_cairo_xlib_close_display -#define _cairo_xlib_display_destroy _mono_cairo_xlib_display_destroy -#define _cairo_xlib_display_get _mono_cairo_xlib_display_get -#define _cairo_xlib_display_list _mono_cairo_xlib_display_list -#define _cairo_xlib_display_mutex _mono_cairo_xlib_display_mutex -#define _cairo_xlib_display_notify _mono_cairo_xlib_display_notify -#define _cairo_xlib_display_queue_resource _mono_cairo_xlib_display_queue_resource -#define _cairo_xlib_display_queue_work _mono_cairo_xlib_display_queue_work -#define _cairo_xlib_display_reference _mono_cairo_xlib_display_reference -#define _cairo_xlib_remove_close_display_hooks _mono_cairo_xlib_remove_close_display_hooks -#define _cairo_xlib_render_free_glyphs _mono_cairo_xlib_render_free_glyphs -#define _cairo_xlib_scaled_glyph_get_glyphset_info _mono_cairo_xlib_scaled_glyph_get_glyphset_info -#define _cairo_xlib_screen_get_gc _mono_cairo_xlib_screen_get_gc -#define _cairo_xlib_screen_get_visual_info _mono_cairo_xlib_screen_get_visual_info -#define _cairo_xlib_screen_info_close_display _mono_cairo_xlib_screen_info_close_display -#define _cairo_xlib_screen_info_destroy _mono_cairo_xlib_screen_info_destroy -#define _cairo_xlib_screen_info_get _mono_cairo_xlib_screen_info_get -#define _cairo_xlib_screen_info_reference _mono_cairo_xlib_screen_info_reference -#define _cairo_xlib_screen_put_gc _mono_cairo_xlib_screen_put_gc -#define _cairo_xlib_surface_acquire_dest_image _mono_cairo_xlib_surface_acquire_dest_image -#define _cairo_xlib_surface_acquire_source_image _mono_cairo_xlib_surface_acquire_source_image -#define _cairo_xlib_surface_clone_similar _mono_cairo_xlib_surface_clone_similar -#define _cairo_xlib_surface_composite _mono_cairo_xlib_surface_composite -#define _cairo_xlib_surface_composite_trapezoids _mono_cairo_xlib_surface_composite_trapezoids -#define _cairo_xlib_surface_create_internal _mono_cairo_xlib_surface_create_internal -#define _cairo_xlib_surface_create_similar _mono_cairo_xlib_surface_create_similar -#define _cairo_xlib_surface_create_similar_with_format _mono_cairo_xlib_surface_create_similar_with_format -#define _cairo_xlib_surface_detach_display _mono_cairo_xlib_surface_detach_display -#define _cairo_xlib_surface_emit_glyphs_chunk _mono_cairo_xlib_surface_emit_glyphs_chunk -#define _cairo_xlib_surface_ensure_dst_picture _mono_cairo_xlib_surface_ensure_dst_picture -#define _cairo_xlib_surface_ensure_gc _mono_cairo_xlib_surface_ensure_gc -#define _cairo_xlib_surface_fill_rectangles _mono_cairo_xlib_surface_fill_rectangles -#define _cairo_xlib_surface_finish _mono_cairo_xlib_surface_finish -#define _cairo_xlib_surface_get_extents _mono_cairo_xlib_surface_get_extents -#define _cairo_xlib_surface_get_font_options _mono_cairo_xlib_surface_get_font_options -#define _cairo_xlib_surface_is_similar _mono_cairo_xlib_surface_is_similar -#define _cairo_xlib_surface_release_dest_image _mono_cairo_xlib_surface_release_dest_image -#define _cairo_xlib_surface_release_source_image _mono_cairo_xlib_surface_release_source_image -#define _cairo_xlib_surface_remove_scaled_font _mono_cairo_xlib_surface_remove_scaled_font -#define _cairo_xlib_surface_reset _mono_cairo_xlib_surface_reset -#define _cairo_xlib_surface_same_screen _mono_cairo_xlib_surface_same_screen -#define _cairo_xlib_surface_scaled_font_fini _mono_cairo_xlib_surface_scaled_font_fini -#define _cairo_xlib_surface_scaled_glyph_fini _mono_cairo_xlib_surface_scaled_glyph_fini -#define _cairo_xlib_surface_set_attributes _mono_cairo_xlib_surface_set_attributes -#define _cairo_xlib_surface_set_clip_region _mono_cairo_xlib_surface_set_clip_region -#define _cairo_xlib_surface_set_gc_clip_rects _mono_cairo_xlib_surface_set_gc_clip_rects -#define _cairo_xlib_surface_set_picture_clip_rects _mono_cairo_xlib_surface_set_picture_clip_rects -#define _cairo_xlib_surface_set_repeat _mono_cairo_xlib_surface_set_repeat -#define _cairo_xlib_surface_show_glyphs _mono_cairo_xlib_surface_show_glyphs -#define _cairo_xlib_visual_info_create _mono_cairo_xlib_visual_info_create -#define _cairo_xlib_visual_info_destroy _mono_cairo_xlib_visual_info_destroy -#define cairo_analysis_surface_backend mono_cairo_analysis_surface_backend -#define cairo_append_path mono_cairo_append_path -#define cairo_arc mono_cairo_arc -#define cairo_arc_negative mono_cairo_arc_negative -#define cairo_bo_event_compare_abstract mono_cairo_bo_event_compare_abstract -#define cairo_bo_event_compare_pointers mono_cairo_bo_event_compare_pointers -#define cairo_cff_font_create_cid_fontdict mono_cairo_cff_font_create_cid_fontdict -#define cairo_cff_font_destroy mono_cairo_cff_font_destroy -#define cairo_cff_font_read_global_subroutines mono_cairo_cff_font_read_global_subroutines -#define cairo_cff_font_read_header mono_cairo_cff_font_read_header -#define cairo_cff_font_read_name mono_cairo_cff_font_read_name -#define cairo_cff_font_read_private_dict mono_cairo_cff_font_read_private_dict -#define cairo_cff_font_read_strings mono_cairo_cff_font_read_strings -#define cairo_cff_font_read_top_dict mono_cairo_cff_font_read_top_dict -#define cairo_cff_font_set_ros_strings mono_cairo_cff_font_set_ros_strings -#define cairo_cff_font_set_topdict_operator_to_cur_pos mono_cairo_cff_font_set_topdict_operator_to_cur_pos -#define cairo_cff_font_subset_dict_strings mono_cairo_cff_font_subset_dict_strings -#define cairo_cff_font_write_charset mono_cairo_cff_font_write_charset -#define cairo_cff_font_write_charstrings mono_cairo_cff_font_write_charstrings -#define cairo_cff_font_write_cid_fontdict mono_cairo_cff_font_write_cid_fontdict -#define cairo_cff_font_write_cid_private_dict_and_local_sub mono_cairo_cff_font_write_cid_private_dict_and_local_sub -#define cairo_cff_font_write_fdselect mono_cairo_cff_font_write_fdselect -#define cairo_cff_font_write_global_subrs mono_cairo_cff_font_write_global_subrs -#define cairo_cff_font_write_header mono_cairo_cff_font_write_header -#define cairo_cff_font_write_local_sub mono_cairo_cff_font_write_local_sub -#define cairo_cff_font_write_name mono_cairo_cff_font_write_name -#define cairo_cff_font_write_private_dict mono_cairo_cff_font_write_private_dict -#define cairo_cff_font_write_strings mono_cairo_cff_font_write_strings -#define cairo_cff_font_write_subset mono_cairo_cff_font_write_subset -#define cairo_cff_font_write_top_dict mono_cairo_cff_font_write_top_dict -#define cairo_clip mono_cairo_clip -#define cairo_clip_extents mono_cairo_clip_extents -#define cairo_clip_preserve mono_cairo_clip_preserve -#define cairo_close_path mono_cairo_close_path -#define cairo_color_black mono_cairo_color_black -#define cairo_color_transparent mono_cairo_color_transparent -#define cairo_color_white mono_cairo_color_white -#define cairo_copy_clip_rectangle_list mono_cairo_copy_clip_rectangle_list -#define cairo_copy_page mono_cairo_copy_page -#define cairo_copy_path mono_cairo_copy_path -#define cairo_copy_path_flat mono_cairo_copy_path_flat -#define cairo_create mono_cairo_create -#define cairo_curve_to mono_cairo_curve_to -#define cairo_debug_reset_static_data mono_cairo_debug_reset_static_data -#define cairo_deflate_stream_deflate mono_cairo_deflate_stream_deflate -#define cairo_destroy mono_cairo_destroy -#define cairo_device_to_user mono_cairo_device_to_user -#define cairo_device_to_user_distance mono_cairo_device_to_user_distance -#define cairo_dict_write_operator mono_cairo_dict_write_operator -#define cairo_fill mono_cairo_fill -#define cairo_fill_extents mono_cairo_fill_extents -#define cairo_fill_preserve mono_cairo_fill_preserve -#define cairo_font_extents mono_cairo_font_extents -#define cairo_font_face_destroy mono_cairo_font_face_destroy -#define cairo_font_face_get_reference_count mono_cairo_font_face_get_reference_count -#define cairo_font_face_get_type mono_cairo_font_face_get_type -#define cairo_font_face_get_user_data mono_cairo_font_face_get_user_data -#define cairo_font_face_reference mono_cairo_font_face_reference -#define cairo_font_face_set_user_data mono_cairo_font_face_set_user_data -#define cairo_font_face_status mono_cairo_font_face_status -#define cairo_font_options_copy mono_cairo_font_options_copy -#define cairo_font_options_create mono_cairo_font_options_create -#define cairo_font_options_destroy mono_cairo_font_options_destroy -#define cairo_font_options_equal mono_cairo_font_options_equal -#define cairo_font_options_get_antialias mono_cairo_font_options_get_antialias -#define cairo_font_options_get_hint_metrics mono_cairo_font_options_get_hint_metrics -#define cairo_font_options_get_hint_style mono_cairo_font_options_get_hint_style -#define cairo_font_options_get_subpixel_order mono_cairo_font_options_get_subpixel_order -#define cairo_font_options_hash mono_cairo_font_options_hash -#define cairo_font_options_merge mono_cairo_font_options_merge -#define cairo_font_options_set_antialias mono_cairo_font_options_set_antialias -#define cairo_font_options_set_hint_metrics mono_cairo_font_options_set_hint_metrics -#define cairo_font_options_set_hint_style mono_cairo_font_options_set_hint_style -#define cairo_font_options_set_subpixel_order mono_cairo_font_options_set_subpixel_order -#define cairo_font_options_status mono_cairo_font_options_status -#define cairo_format_stride_for_width mono_cairo_format_stride_for_width -#define cairo_ft_font_face_create_for_ft_face mono_cairo_ft_font_face_create_for_ft_face -#define cairo_ft_font_face_create_for_pattern mono_cairo_ft_font_face_create_for_pattern -#define cairo_ft_font_options_substitute mono_cairo_ft_font_options_substitute -#define cairo_ft_scaled_font_backend mono_cairo_ft_scaled_font_backend -#define cairo_ft_scaled_font_lock_face mono_cairo_ft_scaled_font_lock_face -#define cairo_ft_scaled_font_unlock_face mono_cairo_ft_scaled_font_unlock_face -#define cairo_ft_unscaled_font_backend mono_cairo_ft_unscaled_font_backend -#define cairo_ft_unscaled_font_map mono_cairo_ft_unscaled_font_map -#define cairo_get_antialias mono_cairo_get_antialias -#define cairo_get_current_point mono_cairo_get_current_point -#define cairo_get_dash mono_cairo_get_dash -#define cairo_get_dash_count mono_cairo_get_dash_count -#define cairo_get_fill_rule mono_cairo_get_fill_rule -#define cairo_get_font_face mono_cairo_get_font_face -#define cairo_get_font_matrix mono_cairo_get_font_matrix -#define cairo_get_font_options mono_cairo_get_font_options -#define cairo_get_group_target mono_cairo_get_group_target -#define cairo_get_line_cap mono_cairo_get_line_cap -#define cairo_get_line_join mono_cairo_get_line_join -#define cairo_get_line_width mono_cairo_get_line_width -#define cairo_get_matrix mono_cairo_get_matrix -#define cairo_get_miter_limit mono_cairo_get_miter_limit -#define cairo_get_operator mono_cairo_get_operator -#define cairo_get_reference_count mono_cairo_get_reference_count -#define cairo_get_scaled_font mono_cairo_get_scaled_font -#define cairo_get_source mono_cairo_get_source -#define cairo_get_target mono_cairo_get_target -#define cairo_get_tolerance mono_cairo_get_tolerance -#define cairo_get_user_data mono_cairo_get_user_data -#define cairo_glyph_extents mono_cairo_glyph_extents -#define cairo_glyph_path mono_cairo_glyph_path -#define cairo_has_current_point mono_cairo_has_current_point -#define cairo_identity_matrix mono_cairo_identity_matrix -#define cairo_image_surface_backend mono_cairo_image_surface_backend -#define cairo_image_surface_create mono_cairo_image_surface_create -#define cairo_image_surface_create_for_data mono_cairo_image_surface_create_for_data -#define cairo_image_surface_create_from_png mono_cairo_image_surface_create_from_png -#define cairo_image_surface_create_from_png_stream mono_cairo_image_surface_create_from_png_stream -#define cairo_image_surface_get_data mono_cairo_image_surface_get_data -#define cairo_image_surface_get_format mono_cairo_image_surface_get_format -#define cairo_image_surface_get_height mono_cairo_image_surface_get_height -#define cairo_image_surface_get_stride mono_cairo_image_surface_get_stride -#define cairo_image_surface_get_width mono_cairo_image_surface_get_width -#define cairo_in_fill mono_cairo_in_fill -#define cairo_in_stroke mono_cairo_in_stroke -#define cairo_line_to mono_cairo_line_to -#define cairo_mask mono_cairo_mask -#define cairo_mask_surface mono_cairo_mask_surface -#define cairo_matrix_init mono_cairo_matrix_init -#define cairo_matrix_init_identity mono_cairo_matrix_init_identity -#define cairo_matrix_init_rotate mono_cairo_matrix_init_rotate -#define cairo_matrix_init_scale mono_cairo_matrix_init_scale -#define cairo_matrix_init_translate mono_cairo_matrix_init_translate -#define cairo_matrix_invert mono_cairo_matrix_invert -#define cairo_matrix_multiply mono_cairo_matrix_multiply -#define cairo_matrix_rotate mono_cairo_matrix_rotate -#define cairo_matrix_scale mono_cairo_matrix_scale -#define cairo_matrix_transform_distance mono_cairo_matrix_transform_distance -#define cairo_matrix_transform_point mono_cairo_matrix_transform_point -#define cairo_matrix_translate mono_cairo_matrix_translate -#define cairo_meta_surface_backend mono_cairo_meta_surface_backend -#define cairo_move_to mono_cairo_move_to -#define cairo_new_path mono_cairo_new_path -#define cairo_new_sub_path mono_cairo_new_sub_path -#define cairo_paginated_surface_backend mono_cairo_paginated_surface_backend -#define cairo_paint mono_cairo_paint -#define cairo_paint_with_alpha mono_cairo_paint_with_alpha -#define cairo_path_destroy mono_cairo_path_destroy -#define cairo_path_extents mono_cairo_path_extents -#define cairo_pattern_add_color_stop_rgb mono_cairo_pattern_add_color_stop_rgb -#define cairo_pattern_add_color_stop_rgba mono_cairo_pattern_add_color_stop_rgba -#define cairo_pattern_create_for_surface mono_cairo_pattern_create_for_surface -#define cairo_pattern_create_linear mono_cairo_pattern_create_linear -#define cairo_pattern_create_radial mono_cairo_pattern_create_radial -#define cairo_pattern_create_rgb mono_cairo_pattern_create_rgb -#define cairo_pattern_create_rgba mono_cairo_pattern_create_rgba -#define cairo_pattern_destroy mono_cairo_pattern_destroy -#define cairo_pattern_get_color_stop_count mono_cairo_pattern_get_color_stop_count -#define cairo_pattern_get_color_stop_rgba mono_cairo_pattern_get_color_stop_rgba -#define cairo_pattern_get_extend mono_cairo_pattern_get_extend -#define cairo_pattern_get_filter mono_cairo_pattern_get_filter -#define cairo_pattern_get_linear_points mono_cairo_pattern_get_linear_points -#define cairo_pattern_get_matrix mono_cairo_pattern_get_matrix -#define cairo_pattern_get_radial_circles mono_cairo_pattern_get_radial_circles -#define cairo_pattern_get_reference_count mono_cairo_pattern_get_reference_count -#define cairo_pattern_get_rgba mono_cairo_pattern_get_rgba -#define cairo_pattern_get_surface mono_cairo_pattern_get_surface -#define cairo_pattern_get_type mono_cairo_pattern_get_type -#define cairo_pattern_get_user_data mono_cairo_pattern_get_user_data -#define cairo_pattern_none mono_cairo_pattern_none -#define cairo_pattern_reference mono_cairo_pattern_reference -#define cairo_pattern_set_extend mono_cairo_pattern_set_extend -#define cairo_pattern_set_filter mono_cairo_pattern_set_filter -#define cairo_pattern_set_matrix mono_cairo_pattern_set_matrix -#define cairo_pattern_set_user_data mono_cairo_pattern_set_user_data -#define cairo_pattern_status mono_cairo_pattern_status -#define cairo_pdf_surface_backend mono_cairo_pdf_surface_backend -#define cairo_pdf_surface_create mono_cairo_pdf_surface_create -#define cairo_pdf_surface_create_for_stream mono_cairo_pdf_surface_create_for_stream -#define cairo_pdf_surface_emit_alpha_linear_function mono_cairo_pdf_surface_emit_alpha_linear_function -#define cairo_pdf_surface_emit_rgb_linear_function mono_cairo_pdf_surface_emit_rgb_linear_function -#define cairo_pdf_surface_emit_transparency_group mono_cairo_pdf_surface_emit_transparency_group -#define cairo_pdf_surface_paginated_backend mono_cairo_pdf_surface_paginated_backend -#define cairo_pdf_surface_set_size mono_cairo_pdf_surface_set_size -#define cairo_pop_group mono_cairo_pop_group -#define cairo_pop_group_to_source mono_cairo_pop_group_to_source -#define cairo_ps_get_levels mono_cairo_ps_get_levels -#define cairo_ps_level_to_string mono_cairo_ps_level_to_string -#define cairo_ps_surface_backend mono_cairo_ps_surface_backend -#define cairo_ps_surface_create mono_cairo_ps_surface_create -#define cairo_ps_surface_create_for_stream mono_cairo_ps_surface_create_for_stream -#define cairo_ps_surface_dsc_begin_page_setup mono_cairo_ps_surface_dsc_begin_page_setup -#define cairo_ps_surface_dsc_begin_setup mono_cairo_ps_surface_dsc_begin_setup -#define cairo_ps_surface_dsc_comment mono_cairo_ps_surface_dsc_comment -#define cairo_ps_surface_get_eps mono_cairo_ps_surface_get_eps -#define cairo_ps_surface_paginated_backend mono_cairo_ps_surface_paginated_backend -#define cairo_ps_surface_restrict_to_level mono_cairo_ps_surface_restrict_to_level -#define cairo_ps_surface_set_eps mono_cairo_ps_surface_set_eps -#define cairo_ps_surface_set_size mono_cairo_ps_surface_set_size -#define cairo_push_group mono_cairo_push_group -#define cairo_push_group_with_content mono_cairo_push_group_with_content -#define cairo_rectangle mono_cairo_rectangle -#define cairo_rectangle_list_destroy mono_cairo_rectangle_list_destroy -#define cairo_reference mono_cairo_reference -#define cairo_rel_curve_to mono_cairo_rel_curve_to -#define cairo_rel_line_to mono_cairo_rel_line_to -#define cairo_rel_move_to mono_cairo_rel_move_to -#define cairo_reset_clip mono_cairo_reset_clip -#define cairo_restore mono_cairo_restore -#define cairo_rotate mono_cairo_rotate -#define cairo_save mono_cairo_save -#define cairo_scale mono_cairo_scale -#define cairo_scaled_font_create mono_cairo_scaled_font_create -#define cairo_scaled_font_destroy mono_cairo_scaled_font_destroy -#define cairo_scaled_font_extents mono_cairo_scaled_font_extents -#define cairo_scaled_font_get_ctm mono_cairo_scaled_font_get_ctm -#define cairo_scaled_font_get_font_face mono_cairo_scaled_font_get_font_face -#define cairo_scaled_font_get_font_matrix mono_cairo_scaled_font_get_font_matrix -#define cairo_scaled_font_get_font_options mono_cairo_scaled_font_get_font_options -#define cairo_scaled_font_get_reference_count mono_cairo_scaled_font_get_reference_count -#define cairo_scaled_font_get_type mono_cairo_scaled_font_get_type -#define cairo_scaled_font_get_user_data mono_cairo_scaled_font_get_user_data -#define cairo_scaled_font_glyph_extents mono_cairo_scaled_font_glyph_extents -#define cairo_scaled_font_map mono_cairo_scaled_font_map -#define cairo_scaled_font_reference mono_cairo_scaled_font_reference -#define cairo_scaled_font_set_user_data mono_cairo_scaled_font_set_user_data -#define cairo_scaled_font_status mono_cairo_scaled_font_status -#define cairo_scaled_font_text_extents mono_cairo_scaled_font_text_extents -#define cairo_select_font_face mono_cairo_select_font_face -#define cairo_set_antialias mono_cairo_set_antialias -#define cairo_set_dash mono_cairo_set_dash -#define cairo_set_fill_rule mono_cairo_set_fill_rule -#define cairo_set_font_face mono_cairo_set_font_face -#define cairo_set_font_matrix mono_cairo_set_font_matrix -#define cairo_set_font_options mono_cairo_set_font_options -#define cairo_set_font_size mono_cairo_set_font_size -#define cairo_set_line_cap mono_cairo_set_line_cap -#define cairo_set_line_join mono_cairo_set_line_join -#define cairo_set_line_width mono_cairo_set_line_width -#define cairo_set_matrix mono_cairo_set_matrix -#define cairo_set_miter_limit mono_cairo_set_miter_limit -#define cairo_set_operator mono_cairo_set_operator -#define cairo_set_scaled_font mono_cairo_set_scaled_font -#define cairo_set_source mono_cairo_set_source -#define cairo_set_source_rgb mono_cairo_set_source_rgb -#define cairo_set_source_rgba mono_cairo_set_source_rgba -#define cairo_set_source_surface mono_cairo_set_source_surface -#define cairo_set_tolerance mono_cairo_set_tolerance -#define cairo_set_user_data mono_cairo_set_user_data -#define cairo_show_glyphs mono_cairo_show_glyphs -#define cairo_show_page mono_cairo_show_page -#define cairo_show_text mono_cairo_show_text -#define cairo_status mono_cairo_status -#define cairo_status_to_string mono_cairo_status_to_string -#define cairo_stroke mono_cairo_stroke -#define cairo_stroke_extents mono_cairo_stroke_extents -#define cairo_stroke_preserve mono_cairo_stroke_preserve -#define cairo_surface_copy_page mono_cairo_surface_copy_page -#define cairo_surface_create_similar mono_cairo_surface_create_similar -#define cairo_surface_destroy mono_cairo_surface_destroy -#define cairo_surface_finish mono_cairo_surface_finish -#define cairo_surface_flush mono_cairo_surface_flush -#define cairo_surface_get_content mono_cairo_surface_get_content -#define cairo_surface_get_device_offset mono_cairo_surface_get_device_offset -#define cairo_surface_get_font_options mono_cairo_surface_get_font_options -#define cairo_surface_get_reference_count mono_cairo_surface_get_reference_count -#define cairo_surface_get_type mono_cairo_surface_get_type -#define cairo_surface_get_user_data mono_cairo_surface_get_user_data -#define cairo_surface_mark_dirty mono_cairo_surface_mark_dirty -#define cairo_surface_mark_dirty_rectangle mono_cairo_surface_mark_dirty_rectangle -#define cairo_surface_reference mono_cairo_surface_reference -#define cairo_surface_set_device_offset mono_cairo_surface_set_device_offset -#define cairo_surface_set_fallback_resolution mono_cairo_surface_set_fallback_resolution -#define cairo_surface_set_user_data mono_cairo_surface_set_user_data -#define cairo_surface_show_page mono_cairo_surface_show_page -#define cairo_surface_status mono_cairo_surface_status -#define cairo_surface_write_to_png mono_cairo_surface_write_to_png -#define cairo_surface_write_to_png_stream mono_cairo_surface_write_to_png_stream -#define cairo_svg_get_versions mono_cairo_svg_get_versions -#define cairo_svg_surface_backend mono_cairo_svg_surface_backend -#define cairo_svg_surface_create mono_cairo_svg_surface_create -#define cairo_svg_surface_create_for_stream mono_cairo_svg_surface_create_for_stream -#define cairo_svg_surface_paginated_backend mono_cairo_svg_surface_paginated_backend -#define cairo_svg_surface_restrict_to_version mono_cairo_svg_surface_restrict_to_version -#define cairo_svg_version_to_string mono_cairo_svg_version_to_string -#define cairo_text_extents mono_cairo_text_extents -#define cairo_text_path mono_cairo_text_path -#define cairo_toy_font_face_hash_table mono_cairo_toy_font_face_hash_table -#define cairo_transform mono_cairo_transform -#define cairo_translate mono_cairo_translate -#define cairo_truetype_font_add_truetype_table mono_cairo_truetype_font_add_truetype_table -#define cairo_truetype_font_align_output mono_cairo_truetype_font_align_output -#define cairo_truetype_font_allocate_write_buffer mono_cairo_truetype_font_allocate_write_buffer -#define cairo_truetype_font_calculate_checksum mono_cairo_truetype_font_calculate_checksum -#define cairo_truetype_font_check_boundary mono_cairo_truetype_font_check_boundary -#define cairo_truetype_font_destroy mono_cairo_truetype_font_destroy -#define cairo_truetype_font_use_glyph mono_cairo_truetype_font_use_glyph -#define cairo_truetype_font_write mono_cairo_truetype_font_write -#define cairo_truetype_font_write_be16 mono_cairo_truetype_font_write_be16 -#define cairo_truetype_font_write_be32 mono_cairo_truetype_font_write_be32 -#define cairo_truetype_font_write_cmap_table mono_cairo_truetype_font_write_cmap_table -#define cairo_truetype_font_write_generic_table mono_cairo_truetype_font_write_generic_table -#define cairo_truetype_font_write_glyf_table mono_cairo_truetype_font_write_glyf_table -#define cairo_truetype_font_write_head_table mono_cairo_truetype_font_write_head_table -#define cairo_truetype_font_write_hhea_table mono_cairo_truetype_font_write_hhea_table -#define cairo_truetype_font_write_hmtx_table mono_cairo_truetype_font_write_hmtx_table -#define cairo_truetype_font_write_loca_table mono_cairo_truetype_font_write_loca_table -#define cairo_truetype_font_write_maxp_table mono_cairo_truetype_font_write_maxp_table -#define cairo_type1_font_create mono_cairo_type1_font_create -#define cairo_type1_font_create_charstring mono_cairo_type1_font_create_charstring -#define cairo_type1_font_destroy mono_cairo_type1_font_destroy -#define cairo_type1_font_subset_destroy mono_cairo_type1_font_subset_destroy -#define cairo_type1_font_subset_for_each_glyph mono_cairo_type1_font_subset_for_each_glyph -#define cairo_type1_font_subset_get_glyph_names_and_widths mono_cairo_type1_font_subset_get_glyph_names_and_widths -#define cairo_type1_font_subset_look_for_seac mono_cairo_type1_font_subset_look_for_seac -#define cairo_type1_font_subset_lookup_glyph mono_cairo_type1_font_subset_lookup_glyph -#define cairo_type1_font_subset_use_glyph mono_cairo_type1_font_subset_use_glyph -#define cairo_type1_font_subset_write_encrypted mono_cairo_type1_font_subset_write_encrypted -#define cairo_type1_write_stream mono_cairo_type1_write_stream -#define cairo_type1_write_stream_encrypted mono_cairo_type1_write_stream_encrypted -#define cairo_user_to_device mono_cairo_user_to_device -#define cairo_user_to_device_distance mono_cairo_user_to_device_distance -#define cairo_version mono_cairo_version -#define cairo_version_string mono_cairo_version_string -#define cairo_xlib_surface_backend mono_cairo_xlib_surface_backend -#define cairo_xlib_surface_create mono_cairo_xlib_surface_create -#define cairo_xlib_surface_create_for_bitmap mono_cairo_xlib_surface_create_for_bitmap -#define cairo_xlib_surface_create_with_xrender_format mono_cairo_xlib_surface_create_with_xrender_format -#define cairo_xlib_surface_get_depth mono_cairo_xlib_surface_get_depth -#define cairo_xlib_surface_get_display mono_cairo_xlib_surface_get_display -#define cairo_xlib_surface_get_drawable mono_cairo_xlib_surface_get_drawable -#define cairo_xlib_surface_get_height mono_cairo_xlib_surface_get_height -#define cairo_xlib_surface_get_screen mono_cairo_xlib_surface_get_screen -#define cairo_xlib_surface_get_visual mono_cairo_xlib_surface_get_visual -#define cairo_xlib_surface_get_width mono_cairo_xlib_surface_get_width -#define cairo_xlib_surface_get_xrender_format mono_cairo_xlib_surface_get_xrender_format -#define cairo_xlib_surface_set_drawable mono_cairo_xlib_surface_set_drawable -#define cairo_xlib_surface_set_size mono_cairo_xlib_surface_set_size -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-fixed.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-fixed.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-fixed.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-fixed.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-fixed-private.h" diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-fixed-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-fixed-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-fixed-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-fixed-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_FIXED_PRIVATE_H -#define CAIRO_FIXED_PRIVATE_H - -#include "cairo-fixed-type-private.h" - -#include "cairo-wideint-private.h" - -/* Implementation */ - -#if (CAIRO_FIXED_BITS != 32) -# error CAIRO_FIXED_BITS must be 32, and the type must be a 32-bit type. -# error To remove this limitation, you will have to fix the tesselator. -#endif - -#define CAIRO_FIXED_ONE ((cairo_fixed_t)(1 << CAIRO_FIXED_FRAC_BITS)) -#define CAIRO_FIXED_ONE_DOUBLE ((double)(1 << CAIRO_FIXED_FRAC_BITS)) -#define CAIRO_FIXED_EPSILON ((cairo_fixed_t)(1)) - -#define CAIRO_FIXED_FRAC_MASK (((cairo_fixed_unsigned_t)(-1)) >> (CAIRO_FIXED_BITS - CAIRO_FIXED_FRAC_BITS)) -#define CAIRO_FIXED_WHOLE_MASK (~CAIRO_FIXED_FRAC_MASK) - -static inline cairo_fixed_t -_cairo_fixed_from_int (int i) -{ - return i << CAIRO_FIXED_FRAC_BITS; -} - -/* This is the "magic number" approach to converting a double into fixed - * point as described here: - * - * http://www.stereopsis.com/sree/fpu2006.html (an overview) - * http://www.d6.com/users/checker/pdfs/gdmfp.pdf (in detail) - * - * The basic idea is to add a large enough number to the double that the - * literal floating point is moved up to the extent that it forces the - * double's value to be shifted down to the bottom of the mantissa (to make - * room for the large number being added in). Since the mantissa is, at a - * given moment in time, a fixed point integer itself, one can convert a - * float to various fixed point representations by moving around the point - * of a floating point number through arithmetic operations. This behavior - * is reliable on most modern platforms as it is mandated by the IEEE-754 - * standard for floating point arithmetic. - * - * For our purposes, a "magic number" must be carefully selected that is - * both large enough to produce the desired point-shifting effect, and also - * has no lower bits in its representation that would interfere with our - * value at the bottom of the mantissa. The magic number is calculated as - * follows: - * - * (2 ^ (MANTISSA_SIZE - FRACTIONAL_SIZE)) * 1.5 - * - * where in our case: - * - MANTISSA_SIZE for 64-bit doubles is 52 - * - FRACTIONAL_SIZE for 16.16 fixed point is 16 - * - * Although this approach provides a very large speedup of this function - * on a wide-array of systems, it does come with two caveats: - * - * 1) It uses banker's rounding as opposed to arithmetic rounding. - * 2) It doesn't function properly if the FPU is in single-precision - * mode. - */ - -/* The 16.16 number must always be available */ -#define CAIRO_MAGIC_NUMBER_FIXED_16_16 (103079215104.0) - -#if CAIRO_FIXED_BITS <= 32 -#define CAIRO_MAGIC_NUMBER_FIXED ((1LL << (52 - CAIRO_FIXED_FRAC_BITS)) * 1.5) - -/* For 32-bit fixed point numbers */ -static inline cairo_fixed_t -_cairo_fixed_from_double (double d) -{ - union { - double d; - int32_t i[2]; - } u; - - u.d = d + CAIRO_MAGIC_NUMBER_FIXED; -#ifdef FLOAT_WORDS_BIGENDIAN - return u.i[1]; -#else - return u.i[0]; -#endif -} - -#else -# error Please define a magic number for your fixed point type! -# error See cairo-fixed-private.h for details. -#endif - -static inline cairo_fixed_t -_cairo_fixed_from_26_6 (uint32_t i) -{ -#if CAIRO_FIXED_FRAC_BITS > 6 - return i << (CAIRO_FIXED_FRAC_BITS - 6); -#else - return i >> (6 - CAIRO_FIXED_FRAC_BITS); -#endif -} - -static inline double -_cairo_fixed_to_double (cairo_fixed_t f) -{ - return ((double) f) / CAIRO_FIXED_ONE_DOUBLE; -} - -static inline int -_cairo_fixed_is_integer (cairo_fixed_t f) -{ - return (f & CAIRO_FIXED_FRAC_MASK) == 0; -} - -static inline int -_cairo_fixed_integer_part (cairo_fixed_t f) -{ - return f >> CAIRO_FIXED_FRAC_BITS; -} - -static inline int -_cairo_fixed_integer_floor (cairo_fixed_t f) -{ - if (f >= 0) - return f >> CAIRO_FIXED_FRAC_BITS; - else - return -((-f - 1) >> CAIRO_FIXED_FRAC_BITS) - 1; -} - -static inline int -_cairo_fixed_integer_ceil (cairo_fixed_t f) -{ - if (f > 0) - return ((f - 1)>>CAIRO_FIXED_FRAC_BITS) + 1; - else - return - (-f >> CAIRO_FIXED_FRAC_BITS); -} - -/* A bunch of explicit 16.16 operators; we need these - * to interface with pixman and other backends that require - * 16.16 fixed point types. - */ -static inline cairo_fixed_16_16_t -_cairo_fixed_to_16_16 (cairo_fixed_t f) -{ -#if (CAIRO_FIXED_FRAC_BITS == 16) && (CAIRO_FIXED_BITS == 32) - return f; -#elif CAIRO_FIXED_FRAC_BITS > 16 - /* We're just dropping the low bits, so we won't ever got over/underflow here */ - return f >> (CAIRO_FIXED_FRAC_BITS - 16); -#else - cairo_fixed_16_16_t x; - - /* Handle overflow/underflow by clamping to the lowest/highest - * value representable as 16.16 - */ - if ((f >> CAIRO_FIXED_FRAC_BITS) < INT16_MIN) { - x = INT32_MIN; - } else if ((f >> CAIRO_FIXED_FRAC_BITS) > INT16_MAX) { - x = INT32_MAX; - } else { - x = f << (16 - CAIRO_FIXED_FRAC_BITS); - } - - return x; -#endif -} - -static inline cairo_fixed_16_16_t -_cairo_fixed_16_16_from_double (double d) -{ - union { - double d; - int32_t i[2]; - } u; - - u.d = d + CAIRO_MAGIC_NUMBER_FIXED_16_16; -#ifdef FLOAT_WORDS_BIGENDIAN - return u.i[1]; -#else - return u.i[0]; -#endif -} - -#if CAIRO_FIXED_BITS == 32 - -static inline cairo_fixed_t -_cairo_fixed_mul (cairo_fixed_t a, cairo_fixed_t b) -{ - cairo_int64_t temp = _cairo_int32x32_64_mul (a, b); - return _cairo_int64_to_int32(_cairo_int64_rsl (temp, CAIRO_FIXED_FRAC_BITS)); -} - -#else -# error Please define multiplication and other operands for your fixed-point type size -#endif - -#endif /* CAIRO_FIXED_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-fixed-type-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-fixed-type-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-fixed-type-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-fixed-type-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_FIXED_TYPE_PRIVATE_H -#define CAIRO_FIXED_TYPE_PRIVATE_H - -#include "cairo-wideint-type-private.h" - -/* - * Fixed-point configuration - */ - -typedef int32_t cairo_fixed_16_16_t; -typedef cairo_int64_t cairo_fixed_32_32_t; -typedef cairo_int64_t cairo_fixed_48_16_t; -typedef cairo_int128_t cairo_fixed_64_64_t; -typedef cairo_int128_t cairo_fixed_96_32_t; - -/* Eventually, we should allow changing this, but I think - * there are some assumptions in the tesselator about the - * size of a fixed type. For now, it must be 32. - */ -#define CAIRO_FIXED_BITS 32 - -/* The number of fractional bits. Changing this involves - * making sure that you compute a double-to-fixed magic number. - * (see below). - */ -#define CAIRO_FIXED_FRAC_BITS 8 - -/* A signed type %CAIRO_FIXED_BITS in size; the main fixed point type */ -typedef int32_t cairo_fixed_t; - -/* An unsigned type of the same size as #cairo_fixed_t */ -typedef uint32_t cairo_fixed_unsigned_t; - -#endif /* CAIRO_FIXED_TYPE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-font-face.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-font-face.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-font-face.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-font-face.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,548 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Graydon Hoare - * Owen Taylor - */ - -#define _BSD_SOURCE /* for strdup() */ -#include "cairoint.h" - -/* Forward declare so we can use it as an arbitrary backend for - * _cairo_font_face_nil. - */ -static const cairo_font_face_backend_t _cairo_toy_font_face_backend; - -/* #cairo_font_face_t */ - -const cairo_font_face_t _cairo_font_face_nil = { - { 0 }, /* hash_entry */ - CAIRO_STATUS_NO_MEMORY, /* status */ - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ - { 0, 0, 0, NULL }, /* user_data */ - &_cairo_toy_font_face_backend -}; - -cairo_status_t -_cairo_font_face_set_error (cairo_font_face_t *font_face, - cairo_status_t status) -{ - if (status == CAIRO_STATUS_SUCCESS) - return status; - - _cairo_status_set_error (&font_face->status, status); - - return _cairo_error (status); -} - -void -_cairo_font_face_init (cairo_font_face_t *font_face, - const cairo_font_face_backend_t *backend) -{ - CAIRO_MUTEX_INITIALIZE (); - - font_face->status = CAIRO_STATUS_SUCCESS; - CAIRO_REFERENCE_COUNT_INIT (&font_face->ref_count, 1); - font_face->backend = backend; - - _cairo_user_data_array_init (&font_face->user_data); -} - -/** - * cairo_font_face_reference: - * @font_face: a #cairo_font_face_t, (may be %NULL in which case this - * function does nothing). - * - * Increases the reference count on @font_face by one. This prevents - * @font_face from being destroyed until a matching call to - * cairo_font_face_destroy() is made. - * - * The number of references to a #cairo_font_face_t can be get using - * cairo_font_face_get_reference_count(). - * - * Return value: the referenced #cairo_font_face_t. - **/ -cairo_font_face_t * -cairo_font_face_reference (cairo_font_face_t *font_face) -{ - if (font_face == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&font_face->ref_count)) - return font_face; - - /* We would normally assert that we have a reference here but we - * can't get away with that due to the zombie case as documented - * in _cairo_ft_font_face_destroy. */ - - _cairo_reference_count_inc (&font_face->ref_count); - - return font_face; -} -slim_hidden_def (cairo_font_face_reference); - -/** - * cairo_font_face_destroy: - * @font_face: a #cairo_font_face_t - * - * Decreases the reference count on @font_face by one. If the result - * is zero, then @font_face and all associated resources are freed. - * See cairo_font_face_reference(). - **/ -void -cairo_font_face_destroy (cairo_font_face_t *font_face) -{ - if (font_face == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&font_face->ref_count)) - return; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&font_face->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&font_face->ref_count)) - return; - - font_face->backend->destroy (font_face); - - /* We allow resurrection to deal with some memory management for the - * FreeType backend where cairo_ft_font_face_t and cairo_ft_unscaled_font_t - * need to effectively mutually reference each other - */ - if (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&font_face->ref_count)) - return; - - _cairo_user_data_array_fini (&font_face->user_data); - - free (font_face); -} -slim_hidden_def (cairo_font_face_destroy); - -/** - * cairo_font_face_get_type: - * @font_face: a font face - * - * This function returns the type of the backend used to create - * a font face. See #cairo_font_type_t for available types. - * - * Return value: The type of @font_face. - * - * Since: 1.2 - **/ -cairo_font_type_t -cairo_font_face_get_type (cairo_font_face_t *font_face) -{ - return font_face->backend->type; -} - -/** - * cairo_font_face_get_reference_count: - * @font_face: a #cairo_font_face_t - * - * Returns the current reference count of @font_face. - * - * Return value: the current reference count of @font_face. If the - * object is a nil object, 0 will be returned. - * - * Since: 1.4 - **/ -unsigned int -cairo_font_face_get_reference_count (cairo_font_face_t *font_face) -{ - if (font_face == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&font_face->ref_count)) - return 0; - - return CAIRO_REFERENCE_COUNT_GET_VALUE (&font_face->ref_count); -} - -/** - * cairo_font_face_status: - * @font_face: a #cairo_font_face_t - * - * Checks whether an error has previously occurred for this - * font face - * - * Return value: %CAIRO_STATUS_SUCCESS or another error such as - * %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_status_t -cairo_font_face_status (cairo_font_face_t *font_face) -{ - return font_face->status; -} - -/** - * cairo_font_face_get_user_data: - * @font_face: a #cairo_font_face_t - * @key: the address of the #cairo_user_data_key_t the user data was - * attached to - * - * Return user data previously attached to @font_face using the specified - * key. If no user data has been attached with the given key this - * function returns %NULL. - * - * Return value: the user data previously attached or %NULL. - **/ -void * -cairo_font_face_get_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key) -{ - return _cairo_user_data_array_get_data (&font_face->user_data, - key); -} - -/** - * cairo_font_face_set_user_data: - * @font_face: a #cairo_font_face_t - * @key: the address of a #cairo_user_data_key_t to attach the user data to - * @user_data: the user data to attach to the font face - * @destroy: a #cairo_destroy_func_t which will be called when the - * font face is destroyed or when new user data is attached using the - * same key. - * - * Attach user data to @font_face. To remove user data from a font face, - * call this function with the key that was used to set it and %NULL - * for @data. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a - * slot could not be allocated for the user data. - **/ -cairo_status_t -cairo_font_face_set_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy) -{ - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&font_face->ref_count)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return _cairo_user_data_array_set_data (&font_face->user_data, - key, user_data, destroy); -} - -static const cairo_font_face_backend_t _cairo_toy_font_face_backend; - -static int -_cairo_toy_font_face_keys_equal (const void *key_a, - const void *key_b); - -/* We maintain a hash table from family/weight/slant => - * #cairo_font_face_t for #cairo_toy_font_t. The primary purpose of - * this mapping is to provide unique #cairo_font_face_t values so that - * our cache and mapping from #cairo_font_face_t => #cairo_scaled_font_t - * works. Once the corresponding #cairo_font_face_t objects fall out of - * downstream caches, we don't need them in this hash table anymore. - * - * Modifications to this hash table are protected by - * _cairo_font_face_mutex. - */ -static cairo_hash_table_t *cairo_toy_font_face_hash_table = NULL; - -static cairo_hash_table_t * -_cairo_toy_font_face_hash_table_lock (void) -{ - CAIRO_MUTEX_LOCK (_cairo_font_face_mutex); - - if (cairo_toy_font_face_hash_table == NULL) - { - cairo_toy_font_face_hash_table = - _cairo_hash_table_create (_cairo_toy_font_face_keys_equal); - - if (cairo_toy_font_face_hash_table == NULL) { - CAIRO_MUTEX_UNLOCK (_cairo_font_face_mutex); - return NULL; - } - } - - return cairo_toy_font_face_hash_table; -} - -static void -_cairo_toy_font_face_hash_table_unlock (void) -{ - CAIRO_MUTEX_UNLOCK (_cairo_font_face_mutex); -} - -/** - * _cairo_toy_font_face_init_key: - * - * Initialize those portions of #cairo_toy_font_face_t needed to use - * it as a hash table key, including the hash code buried away in - * font_face->base.hash_entry. No memory allocation is performed here - * so that no fini call is needed. We do this to make it easier to use - * an automatic #cairo_toy_font_face_t variable as a key. - **/ -static void -_cairo_toy_font_face_init_key (cairo_toy_font_face_t *key, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight) -{ - unsigned long hash; - - key->family = family; - key->owns_family = FALSE; - - key->slant = slant; - key->weight = weight; - - /* 1607 and 1451 are just a couple of arbitrary primes. */ - hash = _cairo_hash_string (family); - hash += ((unsigned long) slant) * 1607; - hash += ((unsigned long) weight) * 1451; - - assert (hash != 0); - key->base.hash_entry.hash = hash; -} - -static cairo_status_t -_cairo_toy_font_face_init (cairo_toy_font_face_t *font_face, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight) -{ - char *family_copy; - - family_copy = strdup (family); - if (family_copy == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_toy_font_face_init_key (font_face, family_copy, - slant, weight); - font_face->owns_family = TRUE; - - _cairo_font_face_init (&font_face->base, &_cairo_toy_font_face_backend); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_toy_font_face_fini (cairo_toy_font_face_t *font_face) -{ - /* We assert here that we own font_face->family before casting - * away the const qualifer. */ - assert (font_face->owns_family); - free ((char*) font_face->family); -} - -static int -_cairo_toy_font_face_keys_equal (const void *key_a, - const void *key_b) -{ - const cairo_toy_font_face_t *face_a = key_a; - const cairo_toy_font_face_t *face_b = key_b; - - return (strcmp (face_a->family, face_b->family) == 0 && - face_a->slant == face_b->slant && - face_a->weight == face_b->weight); -} - -/** - * _cairo_toy_font_face_create: - * @family: a font family name, encoded in UTF-8 - * @slant: the slant for the font - * @weight: the weight for the font - * - * Creates a font face from a triplet of family, slant, and weight. - * These font faces are used in implementation of the the #cairo_t "toy" - * font API. - * - * Return value: a newly created #cairo_font_face_t, destroy with - * cairo_font_face_destroy() - **/ -cairo_font_face_t * -_cairo_toy_font_face_create (const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight) -{ - cairo_status_t status; - cairo_toy_font_face_t key, *font_face; - cairo_hash_table_t *hash_table; - - hash_table = _cairo_toy_font_face_hash_table_lock (); - if (hash_table == NULL) - goto UNWIND; - - _cairo_toy_font_face_init_key (&key, family, slant, weight); - - /* Return existing font_face if it exists in the hash table. */ - if (_cairo_hash_table_lookup (hash_table, - &key.base.hash_entry, - (cairo_hash_entry_t **) &font_face)) - { - if (! font_face->base.status) { - /* We increment the reference count here manually to avoid - double-locking. */ - _cairo_reference_count_inc (&font_face->base.ref_count); - _cairo_toy_font_face_hash_table_unlock (); - return &font_face->base; - } - - /* remove the bad font from the hash table */ - _cairo_hash_table_remove (hash_table, &key.base.hash_entry); - font_face->base.hash_entry.hash = 0; - } - - /* Otherwise create it and insert into hash table. */ - font_face = malloc (sizeof (cairo_toy_font_face_t)); - if (font_face == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto UNWIND_HASH_TABLE_LOCK; - } - - status = _cairo_toy_font_face_init (font_face, family, slant, weight); - if (status) - goto UNWIND_FONT_FACE_MALLOC; - - status = _cairo_hash_table_insert (hash_table, &font_face->base.hash_entry); - if (status) - goto UNWIND_FONT_FACE_INIT; - - _cairo_toy_font_face_hash_table_unlock (); - - return &font_face->base; - - UNWIND_FONT_FACE_INIT: - _cairo_toy_font_face_fini (font_face); - UNWIND_FONT_FACE_MALLOC: - free (font_face); - UNWIND_HASH_TABLE_LOCK: - _cairo_toy_font_face_hash_table_unlock (); - UNWIND: - return (cairo_font_face_t*) &_cairo_font_face_nil; -} - -static void -_cairo_toy_font_face_destroy (void *abstract_face) -{ - cairo_toy_font_face_t *font_face = abstract_face; - cairo_hash_table_t *hash_table; - - if (font_face == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&font_face->base.ref_count)) - return; - - hash_table = _cairo_toy_font_face_hash_table_lock (); - /* All created objects must have been mapped in the hash table. */ - assert (hash_table != NULL); - - if (font_face->base.hash_entry.hash != 0) - _cairo_hash_table_remove (hash_table, &font_face->base.hash_entry); - - _cairo_toy_font_face_hash_table_unlock (); - - _cairo_toy_font_face_fini (font_face); -} - -static cairo_status_t -_cairo_toy_font_face_scaled_font_create (void *abstract_font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **scaled_font) -{ - cairo_toy_font_face_t *font_face = abstract_font_face; - const cairo_scaled_font_backend_t * backend = CAIRO_SCALED_FONT_BACKEND_DEFAULT; - cairo_status_t status; - - if (font_face->base.status) - return font_face->base.status; - - status = cairo_font_options_status ((cairo_font_options_t *) options); - if (status) - return status; - - return _cairo_font_face_set_error (&font_face->base, - backend->create_toy (font_face, - font_matrix, - ctm, - options, - scaled_font)); -} - -static const cairo_font_face_backend_t _cairo_toy_font_face_backend = { - CAIRO_FONT_TYPE_TOY, - _cairo_toy_font_face_destroy, - _cairo_toy_font_face_scaled_font_create -}; - -void -_cairo_unscaled_font_init (cairo_unscaled_font_t *unscaled_font, - const cairo_unscaled_font_backend_t *backend) -{ - CAIRO_REFERENCE_COUNT_INIT (&unscaled_font->ref_count, 1); - unscaled_font->backend = backend; -} - -cairo_unscaled_font_t * -_cairo_unscaled_font_reference (cairo_unscaled_font_t *unscaled_font) -{ - if (unscaled_font == NULL) - return NULL; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&unscaled_font->ref_count)); - - _cairo_reference_count_inc (&unscaled_font->ref_count); - - return unscaled_font; -} - -void -_cairo_unscaled_font_destroy (cairo_unscaled_font_t *unscaled_font) -{ - if (unscaled_font == NULL) - return; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&unscaled_font->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&unscaled_font->ref_count)) - return; - - unscaled_font->backend->destroy (unscaled_font); - - free (unscaled_font); -} - -void -_cairo_font_reset_static_data (void) -{ - _cairo_scaled_font_map_destroy (); - - /* We manually acquire the lock rather than calling - * cairo_toy_font_face_hash_table_lock simply to avoid - * creating the table only to destroy it again. */ - CAIRO_MUTEX_LOCK (_cairo_font_face_mutex); - _cairo_hash_table_destroy (cairo_toy_font_face_hash_table); - cairo_toy_font_face_hash_table = NULL; - CAIRO_MUTEX_UNLOCK (_cairo_font_face_mutex); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-font-options.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-font-options.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-font-options.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-font-options.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,408 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Owen Taylor - */ - -#include "cairoint.h" - -static const cairo_font_options_t _cairo_font_options_nil = { - CAIRO_ANTIALIAS_DEFAULT, - CAIRO_SUBPIXEL_ORDER_DEFAULT, - CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_METRICS_DEFAULT -}; - -/** - * _cairo_font_options_init_default: - * @options: a #cairo_font_options_t - * - * Initializes all fields of the font options object to default values. - **/ -void -_cairo_font_options_init_default (cairo_font_options_t *options) -{ - options->antialias = CAIRO_ANTIALIAS_DEFAULT; - options->subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT; - options->hint_style = CAIRO_HINT_STYLE_DEFAULT; - options->hint_metrics = CAIRO_HINT_METRICS_DEFAULT; -} - -void -_cairo_font_options_init_copy (cairo_font_options_t *options, - const cairo_font_options_t *other) -{ - options->antialias = other->antialias; - options->subpixel_order = other->subpixel_order; - options->hint_style = other->hint_style; - options->hint_metrics = other->hint_metrics; -} - -/** - * cairo_font_options_create: - * - * Allocates a new font options object with all options initialized - * to default values. - * - * Return value: a newly allocated #cairo_font_options_t. Free with - * cairo_font_options_destroy(). This function always returns a - * valid pointer; if memory cannot be allocated, then a special - * error object is returned where all operations on the object do nothing. - * You can check for this with cairo_font_options_status(). - **/ -cairo_font_options_t * -cairo_font_options_create (void) -{ - cairo_font_options_t *options; - - options = malloc (sizeof (cairo_font_options_t)); - if (!options) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_options_t *) &_cairo_font_options_nil; - } - - _cairo_font_options_init_default (options); - - return options; -} -slim_hidden_def (cairo_font_options_create); - -/** - * cairo_font_options_copy: - * @original: a #cairo_font_options_t - * - * Allocates a new font options object copying the option values from - * @original. - * - * Return value: a newly allocated #cairo_font_options_t. Free with - * cairo_font_options_destroy(). This function always returns a - * valid pointer; if memory cannot be allocated, then a special - * error object is returned where all operations on the object do nothing. - * You can check for this with cairo_font_options_status(). - **/ -cairo_font_options_t * -cairo_font_options_copy (const cairo_font_options_t *original) -{ - cairo_font_options_t *options; - - if (cairo_font_options_status ((cairo_font_options_t *) original)) - return (cairo_font_options_t *) &_cairo_font_options_nil; - - options = malloc (sizeof (cairo_font_options_t)); - if (!options) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_options_t *) &_cairo_font_options_nil; - } - - _cairo_font_options_init_copy (options, original); - - return options; -} - -/** - * cairo_font_options_destroy: - * @options: a #cairo_font_options_t - * - * Destroys a #cairo_font_options_t object created with with - * cairo_font_options_create() or cairo_font_options_copy(). - **/ -void -cairo_font_options_destroy (cairo_font_options_t *options) -{ - if (cairo_font_options_status (options)) - return; - - free (options); -} -slim_hidden_def (cairo_font_options_destroy); - -/** - * cairo_font_options_status: - * @options: a #cairo_font_options_t - * - * Checks whether an error has previously occurred for this - * font options object - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY - **/ -cairo_status_t -cairo_font_options_status (cairo_font_options_t *options) -{ - if (options == NULL) - return CAIRO_STATUS_NULL_POINTER; - else if (options == (cairo_font_options_t *) &_cairo_font_options_nil) - return CAIRO_STATUS_NO_MEMORY; - else - return CAIRO_STATUS_SUCCESS; -} -slim_hidden_def (cairo_font_options_status); - -/** - * cairo_font_options_merge: - * @options: a #cairo_font_options_t - * @other: another #cairo_font_options_t - * - * Merges non-default options from @other into @options, replacing - * existing values. This operation can be thought of as somewhat - * similar to compositing @other onto @options with the operation - * of %CAIRO_OPERATION_OVER. - **/ -void -cairo_font_options_merge (cairo_font_options_t *options, - const cairo_font_options_t *other) -{ - if (cairo_font_options_status (options)) - return; - - if (cairo_font_options_status ((cairo_font_options_t *) other)) - return; - - if (other->antialias != CAIRO_ANTIALIAS_DEFAULT) - options->antialias = other->antialias; - if (other->subpixel_order != CAIRO_SUBPIXEL_ORDER_DEFAULT) - options->subpixel_order = other->subpixel_order; - if (other->hint_style != CAIRO_HINT_STYLE_DEFAULT) - options->hint_style = other->hint_style; - if (other->hint_metrics != CAIRO_HINT_METRICS_DEFAULT) - options->hint_metrics = other->hint_metrics; -} -slim_hidden_def (cairo_font_options_merge); - -/** - * cairo_font_options_equal: - * @options: a #cairo_font_options_t - * @other: another #cairo_font_options_t - * - * Compares two font options objects for equality. - * - * Return value: %TRUE if all fields of the two font options objects match. - * Note that this function will return %FALSE if either object is in - * error. - **/ -cairo_bool_t -cairo_font_options_equal (const cairo_font_options_t *options, - const cairo_font_options_t *other) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - return FALSE; - if (cairo_font_options_status ((cairo_font_options_t *) other)) - return FALSE; - - if (options == other) - return TRUE; - - return (options->antialias == other->antialias && - options->subpixel_order == other->subpixel_order && - options->hint_style == other->hint_style && - options->hint_metrics == other->hint_metrics); -} -slim_hidden_def (cairo_font_options_equal); - -/** - * cairo_font_options_hash: - * @options: a #cairo_font_options_t - * - * Compute a hash for the font options object; this value will - * be useful when storing an object containing a #cairo_font_options_t - * in a hash table. - * - * Return value: the hash value for the font options object. - * The return value can be cast to a 32-bit type if a - * 32-bit hash value is needed. - **/ -unsigned long -cairo_font_options_hash (const cairo_font_options_t *options) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - options = &_cairo_font_options_nil; /* force default values */ - - return ((options->antialias) | - (options->subpixel_order << 4) | - (options->hint_style << 8) | - (options->hint_metrics << 16)); -} -slim_hidden_def (cairo_font_options_hash); - -/** - * cairo_font_options_set_antialias: - * @options: a #cairo_font_options_t - * @antialias: the new antialiasing mode - * - * Sets the antialiasing mode for the font options object. This - * specifies the type of antialiasing to do when rendering text. - **/ -void -cairo_font_options_set_antialias (cairo_font_options_t *options, - cairo_antialias_t antialias) -{ - if (cairo_font_options_status (options)) - return; - - options->antialias = antialias; -} -slim_hidden_def (cairo_font_options_set_antialias); - -/** - * cairo_font_options_get_antialias: - * @options: a #cairo_font_options_t - * - * Gets the antialiasing mode for the font options object. - * - * Return value: the antialiasing mode - **/ -cairo_antialias_t -cairo_font_options_get_antialias (const cairo_font_options_t *options) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - return CAIRO_ANTIALIAS_DEFAULT; - - return options->antialias; -} - -/** - * cairo_font_options_set_subpixel_order: - * @options: a #cairo_font_options_t - * @subpixel_order: the new subpixel order - * - * Sets the subpixel order for the font options object. The subpixel - * order specifies the order of color elements within each pixel on - * the display device when rendering with an antialiasing mode of - * %CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for - * #cairo_subpixel_order_t for full details. - **/ -void -cairo_font_options_set_subpixel_order (cairo_font_options_t *options, - cairo_subpixel_order_t subpixel_order) -{ - if (cairo_font_options_status (options)) - return; - - options->subpixel_order = subpixel_order; -} -slim_hidden_def (cairo_font_options_set_subpixel_order); - -/** - * cairo_font_options_get_subpixel_order: - * @options: a #cairo_font_options_t - * - * Gets the subpixel order for the font options object. - * See the documentation for #cairo_subpixel_order_t for full details. - * - * Return value: the subpixel order for the font options object - **/ -cairo_subpixel_order_t -cairo_font_options_get_subpixel_order (const cairo_font_options_t *options) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - return CAIRO_SUBPIXEL_ORDER_DEFAULT; - - return options->subpixel_order; -} - -/** - * cairo_font_options_set_hint_style: - * @options: a #cairo_font_options_t - * @hint_style: the new hint style - * - * Sets the hint style for font outlines for the font options object. - * This controls whether to fit font outlines to the pixel grid, - * and if so, whether to optimize for fidelity or contrast. - * See the documentation for #cairo_hint_style_t for full details. - **/ -void -cairo_font_options_set_hint_style (cairo_font_options_t *options, - cairo_hint_style_t hint_style) -{ - if (cairo_font_options_status (options)) - return; - - options->hint_style = hint_style; -} -slim_hidden_def (cairo_font_options_set_hint_style); - -/** - * cairo_font_options_get_hint_style: - * @options: a #cairo_font_options_t - * - * Gets the hint style for font outlines for the font options object. - * See the documentation for #cairo_hint_style_t for full details. - * - * Return value: the hint style for the font options object - **/ -cairo_hint_style_t -cairo_font_options_get_hint_style (const cairo_font_options_t *options) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - return CAIRO_HINT_STYLE_DEFAULT; - - return options->hint_style; -} - -/** - * cairo_font_options_set_hint_metrics: - * @options: a #cairo_font_options_t - * @hint_metrics: the new metrics hinting mode - * - * Sets the metrics hinting mode for the font options object. This - * controls whether metrics are quantized to integer values in - * device units. - * See the documentation for #cairo_hint_metrics_t for full details. - **/ -void -cairo_font_options_set_hint_metrics (cairo_font_options_t *options, - cairo_hint_metrics_t hint_metrics) -{ - if (cairo_font_options_status (options)) - return; - - options->hint_metrics = hint_metrics; -} -slim_hidden_def (cairo_font_options_set_hint_metrics); - -/** - * cairo_font_options_get_hint_metrics: - * @options: a #cairo_font_options_t - * - * Gets the metrics hinting mode for the font options object. - * See the documentation for #cairo_hint_metrics_t for full details. - * - * Return value: the metrics hinting mode for the font options object - **/ -cairo_hint_metrics_t -cairo_font_options_get_hint_metrics (const cairo_font_options_t *options) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - return CAIRO_HINT_METRICS_DEFAULT; - - return options->hint_metrics; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-freelist.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-freelist.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-freelist.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-freelist.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * Copyright © 2006 Joonas Pihlaja - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "cairoint.h" - -#include "cairo-freelist-private.h" - -void -_cairo_freelist_init (cairo_freelist_t *freelist, unsigned nodesize) -{ - memset (freelist, 0, sizeof(cairo_freelist_t)); - freelist->nodesize = nodesize; -} - -void -_cairo_freelist_fini (cairo_freelist_t *freelist) -{ - cairo_freelist_node_t *node = freelist->first_free_node; - while (node) { - cairo_freelist_node_t *next = node->next; - free (node); - node = next; - } -} - -void * -_cairo_freelist_alloc (cairo_freelist_t *freelist) -{ - if (freelist->first_free_node) { - cairo_freelist_node_t *node = freelist->first_free_node; - freelist->first_free_node = node->next; - return (void*)node; - } - return malloc (freelist->nodesize); -} - -void * -_cairo_freelist_calloc (cairo_freelist_t *freelist) -{ - void *node = _cairo_freelist_alloc (freelist); - if (node) - memset (node, 0, freelist->nodesize); - return node; -} - -void -_cairo_freelist_free (cairo_freelist_t *freelist, void *voidnode) -{ - cairo_freelist_node_t *node = voidnode; - if (node) { - node->next = freelist->first_free_node; - freelist->first_free_node = node; - } -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-freelist-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-freelist-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-freelist-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-freelist-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * Copyright © 2006 Joonas Pihlaja - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ -#ifndef CAIRO_FREELIST_H -#define CAIRO_FREELIST_H - -#include "cairo-types-private.h" - -/* Opaque implementation types. */ -typedef struct _cairo_freelist cairo_freelist_t; -typedef struct _cairo_freelist_node cairo_freelist_node_t; - -struct _cairo_freelist_node { - cairo_freelist_node_t *next; -}; - -struct _cairo_freelist { - cairo_freelist_node_t *first_free_node; - unsigned nodesize; -}; - - -/* Initialise a freelist that will be responsible for allocating - * nodes of size nodesize. */ -cairo_private void -_cairo_freelist_init (cairo_freelist_t *freelist, unsigned nodesize); - -/* Deallocate any nodes in the freelist. */ -cairo_private void -_cairo_freelist_fini (cairo_freelist_t *freelist); - -/* Allocate a new node from the freelist. If the freelist contains no - * nodes, a new one will be allocated using malloc(). The caller is - * responsible for calling _cairo_freelist_free() or free() on the - * returned node. Returns %NULL on memory allocation error. */ -cairo_private void * -_cairo_freelist_alloc (cairo_freelist_t *freelist); - -/* Allocate a new node from the freelist. If the freelist contains no - * nodes, a new one will be allocated using calloc(). The caller is - * responsible for calling _cairo_freelist_free() or free() on the - * returned node. Returns %NULL on memory allocation error. */ -cairo_private void * -_cairo_freelist_calloc (cairo_freelist_t *freelist); - -/* Return a node to the freelist. This does not deallocate the memory, - * but makes it available for later reuse by - * _cairo_freelist_alloc(). */ -cairo_private void -_cairo_freelist_free (cairo_freelist_t *freelist, void *node); - -#endif /* CAIRO_FREELIST_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-ft-font.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ft-font.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-ft-font.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ft-font.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2686 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2000 Keith Packard - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Graydon Hoare - * Owen Taylor - * Keith Packard - * Carl Worth - */ - -#define _BSD_SOURCE /* for strdup() */ -#include "cairoint.h" - -#include "cairo-ft-private.h" - -#include - -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_OUTLINE_H -#include FT_IMAGE_H -#include FT_TRUETYPE_TABLES_H -#if HAVE_FT_GLYPHSLOT_EMBOLDEN -#include FT_SYNTHESIS_H -#endif - -#define DOUBLE_TO_26_6(d) ((FT_F26Dot6)((d) * 64.0)) -#define DOUBLE_FROM_26_6(t) ((double)(t) / 64.0) -#define DOUBLE_TO_16_16(d) ((FT_Fixed)((d) * 65536.0)) -#define DOUBLE_FROM_16_16(t) ((double)(t) / 65536.0) - -/* This is the max number of FT_face objects we keep open at once - */ -#define MAX_OPEN_FACES 10 - -/* - * The simple 2x2 matrix is converted into separate scale and shape - * factors so that hinting works right - */ - -typedef struct _cairo_ft_font_transform { - double x_scale, y_scale; - double shape[2][2]; -} cairo_ft_font_transform_t; - -/* - * We create an object that corresponds to a single font on the disk; - * (identified by a filename/id pair) these are shared between all - * fonts using that file. For cairo_ft_font_face_create_for_ft_face(), we - * just create a one-off version with a permanent face value. - */ - -typedef struct _cairo_ft_font_face cairo_ft_font_face_t; - -struct _cairo_ft_unscaled_font { - cairo_unscaled_font_t base; - - cairo_bool_t from_face; /* from cairo_ft_font_face_create_for_ft_face()? */ - FT_Face face; /* provided or cached face */ - - /* only set if from_face is false */ - char *filename; - int id; - - /* We temporarily scale the unscaled font as needed */ - cairo_bool_t have_scale; - cairo_matrix_t current_scale; - double x_scale; /* Extracted X scale factor */ - double y_scale; /* Extracted Y scale factor */ - cairo_bool_t have_shape; /* true if the current scale has a non-scale component*/ - cairo_matrix_t current_shape; - FT_Matrix Current_Shape; - - cairo_mutex_t mutex; - int lock_count; - - cairo_ft_font_face_t *faces; /* Linked list of faces for this font */ -}; - -static int -_cairo_ft_unscaled_font_keys_equal (const void *key_a, - const void *key_b); - -static void -_cairo_ft_unscaled_font_fini (cairo_ft_unscaled_font_t *unscaled); - -static cairo_status_t -_cairo_ft_font_options_substitute (const cairo_font_options_t *options, - FcPattern *pattern); - -typedef enum _cairo_ft_extra_flags { - CAIRO_FT_OPTIONS_HINT_METRICS = (1 << 0), - CAIRO_FT_OPTIONS_EMBOLDEN = (1 << 1) -} cairo_ft_extra_flags_t; - -typedef struct _cairo_ft_options { - cairo_font_options_t base; - int load_flags; /* flags for FT_Load_Glyph */ - cairo_ft_extra_flags_t extra_flags; /* other flags that affect results */ -} cairo_ft_options_t; - -struct _cairo_ft_font_face { - cairo_font_face_t base; - cairo_ft_unscaled_font_t *unscaled; - cairo_ft_options_t ft_options; - cairo_ft_font_face_t *next; -}; - -static const cairo_unscaled_font_backend_t cairo_ft_unscaled_font_backend; - -/* - * We maintain a hash table to map file/id => #cairo_ft_unscaled_font_t. - * The hash table itself isn't limited in size. However, we limit the - * number of FT_Face objects we keep around; when we've exceeded that - * limit and need to create a new FT_Face, we dump the FT_Face from a - * random #cairo_ft_unscaled_font_t which has an unlocked FT_Face, (if - * there are any). - */ - -typedef struct _cairo_ft_unscaled_font_map { - cairo_hash_table_t *hash_table; - FT_Library ft_library; - int num_open_faces; -} cairo_ft_unscaled_font_map_t; - -static cairo_ft_unscaled_font_map_t *cairo_ft_unscaled_font_map = NULL; - -static void -_font_map_release_face_lock_held (cairo_ft_unscaled_font_map_t *font_map, - cairo_ft_unscaled_font_t *unscaled) -{ - if (unscaled->face) { - FT_Done_Face (unscaled->face); - unscaled->face = NULL; - unscaled->have_scale = FALSE; - - font_map->num_open_faces--; - } -} - -static void -_cairo_ft_unscaled_font_map_create (void) -{ - cairo_ft_unscaled_font_map_t *font_map; - - /* This function is only intended to be called from - * _cairo_ft_unscaled_font_map_lock. So we'll crash if we can - * detect some other call path. */ - assert (cairo_ft_unscaled_font_map == NULL); - - font_map = malloc (sizeof (cairo_ft_unscaled_font_map_t)); - if (font_map == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } - - font_map->hash_table = - _cairo_hash_table_create (_cairo_ft_unscaled_font_keys_equal); - - if (font_map->hash_table == NULL) - goto FAIL; - - if (FT_Init_FreeType (&font_map->ft_library)) - goto FAIL; - - font_map->num_open_faces = 0; - - cairo_ft_unscaled_font_map = font_map; - return; - -FAIL: - if (font_map) { - if (font_map->hash_table) - _cairo_hash_table_destroy (font_map->hash_table); - free (font_map); - } - cairo_ft_unscaled_font_map = NULL; -} - -static void -_cairo_ft_unscaled_font_map_destroy (void) -{ - cairo_ft_unscaled_font_t *unscaled; - cairo_ft_unscaled_font_map_t *font_map; - - CAIRO_MUTEX_LOCK (_cairo_ft_unscaled_font_map_mutex); - - if (cairo_ft_unscaled_font_map) { - font_map = cairo_ft_unscaled_font_map; - - /* This is rather inefficient, but destroying the hash table - * is something we only do during debugging, (during - * cairo_debug_reset_static_data), when efficiency is not - * relevant. */ - while (1) { - unscaled = _cairo_hash_table_random_entry (font_map->hash_table, - NULL); - if (unscaled == NULL) - break; - _cairo_hash_table_remove (font_map->hash_table, - &unscaled->base.hash_entry); - - _font_map_release_face_lock_held (font_map, unscaled); - _cairo_ft_unscaled_font_fini (unscaled); - free (unscaled); - } - - assert (font_map->num_open_faces == 0); - - FT_Done_FreeType (font_map->ft_library); - - _cairo_hash_table_destroy (font_map->hash_table); - - free (font_map); - - cairo_ft_unscaled_font_map = NULL; - } - - CAIRO_MUTEX_UNLOCK (_cairo_ft_unscaled_font_map_mutex); -} - -static cairo_ft_unscaled_font_map_t * -_cairo_ft_unscaled_font_map_lock (void) -{ - CAIRO_MUTEX_LOCK (_cairo_ft_unscaled_font_map_mutex); - - if (cairo_ft_unscaled_font_map == NULL) - { - _cairo_ft_unscaled_font_map_create (); - - if (cairo_ft_unscaled_font_map == NULL) { - CAIRO_MUTEX_UNLOCK (_cairo_ft_unscaled_font_map_mutex); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - } - - return cairo_ft_unscaled_font_map; -} - -static void -_cairo_ft_unscaled_font_map_unlock (void) -{ - CAIRO_MUTEX_UNLOCK (_cairo_ft_unscaled_font_map_mutex); -} - -static void -_cairo_ft_unscaled_font_init_key (cairo_ft_unscaled_font_t *key, - char *filename, - int id) -{ - unsigned long hash; - - key->filename = filename; - key->id = id; - - /* 1607 is just an arbitrary prime. */ - hash = _cairo_hash_string (filename); - hash += ((unsigned long) id) * 1607; - - key->base.hash_entry.hash = hash; -} - -/** - * _cairo_ft_unscaled_font_init: - * - * Initialize a #cairo_ft_unscaled_font_t. - * - * There are two basic flavors of #cairo_ft_unscaled_font_t, one - * created from an FT_Face and the other created from a filename/id - * pair. These two flavors are identified as from_face and !from_face. - * - * To initialize a from_face font, pass filename==%NULL, id=0 and the - * desired face. - * - * To initialize a !from_face font, pass the filename/id as desired - * and face==%NULL. - * - * Note that the code handles these two flavors in very distinct - * ways. For example there is a hash_table mapping - * filename/id->#cairo_unscaled_font_t in the !from_face case, but no - * parallel in the from_face case, (where the calling code would have - * to do its own mapping to ensure similar sharing). - **/ -static cairo_status_t -_cairo_ft_unscaled_font_init (cairo_ft_unscaled_font_t *unscaled, - const char *filename, - int id, - FT_Face face) -{ - _cairo_unscaled_font_init (&unscaled->base, - &cairo_ft_unscaled_font_backend); - - if (face) { - unscaled->from_face = TRUE; - unscaled->face = face; - unscaled->filename = NULL; - unscaled->id = 0; - } else { - char *filename_copy; - - unscaled->from_face = FALSE; - unscaled->face = NULL; - - filename_copy = strdup (filename); - if (filename_copy == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_ft_unscaled_font_init_key (unscaled, filename_copy, id); - } - - unscaled->have_scale = FALSE; - CAIRO_MUTEX_INIT (unscaled->mutex); - unscaled->lock_count = 0; - - unscaled->faces = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_bool_t -_cairo_unscaled_font_is_ft (cairo_unscaled_font_t *unscaled_font) -{ - return unscaled_font->backend == &cairo_ft_unscaled_font_backend; -} - -/** - * _cairo_ft_unscaled_font_fini: - * - * Free all data associated with a #cairo_ft_unscaled_font_t. - * - * CAUTION: The unscaled->face field must be %NULL before calling this - * function. This is because the #cairo_ft_unscaled_font_t_map keeps a - * count of these faces (font_map->num_open_faces) so it maintains the - * unscaled->face field while it has its lock held. See - * _font_map_release_face_lock_held(). - **/ -static void -_cairo_ft_unscaled_font_fini (cairo_ft_unscaled_font_t *unscaled) -{ - assert (unscaled->face == NULL); - - if (unscaled->filename) { - free (unscaled->filename); - unscaled->filename = NULL; - } - - CAIRO_MUTEX_FINI (unscaled->mutex); -} - -static int -_cairo_ft_unscaled_font_keys_equal (const void *key_a, - const void *key_b) -{ - const cairo_ft_unscaled_font_t *unscaled_a = key_a; - const cairo_ft_unscaled_font_t *unscaled_b = key_b; - - return (strcmp (unscaled_a->filename, unscaled_b->filename) == 0 && - unscaled_a->id == unscaled_b->id); -} - -/* Finds or creates a #cairo_ft_unscaled_font_t for the filename/id from - * pattern. Returns a new reference to the unscaled font. - */ -static cairo_ft_unscaled_font_t * -_cairo_ft_unscaled_font_create_for_pattern (FcPattern *pattern) -{ - cairo_ft_unscaled_font_t key, *unscaled; - cairo_ft_unscaled_font_map_t *font_map; - cairo_status_t status; - FcChar8 *fc_filename; - char *filename; - int id; - - if (FcPatternGetString (pattern, FC_FILE, 0, &fc_filename) != FcResultMatch) - goto UNWIND; - filename = (char *) fc_filename; - - if (FcPatternGetInteger (pattern, FC_INDEX, 0, &id) != FcResultMatch) - goto UNWIND; - - font_map = _cairo_ft_unscaled_font_map_lock (); - if (font_map == NULL) - goto UNWIND; - - _cairo_ft_unscaled_font_init_key (&key, filename, id); - - /* Return existing unscaled font if it exists in the hash table. */ - if (_cairo_hash_table_lookup (font_map->hash_table, &key.base.hash_entry, - (cairo_hash_entry_t **) &unscaled)) - { - _cairo_unscaled_font_reference (&unscaled->base); - _cairo_ft_unscaled_font_map_unlock (); - return unscaled; - } - - /* Otherwise create it and insert into hash table. */ - unscaled = malloc (sizeof (cairo_ft_unscaled_font_t)); - if (unscaled == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - goto UNWIND_FONT_MAP_LOCK; - } - - status = _cairo_ft_unscaled_font_init (unscaled, filename, id, NULL); - if (status) - goto UNWIND_UNSCALED_MALLOC; - - status = _cairo_hash_table_insert (font_map->hash_table, - &unscaled->base.hash_entry); - if (status) - goto UNWIND_UNSCALED_FONT_INIT; - - _cairo_ft_unscaled_font_map_unlock (); - - return unscaled; - -UNWIND_UNSCALED_FONT_INIT: - _cairo_ft_unscaled_font_fini (unscaled); -UNWIND_UNSCALED_MALLOC: - free (unscaled); -UNWIND_FONT_MAP_LOCK: - _cairo_ft_unscaled_font_map_unlock (); -UNWIND: - return NULL; -} - -static cairo_ft_unscaled_font_t * -_cairo_ft_unscaled_font_create_from_face (FT_Face face) -{ - cairo_status_t status; - cairo_ft_unscaled_font_t *unscaled; - - unscaled = malloc (sizeof (cairo_ft_unscaled_font_t)); - if (unscaled == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - status = _cairo_ft_unscaled_font_init (unscaled, NULL, 0, face); - if (status) { - free (unscaled); - return NULL; - } - - return unscaled; -} - -static void -_cairo_ft_unscaled_font_destroy (void *abstract_font) -{ - cairo_ft_unscaled_font_t *unscaled = abstract_font; - - if (unscaled == NULL) - return; - - if (unscaled->from_face) { - /* See comments in _ft_font_face_destroy about the "zombie" state - * for a _ft_font_face. - */ - if (unscaled->faces && !unscaled->faces->unscaled) - cairo_font_face_destroy (&unscaled->faces->base); - - unscaled->face = NULL; - } else { - cairo_ft_unscaled_font_map_t *font_map; - - font_map = _cairo_ft_unscaled_font_map_lock (); - /* All created objects must have been mapped in the font map. */ - assert (font_map != NULL); - - _cairo_hash_table_remove (font_map->hash_table, - &unscaled->base.hash_entry); - - _font_map_release_face_lock_held (font_map, unscaled); - - _cairo_ft_unscaled_font_map_unlock (); - } - _cairo_ft_unscaled_font_fini (unscaled); -} - -static cairo_bool_t -_has_unlocked_face (void *entry) -{ - cairo_ft_unscaled_font_t *unscaled = entry; - - return (unscaled->lock_count == 0 && unscaled->face); -} - -/* Ensures that an unscaled font has a face object. If we exceed - * MAX_OPEN_FACES, try to close some. - * - * This differs from _cairo_ft_scaled_font_lock_face in that it doesn't - * set the scale on the face, but just returns it at the last scale. - */ -FT_Face -_cairo_ft_unscaled_font_lock_face (cairo_ft_unscaled_font_t *unscaled) -{ - cairo_ft_unscaled_font_map_t *font_map; - FT_Face face = NULL; - - CAIRO_MUTEX_LOCK (unscaled->mutex); - unscaled->lock_count++; - - if (unscaled->face) - return unscaled->face; - - /* If this unscaled font was created from an FT_Face then we just - * returned it above. */ - assert (!unscaled->from_face); - - font_map = _cairo_ft_unscaled_font_map_lock (); - { - assert (font_map != NULL); - - while (font_map->num_open_faces >= MAX_OPEN_FACES) - { - cairo_ft_unscaled_font_t *entry; - - entry = _cairo_hash_table_random_entry (font_map->hash_table, - _has_unlocked_face); - if (entry == NULL) - break; - - _font_map_release_face_lock_held (font_map, entry); - } - } - _cairo_ft_unscaled_font_map_unlock (); - - if (FT_New_Face (font_map->ft_library, - unscaled->filename, - unscaled->id, - &face) != FT_Err_Ok) - { - unscaled->lock_count--; - CAIRO_MUTEX_UNLOCK (unscaled->mutex); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - unscaled->face = face; - - font_map->num_open_faces++; - - return face; -} -slim_hidden_def (cairo_ft_scaled_font_lock_face); - -/* Unlock unscaled font locked with _cairo_ft_unscaled_font_lock_face - */ -void -_cairo_ft_unscaled_font_unlock_face (cairo_ft_unscaled_font_t *unscaled) -{ - assert (unscaled->lock_count > 0); - - unscaled->lock_count--; - - CAIRO_MUTEX_UNLOCK (unscaled->mutex); -} -slim_hidden_def (cairo_ft_scaled_font_unlock_face); - -static cairo_status_t -_compute_transform (cairo_ft_font_transform_t *sf, - cairo_matrix_t *scale) -{ - cairo_status_t status; - double x_scale, y_scale; - cairo_matrix_t normalized = *scale; - - /* The font matrix has x and y "scale" components which we extract and - * use as character scale values. These influence the way freetype - * chooses hints, as well as selecting different bitmaps in - * hand-rendered fonts. We also copy the normalized matrix to - * freetype's transformation. - */ - - status = _cairo_matrix_compute_scale_factors (scale, - &x_scale, &y_scale, - /* XXX */ 1); - if (status) - return status; - - /* FreeType docs say this about x_scale and y_scale: - * "A character width or height smaller than 1pt is set to 1pt;" - * So, we cap them from below at 1.0 and let the FT transform - * take care of sub-1.0 scaling. */ - if (x_scale < 1.0) - x_scale = 1.0; - if (y_scale < 1.0) - y_scale = 1.0; - - sf->x_scale = x_scale; - sf->y_scale = y_scale; - - cairo_matrix_scale (&normalized, 1.0 / x_scale, 1.0 / y_scale); - - _cairo_matrix_get_affine (&normalized, - &sf->shape[0][0], &sf->shape[0][1], - &sf->shape[1][0], &sf->shape[1][1], - NULL, NULL); - - return CAIRO_STATUS_SUCCESS; -} - -/* Temporarily scales an unscaled font to the give scale. We catch - * scaling to the same size, since changing a FT_Face is expensive. - */ -static cairo_status_t -_cairo_ft_unscaled_font_set_scale (cairo_ft_unscaled_font_t *unscaled, - cairo_matrix_t *scale) -{ - cairo_status_t status; - cairo_ft_font_transform_t sf; - FT_Matrix mat; - FT_Error error; - - assert (unscaled->face != NULL); - - if (unscaled->have_scale && - scale->xx == unscaled->current_scale.xx && - scale->yx == unscaled->current_scale.yx && - scale->xy == unscaled->current_scale.xy && - scale->yy == unscaled->current_scale.yy) - return CAIRO_STATUS_SUCCESS; - - unscaled->have_scale = TRUE; - unscaled->current_scale = *scale; - - status = _compute_transform (&sf, scale); - if (status) - return status; - - unscaled->x_scale = sf.x_scale; - unscaled->y_scale = sf.y_scale; - - mat.xx = DOUBLE_TO_16_16(sf.shape[0][0]); - mat.yx = - DOUBLE_TO_16_16(sf.shape[0][1]); - mat.xy = - DOUBLE_TO_16_16(sf.shape[1][0]); - mat.yy = DOUBLE_TO_16_16(sf.shape[1][1]); - - unscaled->have_shape = (mat.xx != 0x10000 || - mat.yx != 0x00000 || - mat.xy != 0x00000 || - mat.yy != 0x10000); - - unscaled->Current_Shape = mat; - cairo_matrix_init (&unscaled->current_shape, - sf.shape[0][0], sf.shape[0][1], - sf.shape[1][0], sf.shape[1][1], - 0.0, 0.0); - - FT_Set_Transform(unscaled->face, &mat, NULL); - - if ((unscaled->face->face_flags & FT_FACE_FLAG_SCALABLE) != 0) { - error = FT_Set_Char_Size (unscaled->face, - sf.x_scale * 64.0 + .5, - sf.y_scale * 64.0 + .5, - 0, 0); - if (error) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } else { - double min_distance = DBL_MAX; - int i; - int best_i = 0; - - for (i = 0; i < unscaled->face->num_fixed_sizes; i++) { -#if HAVE_FT_BITMAP_SIZE_Y_PPEM - double size = unscaled->face->available_sizes[i].y_ppem / 64.; -#else - double size = unscaled->face->available_sizes[i].height; -#endif - double distance = fabs (size - sf.y_scale); - - if (distance <= min_distance) { - min_distance = distance; - best_i = i; - } - } -#if HAVE_FT_BITMAP_SIZE_Y_PPEM - error = FT_Set_Char_Size (unscaled->face, - unscaled->face->available_sizes[best_i].x_ppem, - unscaled->face->available_sizes[best_i].y_ppem, - 0, 0); - if (error) -#endif - error = FT_Set_Pixel_Sizes (unscaled->face, - unscaled->face->available_sizes[best_i].width, - unscaled->face->available_sizes[best_i].height); - if (error) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - return CAIRO_STATUS_SUCCESS; -} - -/* Empirically-derived subpixel filtering values thanks to Keith - * Packard and libXft. */ -static const int filters[3][3] = { - /* red */ -#if 0 - { 65538*4/7,65538*2/7,65538*1/7 }, - /* green */ - { 65536*1/4, 65536*2/4, 65537*1/4 }, - /* blue */ - { 65538*1/7,65538*2/7,65538*4/7 }, -#endif - { 65538*9/13,65538*3/13,65538*1/13 }, - /* green */ - { 65538*1/6, 65538*4/6, 65538*1/6 }, - /* blue */ - { 65538*1/13,65538*3/13,65538*9/13 }, -}; - -/* Fills in val->image with an image surface created from @bitmap - */ -static cairo_status_t -_get_bitmap_surface (FT_Bitmap *bitmap, - cairo_bool_t own_buffer, - cairo_font_options_t *font_options, - cairo_image_surface_t **surface) -{ - int width, height, stride; - unsigned char *data; - int format = CAIRO_FORMAT_A8; - cairo_bool_t subpixel = FALSE; - - width = bitmap->width; - height = bitmap->rows; - - if (width == 0 || height == 0) { - *surface = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (NULL, format, 0, 0, 0); - return (*surface)->base.status; - } - - switch (bitmap->pixel_mode) { - case FT_PIXEL_MODE_MONO: - stride = (((width + 31) & ~31) >> 3); - if (own_buffer) { - data = bitmap->buffer; - assert (stride == bitmap->pitch); - } else { - data = _cairo_malloc_ab (height, stride); - if (!data) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (stride == bitmap->pitch) { - memcpy (data, bitmap->buffer, stride * height); - } else { - int i; - unsigned char *source, *dest; - - source = bitmap->buffer; - dest = data; - for (i = height; i; i--) { - memcpy (dest, source, bitmap->pitch); - memset (dest + bitmap->pitch, '\0', stride - bitmap->pitch); - - source += bitmap->pitch; - dest += stride; - } - } - } - -#ifndef WORDS_BIGENDIAN - { - unsigned char *d = data; - int count = stride * height; - - while (count--) { - *d = CAIRO_BITSWAP8 (*d); - d++; - } - } -#endif - format = CAIRO_FORMAT_A1; - break; - - case FT_PIXEL_MODE_LCD: - case FT_PIXEL_MODE_LCD_V: - case FT_PIXEL_MODE_GRAY: - switch (font_options->antialias) { - case CAIRO_ANTIALIAS_DEFAULT: - case CAIRO_ANTIALIAS_GRAY: - case CAIRO_ANTIALIAS_NONE: - default: - stride = bitmap->pitch; - if (own_buffer) { - data = bitmap->buffer; - } else { - data = _cairo_malloc_ab (height, stride); - if (!data) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (data, bitmap->buffer, stride * height); - } - format = CAIRO_FORMAT_A8; - break; - case CAIRO_ANTIALIAS_SUBPIXEL: { - int x, y; - unsigned char *in_line, *out_line, *in; - unsigned int *out; - unsigned int red, green, blue; - int rf, gf, bf; - int s; - int o, os; - unsigned char *data_rgba; - unsigned int width_rgba, stride_rgba; - int vmul = 1; - int hmul = 1; - - switch (font_options->subpixel_order) { - case CAIRO_SUBPIXEL_ORDER_DEFAULT: - case CAIRO_SUBPIXEL_ORDER_RGB: - case CAIRO_SUBPIXEL_ORDER_BGR: - default: - width /= 3; - hmul = 3; - break; - case CAIRO_SUBPIXEL_ORDER_VRGB: - case CAIRO_SUBPIXEL_ORDER_VBGR: - vmul = 3; - height /= 3; - break; - } - /* - * Filter the glyph to soften the color fringes - */ - width_rgba = width; - stride = bitmap->pitch; - stride_rgba = (width_rgba * 4 + 3) & ~3; - data_rgba = calloc (stride_rgba, height); - if (data_rgba == NULL) { - if (own_buffer) - free (bitmap->buffer); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - os = 1; - switch (font_options->subpixel_order) { - case CAIRO_SUBPIXEL_ORDER_VRGB: - os = stride; - case CAIRO_SUBPIXEL_ORDER_DEFAULT: - case CAIRO_SUBPIXEL_ORDER_RGB: - default: - rf = 0; - gf = 1; - bf = 2; - break; - case CAIRO_SUBPIXEL_ORDER_VBGR: - os = stride; - case CAIRO_SUBPIXEL_ORDER_BGR: - bf = 0; - gf = 1; - rf = 2; - break; - } - in_line = bitmap->buffer; - out_line = data_rgba; - for (y = 0; y < height; y++) - { - in = in_line; - out = (unsigned int *) out_line; - in_line += stride * vmul; - out_line += stride_rgba; - for (x = 0; x < width * hmul; x += hmul) - { - red = green = blue = 0; - o = 0; - for (s = 0; s < 3; s++) - { - red += filters[rf][s]*in[x+o]; - green += filters[gf][s]*in[x+o]; - blue += filters[bf][s]*in[x+o]; - o += os; - } - red = red / 65536; - green = green / 65536; - blue = blue / 65536; - *out++ = (green << 24) | (red << 16) | (green << 8) | blue; - } - } - - /* Images here are stored in native format. The - * backend must convert to its own format as needed - */ - - if (own_buffer) - free (bitmap->buffer); - data = data_rgba; - stride = stride_rgba; - format = CAIRO_FORMAT_ARGB32; - subpixel = TRUE; - break; - } - } - break; - case FT_PIXEL_MODE_GRAY2: - case FT_PIXEL_MODE_GRAY4: - /* These could be triggered by very rare types of TrueType fonts */ - default: - if (own_buffer) - free (bitmap->buffer); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - *surface = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (data, - format, - width, height, stride); - if ((*surface)->base.status) { - free (data); - return (*surface)->base.status; - } - - if (subpixel) - pixman_image_set_component_alpha ((*surface)->pixman_image, TRUE); - - _cairo_image_surface_assume_ownership_of_data ((*surface)); - - return CAIRO_STATUS_SUCCESS; -} - -/* Converts an outline FT_GlyphSlot into an image - * - * This could go through _render_glyph_bitmap as well, letting - * FreeType convert the outline to a bitmap, but doing it ourselves - * has two minor advantages: first, we save a copy of the bitmap - * buffer: we can directly use the buffer that FreeType renders - * into. - * - * Second, it may help when we add support for subpixel - * rendering: the Xft code does it this way. (Keith thinks that - * it may also be possible to get the subpixel rendering with - * FT_Render_Glyph: something worth looking into in more detail - * when we add subpixel support. If so, we may want to eliminate - * this version of the code path entirely. - */ -static cairo_status_t -_render_glyph_outline (FT_Face face, - cairo_font_options_t *font_options, - cairo_image_surface_t **surface) -{ - FT_GlyphSlot glyphslot = face->glyph; - FT_Outline *outline = &glyphslot->outline; - FT_Bitmap bitmap; - FT_BBox cbox; - FT_Matrix matrix; - int hmul = 1; - int vmul = 1; - unsigned int width, height, stride; - cairo_bool_t subpixel = FALSE; - cairo_status_t status; - - FT_Outline_Get_CBox (outline, &cbox); - - cbox.xMin &= -64; - cbox.yMin &= -64; - cbox.xMax = (cbox.xMax + 63) & -64; - cbox.yMax = (cbox.yMax + 63) & -64; - - width = (unsigned int) ((cbox.xMax - cbox.xMin) >> 6); - height = (unsigned int) ((cbox.yMax - cbox.yMin) >> 6); - stride = (width * hmul + 3) & ~3; - - if (width * height == 0) { - cairo_format_t format; - /* Looks like fb handles zero-sized images just fine */ - switch (font_options->antialias) { - case CAIRO_ANTIALIAS_NONE: - format = CAIRO_FORMAT_A1; - break; - case CAIRO_ANTIALIAS_SUBPIXEL: - format= CAIRO_FORMAT_ARGB32; - break; - case CAIRO_ANTIALIAS_DEFAULT: - case CAIRO_ANTIALIAS_GRAY: - default: - format = CAIRO_FORMAT_A8; - break; - } - - (*surface) = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (NULL, format, 0, 0, 0); - if ((*surface)->base.status) - return (*surface)->base.status; - } else { - - matrix.xx = matrix.yy = 0x10000L; - matrix.xy = matrix.yx = 0; - - switch (font_options->antialias) { - case CAIRO_ANTIALIAS_NONE: - bitmap.pixel_mode = FT_PIXEL_MODE_MONO; - bitmap.num_grays = 1; - stride = ((width + 31) & -32) >> 3; - break; - case CAIRO_ANTIALIAS_DEFAULT: - case CAIRO_ANTIALIAS_GRAY: - bitmap.pixel_mode = FT_PIXEL_MODE_GRAY; - bitmap.num_grays = 256; - stride = (width + 3) & -4; - break; - case CAIRO_ANTIALIAS_SUBPIXEL: - switch (font_options->subpixel_order) { - case CAIRO_SUBPIXEL_ORDER_RGB: - case CAIRO_SUBPIXEL_ORDER_BGR: - case CAIRO_SUBPIXEL_ORDER_DEFAULT: - default: - matrix.xx *= 3; - hmul = 3; - subpixel = TRUE; - break; - case CAIRO_SUBPIXEL_ORDER_VRGB: - case CAIRO_SUBPIXEL_ORDER_VBGR: - matrix.yy *= 3; - vmul = 3; - subpixel = TRUE; - break; - } - FT_Outline_Transform (outline, &matrix); - - bitmap.pixel_mode = FT_PIXEL_MODE_GRAY; - bitmap.num_grays = 256; - stride = (width * hmul + 3) & -4; - } - - bitmap.pitch = stride; - bitmap.width = width * hmul; - bitmap.rows = height * vmul; - bitmap.buffer = calloc (stride, bitmap.rows); - if (bitmap.buffer == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - FT_Outline_Translate (outline, -cbox.xMin*hmul, -cbox.yMin*vmul); - - if (FT_Outline_Get_Bitmap (glyphslot->library, outline, &bitmap) != 0) { - free (bitmap.buffer); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - status = _get_bitmap_surface (&bitmap, TRUE, font_options, surface); - if (status) - return status; - } - - /* - * Note: the font's coordinate system is upside down from ours, so the - * Y coordinate of the control box needs to be negated. Moreover, device - * offsets are position of glyph origin relative to top left while xMin - * and yMax are offsets of top left relative to origin. Another negation. - */ - cairo_surface_set_device_offset (&(*surface)->base, - floor (-(double) cbox.xMin / 64.0), - floor (+(double) cbox.yMax / 64.0)); - - return CAIRO_STATUS_SUCCESS; -} - -/* Converts a bitmap (or other) FT_GlyphSlot into an image */ -static cairo_status_t -_render_glyph_bitmap (FT_Face face, - cairo_font_options_t *font_options, - cairo_image_surface_t **surface) -{ - FT_GlyphSlot glyphslot = face->glyph; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - FT_Error error; - - /* According to the FreeType docs, glyphslot->format could be - * something other than FT_GLYPH_FORMAT_OUTLINE or - * FT_GLYPH_FORMAT_BITMAP. Calling FT_Render_Glyph gives FreeType - * the opportunity to convert such to - * bitmap. FT_GLYPH_FORMAT_COMPOSITE will not be encountered since - * we avoid the FT_LOAD_NO_RECURSE flag. - */ - error = FT_Render_Glyph (glyphslot, FT_RENDER_MODE_NORMAL); - /* XXX ignoring all other errors for now. They are not fatal, typically - * just a glyph-not-found. */ - if (error == FT_Err_Out_Of_Memory) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _get_bitmap_surface (&glyphslot->bitmap, FALSE, font_options, surface); - if (status) - return status; - - /* - * Note: the font's coordinate system is upside down from ours, so the - * Y coordinate of the control box needs to be negated. Moreover, device - * offsets are position of glyph origin relative to top left while - * bitmap_left and bitmap_top are offsets of top left relative to origin. - * Another negation. - */ - cairo_surface_set_device_offset (&(*surface)->base, - -glyphslot->bitmap_left, - +glyphslot->bitmap_top); - - return status; -} - -static cairo_status_t -_transform_glyph_bitmap (cairo_matrix_t * shape, - cairo_image_surface_t ** surface) -{ - cairo_matrix_t original_to_transformed; - cairo_matrix_t transformed_to_original; - cairo_image_surface_t *old_image; - cairo_surface_t *image; - double x[4], y[4]; - double origin_x, origin_y; - int orig_width, orig_height; - int i; - int x_min, y_min, x_max, y_max; - int width, height; - cairo_status_t status; - cairo_surface_pattern_t pattern; - - /* We want to compute a transform that takes the origin - * (device_x_offset, device_y_offset) to 0,0, then applies - * the "shape" portion of the font transform - */ - original_to_transformed = *shape; - - cairo_surface_get_device_offset (&(*surface)->base, &origin_x, &origin_y); - orig_width = cairo_image_surface_get_width (&(*surface)->base); - orig_height = cairo_image_surface_get_height (&(*surface)->base); - - cairo_matrix_translate (&original_to_transformed, - -origin_x, -origin_y); - - /* Find the bounding box of the original bitmap under that - * transform - */ - x[0] = 0; y[0] = 0; - x[1] = orig_width; y[1] = 0; - x[2] = orig_width; y[2] = orig_height; - x[3] = 0; y[3] = orig_height; - - for (i = 0; i < 4; i++) - cairo_matrix_transform_point (&original_to_transformed, - &x[i], &y[i]); - - x_min = floor (x[0]); y_min = floor (y[0]); - x_max = ceil (x[0]); y_max = ceil (y[0]); - - for (i = 1; i < 4; i++) { - if (x[i] < x_min) - x_min = floor (x[i]); - else if (x[i] > x_max) - x_max = ceil (x[i]); - if (y[i] < y_min) - y_min = floor (y[i]); - else if (y[i] > y_max) - y_max = ceil (y[i]); - } - - /* Adjust the transform so that the bounding box starts at 0,0 ... - * this gives our final transform from original bitmap to transformed - * bitmap. - */ - original_to_transformed.x0 -= x_min; - original_to_transformed.y0 -= y_min; - - /* Create the transformed bitmap - */ - width = x_max - x_min; - height = y_max - y_min; - - transformed_to_original = original_to_transformed; - status = cairo_matrix_invert (&transformed_to_original); - if (status) - return status; - - /* We need to pad out the width to 32-bit intervals for cairo-xlib-surface.c */ - width = (width + 3) & ~3; - image = cairo_image_surface_create (CAIRO_FORMAT_A8, width, height); - if (image->status) - return image->status; - - /* Initialize it to empty - */ - status = _cairo_surface_fill_rectangle (image, CAIRO_OPERATOR_CLEAR, - CAIRO_COLOR_TRANSPARENT, - 0, 0, - width, height); - if (status) { - cairo_surface_destroy (image); - return status; - } - - /* Draw the original bitmap transformed into the new bitmap - */ - _cairo_pattern_init_for_surface (&pattern, &(*surface)->base); - cairo_pattern_set_matrix (&pattern.base, &transformed_to_original); - - status = _cairo_surface_composite (CAIRO_OPERATOR_OVER, - &pattern.base, NULL, image, - 0, 0, 0, 0, 0, 0, - width, - height); - - _cairo_pattern_fini (&pattern.base); - - if (status) { - cairo_surface_destroy (image); - return status; - } - - /* Now update the cache entry for the new bitmap, recomputing - * the origin based on the final transform. - */ - cairo_matrix_transform_point (&original_to_transformed, - &origin_x, &origin_y); - - old_image = (*surface); - (*surface) = (cairo_image_surface_t *)image; - cairo_surface_destroy (&old_image->base); - - cairo_surface_set_device_offset (&(*surface)->base, - _cairo_lround (origin_x), - _cairo_lround (origin_y)); - return status; -} - -static const cairo_unscaled_font_backend_t cairo_ft_unscaled_font_backend = { - _cairo_ft_unscaled_font_destroy, -#if 0 - _cairo_ft_unscaled_font_create_glyph -#endif -}; - -/* #cairo_ft_scaled_font_t */ - -typedef struct _cairo_ft_scaled_font { - cairo_scaled_font_t base; - cairo_ft_unscaled_font_t *unscaled; - cairo_ft_options_t ft_options; -} cairo_ft_scaled_font_t; - -const cairo_scaled_font_backend_t cairo_ft_scaled_font_backend; - -/* The load flags passed to FT_Load_Glyph control aspects like hinting and - * antialiasing. Here we compute them from the fields of a FcPattern. - */ -static void -_get_pattern_ft_options (FcPattern *pattern, cairo_ft_options_t *ret) -{ - FcBool antialias, vertical_layout, hinting, autohint, bitmap, embolden; - cairo_ft_options_t ft_options; - int rgba; -#ifdef FC_HINT_STYLE - int hintstyle; -#endif - - _cairo_font_options_init_default (&ft_options.base); - ft_options.load_flags = FT_LOAD_DEFAULT; - ft_options.extra_flags = 0; - -#ifndef FC_EMBEDDED_BITMAP -#define FC_EMBEDDED_BITMAP "embeddedbitmap" -#endif - - /* Check whether to force use of embedded bitmaps */ - if (FcPatternGetBool (pattern, - FC_EMBEDDED_BITMAP, 0, &bitmap) != FcResultMatch) - bitmap = FcFalse; - - /* disable antialiasing if requested */ - if (FcPatternGetBool (pattern, - FC_ANTIALIAS, 0, &antialias) != FcResultMatch) - antialias = FcTrue; - - if (antialias) { - cairo_subpixel_order_t subpixel_order; - - /* disable hinting if requested */ - if (FcPatternGetBool (pattern, - FC_HINTING, 0, &hinting) != FcResultMatch) - hinting = FcTrue; - - if (FcPatternGetInteger (pattern, - FC_RGBA, 0, &rgba) != FcResultMatch) - rgba = FC_RGBA_UNKNOWN; - - switch (rgba) { - case FC_RGBA_RGB: - subpixel_order = CAIRO_SUBPIXEL_ORDER_RGB; - break; - case FC_RGBA_BGR: - subpixel_order = CAIRO_SUBPIXEL_ORDER_BGR; - break; - case FC_RGBA_VRGB: - subpixel_order = CAIRO_SUBPIXEL_ORDER_VRGB; - break; - case FC_RGBA_VBGR: - subpixel_order = CAIRO_SUBPIXEL_ORDER_VBGR; - break; - case FC_RGBA_UNKNOWN: - case FC_RGBA_NONE: - default: - subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT; - break; - } - - if (subpixel_order != CAIRO_SUBPIXEL_ORDER_DEFAULT) { - ft_options.base.subpixel_order = subpixel_order; - ft_options.base.antialias = CAIRO_ANTIALIAS_SUBPIXEL; - } - -#ifdef FC_HINT_STYLE - if (FcPatternGetInteger (pattern, - FC_HINT_STYLE, 0, &hintstyle) != FcResultMatch) - hintstyle = FC_HINT_FULL; - - if (!hinting) - hintstyle = FC_HINT_NONE; - - switch (hintstyle) { - case FC_HINT_NONE: - ft_options.base.hint_style = CAIRO_HINT_STYLE_NONE; - break; - case FC_HINT_SLIGHT: - ft_options.base.hint_style = CAIRO_HINT_STYLE_SLIGHT; - break; - case FC_HINT_MEDIUM: - default: - ft_options.base.hint_style = CAIRO_HINT_STYLE_MEDIUM; - break; - case FC_HINT_FULL: - ft_options.base.hint_style = CAIRO_HINT_STYLE_FULL; - break; - } -#else /* !FC_HINT_STYLE */ - if (!hinting) { - ft_options.base.hint_style = CAIRO_HINT_STYLE_NONE; - } -#endif /* FC_HINT_STYLE */ - - /* Force embedded bitmaps off if no hinting requested */ - if (ft_options.base.hint_style == CAIRO_HINT_STYLE_NONE) - bitmap = FcFalse; - - if (!bitmap) - ft_options.load_flags |= FT_LOAD_NO_BITMAP; - - } else { - ft_options.base.antialias = CAIRO_ANTIALIAS_NONE; - } - - /* force autohinting if requested */ - if (FcPatternGetBool (pattern, - FC_AUTOHINT, 0, &autohint) != FcResultMatch) - autohint = FcFalse; - - if (autohint) - ft_options.load_flags |= FT_LOAD_FORCE_AUTOHINT; - - if (FcPatternGetBool (pattern, - FC_VERTICAL_LAYOUT, 0, &vertical_layout) != FcResultMatch) - vertical_layout = FcFalse; - - if (vertical_layout) - ft_options.load_flags |= FT_LOAD_VERTICAL_LAYOUT; - -#ifndef FC_EMBOLDEN -#define FC_EMBOLDEN "embolden" -#endif - if (FcPatternGetBool (pattern, - FC_EMBOLDEN, 0, &embolden) != FcResultMatch) - embolden = FcFalse; - - if (embolden) - ft_options.extra_flags |= CAIRO_FT_OPTIONS_EMBOLDEN; - - *ret = ft_options; -} - -static void -_cairo_ft_options_merge (cairo_ft_options_t *options, - cairo_ft_options_t *other) -{ - int load_flags = other->load_flags; - int load_target = FT_LOAD_TARGET_NORMAL; - - /* clear load target mode */ - load_flags &= ~(FT_LOAD_TARGET_(FT_LOAD_TARGET_MODE(other->load_flags))); - - if (load_flags & FT_LOAD_NO_HINTING) - other->base.hint_style = CAIRO_HINT_STYLE_NONE; - - if (other->base.antialias == CAIRO_ANTIALIAS_NONE || - options->base.antialias == CAIRO_ANTIALIAS_NONE) { - options->base.antialias = CAIRO_ANTIALIAS_NONE; - options->base.subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT; - } - - if (other->base.antialias == CAIRO_ANTIALIAS_SUBPIXEL && - (options->base.antialias == CAIRO_ANTIALIAS_DEFAULT || - options->base.antialias == CAIRO_ANTIALIAS_GRAY)) { - options->base.antialias = CAIRO_ANTIALIAS_SUBPIXEL; - options->base.subpixel_order = other->base.subpixel_order; - } - - if (options->base.hint_style == CAIRO_HINT_STYLE_DEFAULT) - options->base.hint_style = other->base.hint_style; - - if (other->base.hint_style == CAIRO_HINT_STYLE_NONE) - options->base.hint_style = CAIRO_HINT_STYLE_NONE; - - if (options->base.antialias == CAIRO_ANTIALIAS_NONE) { - if (options->base.hint_style == CAIRO_HINT_STYLE_NONE) - load_flags |= FT_LOAD_NO_HINTING; - else - load_target = FT_LOAD_TARGET_MONO; - load_flags |= FT_LOAD_MONOCHROME; - } else { - switch (options->base.hint_style) { - case CAIRO_HINT_STYLE_NONE: - load_flags |= FT_LOAD_NO_HINTING; - break; - case CAIRO_HINT_STYLE_SLIGHT: - load_target = FT_LOAD_TARGET_LIGHT; - break; - case CAIRO_HINT_STYLE_MEDIUM: - break; - case CAIRO_HINT_STYLE_FULL: - case CAIRO_HINT_STYLE_DEFAULT: - if (options->base.antialias == CAIRO_ANTIALIAS_SUBPIXEL) { - switch (options->base.subpixel_order) { - case CAIRO_SUBPIXEL_ORDER_DEFAULT: - case CAIRO_SUBPIXEL_ORDER_RGB: - case CAIRO_SUBPIXEL_ORDER_BGR: - load_target |= FT_LOAD_TARGET_LCD; - break; - case CAIRO_SUBPIXEL_ORDER_VRGB: - case CAIRO_SUBPIXEL_ORDER_VBGR: - load_target |= FT_LOAD_TARGET_LCD_V; - break; - } - } - break; - } - } - - options->load_flags = load_flags | load_target; - options->extra_flags = other->extra_flags; - if (options->base.hint_metrics != CAIRO_HINT_METRICS_OFF) - options->extra_flags |= CAIRO_FT_OPTIONS_HINT_METRICS; -} - -static cairo_status_t -_cairo_ft_scaled_font_create (cairo_ft_unscaled_font_t *unscaled, - cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_ft_options_t ft_options, - cairo_scaled_font_t **font_out) -{ - cairo_ft_scaled_font_t *scaled_font; - FT_Face face; - FT_Size_Metrics *metrics; - cairo_font_extents_t fs_metrics; - cairo_status_t status; - - face = _cairo_ft_unscaled_font_lock_face (unscaled); - if (!face) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - scaled_font = malloc (sizeof(cairo_ft_scaled_font_t)); - if (scaled_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } - - _cairo_unscaled_font_reference (&unscaled->base); - scaled_font->unscaled = unscaled; - - _cairo_font_options_init_copy (&scaled_font->ft_options.base, options); - _cairo_ft_options_merge (&scaled_font->ft_options, &ft_options); - - status = _cairo_scaled_font_init (&scaled_font->base, - font_face, - font_matrix, ctm, options, - &cairo_ft_scaled_font_backend); - if (status) { - _cairo_unscaled_font_destroy (&unscaled->base); - free (scaled_font); - goto FAIL; - } - - status = _cairo_ft_unscaled_font_set_scale (unscaled, - &scaled_font->base.scale); - if (status) { - _cairo_unscaled_font_destroy (&unscaled->base); - free (scaled_font); - goto FAIL; - } - - - metrics = &face->size->metrics; - - /* - * Get to unscaled metrics so that the upper level can get back to - * user space - * - * Also use this path for bitmap-only fonts. The other branch uses - * face members that are only relevant for scalable fonts. This is - * detected by simply checking for units_per_EM==0. - */ - if (scaled_font->base.options.hint_metrics != CAIRO_HINT_METRICS_OFF || - face->units_per_EM == 0) { - double x_factor, y_factor; - - if (unscaled->x_scale == 0) - x_factor = 0; - else - x_factor = 1 / unscaled->x_scale; - - if (unscaled->y_scale == 0) - y_factor = 0; - else - y_factor = 1 / unscaled->y_scale; - - fs_metrics.ascent = DOUBLE_FROM_26_6(metrics->ascender) * y_factor; - fs_metrics.descent = DOUBLE_FROM_26_6(- metrics->descender) * y_factor; - fs_metrics.height = DOUBLE_FROM_26_6(metrics->height) * y_factor; - if (!_cairo_ft_scaled_font_is_vertical (&scaled_font->base)) { - fs_metrics.max_x_advance = DOUBLE_FROM_26_6(metrics->max_advance) * x_factor; - fs_metrics.max_y_advance = 0; - } else { - fs_metrics.max_x_advance = 0; - fs_metrics.max_y_advance = DOUBLE_FROM_26_6(metrics->max_advance) * y_factor; - } - } else { - double scale = face->units_per_EM; - - fs_metrics.ascent = face->ascender / scale; - fs_metrics.descent = - face->descender / scale; - fs_metrics.height = face->height / scale; - if (!_cairo_ft_scaled_font_is_vertical (&scaled_font->base)) { - fs_metrics.max_x_advance = face->max_advance_width / scale; - fs_metrics.max_y_advance = 0; - } else { - fs_metrics.max_x_advance = 0; - fs_metrics.max_y_advance = face->max_advance_height / scale; - } - } - - status = _cairo_scaled_font_set_metrics (&scaled_font->base, &fs_metrics); - - *font_out = &scaled_font->base; - - FAIL: - _cairo_ft_unscaled_font_unlock_face (unscaled); - - return status; -} - -cairo_bool_t -_cairo_scaled_font_is_ft (cairo_scaled_font_t *scaled_font) -{ - return scaled_font->backend == &cairo_ft_scaled_font_backend; -} - -static cairo_status_t -_cairo_ft_scaled_font_create_toy (cairo_toy_font_face_t *toy_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *font_options, - cairo_scaled_font_t **font) -{ - FcPattern *pattern, *resolved; - cairo_ft_unscaled_font_t *unscaled; - FcResult result; - int fcslant; - int fcweight; - cairo_matrix_t scale; - cairo_status_t status; - cairo_ft_font_transform_t sf; - cairo_ft_options_t ft_options; - - cairo_matrix_multiply (&scale, font_matrix, ctm); - status = _compute_transform (&sf, &scale); - if (status) - return status; - - pattern = FcPatternCreate (); - if (!pattern) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (!FcPatternAddString (pattern, - FC_FAMILY, (unsigned char *) toy_face->family)) - { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_PATTERN; - } - - switch (toy_face->slant) - { - case CAIRO_FONT_SLANT_ITALIC: - fcslant = FC_SLANT_ITALIC; - break; - case CAIRO_FONT_SLANT_OBLIQUE: - fcslant = FC_SLANT_OBLIQUE; - break; - case CAIRO_FONT_SLANT_NORMAL: - default: - fcslant = FC_SLANT_ROMAN; - break; - } - - if (!FcPatternAddInteger (pattern, FC_SLANT, fcslant)) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_PATTERN; - } - - switch (toy_face->weight) - { - case CAIRO_FONT_WEIGHT_BOLD: - fcweight = FC_WEIGHT_BOLD; - break; - case CAIRO_FONT_WEIGHT_NORMAL: - default: - fcweight = FC_WEIGHT_MEDIUM; - break; - } - - if (!FcPatternAddInteger (pattern, FC_WEIGHT, fcweight)) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_PATTERN; - } - - if (! FcPatternAddDouble (pattern, FC_PIXEL_SIZE, sf.y_scale)) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_PATTERN; - } - - if (! FcConfigSubstitute (NULL, pattern, FcMatchPattern)) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_PATTERN; - } - - status = _cairo_ft_font_options_substitute (font_options, pattern); - if (status) - goto FREE_PATTERN; - - FcDefaultSubstitute (pattern); - - resolved = FcFontMatch (NULL, pattern, &result); - if (!resolved) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_PATTERN; - } - - unscaled = _cairo_ft_unscaled_font_create_for_pattern (resolved); - if (!unscaled) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FREE_RESOLVED; - } - - _get_pattern_ft_options (resolved, &ft_options); - - status = _cairo_ft_scaled_font_create (unscaled, - &toy_face->base, - font_matrix, ctm, - font_options, ft_options, - font); - - _cairo_unscaled_font_destroy (&unscaled->base); - - FREE_RESOLVED: - FcPatternDestroy (resolved); - - FREE_PATTERN: - FcPatternDestroy (pattern); - - return status; -} - -static void -_cairo_ft_scaled_font_fini (void *abstract_font) -{ - cairo_ft_scaled_font_t *scaled_font = abstract_font; - - if (scaled_font == NULL) - return; - - _cairo_unscaled_font_destroy (&scaled_font->unscaled->base); -} - -static int -_move_to (FT_Vector *to, void *closure) -{ - cairo_path_fixed_t *path = closure; - cairo_fixed_t x, y; - - x = _cairo_fixed_from_26_6 (to->x); - y = _cairo_fixed_from_26_6 (to->y); - - if (_cairo_path_fixed_close_path (path) != CAIRO_STATUS_SUCCESS) - return 1; - if (_cairo_path_fixed_move_to (path, x, y) != CAIRO_STATUS_SUCCESS) - return 1; - - return 0; -} - -static int -_line_to (FT_Vector *to, void *closure) -{ - cairo_path_fixed_t *path = closure; - cairo_fixed_t x, y; - - x = _cairo_fixed_from_26_6 (to->x); - y = _cairo_fixed_from_26_6 (to->y); - - if (_cairo_path_fixed_line_to (path, x, y) != CAIRO_STATUS_SUCCESS) - return 1; - - return 0; -} - -static int -_conic_to (FT_Vector *control, FT_Vector *to, void *closure) -{ - cairo_path_fixed_t *path = closure; - - cairo_fixed_t x0, y0; - cairo_fixed_t x1, y1; - cairo_fixed_t x2, y2; - cairo_fixed_t x3, y3; - cairo_point_t conic; - - if (! _cairo_path_fixed_get_current_point (path, &x0, &y0)) - return 1; - - conic.x = _cairo_fixed_from_26_6 (control->x); - conic.y = _cairo_fixed_from_26_6 (control->y); - - x3 = _cairo_fixed_from_26_6 (to->x); - y3 = _cairo_fixed_from_26_6 (to->y); - - x1 = x0 + 2.0/3.0 * (conic.x - x0); - y1 = y0 + 2.0/3.0 * (conic.y - y0); - - x2 = x3 + 2.0/3.0 * (conic.x - x3); - y2 = y3 + 2.0/3.0 * (conic.y - y3); - - if (_cairo_path_fixed_curve_to (path, - x1, y1, - x2, y2, - x3, y3) != CAIRO_STATUS_SUCCESS) - return 1; - - return 0; -} - -static int -_cubic_to (FT_Vector *control1, FT_Vector *control2, - FT_Vector *to, void *closure) -{ - cairo_path_fixed_t *path = closure; - cairo_fixed_t x0, y0; - cairo_fixed_t x1, y1; - cairo_fixed_t x2, y2; - - x0 = _cairo_fixed_from_26_6 (control1->x); - y0 = _cairo_fixed_from_26_6 (control1->y); - - x1 = _cairo_fixed_from_26_6 (control2->x); - y1 = _cairo_fixed_from_26_6 (control2->y); - - x2 = _cairo_fixed_from_26_6 (to->x); - y2 = _cairo_fixed_from_26_6 (to->y); - - if (_cairo_path_fixed_curve_to (path, - x0, y0, - x1, y1, - x2, y2) != CAIRO_STATUS_SUCCESS) - return 1; - - return 0; -} - -static cairo_status_t -_decompose_glyph_outline (FT_Face face, - cairo_font_options_t *options, - cairo_path_fixed_t **pathp) -{ - static const FT_Outline_Funcs outline_funcs = { - (FT_Outline_MoveToFunc)_move_to, - (FT_Outline_LineToFunc)_line_to, - (FT_Outline_ConicToFunc)_conic_to, - (FT_Outline_CubicToFunc)_cubic_to, - 0, /* shift */ - 0, /* delta */ - }; - static const FT_Matrix invert_y = { - DOUBLE_TO_16_16 (1.0), 0, - 0, DOUBLE_TO_16_16 (-1.0), - }; - - FT_GlyphSlot glyph; - cairo_path_fixed_t *path; - cairo_status_t status; - - path = _cairo_path_fixed_create (); - if (!path) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - glyph = face->glyph; - - /* Font glyphs have an inverted Y axis compared to cairo. */ - FT_Outline_Transform (&glyph->outline, &invert_y); - if (FT_Outline_Decompose (&glyph->outline, &outline_funcs, path)) { - _cairo_path_fixed_destroy (path); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - status = _cairo_path_fixed_close_path (path); - if (status) { - _cairo_path_fixed_destroy (path); - return status; - } - - *pathp = path; - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Translate glyph to match its metrics. - */ -static void -_cairo_ft_scaled_glyph_vertical_layout_bearing_fix (void *abstract_font, - FT_GlyphSlot glyph) -{ - cairo_ft_scaled_font_t *scaled_font = abstract_font; - FT_Vector vector; - - vector.x = glyph->metrics.vertBearingX - glyph->metrics.horiBearingX; - vector.y = -glyph->metrics.vertBearingY - glyph->metrics.horiBearingY; - - if (glyph->format == FT_GLYPH_FORMAT_OUTLINE) { - FT_Vector_Transform (&vector, &scaled_font->unscaled->Current_Shape); - FT_Outline_Translate(&glyph->outline, vector.x, vector.y); - } else if (glyph->format == FT_GLYPH_FORMAT_BITMAP) { - glyph->bitmap_left += vector.x / 64; - glyph->bitmap_top += vector.y / 64; - } -} - -static cairo_int_status_t -_cairo_ft_scaled_glyph_init (void *abstract_font, - cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_glyph_info_t info) -{ - cairo_text_extents_t fs_metrics; - cairo_ft_scaled_font_t *scaled_font = abstract_font; - cairo_ft_unscaled_font_t *unscaled = scaled_font->unscaled; - FT_GlyphSlot glyph; - FT_Face face; - FT_Error error; - int load_flags = scaled_font->ft_options.load_flags; - FT_Glyph_Metrics *metrics; - double x_factor, y_factor; - cairo_bool_t vertical_layout = FALSE; - cairo_status_t status; - - face = _cairo_ft_unscaled_font_lock_face (unscaled); - if (!face) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_ft_unscaled_font_set_scale (scaled_font->unscaled, - &scaled_font->base.scale); - if (status) - goto FAIL; - - /* Ignore global advance unconditionally */ - load_flags |= FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH; - - if ((info & CAIRO_SCALED_GLYPH_INFO_PATH) != 0 && - (info & CAIRO_SCALED_GLYPH_INFO_SURFACE) == 0) - load_flags |= FT_LOAD_NO_BITMAP; - - /* - * Don't pass FT_LOAD_VERTICAL_LAYOUT to FT_Load_Glyph here as - * suggested by freetype people. - */ - if (load_flags & FT_LOAD_VERTICAL_LAYOUT) { - load_flags &= ~FT_LOAD_VERTICAL_LAYOUT; - vertical_layout = TRUE; - } - - error = FT_Load_Glyph (scaled_font->unscaled->face, - _cairo_scaled_glyph_index(scaled_glyph), - load_flags); - /* XXX ignoring all other errors for now. They are not fatal, typically - * just a glyph-not-found. */ - if (error == FT_Err_Out_Of_Memory) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } - - glyph = face->glyph; - -#if HAVE_FT_GLYPHSLOT_EMBOLDEN - /* - * embolden glyphs if requested - */ - if (scaled_font->ft_options.extra_flags & CAIRO_FT_OPTIONS_EMBOLDEN) - FT_GlyphSlot_Embolden (glyph); -#endif - - if (vertical_layout) - _cairo_ft_scaled_glyph_vertical_layout_bearing_fix (scaled_font, glyph); - - if (info & CAIRO_SCALED_GLYPH_INFO_METRICS) { - - cairo_bool_t hint_metrics = scaled_font->base.options.hint_metrics != CAIRO_HINT_METRICS_OFF; - /* - * Compute font-space metrics - */ - metrics = &glyph->metrics; - - if (unscaled->x_scale == 0) - x_factor = 0; - else - x_factor = 1 / unscaled->x_scale; - - if (unscaled->y_scale == 0) - y_factor = 0; - else - y_factor = 1 / unscaled->y_scale; - - /* - * Note: Y coordinates of the horizontal bearing need to be negated. - * - * Scale metrics back to glyph space from the scaled glyph space returned - * by FreeType - * - * If we want hinted metrics but aren't asking for hinted glyphs from - * FreeType, then we need to do the metric hinting ourselves. - */ - - if (hint_metrics && (load_flags & FT_LOAD_NO_HINTING)) - { - FT_Pos x1, x2; - FT_Pos y1, y2; - FT_Pos advance; - - if (!vertical_layout) { - x1 = (metrics->horiBearingX) & -64; - x2 = (metrics->horiBearingX + metrics->width + 63) & -64; - y1 = (-metrics->horiBearingY) & -64; - y2 = (-metrics->horiBearingY + metrics->height + 63) & -64; - - advance = ((metrics->horiAdvance + 32) & -64); - - fs_metrics.x_bearing = DOUBLE_FROM_26_6 (x1) * x_factor; - fs_metrics.y_bearing = DOUBLE_FROM_26_6 (y1) * y_factor; - - fs_metrics.width = DOUBLE_FROM_26_6 (x2 - x1) * x_factor; - fs_metrics.height = DOUBLE_FROM_26_6 (y2 - y1) * y_factor; - - fs_metrics.x_advance = DOUBLE_FROM_26_6 (advance) * x_factor; - fs_metrics.y_advance = 0; - } else { - x1 = (metrics->vertBearingX) & -64; - x2 = (metrics->vertBearingX + metrics->width + 63) & -64; - y1 = (metrics->vertBearingY) & -64; - y2 = (metrics->vertBearingY + metrics->height + 63) & -64; - - advance = ((metrics->vertAdvance + 32) & -64); - - fs_metrics.x_bearing = DOUBLE_FROM_26_6 (x1) * x_factor; - fs_metrics.y_bearing = DOUBLE_FROM_26_6 (y1) * y_factor; - - fs_metrics.width = DOUBLE_FROM_26_6 (x2 - x1) * x_factor; - fs_metrics.height = DOUBLE_FROM_26_6 (y2 - y1) * y_factor; - - fs_metrics.x_advance = 0; - fs_metrics.y_advance = DOUBLE_FROM_26_6 (advance) * y_factor; - } - } else { - fs_metrics.width = DOUBLE_FROM_26_6 (metrics->width) * x_factor; - fs_metrics.height = DOUBLE_FROM_26_6 (metrics->height) * y_factor; - - if (!vertical_layout) { - fs_metrics.x_bearing = DOUBLE_FROM_26_6 (metrics->horiBearingX) * x_factor; - fs_metrics.y_bearing = DOUBLE_FROM_26_6 (-metrics->horiBearingY) * y_factor; - - if (hint_metrics || glyph->format != FT_GLYPH_FORMAT_OUTLINE) - fs_metrics.x_advance = DOUBLE_FROM_26_6 (metrics->horiAdvance) * x_factor; - else - fs_metrics.x_advance = DOUBLE_FROM_16_16 (glyph->linearHoriAdvance) * x_factor; - fs_metrics.y_advance = 0 * y_factor; - } else { - fs_metrics.x_bearing = DOUBLE_FROM_26_6 (metrics->vertBearingX) * x_factor; - fs_metrics.y_bearing = DOUBLE_FROM_26_6 (metrics->vertBearingY) * y_factor; - - fs_metrics.x_advance = 0 * x_factor; - if (hint_metrics || glyph->format != FT_GLYPH_FORMAT_OUTLINE) - fs_metrics.y_advance = DOUBLE_FROM_26_6 (metrics->vertAdvance) * y_factor; - else - fs_metrics.y_advance = DOUBLE_FROM_26_6 (glyph->linearVertAdvance) * y_factor; - } - } - - _cairo_scaled_glyph_set_metrics (scaled_glyph, - &scaled_font->base, - &fs_metrics); - } - - if ((info & CAIRO_SCALED_GLYPH_INFO_SURFACE) != 0) { - cairo_image_surface_t *surface; - - if (glyph->format == FT_GLYPH_FORMAT_OUTLINE) { - status = _render_glyph_outline (face, &scaled_font->ft_options.base, - &surface); - } else { - status = _render_glyph_bitmap (face, &scaled_font->ft_options.base, - &surface); - if (status == CAIRO_STATUS_SUCCESS && unscaled->have_shape) { - status = _transform_glyph_bitmap (&unscaled->current_shape, - &surface); - if (status) - cairo_surface_destroy (&surface->base); - } - } - if (status) - goto FAIL; - - _cairo_scaled_glyph_set_surface (scaled_glyph, - &scaled_font->base, - surface); - } - - if (info & CAIRO_SCALED_GLYPH_INFO_PATH) { - cairo_path_fixed_t *path = NULL; /* hide compiler warning */ - - /* - * A kludge -- the above code will trash the outline, - * so reload it. This will probably never occur though - */ - if ((info & CAIRO_SCALED_GLYPH_INFO_SURFACE) != 0) { - error = FT_Load_Glyph (face, - _cairo_scaled_glyph_index(scaled_glyph), - load_flags | FT_LOAD_NO_BITMAP); - /* XXX ignoring all other errors for now. They are not fatal, typically - * just a glyph-not-found. */ - if (error == FT_Err_Out_Of_Memory) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } -#if HAVE_FT_GLYPHSLOT_EMBOLDEN - /* - * embolden glyphs if requested - */ - if (scaled_font->ft_options.extra_flags & CAIRO_FT_OPTIONS_EMBOLDEN) - FT_GlyphSlot_Embolden (glyph); -#endif - if (vertical_layout) - _cairo_ft_scaled_glyph_vertical_layout_bearing_fix (scaled_font, glyph); - - } - if (glyph->format == FT_GLYPH_FORMAT_OUTLINE) - status = _decompose_glyph_outline (face, &scaled_font->ft_options.base, - &path); - else - status = CAIRO_INT_STATUS_UNSUPPORTED; - - if (status) - goto FAIL; - - _cairo_scaled_glyph_set_path (scaled_glyph, - &scaled_font->base, - path); - } - FAIL: - _cairo_ft_unscaled_font_unlock_face (unscaled); - - return status; -} - -static unsigned long -_cairo_ft_ucs4_to_index (void *abstract_font, - uint32_t ucs4) -{ - cairo_ft_scaled_font_t *scaled_font = abstract_font; - cairo_ft_unscaled_font_t *unscaled = scaled_font->unscaled; - FT_Face face; - FT_UInt index; - - face = _cairo_ft_unscaled_font_lock_face (unscaled); - if (!face) - return 0; - index = FT_Get_Char_Index (face, ucs4); - _cairo_ft_unscaled_font_unlock_face (unscaled); - return index; -} - -static cairo_int_status_t -_cairo_ft_load_truetype_table (void *abstract_font, - unsigned long tag, - long offset, - unsigned char *buffer, - unsigned long *length) -{ - cairo_ft_scaled_font_t *scaled_font = abstract_font; - cairo_ft_unscaled_font_t *unscaled = scaled_font->unscaled; - FT_Face face; - cairo_status_t status = CAIRO_INT_STATUS_UNSUPPORTED; - - if (_cairo_ft_scaled_font_is_vertical (&scaled_font->base)) - return CAIRO_INT_STATUS_UNSUPPORTED; - -#if HAVE_FT_LOAD_SFNT_TABLE - face = _cairo_ft_unscaled_font_lock_face (unscaled); - if (!face) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (FT_IS_SFNT (face) && - FT_Load_Sfnt_Table (face, tag, offset, buffer, length) == 0) - status = CAIRO_STATUS_SUCCESS; - - _cairo_ft_unscaled_font_unlock_face (unscaled); -#endif - - return status; -} - -static cairo_int_status_t -_cairo_ft_map_glyphs_to_unicode (void *abstract_font, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_ft_scaled_font_t *scaled_font = abstract_font; - cairo_ft_unscaled_font_t *unscaled = scaled_font->unscaled; - FT_Face face; - FT_UInt glyph; - unsigned long charcode; - unsigned int i; - int count; - - face = _cairo_ft_unscaled_font_lock_face (unscaled); - if (!face) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - count = font_subset->num_glyphs; - charcode = FT_Get_First_Char( face, &glyph); - while (glyph != 0 && count > 0) - { - for (i = 0; i < font_subset->num_glyphs; i++) { - if (font_subset->glyphs[i] == glyph) { - font_subset->to_unicode[i] = charcode; - count--; - break; - } - } - charcode = FT_Get_Next_Char (face, charcode, &glyph); - } - _cairo_ft_unscaled_font_unlock_face (unscaled); - - return CAIRO_STATUS_SUCCESS; -} - -const cairo_scaled_font_backend_t cairo_ft_scaled_font_backend = { - CAIRO_FONT_TYPE_FT, - _cairo_ft_scaled_font_create_toy, - _cairo_ft_scaled_font_fini, - _cairo_ft_scaled_glyph_init, - NULL, /* text_to_glyphs */ - _cairo_ft_ucs4_to_index, - NULL, /* show_glyphs */ - _cairo_ft_load_truetype_table, - _cairo_ft_map_glyphs_to_unicode, -}; - -/* #cairo_ft_font_face_t */ - -static void -_cairo_ft_font_face_destroy (void *abstract_face) -{ - cairo_ft_font_face_t *font_face = abstract_face; - - cairo_ft_font_face_t *tmp_face = NULL; - cairo_ft_font_face_t *last_face = NULL; - - if (font_face == NULL) - return; - - /* When destroying the face created by cairo_ft_font_face_create_for_ft_face, - * we have a special "zombie" state for the face when the unscaled font - * is still alive but there are no public references to the font face. - * - * We go from: - * - * font_face ------> unscaled - * <-....weak....../ - * - * To: - * - * font_face <------- unscaled - */ - - if (font_face->unscaled && - font_face->unscaled->from_face && - CAIRO_REFERENCE_COUNT_GET_VALUE (&font_face->unscaled->base.ref_count) > 1) - { - cairo_font_face_reference (&font_face->base); - - _cairo_unscaled_font_destroy (&font_face->unscaled->base); - font_face->unscaled = NULL; - - return; - } - - if (font_face->unscaled) { - /* Remove face from linked list */ - for (tmp_face = font_face->unscaled->faces; - tmp_face; - tmp_face = tmp_face->next) - { - if (tmp_face == font_face) { - if (last_face) - last_face->next = tmp_face->next; - else - font_face->unscaled->faces = tmp_face->next; - } - - last_face = tmp_face; - } - - _cairo_unscaled_font_destroy (&font_face->unscaled->base); - font_face->unscaled = NULL; - } -} - -static cairo_status_t -_cairo_ft_font_face_scaled_font_create (void *abstract_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **scaled_font) -{ - cairo_ft_font_face_t *font_face = abstract_face; - cairo_ft_options_t ft_options; - - /* The handling of font options is different depending on how the - * font face was created. When the user creates a font face with - * cairo_ft_font_face_create_for_ft_face(), then the load flags - * passed in augment the load flags for the options. But for - * cairo_ft_font_face_create_for_pattern(), the load flags are - * derived from a pattern where the user has called - * cairo_ft_font_options_substitute(), so *just* use those load - * flags and ignore the options. - */ - - ft_options = font_face->ft_options; - - return _cairo_ft_scaled_font_create (font_face->unscaled, - &font_face->base, - font_matrix, ctm, - options, ft_options, - scaled_font); -} - -static const cairo_font_face_backend_t _cairo_ft_font_face_backend = { - CAIRO_FONT_TYPE_FT, - _cairo_ft_font_face_destroy, - _cairo_ft_font_face_scaled_font_create -}; - -static cairo_font_face_t * -_cairo_ft_font_face_create (cairo_ft_unscaled_font_t *unscaled, - cairo_ft_options_t *ft_options) -{ - cairo_ft_font_face_t *font_face, **prev_font_face; - - /* Looked for an existing matching font face */ - for (font_face = unscaled->faces, prev_font_face = &unscaled->faces; - font_face; - prev_font_face = &font_face->next, font_face = font_face->next) - { - if (font_face->ft_options.load_flags == ft_options->load_flags && - font_face->ft_options.extra_flags == ft_options->extra_flags && - cairo_font_options_equal (&font_face->ft_options.base, &ft_options->base)) - { - if (font_face->base.status == CAIRO_STATUS_SUCCESS) - return cairo_font_face_reference (&font_face->base); - - /* The font_face has been left in an error state, abandon it. */ - *prev_font_face = font_face->next; - break; - } - } - - /* No match found, create a new one */ - font_face = malloc (sizeof (cairo_ft_font_face_t)); - if (!font_face) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_face_t *)&_cairo_font_face_nil; - } - - font_face->unscaled = unscaled; - _cairo_unscaled_font_reference (&unscaled->base); - - font_face->ft_options = *ft_options; - - font_face->next = unscaled->faces; - unscaled->faces = font_face; - - _cairo_font_face_init (&font_face->base, &_cairo_ft_font_face_backend); - - return &font_face->base; -} - -/* implement the platform-specific interface */ - -static cairo_status_t -_cairo_ft_font_options_substitute (const cairo_font_options_t *options, - FcPattern *pattern) -{ - FcValue v; - - if (options->antialias != CAIRO_ANTIALIAS_DEFAULT) - { - if (FcPatternGet (pattern, FC_ANTIALIAS, 0, &v) == FcResultNoMatch) - { - if (! FcPatternAddBool (pattern, - FC_ANTIALIAS, - options->antialias != CAIRO_ANTIALIAS_NONE)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (options->antialias != CAIRO_ANTIALIAS_SUBPIXEL) { - FcPatternDel (pattern, FC_RGBA); - if (! FcPatternAddInteger (pattern, FC_RGBA, FC_RGBA_NONE)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - } - - if (options->antialias != CAIRO_ANTIALIAS_DEFAULT) - { - if (FcPatternGet (pattern, FC_RGBA, 0, &v) == FcResultNoMatch) - { - int rgba; - - if (options->antialias == CAIRO_ANTIALIAS_SUBPIXEL) { - switch (options->subpixel_order) { - case CAIRO_SUBPIXEL_ORDER_DEFAULT: - case CAIRO_SUBPIXEL_ORDER_RGB: - default: - rgba = FC_RGBA_RGB; - break; - case CAIRO_SUBPIXEL_ORDER_BGR: - rgba = FC_RGBA_BGR; - break; - case CAIRO_SUBPIXEL_ORDER_VRGB: - rgba = FC_RGBA_VRGB; - break; - case CAIRO_SUBPIXEL_ORDER_VBGR: - rgba = FC_RGBA_VBGR; - break; - } - } else { - rgba = FC_RGBA_NONE; - } - - if (! FcPatternAddInteger (pattern, FC_RGBA, rgba)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - - if (options->hint_style != CAIRO_HINT_STYLE_DEFAULT) - { - if (FcPatternGet (pattern, FC_HINTING, 0, &v) == FcResultNoMatch) - { - if (! FcPatternAddBool (pattern, - FC_HINTING, - options->hint_style != CAIRO_HINT_STYLE_NONE)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - -#ifdef FC_HINT_STYLE - if (FcPatternGet (pattern, FC_HINT_STYLE, 0, &v) == FcResultNoMatch) - { - int hint_style; - - switch (options->hint_style) { - case CAIRO_HINT_STYLE_NONE: - hint_style = FC_HINT_NONE; - break; - case CAIRO_HINT_STYLE_SLIGHT: - hint_style = FC_HINT_SLIGHT; - break; - case CAIRO_HINT_STYLE_MEDIUM: - hint_style = FC_HINT_MEDIUM; - break; - case CAIRO_HINT_STYLE_FULL: - case CAIRO_HINT_STYLE_DEFAULT: - default: - hint_style = FC_HINT_FULL; - break; - } - - if (! FcPatternAddInteger (pattern, FC_HINT_STYLE, hint_style)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } -#endif - } - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_ft_font_options_substitute: - * @options: a #cairo_font_options_t object - * @pattern: an existing #FcPattern - * - * Add options to a #FcPattern based on a #cairo_font_options_t font - * options object. Options that are already in the pattern, are not overridden, - * so you should call this function after calling FcConfigSubstitute() (the - * user's settings should override options based on the surface type), but - * before calling FcDefaultSubstitute(). - **/ -void -cairo_ft_font_options_substitute (const cairo_font_options_t *options, - FcPattern *pattern) -{ - if (cairo_font_options_status ((cairo_font_options_t *) options)) - return; - - _cairo_ft_font_options_substitute (options, pattern); -} - -/** - * cairo_ft_font_face_create_for_pattern: - * @pattern: A fully resolved fontconfig - * pattern. A pattern can be resolved, by, among other things, calling - * FcConfigSubstitute(), FcDefaultSubstitute(), then - * FcFontMatch(). Cairo will call FcPatternReference() on this - * pattern, so you should not further modify the pattern, but you can - * release your reference to the pattern with FcPatternDestroy() if - * you no longer need to access it. - * - * Creates a new font face for the FreeType font backend based on a - * fontconfig pattern. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). The - * #cairo_scaled_font_t returned from cairo_scaled_font_create() is - * also for the FreeType backend and can be used with functions such - * as cairo_ft_font_lock_face(). - * - * Font rendering options are represented both here and when you - * call cairo_scaled_font_create(). Font options that have a representation - * in a #FcPattern must be passed in here; to modify #FcPattern - * appropriately to reflect the options in a #cairo_font_options_t, call - * cairo_ft_font_options_substitute(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - **/ -cairo_font_face_t * -cairo_ft_font_face_create_for_pattern (FcPattern *pattern) -{ - cairo_ft_unscaled_font_t *unscaled; - cairo_font_face_t *font_face; - cairo_ft_options_t ft_options; - - unscaled = _cairo_ft_unscaled_font_create_for_pattern (pattern); - if (unscaled == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_face_t *)&_cairo_font_face_nil; - } - - _get_pattern_ft_options (pattern, &ft_options); - font_face = _cairo_ft_font_face_create (unscaled, &ft_options); - _cairo_unscaled_font_destroy (&unscaled->base); - - return font_face; -} - -/** - * cairo_ft_font_face_create_for_ft_face: - * @face: A FreeType face object, already opened. This must - * be kept around until the face's ref_count drops to - * zero and it is freed. Since the face may be referenced - * internally to Cairo, the best way to determine when it - * is safe to free the face is to pass a - * #cairo_destroy_func_t to cairo_font_face_set_user_data() - * @load_flags: flags to pass to FT_Load_Glyph when loading - * glyphs from the font. These flags are OR'ed together with - * the flags derived from the #cairo_font_options_t passed - * to cairo_scaled_font_create(), so only a few values such - * as %FT_LOAD_VERTICAL_LAYOUT, and %FT_LOAD_FORCE_AUTOHINT - * are useful. You should not pass any of the flags affecting - * the load target, such as %FT_LOAD_TARGET_LIGHT. - * - * Creates a new font face for the FreeType font backend from a - * pre-opened FreeType face. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). The - * #cairo_scaled_font_t returned from cairo_scaled_font_create() is - * also for the FreeType backend and can be used with functions such - * as cairo_ft_font_lock_face(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - **/ -cairo_font_face_t * -cairo_ft_font_face_create_for_ft_face (FT_Face face, - int load_flags) -{ - cairo_ft_unscaled_font_t *unscaled; - cairo_font_face_t *font_face; - cairo_ft_options_t ft_options; - - unscaled = _cairo_ft_unscaled_font_create_from_face (face); - if (unscaled == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_face_t *)&_cairo_font_face_nil; - } - - ft_options.load_flags = load_flags; - ft_options.extra_flags = 0; - _cairo_font_options_init_default (&ft_options.base); - - font_face = _cairo_ft_font_face_create (unscaled, &ft_options); - _cairo_unscaled_font_destroy (&unscaled->base); - - return font_face; -} - -/** - * cairo_ft_scaled_font_lock_face: - * @scaled_font: A #cairo_scaled_font_t from the FreeType font backend. Such an - * object can be created by calling cairo_scaled_font_create() on a - * FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), - * cairo_ft_font_face_create_for_face()). - * - * cairo_ft_font_lock_face() gets the #FT_Face object from a FreeType - * backend font and scales it appropriately for the font. You must - * release the face with cairo_ft_font_unlock_face() - * when you are done using it. Since the #FT_Face object can be - * shared between multiple #cairo_scaled_font_t objects, you must not - * lock any other font objects until you unlock this one. A count is - * kept of the number of times cairo_ft_font_lock_face() is - * called. cairo_ft_font_unlock_face() must be called the same number - * of times. - * - * You must be careful when using this function in a library or in a - * threaded application, because freetype's design makes it unsafe to - * call freetype functions simultaneously from multiple threads, (even - * if using distinct FT_Face objects). Because of this, application - * code that acquires an FT_Face object with this call must add it's - * own locking to protect any use of that object, (and which also must - * protect any other calls into cairo as almost any cairo function - * might result in a call into the freetype library). - * - * Return value: The #FT_Face object for @font, scaled appropriately, - * or %NULL if @scaled_font is in an error state (see - * cairo_scaled_font_status()) or there is insufficient memory. - **/ -FT_Face -cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *abstract_font) -{ - cairo_ft_scaled_font_t *scaled_font = (cairo_ft_scaled_font_t *) abstract_font; - FT_Face face; - cairo_status_t status; - - if (scaled_font->base.status) - return NULL; - - face = _cairo_ft_unscaled_font_lock_face (scaled_font->unscaled); - if (face == NULL) { - status = _cairo_scaled_font_set_error (&scaled_font->base, CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - status = _cairo_ft_unscaled_font_set_scale (scaled_font->unscaled, - &scaled_font->base.scale); - if (status) { - _cairo_ft_unscaled_font_unlock_face (scaled_font->unscaled); - status = _cairo_scaled_font_set_error (&scaled_font->base, status); - return NULL; - } - - /* Note: We deliberately release the unscaled font's mutex here, - * so that we are not holding a lock across two separate calls to - * cairo function, (which would give the application some - * opportunity for creating deadlock. This is obviously unsafe, - * but as documented, the user must add manual locking when using - * this function. */ - CAIRO_MUTEX_UNLOCK (scaled_font->unscaled->mutex); - - return face; -} - -/** - * cairo_ft_scaled_font_unlock_face: - * @scaled_font: A #cairo_scaled_font_t from the FreeType font backend. Such an - * object can be created by calling cairo_scaled_font_create() on a - * FreeType backend font face (see cairo_ft_font_face_create_for_pattern(), - * cairo_ft_font_face_create_for_ft_face()). - * - * Releases a face obtained with cairo_ft_scaled_font_lock_face(). - **/ -void -cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *abstract_font) -{ - cairo_ft_scaled_font_t *scaled_font = (cairo_ft_scaled_font_t *) abstract_font; - - if (scaled_font->base.status) - return; - - /* Note: We released the unscaled font's mutex at the end of - * cairo_ft_scaled_font_lock_face, so we have to acquire it again - * as _cairo_ft_unscaled_font_unlock_face expects it to be held - * when we call into it. */ - CAIRO_MUTEX_LOCK (scaled_font->unscaled->mutex); - - _cairo_ft_unscaled_font_unlock_face (scaled_font->unscaled); -} - -/* We expose our unscaled font implementation internally for the the - * PDF backend, which needs to keep track of the the different - * fonts-on-disk used by a document, so it can embed them. - */ -cairo_unscaled_font_t * -_cairo_ft_scaled_font_get_unscaled_font (cairo_scaled_font_t *abstract_font) -{ - cairo_ft_scaled_font_t *scaled_font = (cairo_ft_scaled_font_t *) abstract_font; - - return &scaled_font->unscaled->base; -} - -cairo_bool_t -_cairo_ft_scaled_font_is_vertical (cairo_scaled_font_t *scaled_font) -{ - cairo_ft_scaled_font_t *ft_scaled_font; - - if (!_cairo_scaled_font_is_ft (scaled_font)) - return FALSE; - - ft_scaled_font = (cairo_ft_scaled_font_t *) scaled_font; - if (ft_scaled_font->ft_options.load_flags & FT_LOAD_VERTICAL_LAYOUT) - return TRUE; - return FALSE; -} - -void -_cairo_ft_font_reset_static_data (void) -{ - _cairo_ft_unscaled_font_map_destroy (); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-ft.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ft.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-ft.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ft.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Graydon Hoare - * Owen Taylor - */ - -#ifndef CAIRO_FT_H -#define CAIRO_FT_H - -#include - -#if CAIRO_HAS_FT_FONT - -/* Fontconfig/Freetype platform-specific font interface */ - -#include -#include -#include FT_FREETYPE_H - -CAIRO_BEGIN_DECLS - -cairo_public cairo_font_face_t * -cairo_ft_font_face_create_for_pattern (FcPattern *pattern); - -cairo_public void -cairo_ft_font_options_substitute (const cairo_font_options_t *options, - FcPattern *pattern); - -cairo_public cairo_font_face_t * -cairo_ft_font_face_create_for_ft_face (FT_Face face, - int load_flags); - -cairo_public FT_Face -cairo_ft_scaled_font_lock_face (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *scaled_font); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_FT_FONT */ -# error Cairo was not compiled with support for the freetype font backend -#endif /* CAIRO_HAS_FT_FONT */ - -#endif /* CAIRO_FT_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-ft-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ft-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-ft-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ft-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Graydon Hoare - * Owen Taylor - */ - -#ifndef CAIRO_FT_PRIVATE_H -#define CAIRO_FT_PRIVATE_H - -#include -#include - -#if CAIRO_HAS_FT_FONT - -CAIRO_BEGIN_DECLS - -typedef struct _cairo_ft_unscaled_font cairo_ft_unscaled_font_t; - -cairo_private cairo_bool_t -_cairo_unscaled_font_is_ft (cairo_unscaled_font_t *unscaled_font); - -cairo_private cairo_bool_t -_cairo_scaled_font_is_ft (cairo_scaled_font_t *scaled_font); - -/* These functions are needed by the PDF backend, which needs to keep track of the - * the different fonts-on-disk used by a document, so it can embed them - */ -cairo_private cairo_unscaled_font_t * -_cairo_ft_scaled_font_get_unscaled_font (cairo_scaled_font_t *scaled_font); - -cairo_private FT_Face -_cairo_ft_unscaled_font_lock_face (cairo_ft_unscaled_font_t *unscaled); - -cairo_private void -_cairo_ft_unscaled_font_unlock_face (cairo_ft_unscaled_font_t *unscaled); - -cairo_private cairo_bool_t -_cairo_ft_scaled_font_is_vertical (cairo_scaled_font_t *scaled_font); - -slim_hidden_proto (cairo_ft_scaled_font_lock_face); -slim_hidden_proto (cairo_ft_scaled_font_unlock_face); - -CAIRO_END_DECLS - -#endif /* CAIRO_HAS_FT_FONT */ -#endif /* CAIRO_FT_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-glitz.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-glitz.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-glitz.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-glitz.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_GLITZ_H -#define CAIRO_GLITZ_H - -#include - -#if CAIRO_HAS_GLITZ_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_glitz_surface_create (glitz_surface_t *surface); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_GLITZ_SURFACE */ -# error Cairo was not compiled with support for the glitz backend -#endif /* CAIRO_HAS_GLITZ_SURFACE */ - -#endif /* CAIRO_GLITZ_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-glitz-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-glitz-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-glitz-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-glitz-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - */ - -#ifndef CAIRO_GLITZ_PRIVATE_H -#define CAIRO_GLITZ_PRIVATE_H - -#include "cairoint.h" -#include "cairo-glitz.h" - -slim_hidden_proto (cairo_glitz_surface_create); - -#endif /* CAIRO_GLITZ_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-glitz-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-glitz-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-glitz-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-glitz-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2477 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 David Reveman - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of David - * Reveman not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. David Reveman makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * DAVID REVEMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL DAVID REVEMAN BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: David Reveman - */ - -#include "cairoint.h" -#include "cairo-glitz.h" -#include "cairo-glitz-private.h" - -typedef struct _cairo_glitz_surface { - cairo_surface_t base; - - glitz_surface_t *surface; - glitz_format_t *format; - cairo_bool_t has_clip; - cairo_region_t clip; -} cairo_glitz_surface_t; - -static const cairo_surface_backend_t * -_cairo_glitz_surface_get_backend (void); - -static cairo_status_t -_cairo_glitz_surface_finish (void *abstract_surface) -{ - cairo_glitz_surface_t *surface = abstract_surface; - - if (surface->has_clip) { - glitz_surface_set_clip_region (surface->surface, 0, 0, NULL, 0); - _cairo_region_fini (&surface->clip); - } - - glitz_surface_destroy (surface->surface); - - return CAIRO_STATUS_SUCCESS; -} - -static glitz_format_name_t -_glitz_format_from_content (cairo_content_t content) -{ - switch (content) { - case CAIRO_CONTENT_COLOR: - return GLITZ_STANDARD_RGB24; - case CAIRO_CONTENT_ALPHA: - return GLITZ_STANDARD_A8; - case CAIRO_CONTENT_COLOR_ALPHA: - return GLITZ_STANDARD_ARGB32; - } - - ASSERT_NOT_REACHED; - return GLITZ_STANDARD_ARGB32; -} - -static cairo_surface_t * -_cairo_glitz_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - cairo_glitz_surface_t *src = abstract_src; - cairo_surface_t *crsurface; - glitz_drawable_t *drawable; - glitz_surface_t *surface; - glitz_format_t *gformat; - - drawable = glitz_surface_get_drawable (src->surface); - - gformat = - glitz_find_standard_format (drawable, - _glitz_format_from_content (content)); - if (!gformat) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - surface = glitz_surface_create (drawable, gformat, - width <= 0 ? 1 : width, - height <= 0 ? 1 : height, - 0, NULL); - - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - crsurface = cairo_glitz_surface_create (surface); - - glitz_surface_destroy (surface); - - return crsurface; -} - -static cairo_bool_t -_CAIRO_MASK_FORMAT (cairo_format_masks_t *masks, cairo_format_t *format) -{ - switch (masks->bpp) { - case 32: - if (masks->alpha_mask == 0xff000000 && - masks->red_mask == 0x00ff0000 && - masks->green_mask == 0x0000ff00 && - masks->blue_mask == 0x000000ff) - { - *format = CAIRO_FORMAT_ARGB32; - return TRUE; - } - if (masks->alpha_mask == 0x00000000 && - masks->red_mask == 0x00ff0000 && - masks->green_mask == 0x0000ff00 && - masks->blue_mask == 0x000000ff) - { - *format = CAIRO_FORMAT_RGB24; - return TRUE; - } - break; - case 8: - if (masks->alpha_mask == 0xff) - { - *format = CAIRO_FORMAT_A8; - return TRUE; - } - break; - case 1: - if (masks->alpha_mask == 0x1) - { - *format = CAIRO_FORMAT_A1; - return TRUE; - } - break; - } - return FALSE; -} - -static cairo_status_t -_cairo_glitz_get_boxes_from_region (cairo_region_t *region, glitz_box_t **boxes, int *nboxes) -{ - cairo_box_int_t *cboxes; - cairo_status_t status; - int n, i; - - status = _cairo_region_get_boxes (region, &n, &cboxes); - if (status) - return status; - - if (n == 0) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto done; - } - - *boxes = _cairo_malloc_ab (n, sizeof(glitz_box_t)); - if (*boxes == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto done; - } - - for (i = 0; i < n; i++) { - (*boxes)[i].x1 = cboxes[i].p1.x; - (*boxes)[i].y1 = cboxes[i].p1.y; - (*boxes)[i].x2 = cboxes[i].p2.x; - (*boxes)[i].y2 = cboxes[i].p2.y; - } - - *nboxes = n; -done: - _cairo_region_boxes_fini (region, cboxes); - return status; -} - -static cairo_status_t -_cairo_glitz_surface_get_image (cairo_glitz_surface_t *surface, - cairo_rectangle_int_t *interest, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *rect_out) -{ - cairo_image_surface_t *image; - int x1, y1, x2, y2; - int width, height; - unsigned char *pixels; - cairo_format_masks_t masks; - glitz_buffer_t *buffer; - glitz_pixel_format_t pf; - cairo_format_t format; - - x1 = 0; - y1 = 0; - x2 = glitz_surface_get_width (surface->surface); - y2 = glitz_surface_get_height (surface->surface); - - if (interest) - { - if (interest->x > x1) - x1 = interest->x; - if (interest->y > y1) - y1 = interest->y; - if (interest->x + interest->width < x2) - x2 = interest->x + interest->width; - if (interest->y + interest->height < y2) - y2 = interest->y + interest->height; - - if (x1 >= x2 || y1 >= y2) - { - *image_out = NULL; - return CAIRO_STATUS_SUCCESS; - } - } - - width = x2 - x1; - height = y2 - y1; - - if (rect_out) - { - rect_out->x = x1; - rect_out->y = y1; - rect_out->width = width; - rect_out->height = height; - } - - if (surface->format->color.fourcc == GLITZ_FOURCC_RGB) { - if (surface->format->color.red_size > 0) { - masks.bpp = 32; - - if (surface->format->color.alpha_size > 0) - masks.alpha_mask = 0xff000000; - else - masks.alpha_mask = 0x0; - - masks.red_mask = 0xff0000; - masks.green_mask = 0xff00; - masks.blue_mask = 0xff; - } else { - masks.bpp = 8; - masks.blue_mask = masks.green_mask = masks.red_mask = 0x0; - masks.alpha_mask = 0xff; - } - } else { - masks.bpp = 32; - masks.alpha_mask = 0xff000000; - masks.red_mask = 0xff0000; - masks.green_mask = 0xff00; - masks.blue_mask = 0xff; - } - - pf.fourcc = GLITZ_FOURCC_RGB; - pf.masks.bpp = masks.bpp; - pf.masks.alpha_mask = masks.alpha_mask; - pf.masks.red_mask = masks.red_mask; - pf.masks.green_mask = masks.green_mask; - pf.masks.blue_mask = masks.blue_mask; - pf.xoffset = 0; - pf.skip_lines = 0; - - /* XXX: we should eventually return images with negative stride, - need to verify that libpixman have no problem with this first. */ - pf.bytes_per_line = (((width * masks.bpp) / 8) + 3) & -4; - pf.scanline_order = GLITZ_PIXEL_SCANLINE_ORDER_TOP_DOWN; - - pixels = _cairo_malloc_ab (height, pf.bytes_per_line); - if (!pixels) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - buffer = glitz_buffer_create_for_data (pixels); - if (!buffer) { - free (pixels); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* clear out the glitz clip; the clip affects glitz_get_pixels */ - if (surface->has_clip) - glitz_surface_set_clip_region (surface->surface, - 0, 0, NULL, 0); - - glitz_get_pixels (surface->surface, - x1, y1, - width, height, - &pf, - buffer); - - glitz_buffer_destroy (buffer); - - /* restore the clip, if any */ - if (surface->has_clip) { - glitz_box_t *box; - cairo_status_t status; - int n; - - status = _cairo_glitz_get_boxes_from_region (&surface->clip, &box, &n); - if (status) { - free (pixels); - return status; - } - - glitz_surface_set_clip_region (surface->surface, 0, 0, box, n); - - free (box); - } - - /* - * Prefer to use a standard pixman format instead of the - * general masks case. - */ - if (_CAIRO_MASK_FORMAT (&masks, &format)) { - image = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (pixels, - format, - x2 - x1, - y2 - y1, - pf.bytes_per_line); - if (image->base.status) - goto FAIL; - } else { - /* - * XXX This can't work. We must convert the data to one of the - * supported pixman formats. Pixman needs another function - * which takes data in an arbitrary format and converts it - * to something supported by that library. - */ - image = (cairo_image_surface_t *) - _cairo_image_surface_create_with_masks (pixels, - &masks, - x2 - x1, - y2 - y1, - pf.bytes_per_line); - if (image->base.status) - goto FAIL; - } - - _cairo_image_surface_assume_ownership_of_data (image); - - *image_out = image; - - return CAIRO_STATUS_SUCCESS; - -FAIL: - free (pixels); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); -} - -static void -cairo_format_get_masks (cairo_format_t format, - uint32_t *bpp, - uint32_t *alpha, - uint32_t *red, - uint32_t *green, - uint32_t *blue) -{ - *red = 0x0; - *green = 0x0; - *blue = 0x0; - *alpha = 0x0; - - switch (format) - { - case CAIRO_FORMAT_ARGB32: - *alpha = 0xff000000; - case CAIRO_FORMAT_RGB24: - default: - *bpp = 32; - *red = 0x00ff0000; - *green = 0x0000ff00; - *blue = 0x000000ff; - break; - - case CAIRO_FORMAT_A8: - *bpp = 8; - *alpha = 0xff; - break; - - case CAIRO_FORMAT_A1: - *bpp = 1; - *alpha = 0x1; - break; - } -} - -static cairo_status_t -_cairo_glitz_surface_set_image (void *abstract_surface, - cairo_image_surface_t *image, - int src_x, - int src_y, - int width, - int height, - int x_dst, - int y_dst) -{ - cairo_glitz_surface_t *surface = abstract_surface; - glitz_buffer_t *buffer; - glitz_pixel_format_t pf; - uint32_t bpp, am, rm, gm, bm; - char *data; - - cairo_format_get_masks (image->format, &bpp, &am, &rm, &gm, &bm); - - pf.fourcc = GLITZ_FOURCC_RGB; - pf.masks.bpp = bpp; - pf.masks.alpha_mask = am; - pf.masks.red_mask = rm; - pf.masks.green_mask = gm; - pf.masks.blue_mask = bm; - pf.xoffset = src_x; - pf.skip_lines = src_y; - - /* check for negative stride */ - if (image->stride < 0) - { - pf.bytes_per_line = -image->stride; - pf.scanline_order = GLITZ_PIXEL_SCANLINE_ORDER_BOTTOM_UP; - data = (char *) image->data + image->stride * (image->height - 1); - } - else - { - pf.bytes_per_line = image->stride; - pf.scanline_order = GLITZ_PIXEL_SCANLINE_ORDER_TOP_DOWN; - data = (char *) image->data; - } - - buffer = glitz_buffer_create_for_data (data); - if (!buffer) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - glitz_set_pixels (surface->surface, - x_dst, y_dst, - width, height, - &pf, - buffer); - - glitz_buffer_destroy (buffer); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_glitz_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_glitz_surface_t *surface = abstract_surface; - - *image_extra = NULL; - - return _cairo_glitz_surface_get_image (surface, NULL, image_out, NULL); -} - -static void -_cairo_glitz_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_cairo_glitz_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra) -{ - cairo_glitz_surface_t *surface = abstract_surface; - cairo_image_surface_t *image; - cairo_status_t status; - - status = _cairo_glitz_surface_get_image (surface, interest_rect, &image, - image_rect_out); - if (status) - return status; - - *image_out = image; - *image_extra = NULL; - - return status; -} - -static void -_cairo_glitz_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - cairo_glitz_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _cairo_glitz_surface_set_image (surface, image, 0, 0, - image->width, image->height, - image_rect->x, image_rect->y); - if (status) - status = _cairo_surface_set_error (&surface->base, status); - - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_cairo_glitz_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_glitz_surface_t *surface = abstract_surface; - cairo_glitz_surface_t *clone; - cairo_status_t status; - - if (surface->base.status) - return surface->base.status; - - if (src->backend == surface->base.backend) - { - *clone_out = cairo_surface_reference (src); - - return CAIRO_STATUS_SUCCESS; - } - else if (_cairo_surface_is_image (src)) - { - cairo_image_surface_t *image_src = (cairo_image_surface_t *) src; - cairo_content_t content; - cairo_rectangle_int_t image_extent; - cairo_rectangle_int_t extent; - - content = _cairo_content_from_format (image_src->format); - - clone = (cairo_glitz_surface_t *) - _cairo_glitz_surface_create_similar (surface, content, - image_src->width, - image_src->height); - if (clone->base.status) - return clone->base.status; - - image_extent.x = 0; - image_extent.y = 0; - image_extent.width = image_src->width; - image_extent.height = image_src->height; - extent.x = src_x; - extent.y = src_y; - extent.width = width; - extent.height = height; - - _cairo_rectangle_intersect(&extent, &image_extent); - - status = _cairo_glitz_surface_set_image (clone, image_src, - extent.x, extent.y, - extent.width, extent.height, - extent.x, extent.y); - if (status) { - cairo_surface_destroy (&clone->base); - return status; - } - - *clone_out = &clone->base; - - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static void -_cairo_glitz_surface_set_matrix (cairo_glitz_surface_t *surface, - cairo_matrix_t *matrix) -{ - glitz_transform_t transform; - - transform.matrix[0][0] = _cairo_fixed_from_double (matrix->xx); - transform.matrix[0][1] = _cairo_fixed_from_double (matrix->xy); - transform.matrix[0][2] = _cairo_fixed_from_double (matrix->x0); - - transform.matrix[1][0] = _cairo_fixed_from_double (matrix->yx); - transform.matrix[1][1] = _cairo_fixed_from_double (matrix->yy); - transform.matrix[1][2] = _cairo_fixed_from_double (matrix->y0); - - transform.matrix[2][0] = 0; - transform.matrix[2][1] = 0; - transform.matrix[2][2] = _cairo_fixed_from_double (1); - - glitz_surface_set_transform (surface->surface, &transform); -} - -static glitz_operator_t -_glitz_operator (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - return GLITZ_OPERATOR_CLEAR; - - case CAIRO_OPERATOR_SOURCE: - return GLITZ_OPERATOR_SRC; - case CAIRO_OPERATOR_OVER: - return GLITZ_OPERATOR_OVER; - case CAIRO_OPERATOR_IN: - return GLITZ_OPERATOR_IN; - case CAIRO_OPERATOR_OUT: - return GLITZ_OPERATOR_OUT; - case CAIRO_OPERATOR_ATOP: - return GLITZ_OPERATOR_ATOP; - - case CAIRO_OPERATOR_DEST: - return GLITZ_OPERATOR_DST; - case CAIRO_OPERATOR_DEST_OVER: - return GLITZ_OPERATOR_OVER_REVERSE; - case CAIRO_OPERATOR_DEST_IN: - return GLITZ_OPERATOR_IN_REVERSE; - case CAIRO_OPERATOR_DEST_OUT: - return GLITZ_OPERATOR_OUT_REVERSE; - case CAIRO_OPERATOR_DEST_ATOP: - return GLITZ_OPERATOR_ATOP_REVERSE; - - case CAIRO_OPERATOR_XOR: - return GLITZ_OPERATOR_XOR; - case CAIRO_OPERATOR_ADD: - return GLITZ_OPERATOR_ADD; - case CAIRO_OPERATOR_SATURATE: - /* XXX: This line should never be reached. Glitz backend should bail - out earlier if saturate operator is used. OpenGL can't do saturate - with pre-multiplied colors. Solid colors can still be done as we - can just un-pre-multiply them. However, support for that will have - to be added to glitz. */ - - /* fall-through */ - break; - } - - ASSERT_NOT_REACHED; - - /* Something's very broken if this line of code can be reached, so - we want to return something that would give a noticeably - incorrect result. The XOR operator seems so rearely desired - that it should fit the bill here. */ - return CAIRO_OPERATOR_XOR; -} - -#define CAIRO_GLITZ_FEATURE_OK(surface, name) \ - (glitz_drawable_get_features (glitz_surface_get_drawable (surface)) & \ - (GLITZ_FEATURE_ ## name ## _MASK)) - -static glitz_status_t -_glitz_ensure_target (glitz_surface_t *surface) -{ - if (!glitz_surface_get_attached_drawable (surface)) - { - glitz_drawable_format_t *target_format, templ; - glitz_format_t *format; - glitz_drawable_t *drawable, *target; - unsigned int width, height; - unsigned long mask; - - drawable = glitz_surface_get_drawable (surface); - format = glitz_surface_get_format (surface); - width = glitz_surface_get_width (surface); - height = glitz_surface_get_height (surface); - - if (format->color.fourcc != GLITZ_FOURCC_RGB) - return CAIRO_INT_STATUS_UNSUPPORTED; - - templ.color = format->color; - templ.depth_size = 0; - templ.stencil_size = 0; - templ.doublebuffer = 0; - templ.samples = 1; - - mask = - GLITZ_FORMAT_RED_SIZE_MASK | - GLITZ_FORMAT_GREEN_SIZE_MASK | - GLITZ_FORMAT_BLUE_SIZE_MASK | - GLITZ_FORMAT_ALPHA_SIZE_MASK | - GLITZ_FORMAT_DEPTH_SIZE_MASK | - GLITZ_FORMAT_STENCIL_SIZE_MASK | - GLITZ_FORMAT_DOUBLEBUFFER_MASK | - GLITZ_FORMAT_SAMPLES_MASK; - - target_format = glitz_find_drawable_format (drawable, mask, &templ, 0); - if (!target_format) - return CAIRO_INT_STATUS_UNSUPPORTED; - - target = glitz_create_drawable (drawable, target_format, - width, height); - if (!target) - return CAIRO_INT_STATUS_UNSUPPORTED; - - glitz_surface_attach (surface, target, - GLITZ_DRAWABLE_BUFFER_FRONT_COLOR); - - glitz_drawable_destroy (target); - } - - return CAIRO_STATUS_SUCCESS; -} - -typedef struct _cairo_glitz_surface_attributes { - cairo_surface_attributes_t base; - - glitz_fill_t fill; - glitz_filter_t filter; - glitz_fixed16_16_t *params; - int n_params; - cairo_bool_t acquired; -} cairo_glitz_surface_attributes_t; - -static cairo_int_status_t -_cairo_glitz_pattern_acquire_surface (cairo_pattern_t *pattern, - cairo_glitz_surface_t *dst, - int x, - int y, - unsigned int width, - unsigned int height, - cairo_glitz_surface_t **surface_out, - cairo_glitz_surface_attributes_t *attr) -{ - cairo_glitz_surface_t *src = NULL; - - attr->acquired = FALSE; - - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: { - cairo_gradient_pattern_t *gradient = - (cairo_gradient_pattern_t *) pattern; - char *data; - glitz_fixed16_16_t *params; - unsigned int n_params; - unsigned int *pixels; - unsigned int i, n_base_params; - glitz_buffer_t *buffer; - static const glitz_pixel_format_t format = { - GLITZ_FOURCC_RGB, - { - 32, - 0xff000000, - 0x00ff0000, - 0x0000ff00, - 0x000000ff - }, - 0, 0, 0, - GLITZ_PIXEL_SCANLINE_ORDER_BOTTOM_UP - }; - - /* XXX: the current color gradient acceleration provided by glitz is - * experimental, it's been proven inappropriate in a number of ways, - * most importantly, it's currently implemented as filters and - * gradients are not filters. eventually, it will be replaced with - * something more appropriate. - */ - - if (gradient->n_stops < 2) - break; - - if (!CAIRO_GLITZ_FEATURE_OK (dst->surface, FRAGMENT_PROGRAM)) - break; - - if (pattern->type == CAIRO_PATTERN_TYPE_RADIAL) - n_base_params = 6; - else - n_base_params = 4; - - n_params = gradient->n_stops * 3 + n_base_params; - - /* check for int overflow */ - { - int size1, size2; - if (n_params >= INT32_MAX / sizeof (glitz_fixed16_16_t) || - gradient->n_stops >= INT32_MAX / sizeof (unsigned int)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - size1 = n_params * sizeof (glitz_fixed16_16_t); - size2 = gradient->n_stops * sizeof (unsigned int); - - if (size1 >= INT32_MAX - size2) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - data = malloc (size1 + size2); - } - - if (!data) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - params = (glitz_fixed16_16_t *) data; - pixels = (unsigned int *) - (data + sizeof (glitz_fixed16_16_t) * n_params); - - buffer = glitz_buffer_create_for_data (pixels); - if (!buffer) { - free (data); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - src = (cairo_glitz_surface_t *) - _cairo_surface_create_similar_scratch (&dst->base, - CAIRO_CONTENT_COLOR_ALPHA, - gradient->n_stops, 1); - if (src->base.status) - { - glitz_buffer_destroy (buffer); - free (data); - return src->base.status; - } - - for (i = 0; i < gradient->n_stops; i++) - { - pixels[i] = - (((int) (gradient->stops[i].color.alpha_short >> 8)) << 24) | - (((int) (gradient->stops[i].color.red_short >> 8)) << 16) | - (((int) (gradient->stops[i].color.green_short >> 8)) << 8) | - (((int) (gradient->stops[i].color.blue_short >> 8))); - - params[n_base_params + 3 * i + 0] = _cairo_fixed_16_16_from_double (gradient->stops[i].offset); - params[n_base_params + 3 * i + 1] = i << 16; - params[n_base_params + 3 * i + 2] = 0; - } - - glitz_set_pixels (src->surface, 0, 0, gradient->n_stops, 1, - (glitz_pixel_format_t *)&format, buffer); - - glitz_buffer_destroy (buffer); - - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR) - { - cairo_linear_pattern_t *grad = (cairo_linear_pattern_t *) pattern; - - params[0] = grad->p1.x; - params[1] = grad->p1.y; - params[2] = grad->p2.x; - params[3] = grad->p2.y; - attr->filter = GLITZ_FILTER_LINEAR_GRADIENT; - } - else - { - cairo_radial_pattern_t *grad = (cairo_radial_pattern_t *) pattern; - - params[0] = grad->c1.x; - params[1] = grad->c1.y; - params[2] = grad->r1; - params[3] = grad->c2.x; - params[4] = grad->c2.y; - params[5] = grad->r2; - attr->filter = GLITZ_FILTER_RADIAL_GRADIENT; - } - - switch (pattern->extend) { - case CAIRO_EXTEND_NONE: - attr->fill = GLITZ_FILL_TRANSPARENT; - break; - case CAIRO_EXTEND_REPEAT: - attr->fill = GLITZ_FILL_REPEAT; - break; - case CAIRO_EXTEND_REFLECT: - attr->fill = GLITZ_FILL_REFLECT; - break; - case CAIRO_EXTEND_PAD: - attr->fill = GLITZ_FILL_NEAREST; - break; - } - - attr->params = params; - attr->n_params = n_params; - attr->base.matrix = pattern->matrix; - attr->base.x_offset = 0; - attr->base.y_offset = 0; - } break; - case CAIRO_PATTERN_TYPE_SOLID: - case CAIRO_PATTERN_TYPE_SURFACE: - default: - break; - } - - if (!src) - { - cairo_int_status_t status; - - status = _cairo_pattern_acquire_surface (pattern, &dst->base, - x, y, width, height, - (cairo_surface_t **) &src, - &attr->base); - if (status) - return status; - - if (src) - { - switch (attr->base.extend) { - case CAIRO_EXTEND_NONE: - attr->fill = GLITZ_FILL_TRANSPARENT; - break; - case CAIRO_EXTEND_REPEAT: - attr->fill = GLITZ_FILL_REPEAT; - break; - case CAIRO_EXTEND_REFLECT: - attr->fill = GLITZ_FILL_REFLECT; - break; - case CAIRO_EXTEND_PAD: - default: - attr->fill = GLITZ_FILL_NEAREST; - break; - } - - switch (attr->base.filter) { - case CAIRO_FILTER_FAST: - case CAIRO_FILTER_NEAREST: - attr->filter = GLITZ_FILTER_NEAREST; - break; - case CAIRO_FILTER_GOOD: - case CAIRO_FILTER_BEST: - case CAIRO_FILTER_BILINEAR: - case CAIRO_FILTER_GAUSSIAN: - default: - attr->filter = GLITZ_FILTER_BILINEAR; - break; - } - - attr->params = NULL; - attr->n_params = 0; - attr->acquired = TRUE; - } - } - - *surface_out = src; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_glitz_pattern_release_surface (cairo_pattern_t *pattern, - cairo_glitz_surface_t *surface, - cairo_glitz_surface_attributes_t *attr) -{ - if (attr->acquired) - _cairo_pattern_release_surface (pattern, &surface->base, &attr->base); - else - cairo_surface_destroy (&surface->base); -} - -static cairo_int_status_t -_cairo_glitz_pattern_acquire_surfaces (cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_glitz_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - unsigned int width, - unsigned int height, - cairo_glitz_surface_t **src_out, - cairo_glitz_surface_t **mask_out, - cairo_glitz_surface_attributes_t *sattr, - cairo_glitz_surface_attributes_t *mattr) -{ - cairo_int_status_t status; - cairo_pattern_union_t tmp; - - /* If src and mask are both solid, then the mask alpha can be - * combined into src and mask can be ignored. */ - - /* XXX: This optimization assumes that there is no color - * information in mask, so this will need to change when we - * support RENDER-style 4-channel masks. */ - - if (src->type == CAIRO_PATTERN_TYPE_SOLID && - mask->type == CAIRO_PATTERN_TYPE_SOLID) - { - cairo_color_t combined; - cairo_solid_pattern_t *src_solid = (cairo_solid_pattern_t *) src; - cairo_solid_pattern_t *mask_solid = (cairo_solid_pattern_t *) mask; - - combined = src_solid->color; - _cairo_color_multiply_alpha (&combined, mask_solid->color.alpha); - - _cairo_pattern_init_solid (&tmp.solid, &combined, - CAIRO_COLOR_IS_OPAQUE (&combined) ? - CAIRO_CONTENT_COLOR : - CAIRO_CONTENT_COLOR_ALPHA); - - mask = NULL; - } else { - status = _cairo_pattern_init_copy (&tmp.base, src); - if (status) - return status; - } - - status = _cairo_glitz_pattern_acquire_surface (&tmp.base, dst, - src_x, src_y, - width, height, - src_out, sattr); - - _cairo_pattern_fini (&tmp.base); - - if (status) - return status; - - if (mask) - { - status = _cairo_pattern_init_copy (&tmp.base, mask); - if (status) - return status; - - status = _cairo_glitz_pattern_acquire_surface (&tmp.base, dst, - mask_x, mask_y, - width, height, - mask_out, mattr); - - if (status) - _cairo_glitz_pattern_release_surface (&tmp.base, *src_out, sattr); - - _cairo_pattern_fini (&tmp.base); - - return status; - } - else - { - *mask_out = NULL; - } - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_glitz_surface_set_attributes (cairo_glitz_surface_t *surface, - cairo_glitz_surface_attributes_t *a) -{ - _cairo_glitz_surface_set_matrix (surface, &a->base.matrix); - glitz_surface_set_fill (surface->surface, a->fill); - glitz_surface_set_filter (surface->surface, a->filter, - a->params, a->n_params); -} - -static cairo_int_status_t -_cairo_glitz_surface_composite (cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_pattern_t *mask_pattern, - void *abstract_dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_glitz_surface_attributes_t src_attr, mask_attr; - cairo_glitz_surface_t *dst = abstract_dst; - cairo_glitz_surface_t *src; - cairo_glitz_surface_t *mask; - cairo_int_status_t status; - - if (op == CAIRO_OPERATOR_SATURATE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (_glitz_ensure_target (dst->surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_glitz_pattern_acquire_surfaces (src_pattern, mask_pattern, - dst, - src_x, src_y, - mask_x, mask_y, - width, height, - &src, &mask, - &src_attr, &mask_attr); - if (status) - return status; - - _cairo_glitz_surface_set_attributes (src, &src_attr); - if (mask) - { - _cairo_glitz_surface_set_attributes (mask, &mask_attr); - glitz_composite (_glitz_operator (op), - src->surface, - mask->surface, - dst->surface, - src_x + src_attr.base.x_offset, - src_y + src_attr.base.y_offset, - mask_x + mask_attr.base.x_offset, - mask_y + mask_attr.base.y_offset, - dst_x, dst_y, - width, height); - - if (mask_attr.n_params) - free (mask_attr.params); - - _cairo_glitz_pattern_release_surface (mask_pattern, mask, &mask_attr); - } - else - { - glitz_composite (_glitz_operator (op), - src->surface, - NULL, - dst->surface, - src_x + src_attr.base.x_offset, - src_y + src_attr.base.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - } - - if (src_attr.n_params) - free (src_attr.params); - - _cairo_glitz_pattern_release_surface (src_pattern, src, &src_attr); - - if (glitz_surface_get_status (dst->surface) == GLITZ_STATUS_NOT_SUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_glitz_surface_fill_rectangles (void *abstract_dst, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int n_rects) -{ - cairo_glitz_surface_t *dst = abstract_dst; - cairo_glitz_surface_t *src; - - switch (op) { - case CAIRO_OPERATOR_SOURCE: { - glitz_color_t glitz_color; - - glitz_color.red = color->red_short; - glitz_color.green = color->green_short; - glitz_color.blue = color->blue_short; - glitz_color.alpha = color->alpha_short; - - glitz_set_rectangles (dst->surface, &glitz_color, - (glitz_rectangle_t *) rects, n_rects); - } break; - case CAIRO_OPERATOR_CLEAR: { - static const glitz_color_t glitz_color = { 0, 0, 0, 0 }; - - glitz_set_rectangles (dst->surface, &glitz_color, - (glitz_rectangle_t *) rects, n_rects); - } break; - case CAIRO_OPERATOR_SATURATE: - return CAIRO_INT_STATUS_UNSUPPORTED; - case CAIRO_OPERATOR_OVER: - case CAIRO_OPERATOR_IN: - case CAIRO_OPERATOR_OUT: - case CAIRO_OPERATOR_ATOP: - case CAIRO_OPERATOR_DEST: - case CAIRO_OPERATOR_DEST_OVER: - case CAIRO_OPERATOR_DEST_IN: - case CAIRO_OPERATOR_DEST_OUT: - case CAIRO_OPERATOR_DEST_ATOP: - case CAIRO_OPERATOR_XOR: - case CAIRO_OPERATOR_ADD: - default: - if (_glitz_ensure_target (dst->surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - src = (cairo_glitz_surface_t *) - _cairo_surface_create_similar_solid (&dst->base, - CAIRO_CONTENT_COLOR_ALPHA, - 1, 1, - (cairo_color_t *) color, - NULL); - if (src->base.status) - return src->base.status; - - glitz_surface_set_fill (src->surface, GLITZ_FILL_REPEAT); - - while (n_rects--) - { - glitz_composite (_glitz_operator (op), - src->surface, - NULL, - dst->surface, - 0, 0, - 0, 0, - rects->x, rects->y, - rects->width, rects->height); - rects++; - } - - cairo_surface_destroy (&src->base); - break; - } - - if (glitz_surface_get_status (dst->surface) == GLITZ_STATUS_NOT_SUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_glitz_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - void *abstract_dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int n_traps) -{ - cairo_pattern_union_t tmp_src_pattern; - cairo_pattern_t *src_pattern; - cairo_glitz_surface_attributes_t attributes; - cairo_glitz_surface_t *dst = abstract_dst; - cairo_glitz_surface_t *src; - cairo_glitz_surface_t *mask = NULL; - glitz_buffer_t *buffer = NULL; - void *data = NULL; - cairo_int_status_t status; - unsigned short alpha; - - if (antialias != CAIRO_ANTIALIAS_DEFAULT && - antialias != CAIRO_ANTIALIAS_GRAY) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (dst->base.status) - return dst->base.status; - - if (op == CAIRO_OPERATOR_SATURATE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (_glitz_ensure_target (dst->surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - { - status = _cairo_pattern_init_copy (&tmp_src_pattern.base, pattern); - if (status) - return status; - - status = _cairo_glitz_pattern_acquire_surface (&tmp_src_pattern.base, - dst, - src_x, src_y, - width, height, - &src, &attributes); - src_pattern = &tmp_src_pattern.base; - } - else - { - status = _cairo_glitz_pattern_acquire_surface (pattern, dst, - src_x, src_y, - width, height, - &src, &attributes); - src_pattern = pattern; - } - alpha = 0xffff; - - if (status) - return status; - - if (op == CAIRO_OPERATOR_ADD || n_traps <= 1) - { - static const glitz_color_t clear_black = { 0, 0, 0, 0 }; - glitz_color_t color; - glitz_geometry_format_t format; - int n_trap_added; - int offset = 0; - int data_size = 0; - int size = 30 * n_traps; /* just a guess */ - - format.vertex.primitive = GLITZ_PRIMITIVE_QUADS; - format.vertex.type = GLITZ_DATA_TYPE_FLOAT; - format.vertex.bytes_per_vertex = 3 * sizeof (glitz_float_t); - format.vertex.attributes = GLITZ_VERTEX_ATTRIBUTE_MASK_COORD_MASK; - format.vertex.mask.type = GLITZ_DATA_TYPE_FLOAT; - format.vertex.mask.size = GLITZ_COORDINATE_SIZE_X; - format.vertex.mask.offset = 2 * sizeof (glitz_float_t); - - mask = (cairo_glitz_surface_t *) - _cairo_glitz_surface_create_similar (&dst->base, - CAIRO_CONTENT_ALPHA, - 2, 1); - if (mask->base.status) - { - _cairo_glitz_pattern_release_surface (src_pattern, src, &attributes); - if (src_pattern == &tmp_src_pattern.base) - _cairo_pattern_fini (&tmp_src_pattern.base); - - return mask->base.status; - } - - color.red = color.green = color.blue = color.alpha = 0xffff; - - glitz_set_rectangle (mask->surface, &clear_black, 0, 0, 1, 1); - glitz_set_rectangle (mask->surface, &color, 1, 0, 1, 1); - - glitz_surface_set_fill (mask->surface, GLITZ_FILL_NEAREST); - glitz_surface_set_filter (mask->surface, - GLITZ_FILTER_BILINEAR, - NULL, 0); - - size *= format.vertex.bytes_per_vertex; - - while (n_traps) - { - if (data_size < size) - { - void *p; - data_size = size; - p = realloc (data, data_size); - if (!p) - { - _cairo_glitz_pattern_release_surface (src_pattern, src, - &attributes); - if (src_pattern == &tmp_src_pattern.base) - _cairo_pattern_fini (&tmp_src_pattern.base); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - data = p; - - if (buffer) - glitz_buffer_destroy (buffer); - - buffer = glitz_buffer_create_for_data (data); - if (!buffer) { - free (data); - _cairo_glitz_pattern_release_surface (src_pattern, src, - &attributes); - if (src_pattern == &tmp_src_pattern.base) - _cairo_pattern_fini (&tmp_src_pattern.base); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - - offset += - glitz_add_trapezoids (buffer, - offset, size - offset, - format.vertex.type, mask->surface, - (glitz_trapezoid_t *) traps, n_traps, - &n_trap_added); - - n_traps -= n_trap_added; - traps += n_trap_added; - size *= 2; - } - - glitz_set_geometry (dst->surface, - GLITZ_GEOMETRY_TYPE_VERTEX, - &format, buffer); - glitz_set_array (dst->surface, 0, 3, - offset / format.vertex.bytes_per_vertex, - 0, 0); - } - else - { - cairo_image_surface_t *image; - unsigned char *ptr; - int stride; - - stride = (width + 3) & -4; - data = calloc (stride, height); - if (!data) - { - _cairo_glitz_pattern_release_surface (src_pattern, src, &attributes); - if (src_pattern == &tmp_src_pattern.base) - _cairo_pattern_fini (&tmp_src_pattern.base); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* using negative stride */ - ptr = (unsigned char *) data + stride * (height - 1); - - image = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (ptr, - CAIRO_FORMAT_A8, - width, height, - -stride); - if (image->base.status) - { - cairo_surface_destroy (&src->base); - free (data); - return image->base.status; - } - - pixman_add_trapezoids (image->pixman_image, -dst_x, -dst_y, - n_traps, (pixman_trapezoid_t *) traps); - - mask = (cairo_glitz_surface_t *) - _cairo_surface_create_similar_scratch (&dst->base, - CAIRO_CONTENT_ALPHA, - width, height); - if (mask->base.status) - { - _cairo_glitz_pattern_release_surface (src_pattern, src, &attributes); - free (data); - cairo_surface_destroy (&image->base); - return mask->base.status; - } - - status = _cairo_glitz_surface_set_image (mask, image, - 0, 0, width, height, 0, 0); - - cairo_surface_destroy(&image->base); - - if (status) - return status; - } - - _cairo_glitz_surface_set_attributes (src, &attributes); - - glitz_composite (_glitz_operator (op), - src->surface, - mask->surface, - dst->surface, - src_x + attributes.base.x_offset, - src_y + attributes.base.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - - if (attributes.n_params) - free (attributes.params); - - glitz_set_geometry (dst->surface, - GLITZ_GEOMETRY_TYPE_NONE, - NULL, NULL); - - if (buffer) - glitz_buffer_destroy (buffer); - - free (data); - - _cairo_glitz_pattern_release_surface (src_pattern, src, &attributes); - if (src_pattern == &tmp_src_pattern.base) - _cairo_pattern_fini (&tmp_src_pattern.base); - - if (mask) - cairo_surface_destroy (&mask->base); - - if (glitz_surface_get_status (dst->surface) == GLITZ_STATUS_NOT_SUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_glitz_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - cairo_glitz_surface_t *surface = abstract_surface; - - if (region) - { - glitz_box_t *box; - int n; - cairo_status_t status; - - if (!surface->has_clip) { - _cairo_region_init (&surface->clip); - surface->has_clip = TRUE; - } - - status = _cairo_region_copy (&surface->clip, region); - if (status) { - _cairo_region_fini (&surface->clip); - surface->has_clip = FALSE; - return status; - } - - status = _cairo_glitz_get_boxes_from_region (&surface->clip, &box, &n); - if (status) { - _cairo_region_fini (&surface->clip); - surface->has_clip = FALSE; - return status; - } - - glitz_surface_set_clip_region (surface->surface, 0, 0, box, n); - - free (box); - } - else - { - glitz_surface_set_clip_region (surface->surface, 0, 0, NULL, 0); - - if (surface->has_clip) { - _cairo_region_fini (&surface->clip); - surface->has_clip = FALSE; - } - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_glitz_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_glitz_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - rectangle->width = glitz_surface_get_width (surface->surface); - rectangle->height = glitz_surface_get_height (surface->surface); - - return CAIRO_STATUS_SUCCESS; -} - -#define CAIRO_GLITZ_AREA_AVAILABLE 0 -#define CAIRO_GLITZ_AREA_DIVIDED 1 -#define CAIRO_GLITZ_AREA_OCCUPIED 2 - -typedef struct _cairo_glitz_root_area cairo_glitz_root_area_t; - -typedef struct _cairo_glitz_area { - int state; - int level; - int x, y; - int width, height; - struct _cairo_glitz_area *area[4]; - cairo_glitz_root_area_t *root; - void *closure; -} cairo_glitz_area_t; - -static cairo_glitz_area_t _empty_area = { - 0, 0, 0, 0, 0, 0, - { NULL, NULL, NULL, NULL }, - NULL, - NULL -}; - -typedef struct _cairo_glitz_area_funcs { - cairo_status_t (*move_in) (cairo_glitz_area_t *area, - void *closure); - - void (*move_out) (cairo_glitz_area_t *area, - void *closure); - - int (*compare_score) (cairo_glitz_area_t *area, - void *closure1, - void *closure2); -} cairo_glitz_area_funcs_t; - -struct _cairo_glitz_root_area { - int max_level; - int width, height; - cairo_glitz_area_t *area; - const cairo_glitz_area_funcs_t *funcs; -}; - -static cairo_status_t -_cairo_glitz_area_move_in (cairo_glitz_area_t *area, - void *closure) -{ - area->closure = closure; - area->state = CAIRO_GLITZ_AREA_OCCUPIED; - - return (*area->root->funcs->move_in) (area, area->closure); -} - -static void -_cairo_glitz_area_move_out (cairo_glitz_area_t *area) -{ - if (area->root) - { - (*area->root->funcs->move_out) (area, area->closure); - - area->closure = NULL; - area->state = CAIRO_GLITZ_AREA_AVAILABLE; - } -} - -static cairo_glitz_area_t * -_cairo_glitz_area_create (cairo_glitz_root_area_t *root, - int level, - int x, - int y, - int width, - int height) -{ - cairo_glitz_area_t *area; - int n = 4; - - area = malloc (sizeof (cairo_glitz_area_t)); - if (!area) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - area->level = level; - area->x = x; - area->y = y; - area->width = width; - area->height = height; - area->root = root; - area->closure = NULL; - area->state = CAIRO_GLITZ_AREA_AVAILABLE; - - while (n--) - area->area[n] = NULL; - - return area; -} - -static void -_cairo_glitz_area_destroy (cairo_glitz_area_t *area) -{ - if (area == NULL) - return; - - if (area->state == CAIRO_GLITZ_AREA_OCCUPIED) - { - _cairo_glitz_area_move_out (area); - } - else - { - int n = 4; - - while (n--) - _cairo_glitz_area_destroy (area->area[n]); - } - - free (area); -} - -static cairo_glitz_area_t * -_cairo_glitz_area_get_top_scored_sub_area (cairo_glitz_area_t *area) -{ - if (!area) - return NULL; - - switch (area->state) { - case CAIRO_GLITZ_AREA_OCCUPIED: - return area; - case CAIRO_GLITZ_AREA_AVAILABLE: - break; - case CAIRO_GLITZ_AREA_DIVIDED: { - cairo_glitz_area_t *tmp, *top = NULL; - int i; - - for (i = 0; i < 4; i++) - { - tmp = _cairo_glitz_area_get_top_scored_sub_area (area->area[i]); - if (tmp && top) - { - if ((*area->root->funcs->compare_score) (tmp, - tmp->closure, - top->closure) > 0) - top = tmp; - } - else if (tmp) - { - top = tmp; - } - } - return top; - } - } - - return NULL; -} - -static cairo_int_status_t -_cairo_glitz_area_find (cairo_glitz_area_t *area, - int width, - int height, - cairo_bool_t kick_out, - void *closure) -{ - cairo_status_t status; - - if (area->width < width || area->height < height) - return CAIRO_INT_STATUS_UNSUPPORTED; - - switch (area->state) { - case CAIRO_GLITZ_AREA_OCCUPIED: - if (kick_out) - { - if ((*area->root->funcs->compare_score) (area, - area->closure, - closure) >= 0) - return CAIRO_INT_STATUS_UNSUPPORTED; - - _cairo_glitz_area_move_out (area); - } else { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - /* fall-through */ - case CAIRO_GLITZ_AREA_AVAILABLE: { - if (area->level == area->root->max_level || - (area->width == width && area->height == height)) - { - return _cairo_glitz_area_move_in (area, closure); - } - else - { - int dx[4], dy[4], w[4], h[4], i; - - dx[0] = dx[2] = dy[0] = dy[1] = 0; - - w[0] = w[2] = dx[1] = dx[3] = width; - h[0] = h[1] = dy[2] = dy[3] = height; - - w[1] = w[3] = area->width - width; - h[2] = h[3] = area->height - height; - - for (i = 0; i < 2; i++) - { - if (w[i]) - area->area[i] = - _cairo_glitz_area_create (area->root, - area->level + 1, - area->x + dx[i], - area->y + dy[i], - w[i], h[i]); - } - - for (; i < 4; i++) - { - if (w[i] && h[i]) - area->area[i] = - _cairo_glitz_area_create (area->root, - area->level + 1, - area->x + dx[i], - area->y + dy[i], - w[i], h[i]); - } - - area->state = CAIRO_GLITZ_AREA_DIVIDED; - - status = _cairo_glitz_area_find (area->area[0], - width, height, - kick_out, closure); - if (status == CAIRO_STATUS_SUCCESS) - return CAIRO_STATUS_SUCCESS; - } - } break; - case CAIRO_GLITZ_AREA_DIVIDED: { - cairo_glitz_area_t *to_area; - int i, rejected = FALSE; - - for (i = 0; i < 4; i++) - { - if (area->area[i]) - { - if (area->area[i]->width >= width && - area->area[i]->height >= height) - { - status = _cairo_glitz_area_find (area->area[i], - width, height, - kick_out, closure); - if (status == CAIRO_STATUS_SUCCESS) - return CAIRO_STATUS_SUCCESS; - - rejected = TRUE; - } - } - } - - if (rejected) - return CAIRO_INT_STATUS_UNSUPPORTED; - - to_area = _cairo_glitz_area_get_top_scored_sub_area (area); - if (to_area) - { - if (kick_out) - { - if ((*area->root->funcs->compare_score) (to_area, - to_area->closure, - closure) >= 0) - return CAIRO_INT_STATUS_UNSUPPORTED; - } else { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - } - - for (i = 0; i < 4; i++) - { - _cairo_glitz_area_destroy (area->area[i]); - area->area[i] = NULL; - } - - area->closure = NULL; - area->state = CAIRO_GLITZ_AREA_AVAILABLE; - - status = _cairo_glitz_area_find (area, width, height, - TRUE, closure); - if (status == CAIRO_STATUS_SUCCESS) - return CAIRO_STATUS_SUCCESS; - - } break; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_status_t -_cairo_glitz_root_area_init (cairo_glitz_root_area_t *root, - int max_level, - int width, - int height, - const cairo_glitz_area_funcs_t *funcs) -{ - root->max_level = max_level; - root->funcs = funcs; - - root->area = _cairo_glitz_area_create (root, 0, 0, 0, width, height); - if (!root->area) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_glitz_root_area_fini (cairo_glitz_root_area_t *root) -{ - _cairo_glitz_area_destroy (root->area); -} - -typedef struct _cairo_glitz_surface_font_private { - cairo_glitz_root_area_t root; - glitz_surface_t *surface; -} cairo_glitz_surface_font_private_t; - -typedef struct _cairo_glitz_surface_glyph_private { - cairo_glitz_area_t *area; - cairo_bool_t locked; - cairo_point_double_t p1, p2; -} cairo_glitz_surface_glyph_private_t; - -static cairo_status_t -_cairo_glitz_glyph_move_in (cairo_glitz_area_t *area, - void *closure) -{ - cairo_glitz_surface_glyph_private_t *glyph_private = closure; - - glyph_private->area = area; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_glitz_glyph_move_out (cairo_glitz_area_t *area, - void *closure) -{ - cairo_glitz_surface_glyph_private_t *glyph_private = closure; - - glyph_private->area = NULL; -} - -static int -_cairo_glitz_glyph_compare (cairo_glitz_area_t *area, - void *closure1, - void *closure2) -{ - cairo_glitz_surface_glyph_private_t *glyph_private = closure1; - - if (glyph_private->locked) - return 1; - - return -1; -} - -static const cairo_glitz_area_funcs_t _cairo_glitz_area_funcs = { - _cairo_glitz_glyph_move_in, - _cairo_glitz_glyph_move_out, - _cairo_glitz_glyph_compare -}; - -#define GLYPH_CACHE_TEXTURE_SIZE 512 -#define GLYPH_CACHE_MAX_LEVEL 64 -#define GLYPH_CACHE_MAX_HEIGHT 96 -#define GLYPH_CACHE_MAX_WIDTH 96 - -#define WRITE_VEC2(ptr, _x, _y) \ - *(ptr)++ = (_x); \ - *(ptr)++ = (_y) - -#define WRITE_BOX(ptr, _vx1, _vy1, _vx2, _vy2, p1, p2) \ - WRITE_VEC2 (ptr, _vx1, _vy1); \ - WRITE_VEC2 (ptr, (p1)->x, (p2)->y); \ - WRITE_VEC2 (ptr, _vx2, _vy1); \ - WRITE_VEC2 (ptr, (p2)->x, (p2)->y); \ - WRITE_VEC2 (ptr, _vx2, _vy2); \ - WRITE_VEC2 (ptr, (p2)->x, (p1)->y); \ - WRITE_VEC2 (ptr, _vx1, _vy2); \ - WRITE_VEC2 (ptr, (p1)->x, (p1)->y) - -static cairo_status_t -_cairo_glitz_surface_font_init (cairo_glitz_surface_t *surface, - cairo_scaled_font_t *scaled_font, - cairo_format_t format) -{ - cairo_glitz_surface_font_private_t *font_private; - glitz_drawable_t *drawable; - glitz_format_t *surface_format = NULL; - cairo_int_status_t status; - - drawable = glitz_surface_get_drawable (surface->surface); - - switch (format) { - case CAIRO_FORMAT_A1: - case CAIRO_FORMAT_A8: - surface_format = - glitz_find_standard_format (drawable, GLITZ_STANDARD_A8); - break; - case CAIRO_FORMAT_RGB24: - ASSERT_NOT_REACHED; - break; - case CAIRO_FORMAT_ARGB32: - surface_format = - glitz_find_standard_format (drawable, GLITZ_STANDARD_ARGB32); - default: - break; - } - - if (!surface_format) - return CAIRO_INT_STATUS_UNSUPPORTED; - - font_private = malloc (sizeof (cairo_glitz_surface_font_private_t)); - if (!font_private) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font_private->surface = glitz_surface_create (drawable, surface_format, - GLYPH_CACHE_TEXTURE_SIZE, - GLYPH_CACHE_TEXTURE_SIZE, - 0, NULL); - if (font_private->surface == NULL) - { - free (font_private); - - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - if (format == CAIRO_FORMAT_ARGB32) - glitz_surface_set_component_alpha (font_private->surface, 1); - - status = _cairo_glitz_root_area_init (&font_private->root, - GLYPH_CACHE_MAX_LEVEL, - GLYPH_CACHE_TEXTURE_SIZE, - GLYPH_CACHE_TEXTURE_SIZE, - &_cairo_glitz_area_funcs); - if (status != CAIRO_STATUS_SUCCESS) - { - glitz_surface_destroy (font_private->surface); - free (font_private); - - return status; - } - - scaled_font->surface_private = font_private; - scaled_font->surface_backend = _cairo_glitz_surface_get_backend (); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_glitz_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font) -{ - cairo_glitz_surface_font_private_t *font_private; - - font_private = scaled_font->surface_private; - if (font_private) - { - _cairo_glitz_root_area_fini (&font_private->root); - glitz_surface_destroy (font_private->surface); - free (font_private); - } -} - -static void -_cairo_glitz_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font) -{ - cairo_glitz_surface_glyph_private_t *glyph_private; - - glyph_private = scaled_glyph->surface_private; - if (glyph_private) - { - if (glyph_private->area) - _cairo_glitz_area_move_out (glyph_private->area); - - free (glyph_private); - } -} - -#define FIXED_TO_FLOAT(f) (((glitz_float_t) (f)) / 65536) - -static cairo_status_t -_cairo_glitz_surface_add_glyph (cairo_glitz_surface_t *surface, - cairo_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph) -{ - cairo_image_surface_t *glyph_surface = scaled_glyph->surface; - cairo_glitz_surface_font_private_t *font_private; - cairo_glitz_surface_glyph_private_t *glyph_private; - glitz_point_fixed_t p1, p2; - glitz_pixel_format_t pf; - glitz_buffer_t *buffer; - unsigned int bpp, am, rm, gm, bm; - cairo_int_status_t status; - - glyph_private = scaled_glyph->surface_private; - if (glyph_private == NULL) - { - glyph_private = malloc (sizeof (cairo_glitz_surface_glyph_private_t)); - if (!glyph_private) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - glyph_private->area = NULL; - glyph_private->locked = FALSE; - - scaled_glyph->surface_private = (void *) glyph_private; - } - - if (glyph_surface->width > GLYPH_CACHE_MAX_WIDTH || - glyph_surface->height > GLYPH_CACHE_MAX_HEIGHT) - return CAIRO_STATUS_SUCCESS; - - if (scaled_font->surface_private == NULL) - { - status = _cairo_glitz_surface_font_init (surface, scaled_font, - glyph_surface->format); - if (status) - return status; - } - - font_private = scaled_font->surface_private; - - if (glyph_surface->width == 0 || glyph_surface->height == 0) - { - glyph_private->area = &_empty_area; - return CAIRO_STATUS_SUCCESS; - } - - if (_cairo_glitz_area_find (font_private->root.area, - glyph_surface->width, - glyph_surface->height, - FALSE, glyph_private)) - { - if (_cairo_glitz_area_find (font_private->root.area, - glyph_surface->width, - glyph_surface->height, - TRUE, glyph_private)) - return CAIRO_STATUS_SUCCESS; - } - - buffer = glitz_buffer_create_for_data (glyph_surface->data); - if (!buffer) - { - _cairo_glitz_area_move_out (glyph_private->area); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - cairo_format_get_masks (glyph_surface->format, &bpp, &am, &rm, &gm, &bm); - - pf.fourcc = GLITZ_FOURCC_RGB; - pf.masks.bpp = bpp; - pf.masks.alpha_mask = am; - pf.masks.red_mask = rm; - pf.masks.green_mask = gm; - pf.masks.blue_mask = bm; - - pf.bytes_per_line = glyph_surface->stride; - pf.scanline_order = GLITZ_PIXEL_SCANLINE_ORDER_BOTTOM_UP; - pf.xoffset = 0; - pf.skip_lines = 0; - - glitz_set_pixels (font_private->surface, - glyph_private->area->x, - glyph_private->area->y, - glyph_surface->width, - glyph_surface->height, - &pf, buffer); - - glitz_buffer_destroy (buffer); - - p1.x = glyph_private->area->x << 16; - p1.y = glyph_private->area->y << 16; - p2.x = (glyph_private->area->x + glyph_surface->width) << 16; - p2.y = (glyph_private->area->y + glyph_surface->height) << 16; - - glitz_surface_translate_point (font_private->surface, &p1, &p1); - glitz_surface_translate_point (font_private->surface, &p2, &p2); - - glyph_private->p1.x = FIXED_TO_FLOAT (p1.x); - glyph_private->p1.y = FIXED_TO_FLOAT (p1.y); - glyph_private->p2.x = FIXED_TO_FLOAT (p2.x); - glyph_private->p2.y = FIXED_TO_FLOAT (p2.y); - - return CAIRO_STATUS_SUCCESS; -} - -#define N_STACK_BUF 256 - -static cairo_int_status_t -_cairo_glitz_surface_old_show_glyphs (cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_pattern_t *pattern, - void *abstract_surface, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs) -{ - cairo_glitz_surface_attributes_t attributes; - cairo_glitz_surface_glyph_private_t *glyph_private; - cairo_glitz_surface_t *dst = abstract_surface; - cairo_glitz_surface_t *src; - cairo_scaled_glyph_t *stack_scaled_glyphs[N_STACK_BUF]; - cairo_scaled_glyph_t **scaled_glyphs; - glitz_float_t stack_vertices[N_STACK_BUF * 16]; - glitz_float_t *vertices; - glitz_buffer_t *buffer; - cairo_int_status_t status; - int x_offset, y_offset; - int i, cached_glyphs = 0; - int remaining_glyps = num_glyphs; - glitz_float_t x1, y1, x2, y2; - static const glitz_vertex_format_t format = { - GLITZ_PRIMITIVE_QUADS, - GLITZ_DATA_TYPE_FLOAT, - sizeof (glitz_float_t) * 4, - GLITZ_VERTEX_ATTRIBUTE_MASK_COORD_MASK, - { 0 }, - { - GLITZ_DATA_TYPE_FLOAT, - GLITZ_COORDINATE_SIZE_XY, - sizeof (glitz_float_t) * 2, - } - }; - - if (scaled_font->surface_backend != NULL && - scaled_font->surface_backend != _cairo_glitz_surface_get_backend ()) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (op == CAIRO_OPERATOR_SATURATE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (_glitz_ensure_target (dst->surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_glitz_pattern_acquire_surface (pattern, dst, - src_x, src_y, - width, height, - &src, &attributes); - if (status) - return status; - - _cairo_glitz_surface_set_attributes (src, &attributes); - - if (num_glyphs > N_STACK_BUF) - { - char *data; - size_t size1, size2; - - if ((size_t)num_glyphs >= INT32_MAX / sizeof(void*) || - (size_t)num_glyphs >= INT32_MAX / sizeof(glitz_float_t) || - ((size_t)num_glyphs * sizeof(glitz_float_t)) >= INT32_MAX / 16) - goto FAIL1; - - size1 = num_glyphs * sizeof(void *); - size2 = num_glyphs * sizeof(glitz_float_t) * 16; - if (size1 >= INT32_MAX - size2) - goto FAIL1; - - data = malloc (size1 + size2); - if (!data) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - goto FAIL1; - } - - scaled_glyphs = (cairo_scaled_glyph_t **) data; - vertices = (glitz_float_t *) (data + num_glyphs * sizeof (void *)); - } - else - { - scaled_glyphs = stack_scaled_glyphs; - vertices = stack_vertices; - } - - buffer = glitz_buffer_create_for_data (vertices); - if (!buffer) - goto FAIL2; - - _cairo_scaled_font_freeze_cache (scaled_font); - - for (i = 0; i < num_glyphs; i++) - { - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyphs[i]); - if (status != CAIRO_STATUS_SUCCESS) - { - num_glyphs = i; - goto UNLOCK; - } - - glyph_private = scaled_glyphs[i]->surface_private; - if (!glyph_private || !glyph_private->area) - { - status = _cairo_glitz_surface_add_glyph (dst, - scaled_font, - scaled_glyphs[i]); - if (status != CAIRO_STATUS_SUCCESS) { - num_glyphs = i; - goto UNLOCK; - } - } - glyph_private = scaled_glyphs[i]->surface_private; - if (glyph_private && glyph_private->area) - { - remaining_glyps--; - - if (glyph_private->area->width) - { - x_offset = scaled_glyphs[i]->surface->base.device_transform.x0; - y_offset = scaled_glyphs[i]->surface->base.device_transform.y0; - - x1 = _cairo_lround (glyphs[i].x - x_offset); - y1 = _cairo_lround (glyphs[i].y - y_offset); - x2 = x1 + glyph_private->area->width; - y2 = y1 + glyph_private->area->height; - - WRITE_BOX (vertices, x1, y1, x2, y2, - &glyph_private->p1, &glyph_private->p2); - - glyph_private->locked = TRUE; - - cached_glyphs++; - } - } - } - - if (remaining_glyps) - { - cairo_surface_t *image; - cairo_glitz_surface_t *clone; - - for (i = 0; i < num_glyphs; i++) - { - glyph_private = scaled_glyphs[i]->surface_private; - if (!glyph_private || !glyph_private->area) - { - int glyph_width, glyph_height; - - image = &scaled_glyphs[i]->surface->base; - glyph_width = scaled_glyphs[i]->surface->width; - glyph_height = scaled_glyphs[i]->surface->height; - status = - _cairo_glitz_surface_clone_similar (abstract_surface, - image, - 0, - 0, - glyph_width, - glyph_height, - (cairo_surface_t **) - &clone); - if (status) - goto UNLOCK; - - x_offset = scaled_glyphs[i]->surface->base.device_transform.x0; - y_offset = scaled_glyphs[i]->surface->base.device_transform.y0; - x1 = _cairo_lround (glyphs[i].x - x_offset); - y1 = _cairo_lround (glyphs[i].y - y_offset); - - glitz_composite (_glitz_operator (op), - src->surface, - clone->surface, - dst->surface, - src_x + attributes.base.x_offset + x1, - src_y + attributes.base.y_offset + y1, - 0, 0, - x1, y1, - glyph_width, - glyph_height); - - cairo_surface_destroy (&clone->base); - - if (glitz_surface_get_status (dst->surface) == - GLITZ_STATUS_NOT_SUPPORTED) - { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto UNLOCK; - } - } - } - } - - if (cached_glyphs) - { - cairo_glitz_surface_font_private_t *font_private; - - glitz_set_geometry (dst->surface, - GLITZ_GEOMETRY_TYPE_VERTEX, - (glitz_geometry_format_t *) &format, - buffer); - - glitz_set_array (dst->surface, 0, 4, cached_glyphs * 4, 0, 0); - - font_private = scaled_font->surface_private; - - glitz_composite (_glitz_operator (op), - src->surface, - font_private->surface, - dst->surface, - src_x + attributes.base.x_offset, - src_y + attributes.base.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - - glitz_set_geometry (dst->surface, - GLITZ_GEOMETRY_TYPE_NONE, - NULL, NULL); - } - -UNLOCK: - if (cached_glyphs) - { - for (i = 0; i < num_glyphs; i++) - { - glyph_private = scaled_glyphs[i]->surface_private; - if (glyph_private) - glyph_private->locked = FALSE; - } - } - - _cairo_scaled_font_thaw_cache (scaled_font); - - glitz_buffer_destroy (buffer); - - FAIL2: - if (num_glyphs > N_STACK_BUF) - free (scaled_glyphs); - - FAIL1: - if (attributes.n_params) - free (attributes.params); - - _cairo_glitz_pattern_release_surface (pattern, src, &attributes); - - if (status) - return status; - - if (glitz_surface_get_status (dst->surface) == GLITZ_STATUS_NOT_SUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_glitz_surface_flush (void *abstract_surface) -{ - cairo_glitz_surface_t *surface = abstract_surface; - - glitz_surface_flush (surface->surface); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_bool_t -_cairo_glitz_surface_is_similar (void *surface_a, - void *surface_b, - cairo_content_t content) -{ - cairo_glitz_surface_t *a = (cairo_glitz_surface_t *) surface_a; - cairo_glitz_surface_t *b = (cairo_glitz_surface_t *) surface_b; - - glitz_drawable_t *drawable_a = glitz_surface_get_drawable (a->surface); - glitz_drawable_t *drawable_b = glitz_surface_get_drawable (b->surface); - - return drawable_a == drawable_b; -} - -static cairo_status_t -_cairo_glitz_surface_reset (void *abstract_surface) -{ - cairo_glitz_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _cairo_glitz_surface_set_clip_region (surface, NULL); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static const cairo_surface_backend_t cairo_glitz_surface_backend = { - CAIRO_SURFACE_TYPE_GLITZ, - _cairo_glitz_surface_create_similar, - _cairo_glitz_surface_finish, - _cairo_glitz_surface_acquire_source_image, - _cairo_glitz_surface_release_source_image, - _cairo_glitz_surface_acquire_dest_image, - _cairo_glitz_surface_release_dest_image, - _cairo_glitz_surface_clone_similar, - _cairo_glitz_surface_composite, - _cairo_glitz_surface_fill_rectangles, - _cairo_glitz_surface_composite_trapezoids, - NULL, /* copy_page */ - NULL, /* show_page */ - _cairo_glitz_surface_set_clip_region, - NULL, /* intersect_clip_path */ - _cairo_glitz_surface_get_extents, - _cairo_glitz_surface_old_show_glyphs, - NULL, /* get_font_options */ - _cairo_glitz_surface_flush, - NULL, /* mark_dirty_rectangle */ - _cairo_glitz_surface_scaled_font_fini, - _cairo_glitz_surface_scaled_glyph_fini, - - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - NULL, /* show_glyphs */ - - NULL, /* snapshot */ - _cairo_glitz_surface_is_similar, - - _cairo_glitz_surface_reset -}; - -static const cairo_surface_backend_t * -_cairo_glitz_surface_get_backend (void) -{ - return &cairo_glitz_surface_backend; -} - -static cairo_content_t -_glitz_format_to_content (glitz_format_t * format) -{ - assert (format->color.fourcc == GLITZ_FOURCC_RGB); - - if (format->color.alpha_size != 0) { - if (format->color.red_size != 0 && - format->color.green_size != 0 && - format->color.blue_size != 0) - return CAIRO_CONTENT_COLOR_ALPHA; - else - return CAIRO_CONTENT_ALPHA; - } - return CAIRO_CONTENT_COLOR; -} - -cairo_surface_t * -cairo_glitz_surface_create (glitz_surface_t *surface) -{ - cairo_glitz_surface_t *crsurface; - glitz_format_t *format; - - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NULL_POINTER)); - - crsurface = malloc (sizeof (cairo_glitz_surface_t)); - if (crsurface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - format = glitz_surface_get_format (surface); - _cairo_surface_init (&crsurface->base, &cairo_glitz_surface_backend, - _glitz_format_to_content(format)); - - glitz_surface_reference (surface); - - crsurface->surface = surface; - crsurface->format = format; - crsurface->has_clip = FALSE; - - return (cairo_surface_t *) crsurface; -} -slim_hidden_def (cairo_glitz_surface_create); diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-gstate.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-gstate.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-gstate.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-gstate.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1680 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#define _GNU_SOURCE - -#include "cairoint.h" - -#include "cairo-clip-private.h" -#include "cairo-gstate-private.h" - -#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) -#define ISFINITE(x) isfinite (x) -#else -#define ISFINITE(x) ((x) * (x) >= 0.) /* check for NaNs */ -#endif - -static cairo_status_t -_cairo_gstate_init_copy (cairo_gstate_t *gstate, cairo_gstate_t *other); - -static cairo_status_t -_cairo_gstate_ensure_font_face (cairo_gstate_t *gstate); - -static cairo_status_t -_cairo_gstate_ensure_scaled_font (cairo_gstate_t *gstate); - -static void -_cairo_gstate_unset_scaled_font (cairo_gstate_t *gstate); - -static void -_cairo_gstate_transform_glyphs_to_backend (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_glyph_t *transformed_glyphs); - -cairo_status_t -_cairo_gstate_init (cairo_gstate_t *gstate, - cairo_surface_t *target) -{ - cairo_status_t status; - - gstate->next = NULL; - - gstate->op = CAIRO_GSTATE_OPERATOR_DEFAULT; - - gstate->tolerance = CAIRO_GSTATE_TOLERANCE_DEFAULT; - gstate->antialias = CAIRO_ANTIALIAS_DEFAULT; - - _cairo_stroke_style_init (&gstate->stroke_style); - - gstate->fill_rule = CAIRO_GSTATE_FILL_RULE_DEFAULT; - - gstate->font_face = NULL; - gstate->scaled_font = NULL; - - cairo_matrix_init_scale (&gstate->font_matrix, - CAIRO_GSTATE_DEFAULT_FONT_SIZE, - CAIRO_GSTATE_DEFAULT_FONT_SIZE); - - _cairo_font_options_init_default (&gstate->font_options); - - _cairo_clip_init (&gstate->clip, target); - - gstate->target = cairo_surface_reference (target); - gstate->parent_target = NULL; - gstate->original_target = cairo_surface_reference (target); - - _cairo_gstate_identity_matrix (gstate); - gstate->source_ctm_inverse = gstate->ctm_inverse; - - gstate->source = _cairo_pattern_create_solid (CAIRO_COLOR_BLACK, - CAIRO_CONTENT_COLOR); - - /* Now that the gstate is fully initialized and ready for the eventual - * _cairo_gstate_fini(), we can check for errors (and not worry about - * the resource deallocation). */ - - if (target == NULL) - return _cairo_error (CAIRO_STATUS_NULL_POINTER); - - status = target->status; - if (status) - return status; - - status = gstate->source->status; - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_gstate_init_copy: - * - * Initialize @gstate by performing a deep copy of state fields from - * @other. Note that gstate->next is not copied but is set to %NULL by - * this function. - **/ -static cairo_status_t -_cairo_gstate_init_copy (cairo_gstate_t *gstate, cairo_gstate_t *other) -{ - cairo_status_t status; - - gstate->op = other->op; - - gstate->tolerance = other->tolerance; - gstate->antialias = other->antialias; - - status = _cairo_stroke_style_init_copy (&gstate->stroke_style, - &other->stroke_style); - if (status) - return status; - - gstate->fill_rule = other->fill_rule; - - gstate->font_face = cairo_font_face_reference (other->font_face); - gstate->scaled_font = cairo_scaled_font_reference (other->scaled_font); - - gstate->font_matrix = other->font_matrix; - - _cairo_font_options_init_copy (&gstate->font_options , &other->font_options); - - status = _cairo_clip_init_copy (&gstate->clip, &other->clip); - if (status) { - _cairo_stroke_style_fini (&gstate->stroke_style); - cairo_font_face_destroy (gstate->font_face); - cairo_scaled_font_destroy (gstate->scaled_font); - return status; - } - - gstate->target = cairo_surface_reference (other->target); - /* parent_target is always set to NULL; it's only ever set by redirect_target */ - gstate->parent_target = NULL; - gstate->original_target = cairo_surface_reference (other->original_target); - - gstate->ctm = other->ctm; - gstate->ctm_inverse = other->ctm_inverse; - gstate->source_ctm_inverse = other->source_ctm_inverse; - - gstate->source = cairo_pattern_reference (other->source); - - gstate->next = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_gstate_fini (cairo_gstate_t *gstate) -{ - _cairo_stroke_style_fini (&gstate->stroke_style); - - cairo_font_face_destroy (gstate->font_face); - gstate->font_face = NULL; - - cairo_scaled_font_destroy (gstate->scaled_font); - gstate->scaled_font = NULL; - - _cairo_clip_reset (&gstate->clip); - - cairo_surface_destroy (gstate->target); - gstate->target = NULL; - - cairo_surface_destroy (gstate->parent_target); - gstate->parent_target = NULL; - - cairo_surface_destroy (gstate->original_target); - gstate->original_target = NULL; - - cairo_pattern_destroy (gstate->source); - gstate->source = NULL; -} - -static void -_cairo_gstate_destroy (cairo_gstate_t *gstate) -{ - _cairo_gstate_fini (gstate); - free (gstate); -} - -/** - * _cairo_gstate_clone: - * @other: a #cairo_gstate_t to be copied, not %NULL. - * - * Create a new #cairo_gstate_t setting all graphics state parameters - * to the same values as contained in @other. gstate->next will be set - * to %NULL and may be used by the caller to chain #cairo_gstate_t - * objects together. - * - * Return value: a new #cairo_gstate_t or %NULL if there is insufficient - * memory. - **/ -static cairo_status_t -_cairo_gstate_clone (cairo_gstate_t *other, cairo_gstate_t **out) -{ - cairo_status_t status; - cairo_gstate_t *gstate; - - assert (other != NULL); - - gstate = malloc (sizeof (cairo_gstate_t)); - if (gstate == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_gstate_init_copy (gstate, other); - if (status) { - free (gstate); - return status; - } - - *out = gstate; - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_gstate_save: - * @gstate: input/output gstate pointer - * - * Makes a copy of the current state of @gstate and saves it - * to @gstate->next, then put the address of the newly allcated - * copy into @gstate. _cairo_gstate_restore() reverses this. - **/ -cairo_status_t -_cairo_gstate_save (cairo_gstate_t **gstate) -{ - cairo_gstate_t *top = NULL; - cairo_status_t status; - - status = _cairo_gstate_clone (*gstate, &top); - if (status) - return status; - - top->next = *gstate; - *gstate = top; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_gstate_restore: - * @gstate: input/output gstate pointer - * - * Reverses the effects of one _cairo_gstate_save() call. - **/ -cairo_status_t -_cairo_gstate_restore (cairo_gstate_t **gstate) -{ - cairo_gstate_t *top; - - top = *gstate; - if (top->next == NULL) - return _cairo_error (CAIRO_STATUS_INVALID_RESTORE); - - *gstate = top->next; - - _cairo_gstate_destroy (top); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_gstate_redirect_target: - * @gstate: a #cairo_gstate_t - * @child: the new child target - * - * Redirect @gstate rendering to a "child" target. The original - * "parent" target with which the gstate was created will not be - * affected. See _cairo_gstate_get_target(). - * - * Unless the redirected target has the same device offsets as the - * original #cairo_t target, the clip will be INVALID after this call, - * and the caller should either recreate or reset the clip. - **/ -cairo_status_t -_cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child) -{ - cairo_status_t status; - - /* If this gstate is already redirected, this is an error; we need a - * new gstate to be able to redirect */ - assert (gstate->parent_target == NULL); - - /* Set up our new parent_target based on our current target; - * gstate->parent_target will take the ref that is held by gstate->target - */ - cairo_surface_destroy (gstate->parent_target); - gstate->parent_target = gstate->target; - - /* Now set up our new target; we overwrite gstate->target directly, - * since its ref is now owned by gstate->parent_target */ - gstate->target = cairo_surface_reference (child); - - _cairo_clip_reset (&gstate->clip); - status = _cairo_clip_init_deep_copy (&gstate->clip, &gstate->next->clip, child); - if (status) - return status; - - /* The clip is in surface backend coordinates for the previous target; - * translate it into the child's backend coordinates. */ - _cairo_clip_translate (&gstate->clip, - _cairo_fixed_from_double (child->device_transform.x0 - gstate->parent_target->device_transform.x0), - _cairo_fixed_from_double (child->device_transform.y0 - gstate->parent_target->device_transform.y0)); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_gstate_is_redirected - * @gstate: a #cairo_gstate_t - * - * Return value: %TRUE if the gstate is redirected to a target - * different than the original, %FALSE otherwise. - **/ -cairo_bool_t -_cairo_gstate_is_redirected (cairo_gstate_t *gstate) -{ - return (gstate->target != gstate->original_target); -} - -/** - * _cairo_gstate_get_target: - * @gstate: a #cairo_gstate_t - * - * Return the current drawing target; if drawing is not redirected, - * this will be the same as _cairo_gstate_get_original_target(). - * - * Return value: the current target surface - **/ -cairo_surface_t * -_cairo_gstate_get_target (cairo_gstate_t *gstate) -{ - return gstate->target; -} - -/** - * _cairo_gstate_get_parent_target: - * @gstate: a #cairo_gstate_t - * - * Return the parent surface of the current drawing target surface; - * if this particular gstate isn't a redirect gstate, this will return %NULL. - **/ -cairo_surface_t * -_cairo_gstate_get_parent_target (cairo_gstate_t *gstate) -{ - return gstate->parent_target; -} - -/** - * _cairo_gstate_get_original_target: - * @gstate: a #cairo_gstate_t - * - * Return the original target with which @gstate was created. This - * function always returns the original target independent of any - * child target that may have been set with - * _cairo_gstate_redirect_target. - * - * Return value: the original target surface - **/ -cairo_surface_t * -_cairo_gstate_get_original_target (cairo_gstate_t *gstate) -{ - return gstate->original_target; -} - -/** - * _cairo_gstate_get_clip: - * @gstate: a #cairo_gstate_t - * - * Return value: a pointer to the gstate's #cairo_clip_t structure. - */ -cairo_clip_t * -_cairo_gstate_get_clip (cairo_gstate_t *gstate) -{ - return &gstate->clip; -} - -cairo_status_t -_cairo_gstate_set_source (cairo_gstate_t *gstate, - cairo_pattern_t *source) -{ - if (source->status) - return source->status; - - source = cairo_pattern_reference (source); - cairo_pattern_destroy (gstate->source); - gstate->source = source; - gstate->source_ctm_inverse = gstate->ctm_inverse; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_pattern_t * -_cairo_gstate_get_source (cairo_gstate_t *gstate) -{ - return gstate->source; -} - -cairo_status_t -_cairo_gstate_set_operator (cairo_gstate_t *gstate, cairo_operator_t op) -{ - gstate->op = op; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_operator_t -_cairo_gstate_get_operator (cairo_gstate_t *gstate) -{ - return gstate->op; -} - -cairo_status_t -_cairo_gstate_set_tolerance (cairo_gstate_t *gstate, double tolerance) -{ - gstate->tolerance = tolerance; - - return CAIRO_STATUS_SUCCESS; -} - -double -_cairo_gstate_get_tolerance (cairo_gstate_t *gstate) -{ - return gstate->tolerance; -} - -cairo_status_t -_cairo_gstate_set_fill_rule (cairo_gstate_t *gstate, cairo_fill_rule_t fill_rule) -{ - gstate->fill_rule = fill_rule; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_fill_rule_t -_cairo_gstate_get_fill_rule (cairo_gstate_t *gstate) -{ - return gstate->fill_rule; -} - -cairo_status_t -_cairo_gstate_set_line_width (cairo_gstate_t *gstate, double width) -{ - gstate->stroke_style.line_width = width; - - return CAIRO_STATUS_SUCCESS; -} - -double -_cairo_gstate_get_line_width (cairo_gstate_t *gstate) -{ - return gstate->stroke_style.line_width; -} - -cairo_status_t -_cairo_gstate_set_line_cap (cairo_gstate_t *gstate, cairo_line_cap_t line_cap) -{ - gstate->stroke_style.line_cap = line_cap; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_line_cap_t -_cairo_gstate_get_line_cap (cairo_gstate_t *gstate) -{ - return gstate->stroke_style.line_cap; -} - -cairo_status_t -_cairo_gstate_set_line_join (cairo_gstate_t *gstate, cairo_line_join_t line_join) -{ - gstate->stroke_style.line_join = line_join; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_line_join_t -_cairo_gstate_get_line_join (cairo_gstate_t *gstate) -{ - return gstate->stroke_style.line_join; -} - -cairo_status_t -_cairo_gstate_set_dash (cairo_gstate_t *gstate, const double *dash, int num_dashes, double offset) -{ - unsigned int i; - double dash_total; - - if (gstate->stroke_style.dash) - free (gstate->stroke_style.dash); - - gstate->stroke_style.num_dashes = num_dashes; - - if (gstate->stroke_style.num_dashes == 0) { - gstate->stroke_style.dash = NULL; - gstate->stroke_style.dash_offset = 0.0; - return CAIRO_STATUS_SUCCESS; - } - - gstate->stroke_style.dash = _cairo_malloc_ab (gstate->stroke_style.num_dashes, sizeof (double)); - if (gstate->stroke_style.dash == NULL) { - gstate->stroke_style.num_dashes = 0; - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - memcpy (gstate->stroke_style.dash, dash, gstate->stroke_style.num_dashes * sizeof (double)); - - dash_total = 0.0; - for (i = 0; i < gstate->stroke_style.num_dashes; i++) { - if (gstate->stroke_style.dash[i] < 0) - return _cairo_error (CAIRO_STATUS_INVALID_DASH); - dash_total += gstate->stroke_style.dash[i]; - } - - if (dash_total == 0.0) - return _cairo_error (CAIRO_STATUS_INVALID_DASH); - - /* A single dash value indicate symmetric repeating, so the total - * is twice as long. */ - if (gstate->stroke_style.num_dashes == 1) - dash_total *= 2; - - /* The dashing code doesn't like a negative offset, so we compute - * the equivalent positive offset. */ - if (offset < 0) - offset += ceil (-offset / dash_total + 0.5) * dash_total; - - gstate->stroke_style.dash_offset = offset; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_gstate_get_dash (cairo_gstate_t *gstate, - double *dashes, - int *num_dashes, - double *offset) -{ - if (dashes) - memcpy (dashes, - gstate->stroke_style.dash, - sizeof (double) * gstate->stroke_style.num_dashes); - - if (num_dashes) - *num_dashes = gstate->stroke_style.num_dashes; - - if (offset) - *offset = gstate->stroke_style.dash_offset; -} - -cairo_status_t -_cairo_gstate_set_miter_limit (cairo_gstate_t *gstate, double limit) -{ - gstate->stroke_style.miter_limit = limit; - - return CAIRO_STATUS_SUCCESS; -} - -double -_cairo_gstate_get_miter_limit (cairo_gstate_t *gstate) -{ - return gstate->stroke_style.miter_limit; -} - -void -_cairo_gstate_get_matrix (cairo_gstate_t *gstate, cairo_matrix_t *matrix) -{ - *matrix = gstate->ctm; -} - -cairo_status_t -_cairo_gstate_translate (cairo_gstate_t *gstate, double tx, double ty) -{ - cairo_matrix_t tmp; - - if (! ISFINITE (tx) || ! ISFINITE (ty)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - _cairo_gstate_unset_scaled_font (gstate); - - cairo_matrix_init_translate (&tmp, tx, ty); - cairo_matrix_multiply (&gstate->ctm, &tmp, &gstate->ctm); - - /* paranoid check against gradual numerical instability */ - if (! _cairo_matrix_is_invertible (&gstate->ctm)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - cairo_matrix_init_translate (&tmp, -tx, -ty); - cairo_matrix_multiply (&gstate->ctm_inverse, &gstate->ctm_inverse, &tmp); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_scale (cairo_gstate_t *gstate, double sx, double sy) -{ - cairo_matrix_t tmp; - - if (sx * sy == 0.) /* either sx or sy is 0, or det == 0 due to underflow */ - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - if (! ISFINITE (sx) || ! ISFINITE (sy)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - _cairo_gstate_unset_scaled_font (gstate); - - cairo_matrix_init_scale (&tmp, sx, sy); - cairo_matrix_multiply (&gstate->ctm, &tmp, &gstate->ctm); - - /* paranoid check against gradual numerical instability */ - if (! _cairo_matrix_is_invertible (&gstate->ctm)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - cairo_matrix_init_scale (&tmp, 1/sx, 1/sy); - cairo_matrix_multiply (&gstate->ctm_inverse, &gstate->ctm_inverse, &tmp); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_rotate (cairo_gstate_t *gstate, double angle) -{ - cairo_matrix_t tmp; - - if (angle == 0.) - return CAIRO_STATUS_SUCCESS; - - if (! ISFINITE (angle)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - _cairo_gstate_unset_scaled_font (gstate); - - cairo_matrix_init_rotate (&tmp, angle); - cairo_matrix_multiply (&gstate->ctm, &tmp, &gstate->ctm); - - /* paranoid check against gradual numerical instability */ - if (! _cairo_matrix_is_invertible (&gstate->ctm)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - cairo_matrix_init_rotate (&tmp, -angle); - cairo_matrix_multiply (&gstate->ctm_inverse, &gstate->ctm_inverse, &tmp); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_transform (cairo_gstate_t *gstate, - const cairo_matrix_t *matrix) -{ - cairo_matrix_t tmp; - cairo_status_t status; - - tmp = *matrix; - status = cairo_matrix_invert (&tmp); - if (status) - return status; - - _cairo_gstate_unset_scaled_font (gstate); - - cairo_matrix_multiply (&gstate->ctm, matrix, &gstate->ctm); - cairo_matrix_multiply (&gstate->ctm_inverse, &gstate->ctm_inverse, &tmp); - - /* paranoid check against gradual numerical instability */ - if (! _cairo_matrix_is_invertible (&gstate->ctm)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_set_matrix (cairo_gstate_t *gstate, - const cairo_matrix_t *matrix) -{ - cairo_status_t status; - - if (! _cairo_matrix_is_invertible (matrix)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - _cairo_gstate_unset_scaled_font (gstate); - - gstate->ctm = *matrix; - gstate->ctm_inverse = *matrix; - status = cairo_matrix_invert (&gstate->ctm_inverse); - assert (status == CAIRO_STATUS_SUCCESS); - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_gstate_identity_matrix (cairo_gstate_t *gstate) -{ - _cairo_gstate_unset_scaled_font (gstate); - - cairo_matrix_init_identity (&gstate->ctm); - cairo_matrix_init_identity (&gstate->ctm_inverse); -} - -void -_cairo_gstate_user_to_device (cairo_gstate_t *gstate, double *x, double *y) -{ - cairo_matrix_transform_point (&gstate->ctm, x, y); -} - -void -_cairo_gstate_user_to_device_distance (cairo_gstate_t *gstate, - double *dx, double *dy) -{ - cairo_matrix_transform_distance (&gstate->ctm, dx, dy); -} - -void -_cairo_gstate_device_to_user (cairo_gstate_t *gstate, double *x, double *y) -{ - cairo_matrix_transform_point (&gstate->ctm_inverse, x, y); -} - -void -_cairo_gstate_device_to_user_distance (cairo_gstate_t *gstate, - double *dx, double *dy) -{ - cairo_matrix_transform_distance (&gstate->ctm_inverse, dx, dy); -} - -void -_cairo_gstate_user_to_backend (cairo_gstate_t *gstate, double *x, double *y) -{ - cairo_matrix_transform_point (&gstate->ctm, x, y); - cairo_matrix_transform_point (&gstate->target->device_transform, x, y); -} - -void -_cairo_gstate_backend_to_user (cairo_gstate_t *gstate, double *x, double *y) -{ - cairo_matrix_transform_point (&gstate->target->device_transform_inverse, x, y); - cairo_matrix_transform_point (&gstate->ctm_inverse, x, y); -} - -void -_cairo_gstate_backend_to_user_rectangle (cairo_gstate_t *gstate, - double *x1, double *y1, - double *x2, double *y2, - cairo_bool_t *is_tight) -{ - cairo_matrix_t matrix_inverse; - - cairo_matrix_multiply (&matrix_inverse, - &gstate->target->device_transform_inverse, - &gstate->ctm_inverse); - _cairo_matrix_transform_bounding_box (&matrix_inverse, - x1, y1, x2, y2, is_tight); -} - -/* XXX: NYI -cairo_status_t -_cairo_gstate_stroke_to_path (cairo_gstate_t *gstate) -{ - cairo_status_t status; - - _cairo_pen_init (&gstate); - return CAIRO_STATUS_SUCCESS; -} -*/ - -cairo_status_t -_cairo_gstate_path_extents (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2) -{ - cairo_status_t status; - - status = _cairo_path_fixed_bounds (path, x1, y1, x2, y2, gstate->tolerance); - if (status) - return status; - - _cairo_gstate_backend_to_user_rectangle (gstate, x1, y1, x2, y2, NULL); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_gstate_copy_transformed_pattern (cairo_gstate_t *gstate, - cairo_pattern_t *pattern, - cairo_pattern_t *original, - cairo_matrix_t *ctm_inverse) -{ - cairo_surface_pattern_t *surface_pattern; - cairo_surface_t *surface; - cairo_status_t status; - - status = _cairo_pattern_init_copy (pattern, original); - if (status) - return status; - - _cairo_pattern_transform (pattern, ctm_inverse); - - if (cairo_pattern_get_type (original) == CAIRO_PATTERN_TYPE_SURFACE) { - surface_pattern = (cairo_surface_pattern_t *) original; - surface = surface_pattern->surface; - if (_cairo_surface_has_device_transform (surface)) - _cairo_pattern_transform (pattern, &surface->device_transform); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_gstate_copy_transformed_source (cairo_gstate_t *gstate, - cairo_pattern_t *pattern) -{ - return _cairo_gstate_copy_transformed_pattern (gstate, pattern, - gstate->source, - &gstate->source_ctm_inverse); -} - -static cairo_status_t -_cairo_gstate_copy_transformed_mask (cairo_gstate_t *gstate, - cairo_pattern_t *pattern, - cairo_pattern_t *mask) -{ - return _cairo_gstate_copy_transformed_pattern (gstate, pattern, - mask, - &gstate->ctm_inverse); -} - -cairo_status_t -_cairo_gstate_paint (cairo_gstate_t *gstate) -{ - cairo_status_t status; - cairo_pattern_union_t pattern; - - if (gstate->source->status) - return gstate->source->status; - - status = _cairo_surface_set_clip (gstate->target, &gstate->clip); - if (status) - return status; - - status = _cairo_gstate_copy_transformed_source (gstate, &pattern.base); - if (status) - return status; - - status = _cairo_surface_paint (gstate->target, - gstate->op, - &pattern.base); - - _cairo_pattern_fini (&pattern.base); - - return status; -} - -cairo_status_t -_cairo_gstate_mask (cairo_gstate_t *gstate, - cairo_pattern_t *mask) -{ - cairo_status_t status; - cairo_pattern_union_t source_pattern, mask_pattern; - - if (mask->status) - return mask->status; - - if (gstate->source->status) - return gstate->source->status; - - status = _cairo_surface_set_clip (gstate->target, &gstate->clip); - if (status) - return status; - - status = _cairo_gstate_copy_transformed_source (gstate, &source_pattern.base); - if (status) - return status; - - status = _cairo_gstate_copy_transformed_mask (gstate, &mask_pattern.base, mask); - if (status) - goto CLEANUP_SOURCE; - - status = _cairo_surface_mask (gstate->target, - gstate->op, - &source_pattern.base, - &mask_pattern.base); - - _cairo_pattern_fini (&mask_pattern.base); -CLEANUP_SOURCE: - _cairo_pattern_fini (&source_pattern.base); - - return status; -} - -cairo_status_t -_cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path) -{ - cairo_status_t status; - cairo_pattern_union_t source_pattern; - - if (gstate->source->status) - return gstate->source->status; - - if (gstate->stroke_style.line_width <= 0.0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_surface_set_clip (gstate->target, &gstate->clip); - if (status) - return status; - - status = _cairo_gstate_copy_transformed_source (gstate, - &source_pattern.base); - if (status) - return status; - - status = _cairo_surface_stroke (gstate->target, - gstate->op, - &source_pattern.base, - path, - &gstate->stroke_style, - &gstate->ctm, - &gstate->ctm_inverse, - gstate->tolerance, - gstate->antialias); - - _cairo_pattern_fini (&source_pattern.base); - - return status; - -} - -cairo_status_t -_cairo_gstate_in_stroke (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double x, - double y, - cairo_bool_t *inside_ret) -{ - cairo_status_t status; - cairo_traps_t traps; - - if (gstate->stroke_style.line_width <= 0.0) { - *inside_ret = FALSE; - return CAIRO_STATUS_SUCCESS; - } - - _cairo_gstate_user_to_backend (gstate, &x, &y); - - _cairo_traps_init (&traps); - - status = _cairo_path_fixed_stroke_to_traps (path, - &gstate->stroke_style, - &gstate->ctm, - &gstate->ctm_inverse, - gstate->tolerance, - &traps); - if (status) - goto BAIL; - - *inside_ret = _cairo_traps_contain (&traps, x, y); - -BAIL: - _cairo_traps_fini (&traps); - - return status; -} - -cairo_status_t -_cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path) -{ - cairo_status_t status; - cairo_pattern_union_t pattern; - - if (gstate->source->status) - return gstate->source->status; - - status = _cairo_surface_set_clip (gstate->target, &gstate->clip); - if (status) - return status; - - status = _cairo_gstate_copy_transformed_source (gstate, &pattern.base); - if (status) - return status; - - status = _cairo_surface_fill (gstate->target, - gstate->op, - &pattern.base, - path, - gstate->fill_rule, - gstate->tolerance, - gstate->antialias); - - _cairo_pattern_fini (&pattern.base); - - return status; -} - -cairo_status_t -_cairo_gstate_in_fill (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double x, - double y, - cairo_bool_t *inside_ret) -{ - cairo_status_t status; - cairo_traps_t traps; - - _cairo_gstate_user_to_backend (gstate, &x, &y); - - _cairo_traps_init (&traps); - - status = _cairo_path_fixed_fill_to_traps (path, - gstate->fill_rule, - gstate->tolerance, - &traps); - if (status) - goto BAIL; - - *inside_ret = _cairo_traps_contain (&traps, x, y); - -BAIL: - _cairo_traps_fini (&traps); - - return status; -} - -cairo_status_t -_cairo_gstate_copy_page (cairo_gstate_t *gstate) -{ - cairo_surface_copy_page (gstate->target); - return cairo_surface_status (gstate->target); -} - -cairo_status_t -_cairo_gstate_show_page (cairo_gstate_t *gstate) -{ - cairo_surface_show_page (gstate->target); - return cairo_surface_status (gstate->target); -} - -static void -_cairo_gstate_traps_extents_to_user_rectangle (cairo_gstate_t *gstate, - cairo_traps_t *traps, - double *x1, double *y1, - double *x2, double *y2) -{ - cairo_box_t extents; - - if (traps->num_traps == 0) { - /* no traps, so we actually won't draw anything */ - if (x1) - *x1 = 0.0; - if (y1) - *y1 = 0.0; - if (x2) - *x2 = 0.0; - if (y2) - *y2 = 0.0; - } else { - _cairo_traps_extents (traps, &extents); - - if (x1) - *x1 = _cairo_fixed_to_double (extents.p1.x); - if (y1) - *y1 = _cairo_fixed_to_double (extents.p1.y); - if (x2) - *x2 = _cairo_fixed_to_double (extents.p2.x); - if (y2) - *y2 = _cairo_fixed_to_double (extents.p2.y); - - _cairo_gstate_backend_to_user_rectangle (gstate, x1, y1, x2, y2, NULL); - } -} - -cairo_status_t -_cairo_gstate_stroke_extents (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2) -{ - cairo_status_t status; - cairo_traps_t traps; - - if (gstate->stroke_style.line_width <= 0.0) { - if (x1) - *x1 = 0.0; - if (y1) - *y1 = 0.0; - if (x2) - *x2 = 0.0; - if (y2) - *y2 = 0.0; - return CAIRO_STATUS_SUCCESS; - } - - _cairo_traps_init (&traps); - - status = _cairo_path_fixed_stroke_to_traps (path, - &gstate->stroke_style, - &gstate->ctm, - &gstate->ctm_inverse, - gstate->tolerance, - &traps); - if (status == CAIRO_STATUS_SUCCESS) { - _cairo_gstate_traps_extents_to_user_rectangle(gstate, &traps, x1, y1, x2, y2); - } - - _cairo_traps_fini (&traps); - - return status; -} - -cairo_status_t -_cairo_gstate_fill_extents (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2) -{ - cairo_status_t status; - cairo_traps_t traps; - - _cairo_traps_init (&traps); - - status = _cairo_path_fixed_fill_to_traps (path, - gstate->fill_rule, - gstate->tolerance, - &traps); - if (status == CAIRO_STATUS_SUCCESS) { - _cairo_gstate_traps_extents_to_user_rectangle(gstate, &traps, x1, y1, x2, y2); - } - - _cairo_traps_fini (&traps); - - return status; -} - -cairo_status_t -_cairo_gstate_reset_clip (cairo_gstate_t *gstate) -{ - _cairo_clip_reset (&gstate->clip); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_clip (cairo_gstate_t *gstate, cairo_path_fixed_t *path) -{ - return _cairo_clip_clip (&gstate->clip, - path, gstate->fill_rule, gstate->tolerance, - gstate->antialias, gstate->target); -} - -cairo_status_t -_cairo_gstate_clip_extents (cairo_gstate_t *gstate, - double *x1, - double *y1, - double *x2, - double *y2) -{ - cairo_rectangle_int_t extents; - cairo_status_t status; - - status = _cairo_surface_get_extents (gstate->target, &extents); - if (status) - return status; - - status = _cairo_clip_intersect_to_rectangle (&gstate->clip, &extents); - if (status) - return status; - - if (x1) - *x1 = extents.x; - if (y1) - *y1 = extents.y; - if (x2) - *x2 = extents.x + extents.width; - if (y2) - *y2 = extents.y + extents.height; - - _cairo_gstate_backend_to_user_rectangle (gstate, x1, y1, x2, y2, NULL); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_rectangle_list_t* -_cairo_gstate_copy_clip_rectangle_list (cairo_gstate_t *gstate) -{ - return _cairo_clip_copy_rectangle_list (&gstate->clip, gstate); -} - -static void -_cairo_gstate_unset_scaled_font (cairo_gstate_t *gstate) -{ - if (gstate->scaled_font) { - cairo_scaled_font_destroy (gstate->scaled_font); - gstate->scaled_font = NULL; - } -} - -cairo_status_t -_cairo_gstate_select_font_face (cairo_gstate_t *gstate, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight) -{ - cairo_font_face_t *font_face; - cairo_status_t status; - - font_face = _cairo_toy_font_face_create (family, slant, weight); - if (font_face->status) - return font_face->status; - - status = _cairo_gstate_set_font_face (gstate, font_face); - cairo_font_face_destroy (font_face); - - return status; -} - -cairo_status_t -_cairo_gstate_set_font_size (cairo_gstate_t *gstate, - double size) -{ - _cairo_gstate_unset_scaled_font (gstate); - - cairo_matrix_init_scale (&gstate->font_matrix, size, size); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_set_font_matrix (cairo_gstate_t *gstate, - const cairo_matrix_t *matrix) -{ - if (! _cairo_matrix_is_invertible (matrix)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - _cairo_gstate_unset_scaled_font (gstate); - - gstate->font_matrix = *matrix; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_gstate_get_font_matrix (cairo_gstate_t *gstate, - cairo_matrix_t *matrix) -{ - *matrix = gstate->font_matrix; -} - -void -_cairo_gstate_set_font_options (cairo_gstate_t *gstate, - const cairo_font_options_t *options) -{ - _cairo_gstate_unset_scaled_font (gstate); - - _cairo_font_options_init_copy (&gstate->font_options, options); -} - -void -_cairo_gstate_get_font_options (cairo_gstate_t *gstate, - cairo_font_options_t *options) -{ - *options = gstate->font_options; -} - -cairo_status_t -_cairo_gstate_get_font_face (cairo_gstate_t *gstate, - cairo_font_face_t **font_face) -{ - cairo_status_t status; - - status = _cairo_gstate_ensure_font_face (gstate); - if (status) - return status; - - *font_face = gstate->font_face; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_get_scaled_font (cairo_gstate_t *gstate, - cairo_scaled_font_t **scaled_font) -{ - cairo_status_t status; - - status = _cairo_gstate_ensure_scaled_font (gstate); - if (status) - return status; - - *scaled_font = gstate->scaled_font; - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Like everything else in this file, fonts involve Too Many Coordinate Spaces; - * it is easy to get confused about what's going on. - * - * The user's view - * --------------- - * - * Users ask for things in user space. When cairo starts, a user space unit - * is about 1/96 inch, which is similar to (but importantly different from) - * the normal "point" units most users think in terms of. When a user - * selects a font, its scale is set to "one user unit". The user can then - * independently scale the user coordinate system *or* the font matrix, in - * order to adjust the rendered size of the font. - * - * Metrics are returned in user space, whether they are obtained from - * the currently selected font in a #cairo_t or from a #cairo_scaled_font_t - * which is a font specialized to a particular scale matrix, CTM, and target - * surface. - * - * The font's view - * --------------- - * - * Fonts are designed and stored (in say .ttf files) in "font space", which - * describes an "EM Square" (a design tile) and has some abstract number - * such as 1000, 1024, or 2048 units per "EM". This is basically an - * uninteresting space for us, but we need to remember that it exists. - * - * Font resources (from libraries or operating systems) render themselves - * to a particular device. Since they do not want to make most programmers - * worry about the font design space, the scaling API is simplified to - * involve just telling the font the required pixel size of the EM square - * (that is, in device space). - * - * - * Cairo's gstate view - * ------------------- - * - * In addition to the CTM and CTM inverse, we keep a matrix in the gstate - * called the "font matrix" which describes the user's most recent - * font-scaling or font-transforming request. This is kept in terms of an - * abstract scale factor, composed with the CTM and used to set the font's - * pixel size. So if the user asks to "scale the font by 12", the matrix - * is: - * - * [ 12.0, 0.0, 0.0, 12.0, 0.0, 0.0 ] - * - * It is an affine matrix, like all cairo matrices, where its tx and ty - * components are used to "nudging" fonts around and are handled in gstate - * and then ignored by the "scaled-font" layer. - * - * In order to perform any action on a font, we must build an object - * called a #cairo_font_scale_t; this contains the central 2x2 matrix - * resulting from "font matrix * CTM" (sans the font matrix translation - * components as stated in the previous paragraph). - * - * We pass this to the font when making requests of it, which causes it to - * reply for a particular [user request, device] combination, under the CTM - * (to accommodate the "zoom in" == "bigger fonts" issue above). - * - * The other terms in our communication with the font are therefore in - * device space. When we ask it to perform text->glyph conversion, it will - * produce a glyph string in device space. Glyph vectors we pass to it for - * measuring or rendering should be in device space. The metrics which we - * get back from the font will be in device space. The contents of the - * global glyph image cache will be in device space. - * - * - * Cairo's public view - * ------------------- - * - * Since the values entering and leaving via public API calls are in user - * space, the gstate functions typically need to multiply arguments by the - * CTM (for user-input glyph vectors), and return values by the CTM inverse - * (for font responses such as metrics or glyph vectors). - * - */ - -static cairo_status_t -_cairo_gstate_ensure_font_face (cairo_gstate_t *gstate) -{ - cairo_font_face_t *font_face; - - if (gstate->font_face != NULL) - return gstate->font_face->status; - - - font_face = _cairo_toy_font_face_create (CAIRO_FONT_FAMILY_DEFAULT, - CAIRO_FONT_SLANT_DEFAULT, - CAIRO_FONT_WEIGHT_DEFAULT); - if (font_face->status) - return font_face->status; - - gstate->font_face = font_face; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_gstate_ensure_scaled_font (cairo_gstate_t *gstate) -{ - cairo_status_t status; - cairo_font_options_t options; - cairo_scaled_font_t *scaled_font; - - if (gstate->scaled_font != NULL) - return gstate->scaled_font->status; - - status = _cairo_gstate_ensure_font_face (gstate); - if (status) - return status; - - cairo_surface_get_font_options (gstate->target, &options); - cairo_font_options_merge (&options, &gstate->font_options); - - scaled_font = cairo_scaled_font_create (gstate->font_face, - &gstate->font_matrix, - &gstate->ctm, - &options); - - status = cairo_scaled_font_status (scaled_font); - if (status) - return status; - - gstate->scaled_font = scaled_font; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_get_font_extents (cairo_gstate_t *gstate, - cairo_font_extents_t *extents) -{ - cairo_status_t status = _cairo_gstate_ensure_scaled_font (gstate); - if (status) - return status; - - cairo_scaled_font_extents (gstate->scaled_font, extents); - - return cairo_scaled_font_status (gstate->scaled_font); -} - -cairo_status_t -_cairo_gstate_text_to_glyphs (cairo_gstate_t *gstate, - const char *utf8, - double x, - double y, - cairo_glyph_t **glyphs, - int *num_glyphs) -{ - cairo_status_t status; - - status = _cairo_gstate_ensure_scaled_font (gstate); - if (status) - return status; - - return _cairo_scaled_font_text_to_glyphs (gstate->scaled_font, x, y, - utf8, glyphs, num_glyphs); -} - -cairo_status_t -_cairo_gstate_set_font_face (cairo_gstate_t *gstate, - cairo_font_face_t *font_face) -{ - if (font_face && font_face->status) - return font_face->status; - - if (font_face != gstate->font_face) { - cairo_font_face_destroy (gstate->font_face); - gstate->font_face = cairo_font_face_reference (font_face); - } - - _cairo_gstate_unset_scaled_font (gstate); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_gstate_glyph_extents (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents) -{ - cairo_status_t status; - - status = _cairo_gstate_ensure_scaled_font (gstate); - if (status) - return status; - - cairo_scaled_font_glyph_extents (gstate->scaled_font, - glyphs, num_glyphs, - extents); - - return cairo_scaled_font_status (gstate->scaled_font); -} - -cairo_status_t -_cairo_gstate_show_glyphs (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs) -{ - cairo_status_t status; - cairo_pattern_union_t source_pattern; - cairo_glyph_t *transformed_glyphs; - cairo_glyph_t stack_transformed_glyphs[CAIRO_STACK_ARRAY_LENGTH (cairo_glyph_t)]; - - if (gstate->source->status) - return gstate->source->status; - - status = _cairo_surface_set_clip (gstate->target, &gstate->clip); - if (status) - return status; - - status = _cairo_gstate_ensure_scaled_font (gstate); - if (status) - return status; - - if (num_glyphs <= ARRAY_LENGTH (stack_transformed_glyphs)) { - transformed_glyphs = stack_transformed_glyphs; - } else { - transformed_glyphs = _cairo_malloc_ab (num_glyphs, sizeof(cairo_glyph_t)); - if (transformed_glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - _cairo_gstate_transform_glyphs_to_backend (gstate, glyphs, num_glyphs, - transformed_glyphs); - - status = _cairo_gstate_copy_transformed_source (gstate, &source_pattern.base); - if (status) - goto CLEANUP_GLYPHS; - - status = _cairo_surface_show_glyphs (gstate->target, - gstate->op, - &source_pattern.base, - transformed_glyphs, - num_glyphs, - gstate->scaled_font); - - _cairo_pattern_fini (&source_pattern.base); - -CLEANUP_GLYPHS: - if (transformed_glyphs != stack_transformed_glyphs) - free (transformed_glyphs); - - return status; -} - -cairo_status_t -_cairo_gstate_glyph_path (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_path_fixed_t *path) -{ - cairo_status_t status; - cairo_glyph_t *transformed_glyphs; - cairo_glyph_t stack_transformed_glyphs[CAIRO_STACK_ARRAY_LENGTH (cairo_glyph_t)]; - - status = _cairo_gstate_ensure_scaled_font (gstate); - if (status) - return status; - - if (num_glyphs < ARRAY_LENGTH (stack_transformed_glyphs)) - transformed_glyphs = stack_transformed_glyphs; - else - transformed_glyphs = _cairo_malloc_ab (num_glyphs, sizeof(cairo_glyph_t)); - if (transformed_glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_gstate_transform_glyphs_to_backend (gstate, glyphs, num_glyphs, - transformed_glyphs); - - CAIRO_MUTEX_LOCK (gstate->scaled_font->mutex); - status = _cairo_scaled_font_glyph_path (gstate->scaled_font, - transformed_glyphs, num_glyphs, - path); - CAIRO_MUTEX_UNLOCK (gstate->scaled_font->mutex); - - if (transformed_glyphs != stack_transformed_glyphs) - free (transformed_glyphs); - - return status; -} - -cairo_status_t -_cairo_gstate_set_antialias (cairo_gstate_t *gstate, - cairo_antialias_t antialias) -{ - gstate->antialias = antialias; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_antialias_t -_cairo_gstate_get_antialias (cairo_gstate_t *gstate) -{ - return gstate->antialias; -} - -/** - * _cairo_gstate_transform_glyphs_to_backend: - * @gstate: a #cairo_gstate_t - * @glyphs: the array of #cairo_glyph_t objects to be transformed - * @num_glyphs: the number of elements in @glyphs - * @transformed_glyphs: a pre-allocated array of at least @num_glyphs - * #cairo_glyph_t objects - * - * Transform an array of glyphs to backend space by first adding the offset - * of the font matrix, then transforming from user space to backend space. - * The result of the transformation is placed in @transformed_glyphs. - **/ -static void -_cairo_gstate_transform_glyphs_to_backend (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_glyph_t *transformed_glyphs) -{ - int i; - cairo_matrix_t *ctm = &gstate->ctm; - cairo_matrix_t *device_transform = &gstate->target->device_transform; - - if (_cairo_matrix_is_identity (ctm) && - _cairo_matrix_is_identity (device_transform) && - gstate->font_matrix.x0 == 0 && gstate->font_matrix.y0 == 0) - { - memcpy (transformed_glyphs, glyphs, num_glyphs * sizeof (cairo_glyph_t)); - } - else if (_cairo_matrix_is_translation (ctm) && - _cairo_matrix_is_translation (device_transform)) - { - double tx = gstate->font_matrix.x0 + ctm->x0 + device_transform->x0; - double ty = gstate->font_matrix.y0 + ctm->y0 + device_transform->y0; - - for (i = 0; i < num_glyphs; i++) - { - transformed_glyphs[i].index = glyphs[i].index; - transformed_glyphs[i].x = glyphs[i].x + tx; - transformed_glyphs[i].y = glyphs[i].y + ty; - } - } - else - { - cairo_matrix_t aggregate_transform; - - cairo_matrix_init_translate (&aggregate_transform, - gstate->font_matrix.x0, - gstate->font_matrix.y0); - cairo_matrix_multiply (&aggregate_transform, - &aggregate_transform, ctm); - cairo_matrix_multiply (&aggregate_transform, - &aggregate_transform, device_transform); - - for (i = 0; i < num_glyphs; i++) - { - transformed_glyphs[i] = glyphs[i]; - cairo_matrix_transform_point (&aggregate_transform, - &transformed_glyphs[i].x, - &transformed_glyphs[i].y); - } - } -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-gstate-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-gstate-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-gstate-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-gstate-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_GSTATE_PRIVATE_H -#define CAIRO_GSTATE_PRIVATE_H - -#include "cairo-clip-private.h" - -struct _cairo_gstate { - cairo_operator_t op; - - double tolerance; - cairo_antialias_t antialias; - - cairo_stroke_style_t stroke_style; - - cairo_fill_rule_t fill_rule; - - cairo_font_face_t *font_face; - cairo_scaled_font_t *scaled_font; /* Specific to the current CTM */ - cairo_matrix_t font_matrix; - cairo_font_options_t font_options; - - cairo_clip_t clip; - - cairo_surface_t *target; /* The target to which all rendering is directed */ - cairo_surface_t *parent_target; /* The previous target which was receiving rendering */ - cairo_surface_t *original_target; /* The original target the initial gstate was created with */ - - cairo_matrix_t ctm; - cairo_matrix_t ctm_inverse; - cairo_matrix_t source_ctm_inverse; /* At the time ->source was set */ - - cairo_pattern_t *source; - - struct _cairo_gstate *next; -}; - -#endif /* CAIRO_GSTATE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,1947 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_H -#define CAIRO_H - -#include "cairo-embed.h" - -#include -#include - -CAIRO_BEGIN_DECLS - -#define CAIRO_VERSION_ENCODE(major, minor, micro) ( \ - ((major) * 10000) \ - + ((minor) * 100) \ - + ((micro) * 1)) - -#define CAIRO_VERSION CAIRO_VERSION_ENCODE( \ - CAIRO_VERSION_MAJOR, \ - CAIRO_VERSION_MINOR, \ - CAIRO_VERSION_MICRO) - -cairo_public int -cairo_version (void); - -cairo_public const char* -cairo_version_string (void); - -/** - * cairo_bool_t: - * - * #cairo_bool_t is used for boolean values. Returns of type - * #cairo_bool_t will always be either 0 or 1, but testing against - * these values explicitly is not encouraged; just use the - * value as a boolean condition. - * - * - * if (cairo_in_stroke (cr, x, y)) { - * /* do something */ - * } - * - **/ -typedef int cairo_bool_t; - -/** - * cairo_t: - * - * A #cairo_t contains the current state of the rendering device, - * including coordinates of yet to be drawn shapes. - * - * Cairo contexts, as #cairo_t objects are named, are central to - * cairo and all drawing with cairo is always done to a #cairo_t - * object. - * - * Memory management of #cairo_t is done with - * cairo_reference() and cairo_destroy(). - **/ -typedef struct _cairo cairo_t; - -/** - * cairo_surface_t: - * - * A #cairo_surface_t represents an image, either as the destination - * of a drawing operation or as source when drawing onto another - * surface. To draw to a #cairo_surface_t, create a cairo context - * with the surface as the target, using cairo_create(). - * - * There are different subtypes of #cairo_surface_t for - * different drawing backends; for example, cairo_image_surface_create() - * creates a bitmap image in memory. - * The type of a surface can be queried with cairo_surface_get_type(). - * - * Memory management of #cairo_surface_t is done with - * cairo_surface_reference() and cairo_surface_destroy(). - **/ -typedef struct _cairo_surface cairo_surface_t; - -/** - * cairo_matrix_t: - * @xx: xx component of the affine transformation - * @yx: yx component of the affine transformation - * @xy: xy component of the affine transformation - * @yy: yy component of the affine transformation - * @x0: X translation component of the affine transformation - * @y0: Y translation component of the affine transformation - * - * A #cairo_matrix_t holds an affine transformation, such as a scale, - * rotation, shear, or a combination of those. The transformation of - * a point (x, y) is given by: - * - * x_new = xx * x + xy * y + x0; - * y_new = yx * x + yy * y + y0; - * - **/ -typedef struct _cairo_matrix { - double xx; double yx; - double xy; double yy; - double x0; double y0; -} cairo_matrix_t; - -/** - * cairo_pattern_t: - * - * A #cairo_pattern_t represents a source when drawing onto a - * surface. There are different subtypes of #cairo_pattern_t, - * for different types of sources; for example, - * cairo_pattern_create_rgb() creates a pattern for a solid - * opaque color. - * - * Other than various cairo_pattern_create_type() - * functions, some of the pattern types can be implicitly created - * using various cairo_set_source_type() functions; - * for example cairo_set_source_rgb(). - * - * The type of a pattern can be queried with cairo_pattern_get_type(). - * - * Memory management of #cairo_pattern_t is done with - * cairo_pattern_reference() and cairo_pattern_destroy(). - **/ -typedef struct _cairo_pattern cairo_pattern_t; - -/** - * cairo_destroy_func_t: - * @data: The data element being destroyed. - * - * #cairo_destroy_func_t the type of function which is called when a - * data element is destroyed. It is passed the pointer to the data - * element and should free any memory and resources allocated for it. - **/ -typedef void (*cairo_destroy_func_t) (void *data); - -/** - * cairo_user_data_key_t: - * @unused: not used; ignore. - * - * #cairo_user_data_key_t is used for attaching user data to cairo - * data structures. The actual contents of the struct is never used, - * and there is no need to initialize the object; only the unique - * address of a #cairo_data_key_t object is used. Typically, you - * would just use the address of a static #cairo_data_key_t object. - **/ -typedef struct _cairo_user_data_key { - int unused; -} cairo_user_data_key_t; - -/** - * cairo_status_t: - * @CAIRO_STATUS_SUCCESS: no error has occurred - * @CAIRO_STATUS_NO_MEMORY: out of memory - * @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching cairo_save() - * @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop - * @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined - * @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible) - * @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t - * @CAIRO_STATUS_NULL_POINTER: %NULL pointer - * @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8 - * @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid - * @CAIRO_STATUS_READ_ERROR: error while reading from input stream - * @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream - * @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished - * @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate for the operation - * @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate for the operation - * @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content_t - * @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t - * @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual* - * @CAIRO_STATUS_FILE_NOT_FOUND: file not found - * @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting - * @CAIRO_STATUS_INVALID_DSC_COMMENT: invalid value for a DSC comment (Since 1.2) - * @CAIRO_STATUS_INVALID_INDEX: invalid index passed to getter (Since 1.4) - * @CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: clip region not representable in desired format (Since 1.4) - * @CAIRO_STATUS_TEMP_FILE_ERROR: error creating or writing to a temporary file (Since 1.6) - * @CAIRO_STATUS_INVALID_STRIDE: invalid value for stride (Since 1.6) - * - * #cairo_status_t is used to indicate errors that can occur when - * using Cairo. In some cases it is returned directly by functions. - * but when using #cairo_t, the last error, if any, is stored in - * the context and can be retrieved with cairo_status(). - * - * New entries may be added in future versions. Use cairo_status_to_string() - * to get a human-readable representation of an error message. - **/ -typedef enum _cairo_status { - CAIRO_STATUS_SUCCESS = 0, - CAIRO_STATUS_NO_MEMORY, - CAIRO_STATUS_INVALID_RESTORE, - CAIRO_STATUS_INVALID_POP_GROUP, - CAIRO_STATUS_NO_CURRENT_POINT, - CAIRO_STATUS_INVALID_MATRIX, - CAIRO_STATUS_INVALID_STATUS, - CAIRO_STATUS_NULL_POINTER, - CAIRO_STATUS_INVALID_STRING, - CAIRO_STATUS_INVALID_PATH_DATA, - CAIRO_STATUS_READ_ERROR, - CAIRO_STATUS_WRITE_ERROR, - CAIRO_STATUS_SURFACE_FINISHED, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH, - CAIRO_STATUS_PATTERN_TYPE_MISMATCH, - CAIRO_STATUS_INVALID_CONTENT, - CAIRO_STATUS_INVALID_FORMAT, - CAIRO_STATUS_INVALID_VISUAL, - CAIRO_STATUS_FILE_NOT_FOUND, - CAIRO_STATUS_INVALID_DASH, - CAIRO_STATUS_INVALID_DSC_COMMENT, - CAIRO_STATUS_INVALID_INDEX, - CAIRO_STATUS_CLIP_NOT_REPRESENTABLE, - CAIRO_STATUS_TEMP_FILE_ERROR, - CAIRO_STATUS_INVALID_STRIDE - /* after adding a new error: update CAIRO_STATUS_LAST_STATUS in cairoint.h */ -} cairo_status_t; - -/** - * cairo_content_t: - * @CAIRO_CONTENT_COLOR: The surface will hold color content only. - * @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only. - * @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha content. - * - * #cairo_content_t is used to describe the content that a surface will - * contain, whether color information, alpha information (translucence - * vs. opacity), or both. - * - * Note: The large values here are designed to keep #cairo_content_t - * values distinct from #cairo_format_t values so that the - * implementation can detect the error if users confuse the two types. - **/ -typedef enum _cairo_content { - CAIRO_CONTENT_COLOR = 0x1000, - CAIRO_CONTENT_ALPHA = 0x2000, - CAIRO_CONTENT_COLOR_ALPHA = 0x3000 -} cairo_content_t; - -/** - * cairo_write_func_t: - * @closure: the output closure - * @data: the buffer containing the data to write - * @length: the amount of data to write - * - * #cairo_write_func_t is the type of function which is called when a - * backend needs to write data to an output stream. It is passed the - * closure which was specified by the user at the time the write - * function was registered, the data to write and the length of the - * data in bytes. The write function should return - * CAIRO_STATUS_SUCCESS if all the data was successfully written, - * CAIRO_STATUS_WRITE_ERROR otherwise. - * - * Returns: the status code of the write operation - **/ -typedef cairo_status_t (*cairo_write_func_t) (void *closure, - const unsigned char *data, - unsigned int length); - -/** - * cairo_read_func_t: - * @closure: the input closure - * @data: the buffer into which to read the data - * @length: the amount of data to read - * - * #cairo_read_func_t is the type of function which is called when a - * backend needs to read data from an input stream. It is passed the - * closure which was specified by the user at the time the read - * function was registered, the buffer to read the data into and the - * length of the data in bytes. The read function should return - * CAIRO_STATUS_SUCCESS if all the data was successfully read, - * CAIRO_STATUS_READ_ERROR otherwise. - * - * Returns: the status code of the read operation - **/ -typedef cairo_status_t (*cairo_read_func_t) (void *closure, - unsigned char *data, - unsigned int length); - -/* Functions for manipulating state objects */ -cairo_public cairo_t * -cairo_create (cairo_surface_t *target); - -cairo_public cairo_t * -cairo_reference (cairo_t *cr); - -cairo_public void -cairo_destroy (cairo_t *cr); - -cairo_public unsigned int -cairo_get_reference_count (cairo_t *cr); - -cairo_public void * -cairo_get_user_data (cairo_t *cr, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_set_user_data (cairo_t *cr, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_save (cairo_t *cr); - -cairo_public void -cairo_restore (cairo_t *cr); - -cairo_public void -cairo_push_group (cairo_t *cr); - -cairo_public void -cairo_push_group_with_content (cairo_t *cr, cairo_content_t content); - -cairo_public cairo_pattern_t * -cairo_pop_group (cairo_t *cr); - -cairo_public void -cairo_pop_group_to_source (cairo_t *cr); - -/* Modify state */ - -/** - * cairo_operator_t: - * @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded) - * @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded) - * @CAIRO_OPERATOR_OVER: draw source layer on top of destination layer - * (bounded) - * @CAIRO_OPERATOR_IN: draw source where there was destination content - * (unbounded) - * @CAIRO_OPERATOR_OUT: draw source where there was no destination - * content (unbounded) - * @CAIRO_OPERATOR_ATOP: draw source on top of destination content and - * only there - * @CAIRO_OPERATOR_DEST: ignore the source - * @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source - * @CAIRO_OPERATOR_DEST_IN: leave destination only where there was - * source content (unbounded) - * @CAIRO_OPERATOR_DEST_OUT: leave destination only where there was no - * source content - * @CAIRO_OPERATOR_DEST_ATOP: leave destination on top of source content - * and only there (unbounded) - * @CAIRO_OPERATOR_XOR: source and destination are shown where there is only - * one of them - * @CAIRO_OPERATOR_ADD: source and destination layers are accumulated - * @CAIRO_OPERATOR_SATURATE: like over, but assuming source and dest are - * disjoint geometries - * - * #cairo_operator_t is used to set the compositing operator for all cairo - * drawing operations. - * - * The default operator is %CAIRO_OPERATOR_OVER. - * - * The operators marked as unbounded modify their - * destination even outside of the mask layer (that is, their effect is not - * bound by the mask layer). However, their effect can still be limited by - * way of clipping. - * - * To keep things simple, the operator descriptions here - * document the behavior for when both source and destination are either fully - * transparent or fully opaque. The actual implementation works for - * translucent layers too. - * For a more detailed explanation of the effects of each operator, including - * the mathematical definitions, see - * http://cairographics.org/operators/. - **/ -typedef enum _cairo_operator { - CAIRO_OPERATOR_CLEAR, - - CAIRO_OPERATOR_SOURCE, - CAIRO_OPERATOR_OVER, - CAIRO_OPERATOR_IN, - CAIRO_OPERATOR_OUT, - CAIRO_OPERATOR_ATOP, - - CAIRO_OPERATOR_DEST, - CAIRO_OPERATOR_DEST_OVER, - CAIRO_OPERATOR_DEST_IN, - CAIRO_OPERATOR_DEST_OUT, - CAIRO_OPERATOR_DEST_ATOP, - - CAIRO_OPERATOR_XOR, - CAIRO_OPERATOR_ADD, - CAIRO_OPERATOR_SATURATE -} cairo_operator_t; - -cairo_public void -cairo_set_operator (cairo_t *cr, cairo_operator_t op); - -cairo_public void -cairo_set_source (cairo_t *cr, cairo_pattern_t *source); - -cairo_public void -cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue); - -cairo_public void -cairo_set_source_rgba (cairo_t *cr, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_set_source_surface (cairo_t *cr, - cairo_surface_t *surface, - double x, - double y); - -cairo_public void -cairo_set_tolerance (cairo_t *cr, double tolerance); - -/** - * cairo_antialias_t: - * @CAIRO_ANTIALIAS_DEFAULT: Use the default antialiasing for - * the subsystem and target device - * @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask - * @CAIRO_ANTIALIAS_GRAY: Perform single-color antialiasing (using - * shades of gray for black text on a white background, for example). - * @CAIRO_ANTIALIAS_SUBPIXEL: Perform antialiasing by taking - * advantage of the order of subpixel elements on devices - * such as LCD panels - * - * Specifies the type of antialiasing to do when rendering text or shapes. - **/ -typedef enum _cairo_antialias { - CAIRO_ANTIALIAS_DEFAULT, - CAIRO_ANTIALIAS_NONE, - CAIRO_ANTIALIAS_GRAY, - CAIRO_ANTIALIAS_SUBPIXEL -} cairo_antialias_t; - -cairo_public void -cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias); - -/** - * cairo_fill_rule_t: - * @CAIRO_FILL_RULE_WINDING: If the path crosses the ray from - * left-to-right, counts +1. If the path crosses the ray - * from right to left, counts -1. (Left and right are determined - * from the perspective of looking along the ray from the starting - * point.) If the total count is non-zero, the point will be filled. - * @CAIRO_FILL_RULE_EVEN_ODD: Counts the total number of - * intersections, without regard to the orientation of the contour. If - * the total number of intersections is odd, the point will be - * filled. - * - * #cairo_fill_rule_t is used to select how paths are filled. For both - * fill rules, whether or not a point is included in the fill is - * determined by taking a ray from that point to infinity and looking - * at intersections with the path. The ray can be in any direction, - * as long as it doesn't pass through the end point of a segment - * or have a tricky intersection such as intersecting tangent to the path. - * (Note that filling is not actually implemented in this way. This - * is just a description of the rule that is applied.) - * - * The default fill rule is %CAIRO_FILL_RULE_WINDING. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_fill_rule { - CAIRO_FILL_RULE_WINDING, - CAIRO_FILL_RULE_EVEN_ODD -} cairo_fill_rule_t; - -cairo_public void -cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule); - -cairo_public void -cairo_set_line_width (cairo_t *cr, double width); - -/** - * cairo_line_cap_t: - * @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) point - * @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is the end point - * @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is the end point - * - * Specifies how to render the endpoints of the path when stroking. - * - * The default line cap style is %CAIRO_LINE_CAP_BUTT. - **/ -typedef enum _cairo_line_cap { - CAIRO_LINE_CAP_BUTT, - CAIRO_LINE_CAP_ROUND, - CAIRO_LINE_CAP_SQUARE -} cairo_line_cap_t; - -cairo_public void -cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap); - -/** - * cairo_line_join_t: - * @CAIRO_LINE_JOIN_MITER: use a sharp (angled) corner, see - * cairo_set_miter_limit() - * @CAIRO_LINE_JOIN_ROUND: use a rounded join, the center of the circle is the - * joint point - * @CAIRO_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half - * the line width from the joint point - * - * Specifies how to render the junction of two lines when stroking. - * - * The default line join style is %CAIRO_LINE_JOIN_MITER. - **/ -typedef enum _cairo_line_join { - CAIRO_LINE_JOIN_MITER, - CAIRO_LINE_JOIN_ROUND, - CAIRO_LINE_JOIN_BEVEL -} cairo_line_join_t; - -cairo_public void -cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join); - -cairo_public void -cairo_set_dash (cairo_t *cr, - const double *dashes, - int num_dashes, - double offset); - -cairo_public void -cairo_set_miter_limit (cairo_t *cr, double limit); - -cairo_public void -cairo_translate (cairo_t *cr, double tx, double ty); - -cairo_public void -cairo_scale (cairo_t *cr, double sx, double sy); - -cairo_public void -cairo_rotate (cairo_t *cr, double angle); - -cairo_public void -cairo_transform (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_set_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_identity_matrix (cairo_t *cr); - -cairo_public void -cairo_user_to_device (cairo_t *cr, double *x, double *y); - -cairo_public void -cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy); - -cairo_public void -cairo_device_to_user (cairo_t *cr, double *x, double *y); - -cairo_public void -cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy); - -/* Path creation functions */ -cairo_public void -cairo_new_path (cairo_t *cr); - -cairo_public void -cairo_move_to (cairo_t *cr, double x, double y); - -cairo_public void -cairo_new_sub_path (cairo_t *cr); - -cairo_public void -cairo_line_to (cairo_t *cr, double x, double y); - -cairo_public void -cairo_curve_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double x3, double y3); - -cairo_public void -cairo_arc (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2); - -cairo_public void -cairo_arc_negative (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2); - -/* XXX: NYI -cairo_public void -cairo_arc_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double radius); -*/ - -cairo_public void -cairo_rel_move_to (cairo_t *cr, double dx, double dy); - -cairo_public void -cairo_rel_line_to (cairo_t *cr, double dx, double dy); - -cairo_public void -cairo_rel_curve_to (cairo_t *cr, - double dx1, double dy1, - double dx2, double dy2, - double dx3, double dy3); - -cairo_public void -cairo_rectangle (cairo_t *cr, - double x, double y, - double width, double height); - -/* XXX: NYI -cairo_public void -cairo_stroke_to_path (cairo_t *cr); -*/ - -cairo_public void -cairo_close_path (cairo_t *cr); - -cairo_public void -cairo_path_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/* Painting functions */ -cairo_public void -cairo_paint (cairo_t *cr); - -cairo_public void -cairo_paint_with_alpha (cairo_t *cr, - double alpha); - -cairo_public void -cairo_mask (cairo_t *cr, - cairo_pattern_t *pattern); - -cairo_public void -cairo_mask_surface (cairo_t *cr, - cairo_surface_t *surface, - double surface_x, - double surface_y); - -cairo_public void -cairo_stroke (cairo_t *cr); - -cairo_public void -cairo_stroke_preserve (cairo_t *cr); - -cairo_public void -cairo_fill (cairo_t *cr); - -cairo_public void -cairo_fill_preserve (cairo_t *cr); - -cairo_public void -cairo_copy_page (cairo_t *cr); - -cairo_public void -cairo_show_page (cairo_t *cr); - -/* Insideness testing */ -cairo_public cairo_bool_t -cairo_in_stroke (cairo_t *cr, double x, double y); - -cairo_public cairo_bool_t -cairo_in_fill (cairo_t *cr, double x, double y); - -/* Rectangular extents */ -cairo_public void -cairo_stroke_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -cairo_public void -cairo_fill_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/* Clipping */ -cairo_public void -cairo_reset_clip (cairo_t *cr); - -cairo_public void -cairo_clip (cairo_t *cr); - -cairo_public void -cairo_clip_preserve (cairo_t *cr); - -cairo_public void -cairo_clip_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/** - * cairo_rectangle_t: - * @x: X coordinate of the left side of the rectangle - * @y: Y coordinate of the the top side of the rectangle - * @width: width of the rectangle - * @height: height of the rectangle - * - * A data structure for holding a rectangle. - * - * Since: 1.4 - **/ -typedef struct _cairo_rectangle { - double x, y, width, height; -} cairo_rectangle_t; - -/** - * cairo_rectangle_list_t: - * @status: Error status of the rectangle list - * @rectangles: Array containing the rectangles - * @num_rectangles: Number of rectangles in this list - * - * A data structure for holding a dynamically allocated - * array of rectangles. - * - * Since: 1.4 - **/ -typedef struct _cairo_rectangle_list { - cairo_status_t status; - cairo_rectangle_t *rectangles; - int num_rectangles; -} cairo_rectangle_list_t; - -cairo_public cairo_rectangle_list_t * -cairo_copy_clip_rectangle_list (cairo_t *cr); - -cairo_public void -cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); - -/* Font/Text functions */ - -/** - * cairo_scaled_font_t: - * - * A #cairo_scaled_font_t is a font scaled to a particular size and device - * resolution. A #cairo_scaled_font_t is most useful for low-level font - * usage where a library or application wants to cache a reference - * to a scaled font to speed up the computation of metrics. - * - * There are various types of scaled fonts, depending on the - * font backend they use. The type of a - * scaled font can be queried using cairo_scaled_font_get_type(). - * - * Memory management of #cairo_scaled_font_t is done with - * cairo_scaled_font_reference() and cairo_scaled_font_destroy(). - **/ -typedef struct _cairo_scaled_font cairo_scaled_font_t; - -/** - * cairo_font_face_t: - * - * A #cairo_font_face_t specifies all aspects of a font other - * than the size or font matrix (a font matrix is used to distort - * a font by sheering it or scaling it unequally in the two - * directions) . A font face can be set on a #cairo_t by using - * cairo_set_font_face(); the size and font matrix are set with - * cairo_set_font_size() and cairo_set_font_matrix(). - * - * There are various types of font faces, depending on the - * font backend they use. The type of a - * font face can be queried using cairo_font_face_get_type(). - * - * Memory management of #cairo_font_face_t is done with - * cairo_font_face_reference() and cairo_font_face_destroy(). - **/ -typedef struct _cairo_font_face cairo_font_face_t; - -/** - * cairo_glyph_t: - * @index: glyph index in the font. The exact interpretation of the - * glyph index depends on the font technology being used. - * @x: the offset in the X direction between the origin used for - * drawing or measuring the string and the origin of this glyph. - * @y: the offset in the Y direction between the origin used for - * drawing or measuring the string and the origin of this glyph. - * - * The #cairo_glyph_t structure holds information about a single glyph - * when drawing or measuring text. A font is (in simple terms) a - * collection of shapes used to draw text. A glyph is one of these - * shapes. There can be multiple glyphs for a single character - * (alternates to be used in different contexts, for example), or a - * glyph can be a ligature of multiple - * characters. Cairo doesn't expose any way of converting input text - * into glyphs, so in order to use the Cairo interfaces that take - * arrays of glyphs, you must directly access the appropriate - * underlying font system. - * - * Note that the offsets given by @x and @y are not cumulative. When - * drawing or measuring text, each glyph is individually positioned - * with respect to the overall origin - **/ -typedef struct { - unsigned long index; - double x; - double y; -} cairo_glyph_t; - -/** - * cairo_text_extents_t: - * @x_bearing: the horizontal distance from the origin to the - * leftmost part of the glyphs as drawn. Positive if the - * glyphs lie entirely to the right of the origin. - * @y_bearing: the vertical distance from the origin to the - * topmost part of the glyphs as drawn. Positive only if the - * glyphs lie completely below the origin; will usually be - * negative. - * @width: width of the glyphs as drawn - * @height: height of the glyphs as drawn - * @x_advance:distance to advance in the X direction - * after drawing these glyphs - * @y_advance: distance to advance in the Y direction - * after drawing these glyphs. Will typically be zero except - * for vertical text layout as found in East-Asian languages. - * - * The #cairo_text_extents_t structure stores the extents of a single - * glyph or a string of glyphs in user-space coordinates. Because text - * extents are in user-space coordinates, they are mostly, but not - * entirely, independent of the current transformation matrix. If you call - * cairo_scale(cr, 2.0, 2.0), text will - * be drawn twice as big, but the reported text extents will not be - * doubled. They will change slightly due to hinting (so you can't - * assume that metrics are independent of the transformation matrix), - * but otherwise will remain unchanged. - **/ -typedef struct { - double x_bearing; - double y_bearing; - double width; - double height; - double x_advance; - double y_advance; -} cairo_text_extents_t; - -/** - * cairo_font_extents_t: - * @ascent: the distance that the font extends above the baseline. - * Note that this is not always exactly equal to the maximum - * of the extents of all the glyphs in the font, but rather - * is picked to express the font designer's intent as to - * how the font should align with elements above it. - * @descent: the distance that the font extends below the baseline. - * This value is positive for typical fonts that include - * portions below the baseline. Note that this is not always - * exactly equal to the maximum of the extents of all the - * glyphs in the font, but rather is picked to express the - * font designer's intent as to how the the font should - * align with elements below it. - * @height: the recommended vertical distance between baselines when - * setting consecutive lines of text with the font. This - * is greater than @ascent+@descent by a - * quantity known as the line spacing - * or external leading. When space - * is at a premium, most fonts can be set with only - * a distance of @ascent+@descent between lines. - * @max_x_advance: the maximum distance in the X direction that - * the the origin is advanced for any glyph in the font. - * @max_y_advance: the maximum distance in the Y direction that - * the the origin is advanced for any glyph in the font. - * this will be zero for normal fonts used for horizontal - * writing. (The scripts of East Asia are sometimes written - * vertically.) - * - * The #cairo_font_extents_t structure stores metric information for - * a font. Values are given in the current user-space coordinate - * system. - * - * Because font metrics are in user-space coordinates, they are - * mostly, but not entirely, independent of the current transformation - * matrix. If you call cairo_scale(cr, 2.0, 2.0), - * text will be drawn twice as big, but the reported text extents will - * not be doubled. They will change slightly due to hinting (so you - * can't assume that metrics are independent of the transformation - * matrix), but otherwise will remain unchanged. - **/ -typedef struct { - double ascent; - double descent; - double height; - double max_x_advance; - double max_y_advance; -} cairo_font_extents_t; - -/** - * cairo_font_slant_t: - * @CAIRO_FONT_SLANT_NORMAL: Upright font style - * @CAIRO_FONT_SLANT_ITALIC: Italic font style - * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style - * - * Specifies variants of a font face based on their slant. - **/ -typedef enum _cairo_font_slant { - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_SLANT_ITALIC, - CAIRO_FONT_SLANT_OBLIQUE -} cairo_font_slant_t; - -/** - * cairo_font_weight_t: - * @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight - * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight - * - * Specifies variants of a font face based on their weight. - **/ -typedef enum _cairo_font_weight { - CAIRO_FONT_WEIGHT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD -} cairo_font_weight_t; - -/** - * cairo_subpixel_order_t: - * @CAIRO_SUBPIXEL_ORDER_DEFAULT: Use the default subpixel order for - * for the target device - * @CAIRO_SUBPIXEL_ORDER_RGB: Subpixel elements are arranged horizontally - * with red at the left - * @CAIRO_SUBPIXEL_ORDER_BGR: Subpixel elements are arranged horizontally - * with blue at the left - * @CAIRO_SUBPIXEL_ORDER_VRGB: Subpixel elements are arranged vertically - * with red at the top - * @CAIRO_SUBPIXEL_ORDER_VBGR: Subpixel elements are arranged vertically - * with blue at the top - * - * The subpixel order specifies the order of color elements within - * each pixel on the display device when rendering with an - * antialiasing mode of %CAIRO_ANTIALIAS_SUBPIXEL. - **/ -typedef enum _cairo_subpixel_order { - CAIRO_SUBPIXEL_ORDER_DEFAULT, - CAIRO_SUBPIXEL_ORDER_RGB, - CAIRO_SUBPIXEL_ORDER_BGR, - CAIRO_SUBPIXEL_ORDER_VRGB, - CAIRO_SUBPIXEL_ORDER_VBGR -} cairo_subpixel_order_t; - -/** - * cairo_hint_style_t: - * @CAIRO_HINT_STYLE_DEFAULT: Use the default hint style for - * font backend and target device - * @CAIRO_HINT_STYLE_NONE: Do not hint outlines - * @CAIRO_HINT_STYLE_SLIGHT: Hint outlines slightly to improve - * contrast while retaining good fidelity to the original - * shapes. - * @CAIRO_HINT_STYLE_MEDIUM: Hint outlines with medium strength - * giving a compromise between fidelity to the original shapes - * and contrast - * @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast - * - * Specifies the type of hinting to do on font outlines. Hinting - * is the process of fitting outlines to the pixel grid in order - * to improve the appearance of the result. Since hinting outlines - * involves distorting them, it also reduces the faithfulness - * to the original outline shapes. Not all of the outline hinting - * styles are supported by all font backends. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_hint_style { - CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_STYLE_NONE, - CAIRO_HINT_STYLE_SLIGHT, - CAIRO_HINT_STYLE_MEDIUM, - CAIRO_HINT_STYLE_FULL -} cairo_hint_style_t; - -/** - * cairo_hint_metrics_t: - * @CAIRO_HINT_METRICS_DEFAULT: Hint metrics in the default - * manner for the font backend and target device - * @CAIRO_HINT_METRICS_OFF: Do not hint font metrics - * @CAIRO_HINT_METRICS_ON: Hint font metrics - * - * Specifies whether to hint font metrics; hinting font metrics - * means quantizing them so that they are integer values in - * device space. Doing this improves the consistency of - * letter and line spacing, however it also means that text - * will be laid out differently at different zoom factors. - **/ -typedef enum _cairo_hint_metrics { - CAIRO_HINT_METRICS_DEFAULT, - CAIRO_HINT_METRICS_OFF, - CAIRO_HINT_METRICS_ON -} cairo_hint_metrics_t; - -/** - * cairo_font_options_t: - * - * An opaque structure holding all options that are used when - * rendering fonts. - * - * Individual features of a #cairo_font_options_t can be set or - * accessed using functions named - * cairo_font_options_set_feature_name and - * cairo_font_options_get_feature_name, like - * cairo_font_options_set_antialias() and - * cairo_font_options_get_antialias(). - * - * New features may be added to a #cairo_font_options_t in the - * future. For this reason, cairo_font_options_copy(), - * cairo_font_options_equal(), cairo_font_options_merge(), and - * cairo_font_options_hash() should be used to copy, check - * for equality, merge, or compute a hash value of - * #cairo_font_options_t objects. - **/ -typedef struct _cairo_font_options cairo_font_options_t; - -cairo_public cairo_font_options_t * -cairo_font_options_create (void); - -cairo_public cairo_font_options_t * -cairo_font_options_copy (const cairo_font_options_t *original); - -cairo_public void -cairo_font_options_destroy (cairo_font_options_t *options); - -cairo_public cairo_status_t -cairo_font_options_status (cairo_font_options_t *options); - -cairo_public void -cairo_font_options_merge (cairo_font_options_t *options, - const cairo_font_options_t *other); -cairo_public cairo_bool_t -cairo_font_options_equal (const cairo_font_options_t *options, - const cairo_font_options_t *other); - -cairo_public unsigned long -cairo_font_options_hash (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_antialias (cairo_font_options_t *options, - cairo_antialias_t antialias); -cairo_public cairo_antialias_t -cairo_font_options_get_antialias (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_subpixel_order (cairo_font_options_t *options, - cairo_subpixel_order_t subpixel_order); -cairo_public cairo_subpixel_order_t -cairo_font_options_get_subpixel_order (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_hint_style (cairo_font_options_t *options, - cairo_hint_style_t hint_style); -cairo_public cairo_hint_style_t -cairo_font_options_get_hint_style (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_hint_metrics (cairo_font_options_t *options, - cairo_hint_metrics_t hint_metrics); -cairo_public cairo_hint_metrics_t -cairo_font_options_get_hint_metrics (const cairo_font_options_t *options); - -/* This interface is for dealing with text as text, not caring about the - font object inside the the cairo_t. */ - -cairo_public void -cairo_select_font_face (cairo_t *cr, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_public void -cairo_set_font_size (cairo_t *cr, double size); - -cairo_public void -cairo_set_font_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_get_font_matrix (cairo_t *cr, - cairo_matrix_t *matrix); - -cairo_public void -cairo_set_font_options (cairo_t *cr, - const cairo_font_options_t *options); - -cairo_public void -cairo_get_font_options (cairo_t *cr, - cairo_font_options_t *options); - -cairo_public void -cairo_set_font_face (cairo_t *cr, cairo_font_face_t *font_face); - -cairo_public cairo_font_face_t * -cairo_get_font_face (cairo_t *cr); - -cairo_public void -cairo_set_scaled_font (cairo_t *cr, - const cairo_scaled_font_t *scaled_font); - -cairo_public cairo_scaled_font_t * -cairo_get_scaled_font (cairo_t *cr); - -cairo_public void -cairo_show_text (cairo_t *cr, const char *utf8); - -cairo_public void -cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs); - -cairo_public void -cairo_text_path (cairo_t *cr, const char *utf8); - -cairo_public void -cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs); - -cairo_public void -cairo_text_extents (cairo_t *cr, - const char *utf8, - cairo_text_extents_t *extents); - -cairo_public void -cairo_glyph_extents (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_public void -cairo_font_extents (cairo_t *cr, - cairo_font_extents_t *extents); - -/* Generic identifier for a font style */ - -cairo_public cairo_font_face_t * -cairo_font_face_reference (cairo_font_face_t *font_face); - -cairo_public void -cairo_font_face_destroy (cairo_font_face_t *font_face); - -cairo_public unsigned int -cairo_font_face_get_reference_count (cairo_font_face_t *font_face); - -cairo_public cairo_status_t -cairo_font_face_status (cairo_font_face_t *font_face); - -/** - * cairo_font_type_t: - * @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api - * @CAIRO_FONT_TYPE_FT: The font is of type FreeType - * @CAIRO_FONT_TYPE_WIN32: The font is of type Win32 - * @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6) - * - * #cairo_font_type_t is used to describe the type of a given font - * face or scaled font. The font types are also known as "font - * backends" within cairo. - * - * The type of a font face is determined by the function used to - * create it, which will generally be of the form - * cairo_type_font_face_create. The font face type can be queried - * with cairo_font_face_get_type() - * - * The various #cairo_font_face_t functions can be used with a font face - * of any type. - * - * The type of a scaled font is determined by the type of the font - * face passed to cairo_scaled_font_create(). The scaled font type can - * be queried with cairo_scaled_font_get_type() - * - * The various #cairo_scaled_font_t functions can be used with scaled - * fonts of any type, but some font backends also provide - * type-specific functions that must only be called with a scaled font - * of the appropriate type. These functions have names that begin with - * cairo_type_scaled_font such as cairo_ft_scaled_font_lock_face(). - * - * The behavior of calling a type-specific function with a scaled font - * of the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_font_type { - CAIRO_FONT_TYPE_TOY, - CAIRO_FONT_TYPE_FT, - CAIRO_FONT_TYPE_WIN32, - CAIRO_FONT_TYPE_QUARTZ -} cairo_font_type_t; - -cairo_public cairo_font_type_t -cairo_font_face_get_type (cairo_font_face_t *font_face); - -cairo_public void * -cairo_font_face_get_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_font_face_set_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -/* Portable interface to general font features. */ - -cairo_public cairo_scaled_font_t * -cairo_scaled_font_create (cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options); - -cairo_public cairo_scaled_font_t * -cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font); - -cairo_public unsigned int -cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font); - -cairo_public cairo_status_t -cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); - -cairo_public cairo_font_type_t -cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font); - -cairo_public void * -cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents); - -cairo_public void -cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_text_extents_t *extents); - -cairo_public void -cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_public cairo_font_face_t * -cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *font_matrix); - -cairo_public void -cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *ctm); - -cairo_public void -cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, - cairo_font_options_t *options); - -/* Query functions */ - -cairo_public cairo_operator_t -cairo_get_operator (cairo_t *cr); - -cairo_public cairo_pattern_t * -cairo_get_source (cairo_t *cr); - -cairo_public double -cairo_get_tolerance (cairo_t *cr); - -cairo_public cairo_antialias_t -cairo_get_antialias (cairo_t *cr); - -cairo_public cairo_bool_t -cairo_has_current_point (cairo_t *cr); - -cairo_public void -cairo_get_current_point (cairo_t *cr, double *x, double *y); - -cairo_public cairo_fill_rule_t -cairo_get_fill_rule (cairo_t *cr); - -cairo_public double -cairo_get_line_width (cairo_t *cr); - -cairo_public cairo_line_cap_t -cairo_get_line_cap (cairo_t *cr); - -cairo_public cairo_line_join_t -cairo_get_line_join (cairo_t *cr); - -cairo_public double -cairo_get_miter_limit (cairo_t *cr); - -cairo_public int -cairo_get_dash_count (cairo_t *cr); - -cairo_public void -cairo_get_dash (cairo_t *cr, double *dashes, double *offset); - -cairo_public void -cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix); - -cairo_public cairo_surface_t * -cairo_get_target (cairo_t *cr); - -cairo_public cairo_surface_t * -cairo_get_group_target (cairo_t *cr); - -/** - * cairo_path_data_type_t: - * @CAIRO_PATH_MOVE_TO: A move-to operation - * @CAIRO_PATH_LINE_TO: A line-to operation - * @CAIRO_PATH_CURVE_TO: A curve-to operation - * @CAIRO_PATH_CLOSE_PATH: A close-path operation - * - * #cairo_path_data_t is used to describe the type of one portion - * of a path when represented as a #cairo_path_t. - * See #cairo_path_data_t for details. - **/ -typedef enum _cairo_path_data_type { - CAIRO_PATH_MOVE_TO, - CAIRO_PATH_LINE_TO, - CAIRO_PATH_CURVE_TO, - CAIRO_PATH_CLOSE_PATH -} cairo_path_data_type_t; - -/** - * cairo_path_data_t: - * - * #cairo_path_data_t is used to represent the path data inside a - * #cairo_path_t. - * - * The data structure is designed to try to balance the demands of - * efficiency and ease-of-use. A path is represented as an array of - * #cairo_path_data_t, which is a union of headers and points. - * - * Each portion of the path is represented by one or more elements in - * the array, (one header followed by 0 or more points). The length - * value of the header is the number of array elements for the current - * portion including the header, (ie. length == 1 + # of points), and - * where the number of points for each element type is as follows: - * - * - * %CAIRO_PATH_MOVE_TO: 1 point - * %CAIRO_PATH_LINE_TO: 1 point - * %CAIRO_PATH_CURVE_TO: 3 points - * %CAIRO_PATH_CLOSE_PATH: 0 points - * - * - * The semantics and ordering of the coordinate values are consistent - * with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and - * cairo_close_path(). - * - * Here is sample code for iterating through a #cairo_path_t: - * - * - * int i; - * #cairo_path_t *path; - * #cairo_path_data_t *data; - *   - * path = cairo_copy_path (cr); - *   - * for (i=0; i < path->num_data; i += path->data[i].header.length) { - * data = &path->data[i]; - * switch (data->header.type) { - * case %CAIRO_PATH_MOVE_TO: - * do_move_to_things (data[1].point.x, data[1].point.y); - * break; - * case %CAIRO_PATH_LINE_TO: - * do_line_to_things (data[1].point.x, data[1].point.y); - * break; - * case %CAIRO_PATH_CURVE_TO: - * do_curve_to_things (data[1].point.x, data[1].point.y, - * data[2].point.x, data[2].point.y, - * data[3].point.x, data[3].point.y); - * break; - * case %CAIRO_PATH_CLOSE_PATH: - * do_close_path_things (); - * break; - * } - * } - * cairo_path_destroy (path); - * - * - * As of cairo 1.4, cairo does not mind if there are more elements in - * a portion of the path than needed. Such elements can be used by - * users of the cairo API to hold extra values in the path data - * structure. For this reason, it is recommended that applications - * always use data->header.length to - * iterate over the path data, instead of hardcoding the number of - * elements for each element type. - **/ -typedef union _cairo_path_data_t cairo_path_data_t; -union _cairo_path_data_t { - struct { - cairo_path_data_type_t type; - int length; - } header; - struct { - double x, y; - } point; -}; - -/** - * cairo_path_t: - * @status: the current error status - * @data: the elements in the path - * @num_data: the number of elements in the data array - * - * A data structure for holding a path. This data structure serves as - * the return value for cairo_copy_path() and - * cairo_copy_path_flat() as well the input value for - * cairo_append_path(). - * - * See #cairo_path_data_t for hints on how to iterate over the - * actual data within the path. - * - * The num_data member gives the number of elements in the data - * array. This number is larger than the number of independent path - * portions (defined in #cairo_path_data_type_t), since the data - * includes both headers and coordinates for each portion. - **/ -typedef struct cairo_path { - cairo_status_t status; - cairo_path_data_t *data; - int num_data; -} cairo_path_t; - -cairo_public cairo_path_t * -cairo_copy_path (cairo_t *cr); - -cairo_public cairo_path_t * -cairo_copy_path_flat (cairo_t *cr); - -cairo_public void -cairo_append_path (cairo_t *cr, - const cairo_path_t *path); - -cairo_public void -cairo_path_destroy (cairo_path_t *path); - -/* Error status queries */ - -cairo_public cairo_status_t -cairo_status (cairo_t *cr); - -cairo_public const char * -cairo_status_to_string (cairo_status_t status); - -/* Surface manipulation */ - -cairo_public cairo_surface_t * -cairo_surface_create_similar (cairo_surface_t *other, - cairo_content_t content, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_surface_reference (cairo_surface_t *surface); - -cairo_public void -cairo_surface_finish (cairo_surface_t *surface); - -cairo_public void -cairo_surface_destroy (cairo_surface_t *surface); - -cairo_public unsigned int -cairo_surface_get_reference_count (cairo_surface_t *surface); - -cairo_public cairo_status_t -cairo_surface_status (cairo_surface_t *surface); - -/** - * cairo_surface_type_t: - * @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image - * @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf - * @CAIRO_SURFACE_TYPE_PS: The surface is of type ps - * @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib - * @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb - * @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz - * @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz - * @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32 - * @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos - * @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb - * @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg - * @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2 - * @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surface - * @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image - * - * #cairo_surface_type_t is used to describe the type of a given - * surface. The surface types are also known as "backends" or "surface - * backends" within cairo. - * - * The type of a surface is determined by the function used to create - * it, which will generally be of the form cairo_type_surface_create(), - * (though see cairo_surface_create_similar() as well). - * - * The surface type can be queried with cairo_surface_get_type() - * - * The various #cairo_surface_t functions can be used with surfaces of - * any type, but some backends also provide type-specific functions - * that must only be called with a surface of the appropriate - * type. These functions have names that begin with - * cairo_type_surface such as cairo_image_surface_get_width(). - * - * The behavior of calling a type-specific function with a surface of - * the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_surface_type { - CAIRO_SURFACE_TYPE_IMAGE, - CAIRO_SURFACE_TYPE_PDF, - CAIRO_SURFACE_TYPE_PS, - CAIRO_SURFACE_TYPE_XLIB, - CAIRO_SURFACE_TYPE_XCB, - CAIRO_SURFACE_TYPE_GLITZ, - CAIRO_SURFACE_TYPE_QUARTZ, - CAIRO_SURFACE_TYPE_WIN32, - CAIRO_SURFACE_TYPE_BEOS, - CAIRO_SURFACE_TYPE_DIRECTFB, - CAIRO_SURFACE_TYPE_SVG, - CAIRO_SURFACE_TYPE_OS2, - CAIRO_SURFACE_TYPE_WIN32_PRINTING, - CAIRO_SURFACE_TYPE_QUARTZ_IMAGE -} cairo_surface_type_t; - -cairo_public cairo_surface_type_t -cairo_surface_get_type (cairo_surface_t *surface); - -cairo_public cairo_content_t -cairo_surface_get_content (cairo_surface_t *surface); - -#if CAIRO_HAS_PNG_FUNCTIONS - -cairo_public cairo_status_t -cairo_surface_write_to_png (cairo_surface_t *surface, - const char *filename); - -cairo_public cairo_status_t -cairo_surface_write_to_png_stream (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure); - -#endif - -cairo_public void * -cairo_surface_get_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_surface_set_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_surface_get_font_options (cairo_surface_t *surface, - cairo_font_options_t *options); - -cairo_public void -cairo_surface_flush (cairo_surface_t *surface); - -cairo_public void -cairo_surface_mark_dirty (cairo_surface_t *surface); - -cairo_public void -cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, - int x, - int y, - int width, - int height); - -cairo_public void -cairo_surface_set_device_offset (cairo_surface_t *surface, - double x_offset, - double y_offset); - -cairo_public void -cairo_surface_get_device_offset (cairo_surface_t *surface, - double *x_offset, - double *y_offset); - -cairo_public void -cairo_surface_set_fallback_resolution (cairo_surface_t *surface, - double x_pixels_per_inch, - double y_pixels_per_inch); - -cairo_public void -cairo_surface_copy_page (cairo_surface_t *surface); - -cairo_public void -cairo_surface_show_page (cairo_surface_t *surface); - -/* Image-surface functions */ - -/** - * cairo_format_t: - * @CAIRO_FORMAT_ARGB32: each pixel is a 32-bit quantity, with - * alpha in the upper 8 bits, then red, then green, then blue. - * The 32-bit quantities are stored native-endian. Pre-multiplied - * alpha is used. (That is, 50% transparent red is 0x80800000, - * not 0x80ff0000.) - * @CAIRO_FORMAT_RGB24: each pixel is a 32-bit quantity, with - * the upper 8 bits unused. Red, Green, and Blue are stored - * in the remaining 24 bits in that order. - * @CAIRO_FORMAT_A8: each pixel is a 8-bit quantity holding - * an alpha value. - * @CAIRO_FORMAT_A1: each pixel is a 1-bit quantity holding - * an alpha value. Pixels are packed together into 32-bit - * quantities. The ordering of the bits matches the - * endianess of the platform. On a big-endian machine, the - * first pixel is in the uppermost bit, on a little-endian - * machine the first pixel is in the least-significant bit. - * @CAIRO_FORMAT_RGB16_565: This format value is deprecated. It has - * never been properly implemented in cairo and should not be used - * by applications. (since 1.2) - * - * #cairo_format_t is used to identify the memory format of - * image data. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_format { - CAIRO_FORMAT_ARGB32, - CAIRO_FORMAT_RGB24, - CAIRO_FORMAT_A8, - CAIRO_FORMAT_A1 - /* The value of 4 is reserved by a deprecated enum value. - * The next format added must have an explicit value of 5. - CAIRO_FORMAT_RGB16_565 = 4, - */ -} cairo_format_t; - -cairo_public cairo_surface_t * -cairo_image_surface_create (cairo_format_t format, - int width, - int height); - -cairo_public int -cairo_format_stride_for_width (cairo_format_t format, - int width); - -cairo_public cairo_surface_t * -cairo_image_surface_create_for_data (unsigned char *data, - cairo_format_t format, - int width, - int height, - int stride); - -cairo_public unsigned char * -cairo_image_surface_get_data (cairo_surface_t *surface); - -cairo_public cairo_format_t -cairo_image_surface_get_format (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_width (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_height (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_stride (cairo_surface_t *surface); - -#if CAIRO_HAS_PNG_FUNCTIONS - -cairo_public cairo_surface_t * -cairo_image_surface_create_from_png (const char *filename); - -cairo_public cairo_surface_t * -cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func, - void *closure); - -#endif - -/* Pattern creation functions */ - -cairo_public cairo_pattern_t * -cairo_pattern_create_rgb (double red, double green, double blue); - -cairo_public cairo_pattern_t * -cairo_pattern_create_rgba (double red, double green, double blue, - double alpha); - -cairo_public cairo_pattern_t * -cairo_pattern_create_for_surface (cairo_surface_t *surface); - -cairo_public cairo_pattern_t * -cairo_pattern_create_linear (double x0, double y0, - double x1, double y1); - -cairo_public cairo_pattern_t * -cairo_pattern_create_radial (double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1); - -cairo_public cairo_pattern_t * -cairo_pattern_reference (cairo_pattern_t *pattern); - -cairo_public void -cairo_pattern_destroy (cairo_pattern_t *pattern); - -cairo_public unsigned int -cairo_pattern_get_reference_count (cairo_pattern_t *pattern); - -cairo_public cairo_status_t -cairo_pattern_status (cairo_pattern_t *pattern); - -cairo_public void * -cairo_pattern_get_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_pattern_set_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -/** - * cairo_pattern_type_t: - * @CAIRO_PATTERN_TYPE_SOLID: The pattern is a solid (uniform) - * color. It may be opaque or translucent. - * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an image). - * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient. - * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient. - * - * #cairo_pattern_type_t is used to describe the type of a given pattern. - * - * The type of a pattern is determined by the function used to create - * it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() - * functions create SOLID patterns. The remaining - * cairo_pattern_create functions map to pattern types in obvious - * ways. - * - * The pattern type can be queried with cairo_pattern_get_type() - * - * Most #cairo_pattern_t functions can be called with a pattern of any - * type, (though trying to change the extend or filter for a solid - * pattern will have no effect). A notable exception is - * cairo_pattern_add_color_stop_rgb() and - * cairo_pattern_add_color_stop_rgba() which must only be called with - * gradient patterns (either LINEAR or RADIAL). Otherwise the pattern - * will be shutdown and put into an error state. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_pattern_type { - CAIRO_PATTERN_TYPE_SOLID, - CAIRO_PATTERN_TYPE_SURFACE, - CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL -} cairo_pattern_type_t; - -cairo_public cairo_pattern_type_t -cairo_pattern_get_type (cairo_pattern_t *pattern); - -cairo_public void -cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, double green, double blue); - -cairo_public void -cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, - double offset, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_pattern_set_matrix (cairo_pattern_t *pattern, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_pattern_get_matrix (cairo_pattern_t *pattern, - cairo_matrix_t *matrix); - -/** - * cairo_extend_t: - * @CAIRO_EXTEND_NONE: pixels outside of the source pattern - * are fully transparent - * @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating - * @CAIRO_EXTEND_REFLECT: the pattern is tiled by reflecting - * at the edges (Implemented for surface patterns since 1.6) - * @CAIRO_EXTEND_PAD: pixels outside of the pattern copy - * the closest pixel from the source (Since 1.2; but only - * implemented for surface patterns since 1.6) - * - * #cairo_extend_t is used to describe how pattern color/alpha will be - * determined for areas "outside" the pattern's natural area, (for - * example, outside the surface bounds or outside the gradient - * geometry). - * - * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns - * and %CAIRO_EXTEND_PAD for gradient patterns. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_extend { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD -} cairo_extend_t; - -cairo_public void -cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend); - -cairo_public cairo_extend_t -cairo_pattern_get_extend (cairo_pattern_t *pattern); - -/** - * cairo_filter_t: - * @CAIRO_FILTER_FAST: A high-performance filter, with quality similar - * to %CAIRO_FILTER_NEAREST - * @CAIRO_FILTER_GOOD: A reasonable-performance filter, with quality - * similar to %CAIRO_FILTER_BILINEAR - * @CAIRO_FILTER_BEST: The highest-quality available, performance may - * not be suitable for interactive use. - * @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering - * @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions - * @CAIRO_FILTER_GAUSSIAN: This filter value is currently - * unimplemented, and should not be used in current code. - * - * #cairo_filter_t is used to indicate what filtering should be - * applied when reading pixel values from patterns. See - * cairo_pattern_set_source() for indicating the desired filter to be - * used with a particular pattern. - */ -typedef enum _cairo_filter { - CAIRO_FILTER_FAST, - CAIRO_FILTER_GOOD, - CAIRO_FILTER_BEST, - CAIRO_FILTER_NEAREST, - CAIRO_FILTER_BILINEAR, - CAIRO_FILTER_GAUSSIAN -} cairo_filter_t; - -cairo_public void -cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter); - -cairo_public cairo_filter_t -cairo_pattern_get_filter (cairo_pattern_t *pattern); - -cairo_public cairo_status_t -cairo_pattern_get_rgba (cairo_pattern_t *pattern, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_pattern_get_surface (cairo_pattern_t *pattern, - cairo_surface_t **surface); - - -cairo_public cairo_status_t -cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, - int index, double *offset, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, - int *count); - -cairo_public cairo_status_t -cairo_pattern_get_linear_points (cairo_pattern_t *pattern, - double *x0, double *y0, - double *x1, double *y1); - -cairo_public cairo_status_t -cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, - double *x0, double *y0, double *r0, - double *x1, double *y1, double *r1); - -/* Matrix functions */ - -cairo_public void -cairo_matrix_init (cairo_matrix_t *matrix, - double xx, double yx, - double xy, double yy, - double x0, double y0); - -cairo_public void -cairo_matrix_init_identity (cairo_matrix_t *matrix); - -cairo_public void -cairo_matrix_init_translate (cairo_matrix_t *matrix, - double tx, double ty); - -cairo_public void -cairo_matrix_init_scale (cairo_matrix_t *matrix, - double sx, double sy); - -cairo_public void -cairo_matrix_init_rotate (cairo_matrix_t *matrix, - double radians); - -cairo_public void -cairo_matrix_translate (cairo_matrix_t *matrix, double tx, double ty); - -cairo_public void -cairo_matrix_scale (cairo_matrix_t *matrix, double sx, double sy); - -cairo_public void -cairo_matrix_rotate (cairo_matrix_t *matrix, double radians); - -cairo_public cairo_status_t -cairo_matrix_invert (cairo_matrix_t *matrix); - -cairo_public void -cairo_matrix_multiply (cairo_matrix_t *result, - const cairo_matrix_t *a, - const cairo_matrix_t *b); - -cairo_public void -cairo_matrix_transform_distance (const cairo_matrix_t *matrix, - double *dx, double *dy); - -cairo_public void -cairo_matrix_transform_point (const cairo_matrix_t *matrix, - double *x, double *y); - -/* Functions to be used while debugging (not intended for use in production code) */ -cairo_public void -cairo_debug_reset_static_data (void); - -CAIRO_END_DECLS - -#endif /* CAIRO_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-hash.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-hash.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-hash.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-hash.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,576 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Keith Packard - * Graydon Hoare - * Carl Worth - */ - -#include "cairoint.h" - -/* - * An entry can be in one of three states: - * - * FREE: Entry has never been used, terminates all searches. - * Appears in the table as a %NULL pointer. - * - * DEAD: Entry had been live in the past. A dead entry can be reused - * but does not terminate a search for an exact entry. - * Appears in the table as a pointer to DEAD_ENTRY. - * - * LIVE: Entry is currently being used. - * Appears in the table as any non-%NULL, non-DEAD_ENTRY pointer. - */ - -static cairo_hash_entry_t dead_entry = { 0 }; -#define DEAD_ENTRY (&dead_entry) - -#define ENTRY_IS_FREE(entry) ((entry) == NULL) -#define ENTRY_IS_DEAD(entry) ((entry) == DEAD_ENTRY) -#define ENTRY_IS_LIVE(entry) ((entry) && ! ENTRY_IS_DEAD(entry)) - -/* We expect keys will not be destroyed frequently, so our table does not - * contain any explicit shrinking code nor any chain-coalescing code for - * entries randomly deleted by memory pressure (except during rehashing, of - * course). These assumptions are potentially bad, but they make the - * implementation straightforward. - * - * Revisit later if evidence appears that we're using excessive memory from - * a mostly-dead table. - * - * This table is open-addressed with double hashing. Each table size is a - * prime chosen to be a little more than double the high water mark for a - * given arrangement, so the tables should remain < 50% full. The table - * size makes for the "first" hash modulus; a second prime (2 less than the - * first prime) serves as the "second" hash modulus, which is co-prime and - * thus guarantees a complete permutation of table indices. - * - * This structure, and accompanying table, is borrowed/modified from the - * file xserver/render/glyph.c in the freedesktop.org x server, with - * permission (and suggested modification of doubling sizes) by Keith - * Packard. - */ - -typedef struct _cairo_hash_table_arrangement { - unsigned long high_water_mark; - unsigned long size; - unsigned long rehash; -} cairo_hash_table_arrangement_t; - -static const cairo_hash_table_arrangement_t hash_table_arrangements [] = { - { 16, 43, 41 }, - { 32, 73, 71 }, - { 64, 151, 149 }, - { 128, 283, 281 }, - { 256, 571, 569 }, - { 512, 1153, 1151 }, - { 1024, 2269, 2267 }, - { 2048, 4519, 4517 }, - { 4096, 9013, 9011 }, - { 8192, 18043, 18041 }, - { 16384, 36109, 36107 }, - { 32768, 72091, 72089 }, - { 65536, 144409, 144407 }, - { 131072, 288361, 288359 }, - { 262144, 576883, 576881 }, - { 524288, 1153459, 1153457 }, - { 1048576, 2307163, 2307161 }, - { 2097152, 4613893, 4613891 }, - { 4194304, 9227641, 9227639 }, - { 8388608, 18455029, 18455027 }, - { 16777216, 36911011, 36911009 }, - { 33554432, 73819861, 73819859 }, - { 67108864, 147639589, 147639587 }, - { 134217728, 295279081, 295279079 }, - { 268435456, 590559793, 590559791 } -}; - -#define NUM_HASH_TABLE_ARRANGEMENTS ARRAY_LENGTH (hash_table_arrangements) - -struct _cairo_hash_table { - cairo_hash_keys_equal_func_t keys_equal; - - const cairo_hash_table_arrangement_t *arrangement; - cairo_hash_entry_t **entries; - - unsigned long live_entries; - unsigned long iterating; /* Iterating, no insert, no resize */ -}; - -/** - * _cairo_hash_table_create: - * @keys_equal: a function to return %TRUE if two keys are equal - * - * Creates a new hash table which will use the keys_equal() function - * to compare hash keys. Data is provided to the hash table in the - * form of user-derived versions of #cairo_hash_entry_t. A hash entry - * must be able to hold both a key (including a hash code) and a - * value. Sometimes only the key will be necessary, (as in - * _cairo_hash_table_remove), and other times both a key and a value - * will be necessary, (as in _cairo_hash_table_insert). - * - * See #cairo_hash_entry_t for more details. - * - * Return value: the new hash table or %NULL if out of memory. - **/ -cairo_hash_table_t * -_cairo_hash_table_create (cairo_hash_keys_equal_func_t keys_equal) -{ - cairo_hash_table_t *hash_table; - - hash_table = malloc (sizeof (cairo_hash_table_t)); - if (hash_table == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - hash_table->keys_equal = keys_equal; - - hash_table->arrangement = &hash_table_arrangements[0]; - - hash_table->entries = calloc (hash_table->arrangement->size, - sizeof(cairo_hash_entry_t *)); - if (hash_table->entries == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - free (hash_table); - return NULL; - } - - hash_table->live_entries = 0; - hash_table->iterating = 0; - - return hash_table; -} - -/** - * _cairo_hash_table_destroy: - * @hash_table: an empty hash table to destroy - * - * Immediately destroys the given hash table, freeing all resources - * associated with it. - * - * WARNING: The hash_table must have no live entries in it before - * _cairo_hash_table_destroy is called. It is a fatal error otherwise, - * and this function will halt. The rationale for this behavior is to - * avoid memory leaks and to avoid needless complication of the API - * with destroy notifiy callbacks. - * - * WARNING: The hash_table must have no running iterators in it when - * _cairo_hash_table_destroy is called. It is a fatal error otherwise, - * and this function will halt. - **/ -void -_cairo_hash_table_destroy (cairo_hash_table_t *hash_table) -{ - if (hash_table == NULL) - return; - - /* The hash table must be empty. Otherwise, halt. */ - assert (hash_table->live_entries == 0); - /* No iterators can be running. Otherwise, halt. */ - assert (hash_table->iterating == 0); - - free (hash_table->entries); - hash_table->entries = NULL; - - free (hash_table); -} - -/** - * _cairo_hash_table_lookup_internal: - * - * @hash_table: a #cairo_hash_table_t to search - * @key: the key to search on - * @hash_code: the hash_code for @key - * @key_unique: If %TRUE, then caller asserts that no key already - * exists that will compare equal to #key, so search can be - * optimized. If unsure, set to %FALSE and the code will always work. - * - * Search the hashtable for a live entry for which - * hash_table->keys_equal returns true. If no such entry exists then - * return the first available (free or dead entry). - * - * If the key_unique flag is set, then the search will never call - * hash_table->keys_equal and will act as if it always returned - * false. This is useful as a performance optimization in special - * circumstances where the caller knows that there is no existing - * entry in the hash table with a matching key. - * - * Return value: The matching entry in the hash table (if - * any). Otherwise, the first available entry. The caller should check - * entry->state to check whether a match was found or not. - **/ -static cairo_hash_entry_t ** -_cairo_hash_table_lookup_internal (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *key, - cairo_bool_t key_is_unique) -{ - cairo_hash_entry_t **entry, **first_available = NULL; - unsigned long table_size, i, idx, step; - - table_size = hash_table->arrangement->size; - - idx = key->hash % table_size; - step = 0; - - for (i = 0; i < table_size; ++i) - { - entry = &hash_table->entries[idx]; - - if (ENTRY_IS_FREE(*entry)) - { - return entry; - } - else if (ENTRY_IS_DEAD(*entry)) - { - if (key_is_unique) { - return entry; - } else { - if (! first_available) - first_available = entry; - } - } - else /* ENTRY_IS_LIVE(*entry) */ - { - if (! key_is_unique) - if (hash_table->keys_equal (key, *entry)) - return entry; - } - - if (step == 0) { - step = key->hash % hash_table->arrangement->rehash; - if (step == 0) - step = 1; - } - - idx += step; - if (idx >= table_size) - idx -= table_size; - } - - /* - * The table should not have permitted you to get here if you were just - * looking for a free slot: there should have been room. - */ - assert (key_is_unique == 0); - - return first_available; -} - -/** - * _cairo_hash_table_resize: - * @hash_table: a hash table - * - * Resize the hash table if the number of entries has gotten much - * bigger or smaller than the ideal number of entries for the current - * size. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if out of memory. - **/ -static cairo_status_t -_cairo_hash_table_resize (cairo_hash_table_t *hash_table) -{ - cairo_hash_table_t tmp; - cairo_hash_entry_t **entry; - unsigned long new_size, i; - - /* This keeps the hash table between 25% and 50% full. */ - unsigned long high = hash_table->arrangement->high_water_mark; - unsigned long low = high >> 2; - - if (hash_table->live_entries >= low && hash_table->live_entries <= high) - return CAIRO_STATUS_SUCCESS; - - tmp = *hash_table; - - if (hash_table->live_entries > high) - { - tmp.arrangement = hash_table->arrangement + 1; - /* This code is being abused if we can't make a table big enough. */ - assert (tmp.arrangement - hash_table_arrangements < - NUM_HASH_TABLE_ARRANGEMENTS); - } - else /* hash_table->live_entries < low */ - { - /* Can't shrink if we're at the smallest size */ - if (hash_table->arrangement == &hash_table_arrangements[0]) - return CAIRO_STATUS_SUCCESS; - tmp.arrangement = hash_table->arrangement - 1; - } - - new_size = tmp.arrangement->size; - tmp.entries = calloc (new_size, sizeof (cairo_hash_entry_t*)); - if (tmp.entries == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (i = 0; i < hash_table->arrangement->size; ++i) { - if (ENTRY_IS_LIVE (hash_table->entries[i])) { - entry = _cairo_hash_table_lookup_internal (&tmp, - hash_table->entries[i], - TRUE); - assert (ENTRY_IS_FREE(*entry)); - *entry = hash_table->entries[i]; - } - } - - free (hash_table->entries); - hash_table->entries = tmp.entries; - hash_table->arrangement = tmp.arrangement; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_hash_table_lookup: - * @hash_table: a hash table - * @key: the key of interest - * @entry_return: pointer for return value. - * - * Performs a lookup in @hash_table looking for an entry which has a - * key that matches @key, (as determined by the keys_equal() function - * passed to _cairo_hash_table_create). - * - * Return value: %TRUE if there is an entry in the hash table that - * matches the given key, (which will now be in *entry_return). %FALSE - * otherwise, (in which case *entry_return will be %NULL). - **/ -cairo_bool_t -_cairo_hash_table_lookup (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *key, - cairo_hash_entry_t **entry_return) -{ - cairo_hash_entry_t **entry; - - /* See if we have an entry in the table already. */ - entry = _cairo_hash_table_lookup_internal (hash_table, key, FALSE); - if (ENTRY_IS_LIVE(*entry)) { - *entry_return = *entry; - return TRUE; - } - - *entry_return = NULL; - return FALSE; -} - -/** - * _cairo_hash_table_random_entry: - * @hash_table: a hash table - * @predicate: a predicate function, or %NULL for any entry. - * - * Find a random entry in the hash table satisfying the given - * @predicate. A %NULL @predicate is taken as equivalent to a function - * which always returns %TRUE, (eg. any entry in the table will do). - * - * We use the same algorithm as the lookup algorithm to walk over the - * entries in the hash table in a pseudo-random order. Walking - * linearly would favor entries following gaps in the hash table. We - * could also call rand() repeatedly, which works well for almost-full - * tables, but degrades when the table is almost empty, or predicate - * returns %TRUE for most entries. - * - * Return value: a random live entry or %NULL if there are no entries - * that match the given predicate. In particular, if predicate is - * NULL, a %NULL return value indicates that the table is empty. - **/ -void * -_cairo_hash_table_random_entry (cairo_hash_table_t *hash_table, - cairo_hash_predicate_func_t predicate) -{ - cairo_hash_entry_t **entry; - unsigned long hash; - unsigned long table_size, i, idx, step; - - table_size = hash_table->arrangement->size; - - hash = rand (); - idx = hash % table_size; - step = 0; - - for (i = 0; i < table_size; ++i) - { - entry = &hash_table->entries[idx]; - - if (ENTRY_IS_LIVE (*entry) && - (predicate == NULL || predicate (*entry))) - { - return *entry; - } - - if (step == 0) { - step = hash % hash_table->arrangement->rehash; - if (step == 0) - step = 1; - } - - idx += step; - if (idx >= table_size) - idx -= table_size; - } - - return NULL; -} - -/** - * _cairo_hash_table_insert: - * @hash_table: a hash table - * @key_and_value: an entry to be inserted - * - * Insert the entry #key_and_value into the hash table. - * - * WARNING: It is a fatal error if an entry exists in the hash table - * with a matching key, (this function will halt). - * - * WARNING: It is a fatal error to insert an element while - * an iterator is running - * - * Instead of using insert to replace an entry, consider just editing - * the entry obtained with _cairo_hash_table_lookup. Or if absolutely - * necessary, use _cairo_hash_table_remove first. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if insufficient memory is available. - **/ -cairo_status_t -_cairo_hash_table_insert (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *key_and_value) -{ - cairo_status_t status; - cairo_hash_entry_t **entry; - - /* Insert is illegal while an iterator is running. */ - assert (hash_table->iterating == 0); - - entry = _cairo_hash_table_lookup_internal (hash_table, - key_and_value, FALSE); - - if (ENTRY_IS_LIVE(*entry)) - { - /* User is being bad, let's crash. */ - ASSERT_NOT_REACHED; - } - - *entry = key_and_value; - hash_table->live_entries++; - - status = _cairo_hash_table_resize (hash_table); - if (status) { - /* abort the insert... */ - *entry = DEAD_ENTRY; - hash_table->live_entries--; - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_hash_table_remove: - * @hash_table: a hash table - * @key: key of entry to be removed - * - * Remove an entry from the hash table which has a key that matches - * @key, if any (as determined by the keys_equal() function passed to - * _cairo_hash_table_create). - * - * Return value: %CAIRO_STATUS_SUCCESS if successful or - * CAIRO_STATUS_NO_MEMORY if out of memory. - **/ -void -_cairo_hash_table_remove (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *key) -{ - cairo_hash_entry_t **entry; - - entry = _cairo_hash_table_lookup_internal (hash_table, key, FALSE); - if (! ENTRY_IS_LIVE(*entry)) - return; - - *entry = DEAD_ENTRY; - hash_table->live_entries--; - - /* Check for table resize. Don't do this when iterating as this will - * reorder elements of the table and cause the iteration to potentially - * skip some elements. */ - if (hash_table->iterating == 0) { - /* This call _can_ fail, but only in failing to allocate new - * memory to shrink the hash table. It does leave the table in a - * consistent state, and we've already succeeded in removing the - * entry, so we don't examine the failure status of this call. */ - _cairo_hash_table_resize (hash_table); - } -} - -/** - * _cairo_hash_table_foreach: - * @hash_table: a hash table - * @hash_callback: function to be called for each live entry - * @closure: additional argument to be passed to @hash_callback - * - * Call @hash_callback for each live entry in the hash table, in a - * non-specified order. - * - * Entries in @hash_table may be removed by code executed from @hash_callback. - * - * Entries may not be inserted to @hash_table, nor may @hash_table - * be destroyed by code executed from @hash_callback. The relevant - * functions will halt in these cases. - **/ -void -_cairo_hash_table_foreach (cairo_hash_table_t *hash_table, - cairo_hash_callback_func_t hash_callback, - void *closure) -{ - unsigned long i; - cairo_hash_entry_t *entry; - - if (hash_table == NULL) - return; - - /* Mark the table for iteration */ - ++hash_table->iterating; - for (i = 0; i < hash_table->arrangement->size; i++) { - entry = hash_table->entries[i]; - if (ENTRY_IS_LIVE(entry)) - hash_callback (entry, closure); - } - /* If some elements were deleted during the iteration, - * the table may need resizing. Just do this every time - * as the check is inexpensive. - */ - if (--hash_table->iterating == 0) { - /* Should we fail to shrink the hash table, it is left unaltered, - * and we don't need to propagate the error status. */ - _cairo_hash_table_resize (hash_table); - } -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-hash-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-hash-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-hash-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-hash-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Keith Packard - * Graydon Hoare - * Carl Worth - */ - -#ifndef CAIRO_HASH_PRIVATE_H -#define CAIRO_HASH_PRIVATE_H - -#include "cairo-compiler-private.h" -#include "cairo-types-private.h" - -/* XXX: I'd like this file to be self-contained in terms of - * includeability, but that's not really possible with the current - * monolithic cairoint.h. So, for now, just include cairoint.h instead - * if you want to include this file. */ - -typedef cairo_bool_t -(*cairo_hash_keys_equal_func_t) (const void *key_a, const void *key_b); - -typedef cairo_bool_t -(*cairo_hash_predicate_func_t) (void *entry); - -typedef void -(*cairo_hash_callback_func_t) (void *entry, - void *closure); - -cairo_private cairo_hash_table_t * -_cairo_hash_table_create (cairo_hash_keys_equal_func_t keys_equal); - -cairo_private void -_cairo_hash_table_destroy (cairo_hash_table_t *hash_table); - -cairo_private cairo_bool_t -_cairo_hash_table_lookup (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *key, - cairo_hash_entry_t **entry_return); - -cairo_private void * -_cairo_hash_table_random_entry (cairo_hash_table_t *hash_table, - cairo_hash_predicate_func_t predicate); - -cairo_private cairo_status_t -_cairo_hash_table_insert (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *entry); - -cairo_private void -_cairo_hash_table_remove (cairo_hash_table_t *hash_table, - cairo_hash_entry_t *key); - -cairo_private void -_cairo_hash_table_foreach (cairo_hash_table_t *hash_table, - cairo_hash_callback_func_t hash_callback, - void *closure); - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-hull.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-hull.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-hull.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-hull.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,217 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -typedef struct cairo_hull -{ - cairo_point_t point; - cairo_slope_t slope; - int discard; - int id; -} cairo_hull_t; - -static cairo_status_t -_cairo_hull_create (cairo_pen_vertex_t *vertices, - int num_vertices, - cairo_hull_t **out) -{ - int i; - cairo_hull_t *hull; - cairo_point_t *p, *extremum, tmp; - - extremum = &vertices[0].point; - for (i = 1; i < num_vertices; i++) { - p = &vertices[i].point; - if (p->y < extremum->y || (p->y == extremum->y && p->x < extremum->x)) - extremum = p; - } - /* Put the extremal point at the beginning of the array */ - tmp = *extremum; - *extremum = vertices[0].point; - vertices[0].point = tmp; - - hull = _cairo_malloc_ab (num_vertices, sizeof (cairo_hull_t)); - if (hull == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (i = 0; i < num_vertices; i++) { - hull[i].point = vertices[i].point; - _cairo_slope_init (&hull[i].slope, &hull[0].point, &hull[i].point); - - /* give each point a unique id for later comparison */ - hull[i].id = i; - - /* Don't discard by default */ - hull[i].discard = 0; - - /* Discard all points coincident with the extremal point */ - if (i != 0 && hull[i].slope.dx == 0 && hull[i].slope.dy == 0) - hull[i].discard = 1; - } - - *out = hull; - return CAIRO_STATUS_SUCCESS; -} - -static int -_cairo_hull_vertex_compare (const void *av, const void *bv) -{ - cairo_hull_t *a = (cairo_hull_t *) av; - cairo_hull_t *b = (cairo_hull_t *) bv; - int ret; - - ret = _cairo_slope_compare (&a->slope, &b->slope); - - /* In the case of two vertices with identical slope from the - extremal point discard the nearer point. */ - - if (ret == 0) { - cairo_fixed_48_16_t a_dist, b_dist; - a_dist = ((cairo_fixed_48_16_t) a->slope.dx * a->slope.dx + - (cairo_fixed_48_16_t) a->slope.dy * a->slope.dy); - b_dist = ((cairo_fixed_48_16_t) b->slope.dx * b->slope.dx + - (cairo_fixed_48_16_t) b->slope.dy * b->slope.dy); - /* - * Use the point's ids to ensure a total ordering. - * a well-defined ordering, and avoid setting discard on - * both points. - */ - if (a_dist < b_dist || (a_dist == b_dist && a->id < b->id)) { - a->discard = 1; - ret = -1; - } else { - b->discard = 1; - ret = 1; - } - } - - return ret; -} - -static int -_cairo_hull_prev_valid (cairo_hull_t *hull, int num_hull, int index) -{ - /* hull[0] is always valid, and we never need to wraparound, (if - * we are passed an index of 0 here, then the calling loop is just - * about to terminate). */ - if (index == 0) - return 0; - - do { - index--; - } while (hull[index].discard); - - return index; -} - -static int -_cairo_hull_next_valid (cairo_hull_t *hull, int num_hull, int index) -{ - do { - index = (index + 1) % num_hull; - } while (hull[index].discard); - - return index; -} - -static void -_cairo_hull_eliminate_concave (cairo_hull_t *hull, int num_hull) -{ - int i, j, k; - cairo_slope_t slope_ij, slope_jk; - - i = 0; - j = _cairo_hull_next_valid (hull, num_hull, i); - k = _cairo_hull_next_valid (hull, num_hull, j); - - do { - _cairo_slope_init (&slope_ij, &hull[i].point, &hull[j].point); - _cairo_slope_init (&slope_jk, &hull[j].point, &hull[k].point); - - /* Is the angle formed by ij and jk concave? */ - if (_cairo_slope_compare (&slope_ij, &slope_jk) >= 0) { - if (i == k) - return; - hull[j].discard = 1; - j = i; - i = _cairo_hull_prev_valid (hull, num_hull, j); - } else { - i = j; - j = k; - k = _cairo_hull_next_valid (hull, num_hull, j); - } - } while (j != 0); -} - -static void -_cairo_hull_to_pen (cairo_hull_t *hull, cairo_pen_vertex_t *vertices, int *num_vertices) -{ - int i, j = 0; - - for (i = 0; i < *num_vertices; i++) { - if (hull[i].discard) - continue; - vertices[j++].point = hull[i].point; - } - - *num_vertices = j; -} - -/* Given a set of vertices, compute the convex hull using the Graham - scan algorithm. */ -cairo_status_t -_cairo_hull_compute (cairo_pen_vertex_t *vertices, int *num_vertices) -{ - cairo_status_t status; - cairo_hull_t *hull = NULL; - int num_hull = *num_vertices; - - status = _cairo_hull_create (vertices, num_hull, &hull); - if (status) - return status; - - qsort (hull + 1, num_hull - 1, - sizeof (cairo_hull_t), _cairo_hull_vertex_compare); - - _cairo_hull_eliminate_concave (hull, num_hull); - - _cairo_hull_to_pen (hull, vertices, num_vertices); - - free (hull); - - return CAIRO_STATUS_SUCCESS; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-image-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-image-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-image-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-image-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1356 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -static cairo_format_t -_cairo_format_from_pixman_format (pixman_format_code_t pixman_format) -{ - switch (pixman_format) { - case PIXMAN_a8r8g8b8: - return CAIRO_FORMAT_ARGB32; - case PIXMAN_x8r8g8b8: - return CAIRO_FORMAT_RGB24; - case PIXMAN_a8: - return CAIRO_FORMAT_A8; - case PIXMAN_a1: - return CAIRO_FORMAT_A1; - case PIXMAN_a8b8g8r8: case PIXMAN_x8b8g8r8: case PIXMAN_r8g8b8: - case PIXMAN_b8g8r8: case PIXMAN_r5g6b5: case PIXMAN_b5g6r5: - case PIXMAN_a1r5g5b5: case PIXMAN_x1r5g5b5: case PIXMAN_a1b5g5r5: - case PIXMAN_x1b5g5r5: case PIXMAN_a4r4g4b4: case PIXMAN_x4r4g4b4: - case PIXMAN_a4b4g4r4: case PIXMAN_x4b4g4r4: case PIXMAN_r3g3b2: - case PIXMAN_b2g3r3: case PIXMAN_a2r2g2b2: case PIXMAN_a2b2g2r2: - case PIXMAN_c8: case PIXMAN_g8: case PIXMAN_x4a4: - case PIXMAN_a4: case PIXMAN_r1g2b1: case PIXMAN_b1g2r1: - case PIXMAN_a1r1g1b1: case PIXMAN_a1b1g1r1: case PIXMAN_c4: - case PIXMAN_g4: case PIXMAN_g1: - case PIXMAN_yuy2: case PIXMAN_yv12: - default: - return CAIRO_FORMAT_INVALID; - } - - return CAIRO_FORMAT_INVALID; -} - -static cairo_content_t -_cairo_content_from_pixman_format (pixman_format_code_t pixman_format) -{ - switch (pixman_format) { - case PIXMAN_a8r8g8b8: - case PIXMAN_a8b8g8r8: - case PIXMAN_a1r5g5b5: - case PIXMAN_a1b5g5r5: - case PIXMAN_a4r4g4b4: - case PIXMAN_a4b4g4r4: - case PIXMAN_a2r2g2b2: - case PIXMAN_a2b2g2r2: - case PIXMAN_a1r1g1b1: - case PIXMAN_a1b1g1r1: - return CAIRO_CONTENT_COLOR_ALPHA; - case PIXMAN_x8r8g8b8: - case PIXMAN_x8b8g8r8: - case PIXMAN_r8g8b8: - case PIXMAN_b8g8r8: - case PIXMAN_r5g6b5: - case PIXMAN_b5g6r5: - case PIXMAN_x1r5g5b5: - case PIXMAN_x1b5g5r5: - case PIXMAN_x4r4g4b4: - case PIXMAN_x4b4g4r4: - case PIXMAN_r3g3b2: - case PIXMAN_b2g3r3: - case PIXMAN_c8: - case PIXMAN_g8: - case PIXMAN_r1g2b1: - case PIXMAN_b1g2r1: - case PIXMAN_c4: - case PIXMAN_g4: - case PIXMAN_g1: - case PIXMAN_yuy2: - case PIXMAN_yv12: - return CAIRO_CONTENT_COLOR; - case PIXMAN_a8: - case PIXMAN_a1: - case PIXMAN_x4a4: - case PIXMAN_a4: - return CAIRO_CONTENT_ALPHA; - } - - return CAIRO_CONTENT_COLOR_ALPHA; -} - -cairo_surface_t * -_cairo_image_surface_create_for_pixman_image (pixman_image_t *pixman_image, - pixman_format_code_t pixman_format) -{ - cairo_image_surface_t *surface; - - surface = malloc (sizeof (cairo_image_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - _cairo_surface_init (&surface->base, &cairo_image_surface_backend, - _cairo_content_from_pixman_format (pixman_format)); - - surface->pixman_image = pixman_image; - - surface->pixman_format = pixman_format; - surface->format = _cairo_format_from_pixman_format (pixman_format); - surface->data = (unsigned char *) pixman_image_get_data (pixman_image); - surface->owns_data = FALSE; - surface->has_clip = FALSE; - surface->transparency = CAIRO_IMAGE_UNKNOWN; - - surface->width = pixman_image_get_width (pixman_image); - surface->height = pixman_image_get_height (pixman_image); - surface->stride = pixman_image_get_stride (pixman_image); - surface->depth = pixman_image_get_depth (pixman_image); - - return &surface->base; -} - -cairo_int_status_t -_pixman_format_from_masks (cairo_format_masks_t *masks, - pixman_format_code_t *format_ret) -{ - pixman_format_code_t format; - int format_type; - int a, r, g, b; - cairo_format_masks_t format_masks; - - a = _cairo_popcount (masks->alpha_mask); - r = _cairo_popcount (masks->red_mask); - g = _cairo_popcount (masks->green_mask); - b = _cairo_popcount (masks->blue_mask); - - if (masks->red_mask) { - if (masks->red_mask > masks->blue_mask) - format_type = PIXMAN_TYPE_ARGB; - else - format_type = PIXMAN_TYPE_ABGR; - } else if (masks->alpha_mask) { - format_type = PIXMAN_TYPE_A; - } else { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - format = PIXMAN_FORMAT (masks->bpp, format_type, a, r, g, b); - - if (! pixman_format_supported_destination (format)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Sanity check that we got out of PIXMAN_FORMAT exactly what we - * expected. This avoid any problems from something bizarre like - * alpha in the least-significant bits, or insane channel order, - * or whatever. */ - _pixman_format_to_masks (format, &format_masks); - - if (masks->bpp != format_masks.bpp || - masks->red_mask != format_masks.red_mask || - masks->green_mask != format_masks.green_mask || - masks->blue_mask != format_masks.blue_mask) - { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - *format_ret = format; - return CAIRO_STATUS_SUCCESS; -} - -/* A mask consisting of N bits set to 1. */ -#define MASK(N) ((1 << (N))-1) - -void -_pixman_format_to_masks (pixman_format_code_t format, - cairo_format_masks_t *masks) -{ - int a, r, g, b; - - masks->bpp = PIXMAN_FORMAT_BPP (format); - - /* Number of bits in each channel */ - a = PIXMAN_FORMAT_A (format); - r = PIXMAN_FORMAT_R (format); - g = PIXMAN_FORMAT_G (format); - b = PIXMAN_FORMAT_B (format); - - switch (PIXMAN_FORMAT_TYPE (format)) { - case PIXMAN_TYPE_ARGB: - masks->alpha_mask = MASK (a) << (r + g + b); - masks->red_mask = MASK (r) << (g + b); - masks->green_mask = MASK (g) << (b); - masks->blue_mask = MASK (b); - return; - case PIXMAN_TYPE_ABGR: - masks->alpha_mask = MASK (a) << (b + g + r); - masks->blue_mask = MASK (b) << (g +r); - masks->green_mask = MASK (g) << (r); - masks->red_mask = MASK (r); - return; - case PIXMAN_TYPE_A: - masks->alpha_mask = MASK (a); - masks->red_mask = 0; - masks->green_mask = 0; - masks->blue_mask = 0; - return; - case PIXMAN_TYPE_OTHER: - case PIXMAN_TYPE_COLOR: - case PIXMAN_TYPE_GRAY: - case PIXMAN_TYPE_YUY2: - case PIXMAN_TYPE_YV12: - default: - masks->alpha_mask = 0; - masks->red_mask = 0; - masks->green_mask = 0; - masks->blue_mask = 0; - return; - } -} - -/* XXX: This function really should be eliminated. We don't really - * want to advertise a cairo image surface that supports any possible - * format. A minimal step would be to replace this function with one - * that accepts a #cairo_internal_format_t rather than mask values. */ -cairo_surface_t * -_cairo_image_surface_create_with_masks (unsigned char *data, - cairo_format_masks_t *masks, - int width, - int height, - int stride) -{ - cairo_int_status_t status; - pixman_format_code_t pixman_format; - - status = _pixman_format_from_masks (masks, &pixman_format); - if (status == CAIRO_INT_STATUS_UNSUPPORTED) { - fprintf (stderr, - "Error: Cairo " PACKAGE_VERSION " does not yet support the requested image format:\n" - "\tDepth: %d\n" - "\tAlpha mask: 0x%08lx\n" - "\tRed mask: 0x%08lx\n" - "\tGreen mask: 0x%08lx\n" - "\tBlue mask: 0x%08lx\n" - "Please file an enhancement request (quoting the above) at:\n" - PACKAGE_BUGREPORT "\n", - masks->bpp, masks->alpha_mask, - masks->red_mask, masks->green_mask, masks->blue_mask); - - ASSERT_NOT_REACHED; - } - - return _cairo_image_surface_create_with_pixman_format (data, - pixman_format, - width, - height, - stride); -} - -static pixman_format_code_t -_cairo_format_to_pixman_format_code (cairo_format_t format) -{ - pixman_format_code_t ret; - switch (format) { - case CAIRO_FORMAT_A1: - ret = PIXMAN_a1; - break; - case CAIRO_FORMAT_A8: - ret = PIXMAN_a8; - break; - case CAIRO_FORMAT_RGB24: - ret = PIXMAN_x8r8g8b8; - break; - case CAIRO_FORMAT_ARGB32: - default: - ret = PIXMAN_a8r8g8b8; - break; - } - return ret; -} - -cairo_surface_t * -_cairo_image_surface_create_with_pixman_format (unsigned char *data, - pixman_format_code_t pixman_format, - int width, - int height, - int stride) -{ - cairo_surface_t *surface; - pixman_image_t *pixman_image; - - pixman_image = pixman_image_create_bits (pixman_format, width, height, - (uint32_t *) data, stride); - - if (pixman_image == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - surface = _cairo_image_surface_create_for_pixman_image (pixman_image, - pixman_format); - if (cairo_surface_status (surface)) - pixman_image_unref (pixman_image); - - return surface; -} - -/** - * cairo_image_surface_create: - * @format: format of pixels in the surface to create - * @width: width of the surface, in pixels - * @height: height of the surface, in pixels - * - * Creates an image surface of the specified format and - * dimensions. Initially the surface contents are all - * 0. (Specifically, within each pixel, each color or alpha channel - * belonging to format will be 0. The contents of bits within a pixel, - * but not belonging to the given format are undefined). - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - **/ -cairo_surface_t * -cairo_image_surface_create (cairo_format_t format, - int width, - int height) -{ - pixman_format_code_t pixman_format; - - if (! CAIRO_FORMAT_VALID (format)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); - - pixman_format = _cairo_format_to_pixman_format_code (format); - - return _cairo_image_surface_create_with_pixman_format (NULL, pixman_format, - width, height, -1); -} -slim_hidden_def (cairo_image_surface_create); - -cairo_surface_t * -_cairo_image_surface_create_with_content (cairo_content_t content, - int width, - int height) -{ - if (! CAIRO_CONTENT_VALID (content)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_CONTENT)); - - return cairo_image_surface_create (_cairo_format_from_content (content), - width, height); -} - -/** - * cairo_format_stride_for_width: - * @format: A #cairo_format_t value - * @width: The desired width of an image surface to be created. - * - * This function provides a stride value that will respect all - * alignment requirements of the accelerated image-rendering code - * within cairo. Typical usage will be of the form: - * - * - * int stride; - * unsigned char *data; - * #cairo_surface_t *surface; - * - * stride = cairo_format_stride_for_width (format, width); - * data = malloc (stride * height); - * surface = cairo_image_surface_create_for_data (data, format, - * width, height); - * - * - * Return value: the appropriate stride to use given the desired - * format and width, or -1 if either the format is invalid or the width - * too large. - * - * Since: 1.6 - **/ -int -cairo_format_stride_for_width (cairo_format_t format, - int width) -{ - int bpp; - - if (! CAIRO_FORMAT_VALID (format)) { - _cairo_error_throw (CAIRO_STATUS_INVALID_FORMAT); - return -1; - } - - bpp = _cairo_format_bits_per_pixel (format); - if ((unsigned) (width) >= (INT32_MAX - 7) / (unsigned) (bpp)) - return -1; - - return CAIRO_STRIDE_FOR_WIDTH_BPP (width, bpp); -} -slim_hidden_def (cairo_format_stride_for_width); - -/** - * cairo_image_surface_create_for_data: - * @data: a pointer to a buffer supplied by the application in which - * to write contents. This pointer must be suitably aligned for any - * kind of variable, (for example, a pointer returned by malloc). - * @format: the format of pixels in the buffer - * @width: the width of the image to be stored in the buffer - * @height: the height of the image to be stored in the buffer - * @stride: the number of bytes between the start of rows in the - * buffer as allocated. This value should always be computed by - * cairo_format_stride_for_width() before allocating the data - * buffer. - * - * Creates an image surface for the provided pixel data. The output - * buffer must be kept around until the #cairo_surface_t is destroyed - * or cairo_surface_finish() is called on the surface. The initial - * contents of @buffer will be used as the initial image contents; you - * must explicitly clear the buffer, using, for example, - * cairo_rectangle() and cairo_fill() if you want it cleared. - * - * Note that the stride may be larger than - * width*bytes_per_pixel to provide proper alignment for each pixel - * and row. This alignment is required to allow high-performance rendering - * within cairo. The correct way to obtain a legal stride value is to - * call cairo_format_stride_for_width() with the desired format and - * maximum image width value, and the use the resulting stride value - * to allocate the data and to create the image surface. See - * cairo_format_stride_for_width() for example code. - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface in the case of an error such as out of - * memory or an invalid stride value. In case of invalid stride value - * the error status of the returned surface will be - * %CAIRO_STATUS_INVALID_STRIDE. You can use - * cairo_surface_status() to check for this. - * - * See cairo_surface_set_user_data() for a means of attaching a - * destroy-notification fallback to the surface if necessary. - **/ -cairo_surface_t * -cairo_image_surface_create_for_data (unsigned char *data, - cairo_format_t format, - int width, - int height, - int stride) -{ - pixman_format_code_t pixman_format; - - if (! CAIRO_FORMAT_VALID (format)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); - - if ((stride & (CAIRO_STRIDE_ALIGNMENT-1)) != 0) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_STRIDE)); - - pixman_format = _cairo_format_to_pixman_format_code (format); - - return _cairo_image_surface_create_with_pixman_format (data, pixman_format, - width, height, stride); -} -slim_hidden_def (cairo_image_surface_create_for_data); - -cairo_surface_t * -_cairo_image_surface_create_for_data_with_content (unsigned char *data, - cairo_content_t content, - int width, - int height, - int stride) -{ - if (! CAIRO_CONTENT_VALID (content)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_CONTENT)); - - return cairo_image_surface_create_for_data (data, - _cairo_format_from_content (content), - width, height, stride); -} - -/** - * cairo_image_surface_get_data: - * @surface: a #cairo_image_surface_t - * - * Get a pointer to the data of the image surface, for direct - * inspection or modification. - * - * Return value: a pointer to the image data of this surface or %NULL - * if @surface is not an image surface. - * - * Since: 1.2 - **/ -unsigned char * -cairo_image_surface_get_data (cairo_surface_t *surface) -{ - cairo_image_surface_t *image_surface = (cairo_image_surface_t *) surface; - - if (! _cairo_surface_is_image (surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return NULL; - } - - return image_surface->data; -} -slim_hidden_def (cairo_image_surface_get_data); - -/** - * cairo_image_surface_get_format: - * @surface: a #cairo_image_surface_t - * - * Get the format of the surface. - * - * Return value: the format of the surface - * - * Since: 1.2 - **/ -cairo_format_t -cairo_image_surface_get_format (cairo_surface_t *surface) -{ - cairo_image_surface_t *image_surface = (cairo_image_surface_t *) surface; - - if (! _cairo_surface_is_image (surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return 0; - } - - assert (CAIRO_FORMAT_VALID (image_surface->format)); - - return image_surface->format; -} - -/** - * cairo_image_surface_get_width: - * @surface: a #cairo_image_surface_t - * - * Get the width of the image surface in pixels. - * - * Return value: the width of the surface in pixels. - **/ -int -cairo_image_surface_get_width (cairo_surface_t *surface) -{ - cairo_image_surface_t *image_surface = (cairo_image_surface_t *) surface; - - if (! _cairo_surface_is_image (surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return 0; - } - - return image_surface->width; -} -slim_hidden_def (cairo_image_surface_get_width); - -/** - * cairo_image_surface_get_height: - * @surface: a #cairo_image_surface_t - * - * Get the height of the image surface in pixels. - * - * Return value: the height of the surface in pixels. - **/ -int -cairo_image_surface_get_height (cairo_surface_t *surface) -{ - cairo_image_surface_t *image_surface = (cairo_image_surface_t *) surface; - - if (! _cairo_surface_is_image (surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return 0; - } - - return image_surface->height; -} -slim_hidden_def (cairo_image_surface_get_height); - -/** - * cairo_image_surface_get_stride: - * @surface: a #cairo_image_surface_t - * - * Get the stride of the image surface in bytes - * - * Return value: the stride of the image surface in bytes (or 0 if - * @surface is not an image surface). The stride is the distance in - * bytes from the beginning of one row of the image data to the - * beginning of the next row. - * - * Since: 1.2 - **/ -int -cairo_image_surface_get_stride (cairo_surface_t *surface) -{ - - cairo_image_surface_t *image_surface = (cairo_image_surface_t *) surface; - - if (! _cairo_surface_is_image (surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return 0; - } - - return image_surface->stride; -} -slim_hidden_def (cairo_image_surface_get_stride); - -cairo_format_t -_cairo_format_from_content (cairo_content_t content) -{ - switch (content) { - case CAIRO_CONTENT_COLOR: - return CAIRO_FORMAT_RGB24; - case CAIRO_CONTENT_ALPHA: - return CAIRO_FORMAT_A8; - case CAIRO_CONTENT_COLOR_ALPHA: - return CAIRO_FORMAT_ARGB32; - } - - ASSERT_NOT_REACHED; - return CAIRO_FORMAT_ARGB32; -} - -cairo_content_t -_cairo_content_from_format (cairo_format_t format) -{ - switch (format) { - case CAIRO_FORMAT_ARGB32: - return CAIRO_CONTENT_COLOR_ALPHA; - case CAIRO_FORMAT_RGB24: - return CAIRO_CONTENT_COLOR; - case CAIRO_FORMAT_A8: - case CAIRO_FORMAT_A1: - return CAIRO_CONTENT_ALPHA; - } - - ASSERT_NOT_REACHED; - return CAIRO_CONTENT_COLOR_ALPHA; -} - -int -_cairo_format_bits_per_pixel (cairo_format_t format) -{ - switch (format) { - case CAIRO_FORMAT_ARGB32: - return 32; - case CAIRO_FORMAT_RGB24: - return 32; - case CAIRO_FORMAT_A8: - return 8; - case CAIRO_FORMAT_A1: - return 1; - default: - ASSERT_NOT_REACHED; - return 0; - } -} - -static cairo_surface_t * -_cairo_image_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - assert (CAIRO_CONTENT_VALID (content)); - - return _cairo_image_surface_create_with_content (content, - width, height); -} - -static cairo_status_t -_cairo_image_surface_finish (void *abstract_surface) -{ - cairo_image_surface_t *surface = abstract_surface; - - if (surface->pixman_image) { - pixman_image_unref (surface->pixman_image); - surface->pixman_image = NULL; - } - - if (surface->owns_data) { - free (surface->data); - surface->data = NULL; - } - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_image_surface_assume_ownership_of_data (cairo_image_surface_t *surface) -{ - surface->owns_data = 1; -} - -static cairo_status_t -_cairo_image_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - *image_out = abstract_surface; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_image_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ -} - -static cairo_status_t -_cairo_image_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra) -{ - cairo_image_surface_t *surface = abstract_surface; - - image_rect_out->x = 0; - image_rect_out->y = 0; - image_rect_out->width = surface->width; - image_rect_out->height = surface->height; - - *image_out = surface; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_image_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ -} - -static cairo_status_t -_cairo_image_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_image_surface_t *surface = abstract_surface; - - if (src->backend == surface->base.backend) { - *clone_out = cairo_surface_reference (src); - - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_status_t -_cairo_image_surface_set_matrix (cairo_image_surface_t *surface, - const cairo_matrix_t *matrix) -{ - pixman_transform_t pixman_transform; - - _cairo_matrix_to_pixman_matrix (matrix, &pixman_transform); - - if (! pixman_image_set_transform (surface->pixman_image, &pixman_transform)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_image_surface_set_filter (cairo_image_surface_t *surface, cairo_filter_t filter) -{ - pixman_filter_t pixman_filter; - - switch (filter) { - case CAIRO_FILTER_FAST: - pixman_filter = PIXMAN_FILTER_FAST; - break; - case CAIRO_FILTER_GOOD: - pixman_filter = PIXMAN_FILTER_GOOD; - break; - case CAIRO_FILTER_BEST: - pixman_filter = PIXMAN_FILTER_BEST; - break; - case CAIRO_FILTER_NEAREST: - pixman_filter = PIXMAN_FILTER_NEAREST; - break; - case CAIRO_FILTER_BILINEAR: - pixman_filter = PIXMAN_FILTER_BILINEAR; - break; - case CAIRO_FILTER_GAUSSIAN: - /* XXX: The GAUSSIAN value has no implementation in cairo - * whatsoever, so it was really a mistake to have it in the - * API. We could fix this by officially deprecating it, or - * else inventing semantics and providing an actual - * implementation for it. */ - default: - pixman_filter = PIXMAN_FILTER_BEST; - } - - pixman_image_set_filter (surface->pixman_image, pixman_filter, NULL, 0); -} - -static cairo_status_t -_cairo_image_surface_set_attributes (cairo_image_surface_t *surface, - cairo_surface_attributes_t *attributes) -{ - cairo_int_status_t status; - - status = _cairo_image_surface_set_matrix (surface, &attributes->matrix); - if (status) - return status; - - switch (attributes->extend) { - case CAIRO_EXTEND_NONE: - pixman_image_set_repeat (surface->pixman_image, PIXMAN_REPEAT_NONE); - break; - case CAIRO_EXTEND_REPEAT: - pixman_image_set_repeat (surface->pixman_image, PIXMAN_REPEAT_NORMAL); - break; - case CAIRO_EXTEND_REFLECT: - pixman_image_set_repeat (surface->pixman_image, PIXMAN_REPEAT_REFLECT); - break; - case CAIRO_EXTEND_PAD: - pixman_image_set_repeat (surface->pixman_image, PIXMAN_REPEAT_PAD); - break; - } - - _cairo_image_surface_set_filter (surface, attributes->filter); - - return CAIRO_STATUS_SUCCESS; -} - -/* XXX: I think we should fix pixman to match the names/order of the - * cairo operators, but that will likely be better done at the same - * time the X server is ported to pixman, (which will change a lot of - * things in pixman I think). - */ -static pixman_op_t -_pixman_operator (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - return PIXMAN_OP_CLEAR; - - case CAIRO_OPERATOR_SOURCE: - return PIXMAN_OP_SRC; - case CAIRO_OPERATOR_OVER: - return PIXMAN_OP_OVER; - case CAIRO_OPERATOR_IN: - return PIXMAN_OP_IN; - case CAIRO_OPERATOR_OUT: - return PIXMAN_OP_OUT; - case CAIRO_OPERATOR_ATOP: - return PIXMAN_OP_ATOP; - - case CAIRO_OPERATOR_DEST: - return PIXMAN_OP_DST; - case CAIRO_OPERATOR_DEST_OVER: - return PIXMAN_OP_OVER_REVERSE; - case CAIRO_OPERATOR_DEST_IN: - return PIXMAN_OP_IN_REVERSE; - case CAIRO_OPERATOR_DEST_OUT: - return PIXMAN_OP_OUT_REVERSE; - case CAIRO_OPERATOR_DEST_ATOP: - return PIXMAN_OP_ATOP_REVERSE; - - case CAIRO_OPERATOR_XOR: - return PIXMAN_OP_XOR; - case CAIRO_OPERATOR_ADD: - return PIXMAN_OP_ADD; - case CAIRO_OPERATOR_SATURATE: - return PIXMAN_OP_SATURATE; - default: - return PIXMAN_OP_OVER; - } -} - -static cairo_int_status_t -_cairo_image_surface_composite (cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_pattern_t *mask_pattern, - void *abstract_dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_surface_attributes_t src_attr, mask_attr; - cairo_image_surface_t *dst = abstract_dst; - cairo_image_surface_t *src; - cairo_image_surface_t *mask; - cairo_int_status_t status; - - status = _cairo_pattern_acquire_surfaces (src_pattern, mask_pattern, - &dst->base, - src_x, src_y, - mask_x, mask_y, - width, height, - (cairo_surface_t **) &src, - (cairo_surface_t **) &mask, - &src_attr, &mask_attr); - if (status) - return status; - - status = _cairo_image_surface_set_attributes (src, &src_attr); - if (status) - goto CLEANUP_SURFACES; - - if (mask) - { - status = _cairo_image_surface_set_attributes (mask, &mask_attr); - if (status) - goto CLEANUP_SURFACES; - - pixman_image_composite (_pixman_operator (op), - src->pixman_image, - mask->pixman_image, - dst->pixman_image, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - mask_x + mask_attr.x_offset, - mask_y + mask_attr.y_offset, - dst_x, dst_y, - width, height); - } - else - { - pixman_image_composite (_pixman_operator (op), - src->pixman_image, - NULL, - dst->pixman_image, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - } - - if (! _cairo_operator_bounded_by_source (op)) - status = _cairo_surface_composite_fixup_unbounded (&dst->base, - &src_attr, src->width, src->height, - mask ? &mask_attr : NULL, - mask ? mask->width : 0, - mask ? mask->height : 0, - src_x, src_y, - mask_x, mask_y, - dst_x, dst_y, width, height); - - CLEANUP_SURFACES: - if (mask) - _cairo_pattern_release_surface (mask_pattern, &mask->base, &mask_attr); - - _cairo_pattern_release_surface (src_pattern, &src->base, &src_attr); - - return status; -} - -static cairo_int_status_t -_cairo_image_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects) -{ - cairo_image_surface_t *surface = abstract_surface; - - pixman_color_t pixman_color; - pixman_rectangle16_t stack_rects[CAIRO_STACK_ARRAY_LENGTH (pixman_rectangle16_t)]; - pixman_rectangle16_t *pixman_rects = stack_rects; - int i; - - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - - pixman_color.red = color->red_short; - pixman_color.green = color->green_short; - pixman_color.blue = color->blue_short; - pixman_color.alpha = color->alpha_short; - - if (num_rects > ARRAY_LENGTH (stack_rects)) { - pixman_rects = _cairo_malloc_ab (num_rects, sizeof (pixman_rectangle16_t)); - if (pixman_rects == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < num_rects; i++) { - pixman_rects[i].x = rects[i].x; - pixman_rects[i].y = rects[i].y; - pixman_rects[i].width = rects[i].width; - pixman_rects[i].height = rects[i].height; - } - - /* XXX: pixman_fill_rectangles() should be implemented */ - if (! pixman_image_fill_rectangles (_pixman_operator (op), - surface->pixman_image, - &pixman_color, - num_rects, - pixman_rects)) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - if (pixman_rects != stack_rects) - free (pixman_rects); - - return status; -} - -static cairo_int_status_t -_cairo_image_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - void *abstract_dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps) -{ - cairo_surface_attributes_t attributes; - cairo_image_surface_t *dst = abstract_dst; - cairo_image_surface_t *src; - cairo_int_status_t status; - pixman_image_t *mask; - pixman_format_code_t format; - uint32_t *mask_data; - pixman_trapezoid_t stack_traps[CAIRO_STACK_ARRAY_LENGTH (pixman_trapezoid_t)]; - pixman_trapezoid_t *pixman_traps = stack_traps; - int mask_stride; - int mask_bpp; - int ret, i; - - if (height == 0 || width == 0) - return CAIRO_STATUS_SUCCESS; - - /* Convert traps to pixman traps */ - if (num_traps > ARRAY_LENGTH (stack_traps)) { - pixman_traps = _cairo_malloc_ab (num_traps, sizeof (pixman_trapezoid_t)); - if (pixman_traps == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < num_traps; i++) { - pixman_traps[i].top = _cairo_fixed_to_16_16 (traps[i].top); - pixman_traps[i].bottom = _cairo_fixed_to_16_16 (traps[i].bottom); - pixman_traps[i].left.p1.x = _cairo_fixed_to_16_16 (traps[i].left.p1.x); - pixman_traps[i].left.p1.y = _cairo_fixed_to_16_16 (traps[i].left.p1.y); - pixman_traps[i].left.p2.x = _cairo_fixed_to_16_16 (traps[i].left.p2.x); - pixman_traps[i].left.p2.y = _cairo_fixed_to_16_16 (traps[i].left.p2.y); - pixman_traps[i].right.p1.x = _cairo_fixed_to_16_16 (traps[i].right.p1.x); - pixman_traps[i].right.p1.y = _cairo_fixed_to_16_16 (traps[i].right.p1.y); - pixman_traps[i].right.p2.x = _cairo_fixed_to_16_16 (traps[i].right.p2.x); - pixman_traps[i].right.p2.y = _cairo_fixed_to_16_16 (traps[i].right.p2.y); - } - - /* Special case adding trapezoids onto a mask surface; we want to avoid - * creating an intermediate temporary mask unnecessarily. - * - * We make the assumption here that the portion of the trapezoids - * contained within the surface is bounded by [dst_x,dst_y,width,height]; - * the Cairo core code passes bounds based on the trapezoid extents. - * - * Currently the check surface->has_clip is needed for correct - * functioning, since pixman_add_trapezoids() doesn't obey the - * surface clip, which is a libpixman bug , but there's no harm in - * falling through to the general case when the surface is clipped - * since libpixman would have to generate an intermediate mask anyways. - */ - if (op == CAIRO_OPERATOR_ADD && - _cairo_pattern_is_opaque_solid (pattern) && - dst->base.content == CAIRO_CONTENT_ALPHA && - ! dst->has_clip && - antialias != CAIRO_ANTIALIAS_NONE) - { - pixman_add_trapezoids (dst->pixman_image, 0, 0, - num_traps, pixman_traps); - status = CAIRO_STATUS_SUCCESS; - goto finish; - } - - status = _cairo_pattern_acquire_surface (pattern, &dst->base, - src_x, src_y, width, height, - (cairo_surface_t **) &src, - &attributes); - if (status) - goto finish; - - status = _cairo_image_surface_set_attributes (src, &attributes); - if (status) - goto CLEANUP_SOURCE; - - switch (antialias) { - case CAIRO_ANTIALIAS_NONE: - format = PIXMAN_a1; - ret = 1; - mask_stride = ((width + 31) / 8) & ~0x03; - mask_bpp = 1; - break; - case CAIRO_ANTIALIAS_GRAY: - case CAIRO_ANTIALIAS_SUBPIXEL: - case CAIRO_ANTIALIAS_DEFAULT: - default: - format = PIXMAN_a8; - ret = 1; - mask_stride = (width + 3) & ~3; - mask_bpp = 8; - break; - } - - /* The image must be initially transparent */ - mask_data = calloc (mask_stride, height); - if (mask_data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_SOURCE; - } - - mask = pixman_image_create_bits (format, width, height, - mask_data, mask_stride); - if (mask == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_IMAGE_DATA; - } - - pixman_add_trapezoids (mask, - dst_x, - dst_y, - num_traps, pixman_traps); - - pixman_image_composite (_pixman_operator (op), - src->pixman_image, - mask, - dst->pixman_image, - src_x + attributes.x_offset, - src_y + attributes.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - - if (! _cairo_operator_bounded_by_mask (op)) - status = _cairo_surface_composite_shape_fixup_unbounded (&dst->base, - &attributes, src->width, src->height, - width, height, - src_x, src_y, - 0, 0, - dst_x, dst_y, width, height); - pixman_image_unref (mask); - - CLEANUP_IMAGE_DATA: - free (mask_data); - - CLEANUP_SOURCE: - _cairo_pattern_release_surface (pattern, &src->base, &attributes); - - finish: - if (pixman_traps != stack_traps) - free (pixman_traps); - - return status; -} - -cairo_int_status_t -_cairo_image_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - cairo_image_surface_t *surface = (cairo_image_surface_t *) abstract_surface; - - if (! pixman_image_set_clip_region (surface->pixman_image, ®ion->rgn)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - surface->has_clip = region != NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_image_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_image_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - rectangle->width = surface->width; - rectangle->height = surface->height; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_image_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - _cairo_font_options_init_default (options); - - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); -} - -static cairo_status_t -_cairo_image_surface_reset (void *abstract_surface) -{ - cairo_image_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _cairo_image_surface_set_clip_region (surface, NULL); - assert (status == CAIRO_STATUS_SUCCESS); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_surface_is_image: - * @surface: a #cairo_surface_t - * - * Checks if a surface is an #cairo_image_surface_t - * - * Return value: %TRUE if the surface is an image surface - **/ -cairo_bool_t -_cairo_surface_is_image (const cairo_surface_t *surface) -{ - return surface->backend == &cairo_image_surface_backend; -} - -const cairo_surface_backend_t cairo_image_surface_backend = { - CAIRO_SURFACE_TYPE_IMAGE, - _cairo_image_surface_create_similar, - _cairo_image_surface_finish, - _cairo_image_surface_acquire_source_image, - _cairo_image_surface_release_source_image, - _cairo_image_surface_acquire_dest_image, - _cairo_image_surface_release_dest_image, - _cairo_image_surface_clone_similar, - _cairo_image_surface_composite, - _cairo_image_surface_fill_rectangles, - _cairo_image_surface_composite_trapezoids, - NULL, /* copy_page */ - NULL, /* show_page */ - _cairo_image_surface_set_clip_region, - NULL, /* intersect_clip_path */ - _cairo_image_surface_get_extents, - NULL, /* old_show_glyphs */ - _cairo_image_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* font_fini */ - NULL, /* glyph_fini */ - - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - NULL, /* show_glyphs */ - NULL, /* snapshot */ - NULL, /* is_similar */ - - _cairo_image_surface_reset -}; - -/* A convenience function for when one needs to coerce an image - * surface to an alternate format. */ -cairo_image_surface_t * -_cairo_image_surface_clone (cairo_image_surface_t *surface, - cairo_format_t format) -{ - cairo_image_surface_t *clone; - cairo_status_t status; - cairo_t *cr; - double x, y; - - clone = (cairo_image_surface_t *) - cairo_image_surface_create (format, - surface->width, surface->height); - - cairo_surface_get_device_offset (&surface->base, &x, &y); - cairo_surface_set_device_offset (&clone->base, x, y); - clone->transparency = CAIRO_IMAGE_UNKNOWN; - - /* XXX Use _cairo_surface_composite directly */ - cr = cairo_create (&clone->base); - cairo_set_source_surface (cr, &surface->base, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - status = cairo_status (cr); - cairo_destroy (cr); - - if (status) { - cairo_surface_destroy (&clone->base); - return (cairo_image_surface_t *) _cairo_surface_create_in_error (status); - } - - return clone; -} - -cairo_image_transparency_t -_cairo_image_analyze_transparency (cairo_image_surface_t *image) -{ - int x, y; - - if (image->transparency != CAIRO_IMAGE_UNKNOWN) - return image->transparency; - - if (image->format == CAIRO_FORMAT_RGB24) { - image->transparency = CAIRO_IMAGE_IS_OPAQUE; - return CAIRO_IMAGE_IS_OPAQUE; - } - - if (image->format != CAIRO_FORMAT_ARGB32) { - image->transparency = CAIRO_IMAGE_HAS_ALPHA; - return CAIRO_IMAGE_HAS_ALPHA; - } - - image->transparency = CAIRO_IMAGE_IS_OPAQUE; - for (y = 0; y < image->height; y++) { - uint32_t *pixel = (uint32_t *) (image->data + y * image->stride); - - for (x = 0; x < image->width; x++, pixel++) { - int a = (*pixel & 0xff000000) >> 24; - if (a > 0 && a < 255) { - image->transparency = CAIRO_IMAGE_HAS_ALPHA; - return CAIRO_IMAGE_HAS_ALPHA; - } else if (a == 0) { - image->transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; - } - } - } - - return image->transparency; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairoint.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairoint.h --- libgdiplus-4.0-2.10.9/cairo/src/cairoint.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairoint.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,2362 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -/* - * These definitions are solely for use by the implementation of cairo - * and constitute no kind of standard. If you need any of these - * functions, please drop me a note. Either the library needs new - * functionality, or there's a way to do what you need using the - * existing published interfaces. cworth@cworth.org - */ - -#ifndef _CAIROINT_H_ -#define _CAIROINT_H_ - -#include "cairo-embed.h" - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#define _USE_MATH_DEFINES -#endif -#include -#include -#include - -#include "cairo.h" -#include - -#include "cairo-compiler-private.h" - -CAIRO_BEGIN_DECLS - -#ifdef _WIN32 -cairo_private FILE * -_cairo_win32_tmpfile (void); -#define tmpfile() _cairo_win32_tmpfile() -#endif - -#undef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) - -#undef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#ifndef M_SQRT2 -#define M_SQRT2 1.41421356237309504880 -#endif - -#ifndef M_SQRT1_2 -#define M_SQRT1_2 0.707106781186547524400844362104849039 -#endif - -#undef ARRAY_LENGTH -#define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0]))) - - -/* This has to be updated whenever #cairo_status_t is extended. That's - * a bit of a pain, but it should be easy to always catch as long as - * one adds a new test case to test a trigger of the new status value. - */ -#define CAIRO_STATUS_LAST_STATUS CAIRO_STATUS_INVALID_STRIDE - - -/* Size in bytes of buffer to use off the stack per functions. - * Mostly used by text functions. For larger allocations, they'll - * malloc(). */ -#ifndef CAIRO_STACK_BUFFER_SIZE -#define CAIRO_STACK_BUFFER_SIZE (512 * sizeof (int)) -#endif - -#define CAIRO_STACK_ARRAY_LENGTH(T) (CAIRO_STACK_BUFFER_SIZE / sizeof(T)) - -#define ASSERT_NOT_REACHED \ -do { \ - static const int NOT_REACHED = 0; \ - assert (NOT_REACHED); \ -} while (0) - -#define CAIRO_ALPHA_IS_OPAQUE(alpha) ((alpha) >= ((double)0xff00 / (double)0xffff)) -#define CAIRO_ALPHA_SHORT_IS_OPAQUE(alpha) ((alpha) >= 0xff00) -#define CAIRO_ALPHA_IS_ZERO(alpha) ((alpha) <= 0.0) - -#define CAIRO_COLOR_IS_OPAQUE(color) CAIRO_ALPHA_SHORT_IS_OPAQUE ((color)->alpha_short) - -/* Reverse the bits in a byte with 7 operations (no 64-bit): - * Devised by Sean Anderson, July 13, 2001. - * Source: http://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits - */ -#define CAIRO_BITSWAP8(c) ((((c) * 0x0802LU & 0x22110LU) | ((c) * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16) - -/* Return the number of 1 bits in mask. - * - * GCC 3.4 supports a "population count" builtin, which on many targets is - * implemented with a single instruction. There is a fallback definition - * in libgcc in case a target does not have one, which should be just as - * good as the open-coded solution below, (which is "HACKMEM 169"). - */ -static inline int -_cairo_popcount (uint32_t mask) -{ -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) - return __builtin_popcount (mask); -#else - register int y; - - y = (mask >> 1) &033333333333; - y = mask - y - ((y >>1) & 033333333333); - return (((y + (y >> 3)) & 030707070707) % 077); -#endif -} - -#ifdef WORDS_BIGENDIAN -#define CAIRO_BITSWAP8_IF_LITTLE_ENDIAN(c) (c) -#else -#define CAIRO_BITSWAP8_IF_LITTLE_ENDIAN(c) CAIRO_BITSWAP8(c) -#endif - -#ifdef WORDS_BIGENDIAN - -#define cpu_to_be16(v) (v) -#define be16_to_cpu(v) (v) -#define cpu_to_be32(v) (v) -#define be32_to_cpu(v) (v) - -#else - -static inline uint16_t -cpu_to_be16(uint16_t v) -{ - return (v << 8) | (v >> 8); -} - -static inline uint16_t -be16_to_cpu(uint16_t v) -{ - return cpu_to_be16 (v); -} - -static inline uint32_t -cpu_to_be32(uint32_t v) -{ - return (cpu_to_be16 (v) << 16) | cpu_to_be16 (v >> 16); -} - -static inline uint32_t -be32_to_cpu(uint32_t v) -{ - return cpu_to_be32 (v); -} - -#endif - -#include "cairo-types-private.h" -#include "cairo-cache-private.h" -#include "cairo-reference-count-private.h" - -cairo_private void -_cairo_box_round_to_rectangle (cairo_box_t *box, cairo_rectangle_int_t *rectangle); - -cairo_private void -_cairo_rectangle_intersect (cairo_rectangle_int_t *dest, cairo_rectangle_int_t *src); - -cairo_private cairo_bool_t -_cairo_box_intersects_line_segment (cairo_box_t *box, cairo_line_t *line); - -cairo_private cairo_bool_t -_cairo_box_contains_point (cairo_box_t *box, cairo_point_t *point); - -/* cairo_array.c structures and functions */ - -cairo_private void -_cairo_array_init (cairo_array_t *array, int element_size); - -cairo_private void -_cairo_array_init_snapshot (cairo_array_t *array, - const cairo_array_t *other); - -cairo_private void -_cairo_array_fini (cairo_array_t *array); - -cairo_private cairo_status_t -_cairo_array_grow_by (cairo_array_t *array, unsigned int additional); - -cairo_private void -_cairo_array_truncate (cairo_array_t *array, unsigned int num_elements); - -cairo_private cairo_status_t -_cairo_array_append (cairo_array_t *array, const void *element); - -cairo_private cairo_status_t -_cairo_array_append_multiple (cairo_array_t *array, - const void *elements, - int num_elements); - -cairo_private cairo_status_t -_cairo_array_allocate (cairo_array_t *array, - unsigned int num_elements, - void **elements); - -cairo_private void * -_cairo_array_index (cairo_array_t *array, unsigned int index); - -cairo_private void -_cairo_array_copy_element (cairo_array_t *array, int index, void *dst); - -cairo_private int -_cairo_array_num_elements (cairo_array_t *array); - -cairo_private int -_cairo_array_size (cairo_array_t *array); - -cairo_private void -_cairo_user_data_array_init (cairo_user_data_array_t *array); - -cairo_private void -_cairo_user_data_array_fini (cairo_user_data_array_t *array); - -cairo_private void * -_cairo_user_data_array_get_data (cairo_user_data_array_t *array, - const cairo_user_data_key_t *key); - -cairo_private cairo_status_t -_cairo_user_data_array_set_data (cairo_user_data_array_t *array, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_private unsigned long -_cairo_hash_string (const char *c); - -typedef struct _cairo_unscaled_font_backend cairo_unscaled_font_backend_t; - -/* - * A #cairo_unscaled_font_t is just an opaque handle we use in the - * glyph cache. - */ -typedef struct _cairo_unscaled_font { - cairo_hash_entry_t hash_entry; - cairo_reference_count_t ref_count; - const cairo_unscaled_font_backend_t *backend; -} cairo_unscaled_font_t; - -typedef struct _cairo_scaled_glyph { - cairo_cache_entry_t cache_entry; /* hash is glyph index */ - cairo_scaled_font_t *scaled_font; /* font the glyph lives in */ - cairo_text_extents_t metrics; /* user-space metrics */ - cairo_box_t bbox; /* device-space bounds */ - int16_t x_advance; /* device-space rounded X advance */ - int16_t y_advance; /* device-space rounded Y advance */ - cairo_image_surface_t *surface; /* device-space image */ - cairo_path_fixed_t *path; /* device-space outline */ - void *surface_private; /* for the surface backend */ -} cairo_scaled_glyph_t; - -#define _cairo_scaled_glyph_index(g) ((g)->cache_entry.hash) -#define _cairo_scaled_glyph_set_index(g,i) ((g)->cache_entry.hash = (i)) - -#include "cairo-scaled-font-private.h" - -struct _cairo_font_face { - /* hash_entry must be first */ - cairo_hash_entry_t hash_entry; - cairo_status_t status; - cairo_reference_count_t ref_count; - cairo_user_data_array_t user_data; - const cairo_font_face_backend_t *backend; -}; - -cairo_private void -_cairo_font_reset_static_data (void); - -cairo_private void -_cairo_ft_font_reset_static_data (void); - -/* the font backend interface */ - -struct _cairo_unscaled_font_backend { - void (*destroy) (void *unscaled_font); -}; - -/* #cairo_toy_font_face_t - simple family/slant/weight font faces used for - * the built-in font API - */ - -typedef struct _cairo_toy_font_face { - cairo_font_face_t base; - const char *family; - cairo_bool_t owns_family; - cairo_font_slant_t slant; - cairo_font_weight_t weight; -} cairo_toy_font_face_t; - -typedef enum _cairo_scaled_glyph_info { - CAIRO_SCALED_GLYPH_INFO_METRICS = (1 << 0), - CAIRO_SCALED_GLYPH_INFO_SURFACE = (1 << 1), - CAIRO_SCALED_GLYPH_INFO_PATH = (1 << 2) -} cairo_scaled_glyph_info_t; - -typedef struct _cairo_scaled_font_subset { - cairo_scaled_font_t *scaled_font; - unsigned int font_id; - unsigned int subset_id; - - /* Index of glyphs array is subset_glyph_index. - * Value of glyphs array is scaled_font_glyph_index. - */ - unsigned long *glyphs; - unsigned long *to_unicode; - char **glyph_names; - unsigned int num_glyphs; - cairo_bool_t is_composite; -} cairo_scaled_font_subset_t; - -struct _cairo_scaled_font_backend { - cairo_font_type_t type; - - cairo_warn cairo_status_t - (*create_toy) (cairo_toy_font_face_t *toy_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **scaled_font); - - void - (*fini) (void *scaled_font); - - cairo_warn cairo_int_status_t - (*scaled_glyph_init) (void *scaled_font, - cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_glyph_info_t info); - - /* A backend only needs to implement this or ucs4_to_index(), not - * both. This allows the backend to do something more sophisticated - * then just converting characters one by one. - */ - cairo_warn cairo_int_status_t - (*text_to_glyphs) (void *scaled_font, - double x, - double y, - const char *utf8, - cairo_glyph_t **glyphs, - int *num_glyphs); - - unsigned long - (*ucs4_to_index) (void *scaled_font, - uint32_t ucs4); - cairo_warn cairo_int_status_t - (*show_glyphs) (void *scaled_font, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *surface, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs); - - cairo_warn cairo_int_status_t - (*load_truetype_table)(void *scaled_font, - unsigned long tag, - long offset, - unsigned char *buffer, - unsigned long *length); - - cairo_warn cairo_int_status_t - (*map_glyphs_to_unicode)(void *scaled_font, - cairo_scaled_font_subset_t *font_subset); - -}; - -struct _cairo_font_face_backend { - cairo_font_type_t type; - - /* The destroy() function is allowed to resurrect the font face - * by re-referencing. This is needed for the FreeType backend. - */ - void - (*destroy) (void *font_face); - - cairo_warn cairo_status_t - (*scaled_font_create) (void *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **scaled_font); -}; - -/* concrete font backends */ -#if CAIRO_HAS_FT_FONT - -extern const cairo_private struct _cairo_scaled_font_backend cairo_ft_scaled_font_backend; - -#endif - -#if CAIRO_HAS_WIN32_FONT - -extern const cairo_private struct _cairo_scaled_font_backend cairo_win32_scaled_font_backend; - -#endif - -#if CAIRO_HAS_QUARTZ_FONT - -extern const cairo_private struct _cairo_scaled_font_backend cairo_quartz_scaled_font_backend; - -#endif - -struct _cairo_surface_backend { - cairo_surface_type_t type; - - cairo_surface_t * - (*create_similar) (void *surface, - cairo_content_t content, - int width, - int height); - - cairo_warn cairo_status_t - (*finish) (void *surface); - - cairo_warn cairo_status_t - (*acquire_source_image) (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra); - - void - (*release_source_image) (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra); - - cairo_warn cairo_status_t - (*acquire_dest_image) (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra); - - void - (*release_dest_image) (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra); - - /* Create a new surface (@clone_out) with the following - * characteristics: - * - * 1. It is as compatible as possible with @surface (in terms of - * efficiency) - * - * 2. It has the same size as @src - * - * 3. It has the same contents as @src within the given rectangle. - */ - cairo_warn cairo_status_t - (*clone_similar) (void *surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out); - - /* XXX: dst should be the first argument for consistency */ - cairo_warn cairo_int_status_t - (*composite) (cairo_operator_t op, - cairo_pattern_t *src, - cairo_pattern_t *mask, - void *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height); - - cairo_warn cairo_int_status_t - (*fill_rectangles) (void *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects); - - /* XXX: dst should be the first argument for consistency */ - cairo_warn cairo_int_status_t - (*composite_trapezoids) (cairo_operator_t op, - cairo_pattern_t *pattern, - void *dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps); - - cairo_warn cairo_int_status_t - (*copy_page) (void *surface); - - cairo_warn cairo_int_status_t - (*show_page) (void *surface); - - /* Set given region as the clip region for the surface, replacing - * any previously set clip region. Passing in a NULL region will - * clear the surface clip region. - * - * The surface is expected to store the clip region and clip all - * following drawing operations against it until the clip region - * is cleared of replaced by another clip region. - * - * Cairo will call this function whenever a clip path can be - * represented as a device pixel aligned set of rectangles. When - * this is not possible, cairo will use mask surfaces for - * clipping. - */ - cairo_warn cairo_int_status_t - (*set_clip_region) (void *surface, - cairo_region_t *region); - - /* Intersect the given path against the clip path currently set in - * the surface, using the given fill_rule and tolerance, and set - * the result as the new clipping path for the surface. Passing - * in a NULL path will clear the surface clipping path. - * - * The surface is expected to store the resulting clip path and - * clip all following drawing operations against it until the clip - * path cleared or intersected with a new path. - * - * If a surface implements this function, set_clip_region() will - * never be called and should not be implemented. If this - * function is not implemented cairo will use set_clip_region() - * (if available) and mask surfaces for clipping. - */ - cairo_warn cairo_int_status_t - (*intersect_clip_path) (void *dst, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias); - - /* Get the extents of the current surface. For many surface types - * this will be as simple as { x=0, y=0, width=surface->width, - * height=surface->height}. - * - * This function need not take account of any clipping from - * set_clip_region since the generic version of set_clip_region - * saves those, and the generic get_clip_extents will only call - * into the specific surface->get_extents if there is no current - * clip. - */ - cairo_warn cairo_int_status_t - (*get_extents) (void *surface, - cairo_rectangle_int_t *rectangle); - - /* - * This is an optional entry to let the surface manage its own glyph - * resources. If null, render against this surface, using image - * surfaces as glyphs. - */ - cairo_warn cairo_int_status_t - (*old_show_glyphs) (cairo_scaled_font_t *font, - cairo_operator_t op, - cairo_pattern_t *pattern, - void *surface, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs); - - void - (*get_font_options) (void *surface, - cairo_font_options_t *options); - - cairo_warn cairo_status_t - (*flush) (void *surface); - - cairo_warn cairo_status_t - (*mark_dirty_rectangle) (void *surface, - int x, - int y, - int width, - int height); - - void - (*scaled_font_fini) (cairo_scaled_font_t *scaled_font); - - void - (*scaled_glyph_fini) (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font); - - /* OK, I'm starting over somewhat by defining the 5 top-level - * drawing operators for the surface backend here with consistent - * naming and argument-order conventions. */ - cairo_warn cairo_int_status_t - (*paint) (void *surface, - cairo_operator_t op, - cairo_pattern_t *source); - - cairo_warn cairo_int_status_t - (*mask) (void *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask); - - cairo_warn cairo_int_status_t - (*stroke) (void *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias); - - cairo_warn cairo_int_status_t - (*fill) (void *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias); - - cairo_warn cairo_int_status_t - (*show_glyphs) (void *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - - cairo_surface_t * - (*snapshot) (void *surface); - - cairo_bool_t - (*is_similar) (void *surface_a, - void *surface_b, - cairo_content_t content); - - cairo_warn cairo_status_t - (*reset) (void *surface); - - cairo_warn cairo_int_status_t - (*fill_stroke) (void *surface, - cairo_operator_t fill_op, - cairo_pattern_t *fill_source, - cairo_fill_rule_t fill_rule, - double fill_tolerance, - cairo_antialias_t fill_antialias, - cairo_path_fixed_t *path, - cairo_operator_t stroke_op, - cairo_pattern_t *stroke_source, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *stroke_ctm, - cairo_matrix_t *stroke_ctm_inverse, - double stroke_tolerance, - cairo_antialias_t stroke_antialias); -}; - -#include "cairo-surface-private.h" - -struct _cairo_image_surface { - cairo_surface_t base; - - pixman_format_code_t pixman_format; - cairo_format_t format; - unsigned char *data; - cairo_bool_t owns_data; - cairo_bool_t has_clip; - cairo_image_transparency_t transparency; - - int width; - int height; - int stride; - int depth; - - pixman_image_t *pixman_image; -}; - -extern const cairo_private cairo_surface_backend_t cairo_image_surface_backend; - -/* XXX: Right now, the _cairo_color structure puts unpremultiplied - color in the doubles and premultiplied color in the shorts. Yes, - this is crazy insane, (but at least we don't export this - madness). I'm still working on a cleaner API, but in the meantime, - at least this does prevent precision loss in color when changing - alpha. */ -struct _cairo_color { - double red; - double green; - double blue; - double alpha; - - unsigned short red_short; - unsigned short green_short; - unsigned short blue_short; - unsigned short alpha_short; -}; - -#define CAIRO_EXTEND_SURFACE_DEFAULT CAIRO_EXTEND_NONE -#define CAIRO_EXTEND_GRADIENT_DEFAULT CAIRO_EXTEND_PAD -#define CAIRO_FILTER_DEFAULT CAIRO_FILTER_GOOD - -struct _cairo_pattern { - cairo_pattern_type_t type; - cairo_reference_count_t ref_count; - cairo_status_t status; - cairo_user_data_array_t user_data; - - cairo_matrix_t matrix; - cairo_filter_t filter; - cairo_extend_t extend; -}; - -typedef struct _cairo_solid_pattern { - cairo_pattern_t base; - cairo_color_t color; - cairo_content_t content; -} cairo_solid_pattern_t; - -extern const cairo_private cairo_solid_pattern_t _cairo_pattern_nil; -extern const cairo_private cairo_solid_pattern_t cairo_pattern_none; - -typedef struct _cairo_surface_pattern { - cairo_pattern_t base; - - cairo_surface_t *surface; -} cairo_surface_pattern_t; - -typedef struct _cairo_gradient_stop { - double offset; - cairo_color_t color; -} cairo_gradient_stop_t; - -typedef struct _cairo_gradient_pattern { - cairo_pattern_t base; - - unsigned int n_stops; - unsigned int stops_size; - cairo_gradient_stop_t *stops; - cairo_gradient_stop_t stops_embedded[2]; -} cairo_gradient_pattern_t; - -typedef struct _cairo_linear_pattern { - cairo_gradient_pattern_t base; - - cairo_point_t p1; - cairo_point_t p2; -} cairo_linear_pattern_t; - -typedef struct _cairo_radial_pattern { - cairo_gradient_pattern_t base; - - cairo_point_t c1; - cairo_fixed_t r1; - cairo_point_t c2; - cairo_fixed_t r2; -} cairo_radial_pattern_t; - -typedef union { - cairo_gradient_pattern_t base; - - cairo_linear_pattern_t linear; - cairo_radial_pattern_t radial; -} cairo_gradient_pattern_union_t; - -typedef union { - cairo_pattern_t base; - - cairo_solid_pattern_t solid; - cairo_surface_pattern_t surface; - cairo_gradient_pattern_union_t gradient; -} cairo_pattern_union_t; - -typedef struct _cairo_surface_attributes { - cairo_matrix_t matrix; - cairo_extend_t extend; - cairo_filter_t filter; - int x_offset; - int y_offset; - cairo_bool_t acquired; - void *extra; -} cairo_surface_attributes_t; - -typedef struct _cairo_traps { - cairo_status_t status; - - cairo_box_t extents; - - int num_traps; - int traps_size; - cairo_trapezoid_t *traps; - cairo_trapezoid_t traps_embedded[1]; - - cairo_bool_t has_limits; - cairo_box_t limits; -} cairo_traps_t; - -#define CAIRO_FONT_SLANT_DEFAULT CAIRO_FONT_SLANT_NORMAL -#define CAIRO_FONT_WEIGHT_DEFAULT CAIRO_FONT_WEIGHT_NORMAL - -#define CAIRO_WIN32_FONT_FAMILY_DEFAULT "Arial" -#define CAIRO_QUARTZ_FONT_FAMILY_DEFAULT "Helvetica" -#define CAIRO_FT_FONT_FAMILY_DEFAULT "" - -#if CAIRO_HAS_WIN32_FONT - -#define CAIRO_FONT_FAMILY_DEFAULT CAIRO_WIN32_FONT_FAMILY_DEFAULT -#define CAIRO_SCALED_FONT_BACKEND_DEFAULT &cairo_win32_scaled_font_backend - -#elif CAIRO_HAS_QUARTZ_FONT - -#define CAIRO_FONT_FAMILY_DEFAULT CAIRO_QUARTZ_FONT_FAMILY_DEFAULT -#define CAIRO_SCALED_FONT_BACKEND_DEFAULT &cairo_quartz_scaled_font_backend - -#elif CAIRO_HAS_FT_FONT - -#define CAIRO_FONT_FAMILY_DEFAULT CAIRO_FT_FONT_FAMILY_DEFAULT -#define CAIRO_SCALED_FONT_BACKEND_DEFAULT &cairo_ft_scaled_font_backend - -#else - -/* Paranoia: this should have been caught by configure. */ -#error No font backends are available. - -#endif - -#define CAIRO_GSTATE_OPERATOR_DEFAULT CAIRO_OPERATOR_OVER -#define CAIRO_GSTATE_TOLERANCE_DEFAULT 0.1 -#define CAIRO_GSTATE_FILL_RULE_DEFAULT CAIRO_FILL_RULE_WINDING -#define CAIRO_GSTATE_LINE_WIDTH_DEFAULT 2.0 -#define CAIRO_GSTATE_LINE_CAP_DEFAULT CAIRO_LINE_CAP_BUTT -#define CAIRO_GSTATE_LINE_JOIN_DEFAULT CAIRO_LINE_JOIN_MITER -#define CAIRO_GSTATE_MITER_LIMIT_DEFAULT 10.0 -#define CAIRO_GSTATE_DEFAULT_FONT_SIZE 10.0 - -#define CAIRO_SURFACE_RESOLUTION_DEFAULT 72.0 -#define CAIRO_SURFACE_FALLBACK_RESOLUTION_DEFAULT 300.0 - -typedef struct _cairo_gstate cairo_gstate_t; - -typedef struct _cairo_stroke_face { - cairo_point_t ccw; - cairo_point_t point; - cairo_point_t cw; - cairo_slope_t dev_vector; - cairo_point_double_t usr_vector; -} cairo_stroke_face_t; - -/* cairo.c */ -cairo_private void -_cairo_restrict_value (double *value, double min, double max); - -cairo_private int -_cairo_lround (double d); - -/* cairo_gstate.c */ -cairo_private cairo_status_t -_cairo_gstate_init (cairo_gstate_t *gstate, - cairo_surface_t *target); - -cairo_private void -_cairo_gstate_fini (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_save (cairo_gstate_t **gstate); - -cairo_private cairo_status_t -_cairo_gstate_restore (cairo_gstate_t **gstate); - -cairo_private cairo_bool_t -_cairo_gstate_is_redirected (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child); - -cairo_private cairo_surface_t * -_cairo_gstate_get_target (cairo_gstate_t *gstate); - -cairo_private cairo_surface_t * -_cairo_gstate_get_parent_target (cairo_gstate_t *gstate); - -cairo_private cairo_surface_t * -_cairo_gstate_get_original_target (cairo_gstate_t *gstate); - -cairo_private cairo_clip_t * -_cairo_gstate_get_clip (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_source (cairo_gstate_t *gstate, cairo_pattern_t *source); - -cairo_private cairo_pattern_t * -_cairo_gstate_get_source (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_operator (cairo_gstate_t *gstate, cairo_operator_t op); - -cairo_private cairo_operator_t -_cairo_gstate_get_operator (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_tolerance (cairo_gstate_t *gstate, double tolerance); - -cairo_private double -_cairo_gstate_get_tolerance (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_fill_rule (cairo_gstate_t *gstate, cairo_fill_rule_t fill_rule); - -cairo_private cairo_fill_rule_t -_cairo_gstate_get_fill_rule (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_line_width (cairo_gstate_t *gstate, double width); - -cairo_private double -_cairo_gstate_get_line_width (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_line_cap (cairo_gstate_t *gstate, cairo_line_cap_t line_cap); - -cairo_private cairo_line_cap_t -_cairo_gstate_get_line_cap (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_line_join (cairo_gstate_t *gstate, cairo_line_join_t line_join); - -cairo_private cairo_line_join_t -_cairo_gstate_get_line_join (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_set_dash (cairo_gstate_t *gstate, const double *dash, int num_dashes, double offset); - -cairo_private void -_cairo_gstate_get_dash (cairo_gstate_t *gstate, double *dash, int *num_dashes, double *offset); - -cairo_private cairo_status_t -_cairo_gstate_set_miter_limit (cairo_gstate_t *gstate, double limit); - -cairo_private double -_cairo_gstate_get_miter_limit (cairo_gstate_t *gstate); - -cairo_private void -_cairo_gstate_get_matrix (cairo_gstate_t *gstate, cairo_matrix_t *matrix); - -cairo_private cairo_status_t -_cairo_gstate_translate (cairo_gstate_t *gstate, double tx, double ty); - -cairo_private cairo_status_t -_cairo_gstate_scale (cairo_gstate_t *gstate, double sx, double sy); - -cairo_private cairo_status_t -_cairo_gstate_rotate (cairo_gstate_t *gstate, double angle); - -cairo_private cairo_status_t -_cairo_gstate_transform (cairo_gstate_t *gstate, - const cairo_matrix_t *matrix); - -cairo_private cairo_status_t -_cairo_gstate_set_matrix (cairo_gstate_t *gstate, - const cairo_matrix_t *matrix); - -cairo_private void -_cairo_gstate_identity_matrix (cairo_gstate_t *gstate); - -cairo_private void -_cairo_gstate_user_to_device (cairo_gstate_t *gstate, double *x, double *y); - -cairo_private void -_cairo_gstate_user_to_device_distance (cairo_gstate_t *gstate, double *dx, double *dy); - -cairo_private void -_cairo_gstate_device_to_user (cairo_gstate_t *gstate, double *x, double *y); - -cairo_private void -_cairo_gstate_device_to_user_distance (cairo_gstate_t *gstate, double *dx, double *dy); - -cairo_private void -_cairo_gstate_user_to_backend (cairo_gstate_t *gstate, double *x, double *y); - -cairo_private void -_cairo_gstate_backend_to_user (cairo_gstate_t *gstate, double *x, double *y); - -cairo_private void -_cairo_gstate_backend_to_user_rectangle (cairo_gstate_t *gstate, - double *x1, double *y1, - double *x2, double *y2, - cairo_bool_t *is_tight); - -cairo_private cairo_status_t -_cairo_gstate_path_extents (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2); - -cairo_private cairo_status_t -_cairo_gstate_paint (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_mask (cairo_gstate_t *gstate, - cairo_pattern_t *mask); - -cairo_private cairo_status_t -_cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path); - -cairo_private cairo_status_t -_cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path); - -cairo_private cairo_status_t -_cairo_gstate_copy_page (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_show_page (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_stroke_extents (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2); - -cairo_private cairo_status_t -_cairo_gstate_fill_extents (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2); - -cairo_private cairo_status_t -_cairo_gstate_in_stroke (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double x, - double y, - cairo_bool_t *inside_ret); - -cairo_private cairo_status_t -_cairo_gstate_in_fill (cairo_gstate_t *gstate, - cairo_path_fixed_t *path, - double x, - double y, - cairo_bool_t *inside_ret); - -cairo_private cairo_status_t -_cairo_gstate_clip (cairo_gstate_t *gstate, cairo_path_fixed_t *path); - -cairo_private cairo_status_t -_cairo_gstate_reset_clip (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_clip_extents (cairo_gstate_t *gstate, - double *x1, - double *y1, - double *x2, - double *y2); - -cairo_private cairo_rectangle_list_t* -_cairo_gstate_copy_clip_rectangle_list (cairo_gstate_t *gstate); - -cairo_private cairo_status_t -_cairo_gstate_show_surface (cairo_gstate_t *gstate, - cairo_surface_t *surface, - double x, - double y, - double width, - double height); - -cairo_private cairo_status_t -_cairo_gstate_select_font_face (cairo_gstate_t *gstate, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_private cairo_status_t -_cairo_gstate_set_font_size (cairo_gstate_t *gstate, - double size); - -cairo_private void -_cairo_gstate_get_font_matrix (cairo_gstate_t *gstate, - cairo_matrix_t *matrix); - -cairo_private cairo_status_t -_cairo_gstate_set_font_matrix (cairo_gstate_t *gstate, - const cairo_matrix_t *matrix); - -cairo_private void -_cairo_gstate_get_font_options (cairo_gstate_t *gstate, - cairo_font_options_t *options); - -cairo_private void -_cairo_gstate_set_font_options (cairo_gstate_t *gstate, - const cairo_font_options_t *options); - -cairo_private cairo_status_t -_cairo_gstate_get_font_face (cairo_gstate_t *gstate, - cairo_font_face_t **font_face); - -cairo_private cairo_status_t -_cairo_gstate_get_scaled_font (cairo_gstate_t *gstate, - cairo_scaled_font_t **scaled_font); - -cairo_private cairo_status_t -_cairo_gstate_get_font_extents (cairo_gstate_t *gstate, - cairo_font_extents_t *extents); - -cairo_private cairo_status_t -_cairo_gstate_set_font_face (cairo_gstate_t *gstate, - cairo_font_face_t *font_face); - -cairo_private cairo_status_t -_cairo_gstate_text_to_glyphs (cairo_gstate_t *font, - const char *utf8, - double x, - double y, - cairo_glyph_t **glyphs, - int *num_glyphs); - -cairo_private cairo_status_t -_cairo_gstate_glyph_extents (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_private cairo_status_t -_cairo_gstate_show_glyphs (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs); - -cairo_private cairo_status_t -_cairo_gstate_glyph_path (cairo_gstate_t *gstate, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_path_fixed_t *path); - -cairo_private cairo_bool_t -_cairo_operator_bounded_by_mask (cairo_operator_t op); - -cairo_private cairo_bool_t -_cairo_operator_bounded_by_source (cairo_operator_t op); - -/* cairo_color.c */ -cairo_private const cairo_color_t * -_cairo_stock_color (cairo_stock_t stock); - -#define CAIRO_COLOR_WHITE _cairo_stock_color (CAIRO_STOCK_WHITE) -#define CAIRO_COLOR_BLACK _cairo_stock_color (CAIRO_STOCK_BLACK) -#define CAIRO_COLOR_TRANSPARENT _cairo_stock_color (CAIRO_STOCK_TRANSPARENT) - -cairo_private uint16_t -_cairo_color_double_to_short (double d); - -cairo_private void -_cairo_color_init (cairo_color_t *color); - -cairo_private void -_cairo_color_init_rgb (cairo_color_t *color, - double red, double green, double blue); - -cairo_private void -_cairo_color_init_rgba (cairo_color_t *color, - double red, double green, double blue, - double alpha); - -cairo_private void -_cairo_color_multiply_alpha (cairo_color_t *color, - double alpha); - -cairo_private void -_cairo_color_get_rgba (cairo_color_t *color, - double *red, - double *green, - double *blue, - double *alpha); - -cairo_private void -_cairo_color_get_rgba_premultiplied (cairo_color_t *color, - double *red, - double *green, - double *blue, - double *alpha); - -cairo_private cairo_bool_t -_cairo_color_equal (const cairo_color_t *color_a, - const cairo_color_t *color_b); - -/* cairo-font-face.c */ - -cairo_private void -_cairo_scaled_font_freeze_cache (cairo_scaled_font_t *scaled_font); - -cairo_private void -_cairo_scaled_font_thaw_cache (cairo_scaled_font_t *scaled_font); - -cairo_private void -_cairo_scaled_font_reset_cache (cairo_scaled_font_t *scaled_font); - -cairo_private cairo_status_t -_cairo_scaled_font_set_error (cairo_scaled_font_t *scaled_font, - cairo_status_t status); - -cairo_private cairo_scaled_font_t * -_cairo_scaled_font_create_in_error (cairo_status_t status); - -cairo_private void -_cairo_scaled_font_reset_static_data (void); - -extern const cairo_private cairo_font_face_t _cairo_font_face_nil; - -cairo_private void -_cairo_font_face_init (cairo_font_face_t *font_face, - const cairo_font_face_backend_t *backend); - -cairo_private cairo_status_t -_cairo_font_face_set_error (cairo_font_face_t *font_face, - cairo_status_t status); - -cairo_private cairo_font_face_t * -_cairo_toy_font_face_create (const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_private void -_cairo_unscaled_font_init (cairo_unscaled_font_t *font, - const cairo_unscaled_font_backend_t *backend); - -cairo_private_no_warn cairo_unscaled_font_t * -_cairo_unscaled_font_reference (cairo_unscaled_font_t *font); - -cairo_private void -_cairo_unscaled_font_destroy (cairo_unscaled_font_t *font); - -/* cairo-font-options.c */ - -cairo_private void -_cairo_font_options_init_default (cairo_font_options_t *options); - -cairo_private void -_cairo_font_options_init_copy (cairo_font_options_t *options, - const cairo_font_options_t *other); - -/* cairo_hull.c */ -cairo_private cairo_status_t -_cairo_hull_compute (cairo_pen_vertex_t *vertices, int *num_vertices); - -/* cairo-lzw.c */ -cairo_private unsigned char * -_cairo_lzw_compress (unsigned char *data, unsigned long *size_in_out); - -/* cairo_path.c */ -cairo_private void -_cairo_path_fixed_init (cairo_path_fixed_t *path); - -cairo_private cairo_status_t -_cairo_path_fixed_init_copy (cairo_path_fixed_t *path, - cairo_path_fixed_t *other); - -cairo_private cairo_bool_t -_cairo_path_fixed_is_equal (cairo_path_fixed_t *path, - cairo_path_fixed_t *other); - -cairo_private cairo_path_fixed_t * -_cairo_path_fixed_create (void); - -cairo_private void -_cairo_path_fixed_fini (cairo_path_fixed_t *path); - -cairo_private void -_cairo_path_fixed_destroy (cairo_path_fixed_t *path); - -cairo_private cairo_status_t -_cairo_path_fixed_move_to (cairo_path_fixed_t *path, - cairo_fixed_t x, - cairo_fixed_t y); - -cairo_private void -_cairo_path_fixed_new_sub_path (cairo_path_fixed_t *path); - -cairo_private cairo_status_t -_cairo_path_fixed_rel_move_to (cairo_path_fixed_t *path, - cairo_fixed_t dx, - cairo_fixed_t dy); - -cairo_private cairo_status_t -_cairo_path_fixed_line_to (cairo_path_fixed_t *path, - cairo_fixed_t x, - cairo_fixed_t y); - -cairo_private cairo_status_t -_cairo_path_fixed_rel_line_to (cairo_path_fixed_t *path, - cairo_fixed_t dx, - cairo_fixed_t dy); - -cairo_private cairo_status_t -_cairo_path_fixed_curve_to (cairo_path_fixed_t *path, - cairo_fixed_t x0, cairo_fixed_t y0, - cairo_fixed_t x1, cairo_fixed_t y1, - cairo_fixed_t x2, cairo_fixed_t y2); - -cairo_private cairo_status_t -_cairo_path_fixed_rel_curve_to (cairo_path_fixed_t *path, - cairo_fixed_t dx0, cairo_fixed_t dy0, - cairo_fixed_t dx1, cairo_fixed_t dy1, - cairo_fixed_t dx2, cairo_fixed_t dy2); - -cairo_private cairo_status_t -_cairo_path_fixed_close_path (cairo_path_fixed_t *path); - -cairo_private cairo_bool_t -_cairo_path_fixed_get_current_point (cairo_path_fixed_t *path, - cairo_fixed_t *x, - cairo_fixed_t *y); - -typedef cairo_status_t -(cairo_path_fixed_move_to_func_t) (void *closure, - cairo_point_t *point); - -typedef cairo_status_t -(cairo_path_fixed_line_to_func_t) (void *closure, - cairo_point_t *point); - -typedef cairo_status_t -(cairo_path_fixed_curve_to_func_t) (void *closure, - cairo_point_t *p0, - cairo_point_t *p1, - cairo_point_t *p2); - -typedef cairo_status_t -(cairo_path_fixed_close_path_func_t) (void *closure); - -cairo_private cairo_status_t -_cairo_path_fixed_interpret (cairo_path_fixed_t *path, - cairo_direction_t dir, - cairo_path_fixed_move_to_func_t *move_to, - cairo_path_fixed_line_to_func_t *line_to, - cairo_path_fixed_curve_to_func_t *curve_to, - cairo_path_fixed_close_path_func_t *close_path, - void *closure); - -cairo_private cairo_status_t -_cairo_path_fixed_interpret_flat (cairo_path_fixed_t *path, - cairo_direction_t dir, - cairo_path_fixed_move_to_func_t *move_to, - cairo_path_fixed_line_to_func_t *line_to, - cairo_path_fixed_close_path_func_t *close_path, - void *closure, - double tolerance); - -cairo_private cairo_status_t -_cairo_path_fixed_bounds (cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2, - double tolerance); - -cairo_private void -_cairo_path_fixed_device_transform (cairo_path_fixed_t *path, - cairo_matrix_t *device_transform); - -cairo_private cairo_bool_t -_cairo_path_fixed_is_empty (cairo_path_fixed_t *path); - -cairo_private cairo_bool_t -_cairo_path_fixed_is_box (cairo_path_fixed_t *path, - cairo_box_t *box); - -cairo_private cairo_bool_t -_cairo_path_fixed_is_rectangle (cairo_path_fixed_t *path, - cairo_box_t *box); - -/* cairo_path_fill.c */ -cairo_private cairo_status_t -_cairo_path_fixed_fill_to_traps (cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_traps_t *traps); - -/* cairo_path_stroke.c */ -cairo_private cairo_status_t -_cairo_path_fixed_stroke_to_traps (cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_traps_t *traps); - -/* cairo-scaled-font.c */ - -cairo_private cairo_status_t -_cairo_scaled_font_init (cairo_scaled_font_t *scaled_font, - cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - const cairo_scaled_font_backend_t *backend); - -cairo_private cairo_status_t -_cairo_scaled_font_set_metrics (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *fs_metrics); - -cairo_private void -_cairo_scaled_font_fini (cairo_scaled_font_t *scaled_font); - -cairo_private cairo_status_t -_cairo_scaled_font_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents); - -cairo_private cairo_status_t -_cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - cairo_glyph_t **glyphs, - int *num_glyphs); - -cairo_private cairo_status_t -_cairo_scaled_font_glyph_device_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_rectangle_int_t *extents); - -cairo_private cairo_status_t -_cairo_scaled_font_show_glyphs (cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_surface_t *surface, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs); - -cairo_private cairo_status_t -_cairo_scaled_font_glyph_path (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_path_fixed_t *path); - -cairo_private void -_cairo_scaled_glyph_set_metrics (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font, - cairo_text_extents_t *fs_metrics); - -cairo_private void -_cairo_scaled_glyph_set_surface (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font, - cairo_image_surface_t *surface); - -cairo_private void -_cairo_scaled_glyph_set_path (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font, - cairo_path_fixed_t *path); - -cairo_private cairo_int_status_t -_cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font, - unsigned long index, - cairo_scaled_glyph_info_t info, - cairo_scaled_glyph_t **scaled_glyph_ret); - -cairo_private void -_cairo_scaled_font_map_destroy (void); - -/* cairo-stroke-style.c */ - -cairo_private void -_cairo_stroke_style_init (cairo_stroke_style_t *style); - -cairo_private cairo_status_t -_cairo_stroke_style_init_copy (cairo_stroke_style_t *style, - cairo_stroke_style_t *other); - -cairo_private void -_cairo_stroke_style_fini (cairo_stroke_style_t *style); - -cairo_private void -_cairo_stroke_style_max_distance_from_path (const cairo_stroke_style_t *style, - const cairo_matrix_t *ctm, - double *dx, double *dy); - -/* cairo-surface.c */ - -cairo_private cairo_surface_t * -_cairo_surface_create_in_error (cairo_status_t status); - -cairo_private cairo_status_t -_cairo_surface_set_error (cairo_surface_t *surface, - cairo_status_t status); - -cairo_private void -_cairo_surface_set_resolution (cairo_surface_t *surface, - double x_res, - double y_res); - -cairo_private cairo_surface_t * -_cairo_surface_create_similar_scratch (cairo_surface_t *other, - cairo_content_t content, - int width, - int height); - -/* Note: the color_pattern argument is optional - if provided it will reuse - * that pattern instead of creating a very short-lived fresh solid pattern - */ -cairo_private cairo_surface_t * -_cairo_surface_create_similar_solid (cairo_surface_t *other, - cairo_content_t content, - int width, - int height, - const cairo_color_t *color, - cairo_pattern_t *color_pattern); - -cairo_private void -_cairo_surface_init (cairo_surface_t *surface, - const cairo_surface_backend_t *backend, - cairo_content_t content); - -cairo_private void -_cairo_surface_set_font_options (cairo_surface_t *surface, - cairo_font_options_t *options); - -cairo_private cairo_clip_mode_t -_cairo_surface_get_clip_mode (cairo_surface_t *surface); - -cairo_private cairo_status_t -_cairo_surface_composite (cairo_operator_t op, - cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height); - -cairo_private cairo_status_t -_cairo_surface_fill_rectangle (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - int x, - int y, - int width, - int height); - -cairo_private cairo_status_t -_cairo_surface_fill_region (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_region_t *region); - -cairo_private cairo_status_t -_cairo_surface_fill_rectangles (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects); - -cairo_private cairo_status_t -_cairo_surface_paint (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source); - -cairo_private cairo_status_t -_cairo_surface_mask (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask); - -cairo_private cairo_status_t -_cairo_surface_fill_stroke (cairo_surface_t *surface, - cairo_operator_t fill_op, - cairo_pattern_t *fill_source, - cairo_fill_rule_t fill_rule, - double fill_tolerance, - cairo_antialias_t fill_antialias, - cairo_path_fixed_t *path, - cairo_operator_t stroke_op, - cairo_pattern_t *stroke_source, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *stroke_ctm, - cairo_matrix_t *stroke_ctm_inverse, - double stroke_tolerance, - cairo_antialias_t stroke_antialias); - -cairo_private cairo_status_t -_cairo_surface_stroke (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias); - -cairo_private cairo_status_t -_cairo_surface_fill (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias); - -cairo_private cairo_status_t -_cairo_surface_show_glyphs (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - -cairo_private cairo_status_t -_cairo_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int ntraps); - -cairo_private cairo_status_t -_cairo_surface_acquire_source_image (cairo_surface_t *surface, - cairo_image_surface_t **image_out, - void **image_extra); - -cairo_private void -_cairo_surface_release_source_image (cairo_surface_t *surface, - cairo_image_surface_t *image, - void *image_extra); - -cairo_private cairo_status_t -_cairo_surface_acquire_dest_image (cairo_surface_t *surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra); - -cairo_private void -_cairo_surface_release_dest_image (cairo_surface_t *surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra); - -cairo_private cairo_status_t -_cairo_surface_clone_similar (cairo_surface_t *surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out); - -cairo_private cairo_surface_t * -_cairo_surface_snapshot (cairo_surface_t *surface); - -cairo_private cairo_bool_t -_cairo_surface_is_similar (cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - cairo_content_t content); - -cairo_private cairo_status_t -_cairo_surface_reset (cairo_surface_t *surface); - -cairo_private unsigned int -_cairo_surface_get_current_clip_serial (cairo_surface_t *surface); - -cairo_private unsigned int -_cairo_surface_allocate_clip_serial (cairo_surface_t *surface); - -cairo_private cairo_status_t -_cairo_surface_reset_clip (cairo_surface_t *surface); - -cairo_private cairo_status_t -_cairo_surface_set_clip_region (cairo_surface_t *surface, - cairo_region_t *region, - unsigned int serial); - -cairo_private cairo_int_status_t -_cairo_surface_intersect_clip_path (cairo_surface_t *surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias); - -cairo_private cairo_clip_t * -_cairo_surface_get_clip (cairo_surface_t *surface); - -cairo_private cairo_status_t -_cairo_surface_set_clip (cairo_surface_t *surface, cairo_clip_t *clip); - -cairo_private cairo_status_t -_cairo_surface_get_extents (cairo_surface_t *surface, - cairo_rectangle_int_t *rectangle); - -cairo_private cairo_status_t -_cairo_surface_old_show_glyphs (cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *surface, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs); - -cairo_private cairo_status_t -_cairo_surface_composite_fixup_unbounded (cairo_surface_t *dst, - cairo_surface_attributes_t *src_attr, - int src_width, - int src_height, - cairo_surface_attributes_t *mask_attr, - int mask_width, - int mask_height, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height); - -cairo_private cairo_status_t -_cairo_surface_composite_shape_fixup_unbounded (cairo_surface_t *dst, - cairo_surface_attributes_t *src_attr, - int src_width, - int src_height, - int mask_width, - int mask_height, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height); - -cairo_private cairo_bool_t -_cairo_surface_is_opaque (const cairo_surface_t *surface); - -cairo_private void -_cairo_surface_set_device_scale (cairo_surface_t *surface, - double sx, - double sy); - -cairo_private cairo_bool_t -_cairo_surface_has_device_transform (cairo_surface_t *surface); - -/* cairo_image_surface.c */ - -/* XXX: In cairo 1.2.0 we added a new %CAIRO_FORMAT_RGB16_565 but - * neglected to adjust this macro. The net effect is that it's - * impossible to externally create an image surface with this - * format. This is perhaps a good thing since we also neglected to fix - * up things like cairo_surface_write_to_png() for the new format - * (-Wswitch-enum will tell you where). Is it obvious that format was - * added in haste? - * - * The reason for the new format was to allow the xlib backend to be - * used on X servers with a 565 visual. So the new format did its job - * for that, even without being considered "valid" for the sake of - * things like cairo_image_surface_create(). - * - * Since 1.2.0 we ran into the same situtation with X servers with BGR - * visuals. This time we invented #cairo_internal_format_t instead, - * (see it for more discussion). - * - * The punchline is that %CAIRO_FORMAT_VALID must not conside any - * internal format to be valid. Also we need to decide if the - * RGB16_565 should be moved to instead be an internal format. If so, - * this macro need not change for it. (We probably will need to leave - * an RGB16_565 value in the header files for the sake of code that - * might have that value in it.) - * - * If we do decide to start fully supporting RGB16_565 as an external - * format, then %CAIRO_FORMAT_VALID needs to be adjusted to include - * it. But that should not happen before all necessary code is fixed - * to support it (at least cairo_surface_write_to_png() and a few spots - * in cairo-xlib-surface.c--again see -Wswitch-enum). - */ -#define CAIRO_FORMAT_INVALID ((unsigned int) -1) -#define CAIRO_FORMAT_VALID(format) ((format) <= CAIRO_FORMAT_A1) - -/* pixman-required stride alignment in bytes. */ -#define CAIRO_STRIDE_ALIGNMENT (sizeof (uint32_t)) -#define CAIRO_STRIDE_FOR_WIDTH_BPP(w,bpp) \ - (((bpp)*(w)+7)/8 + CAIRO_STRIDE_ALIGNMENT-1) & ~(CAIRO_STRIDE_ALIGNMENT-1) - -#define CAIRO_CONTENT_VALID(content) ((content) && \ - (((content) & ~(CAIRO_CONTENT_COLOR | \ - CAIRO_CONTENT_ALPHA | \ - CAIRO_CONTENT_COLOR_ALPHA))\ - == 0)) - -cairo_private int -_cairo_format_bits_per_pixel (cairo_format_t format); - -cairo_private cairo_format_t -_cairo_format_from_content (cairo_content_t content); - -cairo_private cairo_content_t -_cairo_content_from_format (cairo_format_t format); - -cairo_private cairo_surface_t * -_cairo_image_surface_create_for_pixman_image (pixman_image_t *pixman_image, - pixman_format_code_t pixman_format); - -cairo_private cairo_int_status_t -_pixman_format_from_masks (cairo_format_masks_t *masks, - pixman_format_code_t *format_ret); - -cairo_private void -_pixman_format_to_masks (pixman_format_code_t pixman_format, - cairo_format_masks_t *masks); - -cairo_private cairo_surface_t * -_cairo_image_surface_create_with_pixman_format (unsigned char *data, - pixman_format_code_t pixman_format, - int width, - int height, - int stride); - -cairo_private cairo_surface_t * -_cairo_image_surface_create_with_masks (unsigned char *data, - cairo_format_masks_t *format, - int width, - int height, - int stride); - -cairo_private cairo_surface_t * -_cairo_image_surface_create_with_content (cairo_content_t content, - int width, - int height); - -cairo_private cairo_surface_t * -_cairo_image_surface_create_for_data_with_content (unsigned char *data, - cairo_content_t content, - int width, - int height, - int stride); - -cairo_private void -_cairo_image_surface_assume_ownership_of_data (cairo_image_surface_t *surface); - -/* XXX: It's a nasty kludge that this appears here. Backend functions - * like this should really be static. But we're doing this to work - * around some general defects in the backend clipping interfaces, - * (see some notes in test-paginated-surface.c). - * - * I want to fix the real defects, but it's "hard" as they touch many - * backends, so doing that will require synchronizing several backend - * maintainers. - */ -cairo_private cairo_int_status_t -_cairo_image_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region); - -cairo_private cairo_image_surface_t * -_cairo_image_surface_clone (cairo_image_surface_t *surface, - cairo_format_t format); - -cairo_private cairo_image_transparency_t -_cairo_image_analyze_transparency (cairo_image_surface_t *image); - -cairo_private cairo_bool_t -_cairo_surface_is_image (const cairo_surface_t *surface); - -cairo_private cairo_bool_t -_cairo_surface_is_meta (const cairo_surface_t *surface); - -/* cairo_pen.c */ -cairo_private cairo_status_t -_cairo_pen_init (cairo_pen_t *pen, - double radius, - double tolerance, - cairo_matrix_t *ctm); - -cairo_private void -_cairo_pen_init_empty (cairo_pen_t *pen); - -cairo_private cairo_status_t -_cairo_pen_init_copy (cairo_pen_t *pen, cairo_pen_t *other); - -cairo_private void -_cairo_pen_fini (cairo_pen_t *pen); - -cairo_private cairo_status_t -_cairo_pen_add_points (cairo_pen_t *pen, cairo_point_t *point, int num_points); - -cairo_private cairo_status_t -_cairo_pen_add_points_for_slopes (cairo_pen_t *pen, - cairo_point_t *a, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d); - -cairo_private void -_cairo_pen_find_active_cw_vertex_index (cairo_pen_t *pen, - cairo_slope_t *slope, - int *active); - -cairo_private void -_cairo_pen_find_active_ccw_vertex_index (cairo_pen_t *pen, - cairo_slope_t *slope, - int *active); - -cairo_private cairo_status_t -_cairo_pen_stroke_spline (cairo_pen_t *pen, - cairo_spline_t *spline, - double tolerance, - cairo_traps_t *traps); - -/* cairo_polygon.c */ -cairo_private void -_cairo_polygon_init (cairo_polygon_t *polygon); - -cairo_private void -_cairo_polygon_fini (cairo_polygon_t *polygon); - -cairo_private cairo_status_t -_cairo_polygon_status (cairo_polygon_t *polygon); - -cairo_private void -_cairo_polygon_add_edge (cairo_polygon_t *polygon, cairo_point_t *p1, cairo_point_t *p2); - -cairo_private void -_cairo_polygon_move_to (cairo_polygon_t *polygon, cairo_point_t *point); - -cairo_private void -_cairo_polygon_line_to (cairo_polygon_t *polygon, cairo_point_t *point); - -cairo_private void -_cairo_polygon_close (cairo_polygon_t *polygon); - -/* cairo_spline.c */ -cairo_private cairo_int_status_t -_cairo_spline_init (cairo_spline_t *spline, - const cairo_point_t *a, - const cairo_point_t *b, - const cairo_point_t *c, - const cairo_point_t *d); - -cairo_private cairo_status_t -_cairo_spline_decompose (cairo_spline_t *spline, double tolerance); - -cairo_private void -_cairo_spline_fini (cairo_spline_t *spline); - -/* cairo_matrix.c */ -cairo_private void -_cairo_matrix_get_affine (const cairo_matrix_t *matrix, - double *xx, double *yx, - double *xy, double *yy, - double *x0, double *y0); - -cairo_private void -_cairo_matrix_transform_bounding_box (const cairo_matrix_t *matrix, - double *x1, double *y1, - double *x2, double *y2, - cairo_bool_t *is_tight); - -cairo_private cairo_bool_t -_cairo_matrix_is_invertible (const cairo_matrix_t *matrix); - -cairo_private void -_cairo_matrix_compute_determinant (const cairo_matrix_t *matrix, double *det); - -cairo_private cairo_status_t -_cairo_matrix_compute_scale_factors (const cairo_matrix_t *matrix, - double *sx, double *sy, int x_major); - -cairo_private cairo_bool_t -_cairo_matrix_is_identity (const cairo_matrix_t *matrix); - -cairo_private cairo_bool_t -_cairo_matrix_is_translation (const cairo_matrix_t *matrix); - -cairo_private cairo_bool_t -_cairo_matrix_is_integer_translation(const cairo_matrix_t *matrix, - int *itx, int *ity); - -cairo_private double -_cairo_matrix_transformed_circle_major_axis(cairo_matrix_t *matrix, double radius); - -cairo_private void -_cairo_matrix_to_pixman_matrix (const cairo_matrix_t *matrix, - pixman_transform_t *pixman_transform); - -/* cairo_traps.c */ -cairo_private void -_cairo_traps_init (cairo_traps_t *traps); - -cairo_private void -_cairo_traps_limit (cairo_traps_t *traps, - cairo_box_t *limits); - -cairo_private cairo_bool_t -_cairo_traps_get_limit (cairo_traps_t *traps, - cairo_box_t *limits); - -cairo_private cairo_status_t -_cairo_traps_init_box (cairo_traps_t *traps, - cairo_box_t *box); - -cairo_private void -_cairo_traps_fini (cairo_traps_t *traps); - -cairo_private cairo_status_t -_cairo_traps_status (cairo_traps_t *traps); - -cairo_private void -_cairo_traps_translate (cairo_traps_t *traps, int x, int y); - -cairo_private cairo_status_t -_cairo_traps_tessellate_triangle (cairo_traps_t *traps, cairo_point_t t[3]); - -cairo_private cairo_status_t -_cairo_traps_tessellate_convex_quad (cairo_traps_t *traps, cairo_point_t q[4]); - -cairo_private cairo_status_t -_cairo_traps_tessellate_polygon (cairo_traps_t *traps, - cairo_polygon_t *poly, - cairo_fill_rule_t fill_rule); - -cairo_private void -_cairo_traps_add_trap_from_points (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom, - cairo_point_t left_p1, cairo_point_t left_p2, - cairo_point_t right_p1, cairo_point_t right_p2); - -cairo_private cairo_status_t -_cairo_bentley_ottmann_tessellate_polygon (cairo_traps_t *traps, - cairo_polygon_t *polygon, - cairo_fill_rule_t fill_rule); - -cairo_private int -_cairo_traps_contain (cairo_traps_t *traps, double x, double y); - -cairo_private void -_cairo_traps_extents (cairo_traps_t *traps, cairo_box_t *extents); - -cairo_private cairo_int_status_t -_cairo_traps_extract_region (cairo_traps_t *tr, - cairo_region_t *region); - -cairo_private void -_cairo_trapezoid_array_translate_and_scale (cairo_trapezoid_t *offset_traps, - cairo_trapezoid_t *src_traps, - int num_traps, - double tx, double ty, - double sx, double sy); - -/* cairo_slope.c */ -cairo_private void -_cairo_slope_init (cairo_slope_t *slope, cairo_point_t *a, cairo_point_t *b); - -cairo_private int -_cairo_slope_compare (cairo_slope_t *a, cairo_slope_t *b); - -/* cairo_pattern.c */ - -cairo_private cairo_status_t -_cairo_pattern_create_copy (cairo_pattern_t **pattern, - const cairo_pattern_t *other); - -cairo_private cairo_status_t -_cairo_pattern_init_copy (cairo_pattern_t *pattern, - const cairo_pattern_t *other); - -cairo_private void -_cairo_pattern_init_solid (cairo_solid_pattern_t *pattern, - const cairo_color_t *color, - cairo_content_t content); - -cairo_private void -_cairo_pattern_init_for_surface (cairo_surface_pattern_t *pattern, - cairo_surface_t *surface); - -cairo_private void -_cairo_pattern_init_linear (cairo_linear_pattern_t *pattern, - double x0, double y0, double x1, double y1); - -cairo_private void -_cairo_pattern_init_radial (cairo_radial_pattern_t *pattern, - double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1); - -cairo_private void -_cairo_pattern_fini (cairo_pattern_t *pattern); - -cairo_private cairo_pattern_t * -_cairo_pattern_create_solid (const cairo_color_t *color, - cairo_content_t content); - -cairo_private void -_cairo_pattern_transform (cairo_pattern_t *pattern, - const cairo_matrix_t *ctm_inverse); - -cairo_private cairo_bool_t -_cairo_pattern_is_opaque_solid (const cairo_pattern_t *pattern); - -cairo_private cairo_bool_t -_cairo_pattern_is_opaque (const cairo_pattern_t *abstract_pattern); - -cairo_private cairo_int_status_t -_cairo_pattern_acquire_surface (cairo_pattern_t *pattern, - cairo_surface_t *dst, - int x, - int y, - unsigned int width, - unsigned int height, - cairo_surface_t **surface_out, - cairo_surface_attributes_t *attributes); - -cairo_private void -_cairo_pattern_release_surface (cairo_pattern_t *pattern, - cairo_surface_t *surface, - cairo_surface_attributes_t *attributes); - -cairo_private cairo_int_status_t -_cairo_pattern_acquire_surfaces (cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - unsigned int width, - unsigned int height, - cairo_surface_t **src_out, - cairo_surface_t **mask_out, - cairo_surface_attributes_t *src_attributes, - cairo_surface_attributes_t *mask_attributes); - -cairo_private cairo_status_t -_cairo_pattern_get_extents (cairo_pattern_t *pattern, - cairo_rectangle_int_t *extents); - -cairo_private void -_cairo_pattern_reset_static_data (void); - -cairo_private cairo_status_t -_cairo_gstate_set_antialias (cairo_gstate_t *gstate, - cairo_antialias_t antialias); - -cairo_private cairo_antialias_t -_cairo_gstate_get_antialias (cairo_gstate_t *gstate); - -/* cairo-region.c */ - -#include "cairo-region-private.h" - -/* cairo_unicode.c */ - -cairo_private cairo_status_t -_cairo_utf8_to_ucs4 (const unsigned char *str, - int len, - uint32_t **result, - int *items_written); - -#if CAIRO_HAS_WIN32_FONT+0 || CAIRO_HAS_QUARTZ_FONT+0 -# define CAIRO_HAS_UTF8_TO_UTF16 1 -#endif -#if CAIRO_HAS_UTF8_TO_UTF16 -cairo_private cairo_status_t -_cairo_utf8_to_utf16 (const unsigned char *str, - int len, - uint16_t **result, - int *items_written); -#endif - -cairo_private cairo_status_t -_cairo_error (cairo_status_t status); - -/* hide compiler warnings when discarding the return value */ -#define _cairo_error_throw(status) do { \ - cairo_status_t status__ = _cairo_error (status); \ - (void) status__; \ -} while (0) - -/* Avoid unnecessary PLT entries. */ -slim_hidden_proto (cairo_clip_preserve); -slim_hidden_proto (cairo_close_path); -slim_hidden_proto (cairo_create); -slim_hidden_proto (cairo_curve_to); -slim_hidden_proto (cairo_destroy); -slim_hidden_proto (cairo_fill_preserve); -slim_hidden_proto (cairo_font_face_destroy); -slim_hidden_proto_no_warn (cairo_font_face_reference); -slim_hidden_proto (cairo_font_options_create); -slim_hidden_proto (cairo_font_options_destroy); -slim_hidden_proto (cairo_font_options_equal); -slim_hidden_proto (cairo_font_options_hash); -slim_hidden_proto (cairo_font_options_merge); -slim_hidden_proto (cairo_font_options_set_antialias); -slim_hidden_proto (cairo_font_options_set_hint_metrics); -slim_hidden_proto (cairo_font_options_set_hint_style); -slim_hidden_proto (cairo_font_options_set_subpixel_order); -slim_hidden_proto (cairo_font_options_status); -slim_hidden_proto (cairo_get_current_point); -slim_hidden_proto (cairo_get_matrix); -slim_hidden_proto (cairo_get_tolerance); -slim_hidden_proto (cairo_image_surface_create); -slim_hidden_proto (cairo_image_surface_create_for_data); -slim_hidden_proto (cairo_image_surface_get_data); -slim_hidden_proto (cairo_image_surface_get_height); -slim_hidden_proto (cairo_image_surface_get_stride); -slim_hidden_proto (cairo_image_surface_get_width); -slim_hidden_proto (cairo_format_stride_for_width); -slim_hidden_proto (cairo_line_to); -slim_hidden_proto (cairo_mask); -slim_hidden_proto (cairo_matrix_init); -slim_hidden_proto (cairo_matrix_init_identity); -slim_hidden_proto (cairo_matrix_init_rotate); -slim_hidden_proto (cairo_matrix_init_scale); -slim_hidden_proto (cairo_matrix_init_translate); -slim_hidden_proto (cairo_matrix_invert); -slim_hidden_proto (cairo_matrix_multiply); -slim_hidden_proto (cairo_matrix_scale); -slim_hidden_proto (cairo_matrix_transform_distance); -slim_hidden_proto (cairo_matrix_transform_point); -slim_hidden_proto (cairo_matrix_translate); -slim_hidden_proto (cairo_move_to); -slim_hidden_proto (cairo_new_path); -slim_hidden_proto (cairo_paint); -slim_hidden_proto (cairo_path_extents); -slim_hidden_proto (cairo_pattern_create_for_surface); -slim_hidden_proto (cairo_pattern_create_rgb); -slim_hidden_proto (cairo_pattern_create_rgba); -slim_hidden_proto (cairo_pattern_destroy); -slim_hidden_proto (cairo_pattern_get_extend); -slim_hidden_proto (cairo_pattern_get_type); -slim_hidden_proto_no_warn (cairo_pattern_reference); -slim_hidden_proto (cairo_pattern_set_matrix); -slim_hidden_proto (cairo_pattern_status); -slim_hidden_proto (cairo_pop_group); -slim_hidden_proto (cairo_pop_group_to_source); -slim_hidden_proto (cairo_push_group); -slim_hidden_proto (cairo_push_group_with_content); -slim_hidden_proto (cairo_rel_line_to); -slim_hidden_proto (cairo_restore); -slim_hidden_proto (cairo_save); -slim_hidden_proto (cairo_scale); -slim_hidden_proto (cairo_scaled_font_create); -slim_hidden_proto (cairo_scaled_font_destroy); -slim_hidden_proto (cairo_scaled_font_extents); -slim_hidden_proto (cairo_scaled_font_get_ctm); -slim_hidden_proto (cairo_scaled_font_get_font_face); -slim_hidden_proto (cairo_scaled_font_get_font_matrix); -slim_hidden_proto (cairo_scaled_font_get_font_options); -slim_hidden_proto (cairo_scaled_font_glyph_extents); -slim_hidden_proto_no_warn (cairo_scaled_font_reference); -slim_hidden_proto (cairo_scaled_font_status); -slim_hidden_proto (cairo_set_operator); -slim_hidden_proto (cairo_set_source); -slim_hidden_proto (cairo_set_source_surface); -slim_hidden_proto (cairo_status); -slim_hidden_proto (cairo_stroke_preserve); -slim_hidden_proto (cairo_surface_create_similar); -slim_hidden_proto (cairo_surface_destroy); -slim_hidden_proto (cairo_surface_finish); -slim_hidden_proto (cairo_surface_get_content); -slim_hidden_proto (cairo_surface_get_device_offset); -slim_hidden_proto (cairo_surface_get_font_options); -slim_hidden_proto (cairo_surface_get_type); -slim_hidden_proto (cairo_surface_mark_dirty_rectangle); -slim_hidden_proto_no_warn (cairo_surface_reference); -slim_hidden_proto (cairo_surface_set_device_offset); -slim_hidden_proto (cairo_surface_set_fallback_resolution); -slim_hidden_proto (cairo_surface_copy_page); -slim_hidden_proto (cairo_surface_show_page); -slim_hidden_proto (cairo_surface_status); -slim_hidden_proto (cairo_version_string); - -#if CAIRO_HAS_PNG_FUNCTIONS - -slim_hidden_proto (cairo_surface_write_to_png_stream); - -#endif - -CAIRO_END_DECLS - -#include "cairo-mutex-private.h" -#include "cairo-fixed-private.h" -#include "cairo-wideint-private.h" -#include "cairo-malloc-private.h" -#include "cairo-hash-private.h" - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-lzw.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-lzw.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-lzw.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-lzw.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,403 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -typedef struct _lzw_buf { - cairo_status_t status; - - unsigned char *data; - int data_size; - int num_data; - uint32_t pending; - unsigned int pending_bits; -} lzw_buf_t; - -/* An lzw_buf_t is a simple, growable chunk of memory for holding - * variable-size objects of up to 16 bits each. - * - * Initialize an lzw_buf_t to the given size in bytes. - * - * To store objects into the lzw_buf_t, call _lzw_buf_store_bits and - * when finished, call _lzw_buf_store_pending, (which flushes out the - * last few bits that hadn't yet made a complete byte yet). - * - * Instead of returning failure from any functions, lzw_buf_t provides - * a status value that the caller can query, (and should query at - * least once when done with the object). The status value will be - * either %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY; - */ -static void -_lzw_buf_init (lzw_buf_t *buf, int size) -{ - if (size == 0) - size = 16; - - buf->status = CAIRO_STATUS_SUCCESS; - buf->data_size = size; - buf->num_data = 0; - buf->pending = 0; - buf->pending_bits = 0; - - buf->data = malloc (size); - if (buf->data == NULL) { - buf->data_size = 0; - buf->status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return; - } -} - -/* Increase the buffer size by doubling. - * - * Returns %CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - */ -static cairo_status_t -_lzw_buf_grow (lzw_buf_t *buf) -{ - int new_size = buf->data_size * 2; - unsigned char *new_data; - - if (buf->status) - return buf->status; - - new_data = NULL; - /* check for integer overflow */ - if (new_size / 2 == buf->data_size) - new_data = realloc (buf->data, new_size); - - if (new_data == NULL) { - free (buf->data); - buf->data_size = 0; - buf->status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return buf->status; - } - - buf->data = new_data; - buf->data_size = new_size; - - return CAIRO_STATUS_SUCCESS; -} - -/* Store the lowest num_bits bits of values into buf. - * - * Note: The bits of value above size_in_bits must be 0, (so don't lie - * about the size). - * - * See also _lzw_buf_store_pending which must be called after the last - * call to _lzw_buf_store_bits. - * - * Sets buf->status to either %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY. - */ -static void -_lzw_buf_store_bits (lzw_buf_t *buf, uint16_t value, int num_bits) -{ - cairo_status_t status; - - assert (value <= (1 << num_bits) - 1); - - if (buf->status) - return; - - buf->pending = (buf->pending << num_bits) | value; - buf->pending_bits += num_bits; - - while (buf->pending_bits >= 8) { - if (buf->num_data >= buf->data_size) { - status = _lzw_buf_grow (buf); - if (status) - return; - } - buf->data[buf->num_data++] = buf->pending >> (buf->pending_bits - 8); - buf->pending_bits -= 8; - } -} - -/* Store the last remaining pending bits into the buffer. - * - * Note: This function must be called after the last call to - * _lzw_buf_store_bits. - * - * Sets buf->status to either %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY. - */ -static void -_lzw_buf_store_pending (lzw_buf_t *buf) -{ - cairo_status_t status; - - if (buf->status) - return; - - if (buf->pending_bits == 0) - return; - - assert (buf->pending_bits < 8); - - if (buf->num_data >= buf->data_size) { - status = _lzw_buf_grow (buf); - if (status) - return; - } - - buf->data[buf->num_data++] = buf->pending << (8 - buf->pending_bits); - buf->pending_bits = 0; -} - -/* LZW defines a few magic code values */ -#define LZW_CODE_CLEAR_TABLE 256 -#define LZW_CODE_EOD 257 -#define LZW_CODE_FIRST 258 - -/* We pack three separate values into a symbol as follows: - * - * 12 bits (31 down to 20): CODE: code value used to represent this symbol - * 12 bits (19 down to 8): PREV: previous code value in chain - * 8 bits ( 7 down to 0): NEXT: next byte value in chain - */ -typedef uint32_t lzw_symbol_t; - -#define LZW_SYMBOL_SET(sym, prev, next) ((sym) = ((prev) << 8)|(next)) -#define LZW_SYMBOL_SET_CODE(sym, code, prev, next) ((sym) = ((code << 20)|(prev) << 8)|(next)) -#define LZW_SYMBOL_GET_CODE(sym) (((sym) >> 20)) -#define LZW_SYMBOL_GET_PREV(sym) (((sym) >> 8) & 0x7ff) -#define LZW_SYMBOL_GET_BYTE(sym) (((sym) >> 0) & 0x0ff) - -/* The PREV+NEXT fields can be seen as the key used to fetch values - * from the hash table, while the code is the value fetched. - */ -#define LZW_SYMBOL_KEY_MASK 0x000fffff - -/* Since code values are only stored starting with 258 we can safely - * use a zero value to represent free slots in the hash table. */ -#define LZW_SYMBOL_FREE 0x00000000 - -/* These really aren't very free for modifying. First, the PostScript - * specification sets the 9-12 bit range. Second, the encoding of - * lzw_symbol_t above also relies on 2 of LZW_BITS_MAX plus one byte - * fitting within 32 bits. - * - * But other than that, the LZW compression scheme could function with - * more bits per code. - */ -#define LZW_BITS_MIN 9 -#define LZW_BITS_MAX 12 -#define LZW_BITS_BOUNDARY(bits) ((1<<(bits))-1) -#define LZW_MAX_SYMBOLS (1<table, 0, LZW_SYMBOL_TABLE_SIZE * sizeof (lzw_symbol_t)); -} - -/* Lookup a symbol in the symbol table. The PREV and NEXT fields of - * symbol form the key for the lookup. - * - * If successful, then this function returns %TRUE and slot_ret will be - * left pointing at the result that will have the CODE field of - * interest. - * - * If the lookup fails, then this function returns %FALSE and slot_ret - * will be pointing at the location in the table to which a new CODE - * value should be stored along with PREV and NEXT. - */ -static cairo_bool_t -_lzw_symbol_table_lookup (lzw_symbol_table_t *table, - lzw_symbol_t symbol, - lzw_symbol_t **slot_ret) -{ - /* The algorithm here is identical to that in cairo-hash.c. We - * copy it here to allow for a rather more efficient - * implementation due to several circumstances that do not apply - * to the more general case: - * - * 1) We have a known bound on the total number of symbols, so we - * have a fixed-size table without any copying when growing - * - * 2) We never delete any entries, so we don't need to - * support/check for DEAD entries during lookup. - * - * 3) The object fits in 32 bits so we store each object in its - * entirety within the table rather than storing objects - * externally and putting pointers in the table, (which here - * would just double the storage requirements and have negative - * impacts on memory locality). - */ - int i, idx, step, hash = symbol & LZW_SYMBOL_KEY_MASK; - lzw_symbol_t candidate; - - idx = hash % LZW_SYMBOL_MOD1; - step = 0; - - *slot_ret = NULL; - for (i = 0; i < LZW_SYMBOL_TABLE_SIZE; i++) - { - candidate = table->table[idx]; - if (candidate == LZW_SYMBOL_FREE) - { - *slot_ret = &table->table[idx]; - return FALSE; - } - else /* candidate is LIVE */ - { - if ((candidate & LZW_SYMBOL_KEY_MASK) == - (symbol & LZW_SYMBOL_KEY_MASK)) - { - *slot_ret = &table->table[idx]; - return TRUE; - } - } - - if (step == 0) { - step = hash % LZW_SYMBOL_MOD2; - if (step == 0) - step = 1; - } - - idx += step; - if (idx >= LZW_SYMBOL_TABLE_SIZE) - idx -= LZW_SYMBOL_TABLE_SIZE; - } - - return FALSE; -} - -/* Compress a bytestream using the LZW algorithm. - * - * This is an original implementation based on reading the - * specification of the LZWDecode filter in the PostScript Language - * Reference. The free parameters in the LZW algorithm are set to the - * values mandated by PostScript, (symbols encoded with widths from 9 - * to 12 bits). - * - * This function returns a pointer to a newly allocated buffer holding - * the compressed data, or %NULL if an out-of-memory situation - * occurs. - * - * Notice that any one of the _lzw_buf functions called here could - * trigger an out-of-memory condition. But lzw_buf_t uses cairo's - * shutdown-on-error idiom, so it's safe to continue to call into - * lzw_buf without having to check for errors, (until a final check at - * the end). - */ -unsigned char * -_cairo_lzw_compress (unsigned char *data, unsigned long *size_in_out) -{ - int bytes_remaining = *size_in_out; - lzw_buf_t buf; - lzw_symbol_table_t table; - lzw_symbol_t symbol, *slot = NULL; /* just to squelch a warning */ - int code_next = LZW_CODE_FIRST; - int code_bits = LZW_BITS_MIN; - int prev, next = 0; /* just to squelch a warning */ - - if (*size_in_out == 0) - return NULL; - - _lzw_buf_init (&buf, *size_in_out); - - _lzw_symbol_table_init (&table); - - /* The LZW header is a clear table code. */ - _lzw_buf_store_bits (&buf, LZW_CODE_CLEAR_TABLE, code_bits); - - while (1) { - - /* Find the longest existing code in the symbol table that - * matches the current input, if any. */ - prev = *data++; - bytes_remaining--; - if (bytes_remaining) { - do - { - next = *data++; - bytes_remaining--; - LZW_SYMBOL_SET (symbol, prev, next); - if (_lzw_symbol_table_lookup (&table, symbol, &slot)) - prev = LZW_SYMBOL_GET_CODE (*slot); - } while (bytes_remaining && *slot != LZW_SYMBOL_FREE); - if (*slot == LZW_SYMBOL_FREE) { - data--; - bytes_remaining++; - } - } - - /* Write the code into the output. This is either a byte read - * directly from the input, or a code from the last successful - * lookup. */ - _lzw_buf_store_bits (&buf, prev, code_bits); - - if (bytes_remaining == 0) - break; - - LZW_SYMBOL_SET_CODE (*slot, code_next++, prev, next); - - if (code_next > LZW_BITS_BOUNDARY(code_bits)) - { - code_bits++; - if (code_bits > LZW_BITS_MAX) { - _lzw_symbol_table_init (&table); - _lzw_buf_store_bits (&buf, LZW_CODE_CLEAR_TABLE, code_bits - 1); - code_bits = LZW_BITS_MIN; - code_next = LZW_CODE_FIRST; - } - } - } - - /* The LZW footer is an end-of-data code. */ - _lzw_buf_store_bits (&buf, LZW_CODE_EOD, code_bits); - - _lzw_buf_store_pending (&buf); - - /* See if we ever ran out of memory while writing to buf. */ - if (buf.status == CAIRO_STATUS_NO_MEMORY) { - *size_in_out = 0; - return NULL; - } - - assert (buf.status == CAIRO_STATUS_SUCCESS); - - *size_in_out = buf.num_data; - return buf.data; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-malloc-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-malloc-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-malloc-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-malloc-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,141 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_MALLOC_PRIVATE_H -#define CAIRO_MALLOC_PRIVATE_H - -#include "cairo-wideint-private.h" - -/** - * _cairo_malloc: - * @size: size in bytes - * - * Allocate @size memory using malloc(). - * The memory should be freed using free(). - * malloc is skipped, if 0 bytes are requested, and %NULL will be returned. - * - * Return value: A pointer to the newly allocated memory, or %NULL in - * case of malloc() failure or size is 0. - */ - -#define _cairo_malloc(size) \ - ((size) ? malloc((unsigned) (size)) : NULL) - -/** - * _cairo_malloc_ab: - * @n: number of elements to allocate - * @size: size of each element - * - * Allocates @n*@size memory using _cairo_malloc(), taking care to not - * overflow when doing the multiplication. Behaves much like - * calloc(), except that the returned memory is not set to zero. - * The memory should be freed using free(). - * - * @size should be a constant so that the compiler can optimize - * out a constant division. - * - * Return value: A pointer to the newly allocated memory, or %NULL in - * case of malloc() failure or overflow. - */ - -#define _cairo_malloc_ab(a, size) \ - ((size) && (unsigned) (a) >= INT32_MAX / (unsigned) (size) ? NULL : \ - _cairo_malloc((unsigned) (a) * (unsigned) (size))) - -/** - * _cairo_realloc_ab: - * @ptr: original pointer to block of memory to be resized - * @n: number of elements to allocate - * @size: size of each element - * - * Reallocates @ptr a block of @n*@size memory using realloc(), taking - * care to not overflow when doing the multiplication. The memory - * should be freed using free(). - * - * @size should be a constant so that the compiler can optimize - * out a constant division. - * - * Return value: A pointer to the newly allocated memory, or %NULL in - * case of realloc() failure or overflow (whereupon the original block - * of memory * is left untouched). - */ - -#define _cairo_realloc_ab(ptr, a, size) \ - ((size) && (unsigned) (a) >= INT32_MAX / (unsigned) (size) ? NULL : \ - realloc(ptr, (unsigned) (a) * (unsigned) (size))) - -/** - * _cairo_malloc_abc: - * @n: first factor of number of elements to allocate - * @b: second factor of number of elements to allocate - * @size: size of each element - * - * Allocates @n*@b*@size memory using _cairo_malloc(), taking care to not - * overflow when doing the multiplication. Behaves like - * _cairo_malloc_ab(). The memory should be freed using free(). - * - * @size should be a constant so that the compiler can optimize - * out a constant division. - * - * Return value: A pointer to the newly allocated memory, or %NULL in - * case of malloc() failure or overflow. - */ - -#define _cairo_malloc_abc(a, b, size) \ - ((b) && (unsigned) (a) >= INT32_MAX / (unsigned) (b) ? NULL : \ - (size) && (unsigned) ((a)*(b)) >= INT32_MAX / (unsigned) (size) ? NULL : \ - _cairo_malloc((unsigned) (a) * (unsigned) (b) * (unsigned) (size))) - -/** - * _cairo_malloc_ab_plus_c: - * @n: number of elements to allocate - * @size: size of each element - * @k: additional size to allocate - * - * Allocates @n*@ksize+@k memory using _cairo_malloc(), taking care to not - * overflow when doing the arithmetic. Behaves like - * _cairo_malloc_ab(). The memory should be freed using free(). - * - * Return value: A pointer to the newly allocated memory, or %NULL in - * case of malloc() failure or overflow. - */ - -#define _cairo_malloc_ab_plus_c(n, size, k) \ - ((size) && (unsigned) (n) >= INT32_MAX / (unsigned) (size) ? NULL : \ - (unsigned) (k) >= INT32_MAX - (unsigned) (n) * (unsigned) (size) ? NULL : \ - _cairo_malloc((unsigned) (n) * (unsigned) (size) + (unsigned) (k))) - -#endif /* CAIRO_MALLOC_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-matrix.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-matrix.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-matrix.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-matrix.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,806 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#define _GNU_SOURCE - -#include "cairoint.h" - -#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) -#define ISFINITE(x) isfinite (x) -#else -#define ISFINITE(x) ((x) * (x) >= 0.) /* check for NaNs */ -#endif - -static void -_cairo_matrix_scalar_multiply (cairo_matrix_t *matrix, double scalar); - -static void -_cairo_matrix_compute_adjoint (cairo_matrix_t *matrix); - -/** - * cairo_matrix_init_identity: - * @matrix: a #cairo_matrix_t - * - * Modifies @matrix to be an identity transformation. - **/ -void -cairo_matrix_init_identity (cairo_matrix_t *matrix) -{ - cairo_matrix_init (matrix, - 1, 0, - 0, 1, - 0, 0); -} -slim_hidden_def(cairo_matrix_init_identity); - -/** - * cairo_matrix_init: - * @matrix: a #cairo_matrix_t - * @xx: xx component of the affine transformation - * @yx: yx component of the affine transformation - * @xy: xy component of the affine transformation - * @yy: yy component of the affine transformation - * @x0: X translation component of the affine transformation - * @y0: Y translation component of the affine transformation - * - * Sets @matrix to be the affine transformation given by - * @xx, @yx, @xy, @yy, @x0, @y0. The transformation is given - * by: - * - * x_new = xx * x + xy * y + x0; - * y_new = yx * x + yy * y + y0; - * - **/ -void -cairo_matrix_init (cairo_matrix_t *matrix, - double xx, double yx, - - double xy, double yy, - double x0, double y0) -{ - matrix->xx = xx; matrix->yx = yx; - matrix->xy = xy; matrix->yy = yy; - matrix->x0 = x0; matrix->y0 = y0; -} -slim_hidden_def(cairo_matrix_init); - -/** - * _cairo_matrix_get_affine: - * @matrix: a #cairo_matrix_t - * @xx: location to store xx component of matrix - * @yx: location to store yx component of matrix - * @xy: location to store xy component of matrix - * @yy: location to store yy component of matrix - * @x0: location to store x0 (X-translation component) of matrix, or %NULL - * @y0: location to store y0 (Y-translation component) of matrix, or %NULL - * - * Gets the matrix values for the affine transformation that @matrix represents. - * See cairo_matrix_init(). - * - * - * This function is a leftover from the old public API, but is still - * mildly useful as an internal means for getting at the matrix - * members in a positional way. For example, when reassigning to some - * external matrix type, or when renaming members to more meaningful - * names (such as a,b,c,d,e,f) for particular manipulations. - **/ -void -_cairo_matrix_get_affine (const cairo_matrix_t *matrix, - double *xx, double *yx, - double *xy, double *yy, - double *x0, double *y0) -{ - *xx = matrix->xx; - *yx = matrix->yx; - - *xy = matrix->xy; - *yy = matrix->yy; - - if (x0) - *x0 = matrix->x0; - if (y0) - *y0 = matrix->y0; -} - -/** - * cairo_matrix_init_translate: - * @matrix: a #cairo_matrix_t - * @tx: amount to translate in the X direction - * @ty: amount to translate in the Y direction - * - * Initializes @matrix to a transformation that translates by @tx and - * @ty in the X and Y dimensions, respectively. - **/ -void -cairo_matrix_init_translate (cairo_matrix_t *matrix, - double tx, double ty) -{ - cairo_matrix_init (matrix, - 1, 0, - 0, 1, - tx, ty); -} -slim_hidden_def(cairo_matrix_init_translate); - -/** - * cairo_matrix_translate: - * @matrix: a #cairo_matrix_t - * @tx: amount to translate in the X direction - * @ty: amount to translate in the Y direction - * - * Applies a translation by @tx, @ty to the transformation in - * @matrix. The effect of the new transformation is to first translate - * the coordinates by @tx and @ty, then apply the original transformation - * to the coordinates. - **/ -void -cairo_matrix_translate (cairo_matrix_t *matrix, double tx, double ty) -{ - cairo_matrix_t tmp; - - cairo_matrix_init_translate (&tmp, tx, ty); - - cairo_matrix_multiply (matrix, &tmp, matrix); -} -slim_hidden_def (cairo_matrix_translate); - -/** - * cairo_matrix_init_scale: - * @matrix: a #cairo_matrix_t - * @sx: scale factor in the X direction - * @sy: scale factor in the Y direction - * - * Initializes @matrix to a transformation that scales by @sx and @sy - * in the X and Y dimensions, respectively. - **/ -void -cairo_matrix_init_scale (cairo_matrix_t *matrix, - double sx, double sy) -{ - cairo_matrix_init (matrix, - sx, 0, - 0, sy, - 0, 0); -} -slim_hidden_def(cairo_matrix_init_scale); - -/** - * cairo_matrix_scale: - * @matrix: a #cairo_matrix_t - * @sx: scale factor in the X direction - * @sy: scale factor in the Y direction - * - * Applies scaling by @sx, @sy to the transformation in @matrix. The - * effect of the new transformation is to first scale the coordinates - * by @sx and @sy, then apply the original transformation to the coordinates. - **/ -void -cairo_matrix_scale (cairo_matrix_t *matrix, double sx, double sy) -{ - cairo_matrix_t tmp; - - cairo_matrix_init_scale (&tmp, sx, sy); - - cairo_matrix_multiply (matrix, &tmp, matrix); -} -slim_hidden_def(cairo_matrix_scale); - -/** - * cairo_matrix_init_rotate: - * @matrix: a #cairo_matrix_t - * @radians: angle of rotation, in radians. The direction of rotation - * is defined such that positive angles rotate in the direction from - * the positive X axis toward the positive Y axis. With the default - * axis orientation of cairo, positive angles rotate in a clockwise - * direction. - * - * Initialized @matrix to a transformation that rotates by @radians. - **/ -void -cairo_matrix_init_rotate (cairo_matrix_t *matrix, - double radians) -{ - double s; - double c; - - s = sin (radians); - c = cos (radians); - - cairo_matrix_init (matrix, - c, s, - -s, c, - 0, 0); -} -slim_hidden_def(cairo_matrix_init_rotate); - -/** - * cairo_matrix_rotate: - * @matrix: a #cairo_matrix_t - * @radians: angle of rotation, in radians. The direction of rotation - * is defined such that positive angles rotate in the direction from - * the positive X axis toward the positive Y axis. With the default - * axis orientation of cairo, positive angles rotate in a clockwise - * direction. - * - * Applies rotation by @radians to the transformation in - * @matrix. The effect of the new transformation is to first rotate the - * coordinates by @radians, then apply the original transformation - * to the coordinates. - **/ -void -cairo_matrix_rotate (cairo_matrix_t *matrix, double radians) -{ - cairo_matrix_t tmp; - - cairo_matrix_init_rotate (&tmp, radians); - - cairo_matrix_multiply (matrix, &tmp, matrix); -} - -/** - * cairo_matrix_multiply: - * @result: a #cairo_matrix_t in which to store the result - * @a: a #cairo_matrix_t - * @b: a #cairo_matrix_t - * - * Multiplies the affine transformations in @a and @b together - * and stores the result in @result. The effect of the resulting - * transformation is to first apply the transformation in @a to the - * coordinates and then apply the transformation in @b to the - * coordinates. - * - * It is allowable for @result to be identical to either @a or @b. - **/ -/* - * XXX: The ordering of the arguments to this function corresponds - * to [row_vector]*A*B. If we want to use column vectors instead, - * then we need to switch the two arguments and fix up all - * uses. - */ -void -cairo_matrix_multiply (cairo_matrix_t *result, const cairo_matrix_t *a, const cairo_matrix_t *b) -{ - cairo_matrix_t r; - - r.xx = a->xx * b->xx + a->yx * b->xy; - r.yx = a->xx * b->yx + a->yx * b->yy; - - r.xy = a->xy * b->xx + a->yy * b->xy; - r.yy = a->xy * b->yx + a->yy * b->yy; - - r.x0 = a->x0 * b->xx + a->y0 * b->xy + b->x0; - r.y0 = a->x0 * b->yx + a->y0 * b->yy + b->y0; - - *result = r; -} -slim_hidden_def(cairo_matrix_multiply); - -/** - * cairo_matrix_transform_distance: - * @matrix: a #cairo_matrix_t - * @dx: X component of a distance vector. An in/out parameter - * @dy: Y component of a distance vector. An in/out parameter - * - * Transforms the distance vector (@dx,@dy) by @matrix. This is - * similar to cairo_matrix_transform_point() except that the translation - * components of the transformation are ignored. The calculation of - * the returned vector is as follows: - * - * - * dx2 = dx1 * a + dy1 * c; - * dy2 = dx1 * b + dy1 * d; - * - * - * Affine transformations are position invariant, so the same vector - * always transforms to the same vector. If (@x1,@y1) transforms - * to (@x2,@y2) then (@x1+@dx1,@y1+@dy1) will transform to - * (@x1+@dx2,@y1+@dy2) for all values of @x1 and @x2. - **/ -void -cairo_matrix_transform_distance (const cairo_matrix_t *matrix, double *dx, double *dy) -{ - double new_x, new_y; - - new_x = (matrix->xx * *dx + matrix->xy * *dy); - new_y = (matrix->yx * *dx + matrix->yy * *dy); - - *dx = new_x; - *dy = new_y; -} -slim_hidden_def(cairo_matrix_transform_distance); - -/** - * cairo_matrix_transform_point: - * @matrix: a #cairo_matrix_t - * @x: X position. An in/out parameter - * @y: Y position. An in/out parameter - * - * Transforms the point (@x, @y) by @matrix. - **/ -void -cairo_matrix_transform_point (const cairo_matrix_t *matrix, double *x, double *y) -{ - cairo_matrix_transform_distance (matrix, x, y); - - *x += matrix->x0; - *y += matrix->y0; -} -slim_hidden_def(cairo_matrix_transform_point); - -void -_cairo_matrix_transform_bounding_box (const cairo_matrix_t *matrix, - double *x1, double *y1, - double *x2, double *y2, - cairo_bool_t *is_tight) -{ - int i; - double quad_x[4], quad_y[4]; - double min_x, max_x; - double min_y, max_y; - - quad_x[0] = *x1; - quad_y[0] = *y1; - cairo_matrix_transform_point (matrix, &quad_x[0], &quad_y[0]); - - quad_x[1] = *x2; - quad_y[1] = *y1; - cairo_matrix_transform_point (matrix, &quad_x[1], &quad_y[1]); - - quad_x[2] = *x1; - quad_y[2] = *y2; - cairo_matrix_transform_point (matrix, &quad_x[2], &quad_y[2]); - - quad_x[3] = *x2; - quad_y[3] = *y2; - cairo_matrix_transform_point (matrix, &quad_x[3], &quad_y[3]); - - min_x = max_x = quad_x[0]; - min_y = max_y = quad_y[0]; - - for (i=1; i < 4; i++) { - if (quad_x[i] < min_x) - min_x = quad_x[i]; - if (quad_x[i] > max_x) - max_x = quad_x[i]; - - if (quad_y[i] < min_y) - min_y = quad_y[i]; - if (quad_y[i] > max_y) - max_y = quad_y[i]; - } - - *x1 = min_x; - *y1 = min_y; - *x2 = max_x; - *y2 = max_y; - - if (is_tight) { - /* it's tight if and only if the four corner points form an axis-aligned - rectangle. - And that's true if and only if we can derive corners 0 and 3 from - corners 1 and 2 in one of two straightforward ways... - We could use a tolerance here but for now we'll fall back to FALSE in the case - of floating point error. - */ - *is_tight = - (quad_x[1] == quad_x[0] && quad_y[1] == quad_y[3] && - quad_x[2] == quad_x[3] && quad_y[2] == quad_y[0]) || - (quad_x[1] == quad_x[3] && quad_y[1] == quad_y[0] && - quad_x[2] == quad_x[0] && quad_y[2] == quad_y[3]); - } -} - -static void -_cairo_matrix_scalar_multiply (cairo_matrix_t *matrix, double scalar) -{ - matrix->xx *= scalar; - matrix->yx *= scalar; - - matrix->xy *= scalar; - matrix->yy *= scalar; - - matrix->x0 *= scalar; - matrix->y0 *= scalar; -} - -/* This function isn't a correct adjoint in that the implicit 1 in the - homogeneous result should actually be ad-bc instead. But, since this - adjoint is only used in the computation of the inverse, which - divides by det (A)=ad-bc anyway, everything works out in the end. */ -static void -_cairo_matrix_compute_adjoint (cairo_matrix_t *matrix) -{ - /* adj (A) = transpose (C:cofactor (A,i,j)) */ - double a, b, c, d, tx, ty; - - _cairo_matrix_get_affine (matrix, - &a, &b, - &c, &d, - &tx, &ty); - - cairo_matrix_init (matrix, - d, -b, - -c, a, - c*ty - d*tx, b*tx - a*ty); -} - -/** - * cairo_matrix_invert: - * @matrix: a #cairo_matrix_t - * - * Changes @matrix to be the inverse of it's original value. Not - * all transformation matrices have inverses; if the matrix - * collapses points together (it is degenerate), - * then it has no inverse and this function will fail. - * - * Returns: If @matrix has an inverse, modifies @matrix to - * be the inverse matrix and returns %CAIRO_STATUS_SUCCESS. Otherwise, - * returns %CAIRO_STATUS_INVALID_MATRIX. - **/ -cairo_status_t -cairo_matrix_invert (cairo_matrix_t *matrix) -{ - /* inv (A) = 1/det (A) * adj (A) */ - double det; - - _cairo_matrix_compute_determinant (matrix, &det); - - if (det == 0) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - if (! ISFINITE (det)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - _cairo_matrix_compute_adjoint (matrix); - _cairo_matrix_scalar_multiply (matrix, 1 / det); - - return CAIRO_STATUS_SUCCESS; -} -slim_hidden_def(cairo_matrix_invert); - -cairo_bool_t -_cairo_matrix_is_invertible (const cairo_matrix_t *matrix) -{ - double det; - - _cairo_matrix_compute_determinant (matrix, &det); - - return det != 0. && ISFINITE (det); -} - -void -_cairo_matrix_compute_determinant (const cairo_matrix_t *matrix, - double *det) -{ - double a, b, c, d; - - a = matrix->xx; b = matrix->yx; - c = matrix->xy; d = matrix->yy; - - *det = a*d - b*c; -} - -/* Compute the amount that each basis vector is scaled by. */ -cairo_status_t -_cairo_matrix_compute_scale_factors (const cairo_matrix_t *matrix, - double *sx, double *sy, int x_major) -{ - double det; - - _cairo_matrix_compute_determinant (matrix, &det); - - if (! ISFINITE (det)) - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); - - if (det == 0) - { - *sx = *sy = 0; - } - else - { - double x = x_major != 0; - double y = x == 0; - double major, minor; - - cairo_matrix_transform_distance (matrix, &x, &y); - major = sqrt(x*x + y*y); - /* - * ignore mirroring - */ - if (det < 0) - det = -det; - if (major) - minor = det / major; - else - minor = 0.0; - if (x_major) - { - *sx = major; - *sy = minor; - } - else - { - *sx = minor; - *sy = major; - } - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_bool_t -_cairo_matrix_is_identity (const cairo_matrix_t *matrix) -{ - return (matrix->xx == 1.0 && matrix->yx == 0.0 && - matrix->xy == 0.0 && matrix->yy == 1.0 && - matrix->x0 == 0.0 && matrix->y0 == 0.0); -} - -cairo_bool_t -_cairo_matrix_is_translation (const cairo_matrix_t *matrix) -{ - return (matrix->xx == 1.0 && matrix->yx == 0.0 && - matrix->xy == 0.0 && matrix->yy == 1.0); -} - -cairo_bool_t -_cairo_matrix_is_integer_translation (const cairo_matrix_t *matrix, - int *itx, int *ity) -{ - if (_cairo_matrix_is_translation (matrix)) - { - cairo_fixed_t x0_fixed = _cairo_fixed_from_double (matrix->x0); - cairo_fixed_t y0_fixed = _cairo_fixed_from_double (matrix->y0); - - if (_cairo_fixed_is_integer (x0_fixed) && - _cairo_fixed_is_integer (y0_fixed)) - { - if (itx) - *itx = _cairo_fixed_integer_part (x0_fixed); - if (ity) - *ity = _cairo_fixed_integer_part (y0_fixed); - - return TRUE; - } - } - - return FALSE; -} - -/* - A circle in user space is transformed into an ellipse in device space. - - The following is a derivation of a formula to calculate the length of the - major axis for this ellipse; this is useful for error bounds calculations. - - Thanks to Walter Brisken for this derivation: - - 1. First some notation: - - All capital letters represent vectors in two dimensions. A prime ' - represents a transformed coordinate. Matrices are written in underlined - form, ie _R_. Lowercase letters represent scalar real values. - - 2. The question has been posed: What is the maximum expansion factor - achieved by the linear transformation - - X' = X _R_ - - where _R_ is a real-valued 2x2 matrix with entries: - - _R_ = [a b] - [c d] . - - In other words, what is the maximum radius, MAX[ |X'| ], reached for any - X on the unit circle ( |X| = 1 ) ? - - 3. Some useful formulae - - (A) through (C) below are standard double-angle formulae. (D) is a lesser - known result and is derived below: - - (A) sin²(θ) = (1 - cos(2*θ))/2 - (B) cos²(θ) = (1 + cos(2*θ))/2 - (C) sin(θ)*cos(θ) = sin(2*θ)/2 - (D) MAX[a*cos(θ) + b*sin(θ)] = sqrt(a² + b²) - - Proof of (D): - - find the maximum of the function by setting the derivative to zero: - - -a*sin(θ)+b*cos(θ) = 0 - - From this it follows that - - tan(θ) = b/a - - and hence - - sin(θ) = b/sqrt(a² + b²) - - and - - cos(θ) = a/sqrt(a² + b²) - - Thus the maximum value is - - MAX[a*cos(θ) + b*sin(θ)] = (a² + b²)/sqrt(a² + b²) - = sqrt(a² + b²) - - 4. Derivation of maximum expansion - - To find MAX[ |X'| ] we search brute force method using calculus. The unit - circle on which X is constrained is to be parameterized by t: - - X(θ) = (cos(θ), sin(θ)) - - Thus - - X'(θ) = X(θ) * _R_ = (cos(θ), sin(θ)) * [a b] - [c d] - = (a*cos(θ) + c*sin(θ), b*cos(θ) + d*sin(θ)). - - Define - - r(θ) = |X'(θ)| - - Thus - - r²(θ) = (a*cos(θ) + c*sin(θ))² + (b*cos(θ) + d*sin(θ))² - = (a² + b²)*cos²(θ) + (c² + d²)*sin²(θ) - + 2*(a*c + b*d)*cos(θ)*sin(θ) - - Now apply the double angle formulae (A) to (C) from above: - - r²(θ) = (a² + b² + c² + d²)/2 - + (a² + b² - c² - d²)*cos(2*θ)/2 - + (a*c + b*d)*sin(2*θ) - = f + g*cos(φ) + h*sin(φ) - - Where - - f = (a² + b² + c² + d²)/2 - g = (a² + b² - c² - d²)/2 - h = (a*c + d*d) - φ = 2*θ - - It is clear that MAX[ |X'| ] = sqrt(MAX[ r² ]). Here we determine MAX[ r² ] - using (D) from above: - - MAX[ r² ] = f + sqrt(g² + h²) - - And finally - - MAX[ |X'| ] = sqrt( f + sqrt(g² + h²) ) - - Which is the solution to this problem. - - Walter Brisken - 2004/10/08 - - (Note that the minor axis length is at the minimum of the above solution, - which is just sqrt ( f - sqrt(g² + h²) ) given the symmetry of (D)). -*/ - -/* determine the length of the major axis of a circle of the given radius - after applying the transformation matrix. */ -double -_cairo_matrix_transformed_circle_major_axis (cairo_matrix_t *matrix, double radius) -{ - double a, b, c, d, f, g, h, i, j; - - _cairo_matrix_get_affine (matrix, - &a, &b, - &c, &d, - NULL, NULL); - - i = a*a + b*b; - j = c*c + d*d; - - f = 0.5 * (i + j); - g = 0.5 * (i - j); - h = a*c + b*d; - - return radius * sqrt (f + sqrt (g*g+h*h)); - - /* - * we don't need the minor axis length, which is - * double min = radius * sqrt (f - sqrt (g*g+h*h)); - */ -} - -void -_cairo_matrix_to_pixman_matrix (const cairo_matrix_t *matrix, - pixman_transform_t *pixman_transform) -{ - static const pixman_transform_t pixman_identity_transform = {{ - {1 << 16, 0, 0}, - { 0, 1 << 16, 0}, - { 0, 0, 1 << 16} - }}; - - if (_cairo_matrix_is_identity (matrix)) { - *pixman_transform = pixman_identity_transform; - } - else { - cairo_matrix_t inv = *matrix; - double x = 0, y = 0; - pixman_vector_t vector; - - pixman_transform->matrix[0][0] = _cairo_fixed_16_16_from_double (matrix->xx); - pixman_transform->matrix[0][1] = _cairo_fixed_16_16_from_double (matrix->xy); - pixman_transform->matrix[0][2] = _cairo_fixed_16_16_from_double (matrix->x0); - - pixman_transform->matrix[1][0] = _cairo_fixed_16_16_from_double (matrix->yx); - pixman_transform->matrix[1][1] = _cairo_fixed_16_16_from_double (matrix->yy); - pixman_transform->matrix[1][2] = _cairo_fixed_16_16_from_double (matrix->y0); - - pixman_transform->matrix[2][0] = 0; - pixman_transform->matrix[2][1] = 0; - pixman_transform->matrix[2][2] = 1 << 16; - - /* The conversion above breaks cairo's translation invariance: - * a translation of (a, b) in device space translates to - * a translation of (xx * a + xy * b, yx * a + yy * b) - * for cairo, while pixman uses rounded versions of xx ... yy. - * This error increases as a and b get larger. - * - * To compensate for this, we fix the point (0, 0) in pattern - * space and adjust pixman's transform to agree with cairo's at - * that point. */ - - /* Note: If we can't invert the transformation, skip the adjustment. */ - if (cairo_matrix_invert (&inv) != CAIRO_STATUS_SUCCESS) - return; - - /* find the device space coordinate that maps to (0, 0) */ - cairo_matrix_transform_point (&inv, &x, &y); - - /* transform the resulting device space coordinate back - * to the pattern space, using pixman's transform */ - vector.vector[0] = _cairo_fixed_16_16_from_double (x); - vector.vector[1] = _cairo_fixed_16_16_from_double (y); - vector.vector[2] = 1 << 16; - - if (!pixman_transform_point_3d (pixman_transform, &vector)) - return; - - /* Ideally, the vector should now be (0, 0). We can now compensate - * for the resulting error */ - pixman_transform->matrix[0][2] -= vector.vector[0]; - pixman_transform->matrix[1][2] -= vector.vector[1]; - } -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-meta-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-meta-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-meta-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-meta-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,909 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * Copyright © 2007 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Kristian Høgsberg - * Carl Worth - * Adrian Johnson - */ - -/* A meta surface is a surface that records all drawing operations at - * the highest level of the surface backend interface, (that is, the - * level of paint, mask, stroke, fill, and show_glyphs). The meta - * surface can then be "replayed" against any target surface with: - * - * _cairo_meta_surface_replay (meta, target); - * - * after which the results in target will be identical to the results - * that would have been obtained if the original operations applied to - * the meta surface had instead been applied to the target surface. - * - * The recording phase of the meta surface is careful to snapshot all - * necessary objects (paths, patterns, etc.), in order to achieve - * accurate replay. The efficiency of the meta surface could be - * improved by improving the implementation of snapshot for the - * various objects. For example, it would be nice to have a - * copy-on-write implementation for _cairo_surface_snapshot. - */ - -#include "cairoint.h" -#include "cairo-meta-surface-private.h" -#include "cairo-clip-private.h" - -typedef enum { - CAIRO_META_REPLAY, - CAIRO_META_CREATE_REGIONS -} cairo_meta_replay_type_t; - -static const cairo_surface_backend_t cairo_meta_surface_backend; - -/* Currently all meta surfaces do have a size which should be passed - * in as the maximum size of any target surface against which the - * meta-surface will ever be replayed. - * - * XXX: The naming of "pixels" in the size here is a misnomer. It's - * actually a size in whatever device-space units are desired (again, - * according to the intended replay target). This should likely also - * be changed to use doubles not ints. - */ -cairo_surface_t * -_cairo_meta_surface_create (cairo_content_t content, - int width_pixels, - int height_pixels) -{ - cairo_meta_surface_t *meta; - - meta = malloc (sizeof (cairo_meta_surface_t)); - if (meta == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - _cairo_surface_init (&meta->base, &cairo_meta_surface_backend, - content); - - meta->content = content; - meta->width_pixels = width_pixels; - meta->height_pixels = height_pixels; - - _cairo_array_init (&meta->commands, sizeof (cairo_command_t *)); - meta->commands_owner = NULL; - - meta->is_clipped = FALSE; - meta->replay_start_idx = 0; - - return &meta->base; -} - -static cairo_surface_t * -_cairo_meta_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - return _cairo_meta_surface_create (content, width, height); -} - -static cairo_status_t -_cairo_meta_surface_finish (void *abstract_surface) -{ - cairo_meta_surface_t *meta = abstract_surface; - cairo_command_t *command; - cairo_command_t **elements; - int i, num_elements; - - if (meta->commands_owner) { - cairo_surface_destroy (meta->commands_owner); - return CAIRO_STATUS_SUCCESS; - } - - num_elements = meta->commands.num_elements; - elements = _cairo_array_index (&meta->commands, 0); - for (i = 0; i < num_elements; i++) { - command = elements[i]; - switch (command->header.type) { - - /* 5 basic drawing operations */ - - case CAIRO_COMMAND_PAINT: - _cairo_pattern_fini (&command->paint.source.base); - free (command); - break; - - case CAIRO_COMMAND_MASK: - _cairo_pattern_fini (&command->mask.source.base); - _cairo_pattern_fini (&command->mask.mask.base); - free (command); - break; - - case CAIRO_COMMAND_STROKE: - _cairo_pattern_fini (&command->stroke.source.base); - _cairo_path_fixed_fini (&command->stroke.path); - _cairo_stroke_style_fini (&command->stroke.style); - free (command); - break; - - case CAIRO_COMMAND_FILL: - _cairo_pattern_fini (&command->fill.source.base); - _cairo_path_fixed_fini (&command->fill.path); - free (command); - break; - - case CAIRO_COMMAND_SHOW_GLYPHS: - _cairo_pattern_fini (&command->show_glyphs.source.base); - free (command->show_glyphs.glyphs); - cairo_scaled_font_destroy (command->show_glyphs.scaled_font); - free (command); - break; - - /* Other junk. */ - case CAIRO_COMMAND_INTERSECT_CLIP_PATH: - if (command->intersect_clip_path.path_pointer) - _cairo_path_fixed_fini (&command->intersect_clip_path.path); - free (command); - break; - - default: - ASSERT_NOT_REACHED; - } - } - - _cairo_array_fini (&meta->commands); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_meta_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_status_t status; - cairo_meta_surface_t *surface = abstract_surface; - cairo_surface_t *image; - - image = _cairo_image_surface_create_with_content (surface->content, - surface->width_pixels, - surface->height_pixels); - - status = _cairo_meta_surface_replay (&surface->base, image); - if (status) { - cairo_surface_destroy (image); - return status; - } - - *image_out = (cairo_image_surface_t *) image; - *image_extra = NULL; - - return status; -} - -static void -_cairo_meta_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_init_pattern_with_snapshot (cairo_pattern_t *pattern, - const cairo_pattern_t *other) -{ - cairo_status_t status; - - status = _cairo_pattern_init_copy (pattern, other); - if (status) - return status; - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = - (cairo_surface_pattern_t *) pattern; - cairo_surface_t *surface = surface_pattern->surface; - - surface_pattern->surface = _cairo_surface_snapshot (surface); - - cairo_surface_destroy (surface); - - if (surface_pattern->surface->status) - return surface_pattern->surface->status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_meta_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_status_t status; - cairo_meta_surface_t *meta = abstract_surface; - cairo_command_paint_t *command; - - command = malloc (sizeof (cairo_command_paint_t)); - if (command == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - command->header.type = CAIRO_COMMAND_PAINT; - command->header.region = CAIRO_META_REGION_ALL; - command->op = op; - - status = _init_pattern_with_snapshot (&command->source.base, source); - if (status) - goto CLEANUP_COMMAND; - - status = _cairo_array_append (&meta->commands, &command); - if (status) - goto CLEANUP_SOURCE; - - /* An optimisation that takes care to not replay what was done - * before surface is cleared. We don't erase recorded commands - * since we may have earlier snapshots of this surface. */ - if (op == CAIRO_OPERATOR_CLEAR && !meta->is_clipped) - meta->replay_start_idx = meta->commands.num_elements; - - return CAIRO_STATUS_SUCCESS; - - CLEANUP_SOURCE: - _cairo_pattern_fini (&command->source.base); - CLEANUP_COMMAND: - free (command); - return status; -} - -static cairo_int_status_t -_cairo_meta_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_status_t status; - cairo_meta_surface_t *meta = abstract_surface; - cairo_command_mask_t *command; - - command = malloc (sizeof (cairo_command_mask_t)); - if (command == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - command->header.type = CAIRO_COMMAND_MASK; - command->header.region = CAIRO_META_REGION_ALL; - command->op = op; - - status = _init_pattern_with_snapshot (&command->source.base, source); - if (status) - goto CLEANUP_COMMAND; - - status = _init_pattern_with_snapshot (&command->mask.base, mask); - if (status) - goto CLEANUP_SOURCE; - - status = _cairo_array_append (&meta->commands, &command); - if (status) - goto CLEANUP_MASK; - - return CAIRO_STATUS_SUCCESS; - - CLEANUP_MASK: - _cairo_pattern_fini (&command->mask.base); - CLEANUP_SOURCE: - _cairo_pattern_fini (&command->source.base); - CLEANUP_COMMAND: - free (command); - return status; -} - -static cairo_int_status_t -_cairo_meta_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_meta_surface_t *meta = abstract_surface; - cairo_command_stroke_t *command; - - command = malloc (sizeof (cairo_command_stroke_t)); - if (command == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - command->header.type = CAIRO_COMMAND_STROKE; - command->header.region = CAIRO_META_REGION_ALL; - command->op = op; - - status = _init_pattern_with_snapshot (&command->source.base, source); - if (status) - goto CLEANUP_COMMAND; - - status = _cairo_path_fixed_init_copy (&command->path, path); - if (status) - goto CLEANUP_SOURCE; - - status = _cairo_stroke_style_init_copy (&command->style, style); - if (status) - goto CLEANUP_PATH; - - command->ctm = *ctm; - command->ctm_inverse = *ctm_inverse; - command->tolerance = tolerance; - command->antialias = antialias; - - status = _cairo_array_append (&meta->commands, &command); - if (status) - goto CLEANUP_STYLE; - - return CAIRO_STATUS_SUCCESS; - - CLEANUP_STYLE: - _cairo_stroke_style_fini (&command->style); - CLEANUP_PATH: - _cairo_path_fixed_fini (&command->path); - CLEANUP_SOURCE: - _cairo_pattern_fini (&command->source.base); - CLEANUP_COMMAND: - free (command); - return status; -} - -static cairo_int_status_t -_cairo_meta_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_meta_surface_t *meta = abstract_surface; - cairo_command_fill_t *command; - - command = malloc (sizeof (cairo_command_fill_t)); - if (command == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - command->header.type = CAIRO_COMMAND_FILL; - command->header.region = CAIRO_META_REGION_ALL; - command->op = op; - - status = _init_pattern_with_snapshot (&command->source.base, source); - if (status) - goto CLEANUP_COMMAND; - - status = _cairo_path_fixed_init_copy (&command->path, path); - if (status) - goto CLEANUP_SOURCE; - - command->fill_rule = fill_rule; - command->tolerance = tolerance; - command->antialias = antialias; - - status = _cairo_array_append (&meta->commands, &command); - if (status) - goto CLEANUP_PATH; - - return CAIRO_STATUS_SUCCESS; - - CLEANUP_PATH: - _cairo_path_fixed_fini (&command->path); - CLEANUP_SOURCE: - _cairo_pattern_fini (&command->source.base); - CLEANUP_COMMAND: - free (command); - return status; -} - -static cairo_int_status_t -_cairo_meta_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_status_t status; - cairo_meta_surface_t *meta = abstract_surface; - cairo_command_show_glyphs_t *command; - - command = malloc (sizeof (cairo_command_show_glyphs_t)); - if (command == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - command->header.type = CAIRO_COMMAND_SHOW_GLYPHS; - command->header.region = CAIRO_META_REGION_ALL; - command->op = op; - - status = _init_pattern_with_snapshot (&command->source.base, source); - if (status) - goto CLEANUP_COMMAND; - - command->glyphs = _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t)); - if (command->glyphs == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_SOURCE; - } - memcpy (command->glyphs, glyphs, sizeof (cairo_glyph_t) * num_glyphs); - - command->num_glyphs = num_glyphs; - - command->scaled_font = cairo_scaled_font_reference (scaled_font); - - status = _cairo_array_append (&meta->commands, &command); - if (status) - goto CLEANUP_SCALED_FONT; - - return CAIRO_STATUS_SUCCESS; - - CLEANUP_SCALED_FONT: - cairo_scaled_font_destroy (command->scaled_font); - free (command->glyphs); - CLEANUP_SOURCE: - _cairo_pattern_fini (&command->source.base); - CLEANUP_COMMAND: - free (command); - return status; -} - -/** - * _cairo_meta_surface_snapshot - * @surface: a #cairo_surface_t which must be a meta surface - * - * Make an immutable copy of @surface. It is an error to call a - * surface-modifying function on the result of this function. - * - * The caller owns the return value and should call - * cairo_surface_destroy when finished with it. This function will not - * return %NULL, but will return a nil surface instead. - * - * Return value: The snapshot surface. - **/ -static cairo_surface_t * -_cairo_meta_surface_snapshot (void *abstract_other) -{ - cairo_meta_surface_t *other = abstract_other; - cairo_meta_surface_t *meta; - - meta = malloc (sizeof (cairo_meta_surface_t)); - if (meta == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - _cairo_surface_init (&meta->base, &cairo_meta_surface_backend, - other->base.content); - meta->base.is_snapshot = TRUE; - - meta->width_pixels = other->width_pixels; - meta->height_pixels = other->height_pixels; - meta->replay_start_idx = other->replay_start_idx; - meta->content = other->content; - - _cairo_array_init_snapshot (&meta->commands, &other->commands); - meta->commands_owner = cairo_surface_reference (&other->base); - - return &meta->base; -} - -static cairo_int_status_t -_cairo_meta_surface_intersect_clip_path (void *dst, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_meta_surface_t *meta = dst; - cairo_command_intersect_clip_path_t *command; - cairo_status_t status; - - command = malloc (sizeof (cairo_command_intersect_clip_path_t)); - if (command == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - command->header.type = CAIRO_COMMAND_INTERSECT_CLIP_PATH; - command->header.region = CAIRO_META_REGION_ALL; - - if (path) { - status = _cairo_path_fixed_init_copy (&command->path, path); - if (status) { - free (command); - return status; - } - command->path_pointer = &command->path; - meta->is_clipped = TRUE; - } else { - command->path_pointer = NULL; - meta->is_clipped = FALSE; - } - command->fill_rule = fill_rule; - command->tolerance = tolerance; - command->antialias = antialias; - - status = _cairo_array_append (&meta->commands, &command); - if (status) { - if (path) - _cairo_path_fixed_fini (&command->path); - free (command); - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -/* Currently, we're using as the "size" of a meta surface the largest - * surface size against which the meta-surface is expected to be - * replayed, (as passed in to _cairo_meta_surface_create). - */ -static cairo_int_status_t -_cairo_meta_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_meta_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - rectangle->width = surface->width_pixels; - rectangle->height = surface->height_pixels; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_surface_is_meta: - * @surface: a #cairo_surface_t - * - * Checks if a surface is a #cairo_meta_surface_t - * - * Return value: %TRUE if the surface is a meta surface - **/ -cairo_bool_t -_cairo_surface_is_meta (const cairo_surface_t *surface) -{ - return surface->backend == &cairo_meta_surface_backend; -} - -static const cairo_surface_backend_t cairo_meta_surface_backend = { - CAIRO_INTERNAL_SURFACE_TYPE_META, - _cairo_meta_surface_create_similar, - _cairo_meta_surface_finish, - _cairo_meta_surface_acquire_source_image, - _cairo_meta_surface_release_source_image, - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - NULL, /* set_clip_region */ - _cairo_meta_surface_intersect_clip_path, - _cairo_meta_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - /* Here are the 5 basic drawing operations, (which are in some - * sense the only things that cairo_meta_surface should need to - * implement). */ - - _cairo_meta_surface_paint, - _cairo_meta_surface_mask, - _cairo_meta_surface_stroke, - _cairo_meta_surface_fill, - _cairo_meta_surface_show_glyphs, - - _cairo_meta_surface_snapshot -}; - -static cairo_path_fixed_t * -_cairo_command_get_path (cairo_command_t *command) -{ - switch (command->header.type) { - case CAIRO_COMMAND_PAINT: - case CAIRO_COMMAND_MASK: - case CAIRO_COMMAND_SHOW_GLYPHS: - return NULL; - case CAIRO_COMMAND_STROKE: - return &command->stroke.path; - case CAIRO_COMMAND_FILL: - return &command->fill.path; - case CAIRO_COMMAND_INTERSECT_CLIP_PATH: - return command->intersect_clip_path.path_pointer; - } - - ASSERT_NOT_REACHED; - return NULL; -} - -static cairo_status_t -_cairo_meta_surface_replay_internal (cairo_surface_t *surface, - cairo_surface_t *target, - cairo_meta_replay_type_t type, - cairo_meta_region_type_t region) -{ - cairo_meta_surface_t *meta; - cairo_command_t *command, **elements; - int i, num_elements; - cairo_int_status_t status; - cairo_clip_t clip; - cairo_bool_t has_device_transform = _cairo_surface_has_device_transform (target); - cairo_matrix_t *device_transform = &target->device_transform; - cairo_path_fixed_t path_copy, *dev_path; - - if (surface->status) - return surface->status; - - if (target->status) - return _cairo_surface_set_error (surface, target->status); - - meta = (cairo_meta_surface_t *) surface; - status = CAIRO_STATUS_SUCCESS; - - _cairo_clip_init (&clip, target); - - num_elements = meta->commands.num_elements; - elements = _cairo_array_index (&meta->commands, 0); - for (i = meta->replay_start_idx; i < num_elements; i++) { - command = elements[i]; - - if (type == CAIRO_META_REPLAY && region != CAIRO_META_REGION_ALL) { - if (command->header.region != region) - continue; - } - - /* For all commands except intersect_clip_path, we have to - * ensure the current clip gets set on the surface. */ - if (command->header.type != CAIRO_COMMAND_INTERSECT_CLIP_PATH) { - status = _cairo_surface_set_clip (target, &clip); - if (status) - break; - } - - dev_path = _cairo_command_get_path (command); - if (dev_path && has_device_transform) { - status = _cairo_path_fixed_init_copy (&path_copy, dev_path); - if (status) - break; - _cairo_path_fixed_device_transform (&path_copy, device_transform); - dev_path = &path_copy; - } - - switch (command->header.type) { - case CAIRO_COMMAND_PAINT: - status = _cairo_surface_paint (target, - command->paint.op, - &command->paint.source.base); - break; - case CAIRO_COMMAND_MASK: - status = _cairo_surface_mask (target, - command->mask.op, - &command->mask.source.base, - &command->mask.mask.base); - break; - case CAIRO_COMMAND_STROKE: - { - cairo_matrix_t dev_ctm = command->stroke.ctm; - cairo_matrix_t dev_ctm_inverse = command->stroke.ctm_inverse; - cairo_matrix_t tmp; - - if (has_device_transform) { - cairo_matrix_multiply (&dev_ctm, &dev_ctm, device_transform); - tmp = surface->device_transform; - status = cairo_matrix_invert (&tmp); - assert (status == CAIRO_STATUS_SUCCESS); - cairo_matrix_multiply (&dev_ctm_inverse, &tmp, &dev_ctm_inverse); - } - - status = _cairo_surface_stroke (target, - command->stroke.op, - &command->stroke.source.base, - dev_path, - &command->stroke.style, - &dev_ctm, - &dev_ctm_inverse, - command->stroke.tolerance, - command->stroke.antialias); - break; - } - case CAIRO_COMMAND_FILL: - { - cairo_command_t *stroke_command; - - if (type != CAIRO_META_CREATE_REGIONS) - stroke_command = (i < num_elements - 1) ? elements[i + 1] : NULL; - else - stroke_command = NULL; - - if (stroke_command != NULL && - type == CAIRO_META_REPLAY && region != CAIRO_META_REGION_ALL) - { - if (stroke_command->header.region != region) - stroke_command = NULL; - } - if (stroke_command != NULL && - stroke_command->header.type == CAIRO_COMMAND_STROKE && - _cairo_path_fixed_is_equal (dev_path, _cairo_command_get_path (stroke_command))) { - cairo_matrix_t dev_ctm; - cairo_matrix_t dev_ctm_inverse; - cairo_matrix_t tmp; - - dev_ctm = stroke_command->stroke.ctm; - dev_ctm_inverse = stroke_command->stroke.ctm_inverse; - - if (has_device_transform) { - cairo_matrix_multiply (&dev_ctm, &dev_ctm, device_transform); - tmp = surface->device_transform; - status = cairo_matrix_invert (&tmp); - assert (status == CAIRO_STATUS_SUCCESS); - cairo_matrix_multiply (&dev_ctm_inverse, &tmp, &dev_ctm_inverse); - } - - status = _cairo_surface_fill_stroke (target, - command->fill.op, - &command->fill.source.base, - command->fill.fill_rule, - command->fill.tolerance, - command->fill.antialias, - dev_path, - stroke_command->stroke.op, - &stroke_command->stroke.source.base, - &stroke_command->stroke.style, - &dev_ctm, - &dev_ctm_inverse, - stroke_command->stroke.tolerance, - stroke_command->stroke.antialias); - i++; - } else - status = _cairo_surface_fill (target, - command->fill.op, - &command->fill.source.base, - dev_path, - command->fill.fill_rule, - command->fill.tolerance, - command->fill.antialias); - break; - } - case CAIRO_COMMAND_SHOW_GLYPHS: - { - cairo_glyph_t *glyphs = command->show_glyphs.glyphs; - cairo_glyph_t *dev_glyphs; - int i, num_glyphs = command->show_glyphs.num_glyphs; - - /* show_glyphs is special because _cairo_surface_show_glyphs is allowed - * to modify the glyph array that's passed in. We must always - * copy the array before handing it to the backend. - */ - dev_glyphs = _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t)); - if (dev_glyphs == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - break; - } - - if (has_device_transform) { - for (i = 0; i < num_glyphs; i++) { - dev_glyphs[i] = glyphs[i]; - cairo_matrix_transform_point (device_transform, - &dev_glyphs[i].x, - &dev_glyphs[i].y); - } - } else { - memcpy (dev_glyphs, glyphs, sizeof (cairo_glyph_t) * num_glyphs); - } - - status = _cairo_surface_show_glyphs (target, - command->show_glyphs.op, - &command->show_glyphs.source.base, - dev_glyphs, num_glyphs, - command->show_glyphs.scaled_font); - - free (dev_glyphs); - break; - } - case CAIRO_COMMAND_INTERSECT_CLIP_PATH: - /* XXX Meta surface clipping is broken and requires some - * cairo-gstate.c rewriting. Work around it for now. */ - if (dev_path == NULL) - _cairo_clip_reset (&clip); - else - status = _cairo_clip_clip (&clip, dev_path, - command->intersect_clip_path.fill_rule, - command->intersect_clip_path.tolerance, - command->intersect_clip_path.antialias, - target); - assert (status == 0); - break; - default: - ASSERT_NOT_REACHED; - } - - if (dev_path == &path_copy) - _cairo_path_fixed_fini (&path_copy); - - if (type == CAIRO_META_CREATE_REGIONS) { - if (status == CAIRO_STATUS_SUCCESS) { - command->header.region = CAIRO_META_REGION_NATIVE; - } else if (status == CAIRO_INT_STATUS_IMAGE_FALLBACK) { - command->header.region = CAIRO_META_REGION_IMAGE_FALLBACK; - status = CAIRO_STATUS_SUCCESS; - } - } - - if (status) - break; - } - - _cairo_clip_reset (&clip); - - return _cairo_surface_set_error (surface, status); -} - -cairo_status_t -_cairo_meta_surface_replay (cairo_surface_t *surface, - cairo_surface_t *target) -{ - return _cairo_meta_surface_replay_internal (surface, - target, - CAIRO_META_REPLAY, - CAIRO_META_REGION_ALL); -} - -/* Replay meta to surface. When the return status of each operation is - * one of %CAIRO_STATUS_SUCCESS, %CAIRO_INT_STATUS_UNSUPPORTED, or - * CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY the status of each operation - * will be stored in the meta surface. Any other status will abort the - * replay and return the status. - */ -cairo_status_t -_cairo_meta_surface_replay_and_create_regions (cairo_surface_t *surface, - cairo_surface_t *target) -{ - return _cairo_meta_surface_replay_internal (surface, - target, - CAIRO_META_CREATE_REGIONS, - CAIRO_META_REGION_ALL); -} - -cairo_status_t -_cairo_meta_surface_replay_region (cairo_surface_t *surface, - cairo_surface_t *target, - cairo_meta_region_type_t region) -{ - return _cairo_meta_surface_replay_internal (surface, - target, - CAIRO_META_REPLAY, - region); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-meta-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-meta-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-meta-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-meta-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Kristian Høgsberg - * Adrian Johnson - */ - -#ifndef CAIRO_META_SURFACE_H -#define CAIRO_META_SURFACE_H - -#include "cairoint.h" -#include "cairo-path-fixed-private.h" - -typedef enum { - /* The 5 basic drawing operations. */ - CAIRO_COMMAND_PAINT, - CAIRO_COMMAND_MASK, - CAIRO_COMMAND_STROKE, - CAIRO_COMMAND_FILL, - CAIRO_COMMAND_SHOW_GLYPHS, - - /* Other junk. For most of these, we should be able to assert that - * they never get called except as part of fallbacks for the 5 - * basic drawing operations (which we implement already so the - * fallbacks should never get triggered). So the plan is to - * eliminate as many of these as possible. */ - - CAIRO_COMMAND_INTERSECT_CLIP_PATH - -} cairo_command_type_t; - -typedef enum { - CAIRO_META_REGION_ALL, - CAIRO_META_REGION_NATIVE, - CAIRO_META_REGION_IMAGE_FALLBACK -} cairo_meta_region_type_t; - -typedef struct _cairo_command_header { - cairo_command_type_t type; - cairo_meta_region_type_t region; -} cairo_command_header_t; - -typedef struct _cairo_command_paint { - cairo_command_header_t header; - cairo_operator_t op; - cairo_pattern_union_t source; -} cairo_command_paint_t; - -typedef struct _cairo_command_mask { - cairo_command_header_t header; - cairo_operator_t op; - cairo_pattern_union_t source; - cairo_pattern_union_t mask; -} cairo_command_mask_t; - -typedef struct _cairo_command_stroke { - cairo_command_header_t header; - cairo_operator_t op; - cairo_pattern_union_t source; - cairo_path_fixed_t path; - cairo_stroke_style_t style; - cairo_matrix_t ctm; - cairo_matrix_t ctm_inverse; - double tolerance; - cairo_antialias_t antialias; -} cairo_command_stroke_t; - -typedef struct _cairo_command_fill { - cairo_command_header_t header; - cairo_operator_t op; - cairo_pattern_union_t source; - cairo_path_fixed_t path; - cairo_fill_rule_t fill_rule; - double tolerance; - cairo_antialias_t antialias; -} cairo_command_fill_t; - -typedef struct _cairo_command_show_glyphs { - cairo_command_header_t header; - cairo_operator_t op; - cairo_pattern_union_t source; - cairo_glyph_t *glyphs; - unsigned int num_glyphs; - cairo_scaled_font_t *scaled_font; -} cairo_command_show_glyphs_t; - -typedef struct _cairo_command_intersect_clip_path { - cairo_command_header_t header; - cairo_path_fixed_t *path_pointer; - cairo_path_fixed_t path; - cairo_fill_rule_t fill_rule; - double tolerance; - cairo_antialias_t antialias; -} cairo_command_intersect_clip_path_t; - -typedef union _cairo_command { - cairo_command_header_t header; - - /* The 5 basic drawing operations. */ - cairo_command_paint_t paint; - cairo_command_mask_t mask; - cairo_command_stroke_t stroke; - cairo_command_fill_t fill; - cairo_command_show_glyphs_t show_glyphs; - - /* The other junk. */ - cairo_command_intersect_clip_path_t intersect_clip_path; -} cairo_command_t; - -typedef struct _cairo_meta_surface { - cairo_surface_t base; - - cairo_content_t content; - - /* A meta-surface is logically unbounded, but when used as a - * source we need to render it to an image, so we need a size at - * which to create that image. */ - int width_pixels; - int height_pixels; - - cairo_array_t commands; - cairo_surface_t *commands_owner; - - cairo_bool_t is_clipped; - int replay_start_idx; -} cairo_meta_surface_t; - -cairo_private cairo_surface_t * -_cairo_meta_surface_create (cairo_content_t content, - int width_pixels, - int height_pixels); - -cairo_private cairo_status_t -_cairo_meta_surface_replay (cairo_surface_t *surface, - cairo_surface_t *target); - -cairo_private cairo_status_t -_cairo_meta_surface_replay_analyze_meta_pattern (cairo_surface_t *surface, - cairo_surface_t *target); - -cairo_private cairo_status_t -_cairo_meta_surface_replay_and_create_regions (cairo_surface_t *surface, - cairo_surface_t *target); -cairo_private cairo_status_t -_cairo_meta_surface_replay_region (cairo_surface_t *surface, - cairo_surface_t *target, - cairo_meta_region_type_t region); - -cairo_private cairo_bool_t -_cairo_surface_is_meta (const cairo_surface_t *surface); - -#endif /* CAIRO_META_SURFACE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-misc.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-misc.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-misc.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-misc.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,407 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - - -/** - * cairo_status_to_string: - * @status: a cairo status - * - * Provides a human-readable description of a #cairo_status_t. - * - * Returns: a string representation of the status - */ -const char * -cairo_status_to_string (cairo_status_t status) -{ - switch (status) { - case CAIRO_STATUS_SUCCESS: - return "success"; - case CAIRO_STATUS_NO_MEMORY: - return "out of memory"; - case CAIRO_STATUS_INVALID_RESTORE: - return "cairo_restore without matching cairo_save"; - case CAIRO_STATUS_INVALID_POP_GROUP: - return "cairo_pop_group without matching cairo_push_group"; - case CAIRO_STATUS_NO_CURRENT_POINT: - return "no current point defined"; - case CAIRO_STATUS_INVALID_MATRIX: - return "invalid matrix (not invertible)"; - case CAIRO_STATUS_INVALID_STATUS: - return "invalid value for an input cairo_status_t"; - case CAIRO_STATUS_NULL_POINTER: - return "NULL pointer"; - case CAIRO_STATUS_INVALID_STRING: - return "input string not valid UTF-8"; - case CAIRO_STATUS_INVALID_PATH_DATA: - return "input path data not valid"; - case CAIRO_STATUS_READ_ERROR: - return "error while reading from input stream"; - case CAIRO_STATUS_WRITE_ERROR: - return "error while writing to output stream"; - case CAIRO_STATUS_SURFACE_FINISHED: - return "the target surface has been finished"; - case CAIRO_STATUS_SURFACE_TYPE_MISMATCH: - return "the surface type is not appropriate for the operation"; - case CAIRO_STATUS_PATTERN_TYPE_MISMATCH: - return "the pattern type is not appropriate for the operation"; - case CAIRO_STATUS_INVALID_CONTENT: - return "invalid value for an input cairo_content_t"; - case CAIRO_STATUS_INVALID_FORMAT: - return "invalid value for an input cairo_format_t"; - case CAIRO_STATUS_INVALID_VISUAL: - return "invalid value for an input Visual*"; - case CAIRO_STATUS_FILE_NOT_FOUND: - return "file not found"; - case CAIRO_STATUS_INVALID_DASH: - return "invalid value for a dash setting"; - case CAIRO_STATUS_INVALID_DSC_COMMENT: - return "invalid value for a DSC comment"; - case CAIRO_STATUS_INVALID_INDEX: - return "invalid index passed to getter"; - case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: - return "clip region not representable in desired format"; - case CAIRO_STATUS_TEMP_FILE_ERROR: - return "error creating or writing to a temporary file"; - case CAIRO_STATUS_INVALID_STRIDE: - return "invalid value for stride"; - } - - return ""; -} - -/** - * _cairo_operator_bounded_by_mask: - * @op: a #cairo_operator_t - * - * A bounded operator is one where mask pixel - * of zero results in no effect on the destination image. - * - * Unbounded operators often require special handling; if you, for - * example, draw trapezoids with an unbounded operator, the effect - * extends past the bounding box of the trapezoids. - * - * Return value: %TRUE if the operator is bounded by the mask operand - **/ -cairo_bool_t -_cairo_operator_bounded_by_mask (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - case CAIRO_OPERATOR_SOURCE: - case CAIRO_OPERATOR_OVER: - case CAIRO_OPERATOR_ATOP: - case CAIRO_OPERATOR_DEST: - case CAIRO_OPERATOR_DEST_OVER: - case CAIRO_OPERATOR_DEST_OUT: - case CAIRO_OPERATOR_XOR: - case CAIRO_OPERATOR_ADD: - case CAIRO_OPERATOR_SATURATE: - return TRUE; - case CAIRO_OPERATOR_OUT: - case CAIRO_OPERATOR_IN: - case CAIRO_OPERATOR_DEST_IN: - case CAIRO_OPERATOR_DEST_ATOP: - return FALSE; - } - - ASSERT_NOT_REACHED; - return FALSE; -} - -/** - * _cairo_operator_bounded_by_source: - * @op: a #cairo_operator_t - * - * A bounded operator is one where source pixels of zero - * (in all four components, r, g, b and a) effect no change - * in the resulting destination image. - * - * Unbounded operators often require special handling; if you, for - * example, copy a surface with the SOURCE operator, the effect - * extends past the bounding box of the source surface. - * - * Return value: %TRUE if the operator is bounded by the source operand - **/ -cairo_bool_t -_cairo_operator_bounded_by_source (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_OVER: - case CAIRO_OPERATOR_ATOP: - case CAIRO_OPERATOR_DEST: - case CAIRO_OPERATOR_DEST_OVER: - case CAIRO_OPERATOR_DEST_OUT: - case CAIRO_OPERATOR_XOR: - case CAIRO_OPERATOR_ADD: - case CAIRO_OPERATOR_SATURATE: - return TRUE; - case CAIRO_OPERATOR_CLEAR: - case CAIRO_OPERATOR_SOURCE: - case CAIRO_OPERATOR_OUT: - case CAIRO_OPERATOR_IN: - case CAIRO_OPERATOR_DEST_IN: - case CAIRO_OPERATOR_DEST_ATOP: - return FALSE; - } - - ASSERT_NOT_REACHED; - return FALSE; -} - - -void -_cairo_restrict_value (double *value, double min, double max) -{ - if (*value < min) - *value = min; - else if (*value > max) - *value = max; -} - -/* This function is identical to the C99 function lround(), except that it - * performs arithmetic rounding (instead of away-from-zero rounding) and - * has a valid input range of (INT_MIN, INT_MAX] instead of - * [INT_MIN, INT_MAX]. It is much faster on both x86 and FPU-less systems - * than other commonly used methods for rounding (lround, round, rint, lrint - * or float (d + 0.5)). - * - * The reason why this function is much faster on x86 than other - * methods is due to the fact that it avoids the fldcw instruction. - * This instruction incurs a large performance penalty on modern Intel - * processors due to how it prevents efficient instruction pipelining. - * - * The reason why this function is much faster on FPU-less systems is for - * an entirely different reason. All common rounding methods involve multiple - * floating-point operations. Each one of these operations has to be - * emulated in software, which adds up to be a large performance penalty. - * This function doesn't perform any floating-point calculations, and thus - * avoids this penalty. - */ -int -_cairo_lround (double d) -{ - uint32_t top, shift_amount, output; - union { - double d; - uint64_t ui64; - uint32_t ui32[2]; - } u; - - u.d = d; - - /* If the integer word order doesn't match the float word order, we swap - * the words of the input double. This is needed because we will be - * treating the whole double as a 64-bit unsigned integer. Notice that we - * use WORDS_BIGENDIAN to detect the integer word order, which isn't - * exactly correct because WORDS_BIGENDIAN refers to byte order, not word - * order. Thus, we are making the assumption that the byte order is the - * same as the integer word order which, on the modern machines that we - * care about, is OK. - */ -#if ( defined(FLOAT_WORDS_BIGENDIAN) && !defined(WORDS_BIGENDIAN)) || \ - (!defined(FLOAT_WORDS_BIGENDIAN) && defined(WORDS_BIGENDIAN)) - { - uint32_t temp = u.ui32[0]; - u.ui32[0] = u.ui32[1]; - u.ui32[1] = temp; - } -#endif - -#ifdef WORDS_BIGENDIAN - #define MSW (0) /* Most Significant Word */ - #define LSW (1) /* Least Significant Word */ -#else - #define MSW (1) - #define LSW (0) -#endif - - /* By shifting the most significant word of the input double to the - * right 20 places, we get the very "top" of the double where the exponent - * and sign bit lie. - */ - top = u.ui32[MSW] >> 20; - - /* Here, we calculate how much we have to shift the mantissa to normalize - * it to an integer value. We extract the exponent "top" by masking out the - * sign bit, then we calculate the shift amount by subtracting the exponent - * from the bias. Notice that the correct bias for 64-bit doubles is - * actually 1075, but we use 1053 instead for two reasons: - * - * 1) To perform rounding later on, we will first need the target - * value in a 31.1 fixed-point format. Thus, the bias needs to be one - * less: (1075 - 1: 1074). - * - * 2) To avoid shifting the mantissa as a full 64-bit integer (which is - * costly on certain architectures), we break the shift into two parts. - * First, the upper and lower parts of the mantissa are shifted - * individually by a constant amount that all valid inputs will require - * at the very least. This amount is chosen to be 21, because this will - * allow the two parts of the mantissa to later be combined into a - * single 32-bit representation, on which the remainder of the shift - * will be performed. Thus, we decrease the bias by an additional 21: - * (1074 - 21: 1053). - */ - shift_amount = 1053 - (top & 0x7FF); - - /* We are done with the exponent portion in "top", so here we shift it off - * the end. - */ - top >>= 11; - - /* Before we perform any operations on the mantissa, we need to OR in - * the implicit 1 at the top (see the IEEE-754 spec). We needn't mask - * off the sign bit nor the exponent bits because these higher bits won't - * make a bit of difference in the rest of our calculations. - */ - u.ui32[MSW] |= 0x100000; - - /* If the input double is negative, we have to decrease the mantissa - * by a hair. This is an important part of performing arithmetic rounding, - * as negative numbers must round towards positive infinity in the - * halfwase case of -x.5. Since "top" contains only the sign bit at this - * point, we can just decrease the mantissa by the value of "top". - */ - u.ui64 -= top; - - /* By decrementing "top", we create a bitmask with a value of either - * 0x0 (if the input was negative) or 0xFFFFFFFF (if the input was positive - * and thus the unsigned subtraction underflowed) that we'll use later. - */ - top--; - - /* Here, we shift the mantissa by the constant value as described above. - * We can emulate a 64-bit shift right by 21 through shifting the top 32 - * bits left 11 places and ORing in the bottom 32 bits shifted 21 places - * to the right. Both parts of the mantissa are now packed into a single - * 32-bit integer. Although we severely truncate the lower part in the - * process, we still have enough significant bits to perform the conversion - * without error (for all valid inputs). - */ - output = (u.ui32[MSW] << 11) | (u.ui32[LSW] >> 21); - - /* Next, we perform the shift that converts the X.Y fixed-point number - * currently found in "output" to the desired 31.1 fixed-point format - * needed for the following rounding step. It is important to consider - * all possible values for "shift_amount" at this point: - * - * - {shift_amount < 0} Since shift_amount is an unsigned integer, it - * really can't have a value less than zero. But, if the shift_amount - * calculation above caused underflow (which would happen with - * input > INT_MAX or input <= INT_MIN) then shift_amount will now be - * a very large number, and so this shift will result in complete - * garbage. But that's OK, as the input was out of our range, so our - * output is undefined. - * - * - {shift_amount > 31} If the magnitude of the input was very small - * (i.e. |input| << 1.0), shift_amount will have a value greater than - * 31. Thus, this shift will also result in garbage. After performing - * the shift, we will zero-out "output" if this is the case. - * - * - {0 <= shift_amount < 32} In this case, the shift will properly convert - * the mantissa into a 31.1 fixed-point number. - */ - output >>= shift_amount; - - /* This is where we perform rounding with the 31.1 fixed-point number. - * Since what we're after is arithmetic rounding, we simply add the single - * fractional bit into the integer part of "output", and just keep the - * integer part. - */ - output = (output >> 1) + (output & 1); - - /* Here, we zero-out the result if the magnitude if the input was very small - * (as explained in the section above). Notice that all input out of the - * valid range is also caught by this condition, which means we produce 0 - * for all invalid input, which is a nice side effect. - * - * The most straightforward way to do this would be: - * - * if (shift_amount > 31) - * output = 0; - * - * But we can use a little trick to avoid the potential branch. The - * expression (shift_amount > 31) will be either 1 or 0, which when - * decremented will be either 0x0 or 0xFFFFFFFF (unsigned underflow), - * which can be used to conditionally mask away all the bits in "output" - * (in the 0x0 case), effectively zeroing it out. Certain, compilers would - * have done this for us automatically. - */ - output &= ((shift_amount > 31) - 1); - - /* If the input double was a negative number, then we have to negate our - * output. The most straightforward way to do this would be: - * - * if (!top) - * output = -output; - * - * as "top" at this point is either 0x0 (if the input was negative) or - * 0xFFFFFFFF (if the input was positive). But, we can use a trick to - * avoid the branch. Observe that the following snippet of code has the - * same effect as the reference snippet above: - * - * if (!top) - * output = 0 - output; - * else - * output = output - 0; - * - * Armed with the bitmask found in "top", we can condense the two statements - * into the following: - * - * output = (output & top) - (output & ~top); - * - * where, in the case that the input double was negative, "top" will be 0, - * and the statement will be equivalent to: - * - * output = (0) - (output); - * - * and if the input double was positive, "top" will be 0xFFFFFFFF, and the - * statement will be equivalent to: - * - * output = (output) - (0); - * - * Which, as pointed out earlier, is equivalent to the original reference - * snippet. - */ - output = (output & top) - (output & ~top); - - return output; -#undef MSW -#undef LSW -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mathias Hasselmann - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * Contributor(s): - * Mathias Hasselmann - */ - -#include "cairoint.h" - -#define CAIRO_MUTEX_DECLARE(mutex) cairo_mutex_t mutex = CAIRO_MUTEX_NIL_INITIALIZER -#include "cairo-mutex-list-private.h" -#undef CAIRO_MUTEX_DECLARE - -#if _CAIRO_MUTEX_USE_STATIC_INITIALIZER || _CAIRO_MUTEX_USE_STATIC_FINALIZER - -# if _CAIRO_MUTEX_USE_STATIC_INITIALIZER -# define _CAIRO_MUTEX_INITIALIZED_DEFAULT_VALUE FALSE -# else -# define _CAIRO_MUTEX_INITIALIZED_DEFAULT_VALUE TRUE -# endif - -cairo_bool_t _cairo_mutex_initialized = _CAIRO_MUTEX_INITIALIZED_DEFAULT_VALUE; - -# undef _CAIRO_MUTEX_INITIALIZED_DEFAULT_VALUE - -#endif - -#if _CAIRO_MUTEX_USE_STATIC_INITIALIZER -void _cairo_mutex_initialize (void) -{ - if (_cairo_mutex_initialized) - return; - - _cairo_mutex_initialized = TRUE; - -#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_INIT (mutex) -#include "cairo-mutex-list-private.h" -#undef CAIRO_MUTEX_DECLARE -} -#endif - -#if _CAIRO_MUTEX_USE_STATIC_FINALIZER -void _cairo_mutex_finalize (void) -{ - if (!_cairo_mutex_initialized) - return; - - _cairo_mutex_initialized = FALSE; - -#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_FINI (mutex) -#include "cairo-mutex-list-private.h" -#undef CAIRO_MUTEX_DECLARE -} -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex-list-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex-list-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex-list-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex-list-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mathias Hasselmann - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * Contributor(s): - * Mathias Hasselmann - */ - - -CAIRO_MUTEX_DECLARE (_cairo_pattern_solid_pattern_cache_lock); -CAIRO_MUTEX_DECLARE (_cairo_pattern_solid_surface_cache_lock); - -CAIRO_MUTEX_DECLARE (_cairo_font_face_mutex); -CAIRO_MUTEX_DECLARE (_cairo_scaled_font_map_mutex); -CAIRO_MUTEX_DECLARE (_cairo_scaled_font_error_mutex); - -#if CAIRO_HAS_FT_FONT -CAIRO_MUTEX_DECLARE (_cairo_ft_unscaled_font_map_mutex); -#endif - -#if CAIRO_HAS_XLIB_SURFACE -CAIRO_MUTEX_DECLARE (_cairo_xlib_display_mutex); -#endif - -#if !defined (CAIRO_HAS_ATOMIC_OPS) || defined (CAIRO_ATOMIC_OP_NEEDS_MEMORY_BARRIER) -CAIRO_MUTEX_DECLARE (_cairo_atomic_mutex); -#endif - -/* Undefine, to err on unintended inclusion */ -#undef CAIRO_MUTEX_DECLARE diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,176 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005,2007 Red Hat, Inc. - * Copyright © 2007 Mathias Hasselmann - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Mathias Hasselmann - * Behdad Esfahbod - */ - -#ifndef CAIRO_MUTEX_PRIVATE_H -#define CAIRO_MUTEX_PRIVATE_H - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#include "cairo-compiler-private.h" -#include "cairo-mutex-type-private.h" - -/* Only the following three are mandatory at this point */ -#ifndef CAIRO_MUTEX_LOCK -# error "CAIRO_MUTEX_LOCK not defined. Check cairo-mutex-type-private.h." -#endif -#ifndef CAIRO_MUTEX_UNLOCK -# error "CAIRO_MUTEX_UNLOCK not defined. Check cairo-mutex-type-private.h." -#endif -#ifndef CAIRO_MUTEX_NIL_INITIALIZER -# error "CAIRO_MUTEX_NIL_INITIALIZER not defined. Check cairo-mutex-type-private.h." -#endif - -CAIRO_BEGIN_DECLS - - -#define CAIRO_MUTEX_DECLARE(mutex) extern cairo_mutex_t mutex -#include "cairo-mutex-list-private.h" -#undef CAIRO_MUTEX_DECLARE - - -/* make sure implementations don't fool us: we decide these ourself */ -#undef _CAIRO_MUTEX_USE_STATIC_INITIALIZER -#undef _CAIRO_MUTEX_USE_STATIC_FINALIZER - - -#ifdef CAIRO_MUTEX_INIT - -/* If %CAIRO_MUTEX_INIT is defined, we may need to initialize all - * static mutex'es. */ -# ifndef CAIRO_MUTEX_INITIALIZE -# define CAIRO_MUTEX_INITIALIZE() do { \ - if (!_cairo_mutex_initialized) \ - _cairo_mutex_initialize (); \ - } while(0) - - cairo_private void _cairo_mutex_initialize (void); - - /* and make sure we implement the above */ -# define _CAIRO_MUTEX_USE_STATIC_INITIALIZER 1 -# endif /* CAIRO_MUTEX_INITIALIZE */ - -#else /* no CAIRO_MUTEX_INIT */ - -/* Otherwise we probably don't need to initialize static mutex'es, */ -# ifndef CAIRO_MUTEX_INITIALIZE -# define CAIRO_MUTEX_INITIALIZE() CAIRO_MUTEX_NOOP -# endif /* CAIRO_MUTEX_INITIALIZE */ - -/* and dynamic ones can be initialized using the static initializer. */ -# define CAIRO_MUTEX_INIT(mutex) do { \ - cairo_mutex_t _tmp_mutex = CAIRO_MUTEX_NIL_INITIALIZER; \ - memcpy (&(mutex), &_tmp_mutex, sizeof (_tmp_mutex)); \ - } while (0) - -#endif /* CAIRO_MUTEX_INIT */ - - -#ifdef CAIRO_MUTEX_FINI - -/* If %CAIRO_MUTEX_FINI is defined, we may need to finalize all - * static mutex'es. */ -# ifndef CAIRO_MUTEX_FINALIZE -# define CAIRO_MUTEX_FINALIZE() do { \ - if (_cairo_mutex_initialized) \ - _cairo_mutex_finalize (); \ - } while(0) - - cairo_private void _cairo_mutex_finalize (void); - - /* and make sure we implement the above */ -# define _CAIRO_MUTEX_USE_STATIC_FINALIZER 1 -# endif /* CAIRO_MUTEX_FINALIZE */ - -#else /* no CAIRO_MUTEX_FINI */ - -/* Otherwise we probably don't need to finalize static mutex'es, */ -# ifndef CAIRO_MUTEX_FINALIZE -# define CAIRO_MUTEX_FINALIZE() CAIRO_MUTEX_NOOP -# endif /* CAIRO_MUTEX_FINALIZE */ - -/* neither do the dynamic ones. */ -# define CAIRO_MUTEX_FINI(mutex) CAIRO_MUTEX_NOOP1(mutex) - -#endif /* CAIRO_MUTEX_FINI */ - - -#ifndef _CAIRO_MUTEX_USE_STATIC_INITIALIZER -#define _CAIRO_MUTEX_USE_STATIC_INITIALIZER 0 -#endif -#ifndef _CAIRO_MUTEX_USE_STATIC_FINALIZER -#define _CAIRO_MUTEX_USE_STATIC_FINALIZER 0 -#endif - -/* only if using static initializer and/or finalizer define the boolean */ -#if _CAIRO_MUTEX_USE_STATIC_INITIALIZER || _CAIRO_MUTEX_USE_STATIC_FINALIZER - cairo_private extern cairo_bool_t _cairo_mutex_initialized; -#endif - - -CAIRO_END_DECLS - -/* Make sure everything we want is defined */ -#ifndef CAIRO_MUTEX_INITIALIZE -# error "CAIRO_MUTEX_INITIALIZE not defined" -#endif -#ifndef CAIRO_MUTEX_FINALIZE -# error "CAIRO_MUTEX_FINALIZE not defined" -#endif -#ifndef CAIRO_MUTEX_LOCK -# error "CAIRO_MUTEX_LOCK not defined" -#endif -#ifndef CAIRO_MUTEX_UNLOCK -# error "CAIRO_MUTEX_UNLOCK not defined" -#endif -#ifndef CAIRO_MUTEX_INIT -# error "CAIRO_MUTEX_INIT not defined" -#endif -#ifndef CAIRO_MUTEX_FINI -# error "CAIRO_MUTEX_FINI not defined" -#endif -#ifndef CAIRO_MUTEX_NIL_INITIALIZER -# error "CAIRO_MUTEX_NIL_INITIALIZER not defined" -#endif - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex-type-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex-type-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-mutex-type-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-mutex-type-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,210 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005,2007 Red Hat, Inc. - * Copyright © 2007 Mathias Hasselmann - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Mathias Hasselmann - * Behdad Esfahbod - */ - -#ifndef CAIRO_MUTEX_TYPE_PRIVATE_H -#define CAIRO_MUTEX_TYPE_PRIVATE_H - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -CAIRO_BEGIN_DECLS - - -/* A fully qualified no-operation statement */ -#define CAIRO_MUTEX_NOOP do {/*no-op*/} while (0) -/* And one that evaluates it's argument once */ -#define CAIRO_MUTEX_NOOP1(expr) do { if (expr) ; } while (0) - - -/* Cairo mutex implementation: - * - * Any new mutex implementation needs to do the following: - * - * - Condition on the right header or feature. Headers are - * preferred as eg. you still can use win32 mutex implementation - * on a win32 system even if you do not compile the win32 - * surface/backend. - * - * - typedef #cairo_mutex_t to the proper mutex type on your target - * system. Note that you may or may not need to use a pointer, - * depending on what kinds of initialization your mutex - * implementation supports. No trailing semicolon needed. - * You should be able to compile the following snippet (don't try - * running it): - * - * cairo_mutex_t _cairo_some_mutex; - * - * - #define CAIRO_MUTEX_LOCK(mutex) and CAIRO_MUTEX_UNLOCK(mutex) to - * proper statement to lock/unlock the mutex object passed in. - * You can (and should) assume that the mutex is already - * initialized, and is-not-already-locked/is-locked, - * respectively. Use the "do { ... } while (0)" idiom if necessary. - * No trailing semicolons are needed (in any macro you define here). - * You should be able to compile the following snippet: - * - * cairo_mutex_t _cairo_some_mutex; - * - * if (1) - * %CAIRO_MUTEX_LOCK (_cairo_some_mutex); - * else - * %CAIRO_MUTEX_UNLOCK (_cairo_some_mutex); - * - * - #define %CAIRO_MUTEX_NIL_INITIALIZER to something that can - * initialize the #cairo_mutex_t type you defined. Most of the - * time one of 0, %NULL, or {} works. At this point - * you should be able to compile the following snippet: - * - * cairo_mutex_t _cairo_some_mutex = CAIRO_MUTEX_NIL_INITIALIZER; - * - * if (1) - * %CAIRO_MUTEX_LOCK (_cairo_some_mutex); - * else - * %CAIRO_MUTEX_UNLOCK (_cairo_some_mutex); - * - * - If the above code is not enough to initialize a mutex on - * your platform, #define CAIRO_MUTEX_INIT(mutex) to statement - * to initialize the mutex (allocate resources, etc). Such that - * you should be able to compile AND RUN the following snippet: - * - * cairo_mutex_t _cairo_some_mutex = CAIRO_MUTEX_NIL_INITIALIZER; - * - * %CAIRO_MUTEX_INIT (_cairo_some_mutex); - * - * if (1) - * %CAIRO_MUTEX_LOCK (_cairo_some_mutex); - * else - * %CAIRO_MUTEX_UNLOCK (_cairo_some_mutex); - * - * - If you define CAIRO_MUTEX_INIT(mutex), cairo will use it to - * initialize all static mutex'es. If for any reason that should - * not happen (eg. %CAIRO_MUTEX_INIT is just a faster way than - * what cairo does using %CAIRO_MUTEX_NIL_INITIALIZER), then - * #define CAIRO_MUTEX_INITIALIZE() CAIRO_MUTEX_NOOP - * - * - If your system supports freeing a mutex object (deallocating - * resources, etc), then #define CAIRO_MUTEX_FINI(mutex) to do - * that. - * - * - If you define CAIRO_MUTEX_FINI(mutex), cairo will use it to - * define a finalizer function to finalize all static mutex'es. - * However, it's up to you to call CAIRO_MUTEX_FINALIZE() at - * proper places, eg. when the system is unloading the cairo library. - * So, if for any reason finalizing static mutex'es is not needed - * (eg. you never call %CAIRO_MUTEX_FINALIZE), then - * #define CAIRO_MUTEX_FINALIZE() CAIRO_MUTEX_NOOP - * - * - That is all. If for any reason you think the above API is - * not enough to implement #cairo_mutex_t on your system, please - * stop and write to the cairo mailing list about it. DO NOT - * poke around cairo-mutex-private.h for possible solutions. - */ - -#if CAIRO_NO_MUTEX - -/* No mutexes */ - - typedef int cairo_mutex_t; - -# define CAIRO_MUTEX_INITIALIZE() CAIRO_MUTEX_NOOP -# define CAIRO_MUTEX_LOCK(mutex) CAIRO_MUTEX_NOOP1(mutex) -# define CAIRO_MUTEX_UNLOCK(mutex) CAIRO_MUTEX_NOOP1(mutex) -# define CAIRO_MUTEX_NIL_INITIALIZER 0 - -#elif HAVE_PTHREAD_H /*******************************************************/ - -# include - - typedef pthread_mutex_t cairo_mutex_t; - -# define CAIRO_MUTEX_LOCK(mutex) pthread_mutex_lock (&(mutex)) -# define CAIRO_MUTEX_UNLOCK(mutex) pthread_mutex_unlock (&(mutex)) -# define CAIRO_MUTEX_FINI(mutex) pthread_mutex_destroy (&(mutex)) -# define CAIRO_MUTEX_FINALIZE() CAIRO_MUTEX_NOOP -# define CAIRO_MUTEX_NIL_INITIALIZER PTHREAD_MUTEX_INITIALIZER - -#elif HAVE_WINDOWS_H /*******************************************************/ - -# include - - typedef CRITICAL_SECTION cairo_mutex_t; - -# define CAIRO_MUTEX_LOCK(mutex) EnterCriticalSection (&(mutex)) -# define CAIRO_MUTEX_UNLOCK(mutex) LeaveCriticalSection (&(mutex)) -# define CAIRO_MUTEX_INIT(mutex) InitializeCriticalSection (&(mutex)) -# define CAIRO_MUTEX_FINI(mutex) DeleteCriticalSection (&(mutex)) -# define CAIRO_MUTEX_NIL_INITIALIZER { NULL, 0, 0, NULL, NULL, 0 } - -#elif defined __OS2__ /******************************************************/ - -# define INCL_BASE -# define INCL_PM -# include - - typedef HMTX cairo_mutex_t; - -# define CAIRO_MUTEX_LOCK(mutex) DosRequestMutexSem(mutex, SEM_INDEFINITE_WAIT) -# define CAIRO_MUTEX_UNLOCK(mutex) DosReleaseMutexSem(mutex) -# define CAIRO_MUTEX_INIT(mutex) DosCreateMutexSem (NULL, &(mutex), 0L, FALSE) -# define CAIRO_MUTEX_FINI(mutex) DosCloseMutexSem (mutex) -# define CAIRO_MUTEX_NIL_INITIALIZER 0 - -#elif CAIRO_HAS_BEOS_SURFACE /***********************************************/ - - typedef BLocker* cairo_mutex_t; - -# define CAIRO_MUTEX_LOCK(mutex) (mutex)->Lock() -# define CAIRO_MUTEX_UNLOCK(mutex) (mutex)->Unlock() -# define CAIRO_MUTEX_INIT(mutex) (mutex) = new BLocker() -# define CAIRO_MUTEX_FINI(mutex) delete (mutex) -# define CAIRO_MUTEX_NIL_INITIALIZER NULL - -#else /**********************************************************************/ - -# error "XXX: No mutex implementation found. Cairo will not work with multiple threads. Define CAIRO_NO_MUTEX to 1 to acknowledge and accept this limitation and compile cairo without thread-safety support." - - -#endif - -CAIRO_END_DECLS - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-os2.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-os2.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-os2.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-os2.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* vim: set sw=4 sts=4 et cin: */ -/* cairo - a vector graphics library with display and print output - * - * Copyright (c) 2005-2006 netlabs.org - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is - * Doodle - * - * Contributor(s): - * Peter Weilbacher - */ - -#ifndef _CAIRO_OS2_H_ -#define _CAIRO_OS2_H_ - -#include - -CAIRO_BEGIN_DECLS - -/* The OS/2 Specific Cairo API */ - -cairo_public void -cairo_os2_init (void); - -cairo_public void -cairo_os2_fini (void); - -#if CAIRO_HAS_OS2_SURFACE - -cairo_public cairo_surface_t * -cairo_os2_surface_create (HPS hps_client_window, - int width, - int height); - -cairo_public void -cairo_os2_surface_set_hwnd (cairo_surface_t *surface, - HWND hwnd_client_window); - -cairo_public int -cairo_os2_surface_set_size (cairo_surface_t *surface, - int new_width, - int new_height, - int timeout); - -cairo_public void -cairo_os2_surface_refresh_window (cairo_surface_t *surface, - HPS hps_begin_paint, - PRECTL prcl_begin_paint_rect); - -cairo_public void -cairo_os2_surface_set_manual_window_refresh (cairo_surface_t *surface, - cairo_bool_t manual_refresh); - -cairo_public cairo_bool_t -cairo_os2_surface_get_manual_window_refresh (cairo_surface_t *surface); - -#else /* CAIRO_HAS_OS2_SURFACE */ -# error Cairo was not compiled with support for the OS/2 backend -#endif /* CAIRO_HAS_OS2_SURFACE */ - -CAIRO_END_DECLS - -#endif /* _CAIRO_OS2_H_ */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-os2-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-os2-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-os2-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-os2-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* vim: set sw=4 sts=4 et cin: */ -/* cairo - a vector graphics library with display and print output - * - * Copyright (c) 2005-2006 netlabs.org - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is - * Doodle - * - * Contributor(s): - * Peter Weilbacher - */ - -#ifndef CAIRO_OS2_PRIVATE_H -#define CAIRO_OS2_PRIVATE_H - -#define INCL_DOS -#define INCL_DOSSEMAPHORES -#define INCL_DOSERRORS -#define INCL_WIN -#define INCL_GPI -#ifdef __WATCOMC__ -# include -#else -# include -#endif - -#include -#include "cairoint.h" - -typedef struct _cairo_os2_surface -{ - cairo_surface_t base; - - /* Mutex semaphore to protect private fields from concurrent access */ - HMTX hmtx_use_private_fields; - /* Private fields: */ - HPS hps_client_window; - HWND hwnd_client_window; - BITMAPINFO2 bitmap_info; - unsigned char *pixels; - cairo_image_surface_t *image_surface; - int pixel_array_lend_count; - HEV hev_pixel_array_came_back; - - RECTL rcl_dirty_area; - cairo_bool_t dirty_area_present; - - /* General flags: */ - cairo_bool_t blit_as_changes; -} cairo_os2_surface_t; - -#endif /* CAIRO_OS2_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-os2-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-os2-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-os2-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-os2-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1341 +0,0 @@ -/* vim: set sw=4 sts=4 et cin: */ -/* cairo - a vector graphics library with display and print output - * - * Copyright (c) 2005-2006 netlabs.org - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is - * Doodle - * - * Contributor(s): - * Peter Weilbacher - */ - -#include "cairoint.h" - -#include "cairo-os2-private.h" - -#include - -#include -#ifdef BUILD_CAIRO_DLL -# define INCL_WIN -# define INCL_GPI -# define INCL_DOS -# define INCL_DOSERRORS -# include -# include "cairo-os2.h" -# ifndef __WATCOMC__ -# include -# endif -#endif - -/* - * Here comes the extra API for the OS/2 platform. Currently it consists - * of two extra functions, the cairo_os2_init () and the - * cairo_os2_fini (). Both of them are called automatically if - * Cairo is compiled to be a DLL file, but you have to call them before - * using the Cairo API if you link to Cairo statically! - * - * You'll also find the code in here which deals with DLL initialization - * and termination, if the code is built to be a DLL. - * (if BUILD_CAIRO_DLL is defined) - */ - -/* Initialization counter: */ -static int cairo_os2_initialization_count = 0; - -static void inline -DisableFPUException (void) -{ - unsigned short usCW; - - /* Some OS/2 PM API calls modify the FPU Control Word, - * but forget to restore it. - * - * This can result in XCPT_FLOAT_INVALID_OPCODE exceptions, - * so to be sure, we disable Invalid Opcode FPU exception - * before using FPU stuffs. - */ - usCW = _control87 (0, 0); - usCW = usCW | EM_INVALID | 0x80; - _control87 (usCW, MCW_EM | 0x80); -} - -/** - * cairo_os2_init: - * - * Initializes the Cairo library. This function is automatically called if - * Cairo was compiled to be a DLL (however it's not a problem if it's called - * multiple times). But if you link to Cairo statically, you have to call it - * once to set up Cairo's internal structures and mutexes. - * - * Since: 1.4 - **/ -cairo_public void -cairo_os2_init (void) -{ - /* This may initialize some stuffs, like create mutex semaphores etc.. */ - - cairo_os2_initialization_count++; - if (cairo_os2_initialization_count > 1) return; - - DisableFPUException (); - -#if CAIRO_HAS_FT_FONT - /* Initialize FontConfig */ - FcInit (); -#endif - - CAIRO_MUTEX_INITIALIZE (); -} - -/** - * cairo_os2_fini: - * - * Uninitializes the Cairo library. This function is automatically called if - * Cairo was compiled to be a DLL (however it's not a problem if it's called - * multiple times). But if you link to Cairo statically, you have to call it - * once to shut down Cairo, to let it free all the resources it has allocated. - * - * Since: 1.4 - **/ -cairo_public void -cairo_os2_fini (void) -{ - /* This has to uninitialize some stuffs, like destroy mutex semaphores etc.. */ - - if (cairo_os2_initialization_count <= 0) return; - cairo_os2_initialization_count--; - if (cairo_os2_initialization_count > 0) return; - - DisableFPUException (); - - /* Free allocated memories! */ - /* (Check cairo_debug_reset_static_data () for an example of this!) */ - _cairo_font_reset_static_data (); -#if CAIRO_HAS_FT_FONT - _cairo_ft_font_reset_static_data (); -#endif - - CAIRO_MUTEX_FINALIZE (); - -#if CAIRO_HAS_FT_FONT - /* Uninitialize FontConfig */ - FcFini (); -#endif - -#ifdef __WATCOMC__ - /* It can happen that the libraries we use have memory leaks, - * so there are still memory chunks allocated at this point. - * In these cases, Watcom might still have a bigger memory chunk, - * called "the heap" allocated from the OS. - * As we want to minimize the memory we lose from the point of - * view of the OS, we call this function to shrink that heap - * as much as possible. - */ - _heapshrink (); -#else - /* GCC has a heapmin function that approximately corresponds to - * what the Watcom function does - */ - _heapmin (); -#endif -} - -/* - * This function calls the allocation function depending on which - * method was compiled into the library: it can be native allocation - * (DosAllocMem/DosFreeMem) or C-Library based allocation (malloc/free). - * Actually, for pixel buffers that we use this function for, cairo - * uses _cairo_malloc_abc, so we use that here, too. And use the - * change to check the size argument - */ -void *_buffer_alloc (size_t a, size_t b, const unsigned int size) -{ - /* check length like in the _cairo_malloc_abc macro, but we can leave - * away the unsigned casts as our arguments are unsigned already - */ - size_t nbytes = b && - a >= INT32_MAX / b ? 0 : size && - a*b >= INT32_MAX / size ? 0 : a * b * size; - void *buffer = NULL; -#ifdef OS2_USE_PLATFORM_ALLOC - APIRET rc = NO_ERROR; - - rc = DosAllocMem ((PPVOID)&buffer, - nbytes, -#ifdef OS2_HIGH_MEMORY /* only if compiled with high-memory support, */ - OBJ_ANY | /* we can allocate anywhere! */ -#endif - PAG_READ | PAG_WRITE | PAG_COMMIT); - if (rc != NO_ERROR) { - /* should there for some reason be another error, let's return - * a null surface and free the buffer again, because that's - * how a malloc failure would look like - */ - if (rc != ERROR_NOT_ENOUGH_MEMORY && buffer) { - DosFreeMem (buffer); - } - return NULL; - } -#else - buffer = malloc (nbytes); -#endif - - /* This does not seem to be needed, malloc'd space is usually - * already zero'd out! - */ - /* - * memset (buffer, 0x00, nbytes); - */ - - return buffer; -} - -/* - * This function selects the free function depending on which - * allocation method was compiled into the library - */ -void _buffer_free (void *buffer) -{ -#ifdef OS2_USE_PLATFORM_ALLOC - DosFreeMem (buffer); -#else - free (buffer); -#endif -} - -#ifdef BUILD_CAIRO_DLL -/* The main DLL entry for DLL initialization and uninitialization */ -/* Only include this code if we're about to build a DLL. */ - -#ifdef __WATCOMC__ -unsigned _System -LibMain (unsigned hmod, - unsigned termination) -#else -unsigned long _System -_DLL_InitTerm (unsigned long hModule, - unsigned long termination) -#endif -{ - if (termination) { - /* Unloading the DLL */ - cairo_os2_fini (); - -#ifndef __WATCOMC__ - /* Uninitialize RTL of GCC */ - __ctordtorTerm (); - _CRT_term (); -#endif - return 1; - } else { - /* Loading the DLL */ -#ifndef __WATCOMC__ - /* Initialize RTL of GCC */ - if (_CRT_init () != 0) - return 0; - __ctordtorInit (); -#endif - - cairo_os2_init (); - return 1; - } -} - -#endif /* BUILD_CAIRO_DLL */ - -/* - * The following part of the source file contains the code which might - * be called the "core" of the OS/2 backend support. This contains the - * OS/2 surface support functions and structures. - */ - -/* Forward declaration */ -static const cairo_surface_backend_t cairo_os2_surface_backend; - -/* Unpublished API: - * GpiEnableYInversion = PMGPI.723 - * GpiQueryYInversion = PMGPI.726 - * BOOL APIENTRY GpiEnableYInversion (HPS hps, LONG lHeight); - * LONG APIENTRY GpiQueryYInversion (HPS hps); - */ -BOOL APIENTRY GpiEnableYInversion (HPS hps, LONG lHeight); -LONG APIENTRY GpiQueryYInversion (HPS hps); - -#ifdef __WATCOMC__ -/* Function declaration for GpiDrawBits () (missing from OpenWatcom headers) */ -LONG APIENTRY GpiDrawBits (HPS hps, - PVOID pBits, - PBITMAPINFO2 pbmiInfoTable, - LONG lCount, - PPOINTL aptlPoints, - LONG lRop, - ULONG flOptions); -#endif - -static void -_cairo_os2_surface_blit_pixels (cairo_os2_surface_t *surface, - HPS hps_begin_paint, - PRECTL prcl_begin_paint_rect) -{ - POINTL aptlPoints[4]; - LONG lOldYInversion, rc = GPI_OK; - - /* Enable Y Inversion for the HPS, so the - * GpiDrawBits will work with upside-top image, not with upside-down image! - */ - lOldYInversion = GpiQueryYInversion (hps_begin_paint); - GpiEnableYInversion (hps_begin_paint, surface->bitmap_info.cy-1); - - /* Target coordinates (Noninclusive) */ - aptlPoints[0].x = prcl_begin_paint_rect->xLeft; - aptlPoints[0].y = prcl_begin_paint_rect->yBottom; - - aptlPoints[1].x = prcl_begin_paint_rect->xRight-1; - aptlPoints[1].y = prcl_begin_paint_rect->yTop-1; - - /* Source coordinates (Inclusive) */ - aptlPoints[2].x = prcl_begin_paint_rect->xLeft; - aptlPoints[2].y = prcl_begin_paint_rect->yBottom; - - aptlPoints[3].x = prcl_begin_paint_rect->xRight; - aptlPoints[3].y = (prcl_begin_paint_rect->yTop); - - /* Some extra checking for limits - * (Dunno if really needed, but had some crashes sometimes without it, - * while developing the code...) - */ - { - int i; - for (i = 0; i < 4; i++) { - if (aptlPoints[i].x < 0) - aptlPoints[i].x = 0; - if (aptlPoints[i].y < 0) - aptlPoints[i].y = 0; - if (aptlPoints[i].x > (LONG) surface->bitmap_info.cx) - aptlPoints[i].x = (LONG) surface->bitmap_info.cx; - if (aptlPoints[i].y > (LONG) surface->bitmap_info.cy) - aptlPoints[i].y = (LONG) surface->bitmap_info.cy; - } - } - - /* Debug code to draw rectangle limits */ -#if 0 - { - int x, y; - unsigned char *pixels; - - pixels = surface->pixels; - for (x = 0; x < surface->bitmap_info.cx; x++) { - for (y = 0; y < surface->bitmap_info.cy; y++) { - if ((x == 0) || - (y == 0) || - (x == y) || - (x >= surface->bitmap_info.cx-1) || - (y >= surface->bitmap_info.cy-1)) - { - pixels[y*surface->bitmap_info.cx*4+x*4] = 255; - } - } - } - } -#endif - rc = GpiDrawBits (hps_begin_paint, - surface->pixels, - &(surface->bitmap_info), - 4, - aptlPoints, - ROP_SRCCOPY, - BBO_IGNORE); - - if (rc != GPI_OK) { - /* if GpiDrawBits () failed then this is most likely because the - * display driver could not handle a 32bit bitmap. So we need to - * - create a buffer that only contains 3 bytes per pixel - * - change the bitmap info header to contain 24bit - * - pass the new buffer to GpiDrawBits () again - * - clean up the new buffer - */ - BITMAPINFOHEADER2 bmpheader; - unsigned char *pchPixBuf, *pchPixSource; - void *pBufStart; - ULONG ulPixels; - - /* allocate temporary pixel buffer */ - pchPixBuf = (unsigned char *) _buffer_alloc (surface->bitmap_info.cy, - surface->bitmap_info.cx, - 3); - pchPixSource = surface->pixels; /* start at beginning of pixel buffer */ - pBufStart = pchPixBuf; /* remember beginning of the new pixel buffer */ - - /* copy the first three bytes for each pixel but skip over the fourth */ - for (ulPixels = 0; ulPixels < surface->bitmap_info.cx * surface->bitmap_info.cy; ulPixels++) - { - /* copy BGR from source buffer */ - *pchPixBuf++ = *pchPixSource++; - *pchPixBuf++ = *pchPixSource++; - *pchPixBuf++ = *pchPixSource++; - pchPixSource++; /* jump over alpha channel in source buffer */ - } - - /* jump back to start of the buffer for display and cleanup */ - pchPixBuf = pBufStart; - - /* set up the bitmap header, but this time with 24bit depth only */ - memset (&bmpheader, 0, sizeof (bmpheader)); - bmpheader.cbFix = sizeof (BITMAPINFOHEADER2); - bmpheader.cx = surface->bitmap_info.cx; - bmpheader.cy = surface->bitmap_info.cy; - bmpheader.cPlanes = surface->bitmap_info.cPlanes; - bmpheader.cBitCount = 24; - rc = GpiDrawBits (hps_begin_paint, - pchPixBuf, - (PBITMAPINFO2)&bmpheader, - 4, - aptlPoints, - ROP_SRCCOPY, - BBO_IGNORE); - - _buffer_free (pchPixBuf); - } - - /* Restore Y inversion */ - GpiEnableYInversion (hps_begin_paint, lOldYInversion); -} - -static void -_cairo_os2_surface_get_pixels_from_screen (cairo_os2_surface_t *surface, - HPS hps_begin_paint, - PRECTL prcl_begin_paint_rect) -{ - HPS hps; - HDC hdc; - HAB hab; - SIZEL sizlTemp; - HBITMAP hbmpTemp; - BITMAPINFO2 bmi2Temp; - POINTL aptlPoints[4]; - int y; - unsigned char *pchTemp; - - /* To copy pixels from screen to our buffer, we do the following steps: - * - * - Blit pixels from screen to a HBITMAP: - * -- Create Memory Device Context - * -- Create a PS into it - * -- Create a HBITMAP - * -- Select HBITMAP into memory PS - * -- Blit dirty pixels from screen to HBITMAP - * - Copy HBITMAP lines (pixels) into our buffer - * - Free resources - * - * These steps will require an Anchor Block (HAB). However, - * WinQUeryAnchorBlock () documentation says that HAB is not - * used in current OS/2 implementations, OS/2 deduces all information - * it needs from the TID. Anyway, we'd be in trouble if we'd have to - * get a HAB where we only know a HPS... - * So, we'll simply use a fake HAB. - */ - - hab = (HAB) 1; /* OS/2 doesn't really use HAB... */ - - /* Create a memory device context */ - hdc = DevOpenDC (hab, OD_MEMORY,"*",0L, NULL, NULLHANDLE); - if (!hdc) { - return; - } - - /* Create a memory PS */ - sizlTemp.cx = prcl_begin_paint_rect->xRight - prcl_begin_paint_rect->xLeft; - sizlTemp.cy = prcl_begin_paint_rect->yTop - prcl_begin_paint_rect->yBottom; - hps = GpiCreatePS (hab, - hdc, - &sizlTemp, - PU_PELS | GPIT_NORMAL | GPIA_ASSOC); - if (!hps) { - DevCloseDC (hdc); - return; - } - - /* Create an uninitialized bitmap. */ - /* Prepare BITMAPINFO2 structure for our buffer */ - memset (&bmi2Temp, 0, sizeof (bmi2Temp)); - bmi2Temp.cbFix = sizeof (BITMAPINFOHEADER2); - bmi2Temp.cx = sizlTemp.cx; - bmi2Temp.cy = sizlTemp.cy; - bmi2Temp.cPlanes = 1; - bmi2Temp.cBitCount = 32; - - hbmpTemp = GpiCreateBitmap (hps, - (PBITMAPINFOHEADER2) &bmi2Temp, - 0, - NULL, - NULL); - - if (!hbmpTemp) { - GpiDestroyPS (hps); - DevCloseDC (hdc); - return; - } - - /* Select the bitmap into the memory device context. */ - GpiSetBitmap (hps, hbmpTemp); - - /* Target coordinates (Noninclusive) */ - aptlPoints[0].x = 0; - aptlPoints[0].y = 0; - - aptlPoints[1].x = sizlTemp.cx; - aptlPoints[1].y = sizlTemp.cy; - - /* Source coordinates (Inclusive) */ - aptlPoints[2].x = prcl_begin_paint_rect->xLeft; - aptlPoints[2].y = surface->bitmap_info.cy - prcl_begin_paint_rect->yBottom; - - aptlPoints[3].x = prcl_begin_paint_rect->xRight; - aptlPoints[3].y = surface->bitmap_info.cy - prcl_begin_paint_rect->yTop; - - /* Blit pixels from screen to bitmap */ - GpiBitBlt (hps, - hps_begin_paint, - 4, - aptlPoints, - ROP_SRCCOPY, - BBO_IGNORE); - - /* Now we have to extract the pixels from the bitmap. */ - pchTemp = - surface->pixels + - (prcl_begin_paint_rect->yBottom)*surface->bitmap_info.cx*4 + - prcl_begin_paint_rect->xLeft*4; - for (y = 0; y < sizlTemp.cy; y++) { - /* Get one line of pixels */ - GpiQueryBitmapBits (hps, - sizlTemp.cy - y - 1, /* lScanStart */ - 1, /* lScans */ - pchTemp, - &bmi2Temp); - - /* Go for next line */ - pchTemp += surface->bitmap_info.cx*4; - } - - /* Clean up resources */ - GpiSetBitmap (hps, (HBITMAP) NULL); - GpiDeleteBitmap (hbmpTemp); - GpiDestroyPS (hps); - DevCloseDC (hdc); -} - -static cairo_status_t -_cairo_os2_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) abstract_surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - } - - DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT); - - /* Increase lend counter */ - local_os2_surface->pixel_array_lend_count++; - - *image_out = local_os2_surface->image_surface; - *image_extra = NULL; - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_os2_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) abstract_surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return; - } - - /* Decrease Lend counter! */ - DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT); - - if (local_os2_surface->pixel_array_lend_count > 0) - local_os2_surface->pixel_array_lend_count--; - DosPostEventSem (local_os2_surface->hev_pixel_array_came_back); - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - return; -} - -static cairo_status_t -_cairo_os2_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) abstract_surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - } - - DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT); - - /* Increase lend counter */ - local_os2_surface->pixel_array_lend_count++; - - *image_out = local_os2_surface->image_surface; - *image_extra = NULL; - - image_rect->x = 0; - image_rect->y = 0; - image_rect->width = local_os2_surface->bitmap_info.cx; - image_rect->height = local_os2_surface->bitmap_info.cy; - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_os2_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - cairo_os2_surface_t *local_os2_surface; - RECTL rclToBlit; - - local_os2_surface = (cairo_os2_surface_t *) abstract_surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return; - } - - /* So, we got back the image, and if all goes well, then - * something has been changed inside the interest_rect. - * So, we blit it to the screen! - */ - - if (local_os2_surface->blit_as_changes) { - /* Get mutex, we'll work with the pixel array! */ - if (DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT)!=NO_ERROR) { - /* Could not get mutex! */ - return; - } - - if (local_os2_surface->hwnd_client_window) { - /* We know the HWND, so let's invalidate the window region, - * so the application will redraw itself, using the - * cairo_os2_surface_refresh_window () API from its own PM thread. - * - * This is the safe method, which should be preferred every time. - */ - rclToBlit.xLeft = interest_rect->x; - rclToBlit.xRight = interest_rect->x+interest_rect->width; /* Noninclusive */ - rclToBlit.yTop = local_os2_surface->bitmap_info.cy - (interest_rect->y); - rclToBlit.yBottom = local_os2_surface->bitmap_info.cy - (interest_rect->y+interest_rect->height); /* Noninclusive */ - - WinInvalidateRect (local_os2_surface->hwnd_client_window, - &rclToBlit, - FALSE); - } else { - /* We don't know the HWND, so try to blit the pixels from here! - * Please note that it can be problematic if this is not the PM thread! - * - * It can cause internal PM stuffs to be scewed up, for some reason. - * Please always tell the HWND to the surface using the - * cairo_os2_surface_set_hwnd () API, and call cairo_os2_surface_refresh_window () - * from your WM_PAINT, if it's possible! - */ - rclToBlit.xLeft = interest_rect->x; - rclToBlit.xRight = interest_rect->x+interest_rect->width; /* Noninclusive */ - rclToBlit.yBottom = interest_rect->y; - rclToBlit.yTop = interest_rect->y+interest_rect->height; /* Noninclusive */ - /* Now blit there the stuffs! */ - _cairo_os2_surface_blit_pixels (local_os2_surface, - local_os2_surface->hps_client_window, - &rclToBlit); - } - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - } - /* Also decrease Lend counter! */ - DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT); - - if (local_os2_surface->pixel_array_lend_count > 0) - local_os2_surface->pixel_array_lend_count--; - DosPostEventSem (local_os2_surface->hev_pixel_array_came_back); - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); -} - -static cairo_int_status_t -_cairo_os2_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) abstract_surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - } - - rectangle->x = 0; - rectangle->y = 0; - rectangle->width = local_os2_surface->bitmap_info.cx; - rectangle->height = local_os2_surface->bitmap_info.cy; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_os2_surface_create: - * @hps_client_window: the presentation handle to bind the surface to - * @width: the width of the surface - * @height: the height of the surface - * - * Create a Cairo surface which is bound to a given presentation space (HPS). - * The surface will be created to have the given size. - * By default every change to the surface will be made visible immediately by - * blitting it into the window. This can be changed with - * cairo_os2_surface_set_manual_window_refresh(). - * Note that the surface will contain garbage when created, so the pixels have - * to be initialized by hand first. You can use the Cairo functions to fill it - * with black, or use cairo_surface_mark_dirty() to fill the surface with pixels - * from the window/HPS. - * - * Return value: the newly created surface - * - * Since: 1.4 - **/ -cairo_surface_t * -cairo_os2_surface_create (HPS hps_client_window, - int width, - int height) -{ - cairo_os2_surface_t *local_os2_surface; - cairo_status_t status; - int rc; - - /* Check the size of the window */ - if ((width <= 0) || - (height <= 0)) - { - /* Invalid window size! */ - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - local_os2_surface = (cairo_os2_surface_t *) malloc (sizeof (cairo_os2_surface_t)); - if (!local_os2_surface) { - /* Not enough memory! */ - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - /* Initialize the OS/2 specific parts of the surface! */ - - /* Create mutex semaphore */ - rc = DosCreateMutexSem (NULL, - &(local_os2_surface->hmtx_use_private_fields), - 0, - FALSE); - if (rc != NO_ERROR) { - /* Could not create mutex semaphore! */ - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - /* Save PS handle */ - local_os2_surface->hps_client_window = hps_client_window; - - /* Defaults */ - local_os2_surface->hwnd_client_window = NULLHANDLE; - local_os2_surface->blit_as_changes = TRUE; - local_os2_surface->pixel_array_lend_count = 0; - rc = DosCreateEventSem (NULL, - &(local_os2_surface->hev_pixel_array_came_back), - 0, - FALSE); - - if (rc != NO_ERROR) { - /* Could not create event semaphore! */ - DosCloseMutexSem (local_os2_surface->hmtx_use_private_fields); - free (local_os2_surface); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - /* Prepare BITMAPINFO2 structure for our buffer */ - memset (&(local_os2_surface->bitmap_info), 0, sizeof (local_os2_surface->bitmap_info)); - local_os2_surface->bitmap_info.cbFix = sizeof (BITMAPINFOHEADER2); - local_os2_surface->bitmap_info.cx = width; - local_os2_surface->bitmap_info.cy = height; - local_os2_surface->bitmap_info.cPlanes = 1; - local_os2_surface->bitmap_info.cBitCount = 32; - - /* Allocate memory for pixels */ - local_os2_surface->pixels = (unsigned char *) _buffer_alloc (height, width, 4); - if (!(local_os2_surface->pixels)) { - /* Not enough memory for the pixels! */ - DosCloseEventSem (local_os2_surface->hev_pixel_array_came_back); - DosCloseMutexSem (local_os2_surface->hmtx_use_private_fields); - free (local_os2_surface); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - /* Create image surface from pixel array */ - local_os2_surface->image_surface = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (local_os2_surface->pixels, - CAIRO_FORMAT_ARGB32, - width, /* Width */ - height, /* Height */ - width * 4); /* Rowstride */ - - status = local_os2_surface->image_surface->base.status; - if (status) { - /* Could not create image surface! */ - _buffer_free (local_os2_surface->pixels); - DosCloseEventSem (local_os2_surface->hev_pixel_array_came_back); - DosCloseMutexSem (local_os2_surface->hmtx_use_private_fields); - free (local_os2_surface); - return _cairo_surface_create_in_error (status); - } - - /* Initialize base surface */ - _cairo_surface_init (&local_os2_surface->base, - &cairo_os2_surface_backend, - _cairo_content_from_format (CAIRO_FORMAT_ARGB32)); - - return (cairo_surface_t *)local_os2_surface; -} - -/** - * cairo_os2_surface_set_size: - * @surface: the cairo surface to resize - * @new_width: the new width of the surface - * @new_height: the new height of the surface - * @timeout: timeout value in milliseconds - * - * When the client window is resized, call this API to set the new size in the - * underlying surface accordingly. This function will reallocate everything, - * so you'll have to redraw everything in the surface after this call. - * The surface will contain garbage after the resizing. So the notes of - * cairo_os2_surface_create() apply here, too. - * - * The timeout value specifies how long the function should wait on other parts - * of the program to release the buffers. It is necessary, because it can happen - * that Cairo is just drawing something into the surface while we want to - * destroy and recreate it. - * - * Return value: %CAIRO_STATUS_SUCCESS if the surface could be resized, - * %CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface is not an OS/2 surface, - * %CAIRO_STATUS_NO_MEMORY if the new size could not be allocated, for invalid - * sizes, or if the timeout happened before all the buffers were released - * - * Since: 1.4 - **/ -int -cairo_os2_surface_set_size (cairo_surface_t *surface, - int new_width, - int new_height, - int timeout) -{ - cairo_os2_surface_t *local_os2_surface; - unsigned char *pchNewPixels; - int rc; - cairo_image_surface_t *pNewImageSurface; - - local_os2_surface = (cairo_os2_surface_t *) surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - } - - if ((new_width <= 0) || - (new_height <= 0)) - { - /* Invalid size! */ - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* Allocate memory for new stuffs */ - pchNewPixels = (unsigned char *) _buffer_alloc (new_height, new_width, 4); - if (!pchNewPixels) { - /* Not enough memory for the pixels! - * Everything remains the same! - */ - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* Create image surface from new pixel array */ - pNewImageSurface = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (pchNewPixels, - CAIRO_FORMAT_ARGB32, - new_width, /* Width */ - new_height, /* Height */ - new_width * 4); /* Rowstride */ - - if (pNewImageSurface->base.status) { - /* Could not create image surface! - * Everything remains the same! - */ - _buffer_free (pchNewPixels); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* Okay, new memory allocated, so it's time to swap old buffers - * to new ones! - */ - if (DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT)!=NO_ERROR) { - /* Could not get mutex! - * Everything remains the same! - */ - cairo_surface_destroy ((cairo_surface_t *) pNewImageSurface); - _buffer_free (pchNewPixels); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* We have to make sure that we won't destroy a surface which - * is lent to some other code (Cairo is drawing into it)! - */ - while (local_os2_surface->pixel_array_lend_count > 0) { - ULONG ulPostCount; - DosResetEventSem (local_os2_surface->hev_pixel_array_came_back, &ulPostCount); - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - /* Wait for somebody to return the pixels! */ - rc = DosWaitEventSem (local_os2_surface->hev_pixel_array_came_back, timeout); - if (rc != NO_ERROR) { - /* Either timeout or something wrong... Exit. */ - cairo_surface_destroy ((cairo_surface_t *) pNewImageSurface); - _buffer_free (pchNewPixels); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - /* Okay, grab mutex and check counter again! */ - if (DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT) - != NO_ERROR) - { - /* Could not get mutex! - * Everything remains the same! - */ - cairo_surface_destroy ((cairo_surface_t *) pNewImageSurface); - _buffer_free (pchNewPixels); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - - /* Destroy old image surface */ - cairo_surface_destroy ((cairo_surface_t *) (local_os2_surface->image_surface)); - /* Destroy old pixel buffer */ - _buffer_free (local_os2_surface->pixels); - /* Set new image surface */ - local_os2_surface->image_surface = pNewImageSurface; - /* Set new pixel buffer */ - local_os2_surface->pixels = pchNewPixels; - /* Change bitmap2 structure */ - local_os2_surface->bitmap_info.cx = new_width; - local_os2_surface->bitmap_info.cy = new_height; - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_os2_surface_refresh_window: - * @surface: the cairo surface to refresh - * @hps_begin_paint: the presentation handle of the window to refresh - * @prcl_begin_paint_rect: the rectangle to redraw - * - * This function can be used to force a repaint of a given area of the client - * window. It should usually be called from the WM_PAINT processing of the - * window procedure. However, it can be called any time a given part of the - * window has to be updated. - * - * The HPS and RECTL to be passed can be taken from the usual WinBeginPaint call - * of the window procedure, but you can also get the HPS using WinGetPS, and you - * can assemble your own update rectangle by hand. - * If hps_begin_paint is %NULL, the function will use the HPS passed into - * cairo_os2_surface_create(). If @prcl_begin_paint_rect is %NULL, the function - * will query the current window size and repaint the whole window. - * - * Cairo assumes that if you set the HWND to the surface using - * cairo_os2_surface_set_hwnd(), this function will be called by the application - * every time it gets a WM_PAINT for that HWND. If the HWND is set in the - * surface, Cairo uses this function to handle dirty areas too. - * - * Since: 1.4 - **/ -void -cairo_os2_surface_refresh_window (cairo_surface_t *surface, - HPS hps_begin_paint, - PRECTL prcl_begin_paint_rect) -{ - cairo_os2_surface_t *local_os2_surface; - RECTL rclTemp; - - local_os2_surface = (cairo_os2_surface_t *) surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return; - } - - /* Manage defaults (NULLs) */ - if (!hps_begin_paint) - hps_begin_paint = local_os2_surface->hps_client_window; - - if (prcl_begin_paint_rect == NULL) { - /* Update the whole window! */ - rclTemp.xLeft = 0; - rclTemp.xRight = local_os2_surface->bitmap_info.cx; - rclTemp.yTop = local_os2_surface->bitmap_info.cy; - rclTemp.yBottom = 0; - } else { - /* Use the rectangle we got passed as parameter! */ - rclTemp.xLeft = prcl_begin_paint_rect->xLeft; - rclTemp.xRight = prcl_begin_paint_rect->xRight; - rclTemp.yTop = local_os2_surface->bitmap_info.cy - prcl_begin_paint_rect->yBottom; - rclTemp.yBottom = local_os2_surface->bitmap_info.cy - prcl_begin_paint_rect->yTop ; - } - - /* Get mutex, we'll work with the pixel array! */ - if (DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT) - != NO_ERROR) - { - /* Could not get mutex! */ - return; - } - - if ((local_os2_surface->dirty_area_present) && - (local_os2_surface->rcl_dirty_area.xLeft == rclTemp.xLeft) && - (local_os2_surface->rcl_dirty_area.xRight == rclTemp.xRight) && - (local_os2_surface->rcl_dirty_area.yTop == rclTemp.yTop) && - (local_os2_surface->rcl_dirty_area.yBottom == rclTemp.yBottom)) - { - /* Aha, this call was because of a dirty area, so in this case we - * have to blit the pixels from the screen to the surface! - */ - local_os2_surface->dirty_area_present = FALSE; - _cairo_os2_surface_get_pixels_from_screen (local_os2_surface, - hps_begin_paint, - &rclTemp); - } else { - /* Okay, we have the surface, have the HPS - * (might be from WinBeginPaint () or from WinGetPS () ) - * Now blit there the stuffs! - */ - _cairo_os2_surface_blit_pixels (local_os2_surface, - hps_begin_paint, - &rclTemp); - } - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); -} - -static cairo_status_t -_cairo_os2_surface_finish (void *abstract_surface) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) abstract_surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - } - - DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT); - - /* Destroy old image surface */ - cairo_surface_destroy ((cairo_surface_t *) (local_os2_surface->image_surface)); - /* Destroy old pixel buffer */ - _buffer_free (local_os2_surface->pixels); - DosCloseMutexSem (local_os2_surface->hmtx_use_private_fields); - DosCloseEventSem (local_os2_surface->hev_pixel_array_came_back); - - /* The memory itself will be free'd by the cairo_surface_destroy () - * who called us. - */ - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_os2_surface_set_hwnd: - * @surface: the cairo surface to associate with the window handle - * @hwnd_client_window: the window handle of the client window - * - * Sets window handle for surface. If Cairo wants to blit into the window - * because it is set to blit as the surface changes (see - * cairo_os2_surface_set_manual_window_refresh()), then there are two ways it - * can choose: - * If it knows the HWND of the surface, then it invalidates that area, so the - * application will get a WM_PAINT message and it can call - * cairo_os2_surface_refresh_window() to redraw that area. Otherwise cairo itself - * will use the HPS it got at surface creation time, and blit the pixels itself. - * It's also a solution, but experience shows that if this happens from a non-PM - * thread, then it can screw up PM internals. - * - * So, best solution is to set the HWND for the surface after the surface - * creation, so every blit will be done from application's message processing - * loop, which is the safest way to do. - * - * Since: 1.4 - **/ -void -cairo_os2_surface_set_hwnd (cairo_surface_t *surface, - HWND hwnd_client_window) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return; - } - - if (DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT) - != NO_ERROR) - { - /* Could not get mutex! */ - return; - } - - local_os2_surface->hwnd_client_window = hwnd_client_window; - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); -} - -/** - * cairo_os2_surface_set_manual_window_refresh: - * @surface: the cairo surface to set the refresh mode for - * @manual_refresh: the switch for manual surface refresh - * - * This API can tell Cairo if it should show every change to this surface - * immediately in the window or if it should be cached and will only be visible - * once the user calls cairo_os2_surface_refresh_window() explicitly. If the - * HWND was not set in the cairo surface, then the HPS will be used to blit the - * graphics. Otherwise it will invalidate the given window region so the user - * will get the WM_PAINT message to redraw that area of the window. - * - * So, if you're only interested in displaying the final result after several - * drawing operations, you might get better performance if you put the surface - * into manual refresh mode by passing a true value to this function. Then call - * cairo_os2_surface_refresh() whenever desired. - * - * Since: 1.4 - **/ -void -cairo_os2_surface_set_manual_window_refresh (cairo_surface_t *surface, - cairo_bool_t manual_refresh) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return; - } - - local_os2_surface->blit_as_changes = !manual_refresh; -} - -/** - * cairo_os2_surface_get_manual_window_refresh: - * @surface: the cairo surface to query the refresh mode from - * - * Return value: current refresh mode of the surface (true by default) - * - * Since: 1.4 - **/ -cairo_bool_t -cairo_os2_surface_get_manual_window_refresh (cairo_surface_t *surface) -{ - cairo_os2_surface_t *local_os2_surface; - - local_os2_surface = (cairo_os2_surface_t *) surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return FALSE; - } - - return !(local_os2_surface->blit_as_changes); -} - -static cairo_status_t -_cairo_os2_surface_mark_dirty_rectangle (void *surface, - int x, - int y, - int width, - int height) -{ - cairo_os2_surface_t *local_os2_surface; - RECTL rclToBlit; - - local_os2_surface = (cairo_os2_surface_t *) surface; - if ((!local_os2_surface) || - (local_os2_surface->base.backend != &cairo_os2_surface_backend)) - { - /* Invalid parameter (wrong surface)! */ - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - } - - /* Get mutex, we'll work with the pixel array! */ - if (DosRequestMutexSem (local_os2_surface->hmtx_use_private_fields, SEM_INDEFINITE_WAIT) - != NO_ERROR) - { - /* Could not get mutex! */ - return CAIRO_STATUS_NO_MEMORY; - } - - /* Check for defaults */ - if (width < 0) - width = local_os2_surface->bitmap_info.cx; - if (height < 0) - height = local_os2_surface->bitmap_info.cy; - - if (local_os2_surface->hwnd_client_window) { - /* We know the HWND, so let's invalidate the window region, - * so the application will redraw itself, using the - * cairo_os2_surface_refresh_window () API from its own PM thread. - * From that function we'll note that it's not a redraw but a - * dirty-rectangle deal stuff, so we'll handle the things from - * there. - * - * This is the safe method, which should be preferred every time. - */ - rclToBlit.xLeft = x; - rclToBlit.xRight = x + width; /* Noninclusive */ - rclToBlit.yTop = local_os2_surface->bitmap_info.cy - (y); - rclToBlit.yBottom = local_os2_surface->bitmap_info.cy - (y + height); /* Noninclusive */ - -#if 0 - if (local_os2_surface->dirty_area_present) { - /* Yikes, there is already a dirty area which should be - * cleaned up, but we'll overwrite it. Sorry. - * TODO: Something clever should be done here. - */ - } -#endif - - /* Set up dirty area reminder stuff */ - memcpy (&(local_os2_surface->rcl_dirty_area), &rclToBlit, sizeof (RECTL)); - local_os2_surface->dirty_area_present = TRUE; - - /* Invalidate window area */ - WinInvalidateRect (local_os2_surface->hwnd_client_window, - &rclToBlit, - FALSE); - } else { - /* We don't know the HWND, so try to blit the pixels from here! - * Please note that it can be problematic if this is not the PM thread! - * - * It can cause internal PM stuffs to be scewed up, for some reason. - * Please always tell the HWND to the surface using the - * cairo_os2_surface_set_hwnd () API, and call cairo_os2_surface_refresh_window () - * from your WM_PAINT, if it's possible! - */ - - rclToBlit.xLeft = x; - rclToBlit.xRight = x + width; /* Noninclusive */ - rclToBlit.yBottom = y; - rclToBlit.yTop = y + height; /* Noninclusive */ - /* Now get the pixels from the screen! */ - _cairo_os2_surface_get_pixels_from_screen (local_os2_surface, - local_os2_surface->hps_client_window, - &rclToBlit); - } - - DosReleaseMutexSem (local_os2_surface->hmtx_use_private_fields); - - return CAIRO_STATUS_SUCCESS; -} - -static const cairo_surface_backend_t cairo_os2_surface_backend = { - CAIRO_SURFACE_TYPE_OS2, - NULL, /* create_similar */ - _cairo_os2_surface_finish, - _cairo_os2_surface_acquire_source_image, - _cairo_os2_surface_release_source_image, - _cairo_os2_surface_acquire_dest_image, - _cairo_os2_surface_release_dest_image, - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - NULL, /* set_clip_region */ - NULL, /* intersect_clip_path */ - _cairo_os2_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - _cairo_os2_surface_mark_dirty_rectangle, - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - NULL, /* show_glyphs */ - NULL /* snapshot */ -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-output-stream.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-output-stream.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-output-stream.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-output-stream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,677 +0,0 @@ -/* cairo-output-stream.c: Output stream abstraction - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Author(s): - * Kristian Høgsberg - */ - -#define _BSD_SOURCE /* for snprintf() */ -#include "cairoint.h" - -#include "cairo-output-stream-private.h" -#include "cairo-compiler-private.h" - -#include -#include -#include -#include - -/* Numbers printed with %f are printed with this number of significant - * digits after the decimal. - */ -#define SIGNIFICANT_DIGITS_AFTER_DECIMAL 6 - -/* Numbers printed with %g are assumed to only have CAIRO_FIXED_FRAC_BITS - * bits of precision available after the decimal point. - * - * FIXED_POINT_DECIMAL_DIGITS specifies the minimum number of decimal - * digits after the decimal point required to preserve the available - * precision. - * - * The conversion is: - * - * FIXED_POINT_DECIMAL_DIGITS = ceil( CAIRO_FIXED_FRAC_BITS * ln(2)/ln(10) ) - * - * We can replace ceil(x) with (int)(x+1) since x will never be an - * integer for any likely value of CAIRO_FIXED_FRAC_BITS. - */ -#define FIXED_POINT_DECIMAL_DIGITS ((int)(CAIRO_FIXED_FRAC_BITS*0.301029996 + 1)) - -void -_cairo_output_stream_init (cairo_output_stream_t *stream, - cairo_output_stream_write_func_t write_func, - cairo_output_stream_close_func_t close_func) -{ - stream->write_func = write_func; - stream->close_func = close_func; - stream->position = 0; - stream->status = CAIRO_STATUS_SUCCESS; - stream->closed = FALSE; -} - -cairo_status_t -_cairo_output_stream_fini (cairo_output_stream_t *stream) -{ - return _cairo_output_stream_close (stream); -} - -const cairo_output_stream_t _cairo_output_stream_nil = { - NULL, /* write_func */ - NULL, /* close_func */ - 0, /* position */ - CAIRO_STATUS_NO_MEMORY, - FALSE /* closed */ -}; - -static const cairo_output_stream_t _cairo_output_stream_nil_write_error = { - NULL, /* write_func */ - NULL, /* close_func */ - 0, /* position */ - CAIRO_STATUS_WRITE_ERROR, - FALSE /* closed */ -}; - -typedef struct _cairo_output_stream_with_closure { - cairo_output_stream_t base; - cairo_write_func_t write_func; - cairo_close_func_t close_func; - void *closure; -} cairo_output_stream_with_closure_t; - - -static cairo_status_t -closure_write (cairo_output_stream_t *stream, - const unsigned char *data, unsigned int length) -{ - cairo_output_stream_with_closure_t *stream_with_closure = - (cairo_output_stream_with_closure_t *) stream; - - return stream_with_closure->write_func (stream_with_closure->closure, - data, length); -} - -static cairo_status_t -closure_close (cairo_output_stream_t *stream) -{ - cairo_output_stream_with_closure_t *stream_with_closure = - (cairo_output_stream_with_closure_t *) stream; - - if (stream_with_closure->close_func != NULL) - return stream_with_closure->close_func (stream_with_closure->closure); - else - return CAIRO_STATUS_SUCCESS; -} - -cairo_output_stream_t * -_cairo_output_stream_create (cairo_write_func_t write_func, - cairo_close_func_t close_func, - void *closure) -{ - cairo_output_stream_with_closure_t *stream; - - stream = malloc (sizeof (cairo_output_stream_with_closure_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, closure_write, closure_close); - stream->write_func = write_func; - stream->close_func = close_func; - stream->closure = closure; - - return &stream->base; -} - -cairo_output_stream_t * -_cairo_output_stream_create_in_error (cairo_status_t status) -{ - cairo_output_stream_t *stream; - - /* check for the common ones */ - if (status == CAIRO_STATUS_NO_MEMORY) - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - if (status == CAIRO_STATUS_WRITE_ERROR) - return (cairo_output_stream_t *) &_cairo_output_stream_nil_write_error; - - stream = malloc (sizeof (cairo_output_stream_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (stream, NULL, NULL); - stream->status = status; - - return stream; -} - -cairo_status_t -_cairo_output_stream_close (cairo_output_stream_t *stream) -{ - cairo_status_t status; - - if (stream->closed) - return stream->status; - - if (stream == &_cairo_output_stream_nil || - stream == &_cairo_output_stream_nil_write_error) - { - return stream->status; - } - - if (stream->close_func) { - status = stream->close_func (stream); - /* Don't overwrite a pre-existing status failure. */ - if (stream->status == CAIRO_STATUS_SUCCESS) - stream->status = status; - } - - stream->closed = TRUE; - - return stream->status; -} - -cairo_status_t -_cairo_output_stream_destroy (cairo_output_stream_t *stream) -{ - cairo_status_t status; - - assert (stream != NULL); - - if (stream == &_cairo_output_stream_nil || - stream == &_cairo_output_stream_nil_write_error) - { - return stream->status; - } - - status = _cairo_output_stream_fini (stream); - free (stream); - - return status; -} - -void -_cairo_output_stream_write (cairo_output_stream_t *stream, - const void *data, size_t length) -{ - if (length == 0) - return; - - if (stream->status) - return; - - stream->status = stream->write_func (stream, data, length); - stream->position += length; -} - -void -_cairo_output_stream_write_hex_string (cairo_output_stream_t *stream, - const char *data, - size_t length) -{ - const char hex_chars[] = "0123456789abcdef"; - char buffer[2]; - unsigned int i, column; - - if (stream->status) - return; - - for (i = 0, column = 0; i < length; i++, column++) { - if (column == 38) { - _cairo_output_stream_write (stream, "\n", 1); - column = 0; - } - buffer[0] = hex_chars[(data[i] >> 4) & 0x0f]; - buffer[1] = hex_chars[data[i] & 0x0f]; - _cairo_output_stream_write (stream, buffer, 2); - } -} - -/* Format a double in a locale independent way and trim trailing - * zeros. Based on code from Alex Larson . - * http://mail.gnome.org/archives/gtk-devel-list/2001-October/msg00087.html - * - * The code in the patch is copyright Red Hat, Inc under the LGPL, but - * has been relicensed under the LGPL/MPL dual license for inclusion - * into cairo (see COPYING). -- Kristian Høgsberg - */ -static void -_cairo_dtostr (char *buffer, size_t size, double d, cairo_bool_t limited_precision) -{ - struct lconv *locale_data; - const char *decimal_point; - int decimal_point_len; - char *p; - int decimal_len; - int num_zeros, decimal_digits; - - /* Omit the minus sign from negative zero. */ - if (d == 0.0) - d = 0.0; - - locale_data = localeconv (); - decimal_point = locale_data->decimal_point; - decimal_point_len = strlen (decimal_point); - - assert (decimal_point_len != 0); - - if (limited_precision) { - snprintf (buffer, size, "%.*f", FIXED_POINT_DECIMAL_DIGITS, d); - } else { - /* Using "%f" to print numbers less than 0.1 will result in - * reduced precision due to the default 6 digits after the - * decimal point. - * - * For numbers is < 0.1, we print with maximum precision and count - * the number of zeros between the decimal point and the first - * significant digit. We then print the number again with the - * number of decimal places that gives us the required number of - * significant digits. This ensures the number is correctly - * rounded. - */ - if (fabs (d) >= 0.1) { - snprintf (buffer, size, "%f", d); - } else { - snprintf (buffer, size, "%.18f", d); - p = buffer; - - if (*p == '+' || *p == '-') - p++; - - while (isdigit (*p)) - p++; - - if (strncmp (p, decimal_point, decimal_point_len) == 0) - p += decimal_point_len; - - num_zeros = 0; - while (*p++ == '0') - num_zeros++; - - decimal_digits = num_zeros + SIGNIFICANT_DIGITS_AFTER_DECIMAL; - - if (decimal_digits < 18) - snprintf (buffer, size, "%.*f", decimal_digits, d); - } - } - p = buffer; - - if (*p == '+' || *p == '-') - p++; - - while (isdigit (*p)) - p++; - - if (strncmp (p, decimal_point, decimal_point_len) == 0) { - *p = '.'; - decimal_len = strlen (p + decimal_point_len); - memmove (p + 1, p + decimal_point_len, decimal_len); - p[1 + decimal_len] = 0; - - /* Remove trailing zeros and decimal point if possible. */ - for (p = p + decimal_len; *p == '0'; p--) - *p = 0; - - if (*p == '.') { - *p = 0; - p--; - } - } -} - -enum { - LENGTH_MODIFIER_LONG = 0x100 -}; - -/* Here's a limited reimplementation of printf. The reason for doing - * this is primarily to special case handling of doubles. We want - * locale independent formatting of doubles and we want to trim - * trailing zeros. This is handled by dtostr() above, and the code - * below handles everything else by calling snprintf() to do the - * formatting. This functionality is only for internal use and we - * only implement the formats we actually use. - */ -void -_cairo_output_stream_vprintf (cairo_output_stream_t *stream, - const char *fmt, va_list ap) -{ -#define SINGLE_FMT_BUFFER_SIZE 32 - char buffer[512], single_fmt[SINGLE_FMT_BUFFER_SIZE]; - int single_fmt_length; - char *p; - const char *f, *start; - int length_modifier, width; - cairo_bool_t var_width; - - if (stream->status) - return; - - f = fmt; - p = buffer; - while (*f != '\0') { - if (p == buffer + sizeof (buffer)) { - _cairo_output_stream_write (stream, buffer, sizeof (buffer)); - p = buffer; - } - - if (*f != '%') { - *p++ = *f++; - continue; - } - - start = f; - f++; - - if (*f == '0') - f++; - - var_width = FALSE; - if (*f == '*') { - var_width = TRUE; - f++; - } - - while (isdigit (*f)) - f++; - - length_modifier = 0; - if (*f == 'l') { - length_modifier = LENGTH_MODIFIER_LONG; - f++; - } - - /* The only format strings exist in the cairo implementation - * itself. So there's an internal consistency problem if any - * of them is larger than our format buffer size. */ - single_fmt_length = f - start + 1; - assert (single_fmt_length + 1 <= SINGLE_FMT_BUFFER_SIZE); - - /* Reuse the format string for this conversion. */ - memcpy (single_fmt, start, single_fmt_length); - single_fmt[single_fmt_length] = '\0'; - - /* Flush contents of buffer before snprintf()'ing into it. */ - _cairo_output_stream_write (stream, buffer, p - buffer); - p = buffer; - - /* We group signed and unsigned together in this switch, the - * only thing that matters here is the size of the arguments, - * since we're just passing the data through to sprintf(). */ - switch (*f | length_modifier) { - case '%': - buffer[0] = *f; - buffer[1] = 0; - break; - case 'd': - case 'u': - case 'o': - case 'x': - case 'X': - if (var_width) { - width = va_arg (ap, int); - snprintf (buffer, sizeof buffer, - single_fmt, width, va_arg (ap, int)); - } else { - snprintf (buffer, sizeof buffer, single_fmt, va_arg (ap, int)); - } - break; - case 'd' | LENGTH_MODIFIER_LONG: - case 'u' | LENGTH_MODIFIER_LONG: - case 'o' | LENGTH_MODIFIER_LONG: - case 'x' | LENGTH_MODIFIER_LONG: - case 'X' | LENGTH_MODIFIER_LONG: - if (var_width) { - width = va_arg (ap, int); - snprintf (buffer, sizeof buffer, - single_fmt, width, va_arg (ap, long int)); - } else { - snprintf (buffer, sizeof buffer, - single_fmt, va_arg (ap, long int)); - } - break; - case 's': - snprintf (buffer, sizeof buffer, - single_fmt, va_arg (ap, const char *)); - break; - case 'f': - _cairo_dtostr (buffer, sizeof buffer, va_arg (ap, double), FALSE); - break; - case 'g': - _cairo_dtostr (buffer, sizeof buffer, va_arg (ap, double), TRUE); - break; - case 'c': - buffer[0] = va_arg (ap, int); - buffer[1] = 0; - break; - default: - ASSERT_NOT_REACHED; - } - p = buffer + strlen (buffer); - f++; - } - - _cairo_output_stream_write (stream, buffer, p - buffer); -} - -void -_cairo_output_stream_printf (cairo_output_stream_t *stream, - const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - - _cairo_output_stream_vprintf (stream, fmt, ap); - - va_end (ap); -} - -long -_cairo_output_stream_get_position (cairo_output_stream_t *stream) -{ - return stream->position; -} - -cairo_status_t -_cairo_output_stream_get_status (cairo_output_stream_t *stream) -{ - return stream->status; -} - -/* Maybe this should be a configure time option, so embedded targets - * don't have to pull in stdio. */ - - -typedef struct _stdio_stream { - cairo_output_stream_t base; - FILE *file; -} stdio_stream_t; - -static cairo_status_t -stdio_write (cairo_output_stream_t *base, - const unsigned char *data, unsigned int length) -{ - stdio_stream_t *stream = (stdio_stream_t *) base; - - if (fwrite (data, 1, length, stream->file) != length) - return _cairo_error (CAIRO_STATUS_WRITE_ERROR); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -stdio_flush (cairo_output_stream_t *base) -{ - stdio_stream_t *stream = (stdio_stream_t *) base; - - fflush (stream->file); - - if (ferror (stream->file)) - return _cairo_error (CAIRO_STATUS_WRITE_ERROR); - else - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -stdio_close (cairo_output_stream_t *base) -{ - cairo_status_t status; - stdio_stream_t *stream = (stdio_stream_t *) base; - - status = stdio_flush (base); - - fclose (stream->file); - - return status; -} - -cairo_output_stream_t * -_cairo_output_stream_create_for_file (FILE *file) -{ - stdio_stream_t *stream; - - if (file == NULL) { - _cairo_error_throw (CAIRO_STATUS_WRITE_ERROR); - return (cairo_output_stream_t *) &_cairo_output_stream_nil_write_error; - } - - stream = malloc (sizeof *stream); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, stdio_write, stdio_flush); - stream->file = file; - - return &stream->base; -} - -cairo_output_stream_t * -_cairo_output_stream_create_for_filename (const char *filename) -{ - stdio_stream_t *stream; - FILE *file; - - file = fopen (filename, "wb"); - if (file == NULL) { - switch (errno) { - case ENOMEM: - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - default: - _cairo_error_throw (CAIRO_STATUS_WRITE_ERROR); - return (cairo_output_stream_t *) &_cairo_output_stream_nil_write_error; - } - } - - stream = malloc (sizeof *stream); - if (stream == NULL) { - fclose (file); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, stdio_write, stdio_close); - stream->file = file; - - return &stream->base; -} - - -typedef struct _memory_stream { - cairo_output_stream_t base; - cairo_array_t array; -} memory_stream_t; - -static cairo_status_t -memory_write (cairo_output_stream_t *base, - const unsigned char *data, unsigned int length) -{ - memory_stream_t *stream = (memory_stream_t *) base; - - return _cairo_array_append_multiple (&stream->array, data, length); -} - -static cairo_status_t -memory_close (cairo_output_stream_t *base) -{ - memory_stream_t *stream = (memory_stream_t *) base; - - _cairo_array_fini (&stream->array); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_output_stream_t * -_cairo_memory_stream_create (void) -{ - memory_stream_t *stream; - - stream = malloc (sizeof *stream); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, memory_write, memory_close); - _cairo_array_init (&stream->array, 1); - - return &stream->base; -} - -void -_cairo_memory_stream_copy (cairo_output_stream_t *base, - cairo_output_stream_t *dest) -{ - memory_stream_t *stream = (memory_stream_t *) base; - - if (dest->status) - return; - - if (base->status) { - dest->status = base->status; - return; - } - - _cairo_output_stream_write (dest, - _cairo_array_index (&stream->array, 0), - _cairo_array_num_elements (&stream->array)); -} - -int -_cairo_memory_stream_length (cairo_output_stream_t *base) -{ - memory_stream_t *stream = (memory_stream_t *) base; - - return _cairo_array_num_elements (&stream->array); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-output-stream-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-output-stream-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-output-stream-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-output-stream-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Author(s): - * Kristian Høgsberg - */ - -#ifndef CAIRO_OUTPUT_STREAM_PRIVATE_H -#define CAIRO_OUTPUT_STREAM_PRIVATE_H - -#include "cairo-compiler-private.h" -#include "cairo-types-private.h" - -typedef cairo_status_t (*cairo_output_stream_write_func_t) (cairo_output_stream_t *output_stream, - const unsigned char *data, - unsigned int length); - -typedef cairo_status_t (*cairo_output_stream_close_func_t) (cairo_output_stream_t *output_stream); - -struct _cairo_output_stream { - cairo_output_stream_write_func_t write_func; - cairo_output_stream_close_func_t close_func; - unsigned long position; - cairo_status_t status; - cairo_bool_t closed; -}; - -extern const cairo_private cairo_output_stream_t _cairo_output_stream_nil; - -cairo_private void -_cairo_output_stream_init (cairo_output_stream_t *stream, - cairo_output_stream_write_func_t write_func, - cairo_output_stream_close_func_t close_func); - -cairo_private cairo_status_t -_cairo_output_stream_fini (cairo_output_stream_t *stream); - - -/* We already have the following declared in cairo.h: - -typedef cairo_status_t (*cairo_write_func_t) (void *closure, - const unsigned char *data, - unsigned int length); -*/ -typedef cairo_status_t (*cairo_close_func_t) (void *closure); - - -/* This function never returns %NULL. If an error occurs (NO_MEMORY) - * while trying to create the output stream this function returns a - * valid pointer to a nil output stream. - * - * Note that even with a nil surface, the close_func callback will be - * called by a call to _cairo_output_stream_close or - * _cairo_output_stream_destroy. - */ -cairo_private cairo_output_stream_t * -_cairo_output_stream_create (cairo_write_func_t write_func, - cairo_close_func_t close_func, - void *closure); - -cairo_private cairo_output_stream_t * -_cairo_output_stream_create_in_error (cairo_status_t status); - -/* Returns the final status value associated with this object, just - * before its last gasp. This final status value will capture any - * status failure returned by the stream's close_func as well. */ -cairo_private cairo_status_t -_cairo_output_stream_close (cairo_output_stream_t *stream); - -/* Returns the final status value associated with this object, just - * before its last gasp. This final status value will capture any - * status failure returned by the stream's close_func as well. */ -cairo_private cairo_status_t -_cairo_output_stream_destroy (cairo_output_stream_t *stream); - -cairo_private void -_cairo_output_stream_write (cairo_output_stream_t *stream, - const void *data, size_t length); - -cairo_private void -_cairo_output_stream_write_hex_string (cairo_output_stream_t *stream, - const char *data, - size_t length); - -cairo_private void -_cairo_output_stream_vprintf (cairo_output_stream_t *stream, - const char *fmt, - va_list ap) CAIRO_PRINTF_FORMAT ( 2, 0); - -cairo_private void -_cairo_output_stream_printf (cairo_output_stream_t *stream, - const char *fmt, - ...) CAIRO_PRINTF_FORMAT (2, 3); - -cairo_private long -_cairo_output_stream_get_position (cairo_output_stream_t *stream); - -cairo_private cairo_status_t -_cairo_output_stream_get_status (cairo_output_stream_t *stream); - -/* This function never returns %NULL. If an error occurs (NO_MEMORY or - * WRITE_ERROR) while trying to create the output stream this function - * returns a valid pointer to a nil output stream. - * - * Note: Even if a nil surface is returned, the caller should still - * call _cairo_output_stream_destroy (or _cairo_output_stream_close at - * least) in order to ensure that everything is properly cleaned up. - */ -cairo_private cairo_output_stream_t * -_cairo_output_stream_create_for_filename (const char *filename); - -/* This function never returns %NULL. If an error occurs (NO_MEMORY or - * WRITE_ERROR) while trying to create the output stream this function - * returns a valid pointer to a nil output stream. - * - * The caller still "owns" file and is responsible for calling fclose - * on it when finished. The stream will not do this itself. - */ -cairo_private cairo_output_stream_t * -_cairo_output_stream_create_for_file (FILE *file); - -cairo_private cairo_output_stream_t * -_cairo_memory_stream_create (void); - -cairo_private void -_cairo_memory_stream_copy (cairo_output_stream_t *base, - cairo_output_stream_t *dest); - -cairo_private int -_cairo_memory_stream_length (cairo_output_stream_t *stream); - -/* cairo_base85_stream.c */ -cairo_private cairo_output_stream_t * -_cairo_base85_stream_create (cairo_output_stream_t *output); - -/* cairo_deflate_stream.c */ -cairo_private cairo_output_stream_t * -_cairo_deflate_stream_create (cairo_output_stream_t *output); - -#endif /* CAIRO_OUTPUT_STREAM_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-paginated-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-paginated-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-paginated-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-paginated-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,156 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -#ifndef CAIRO_PAGINATED_H -#define CAIRO_PAGINATED_H - -#include "cairoint.h" - -struct _cairo_paginated_surface_backend { - /* Optional. Will be called once for each page. - * - * Note: With respect to the order of drawing operations as seen - * by the target, this call will occur before any drawing - * operations for the relevant page. However, with respect to the - * function calls as made by the user, this call will be *after* - * any drawing operations for the page, (that is, it will occur - * during the user's call to cairo_show_page or cairo_copy_page). - */ - cairo_warn cairo_int_status_t - (*start_page) (void *surface); - - /* Required. Will be called twice for each page, once with an - * argument of CAIRO_PAGINATED_MODE_ANALYZE and once with - * CAIRO_PAGINATED_MODE_RENDER. See more details in the - * documentation for _cairo_paginated_surface_create below. - */ - void - (*set_paginated_mode) (void *surface, - cairo_paginated_mode_t mode); - - /* Optional. Specifies the smallest box that encloses all objects - * on the page. Will be called at the end of the ANALYZE phase but - * before the mode is changed to RENDER. - */ - cairo_warn cairo_int_status_t - (*set_bounding_box) (void *surface, - cairo_box_t *bbox); -}; - -/* A #cairo_paginated_surface_t provides a very convenient wrapper that - * is well-suited for doing the analysis common to most surfaces that - * have paginated output, (that is, things directed at printers, or - * for saving content in files such as PostScript or PDF files). - * - * To use the paginated surface, you'll first need to create your - * 'real' surface using _cairo_surface_init() and the standard - * #cairo_surface_backend_t. Then you also call - * _cairo_paginated_surface_create which takes its own, much simpler, - * #cairo_paginated_surface_backend_t. You are free to return the result - * of _cairo_paginated_surface_create() from your public - * cairo__surface_create. The paginated backend will be careful - * to not let the user see that they really got a "wrapped" - * surface. See test-paginated-surface.c for a fairly minimal example - * of a paginated-using surface. That should be a reasonable example - * to follow. - * - * What the paginated surface does is first save all drawing - * operations for a page into a meta-surface. Then when the user calls - * cairo_show_page, the paginated surface performs the following - * sequence of operations (using the backend functions passed to - * cairo_paginated_surface_create): - * - * 1. Calls start_page (if non %NULL). At this point, it is appropriate - * for the target to emit any page-specific header information into - * its output. - * - * 2. Calls set_paginated_mode with an argument of CAIRO_PAGINATED_MODE_ANALYZE - * - * 3. Replays the meta-surface to the target surface, (with an - * analysis surface inserted between which watches the return value - * from each operation). This analysis stage is used to decide which - * operations will require fallbacks. - * - * 4. Calls set_bounding_box to provide the target surface with the - * tight bounding box of the page. - * - * 5. Calls set_paginated_mode with an argument of CAIRO_PAGINATED_MODE_RENDER - * - * 6. Replays a subset of the meta-surface operations to the target surface - * - * 7. Calls set_paginated_mode with an argument of CAIRO_PAGINATED_MODE_FALLBACK - * - * 8. Replays the remaining operations to an image surface, sets an - * appropriate clip on the target, then paints the resulting image - * surface to the target. - * - * So, the target will see drawing operations during three separate - * stages, (ANALYZE, RENDER and FALLBACK). During the ANALYZE phase - * the target should not actually perform any rendering, (for example, - * if performing output to a file, no output should be generated - * during this stage). Instead the drawing functions simply need to - * return %CAIRO_STATUS_SUCCESS or %CAIRO_INT_STATUS_UNSUPPORTED to - * indicate whether rendering would be supported. And it should do - * this as quickly as possible. The FALLBACK phase allows the surface - * to distinguish fallback images from native rendering in case they - * need to be handled as a special case. - * - * Note: The paginated surface layer assumes that the target surface - * is "blank" by default at the beginning of each page, without any - * need for an explicit erase operation, (as opposed to an image - * surface, for example, which might have uninitialized content - * originally). As such, it optimizes away CLEAR operations that - * happen at the beginning of each page---the target surface will not - * even see these operations. - */ -cairo_private cairo_surface_t * -_cairo_paginated_surface_create (cairo_surface_t *target, - cairo_content_t content, - int width, - int height, - const cairo_paginated_surface_backend_t *backend); - -cairo_private cairo_surface_t * -_cairo_paginated_surface_get_target (cairo_surface_t *surface); - -cairo_private cairo_bool_t -_cairo_surface_is_paginated (cairo_surface_t *surface); - -cairo_private cairo_status_t -_cairo_paginated_surface_set_size (cairo_surface_t *surface, - int width, - int height); - -#endif /* CAIRO_PAGINATED_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-paginated-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-paginated-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-paginated-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-paginated-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,671 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * Copyright © 2007 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - * Keith Packard - * Adrian Johnson - */ - -/* The paginated surface layer exists to provide as much code sharing - * as possible for the various paginated surface backends in cairo - * (PostScript, PDF, etc.). See cairo-paginated-private.h for - * more details on how it works and how to use it. - */ - -#include "cairoint.h" - -#include "cairo-paginated-private.h" -#include "cairo-paginated-surface-private.h" -#include "cairo-meta-surface-private.h" -#include "cairo-analysis-surface-private.h" - -static const cairo_surface_backend_t cairo_paginated_surface_backend; - -static cairo_int_status_t -_cairo_paginated_surface_show_page (void *abstract_surface); - -static cairo_surface_t * -_cairo_paginated_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - cairo_paginated_surface_t *surface = abstract_surface; - return cairo_surface_create_similar (surface->target, content, - width, height); -} - -/* XXX The integer width,height here should be doubles and all uses updated */ -cairo_surface_t * -_cairo_paginated_surface_create (cairo_surface_t *target, - cairo_content_t content, - int width, - int height, - const cairo_paginated_surface_backend_t *backend) -{ - cairo_paginated_surface_t *surface; - cairo_status_t status; - - surface = malloc (sizeof (cairo_paginated_surface_t)); - if (surface == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } - - _cairo_surface_init (&surface->base, &cairo_paginated_surface_backend, - content); - - /* Override surface->base.type with target's type so we don't leak - * evidence of the paginated wrapper out to the user. */ - surface->base.type = cairo_surface_get_type (target); - - surface->target = target; - - surface->content = content; - surface->width = width; - surface->height = height; - - surface->backend = backend; - - surface->meta = _cairo_meta_surface_create (content, width, height); - status = cairo_surface_status (surface->meta); - if (status) - goto FAIL_CLEANUP_SURFACE; - - surface->page_num = 1; - surface->page_is_blank = TRUE; - - return &surface->base; - - FAIL_CLEANUP_SURFACE: - free (surface); - FAIL: - return _cairo_surface_create_in_error (status); -} - -cairo_bool_t -_cairo_surface_is_paginated (cairo_surface_t *surface) -{ - return surface->backend == &cairo_paginated_surface_backend; -} - -cairo_surface_t * -_cairo_paginated_surface_get_target (cairo_surface_t *surface) -{ - cairo_paginated_surface_t *paginated_surface; - - assert (_cairo_surface_is_paginated (surface)); - - paginated_surface = (cairo_paginated_surface_t *) surface; - - return paginated_surface->target; -} - -cairo_status_t -_cairo_paginated_surface_set_size (cairo_surface_t *surface, - int width, - int height) -{ - cairo_paginated_surface_t *paginated_surface; - cairo_status_t status; - - assert (_cairo_surface_is_paginated (surface)); - - paginated_surface = (cairo_paginated_surface_t *) surface; - - paginated_surface->width = width; - paginated_surface->height = height; - - cairo_surface_destroy (paginated_surface->meta); - paginated_surface->meta = _cairo_meta_surface_create (paginated_surface->content, - width, height); - status = cairo_surface_status (paginated_surface->meta); - if (status) - return _cairo_surface_set_error (surface, status); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_paginated_surface_finish (void *abstract_surface) -{ - cairo_paginated_surface_t *surface = abstract_surface; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - if (surface->page_is_blank == FALSE || surface->page_num == 1) { - cairo_surface_show_page (abstract_surface); - status = cairo_surface_status (abstract_surface); - } - - if (status == CAIRO_STATUS_SUCCESS) { - cairo_surface_finish (surface->target); - status = cairo_surface_status (surface->target); - } - - if (status == CAIRO_STATUS_SUCCESS) { - cairo_surface_finish (surface->meta); - status = cairo_surface_status (surface->meta); - } - - cairo_surface_destroy (surface->target); - - cairo_surface_destroy (surface->meta); - - return status; -} - -static cairo_surface_t * -_cairo_paginated_surface_create_image_surface (void *abstract_surface, - int width, - int height) -{ - cairo_paginated_surface_t *surface = abstract_surface; - cairo_surface_t *image; - cairo_font_options_t options; - - image = _cairo_image_surface_create_with_content (surface->content, - width, - height); - - cairo_surface_get_font_options (&surface->base, &options); - _cairo_surface_set_font_options (image, &options); - - return image; -} - -static cairo_status_t -_cairo_paginated_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_paginated_surface_t *surface = abstract_surface; - cairo_surface_t *image; - cairo_status_t status; - cairo_rectangle_int_t extents; - - status = _cairo_surface_get_extents (surface->target, &extents); - if (status) - return status; - - image = _cairo_paginated_surface_create_image_surface (surface, - extents.width, - extents.height); - - status = _cairo_meta_surface_replay (surface->meta, image); - if (status) { - cairo_surface_destroy (image); - return status; - } - - *image_out = (cairo_image_surface_t*) image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_paginated_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_surface_destroy (&image->base); -} - -static cairo_int_status_t -_paint_fallback_image (cairo_paginated_surface_t *surface, - cairo_box_int_t *box) -{ - double x_scale = surface->base.x_fallback_resolution / surface->target->x_resolution; - double y_scale = surface->base.y_fallback_resolution / surface->target->y_resolution; - cairo_matrix_t matrix; - int x, y, width, height; - cairo_status_t status; - cairo_surface_t *image; - cairo_pattern_t *pattern; - - x = box->p1.x; - y = box->p1.y; - width = box->p2.x - x; - height = box->p2.y - y; - image = _cairo_paginated_surface_create_image_surface (surface, - ceil (width * x_scale), - ceil (height * y_scale)); - _cairo_surface_set_device_scale (image, x_scale, y_scale); - /* set_device_offset just sets the x0/y0 components of the matrix; - * so we have to do the scaling manually. */ - cairo_surface_set_device_offset (image, -x*x_scale, -y*y_scale); - - status = _cairo_meta_surface_replay (surface->meta, image); - if (status) - goto CLEANUP_IMAGE; - - pattern = cairo_pattern_create_for_surface (image); - cairo_matrix_init (&matrix, x_scale, 0, 0, y_scale, -x*x_scale, -y*y_scale); - cairo_pattern_set_matrix (pattern, &matrix); - - status = _cairo_surface_paint (surface->target, - CAIRO_OPERATOR_SOURCE, - pattern); - - cairo_pattern_destroy (pattern); -CLEANUP_IMAGE: - cairo_surface_destroy (image); - - return status; -} - -static cairo_int_status_t -_paint_page (cairo_paginated_surface_t *surface) -{ - cairo_surface_t *analysis; - cairo_status_t status; - cairo_bool_t has_supported, has_page_fallback, has_finegrained_fallback; - - if (surface->target->status) - return surface->target->status; - - analysis = _cairo_analysis_surface_create (surface->target, - surface->width, surface->height); - if (analysis->status) - return _cairo_surface_set_error (surface->target, analysis->status); - - surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_ANALYZE); - status = _cairo_meta_surface_replay_and_create_regions (surface->meta, analysis); - if (status || analysis->status) { - if (status == CAIRO_STATUS_SUCCESS) - status = analysis->status; - goto FAIL; - } - - if (surface->backend->set_bounding_box) { - cairo_box_t bbox; - - _cairo_analysis_surface_get_bounding_box (analysis, &bbox); - status = surface->backend->set_bounding_box (surface->target, &bbox); - if (status) - goto FAIL; - } - - surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_RENDER); - - /* Finer grained fallbacks are currently only supported for some - * surface types */ - switch (surface->target->type) { - case CAIRO_SURFACE_TYPE_PDF: - case CAIRO_SURFACE_TYPE_PS: - case CAIRO_SURFACE_TYPE_WIN32_PRINTING: - has_supported = _cairo_analysis_surface_has_supported (analysis); - has_page_fallback = FALSE; - has_finegrained_fallback = _cairo_analysis_surface_has_unsupported (analysis); - break; - - case CAIRO_SURFACE_TYPE_IMAGE: - case CAIRO_SURFACE_TYPE_XLIB: - case CAIRO_SURFACE_TYPE_XCB: - case CAIRO_SURFACE_TYPE_GLITZ: - case CAIRO_SURFACE_TYPE_QUARTZ: - case CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: - case CAIRO_SURFACE_TYPE_WIN32: - case CAIRO_SURFACE_TYPE_BEOS: - case CAIRO_SURFACE_TYPE_DIRECTFB: - case CAIRO_SURFACE_TYPE_SVG: - case CAIRO_SURFACE_TYPE_OS2: - default: - if (_cairo_analysis_surface_has_unsupported (analysis)) { - has_supported = FALSE; - has_page_fallback = TRUE; - } else { - has_supported = TRUE; - has_page_fallback = FALSE; - } - has_finegrained_fallback = FALSE; - break; - } - - if (has_supported) { - status = _cairo_meta_surface_replay_region (surface->meta, - surface->target, - CAIRO_META_REGION_NATIVE); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - if (status) - goto FAIL; - } - - if (has_page_fallback) - { - cairo_box_int_t box; - - box.p1.x = 0; - box.p1.y = 0; - box.p2.x = surface->width; - box.p2.y = surface->height; - status = _paint_fallback_image (surface, &box); - if (status) - goto FAIL; - } - - if (has_finegrained_fallback) - { - cairo_region_t *region; - cairo_box_int_t *boxes; - int num_boxes, i; - - surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_FALLBACK); - - /* Reset clip region before drawing the fall back images */ - status = _cairo_surface_intersect_clip_path (surface->target, - NULL, - CAIRO_FILL_RULE_WINDING, - CAIRO_GSTATE_TOLERANCE_DEFAULT, - CAIRO_ANTIALIAS_DEFAULT); - if (status) - goto FAIL; - - region = _cairo_analysis_surface_get_unsupported (analysis); - status = _cairo_region_get_boxes (region, &num_boxes, &boxes); - if (status) - goto FAIL; - for (i = 0; i < num_boxes; i++) { - status = _paint_fallback_image (surface, &boxes[i]); - if (status) { - _cairo_region_boxes_fini (region, boxes); - goto FAIL; - } - } - _cairo_region_boxes_fini (region, boxes); - } - - FAIL: - cairo_surface_destroy (analysis); - - return _cairo_surface_set_error (surface->target, status); -} - -static cairo_status_t -_start_page (cairo_paginated_surface_t *surface) -{ - if (surface->target->status) - return surface->target->status; - - if (! surface->backend->start_page) - return CAIRO_STATUS_SUCCESS; - - return _cairo_surface_set_error (surface->target, - surface->backend->start_page (surface->target)); -} - -static cairo_int_status_t -_cairo_paginated_surface_copy_page (void *abstract_surface) -{ - cairo_status_t status; - cairo_paginated_surface_t *surface = abstract_surface; - - status = _start_page (surface); - if (status) - return status; - - status = _paint_page (surface); - if (status) - return status; - - surface->page_num++; - - /* XXX: It might make sense to add some suport here for calling - * cairo_surface_copy_page on the target surface. It would be an - * optimization for the output, but the interaction with image - * fallbacks gets tricky. For now, we just let the target see a - * show_page and we implement the copying by simply not destroying - * the meta-surface. */ - - cairo_surface_show_page (surface->target); - return cairo_surface_status (surface->target); -} - -static cairo_int_status_t -_cairo_paginated_surface_show_page (void *abstract_surface) -{ - cairo_status_t status; - cairo_paginated_surface_t *surface = abstract_surface; - - status = _start_page (surface); - if (status) - return status; - - status = _paint_page (surface); - if (status) - return status; - - cairo_surface_show_page (surface->target); - status = cairo_surface_status (surface->target); - if (status) - return status; - - status = cairo_surface_status (surface->meta); - if (status) - return status; - - cairo_surface_destroy (surface->meta); - - surface->meta = _cairo_meta_surface_create (surface->content, - surface->width, - surface->height); - status = cairo_surface_status (surface->meta); - if (status) - return status; - - surface->page_num++; - surface->page_is_blank = TRUE; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_paginated_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - return _cairo_surface_intersect_clip_path (surface->meta, - path, fill_rule, - tolerance, antialias); -} - -static cairo_int_status_t -_cairo_paginated_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - return _cairo_surface_get_extents (surface->target, rectangle); -} - -static void -_cairo_paginated_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - cairo_surface_get_font_options (surface->target, options); -} - -static cairo_int_status_t -_cairo_paginated_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - /* Optimize away erasing of nothing. */ - if (surface->page_is_blank && op == CAIRO_OPERATOR_CLEAR) - return CAIRO_STATUS_SUCCESS; - - surface->page_is_blank = FALSE; - - return _cairo_surface_paint (surface->meta, op, source); -} - -static cairo_int_status_t -_cairo_paginated_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - return _cairo_surface_mask (surface->meta, op, source, mask); -} - -static cairo_int_status_t -_cairo_paginated_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - /* Optimize away erasing of nothing. */ - if (surface->page_is_blank && op == CAIRO_OPERATOR_CLEAR) - return CAIRO_STATUS_SUCCESS; - - surface->page_is_blank = FALSE; - - return _cairo_surface_stroke (surface->meta, op, source, - path, style, - ctm, ctm_inverse, - tolerance, antialias); -} - -static cairo_int_status_t -_cairo_paginated_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_paginated_surface_t *surface = abstract_surface; - - /* Optimize away erasing of nothing. */ - if (surface->page_is_blank && op == CAIRO_OPERATOR_CLEAR) - return CAIRO_STATUS_SUCCESS; - - surface->page_is_blank = FALSE; - - return _cairo_surface_fill (surface->meta, op, source, - path, fill_rule, - tolerance, antialias); -} - -static cairo_int_status_t -_cairo_paginated_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_paginated_surface_t *surface = abstract_surface; - cairo_int_status_t status; - - /* Optimize away erasing of nothing. */ - if (surface->page_is_blank && op == CAIRO_OPERATOR_CLEAR) - return CAIRO_STATUS_SUCCESS; - - surface->page_is_blank = FALSE; - - /* Since this is a "wrapping" surface, we're calling back into - * _cairo_surface_show_glyphs from within a call to the same. - * Since _cairo_surface_show_glyphs acquires a mutex, we release - * and re-acquire the mutex around this nested call. - * - * Yes, this is ugly, but we consider it pragmatic as compared to - * adding locking code to all 18 surface-backend-specific - * show_glyphs functions, (which would get less testing and likely - * lead to bugs). - */ - CAIRO_MUTEX_UNLOCK (scaled_font->mutex); - status = _cairo_surface_show_glyphs (surface->meta, op, source, - glyphs, num_glyphs, - scaled_font); - CAIRO_MUTEX_LOCK (scaled_font->mutex); - - return status; -} - -static cairo_surface_t * -_cairo_paginated_surface_snapshot (void *abstract_other) -{ - cairo_paginated_surface_t *other = abstract_other; - - return _cairo_surface_snapshot (other->meta); -} - -static const cairo_surface_backend_t cairo_paginated_surface_backend = { - CAIRO_INTERNAL_SURFACE_TYPE_PAGINATED, - _cairo_paginated_surface_create_similar, - _cairo_paginated_surface_finish, - _cairo_paginated_surface_acquire_source_image, - _cairo_paginated_surface_release_source_image, - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - _cairo_paginated_surface_copy_page, - _cairo_paginated_surface_show_page, - NULL, /* set_clip_region */ - _cairo_paginated_surface_intersect_clip_path, - _cairo_paginated_surface_get_extents, - NULL, /* old_show_glyphs */ - _cairo_paginated_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - _cairo_paginated_surface_paint, - _cairo_paginated_surface_mask, - _cairo_paginated_surface_stroke, - _cairo_paginated_surface_fill, - _cairo_paginated_surface_show_glyphs, - _cairo_paginated_surface_snapshot -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-paginated-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-paginated-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-paginated-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-paginated-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -#ifndef CAIRO_PAGINATED_SURFACE_H -#define CAIRO_PAGINATED_SURFACE_H - -#include "cairo.h" - -#include "cairo-surface-private.h" - -typedef struct _cairo_paginated_surface { - cairo_surface_t base; - - /* The target surface to hold the final result. */ - cairo_surface_t *target; - - cairo_content_t content; - - /* XXX: These shouldn't actually exist. We inherit this ugliness - * from _cairo_meta_surface_create. The width/height parameters - * from that function also should not exist. The fix that will - * allow us to remove all of these is to fix acquire_source_image - * to pass an interest rectangle. */ - int width; - int height; - - /* Paginated-surface specific functions for the target */ - const cairo_paginated_surface_backend_t *backend; - - /* A cairo_meta_surface to record all operations. To be replayed - * against target, and also against image surface as necessary for - * fallbacks. */ - cairo_surface_t *meta; - - int page_num; - cairo_bool_t page_is_blank; - -} cairo_paginated_surface_t; - -#endif /* CAIRO_PAGINATED_SURFACE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path-bounds.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-bounds.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path-bounds.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-bounds.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,174 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -typedef struct cairo_path_bounder { - cairo_point_t move_to_point; - cairo_bool_t has_move_to_point; - cairo_bool_t has_point; - - cairo_fixed_t min_x; - cairo_fixed_t min_y; - cairo_fixed_t max_x; - cairo_fixed_t max_y; -} cairo_path_bounder_t; - -static void -_cairo_path_bounder_init (cairo_path_bounder_t *bounder); - -static void -_cairo_path_bounder_fini (cairo_path_bounder_t *bounder); - -static void -_cairo_path_bounder_add_point (cairo_path_bounder_t *bounder, cairo_point_t *point); - -static cairo_status_t -_cairo_path_bounder_move_to (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_path_bounder_line_to (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_path_bounder_close_path (void *closure); - -static void -_cairo_path_bounder_init (cairo_path_bounder_t *bounder) -{ - bounder->has_move_to_point = FALSE; - bounder->has_point = FALSE; -} - -static void -_cairo_path_bounder_fini (cairo_path_bounder_t *bounder) -{ - bounder->has_move_to_point = FALSE; - bounder->has_point = FALSE; -} - -static void -_cairo_path_bounder_add_point (cairo_path_bounder_t *bounder, cairo_point_t *point) -{ - if (bounder->has_point) { - if (point->x < bounder->min_x) - bounder->min_x = point->x; - - if (point->y < bounder->min_y) - bounder->min_y = point->y; - - if (point->x > bounder->max_x) - bounder->max_x = point->x; - - if (point->y > bounder->max_y) - bounder->max_y = point->y; - } else { - bounder->min_x = point->x; - bounder->min_y = point->y; - bounder->max_x = point->x; - bounder->max_y = point->y; - - bounder->has_point = TRUE; - } -} - -static cairo_status_t -_cairo_path_bounder_move_to (void *closure, cairo_point_t *point) -{ - cairo_path_bounder_t *bounder = closure; - - bounder->move_to_point = *point; - bounder->has_move_to_point = TRUE; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_path_bounder_line_to (void *closure, cairo_point_t *point) -{ - cairo_path_bounder_t *bounder = closure; - - if (bounder->has_move_to_point) { - _cairo_path_bounder_add_point (bounder, - &bounder->move_to_point); - bounder->has_move_to_point = FALSE; - } - - _cairo_path_bounder_add_point (bounder, point); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_path_bounder_close_path (void *closure) -{ - return CAIRO_STATUS_SUCCESS; -} - -/* XXX: Perhaps this should compute a PixRegion rather than 4 doubles */ -cairo_status_t -_cairo_path_fixed_bounds (cairo_path_fixed_t *path, - double *x1, double *y1, - double *x2, double *y2, - double tolerance) -{ - cairo_path_bounder_t bounder; - cairo_status_t status; - - _cairo_path_bounder_init (&bounder); - - status = _cairo_path_fixed_interpret_flat (path, CAIRO_DIRECTION_FORWARD, - _cairo_path_bounder_move_to, - _cairo_path_bounder_line_to, - _cairo_path_bounder_close_path, - &bounder, - tolerance); - - if (status == CAIRO_STATUS_SUCCESS && bounder.has_point) { - *x1 = _cairo_fixed_to_double (bounder.min_x); - *y1 = _cairo_fixed_to_double (bounder.min_y); - *x2 = _cairo_fixed_to_double (bounder.max_x); - *y2 = _cairo_fixed_to_double (bounder.max_y); - } else { - *x1 = 0.0; - *y1 = 0.0; - *x2 = 0.0; - *y2 = 0.0; - } - - _cairo_path_bounder_fini (&bounder); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,482 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-path-private.h" -#include "cairo-path-fixed-private.h" - -static const cairo_path_t _cairo_path_nil = { CAIRO_STATUS_NO_MEMORY, NULL, 0 }; - -/* Closure for path interpretation. */ -typedef struct cairo_path_count { - int count; - cairo_point_t current_point; -} cpc_t; - -static cairo_status_t -_cpc_move_to (void *closure, cairo_point_t *point) -{ - cpc_t *cpc = closure; - - cpc->count += 2; - - cpc->current_point = *point; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cpc_line_to (void *closure, cairo_point_t *point) -{ - cpc_t *cpc = closure; - - cpc->count += 2; - - cpc->current_point = *point; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cpc_curve_to (void *closure, - cairo_point_t *p1, - cairo_point_t *p2, - cairo_point_t *p3) -{ - cpc_t *cpc = closure; - - cpc->count += 4; - - cpc->current_point = *p3; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cpc_close_path (void *closure) -{ - cpc_t *cpc = closure; - - cpc->count += 1; - - return CAIRO_STATUS_SUCCESS; -} - -static int -_cairo_path_count (cairo_path_t *path, - cairo_path_fixed_t *path_fixed, - double tolerance, - cairo_bool_t flatten) -{ - cairo_status_t status; - cpc_t cpc; - - cpc.count = 0; - cpc.current_point.x = 0; - cpc.current_point.y = 0; - - if (flatten) { - status = _cairo_path_fixed_interpret_flat (path_fixed, - CAIRO_DIRECTION_FORWARD, - _cpc_move_to, - _cpc_line_to, - _cpc_close_path, - &cpc, - tolerance); - } else { - status = _cairo_path_fixed_interpret (path_fixed, - CAIRO_DIRECTION_FORWARD, - _cpc_move_to, - _cpc_line_to, - _cpc_curve_to, - _cpc_close_path, - &cpc); - } - - if (status) - return -1; - - return cpc.count; -} - -/* Closure for path interpretation. */ -typedef struct cairo_path_populate { - cairo_path_data_t *data; - cairo_gstate_t *gstate; - cairo_point_t current_point; -} cpp_t; - -static cairo_status_t -_cpp_move_to (void *closure, cairo_point_t *point) -{ - cpp_t *cpp = closure; - cairo_path_data_t *data = cpp->data; - double x, y; - - x = _cairo_fixed_to_double (point->x); - y = _cairo_fixed_to_double (point->y); - - _cairo_gstate_backend_to_user (cpp->gstate, &x, &y); - - data->header.type = CAIRO_PATH_MOVE_TO; - data->header.length = 2; - - /* We index from 1 to leave room for data->header */ - data[1].point.x = x; - data[1].point.y = y; - - cpp->data += data->header.length; - - cpp->current_point = *point; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cpp_line_to (void *closure, cairo_point_t *point) -{ - cpp_t *cpp = closure; - cairo_path_data_t *data = cpp->data; - double x, y; - - x = _cairo_fixed_to_double (point->x); - y = _cairo_fixed_to_double (point->y); - - _cairo_gstate_backend_to_user (cpp->gstate, &x, &y); - - data->header.type = CAIRO_PATH_LINE_TO; - data->header.length = 2; - - /* We index from 1 to leave room for data->header */ - data[1].point.x = x; - data[1].point.y = y; - - cpp->data += data->header.length; - - cpp->current_point = *point; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cpp_curve_to (void *closure, - cairo_point_t *p1, - cairo_point_t *p2, - cairo_point_t *p3) -{ - cpp_t *cpp = closure; - cairo_path_data_t *data = cpp->data; - double x1, y1; - double x2, y2; - double x3, y3; - - x1 = _cairo_fixed_to_double (p1->x); - y1 = _cairo_fixed_to_double (p1->y); - _cairo_gstate_backend_to_user (cpp->gstate, &x1, &y1); - - x2 = _cairo_fixed_to_double (p2->x); - y2 = _cairo_fixed_to_double (p2->y); - _cairo_gstate_backend_to_user (cpp->gstate, &x2, &y2); - - x3 = _cairo_fixed_to_double (p3->x); - y3 = _cairo_fixed_to_double (p3->y); - _cairo_gstate_backend_to_user (cpp->gstate, &x3, &y3); - - data->header.type = CAIRO_PATH_CURVE_TO; - data->header.length = 4; - - /* We index from 1 to leave room for data->header */ - data[1].point.x = x1; - data[1].point.y = y1; - - data[2].point.x = x2; - data[2].point.y = y2; - - data[3].point.x = x3; - data[3].point.y = y3; - - cpp->data += data->header.length; - - cpp->current_point = *p3; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cpp_close_path (void *closure) -{ - cpp_t *cpp = closure; - cairo_path_data_t *data = cpp->data; - - data->header.type = CAIRO_PATH_CLOSE_PATH; - data->header.length = 1; - - cpp->data += data->header.length; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_path_populate (cairo_path_t *path, - cairo_path_fixed_t *path_fixed, - cairo_gstate_t *gstate, - cairo_bool_t flatten) -{ - cairo_status_t status; - cpp_t cpp; - - cpp.data = path->data; - cpp.gstate = gstate; - cpp.current_point.x = 0; - cpp.current_point.y = 0; - - if (flatten) { - double tolerance = _cairo_gstate_get_tolerance (gstate); - status = _cairo_path_fixed_interpret_flat (path_fixed, - CAIRO_DIRECTION_FORWARD, - _cpp_move_to, - _cpp_line_to, - _cpp_close_path, - &cpp, - tolerance); - } else { - status = _cairo_path_fixed_interpret (path_fixed, - CAIRO_DIRECTION_FORWARD, - _cpp_move_to, - _cpp_line_to, - _cpp_curve_to, - _cpp_close_path, - &cpp); - } - - if (status) - return status; - - /* Sanity check the count */ - assert (cpp.data - path->data == path->num_data); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_path_t * -_cairo_path_create_in_error (cairo_status_t status) -{ - cairo_path_t *path; - - /* special case NO_MEMORY so as to avoid allocations */ - if (status == CAIRO_STATUS_NO_MEMORY) - return (cairo_path_t*) &_cairo_path_nil; - - path = malloc (sizeof (cairo_path_t)); - if (path == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_path_t*) &_cairo_path_nil; - } - - path->num_data = 0; - path->data = NULL; - path->status = status; - - return path; -} - -static cairo_path_t * -_cairo_path_create_internal (cairo_path_fixed_t *path_fixed, - cairo_gstate_t *gstate, - cairo_bool_t flatten) -{ - cairo_path_t *path; - - path = malloc (sizeof (cairo_path_t)); - if (path == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_path_t*) &_cairo_path_nil; - } - - path->num_data = _cairo_path_count (path, path_fixed, - _cairo_gstate_get_tolerance (gstate), - flatten); - if (path->num_data < 0) { - free (path); - return (cairo_path_t*) &_cairo_path_nil; - } - - if (path->num_data) { - path->data = _cairo_malloc_ab (path->num_data, - sizeof (cairo_path_data_t)); - if (path->data == NULL) { - free (path); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_path_t*) &_cairo_path_nil; - } - - path->status = _cairo_path_populate (path, path_fixed, - gstate, flatten); - } else { - path->data = NULL; - path->status = CAIRO_STATUS_SUCCESS; - } - - return path; -} - -/** - * cairo_path_destroy: - * @path: a path previously returned by either cairo_copy_path() or - * cairo_copy_path_flat(). - * - * Immediately releases all memory associated with @path. After a call - * to cairo_path_destroy() the @path pointer is no longer valid and - * should not be used further. - * - * Note: cairo_path_destroy() should only be called with a - * pointer to a #cairo_path_t returned by a cairo function. Any path - * that is created manually (ie. outside of cairo) should be destroyed - * manually as well. - **/ -void -cairo_path_destroy (cairo_path_t *path) -{ - if (path == NULL || path == &_cairo_path_nil) - return; - - if (path->data) - free (path->data); - - free (path); -} - -/** - * _cairo_path_create: - * @path: a fixed-point, device-space path to be converted and copied - * @gstate: the current graphics state - * - * Creates a user-space #cairo_path_t copy of the given device-space - * @path. The @gstate parameter provides the inverse CTM for the - * conversion. - * - * Return value: the new copy of the path. If there is insufficient - * memory a pointer to a special static nil #cairo_path_t will be - * returned instead with status==%CAIRO_STATUS_NO_MEMORY and - * data==%NULL. - **/ -cairo_path_t * -_cairo_path_create (cairo_path_fixed_t *path, - cairo_gstate_t *gstate) -{ - return _cairo_path_create_internal (path, gstate, FALSE); -} - -/** - * _cairo_path_create_flat: - * @path: a fixed-point, device-space path to be flattened, converted and copied - * @gstate: the current graphics state - * - * Creates a flattened, user-space #cairo_path_t copy of the given - * device-space @path. The @gstate parameter provide the inverse CTM - * for the conversion, as well as the tolerance value to control the - * accuracy of the flattening. - * - * Return value: the flattened copy of the path. If there is insufficient - * memory a pointer to a special static nil #cairo_path_t will be - * returned instead with status==%CAIRO_STATUS_NO_MEMORY and - * data==%NULL. - **/ -cairo_path_t * -_cairo_path_create_flat (cairo_path_fixed_t *path, - cairo_gstate_t *gstate) -{ - return _cairo_path_create_internal (path, gstate, TRUE); -} - -/** - * _cairo_path_append_to_context: - * @path: the path data to be appended - * @cr: a cairo context - * - * Append @path to the current path within @cr. - * - * Return value: %CAIRO_STATUS_INVALID_PATH_DATA if the data in @path - * is invalid, and %CAIRO_STATUS_SUCCESS otherwise. - **/ -cairo_status_t -_cairo_path_append_to_context (const cairo_path_t *path, - cairo_t *cr) -{ - int i; - cairo_path_data_t *p; - cairo_status_t status; - - for (i=0; i < path->num_data; i += path->data[i].header.length) { - p = &path->data[i]; - switch (p->header.type) { - case CAIRO_PATH_MOVE_TO: - if (p->header.length < 2) - return _cairo_error (CAIRO_STATUS_INVALID_PATH_DATA); - cairo_move_to (cr, - p[1].point.x, p[1].point.y); - break; - case CAIRO_PATH_LINE_TO: - if (p->header.length < 2) - return _cairo_error (CAIRO_STATUS_INVALID_PATH_DATA); - cairo_line_to (cr, - p[1].point.x, p[1].point.y); - break; - case CAIRO_PATH_CURVE_TO: - if (p->header.length < 4) - return _cairo_error (CAIRO_STATUS_INVALID_PATH_DATA); - cairo_curve_to (cr, - p[1].point.x, p[1].point.y, - p[2].point.x, p[2].point.y, - p[3].point.x, p[3].point.y); - break; - case CAIRO_PATH_CLOSE_PATH: - if (p->header.length < 1) - return _cairo_error (CAIRO_STATUS_INVALID_PATH_DATA); - cairo_close_path (cr); - break; - default: - return _cairo_error (CAIRO_STATUS_INVALID_PATH_DATA); - } - - status = cairo_status (cr); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path-fill.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-fill.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path-fill.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-fill.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,223 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" -#include "cairo-path-fixed-private.h" - -typedef struct cairo_filler { - double tolerance; - cairo_traps_t *traps; - - cairo_point_t current_point; - - cairo_polygon_t polygon; -} cairo_filler_t; - -static void -_cairo_filler_init (cairo_filler_t *filler, double tolerance, cairo_traps_t *traps); - -static void -_cairo_filler_fini (cairo_filler_t *filler); - -static cairo_status_t -_cairo_filler_move_to (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_filler_line_to (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_filler_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d); - -static cairo_status_t -_cairo_filler_close_path (void *closure); - -static void -_cairo_filler_init (cairo_filler_t *filler, double tolerance, cairo_traps_t *traps) -{ - filler->tolerance = tolerance; - filler->traps = traps; - - filler->current_point.x = 0; - filler->current_point.y = 0; - - _cairo_polygon_init (&filler->polygon); -} - -static void -_cairo_filler_fini (cairo_filler_t *filler) -{ - _cairo_polygon_fini (&filler->polygon); -} - -static cairo_status_t -_cairo_filler_move_to (void *closure, cairo_point_t *point) -{ - cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = &filler->polygon; - - _cairo_polygon_close (polygon); - _cairo_polygon_move_to (polygon, point); - - filler->current_point = *point; - - return _cairo_polygon_status (&filler->polygon); -} - -static cairo_status_t -_cairo_filler_line_to (void *closure, cairo_point_t *point) -{ - cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = &filler->polygon; - - _cairo_polygon_line_to (polygon, point); - - filler->current_point = *point; - - return _cairo_polygon_status (&filler->polygon); -} - -static cairo_status_t -_cairo_filler_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d) -{ - int i; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = &filler->polygon; - cairo_spline_t spline; - - status = _cairo_spline_init (&spline, &filler->current_point, b, c, d); - - if (status == CAIRO_INT_STATUS_DEGENERATE) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_spline_decompose (&spline, filler->tolerance); - if (status) - goto CLEANUP_SPLINE; - - for (i = 1; i < spline.num_points; i++) - _cairo_polygon_line_to (polygon, &spline.points[i]); - - CLEANUP_SPLINE: - _cairo_spline_fini (&spline); - - filler->current_point = *d; - - return status; -} - -static cairo_status_t -_cairo_filler_close_path (void *closure) -{ - cairo_filler_t *filler = closure; - cairo_polygon_t *polygon = &filler->polygon; - - _cairo_polygon_close (polygon); - - return _cairo_polygon_status (polygon); -} - -static cairo_int_status_t -_cairo_path_fixed_fill_rectangle (cairo_path_fixed_t *path, - cairo_traps_t *traps); - -cairo_status_t -_cairo_path_fixed_fill_to_traps (cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_traps_t *traps) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_filler_t filler; - - /* Before we do anything else, we use a special-case filler for - * a device-axis aligned rectangle if possible. */ - status = _cairo_path_fixed_fill_rectangle (path, traps); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - _cairo_filler_init (&filler, tolerance, traps); - - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_filler_move_to, - _cairo_filler_line_to, - _cairo_filler_curve_to, - _cairo_filler_close_path, - &filler); - if (status) - goto BAIL; - - _cairo_polygon_close (&filler.polygon); - status = _cairo_polygon_status (&filler.polygon); - if (status) - goto BAIL; - - status = _cairo_bentley_ottmann_tessellate_polygon (filler.traps, - &filler.polygon, - fill_rule); - if (status) - goto BAIL; - -BAIL: - _cairo_filler_fini (&filler); - - return status; -} - -/* This special-case filler supports only a path that describes a - * device-axis aligned rectangle. It exists to avoid the overhead of - * the general tessellator when drawing very common rectangles. - * - * If the path described anything but a device-axis aligned rectangle, - * this function will return %CAIRO_INT_STATUS_UNSUPPORTED. - */ -static cairo_int_status_t -_cairo_path_fixed_fill_rectangle (cairo_path_fixed_t *path, - cairo_traps_t *traps) -{ - if (_cairo_path_fixed_is_box (path, NULL)) { - return _cairo_traps_tessellate_convex_quad (traps, - path->buf_head.base.points); - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path-fixed.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-fixed.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path-fixed.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-fixed.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,830 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-path-fixed-private.h" - -/* private functions */ -static cairo_status_t -_cairo_path_fixed_add (cairo_path_fixed_t *path, - cairo_path_op_t op, - cairo_point_t *points, - int num_points); - -static void -_cairo_path_fixed_add_buf (cairo_path_fixed_t *path, - cairo_path_buf_t *buf); - -static cairo_path_buf_t * -_cairo_path_buf_create (int buf_size); - -static void -_cairo_path_buf_destroy (cairo_path_buf_t *buf); - -static void -_cairo_path_buf_add_op (cairo_path_buf_t *buf, - cairo_path_op_t op); - -static void -_cairo_path_buf_add_points (cairo_path_buf_t *buf, - cairo_point_t *points, - int num_points); - -void -_cairo_path_fixed_init (cairo_path_fixed_t *path) -{ - path->buf_head.base.next = NULL; - path->buf_head.base.prev = NULL; - path->buf_tail = &path->buf_head.base; - - path->buf_head.base.num_ops = 0; - path->buf_head.base.num_points = 0; - path->buf_head.base.buf_size = CAIRO_PATH_BUF_SIZE; - path->buf_head.base.op = path->buf_head.op; - path->buf_head.base.points = path->buf_head.points; - - path->current_point.x = 0; - path->current_point.y = 0; - path->has_current_point = FALSE; - path->has_curve_to = FALSE; - path->last_move_point = path->current_point; -} - -cairo_status_t -_cairo_path_fixed_init_copy (cairo_path_fixed_t *path, - cairo_path_fixed_t *other) -{ - cairo_path_buf_t *buf, *other_buf; - unsigned int num_points, num_ops, buf_size; - - _cairo_path_fixed_init (path); - - path->current_point = other->current_point; - path->has_current_point = other->has_current_point; - path->has_curve_to = other->has_curve_to; - path->last_move_point = other->last_move_point; - - path->buf_head.base.num_ops = other->buf_head.base.num_ops; - path->buf_head.base.num_points = other->buf_head.base.num_points; - path->buf_head.base.buf_size = other->buf_head.base.buf_size; - memcpy (path->buf_head.op, other->buf_head.base.op, - other->buf_head.base.num_ops * sizeof (other->buf_head.op[0])); - memcpy (path->buf_head.points, other->buf_head.points, - other->buf_head.base.num_points * sizeof (other->buf_head.points[0])); - - num_points = num_ops = 0; - for (other_buf = other->buf_head.base.next; - other_buf != NULL; - other_buf = other_buf->next) - { - num_ops += other_buf->num_ops; - num_points += other_buf->num_points; - } - - buf_size = MAX (num_ops, (num_points + 1) / 2); - if (buf_size) { - buf = _cairo_path_buf_create (buf_size); - if (buf == NULL) { - _cairo_path_fixed_fini (path); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (other_buf = other->buf_head.base.next; - other_buf != NULL; - other_buf = other_buf->next) - { - memcpy (buf->op + buf->num_ops, other_buf->op, - other_buf->num_ops * sizeof (buf->op[0])); - buf->num_ops += other_buf->num_ops; - - memcpy (buf->points + buf->num_points, other_buf->points, - other_buf->num_points * sizeof (buf->points[0])); - buf->num_points += other_buf->num_points; - } - - _cairo_path_fixed_add_buf (path, buf); - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_path_fixed_t * -_cairo_path_fixed_create (void) -{ - cairo_path_fixed_t *path; - - path = malloc (sizeof (cairo_path_fixed_t)); - if (!path) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - _cairo_path_fixed_init (path); - return path; -} - -void -_cairo_path_fixed_fini (cairo_path_fixed_t *path) -{ - cairo_path_buf_t *buf; - - buf = path->buf_head.base.next; - while (buf) { - cairo_path_buf_t *this = buf; - buf = buf->next; - _cairo_path_buf_destroy (this); - } - path->buf_head.base.next = NULL; - path->buf_head.base.prev = NULL; - path->buf_tail = &path->buf_head.base; - path->buf_head.base.num_ops = 0; - path->buf_head.base.num_points = 0; - - path->has_current_point = FALSE; - path->has_curve_to = FALSE; -} - -void -_cairo_path_fixed_destroy (cairo_path_fixed_t *path) -{ - _cairo_path_fixed_fini (path); - free (path); -} - -cairo_status_t -_cairo_path_fixed_move_to (cairo_path_fixed_t *path, - cairo_fixed_t x, - cairo_fixed_t y) -{ - cairo_status_t status; - cairo_point_t point; - - point.x = x; - point.y = y; - - /* If the previous op was also a MOVE_TO, then just change its - * point rather than adding a new op. */ - if (path->buf_tail && path->buf_tail->num_ops && - path->buf_tail->op[path->buf_tail->num_ops - 1] == CAIRO_PATH_OP_MOVE_TO) - { - cairo_point_t *last_move_to_point; - last_move_to_point = &path->buf_tail->points[path->buf_tail->num_points - 1]; - *last_move_to_point = point; - } else { - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_MOVE_TO, &point, 1); - if (status) - return status; - } - - path->current_point = point; - path->has_current_point = TRUE; - path->last_move_point = path->current_point; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_path_fixed_new_sub_path (cairo_path_fixed_t *path) -{ - path->has_current_point = FALSE; -} - -cairo_status_t -_cairo_path_fixed_rel_move_to (cairo_path_fixed_t *path, - cairo_fixed_t dx, - cairo_fixed_t dy) -{ - cairo_fixed_t x, y; - - if (! path->has_current_point) - return _cairo_error (CAIRO_STATUS_NO_CURRENT_POINT); - - x = path->current_point.x + dx; - y = path->current_point.y + dy; - - return _cairo_path_fixed_move_to (path, x, y); -} - -cairo_status_t -_cairo_path_fixed_line_to (cairo_path_fixed_t *path, - cairo_fixed_t x, - cairo_fixed_t y) -{ - cairo_status_t status; - cairo_point_t point; - - point.x = x; - point.y = y; - - /* When there is not yet a current point, the line_to operation - * becomes a move_to instead. Note: We have to do this by - * explicitly calling into _cairo_path_fixed_line_to to ensure - * that the last_move_point state is updated properly. - */ - if (! path->has_current_point) - status = _cairo_path_fixed_move_to (path, point.x, point.y); - else - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_LINE_TO, &point, 1); - - if (status) - return status; - - path->current_point = point; - path->has_current_point = TRUE; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_path_fixed_rel_line_to (cairo_path_fixed_t *path, - cairo_fixed_t dx, - cairo_fixed_t dy) -{ - cairo_fixed_t x, y; - - if (! path->has_current_point) - return _cairo_error (CAIRO_STATUS_NO_CURRENT_POINT); - - x = path->current_point.x + dx; - y = path->current_point.y + dy; - - return _cairo_path_fixed_line_to (path, x, y); -} - -cairo_status_t -_cairo_path_fixed_curve_to (cairo_path_fixed_t *path, - cairo_fixed_t x0, cairo_fixed_t y0, - cairo_fixed_t x1, cairo_fixed_t y1, - cairo_fixed_t x2, cairo_fixed_t y2) -{ - cairo_status_t status; - cairo_point_t point[3]; - - point[0].x = x0; point[0].y = y0; - point[1].x = x1; point[1].y = y1; - point[2].x = x2; point[2].y = y2; - - if (! path->has_current_point) { - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_MOVE_TO, - &point[0], 1); - if (status) - return status; - } - - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_CURVE_TO, point, 3); - if (status) - return status; - - path->current_point = point[2]; - path->has_current_point = TRUE; - path->has_curve_to = TRUE; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_path_fixed_rel_curve_to (cairo_path_fixed_t *path, - cairo_fixed_t dx0, cairo_fixed_t dy0, - cairo_fixed_t dx1, cairo_fixed_t dy1, - cairo_fixed_t dx2, cairo_fixed_t dy2) -{ - cairo_fixed_t x0, y0; - cairo_fixed_t x1, y1; - cairo_fixed_t x2, y2; - - if (! path->has_current_point) - return _cairo_error (CAIRO_STATUS_NO_CURRENT_POINT); - - x0 = path->current_point.x + dx0; - y0 = path->current_point.y + dy0; - - x1 = path->current_point.x + dx1; - y1 = path->current_point.y + dy1; - - x2 = path->current_point.x + dx2; - y2 = path->current_point.y + dy2; - - return _cairo_path_fixed_curve_to (path, - x0, y0, - x1, y1, - x2, y2); -} - -cairo_status_t -_cairo_path_fixed_close_path (cairo_path_fixed_t *path) -{ - cairo_status_t status; - - if (! path->has_current_point) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_path_fixed_add (path, CAIRO_PATH_OP_CLOSE_PATH, NULL, 0); - if (status) - return status; - - status = _cairo_path_fixed_move_to (path, - path->last_move_point.x, - path->last_move_point.y); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_bool_t -_cairo_path_fixed_get_current_point (cairo_path_fixed_t *path, - cairo_fixed_t *x, - cairo_fixed_t *y) -{ - if (! path->has_current_point) - return FALSE; - - *x = path->current_point.x; - *y = path->current_point.y; - - return TRUE; -} - -static cairo_status_t -_cairo_path_fixed_add (cairo_path_fixed_t *path, - cairo_path_op_t op, - cairo_point_t *points, - int num_points) -{ - cairo_path_buf_t *buf = path->buf_tail; - - if (buf->num_ops + 1 > buf->buf_size || - buf->num_points + num_points > 2 * buf->buf_size) - { - buf = _cairo_path_buf_create (buf->buf_size * 2); - if (buf == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_path_fixed_add_buf (path, buf); - } - - _cairo_path_buf_add_op (buf, op); - _cairo_path_buf_add_points (buf, points, num_points); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_path_fixed_add_buf (cairo_path_fixed_t *path, - cairo_path_buf_t *buf) -{ - buf->next = NULL; - buf->prev = path->buf_tail; - - path->buf_tail->next = buf; - path->buf_tail = buf; -} - -static cairo_path_buf_t * -_cairo_path_buf_create (int buf_size) -{ - cairo_path_buf_t *buf; - - /* adjust buf_size to ensure that buf->points is naturally aligned */ - buf_size += sizeof (double) - - ((buf_size + sizeof (cairo_path_buf_t)) & (sizeof (double)-1)); - buf = _cairo_malloc_ab_plus_c (buf_size, - sizeof (cairo_path_op_t) + - 2 * sizeof (cairo_point_t), - sizeof (cairo_path_buf_t)); - if (buf) { - buf->next = NULL; - buf->prev = NULL; - buf->num_ops = 0; - buf->num_points = 0; - buf->buf_size = buf_size; - - buf->op = (cairo_path_op_t *) (buf + 1); - buf->points = (cairo_point_t *) (buf->op + buf_size); - } - - return buf; -} - -static void -_cairo_path_buf_destroy (cairo_path_buf_t *buf) -{ - free (buf); -} - -static void -_cairo_path_buf_add_op (cairo_path_buf_t *buf, - cairo_path_op_t op) -{ - buf->op[buf->num_ops++] = op; -} - -static void -_cairo_path_buf_add_points (cairo_path_buf_t *buf, - cairo_point_t *points, - int num_points) -{ - int i; - - for (i=0; i < num_points; i++) { - buf->points[buf->num_points++] = points[i]; - } -} - -static int const num_args[] = -{ - 1, /* cairo_path_move_to */ - 1, /* cairo_path_op_line_to */ - 3, /* cairo_path_op_curve_to */ - 0, /* cairo_path_op_close_path */ -}; - -cairo_status_t -_cairo_path_fixed_interpret (cairo_path_fixed_t *path, - cairo_direction_t dir, - cairo_path_fixed_move_to_func_t *move_to, - cairo_path_fixed_line_to_func_t *line_to, - cairo_path_fixed_curve_to_func_t *curve_to, - cairo_path_fixed_close_path_func_t *close_path, - void *closure) -{ - cairo_status_t status; - cairo_path_buf_t *buf; - cairo_path_op_t op; - cairo_bool_t forward = (dir == CAIRO_DIRECTION_FORWARD); - int step = forward ? 1 : -1; - - for (buf = forward ? &path->buf_head.base : path->buf_tail; - buf; - buf = forward ? buf->next : buf->prev) - { - cairo_point_t *points; - int start, stop, i; - if (forward) { - start = 0; - stop = buf->num_ops; - points = buf->points; - } else { - start = buf->num_ops - 1; - stop = -1; - points = buf->points + buf->num_points; - } - - for (i=start; i != stop; i += step) { - op = buf->op[i]; - - if (! forward) { - points -= num_args[(int) op]; - } - - switch (op) { - case CAIRO_PATH_OP_MOVE_TO: - status = (*move_to) (closure, &points[0]); - break; - case CAIRO_PATH_OP_LINE_TO: - status = (*line_to) (closure, &points[0]); - break; - case CAIRO_PATH_OP_CURVE_TO: - status = (*curve_to) (closure, &points[0], &points[1], &points[2]); - break; - case CAIRO_PATH_OP_CLOSE_PATH: - default: - status = (*close_path) (closure); - break; - } - if (status) - return status; - - if (forward) { - points += num_args[(int) op]; - } - - } - } - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_path_fixed_offset_and_scale (cairo_path_fixed_t *path, - cairo_fixed_t offx, - cairo_fixed_t offy, - cairo_fixed_t scalex, - cairo_fixed_t scaley) -{ - cairo_path_buf_t *buf = &path->buf_head.base; - int i; - - while (buf) { - for (i = 0; i < buf->num_points; i++) { - if (scalex != CAIRO_FIXED_ONE) - buf->points[i].x = _cairo_fixed_mul (buf->points[i].x, scalex); - buf->points[i].x += offx; - - if (scaley != CAIRO_FIXED_ONE) - buf->points[i].y = _cairo_fixed_mul (buf->points[i].y, scaley); - buf->points[i].y += offy; - } - - buf = buf->next; - } -} - - -/** - * _cairo_path_fixed_device_transform: - * @path: a #cairo_path_fixed_t to be transformed - * @device_transform: a matrix with only scaling/translation (no rotation or shear) - * - * Transform the fixed-point path according to the scaling and - * translation of the given matrix. This function assert()s that the - * given matrix has no rotation or shear elements, (that is, xy and yx - * are 0.0). - **/ -void -_cairo_path_fixed_device_transform (cairo_path_fixed_t *path, - cairo_matrix_t *device_transform) -{ - assert (device_transform->yx == 0.0 && device_transform->xy == 0.0); - /* XXX: Support freeform matrices someday (right now, only translation and scale - * work. */ - _cairo_path_fixed_offset_and_scale (path, - _cairo_fixed_from_double (device_transform->x0), - _cairo_fixed_from_double (device_transform->y0), - _cairo_fixed_from_double (device_transform->xx), - _cairo_fixed_from_double (device_transform->yy)); -} - -cairo_bool_t -_cairo_path_fixed_is_equal (cairo_path_fixed_t *path, - cairo_path_fixed_t *other) -{ - cairo_path_buf_t *path_buf, *other_buf; - - if (path->current_point.x != other->current_point.x || - path->current_point.y != other->current_point.y || - path->has_current_point != other->has_current_point || - path->has_curve_to != other->has_curve_to || - path->last_move_point.x != other->last_move_point.x || - path->last_move_point.y != other->last_move_point.y) - return FALSE; - - other_buf = &other->buf_head.base; - for (path_buf = &path->buf_head.base; - path_buf != NULL; - path_buf = path_buf->next) - { - if (other_buf == NULL || - path_buf->num_ops != other_buf->num_ops || - path_buf->num_points != other_buf->num_points || - memcmp (path_buf->op, other_buf->op, - sizeof (cairo_path_op_t) * path_buf->num_ops) != 0 || - memcmp (path_buf->points, other_buf->points, - sizeof (cairo_point_t) * path_buf->num_points) != 0) - { - return FALSE; - } - other_buf = other_buf->next; - } - return TRUE; -} - -/* Closure for path flattening */ -typedef struct cairo_path_flattener { - double tolerance; - cairo_point_t current_point; - cairo_path_fixed_move_to_func_t *move_to; - cairo_path_fixed_line_to_func_t *line_to; - cairo_path_fixed_close_path_func_t *close_path; - void *closure; -} cpf_t; - -static cairo_status_t -_cpf_move_to (void *closure, cairo_point_t *point) -{ - cpf_t *cpf = closure; - - cpf->current_point = *point; - - return cpf->move_to (cpf->closure, point); -} - -static cairo_status_t -_cpf_line_to (void *closure, cairo_point_t *point) -{ - cpf_t *cpf = closure; - - cpf->current_point = *point; - - return cpf->line_to (cpf->closure, point); -} - -static cairo_status_t -_cpf_curve_to (void *closure, - cairo_point_t *p1, - cairo_point_t *p2, - cairo_point_t *p3) -{ - cpf_t *cpf = closure; - cairo_status_t status; - cairo_spline_t spline; - int i; - - cairo_point_t *p0 = &cpf->current_point; - - status = _cairo_spline_init (&spline, p0, p1, p2, p3); - if (status == CAIRO_INT_STATUS_DEGENERATE) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_spline_decompose (&spline, cpf->tolerance); - if (status) - goto out; - - for (i=1; i < spline.num_points; i++) { - status = cpf->line_to (cpf->closure, &spline.points[i]); - if (status) - goto out; - } - - cpf->current_point = *p3; - - status = CAIRO_STATUS_SUCCESS; - - out: - _cairo_spline_fini (&spline); - return status; -} - -static cairo_status_t -_cpf_close_path (void *closure) -{ - cpf_t *cpf = closure; - - return cpf->close_path (cpf->closure); -} - - -cairo_status_t -_cairo_path_fixed_interpret_flat (cairo_path_fixed_t *path, - cairo_direction_t dir, - cairo_path_fixed_move_to_func_t *move_to, - cairo_path_fixed_line_to_func_t *line_to, - cairo_path_fixed_close_path_func_t *close_path, - void *closure, - double tolerance) -{ - cpf_t flattener; - - flattener.tolerance = tolerance; - flattener.move_to = move_to; - flattener.line_to = line_to; - flattener.close_path = close_path; - flattener.closure = closure; - return _cairo_path_fixed_interpret (path, dir, - _cpf_move_to, - _cpf_line_to, - _cpf_curve_to, - _cpf_close_path, - &flattener); -} - -cairo_bool_t -_cairo_path_fixed_is_empty (cairo_path_fixed_t *path) -{ - if (path->buf_head.base.num_ops == 0) - return TRUE; - - return FALSE; -} - -/** - * Check whether the given path contains a single rectangle. - */ -cairo_bool_t -_cairo_path_fixed_is_box (cairo_path_fixed_t *path, - cairo_box_t *box) -{ - cairo_path_buf_t *buf = &path->buf_head.base; - - /* We can't have more than one buf for this check */ - if (buf->next != NULL) - return FALSE; - - /* Do we have the right number of ops? */ - if (buf->num_ops != 5 && buf->num_ops != 6) - return FALSE; - - /* Check whether the ops are those that would be used for a rectangle */ - if (buf->op[0] != CAIRO_PATH_OP_MOVE_TO || - buf->op[1] != CAIRO_PATH_OP_LINE_TO || - buf->op[2] != CAIRO_PATH_OP_LINE_TO || - buf->op[3] != CAIRO_PATH_OP_LINE_TO) - { - return FALSE; - } - - /* Now, there are choices. The rectangle might end with a LINE_TO - * (to the original point), but this isn't required. If it - * doesn't, then it must end with a CLOSE_PATH. */ - if (buf->op[4] == CAIRO_PATH_OP_LINE_TO) { - if (buf->points[4].x != buf->points[0].x || - buf->points[4].y != buf->points[0].y) - return FALSE; - } else if (buf->op[4] != CAIRO_PATH_OP_CLOSE_PATH) { - return FALSE; - } - - if (buf->num_ops == 6) { - /* A trailing CLOSE_PATH or MOVE_TO is ok */ - if (buf->op[5] != CAIRO_PATH_OP_MOVE_TO && - buf->op[5] != CAIRO_PATH_OP_CLOSE_PATH) - return FALSE; - } - - /* Ok, we may have a box, if the points line up */ - if (buf->points[0].y == buf->points[1].y && - buf->points[1].x == buf->points[2].x && - buf->points[2].y == buf->points[3].y && - buf->points[3].x == buf->points[0].x) - { - if (box) { - box->p1 = buf->points[0]; - box->p2 = buf->points[2]; - } - return TRUE; - } - - if (buf->points[0].x == buf->points[1].x && - buf->points[1].y == buf->points[2].y && - buf->points[2].x == buf->points[3].x && - buf->points[3].y == buf->points[0].y) - { - if (box) { - box->p1 = buf->points[0]; - box->p2 = buf->points[2]; - } - return TRUE; - } - - return FALSE; -} - -/** - * Check whether the given path contains a single rectangle - * that is logically equivalent to: - * cairo_move_to (cr, x, y); - * cairo_rel_line_to (cr, width, 0); - * cairo_rel_line_to (cr, 0, height); - * cairo_rel_line_to (cr, -width, 0); - * cairo_close_path (cr); - */ -cairo_bool_t -_cairo_path_fixed_is_rectangle (cairo_path_fixed_t *path, - cairo_box_t *box) -{ - cairo_path_buf_t *buf = &path->buf_head.base; - - if (!_cairo_path_fixed_is_box (path, box)) - return FALSE; - - if (buf->points[0].y == buf->points[1].y) - return TRUE; - - return FALSE; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path-fixed-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-fixed-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path-fixed-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-fixed-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PATH_FIXED_PRIVATE_H -#define CAIRO_PATH_FIXED_PRIVATE_H - -enum cairo_path_op { - CAIRO_PATH_OP_MOVE_TO = 0, - CAIRO_PATH_OP_LINE_TO = 1, - CAIRO_PATH_OP_CURVE_TO = 2, - CAIRO_PATH_OP_CLOSE_PATH = 3 -}; -/* we want to make sure a single byte is used for thie enum */ -typedef char cairo_path_op_t; - -/* make _cairo_path_fixed fit a 512 bytes. about 50 items */ -#define CAIRO_PATH_BUF_SIZE ((512 - 4 * sizeof (void*) - sizeof (cairo_path_buf_t)) \ - / (2 * sizeof (cairo_point_t) + sizeof (cairo_path_op_t))) - -typedef struct _cairo_path_buf { - struct _cairo_path_buf *next, *prev; - int buf_size; - int num_ops; - int num_points; - - cairo_path_op_t *op; - cairo_point_t *points; -} cairo_path_buf_t; -typedef struct _cairo_path_buf_fixed { - cairo_path_buf_t base; - - cairo_path_op_t op[CAIRO_PATH_BUF_SIZE]; - cairo_point_t points[2 * CAIRO_PATH_BUF_SIZE]; -} cairo_path_buf_fixed_t; - -struct _cairo_path_fixed { - cairo_point_t last_move_point; - cairo_point_t current_point; - unsigned int has_current_point : 1; - unsigned int has_curve_to : 1; - - cairo_path_buf_t *buf_tail; - cairo_path_buf_fixed_t buf_head; -}; - -#endif /* CAIRO_PATH_FIXED_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PATH_PRIVATE_H -#define CAIRO_PATH_PRIVATE_H - -#include "cairoint.h" - -cairo_private cairo_path_t * -_cairo_path_create (cairo_path_fixed_t *path, - cairo_gstate_t *gstate); - -cairo_private cairo_path_t * -_cairo_path_create_flat (cairo_path_fixed_t *path, - cairo_gstate_t *gstate); - -cairo_private cairo_path_t * -_cairo_path_create_in_error (cairo_status_t status); - -cairo_private cairo_status_t -_cairo_path_append_to_context (const cairo_path_t *path, - cairo_t *cr); - -#endif /* CAIRO_PATH_DATA_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-path-stroke.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-stroke.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-path-stroke.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-path-stroke.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1490 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" -#include "cairo-path-fixed-private.h" - -typedef struct cairo_stroker { - cairo_stroke_style_t *style; - - cairo_matrix_t *ctm; - cairo_matrix_t *ctm_inverse; - double tolerance; - double ctm_determinant; - cairo_bool_t ctm_det_positive; - - cairo_traps_t *traps; - - cairo_pen_t pen; - - cairo_point_t current_point; - cairo_point_t first_point; - - cairo_bool_t has_initial_sub_path; - - cairo_bool_t has_current_face; - cairo_stroke_face_t current_face; - - cairo_bool_t has_first_face; - cairo_stroke_face_t first_face; - - cairo_bool_t dashed; - unsigned int dash_index; - cairo_bool_t dash_on; - cairo_bool_t dash_starts_on; - double dash_remain; - - cairo_bool_t has_bounds; - cairo_box_t bounds; -} cairo_stroker_t; - -/* private functions */ -static cairo_status_t -_cairo_stroker_init (cairo_stroker_t *stroker, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_traps_t *traps); - -static void -_cairo_stroker_fini (cairo_stroker_t *stroker); - -static cairo_status_t -_cairo_stroker_move_to (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_stroker_line_to (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_stroker_line_to_dashed (void *closure, cairo_point_t *point); - -static cairo_status_t -_cairo_stroker_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d); - -static cairo_status_t -_cairo_stroker_curve_to_dashed (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d); - -static cairo_status_t -_cairo_stroker_close_path (void *closure); - -static void -_translate_point (cairo_point_t *point, cairo_point_t *offset); - -static int -_cairo_stroker_face_clockwise (cairo_stroke_face_t *in, cairo_stroke_face_t *out); - -static cairo_status_t -_cairo_stroker_join (cairo_stroker_t *stroker, cairo_stroke_face_t *in, cairo_stroke_face_t *out); - -static void -_cairo_stroker_start_dash (cairo_stroker_t *stroker) -{ - double offset; - cairo_bool_t on = TRUE; - unsigned int i = 0; - - offset = stroker->style->dash_offset; - - /* We stop searching for a starting point as soon as the - offset reaches zero. Otherwise when an initial dash - segment shrinks to zero it will be skipped over. */ - while (offset > 0.0 && offset >= stroker->style->dash[i]) { - offset -= stroker->style->dash[i]; - on = !on; - if (++i == stroker->style->num_dashes) - i = 0; - } - stroker->dashed = TRUE; - stroker->dash_index = i; - stroker->dash_on = stroker->dash_starts_on = on; - stroker->dash_remain = stroker->style->dash[i] - offset; -} - -static void -_cairo_stroker_step_dash (cairo_stroker_t *stroker, double step) -{ - stroker->dash_remain -= step; - if (stroker->dash_remain <= 0) { - stroker->dash_index++; - if (stroker->dash_index == stroker->style->num_dashes) - stroker->dash_index = 0; - stroker->dash_on = !stroker->dash_on; - stroker->dash_remain = stroker->style->dash[stroker->dash_index]; - } -} - -static cairo_status_t -_cairo_stroker_init (cairo_stroker_t *stroker, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_traps_t *traps) -{ - cairo_status_t status; - stroker->style = stroke_style; - stroker->ctm = ctm; - stroker->ctm_inverse = ctm_inverse; - stroker->tolerance = tolerance; - stroker->traps = traps; - - _cairo_matrix_compute_determinant (stroker->ctm, &stroker->ctm_determinant); - if (stroker->ctm_determinant >= 0.0) - stroker->ctm_det_positive = TRUE; - else - stroker->ctm_det_positive = FALSE; - - status = _cairo_pen_init (&stroker->pen, - stroke_style->line_width / 2.0, - tolerance, ctm); - if (status) - return status; - - stroker->has_current_face = FALSE; - stroker->has_first_face = FALSE; - stroker->has_initial_sub_path = FALSE; - - if (stroker->style->dash) - _cairo_stroker_start_dash (stroker); - else - stroker->dashed = FALSE; - - stroker->has_bounds = _cairo_traps_get_limit (traps, &stroker->bounds); - if (stroker->has_bounds) { - /* Extend the bounds in each direction to account for the maximum area - * we might generate trapezoids, to capture line segments that are outside - * of the bounds but which might generate rendering that's within bounds. - */ - double dx, dy; - cairo_fixed_t fdx, fdy; - - _cairo_stroke_style_max_distance_from_path (stroker->style, stroker->ctm, &dx, &dy); - - fdx = _cairo_fixed_from_double (dx); - fdy = _cairo_fixed_from_double (dy); - - stroker->bounds.p1.x -= fdx; - stroker->bounds.p2.x += fdx; - - stroker->bounds.p1.y -= fdy; - stroker->bounds.p2.y += fdy; - } - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_stroker_fini (cairo_stroker_t *stroker) -{ - _cairo_pen_fini (&stroker->pen); -} - -static void -_translate_point (cairo_point_t *point, cairo_point_t *offset) -{ - point->x += offset->x; - point->y += offset->y; -} - -static int -_cairo_stroker_face_clockwise (cairo_stroke_face_t *in, cairo_stroke_face_t *out) -{ - cairo_slope_t in_slope, out_slope; - - _cairo_slope_init (&in_slope, &in->point, &in->cw); - _cairo_slope_init (&out_slope, &out->point, &out->cw); - - return _cairo_slope_compare (&in_slope, &out_slope) < 0; -} - -/** - * _cairo_slope_compare_sgn - * - * Return -1, 0 or 1 depending on the relative slopes of - * two lines. - */ -static int -_cairo_slope_compare_sgn (double dx1, double dy1, double dx2, double dy2) -{ - double c = (dx1 * dy2 - dx2 * dy1); - - if (c > 0) return 1; - if (c < 0) return -1; - return 0; -} - -static cairo_status_t -_cairo_stroker_join (cairo_stroker_t *stroker, cairo_stroke_face_t *in, cairo_stroke_face_t *out) -{ - int clockwise = _cairo_stroker_face_clockwise (out, in); - cairo_point_t *inpt, *outpt; - cairo_status_t status; - - if (in->cw.x == out->cw.x - && in->cw.y == out->cw.y - && in->ccw.x == out->ccw.x - && in->ccw.y == out->ccw.y) - { - return CAIRO_STATUS_SUCCESS; - } - - if (clockwise) { - inpt = &in->ccw; - outpt = &out->ccw; - } else { - inpt = &in->cw; - outpt = &out->cw; - } - - switch (stroker->style->line_join) { - case CAIRO_LINE_JOIN_ROUND: { - int i; - int start, step, stop; - cairo_point_t tri[3]; - cairo_pen_t *pen = &stroker->pen; - - tri[0] = in->point; - if (clockwise) { - _cairo_pen_find_active_ccw_vertex_index (pen, &in->dev_vector, &start); - step = -1; - _cairo_pen_find_active_ccw_vertex_index (pen, &out->dev_vector, &stop); - } else { - _cairo_pen_find_active_cw_vertex_index (pen, &in->dev_vector, &start); - step = +1; - _cairo_pen_find_active_cw_vertex_index (pen, &out->dev_vector, &stop); - } - - i = start; - tri[1] = *inpt; - while (i != stop) { - tri[2] = in->point; - _translate_point (&tri[2], &pen->vertices[i].point); - status = _cairo_traps_tessellate_triangle (stroker->traps, tri); - if (status) - return status; - tri[1] = tri[2]; - i += step; - if (i < 0) - i = pen->num_vertices - 1; - if (i >= pen->num_vertices) - i = 0; - } - - tri[2] = *outpt; - - return _cairo_traps_tessellate_triangle (stroker->traps, tri); - } - case CAIRO_LINE_JOIN_MITER: - default: { - /* dot product of incoming slope vector with outgoing slope vector */ - double in_dot_out = ((-in->usr_vector.x * out->usr_vector.x)+ - (-in->usr_vector.y * out->usr_vector.y)); - double ml = stroker->style->miter_limit; - - /* Check the miter limit -- lines meeting at an acute angle - * can generate long miters, the limit converts them to bevel - * - * Consider the miter join formed when two line segments - * meet at an angle psi: - * - * /.\ - * /. .\ - * /./ \.\ - * /./psi\.\ - * - * We can zoom in on the right half of that to see: - * - * |\ - * | \ psi/2 - * | \ - * | \ - * | \ - * | \ - * miter \ - * length \ - * | \ - * | .\ - * | . \ - * |. line \ - * \ width \ - * \ \ - * - * - * The right triangle in that figure, (the line-width side is - * shown faintly with three '.' characters), gives us the - * following expression relating miter length, angle and line - * width: - * - * 1 /sin (psi/2) = miter_length / line_width - * - * The right-hand side of this relationship is the same ratio - * in which the miter limit (ml) is expressed. We want to know - * when the miter length is within the miter limit. That is - * when the following condition holds: - * - * 1/sin(psi/2) <= ml - * 1 <= ml sin(psi/2) - * 1 <= ml² sin²(psi/2) - * 2 <= ml² 2 sin²(psi/2) - * 2·sin²(psi/2) = 1-cos(psi) - * 2 <= ml² (1-cos(psi)) - * - * in · out = |in| |out| cos (psi) - * - * in and out are both unit vectors, so: - * - * in · out = cos (psi) - * - * 2 <= ml² (1 - in · out) - * - */ - if (2 <= ml * ml * (1 - in_dot_out)) - { - double x1, y1, x2, y2; - double mx, my; - double dx1, dx2, dy1, dy2; - cairo_point_t outer; - cairo_point_t quad[4]; - double ix, iy; - double fdx1, fdy1, fdx2, fdy2; - double mdx, mdy; - - /* - * we've got the points already transformed to device - * space, but need to do some computation with them and - * also need to transform the slope from user space to - * device space - */ - /* outer point of incoming line face */ - x1 = _cairo_fixed_to_double (inpt->x); - y1 = _cairo_fixed_to_double (inpt->y); - dx1 = in->usr_vector.x; - dy1 = in->usr_vector.y; - cairo_matrix_transform_distance (stroker->ctm, &dx1, &dy1); - - /* outer point of outgoing line face */ - x2 = _cairo_fixed_to_double (outpt->x); - y2 = _cairo_fixed_to_double (outpt->y); - dx2 = out->usr_vector.x; - dy2 = out->usr_vector.y; - cairo_matrix_transform_distance (stroker->ctm, &dx2, &dy2); - - /* - * Compute the location of the outer corner of the miter. - * That's pretty easy -- just the intersection of the two - * outer edges. We've got slopes and points on each - * of those edges. Compute my directly, then compute - * mx by using the edge with the larger dy; that avoids - * dividing by values close to zero. - */ - my = (((x2 - x1) * dy1 * dy2 - y2 * dx2 * dy1 + y1 * dx1 * dy2) / - (dx1 * dy2 - dx2 * dy1)); - if (fabs (dy1) >= fabs (dy2)) - mx = (my - y1) * dx1 / dy1 + x1; - else - mx = (my - y2) * dx2 / dy2 + x2; - - /* - * When the two outer edges are nearly parallel, slight - * perturbations in the position of the outer points of the lines - * caused by representing them in fixed point form can cause the - * intersection point of the miter to move a large amount. If - * that moves the miter intersection from between the two faces, - * then draw a bevel instead. - */ - - ix = _cairo_fixed_to_double (in->point.x); - iy = _cairo_fixed_to_double (in->point.y); - - /* slope of one face */ - fdx1 = x1 - ix; fdy1 = y1 - iy; - - /* slope of the other face */ - fdx2 = x2 - ix; fdy2 = y2 - iy; - - /* slope from the intersection to the miter point */ - mdx = mx - ix; mdy = my - iy; - - /* - * Make sure the miter point line lies between the two - * faces by comparing the slopes - */ - if (_cairo_slope_compare_sgn (fdx1, fdy1, mdx, mdy) != - _cairo_slope_compare_sgn (fdx2, fdy2, mdx, mdy)) - { - /* - * Draw the quadrilateral - */ - outer.x = _cairo_fixed_from_double (mx); - outer.y = _cairo_fixed_from_double (my); - - quad[0] = in->point; - quad[1] = *inpt; - quad[2] = outer; - quad[3] = *outpt; - - return _cairo_traps_tessellate_convex_quad (stroker->traps, quad); - } - } - /* fall through ... */ - } - case CAIRO_LINE_JOIN_BEVEL: { - cairo_point_t tri[3]; - tri[0] = in->point; - tri[1] = *inpt; - tri[2] = *outpt; - - return _cairo_traps_tessellate_triangle (stroker->traps, tri); - } - } -} - -static cairo_status_t -_cairo_stroker_add_cap (cairo_stroker_t *stroker, cairo_stroke_face_t *f) -{ - cairo_status_t status; - - if (stroker->style->line_cap == CAIRO_LINE_CAP_BUTT) - return CAIRO_STATUS_SUCCESS; - - switch (stroker->style->line_cap) { - case CAIRO_LINE_CAP_ROUND: { - int i; - int start, stop; - cairo_slope_t slope; - cairo_point_t tri[3]; - cairo_pen_t *pen = &stroker->pen; - - slope = f->dev_vector; - _cairo_pen_find_active_cw_vertex_index (pen, &slope, &start); - slope.dx = -slope.dx; - slope.dy = -slope.dy; - _cairo_pen_find_active_cw_vertex_index (pen, &slope, &stop); - - tri[0] = f->point; - tri[1] = f->cw; - for (i=start; i != stop; i = (i+1) % pen->num_vertices) { - tri[2] = f->point; - _translate_point (&tri[2], &pen->vertices[i].point); - status = _cairo_traps_tessellate_triangle (stroker->traps, tri); - if (status) - return status; - tri[1] = tri[2]; - } - tri[2] = f->ccw; - - return _cairo_traps_tessellate_triangle (stroker->traps, tri); - } - case CAIRO_LINE_CAP_SQUARE: { - double dx, dy; - cairo_slope_t fvector; - cairo_point_t occw, ocw; - cairo_polygon_t polygon; - - dx = f->usr_vector.x; - dy = f->usr_vector.y; - dx *= stroker->style->line_width / 2.0; - dy *= stroker->style->line_width / 2.0; - cairo_matrix_transform_distance (stroker->ctm, &dx, &dy); - fvector.dx = _cairo_fixed_from_double (dx); - fvector.dy = _cairo_fixed_from_double (dy); - occw.x = f->ccw.x + fvector.dx; - occw.y = f->ccw.y + fvector.dy; - ocw.x = f->cw.x + fvector.dx; - ocw.y = f->cw.y + fvector.dy; - - _cairo_polygon_init (&polygon); - _cairo_polygon_move_to (&polygon, &f->cw); - _cairo_polygon_line_to (&polygon, &ocw); - _cairo_polygon_line_to (&polygon, &occw); - _cairo_polygon_line_to (&polygon, &f->ccw); - _cairo_polygon_close (&polygon); - status = _cairo_polygon_status (&polygon); - - if (status == CAIRO_STATUS_SUCCESS) { - status = _cairo_bentley_ottmann_tessellate_polygon (stroker->traps, - &polygon, - CAIRO_FILL_RULE_WINDING); - } - - _cairo_polygon_fini (&polygon); - - return status; - } - case CAIRO_LINE_CAP_BUTT: - default: - return CAIRO_STATUS_SUCCESS; - } -} - -static cairo_status_t -_cairo_stroker_add_leading_cap (cairo_stroker_t *stroker, - cairo_stroke_face_t *face) -{ - cairo_stroke_face_t reversed; - cairo_point_t t; - - reversed = *face; - - /* The initial cap needs an outward facing vector. Reverse everything */ - reversed.usr_vector.x = -reversed.usr_vector.x; - reversed.usr_vector.y = -reversed.usr_vector.y; - reversed.dev_vector.dx = -reversed.dev_vector.dx; - reversed.dev_vector.dy = -reversed.dev_vector.dy; - t = reversed.cw; - reversed.cw = reversed.ccw; - reversed.ccw = t; - - return _cairo_stroker_add_cap (stroker, &reversed); -} - -static cairo_status_t -_cairo_stroker_add_trailing_cap (cairo_stroker_t *stroker, - cairo_stroke_face_t *face) -{ - return _cairo_stroker_add_cap (stroker, face); -} - -static inline cairo_bool_t -_compute_normalized_device_slope (double *dx, double *dy, cairo_matrix_t *ctm_inverse, double *mag_out) -{ - double dx0 = *dx, dy0 = *dy; - double mag; - - cairo_matrix_transform_distance (ctm_inverse, &dx0, &dy0); - - if (dx0 == 0.0 && dy0 == 0.0) { - if (mag_out) - *mag_out = 0.0; - return FALSE; - } - - if (dx0 == 0.0) { - *dx = 0.0; - if (dy0 > 0.0) { - mag = dy0; - *dy = 1.0; - } else { - mag = -dy0; - *dy = -1.0; - } - } else if (dy0 == 0.0) { - *dy = 0.0; - if (dx0 > 0.0) { - mag = dx0; - *dx = 1.0; - } else { - mag = -dx0; - *dx = -1.0; - } - } else { - mag = sqrt (dx0 * dx0 + dy0 * dy0); - *dx = dx0 / mag; - *dy = dy0 / mag; - } - - if (mag_out) - *mag_out = mag; - - return TRUE; -} - -static void -_compute_face (cairo_point_t *point, cairo_slope_t *dev_slope, - double slope_dx, double slope_dy, - cairo_stroker_t *stroker, cairo_stroke_face_t *face); - -static cairo_status_t -_cairo_stroker_add_caps (cairo_stroker_t *stroker) -{ - cairo_status_t status; - /* check for a degenerative sub_path */ - if (stroker->has_initial_sub_path - && !stroker->has_first_face - && !stroker->has_current_face - && stroker->style->line_cap == CAIRO_LINE_JOIN_ROUND) - { - /* pick an arbitrary slope to use */ - double dx = 1.0, dy = 0.0; - cairo_slope_t slope = { CAIRO_FIXED_ONE, 0 }; - cairo_stroke_face_t face; - - _compute_normalized_device_slope (&dx, &dy, stroker->ctm_inverse, NULL); - - /* arbitrarily choose first_point - * first_point and current_point should be the same */ - _compute_face (&stroker->first_point, &slope, dx, dy, stroker, &face); - - status = _cairo_stroker_add_leading_cap (stroker, &face); - if (status) - return status; - status = _cairo_stroker_add_trailing_cap (stroker, &face); - if (status) - return status; - } - - if (stroker->has_first_face) { - status = _cairo_stroker_add_leading_cap (stroker, &stroker->first_face); - if (status) - return status; - } - - if (stroker->has_current_face) { - status = _cairo_stroker_add_trailing_cap (stroker, &stroker->current_face); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static void -_compute_face (cairo_point_t *point, cairo_slope_t *dev_slope, - double slope_dx, double slope_dy, - cairo_stroker_t *stroker, cairo_stroke_face_t *face) -{ - double face_dx, face_dy; - cairo_point_t offset_ccw, offset_cw; - - /* - * rotate to get a line_width/2 vector along the face, note that - * the vector must be rotated the right direction in device space, - * but by 90° in user space. So, the rotation depends on - * whether the ctm reflects or not, and that can be determined - * by looking at the determinant of the matrix. - */ - if (stroker->ctm_det_positive) - { - face_dx = - slope_dy * (stroker->style->line_width / 2.0); - face_dy = slope_dx * (stroker->style->line_width / 2.0); - } - else - { - face_dx = slope_dy * (stroker->style->line_width / 2.0); - face_dy = - slope_dx * (stroker->style->line_width / 2.0); - } - - /* back to device space */ - cairo_matrix_transform_distance (stroker->ctm, &face_dx, &face_dy); - - offset_ccw.x = _cairo_fixed_from_double (face_dx); - offset_ccw.y = _cairo_fixed_from_double (face_dy); - offset_cw.x = -offset_ccw.x; - offset_cw.y = -offset_ccw.y; - - face->ccw = *point; - _translate_point (&face->ccw, &offset_ccw); - - face->point = *point; - - face->cw = *point; - _translate_point (&face->cw, &offset_cw); - - face->usr_vector.x = slope_dx; - face->usr_vector.y = slope_dy; - - face->dev_vector = *dev_slope; -} - -static cairo_status_t -_cairo_stroker_add_sub_edge (cairo_stroker_t *stroker, cairo_point_t *p1, cairo_point_t *p2, - cairo_slope_t *dev_slope, double slope_dx, double slope_dy, - cairo_stroke_face_t *start, cairo_stroke_face_t *end) -{ - cairo_point_t rectangle[4]; - - _compute_face (p1, dev_slope, slope_dx, slope_dy, stroker, start); - - /* XXX: This could be optimized slightly by not calling - _compute_face again but rather translating the relevant - fields from start. */ - _compute_face (p2, dev_slope, slope_dx, slope_dy, stroker, end); - - if (p1->x == p2->x && p1->y == p2->y) - return CAIRO_STATUS_SUCCESS; - - rectangle[0] = start->cw; - rectangle[1] = start->ccw; - rectangle[2] = end->ccw; - rectangle[3] = end->cw; - - return _cairo_traps_tessellate_convex_quad (stroker->traps, rectangle); -} - -static cairo_status_t -_cairo_stroker_move_to (void *closure, cairo_point_t *point) -{ - cairo_status_t status; - cairo_stroker_t *stroker = closure; - - /* Cap the start and end of the previous sub path as needed */ - status = _cairo_stroker_add_caps (stroker); - if (status) - return status; - - stroker->first_point = *point; - stroker->current_point = *point; - - stroker->has_first_face = FALSE; - stroker->has_current_face = FALSE; - stroker->has_initial_sub_path = FALSE; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_stroker_move_to_dashed (void *closure, cairo_point_t *point) -{ - /* reset the dash pattern for new sub paths */ - cairo_stroker_t *stroker = closure; - _cairo_stroker_start_dash (stroker); - - return _cairo_stroker_move_to (closure, point); -} - -static cairo_status_t -_cairo_stroker_line_to (void *closure, cairo_point_t *point) -{ - cairo_status_t status; - cairo_stroker_t *stroker = closure; - cairo_stroke_face_t start, end; - cairo_point_t *p1 = &stroker->current_point; - cairo_point_t *p2 = point; - cairo_slope_t dev_slope; - double slope_dx, slope_dy; - - stroker->has_initial_sub_path = TRUE; - - if (p1->x == p2->x && p1->y == p2->y) - return CAIRO_STATUS_SUCCESS; - - _cairo_slope_init (&dev_slope, p1, p2); - slope_dx = _cairo_fixed_to_double (p2->x - p1->x); - slope_dy = _cairo_fixed_to_double (p2->y - p1->y); - _compute_normalized_device_slope (&slope_dx, &slope_dy, stroker->ctm_inverse, NULL); - - status = _cairo_stroker_add_sub_edge (stroker, p1, p2, &dev_slope, slope_dx, slope_dy, &start, &end); - if (status) - return status; - - if (stroker->has_current_face) { - /* Join with final face from previous segment */ - status = _cairo_stroker_join (stroker, &stroker->current_face, &start); - if (status) - return status; - } else if (!stroker->has_first_face) { - /* Save sub path's first face in case needed for closing join */ - stroker->first_face = start; - stroker->has_first_face = TRUE; - } - stroker->current_face = end; - stroker->has_current_face = TRUE; - - stroker->current_point = *point; - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Dashed lines. Cap each dash end, join around turns when on - */ -static cairo_status_t -_cairo_stroker_line_to_dashed (void *closure, cairo_point_t *point) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_stroker_t *stroker = closure; - double mag, remain, step_length = 0; - double slope_dx, slope_dy; - double dx2, dy2; - cairo_stroke_face_t sub_start, sub_end; - cairo_point_t *p1 = &stroker->current_point; - cairo_point_t *p2 = point; - cairo_slope_t dev_slope; - cairo_bool_t fully_in_bounds = TRUE; - cairo_line_t segment; - - stroker->has_initial_sub_path = stroker->dash_starts_on; - - if (p1->x == p2->x && p1->y == p2->y) - return CAIRO_STATUS_SUCCESS; - - if (stroker->has_bounds && - (!_cairo_box_contains_point (&stroker->bounds, p1) || - !_cairo_box_contains_point (&stroker->bounds, p2))) - { - fully_in_bounds = FALSE; - } - - _cairo_slope_init (&dev_slope, p1, p2); - - slope_dx = _cairo_fixed_to_double (p2->x - p1->x); - slope_dy = _cairo_fixed_to_double (p2->y - p1->y); - - if (!_compute_normalized_device_slope (&slope_dx, &slope_dy, stroker->ctm_inverse, &mag)) - return CAIRO_STATUS_SUCCESS; - - remain = mag; - segment.p1 = *p1; - while (remain) { - step_length = MIN (stroker->dash_remain, remain); - remain -= step_length; - dx2 = slope_dx * (mag - remain); - dy2 = slope_dy * (mag - remain); - cairo_matrix_transform_distance (stroker->ctm, &dx2, &dy2); - segment.p2.x = _cairo_fixed_from_double (dx2) + p1->x; - segment.p2.y = _cairo_fixed_from_double (dy2) + p1->y; - - if (fully_in_bounds || - _cairo_box_intersects_line_segment (&stroker->bounds, &segment)) - { - if (stroker->dash_on) { - status = _cairo_stroker_add_sub_edge (stroker, &segment.p1, &segment.p2, &dev_slope, slope_dx, slope_dy, &sub_start, &sub_end); - if (status) - return status; - - if (stroker->has_current_face) { - /* Join with final face from previous segment */ - status = _cairo_stroker_join (stroker, &stroker->current_face, &sub_start); - stroker->has_current_face = FALSE; - if (status) - return status; - } else if (!stroker->has_first_face && stroker->dash_starts_on) { - /* Save sub path's first face in case needed for closing join */ - stroker->first_face = sub_start; - stroker->has_first_face = TRUE; - } else { - /* Cap dash start if not connecting to a previous segment */ - status = _cairo_stroker_add_leading_cap (stroker, &sub_start); - if (status) - return status; - } - - if (remain) { - /* Cap dash end if not at end of segment */ - status = _cairo_stroker_add_trailing_cap (stroker, &sub_end); - if (status) - return status; - } else { - stroker->current_face = sub_end; - stroker->has_current_face = TRUE; - } - } else { - if (stroker->has_current_face) { - /* Cap final face from previous segment */ - status = _cairo_stroker_add_trailing_cap (stroker, &stroker->current_face); - if (status) - return status; - stroker->has_current_face = FALSE; - } - } - } - - _cairo_stroker_step_dash (stroker, step_length); - segment.p1 = segment.p2; - } - - if (stroker->dash_on && !stroker->has_current_face) { - /* This segment ends on a transition to dash_on, compute a new face - * and add cap for the begining of the next dash_on step. - * - * Note: this will create a degenerate cap if this is not the last line - * in the path. Whether this behaviour is desirable or not is debatable. - * On one side these degnerate caps can not be reproduced with regular path stroking. - * On the other side Acroread 7 also produces the degenerate caps. */ - _compute_face (point, &dev_slope, slope_dx, slope_dy, stroker, &stroker->current_face); - stroker->has_current_face = TRUE; - status = _cairo_stroker_add_leading_cap (stroker, &stroker->current_face); - if (status) - return status; - } - - stroker->current_point = *point; - - return status; -} - -static cairo_status_t -_cairo_stroker_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_stroker_t *stroker = closure; - cairo_spline_t spline; - cairo_pen_t pen; - cairo_stroke_face_t start, end; - cairo_point_t extra_points[4]; - cairo_point_t *a = &stroker->current_point; - double initial_slope_dx, initial_slope_dy; - double final_slope_dx, final_slope_dy; - - status = _cairo_spline_init (&spline, a, b, c, d); - if (status == CAIRO_INT_STATUS_DEGENERATE) - return _cairo_stroker_line_to (closure, d); - - status = _cairo_pen_init_copy (&pen, &stroker->pen); - if (status) - goto CLEANUP_SPLINE; - - initial_slope_dx = _cairo_fixed_to_double (spline.initial_slope.dx); - initial_slope_dy = _cairo_fixed_to_double (spline.initial_slope.dy); - final_slope_dx = _cairo_fixed_to_double (spline.final_slope.dx); - final_slope_dy = _cairo_fixed_to_double (spline.final_slope.dy); - - if (_compute_normalized_device_slope (&initial_slope_dx, &initial_slope_dy, stroker->ctm_inverse, NULL)) - _compute_face (a, &spline.initial_slope, initial_slope_dx, initial_slope_dy, stroker, &start); - - if (_compute_normalized_device_slope (&final_slope_dx, &final_slope_dy, stroker->ctm_inverse, NULL)) - _compute_face (d, &spline.final_slope, final_slope_dx, final_slope_dy, stroker, &end); - - if (stroker->has_current_face) { - status = _cairo_stroker_join (stroker, &stroker->current_face, &start); - if (status) - goto CLEANUP_PEN; - } else if (!stroker->has_first_face) { - stroker->first_face = start; - stroker->has_first_face = TRUE; - } - stroker->current_face = end; - stroker->has_current_face = TRUE; - - extra_points[0] = start.cw; - extra_points[0].x -= start.point.x; - extra_points[0].y -= start.point.y; - extra_points[1] = start.ccw; - extra_points[1].x -= start.point.x; - extra_points[1].y -= start.point.y; - extra_points[2] = end.cw; - extra_points[2].x -= end.point.x; - extra_points[2].y -= end.point.y; - extra_points[3] = end.ccw; - extra_points[3].x -= end.point.x; - extra_points[3].y -= end.point.y; - - status = _cairo_pen_add_points (&pen, extra_points, 4); - if (status) - goto CLEANUP_PEN; - - status = _cairo_pen_stroke_spline (&pen, &spline, stroker->tolerance, stroker->traps); - if (status) - goto CLEANUP_PEN; - - CLEANUP_PEN: - _cairo_pen_fini (&pen); - CLEANUP_SPLINE: - _cairo_spline_fini (&spline); - - stroker->current_point = *d; - - return status; -} - -/* We're using two different algorithms here for dashed and un-dashed - * splines. The dashed algorithm uses the existing line dashing - * code. It's linear in path length, but gets subtly wrong results for - * self-intersecting paths (an outstanding but for self-intersecting - * non-curved paths as well). The non-dashed algorithm tessellates a - * single polygon for the whole curve. It handles the - * self-intersecting problem, but it's (unsurprisingly) not O(n) and - * more significantly, it doesn't yet handle dashes. - * - * The only reason we're doing split algorithms here is to - * minimize the impact of fixing the splines-aren't-dashed bug for - * 1.0.2. Long-term the right answer is to rewrite the whole pile - * of stroking code so that the entire result is computed as a - * single polygon that is tessellated, (that is, stroking can be - * built on top of filling). That will solve the self-intersecting - * problem. It will also increase the importance of implementing - * an efficient and more robust tessellator. - */ -static cairo_status_t -_cairo_stroker_curve_to_dashed (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_stroker_t *stroker = closure; - cairo_spline_t spline; - cairo_point_t *a = &stroker->current_point; - cairo_line_join_t line_join_save; - int i; - - status = _cairo_spline_init (&spline, a, b, c, d); - if (status == CAIRO_INT_STATUS_DEGENERATE) - return _cairo_stroker_line_to_dashed (closure, d); - - /* If the line width is so small that the pen is reduced to a - single point, then we have nothing to do. */ - if (stroker->pen.num_vertices <= 1) - goto CLEANUP_SPLINE; - - /* Temporarily modify the stroker to use round joins to guarantee - * smooth stroked curves. */ - line_join_save = stroker->style->line_join; - stroker->style->line_join = CAIRO_LINE_JOIN_ROUND; - - status = _cairo_spline_decompose (&spline, stroker->tolerance); - if (status) - goto CLEANUP_GSTATE; - - for (i = 1; i < spline.num_points; i++) { - if (stroker->dashed) - status = _cairo_stroker_line_to_dashed (stroker, &spline.points[i]); - else - status = _cairo_stroker_line_to (stroker, &spline.points[i]); - if (status) - break; - } - - CLEANUP_GSTATE: - stroker->style->line_join = line_join_save; - - CLEANUP_SPLINE: - _cairo_spline_fini (&spline); - - return status; -} - -static cairo_status_t -_cairo_stroker_close_path (void *closure) -{ - cairo_status_t status; - cairo_stroker_t *stroker = closure; - - if (stroker->dashed) - status = _cairo_stroker_line_to_dashed (stroker, &stroker->first_point); - else - status = _cairo_stroker_line_to (stroker, &stroker->first_point); - if (status) - return status; - - if (stroker->has_first_face && stroker->has_current_face) { - /* Join first and final faces of sub path */ - status = _cairo_stroker_join (stroker, &stroker->current_face, &stroker->first_face); - if (status) - return status; - } else { - /* Cap the start and end of the sub path as needed */ - status = _cairo_stroker_add_caps (stroker); - if (status) - return status; - } - - stroker->has_initial_sub_path = FALSE; - stroker->has_first_face = FALSE; - stroker->has_current_face = FALSE; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_path_fixed_stroke_rectilinear (cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_traps_t *traps); - -cairo_status_t -_cairo_path_fixed_stroke_to_traps (cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_traps_t *traps) -{ - cairo_status_t status; - cairo_stroker_t stroker; - - /* Before we do anything else, we attempt the rectilinear - * stroker. It's careful to generate trapezoids that align to - * device-pixel boundaries when possible. Many backends can render - * those much faster than non-aligned trapezoids, (by using clip - * regions, etc.) */ - status = _cairo_path_fixed_stroke_rectilinear (path, - stroke_style, - ctm, - traps); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - status = _cairo_stroker_init (&stroker, stroke_style, - ctm, ctm_inverse, tolerance, - traps); - if (status) - return status; - - if (stroker.style->dash) - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_stroker_move_to_dashed, - _cairo_stroker_line_to_dashed, - _cairo_stroker_curve_to_dashed, - _cairo_stroker_close_path, - &stroker); - else - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_stroker_move_to, - _cairo_stroker_line_to, - _cairo_stroker_curve_to, - _cairo_stroker_close_path, - &stroker); - if (status) - goto BAIL; - - /* Cap the start and end of the final sub path as needed */ - status = _cairo_stroker_add_caps (&stroker); - -BAIL: - _cairo_stroker_fini (&stroker); - - return status; -} - -typedef struct _cairo_rectilinear_stroker -{ - cairo_stroke_style_t *stroke_style; - cairo_fixed_t half_line_width; - cairo_traps_t *traps; - cairo_point_t current_point; - cairo_point_t first_point; - cairo_bool_t open_sub_path; - cairo_line_t *segments; - int segments_size; - int num_segments; -} cairo_rectilinear_stroker_t; - -static void -_cairo_rectilinear_stroker_init (cairo_rectilinear_stroker_t *stroker, - cairo_stroke_style_t *stroke_style, - cairo_traps_t *traps) -{ - stroker->stroke_style = stroke_style; - stroker->half_line_width = - _cairo_fixed_from_double (stroke_style->line_width / 2.0); - stroker->traps = traps; - stroker->open_sub_path = FALSE; - stroker->segments = NULL; - stroker->segments_size = 0; - stroker->num_segments = 0; -} - -static void -_cairo_rectilinear_stroker_fini (cairo_rectilinear_stroker_t *stroker) -{ - free (stroker->segments); -} - -static cairo_status_t -_cairo_rectilinear_stroker_add_segment (cairo_rectilinear_stroker_t *stroker, - cairo_point_t *p1, - cairo_point_t *p2) -{ - int new_size; - cairo_line_t *new_segments; - - if (stroker->num_segments == stroker->segments_size) { - new_size = stroker->segments_size * 2; - /* Common case is one rectangle of exactly 4 segments. */ - if (new_size == 0) - new_size = 4; - new_segments = _cairo_realloc_ab (stroker->segments, - new_size, sizeof (cairo_line_t)); - if (new_segments == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - stroker->segments_size = new_size; - stroker->segments = new_segments; - } - - stroker->segments[stroker->num_segments].p1 = *p1; - stroker->segments[stroker->num_segments].p2 = *p2; - stroker->num_segments++; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_rectilinear_stroker_emit_segments (cairo_rectilinear_stroker_t *stroker) -{ - cairo_status_t status; - cairo_line_cap_t line_cap = stroker->stroke_style->line_cap; - cairo_fixed_t half_line_width = stroker->half_line_width; - cairo_bool_t lengthen_initial, shorten_final, lengthen_final; - cairo_point_t *a, *b; - cairo_point_t r[4]; - int i; - - for (i = 0; i < stroker->num_segments; i++) { - a = &stroker->segments[i].p1; - b = &stroker->segments[i].p2; - - /* For each segment we generate a single rectangular - * trapezoid. This rectangle is based on a perpendicular - * extension (by half the line width) of the segment endpoints - * after some adjustments of the endpoints to account for caps - * and joins. - */ - - /* We adjust the initial point of the segment to extend the - * rectangle to include the previous cap or join, (this - * adjustment applies to all segments except for the first - * segment of open, butt-capped paths). - */ - lengthen_initial = TRUE; - if (i == 0 && stroker->open_sub_path && line_cap == CAIRO_LINE_CAP_BUTT) - lengthen_initial = FALSE; - - /* The adjustment of the final point is trickier. For all but - * the last segment we shorten the segment at the final - * endpoint to not overlap with the subsequent join. For the - * last segment we do the same shortening if the path is - * closed. If the path is open and butt-capped we do no - * adjustment, while if it's open and square-capped we do a - * lengthening adjustment instead to include the cap. - */ - shorten_final = TRUE; - lengthen_final = FALSE; - if (i == stroker->num_segments - 1 && stroker->open_sub_path) { - shorten_final = FALSE; - if (line_cap == CAIRO_LINE_CAP_SQUARE) - lengthen_final = TRUE; - } - - /* Perform the adjustments of the endpoints. */ - if (a->y == b->y) { - if (a->x < b->x) { - if (lengthen_initial) - a->x -= half_line_width; - if (shorten_final) - b->x -= half_line_width; - else if (lengthen_final) - b->x += half_line_width; - } else { - if (lengthen_initial) - a->x += half_line_width; - if (shorten_final) - b->x += half_line_width; - else if (lengthen_final) - b->x -= half_line_width; - } - } else { - if (a->y < b->y) { - if (lengthen_initial) - a->y -= half_line_width; - if (shorten_final) - b->y -= half_line_width; - else if (lengthen_final) - b->y += half_line_width; - } else { - if (lengthen_initial) - a->y += half_line_width; - if (shorten_final) - b->y += half_line_width; - else if (lengthen_final) - b->y -= half_line_width; - } - } - - /* Form the rectangle by expanding by half the line width in - * either perdendicular direction. */ - r[0] = *a; - r[1] = *b; - r[2] = *b; - r[3] = *a; - if (a->y == b->y) { - r[0].y -= half_line_width; - r[1].y -= half_line_width; - r[2].y += half_line_width; - r[3].y += half_line_width; - } else { - r[0].x -= half_line_width; - r[1].x -= half_line_width; - r[2].x += half_line_width; - r[3].x += half_line_width; - } - - status = _cairo_traps_tessellate_convex_quad (stroker->traps, r); - if (status) - return status; - } - - stroker->num_segments = 0; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_rectilinear_stroker_move_to (void *closure, - cairo_point_t *point) -{ - cairo_rectilinear_stroker_t *stroker = closure; - cairo_status_t status; - - status = _cairo_rectilinear_stroker_emit_segments (stroker); - if (status) - return status; - - stroker->current_point = *point; - stroker->first_point = *point; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_rectilinear_stroker_line_to (void *closure, - cairo_point_t *point) -{ - cairo_rectilinear_stroker_t *stroker = closure; - cairo_point_t *a = &stroker->current_point; - cairo_point_t *b = point; - cairo_status_t status; - - /* We only support horizontal or vertical elements. */ - if (! (a->x == b->x || a->y == b->y)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* We don't draw anything for degenerate paths. */ - if (a->x == b->x && a->y == b->y) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_rectilinear_stroker_add_segment (stroker, - a, b); - - stroker->current_point = *point; - stroker->open_sub_path = TRUE; - - return status; -} - -static cairo_status_t -_cairo_rectilinear_stroker_close_path (void *closure) -{ - cairo_rectilinear_stroker_t *stroker = closure; - cairo_status_t status; - - /* We don't draw anything for degenerate paths. */ - if (! stroker->open_sub_path) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_rectilinear_stroker_line_to (stroker, - &stroker->first_point); - if (status) - return status; - - stroker->open_sub_path = FALSE; - - status = _cairo_rectilinear_stroker_emit_segments (stroker); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_path_fixed_stroke_rectilinear (cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_traps_t *traps) -{ - cairo_rectilinear_stroker_t rectilinear_stroker; - cairo_int_status_t status; - - /* This special-case rectilinear stroker only supports - * miter-joined lines (not curves) and no dashing and a - * translation-only matrix (though it could probably be extended - * to support a matrix with uniform, integer sacling). - * - * It also only supports horizontal and vertical line_to - * elements. But we don't catch that here, but instead return - * UNSUPPORTED from _cairo_rectilinear_stroker_line_to if any - * non-rectilinear line_to is encountered. - */ - if (path->has_curve_to) - return CAIRO_INT_STATUS_UNSUPPORTED; - if (stroke_style->line_join != CAIRO_LINE_JOIN_MITER) - return CAIRO_INT_STATUS_UNSUPPORTED; - /* If the miter limit turns right angles into bevels, then we - * can't use this optimization. Remember, the ratio is - * 1/sin(ɸ/2). So the cutoff is 1/sin(Ï€/4.0) or ⎷2, - * which we round for safety. */ - if (stroke_style->miter_limit < M_SQRT2) - return CAIRO_INT_STATUS_UNSUPPORTED; - if (stroke_style->dash) - return CAIRO_INT_STATUS_UNSUPPORTED; - if (! (stroke_style->line_cap == CAIRO_LINE_CAP_BUTT || - stroke_style->line_cap == CAIRO_LINE_CAP_SQUARE)) - { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - if (! (_cairo_matrix_is_identity (ctm) || - _cairo_matrix_is_translation (ctm))) - { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - _cairo_rectilinear_stroker_init (&rectilinear_stroker, stroke_style, traps); - - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_rectilinear_stroker_move_to, - _cairo_rectilinear_stroker_line_to, - NULL, - _cairo_rectilinear_stroker_close_path, - &rectilinear_stroker); - if (status) - goto BAIL; - - status = _cairo_rectilinear_stroker_emit_segments (&rectilinear_stroker); - -BAIL: - - _cairo_rectilinear_stroker_fini (&rectilinear_stroker); - - if (status) - _cairo_traps_fini (traps); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pattern.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pattern.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pattern.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pattern.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2283 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 David Reveman - * Copyright © 2005 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of David - * Reveman not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior - * permission. David Reveman makes no representations about the - * suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * DAVID REVEMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL DAVID REVEMAN BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR - * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Authors: David Reveman - * Keith Packard - * Carl Worth - */ - -#include "cairoint.h" - -const cairo_solid_pattern_t _cairo_pattern_nil = { - { CAIRO_PATTERN_TYPE_SOLID, /* type */ - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ - CAIRO_STATUS_NO_MEMORY, /* status */ - { 0, 0, 0, NULL }, /* user_data */ - { 1., 0., 0., 1., 0., 0., }, /* matrix */ - CAIRO_FILTER_DEFAULT, /* filter */ - CAIRO_EXTEND_GRADIENT_DEFAULT }, /* extend */ -}; - -static const cairo_solid_pattern_t _cairo_pattern_nil_null_pointer = { - { CAIRO_PATTERN_TYPE_SOLID, /* type */ - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ - CAIRO_STATUS_NULL_POINTER, /* status */ - { 0, 0, 0, NULL }, /* user_data */ - { 1., 0., 0., 1., 0., 0., }, /* matrix */ - CAIRO_FILTER_DEFAULT, /* filter */ - CAIRO_EXTEND_GRADIENT_DEFAULT }, /* extend */ -}; - -const cairo_solid_pattern_t cairo_pattern_none = { - { CAIRO_PATTERN_TYPE_SOLID, /* type */ - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ - CAIRO_STATUS_SUCCESS, /* status */ - { 0, 0, 0, NULL }, /* user_data */ - { 1., 0., 0., 1., 0., 0., }, /* matrix */ - CAIRO_FILTER_DEFAULT, /* filter */ - CAIRO_EXTEND_GRADIENT_DEFAULT }, /* extend */ -}; - -/** - * _cairo_pattern_set_error: - * @pattern: a pattern - * @status: a status value indicating an error, (eg. not - * CAIRO_STATUS_SUCCESS) - * - * Atomically sets pattern->status to @status and calls _cairo_error; - * - * All assignments of an error status to pattern->status should happen - * through _cairo_pattern_set_error(). Note that due to the nature of - * the atomic operation, it is not safe to call this function on the nil - * objects. - * - * The purpose of this function is to allow the user to set a - * breakpoint in _cairo_error() to generate a stack trace for when the - * user causes cairo to detect an error. - **/ -static cairo_status_t -_cairo_pattern_set_error (cairo_pattern_t *pattern, - cairo_status_t status) -{ - /* Don't overwrite an existing error. This preserves the first - * error, which is the most significant. */ - _cairo_status_set_error (&pattern->status, status); - - return _cairo_error (status); -} - -static void -_cairo_pattern_init (cairo_pattern_t *pattern, cairo_pattern_type_t type) -{ - pattern->type = type; - CAIRO_REFERENCE_COUNT_INIT (&pattern->ref_count, 1); - pattern->status = CAIRO_STATUS_SUCCESS; - - _cairo_user_data_array_init (&pattern->user_data); - - if (type == CAIRO_PATTERN_TYPE_SURFACE) - pattern->extend = CAIRO_EXTEND_SURFACE_DEFAULT; - else - pattern->extend = CAIRO_EXTEND_GRADIENT_DEFAULT; - - pattern->filter = CAIRO_FILTER_DEFAULT; - - cairo_matrix_init_identity (&pattern->matrix); -} - -static cairo_status_t -_cairo_gradient_pattern_init_copy (cairo_gradient_pattern_t *pattern, - const cairo_gradient_pattern_t *other) -{ - if (other->base.type == CAIRO_PATTERN_TYPE_LINEAR) - { - cairo_linear_pattern_t *dst = (cairo_linear_pattern_t *) pattern; - cairo_linear_pattern_t *src = (cairo_linear_pattern_t *) other; - - *dst = *src; - } - else - { - cairo_radial_pattern_t *dst = (cairo_radial_pattern_t *) pattern; - cairo_radial_pattern_t *src = (cairo_radial_pattern_t *) other; - - *dst = *src; - } - - if (other->stops == other->stops_embedded) - pattern->stops = pattern->stops_embedded; - else if (other->stops) - { - pattern->stops = _cairo_malloc_ab (other->stops_size, - sizeof (cairo_gradient_stop_t)); - if (pattern->stops == NULL) { - pattern->stops_size = 0; - pattern->n_stops = 0; - return _cairo_pattern_set_error (&pattern->base, CAIRO_STATUS_NO_MEMORY); - } - - memcpy (pattern->stops, other->stops, - other->n_stops * sizeof (cairo_gradient_stop_t)); - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_pattern_init_copy (cairo_pattern_t *pattern, - const cairo_pattern_t *other) -{ - if (other->status) - return _cairo_pattern_set_error (pattern, other->status); - - switch (other->type) { - case CAIRO_PATTERN_TYPE_SOLID: { - cairo_solid_pattern_t *dst = (cairo_solid_pattern_t *) pattern; - cairo_solid_pattern_t *src = (cairo_solid_pattern_t *) other; - - *dst = *src; - } break; - case CAIRO_PATTERN_TYPE_SURFACE: { - cairo_surface_pattern_t *dst = (cairo_surface_pattern_t *) pattern; - cairo_surface_pattern_t *src = (cairo_surface_pattern_t *) other; - - *dst = *src; - cairo_surface_reference (dst->surface); - } break; - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: { - cairo_gradient_pattern_t *dst = (cairo_gradient_pattern_t *) pattern; - cairo_gradient_pattern_t *src = (cairo_gradient_pattern_t *) other; - cairo_status_t status; - - status = _cairo_gradient_pattern_init_copy (dst, src); - if (status) - return status; - - } break; - } - - /* The reference count and user_data array are unique to the copy. */ - CAIRO_REFERENCE_COUNT_INIT (&pattern->ref_count, 1); - _cairo_user_data_array_init (&pattern->user_data); - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_pattern_fini (cairo_pattern_t *pattern) -{ - _cairo_user_data_array_fini (&pattern->user_data); - - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: - break; - case CAIRO_PATTERN_TYPE_SURFACE: { - cairo_surface_pattern_t *surface_pattern = - (cairo_surface_pattern_t *) pattern; - - cairo_surface_destroy (surface_pattern->surface); - } break; - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: { - cairo_gradient_pattern_t *gradient = - (cairo_gradient_pattern_t *) pattern; - - if (gradient->stops && gradient->stops != gradient->stops_embedded) - free (gradient->stops); - } break; - } -} - -cairo_status_t -_cairo_pattern_create_copy (cairo_pattern_t **pattern, - const cairo_pattern_t *other) -{ - cairo_status_t status; - - if (other->status) - return other->status; - - switch (other->type) { - case CAIRO_PATTERN_TYPE_SOLID: - *pattern = malloc (sizeof (cairo_solid_pattern_t)); - break; - case CAIRO_PATTERN_TYPE_SURFACE: - *pattern = malloc (sizeof (cairo_surface_pattern_t)); - break; - case CAIRO_PATTERN_TYPE_LINEAR: - *pattern = malloc (sizeof (cairo_linear_pattern_t)); - break; - case CAIRO_PATTERN_TYPE_RADIAL: - *pattern = malloc (sizeof (cairo_radial_pattern_t)); - break; - } - if (*pattern == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_pattern_init_copy (*pattern, other); - if (status) { - free (*pattern); - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - - -void -_cairo_pattern_init_solid (cairo_solid_pattern_t *pattern, - const cairo_color_t *color, - cairo_content_t content) -{ - _cairo_pattern_init (&pattern->base, CAIRO_PATTERN_TYPE_SOLID); - pattern->color = *color; - pattern->content = content; -} - -void -_cairo_pattern_init_for_surface (cairo_surface_pattern_t *pattern, - cairo_surface_t *surface) -{ - if (surface->status) { - /* Force to solid to simplify the pattern_fini process. */ - _cairo_pattern_init (&pattern->base, CAIRO_PATTERN_TYPE_SOLID); - _cairo_pattern_set_error (&pattern->base, surface->status); - return; - } - - _cairo_pattern_init (&pattern->base, CAIRO_PATTERN_TYPE_SURFACE); - - pattern->surface = cairo_surface_reference (surface); -} - -static void -_cairo_pattern_init_gradient (cairo_gradient_pattern_t *pattern, - cairo_pattern_type_t type) -{ - _cairo_pattern_init (&pattern->base, type); - - pattern->n_stops = 0; - pattern->stops_size = 0; - pattern->stops = NULL; -} - -void -_cairo_pattern_init_linear (cairo_linear_pattern_t *pattern, - double x0, double y0, double x1, double y1) -{ - _cairo_pattern_init_gradient (&pattern->base, CAIRO_PATTERN_TYPE_LINEAR); - - pattern->p1.x = _cairo_fixed_from_double (x0); - pattern->p1.y = _cairo_fixed_from_double (y0); - pattern->p2.x = _cairo_fixed_from_double (x1); - pattern->p2.y = _cairo_fixed_from_double (y1); -} - -void -_cairo_pattern_init_radial (cairo_radial_pattern_t *pattern, - double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1) -{ - _cairo_pattern_init_gradient (&pattern->base, CAIRO_PATTERN_TYPE_RADIAL); - - pattern->c1.x = _cairo_fixed_from_double (cx0); - pattern->c1.y = _cairo_fixed_from_double (cy0); - pattern->r1 = _cairo_fixed_from_double (fabs (radius0)); - pattern->c2.x = _cairo_fixed_from_double (cx1); - pattern->c2.y = _cairo_fixed_from_double (cy1); - pattern->r2 = _cairo_fixed_from_double (fabs (radius1)); -} - -/* We use a small freed pattern cache here, because we don't want to - * constantly reallocate simple colors. */ -#define MAX_PATTERN_CACHE_SIZE 4 -static struct { - cairo_solid_pattern_t *patterns[MAX_PATTERN_CACHE_SIZE]; - int size; -} solid_pattern_cache; - -cairo_pattern_t * -_cairo_pattern_create_solid (const cairo_color_t *color, - cairo_content_t content) -{ - cairo_solid_pattern_t *pattern = NULL; - - CAIRO_MUTEX_LOCK (_cairo_pattern_solid_pattern_cache_lock); - - if (solid_pattern_cache.size) { - int i = --solid_pattern_cache.size % - ARRAY_LENGTH (solid_pattern_cache.patterns); - pattern = solid_pattern_cache.patterns[i]; - solid_pattern_cache.patterns[i] = NULL; - } - - CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_pattern_cache_lock); - - if (pattern == NULL) { - /* None cached, need to create a new pattern. */ - pattern = malloc (sizeof (cairo_solid_pattern_t)); - } - - if (pattern == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - pattern = (cairo_solid_pattern_t *) &_cairo_pattern_nil; - } else - _cairo_pattern_init_solid (pattern, color, content); - - return &pattern->base; -} - -static void -_cairo_pattern_reset_solid_pattern_cache (void) -{ - int i; - - CAIRO_MUTEX_LOCK (_cairo_pattern_solid_pattern_cache_lock); - - for (i = 0; i < MIN (ARRAY_LENGTH (solid_pattern_cache.patterns), solid_pattern_cache.size); i++) { - free (solid_pattern_cache.patterns[i]); - solid_pattern_cache.patterns[i] = NULL; - } - solid_pattern_cache.size = 0; - - CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_pattern_cache_lock); -} - -static const cairo_pattern_t * -_cairo_pattern_create_in_error (cairo_status_t status) -{ - cairo_pattern_t *pattern; - - if (status == CAIRO_STATUS_NO_MEMORY) - return (cairo_pattern_t *)&_cairo_pattern_nil.base; - - CAIRO_MUTEX_INITIALIZE (); - - pattern = _cairo_pattern_create_solid (_cairo_stock_color (CAIRO_STOCK_BLACK), - CAIRO_CONTENT_COLOR); - if (pattern->status == CAIRO_STATUS_SUCCESS) - status = _cairo_pattern_set_error (pattern, status); - - return pattern; -} - -/** - * cairo_pattern_create_rgb: - * @red: red component of the color - * @green: green component of the color - * @blue: blue component of the color - * - * Creates a new #cairo_pattern_t corresponding to an opaque color. The - * color components are floating point numbers in the range 0 to 1. - * If the values passed in are outside that range, they will be - * clamped. - * - * Return value: the newly created #cairo_pattern_t if successful, or - * an error pattern in case of no memory. The caller owns the - * returned object and should call cairo_pattern_destroy() when - * finished with it. - * - * This function will always return a valid pointer, but if an error - * occurred the pattern status will be set to an error. To inspect - * the status of a pattern use cairo_pattern_status(). - **/ -cairo_pattern_t * -cairo_pattern_create_rgb (double red, double green, double blue) -{ - cairo_color_t color; - - _cairo_restrict_value (&red, 0.0, 1.0); - _cairo_restrict_value (&green, 0.0, 1.0); - _cairo_restrict_value (&blue, 0.0, 1.0); - - _cairo_color_init_rgb (&color, red, green, blue); - - CAIRO_MUTEX_INITIALIZE (); - - return _cairo_pattern_create_solid (&color, CAIRO_CONTENT_COLOR); -} -slim_hidden_def (cairo_pattern_create_rgb); - -/** - * cairo_pattern_create_rgba: - * @red: red component of the color - * @green: green component of the color - * @blue: blue component of the color - * @alpha: alpha component of the color - * - * Creates a new #cairo_pattern_t corresponding to a translucent color. - * The color components are floating point numbers in the range 0 to - * 1. If the values passed in are outside that range, they will be - * clamped. - * - * Return value: the newly created #cairo_pattern_t if successful, or - * an error pattern in case of no memory. The caller owns the - * returned object and should call cairo_pattern_destroy() when - * finished with it. - * - * This function will always return a valid pointer, but if an error - * occurred the pattern status will be set to an error. To inspect - * the status of a pattern use cairo_pattern_status(). - **/ -cairo_pattern_t * -cairo_pattern_create_rgba (double red, double green, double blue, - double alpha) -{ - cairo_color_t color; - - _cairo_restrict_value (&red, 0.0, 1.0); - _cairo_restrict_value (&green, 0.0, 1.0); - _cairo_restrict_value (&blue, 0.0, 1.0); - _cairo_restrict_value (&alpha, 0.0, 1.0); - - _cairo_color_init_rgba (&color, red, green, blue, alpha); - - CAIRO_MUTEX_INITIALIZE (); - - return _cairo_pattern_create_solid (&color, CAIRO_CONTENT_COLOR_ALPHA); -} -slim_hidden_def (cairo_pattern_create_rgba); - -/** - * cairo_pattern_create_for_surface: - * @surface: the surface - * - * Create a new #cairo_pattern_t for the given surface. - * - * Return value: the newly created #cairo_pattern_t if successful, or - * an error pattern in case of no memory. The caller owns the - * returned object and should call cairo_pattern_destroy() when - * finished with it. - * - * This function will always return a valid pointer, but if an error - * occurred the pattern status will be set to an error. To inspect - * the status of a pattern use cairo_pattern_status(). - **/ -cairo_pattern_t * -cairo_pattern_create_for_surface (cairo_surface_t *surface) -{ - cairo_surface_pattern_t *pattern; - - if (surface == NULL) { - _cairo_error_throw (CAIRO_STATUS_NULL_POINTER); - return (cairo_pattern_t*) &_cairo_pattern_nil_null_pointer; - } - - if (surface->status) - return (cairo_pattern_t*) _cairo_pattern_create_in_error (surface->status); - - pattern = malloc (sizeof (cairo_surface_pattern_t)); - if (pattern == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *)&_cairo_pattern_nil.base; - } - - CAIRO_MUTEX_INITIALIZE (); - - _cairo_pattern_init_for_surface (pattern, surface); - - return &pattern->base; -} -slim_hidden_def (cairo_pattern_create_for_surface); - -/** - * cairo_pattern_create_linear: - * @x0: x coordinate of the start point - * @y0: y coordinate of the start point - * @x1: x coordinate of the end point - * @y1: y coordinate of the end point - * - * Create a new linear gradient #cairo_pattern_t along the line defined - * by (x0, y0) and (x1, y1). Before using the gradient pattern, a - * number of color stops should be defined using - * cairo_pattern_add_color_stop_rgb() or - * cairo_pattern_add_color_stop_rgba(). - * - * Note: The coordinates here are in pattern space. For a new pattern, - * pattern space is identical to user space, but the relationship - * between the spaces can be changed with cairo_pattern_set_matrix(). - * - * Return value: the newly created #cairo_pattern_t if successful, or - * an error pattern in case of no memory. The caller owns the - * returned object and should call cairo_pattern_destroy() when - * finished with it. - * - * This function will always return a valid pointer, but if an error - * occurred the pattern status will be set to an error. To inspect - * the status of a pattern use cairo_pattern_status(). - **/ -cairo_pattern_t * -cairo_pattern_create_linear (double x0, double y0, double x1, double y1) -{ - cairo_linear_pattern_t *pattern; - - pattern = malloc (sizeof (cairo_linear_pattern_t)); - if (pattern == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *) &_cairo_pattern_nil.base; - } - - CAIRO_MUTEX_INITIALIZE (); - - _cairo_pattern_init_linear (pattern, x0, y0, x1, y1); - - return &pattern->base.base; -} - -/** - * cairo_pattern_create_radial: - * @cx0: x coordinate for the center of the start circle - * @cy0: y coordinate for the center of the start circle - * @radius0: radius of the start circle - * @cx1: x coordinate for the center of the end circle - * @cy1: y coordinate for the center of the end circle - * @radius1: radius of the end circle - * - * Creates a new radial gradient #cairo_pattern_t between the two - * circles defined by (cx0, cy0, radius0) and (cx1, cy1, radius1). Before using the - * gradient pattern, a number of color stops should be defined using - * cairo_pattern_add_color_stop_rgb() or - * cairo_pattern_add_color_stop_rgba(). - * - * Note: The coordinates here are in pattern space. For a new pattern, - * pattern space is identical to user space, but the relationship - * between the spaces can be changed with cairo_pattern_set_matrix(). - * - * Return value: the newly created #cairo_pattern_t if successful, or - * an error pattern in case of no memory. The caller owns the - * returned object and should call cairo_pattern_destroy() when - * finished with it. - * - * This function will always return a valid pointer, but if an error - * occurred the pattern status will be set to an error. To inspect - * the status of a pattern use cairo_pattern_status(). - **/ -cairo_pattern_t * -cairo_pattern_create_radial (double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1) -{ - cairo_radial_pattern_t *pattern; - - pattern = malloc (sizeof (cairo_radial_pattern_t)); - if (pattern == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *) &_cairo_pattern_nil.base; - } - - CAIRO_MUTEX_INITIALIZE (); - - _cairo_pattern_init_radial (pattern, cx0, cy0, radius0, cx1, cy1, radius1); - - return &pattern->base.base; -} - -/** - * cairo_pattern_reference: - * @pattern: a #cairo_pattern_t - * - * Increases the reference count on @pattern by one. This prevents - * @pattern from being destroyed until a matching call to - * cairo_pattern_destroy() is made. - * - * The number of references to a #cairo_pattern_t can be get using - * cairo_pattern_get_reference_count(). - * - * Return value: the referenced #cairo_pattern_t. - **/ -cairo_pattern_t * -cairo_pattern_reference (cairo_pattern_t *pattern) -{ - if (pattern == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&pattern->ref_count)) - return pattern; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&pattern->ref_count)); - - _cairo_reference_count_inc (&pattern->ref_count); - - return pattern; -} -slim_hidden_def (cairo_pattern_reference); - -/** - * cairo_pattern_get_type: - * @pattern: a #cairo_pattern_t - * - * This function returns the type a pattern. - * See #cairo_pattern_type_t for available types. - * - * Return value: The type of @pattern. - * - * Since: 1.2 - **/ -cairo_pattern_type_t -cairo_pattern_get_type (cairo_pattern_t *pattern) -{ - return pattern->type; -} -slim_hidden_def (cairo_pattern_get_type); - -/** - * cairo_pattern_status: - * @pattern: a #cairo_pattern_t - * - * Checks whether an error has previously occurred for this - * pattern. - * - * Return value: %CAIRO_STATUS_SUCCESS, %CAIRO_STATUS_NO_MEMORY, or - * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. - **/ -cairo_status_t -cairo_pattern_status (cairo_pattern_t *pattern) -{ - return pattern->status; -} -slim_hidden_def (cairo_pattern_status); - -/** - * cairo_pattern_destroy: - * @pattern: a #cairo_pattern_t - * - * Decreases the reference count on @pattern by one. If the result is - * zero, then @pattern and all associated resources are freed. See - * cairo_pattern_reference(). - **/ -void -cairo_pattern_destroy (cairo_pattern_t *pattern) -{ - if (pattern == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&pattern->ref_count)) - return; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&pattern->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&pattern->ref_count)) - return; - - _cairo_pattern_fini (pattern); - - /* maintain a small cache of freed patterns */ - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) { - int i; - - CAIRO_MUTEX_LOCK (_cairo_pattern_solid_pattern_cache_lock); - - i = solid_pattern_cache.size++ % - ARRAY_LENGTH (solid_pattern_cache.patterns); - /* swap an old pattern for this 'cache-hot' pattern */ - if (solid_pattern_cache.patterns[i]) - free (solid_pattern_cache.patterns[i]); - - solid_pattern_cache.patterns[i] = (cairo_solid_pattern_t *) pattern; - - CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_pattern_cache_lock); - } else { - free (pattern); - } -} -slim_hidden_def (cairo_pattern_destroy); - -/** - * cairo_pattern_get_reference_count: - * @pattern: a #cairo_pattern_t - * - * Returns the current reference count of @pattern. - * - * Return value: the current reference count of @pattern. If the - * object is a nil object, 0 will be returned. - * - * Since: 1.4 - **/ -unsigned int -cairo_pattern_get_reference_count (cairo_pattern_t *pattern) -{ - if (pattern == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&pattern->ref_count)) - return 0; - - return CAIRO_REFERENCE_COUNT_GET_VALUE (&pattern->ref_count); -} - -/** - * cairo_pattern_get_user_data: - * @pattern: a #cairo_pattern_t - * @key: the address of the #cairo_user_data_key_t the user data was - * attached to - * - * Return user data previously attached to @pattern using the - * specified key. If no user data has been attached with the given - * key this function returns %NULL. - * - * Return value: the user data previously attached or %NULL. - * - * Since: 1.4 - **/ -void * -cairo_pattern_get_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key) -{ - return _cairo_user_data_array_get_data (&pattern->user_data, - key); -} - -/** - * cairo_pattern_set_user_data: - * @pattern: a #cairo_pattern_t - * @key: the address of a #cairo_user_data_key_t to attach the user data to - * @user_data: the user data to attach to the #cairo_pattern_t - * @destroy: a #cairo_destroy_func_t which will be called when the - * #cairo_t is destroyed or when new user data is attached using the - * same key. - * - * Attach user data to @pattern. To remove user data from a surface, - * call this function with the key that was used to set it and %NULL - * for @data. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a - * slot could not be allocated for the user data. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_pattern_set_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy) -{ - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&pattern->ref_count)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return _cairo_user_data_array_set_data (&pattern->user_data, - key, user_data, destroy); -} - -/* make room for at least one more color stop */ -static cairo_status_t -_cairo_pattern_gradient_grow (cairo_gradient_pattern_t *pattern) -{ - cairo_gradient_stop_t *new_stops; - int old_size = pattern->stops_size; - int embedded_size = ARRAY_LENGTH (pattern->stops_embedded); - int new_size = 2 * MAX (old_size, 4); - - /* we have a local buffer at pattern->stops_embedded. try to fulfill the request - * from there. */ - if (old_size < embedded_size) { - pattern->stops = pattern->stops_embedded; - pattern->stops_size = embedded_size; - return CAIRO_STATUS_SUCCESS; - } - - assert (pattern->n_stops <= pattern->stops_size); - - if (pattern->stops == pattern->stops_embedded) { - new_stops = _cairo_malloc_ab (new_size, sizeof (cairo_gradient_stop_t)); - if (new_stops) - memcpy (new_stops, pattern->stops, old_size * sizeof (cairo_gradient_stop_t)); - } else { - new_stops = _cairo_realloc_ab (pattern->stops, - new_size, - sizeof (cairo_gradient_stop_t)); - } - - if (new_stops == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - pattern->stops = new_stops; - pattern->stops_size = new_size; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_pattern_add_color_stop (cairo_gradient_pattern_t *pattern, - double offset, - double red, - double green, - double blue, - double alpha) -{ - cairo_gradient_stop_t *stops; - unsigned int i; - - if (pattern->n_stops >= pattern->stops_size) { - cairo_status_t status = _cairo_pattern_gradient_grow (pattern); - if (status) { - status = _cairo_pattern_set_error (&pattern->base, status); - return; - } - } - - stops = pattern->stops; - - for (i = 0; i < pattern->n_stops; i++) - { - if (offset < stops[i].offset) - { - memmove (&stops[i + 1], &stops[i], - sizeof (cairo_gradient_stop_t) * (pattern->n_stops - i)); - - break; - } - } - - stops[i].offset = offset; - - stops[i].color.red = red; - stops[i].color.green = green; - stops[i].color.blue = blue; - stops[i].color.alpha = alpha; - - stops[i].color.red_short = _cairo_color_double_to_short (red); - stops[i].color.green_short = _cairo_color_double_to_short (green); - stops[i].color.blue_short = _cairo_color_double_to_short (blue); - stops[i].color.alpha_short = _cairo_color_double_to_short (alpha); - - pattern->n_stops++; -} - -/** - * cairo_pattern_add_color_stop_rgb: - * @pattern: a #cairo_pattern_t - * @offset: an offset in the range [0.0 .. 1.0] - * @red: red component of color - * @green: green component of color - * @blue: blue component of color - * - * Adds an opaque color stop to a gradient pattern. The offset - * specifies the location along the gradient's control vector. For - * example, a linear gradient's control vector is from (x0,y0) to - * (x1,y1) while a radial gradient's control vector is from any point - * on the start circle to the corresponding point on the end circle. - * - * The color is specified in the same way as in cairo_set_source_rgb(). - * - * If two (or more) stops are specified with identical offset values, - * they will be sorted according to the order in which the stops are - * added, (stops added earlier will compare less than stops added - * later). This can be useful for reliably making sharp color - * transitions instead of the typical blend. - * - * - * Note: If the pattern is not a gradient pattern, (eg. a linear or - * radial pattern), then the pattern will be put into an error status - * with a status of %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. - **/ -void -cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue) -{ - if (pattern->status) - return; - - if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && - pattern->type != CAIRO_PATTERN_TYPE_RADIAL) - { - _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - return; - } - - _cairo_restrict_value (&offset, 0.0, 1.0); - _cairo_restrict_value (&red, 0.0, 1.0); - _cairo_restrict_value (&green, 0.0, 1.0); - _cairo_restrict_value (&blue, 0.0, 1.0); - - _cairo_pattern_add_color_stop ((cairo_gradient_pattern_t *) pattern, - offset, red, green, blue, 1.0); -} - -/** - * cairo_pattern_add_color_stop_rgba: - * @pattern: a #cairo_pattern_t - * @offset: an offset in the range [0.0 .. 1.0] - * @red: red component of color - * @green: green component of color - * @blue: blue component of color - * @alpha: alpha component of color - * - * Adds a translucent color stop to a gradient pattern. The offset - * specifies the location along the gradient's control vector. For - * example, a linear gradient's control vector is from (x0,y0) to - * (x1,y1) while a radial gradient's control vector is from any point - * on the start circle to the corresponding point on the end circle. - * - * The color is specified in the same way as in cairo_set_source_rgba(). - * - * If two (or more) stops are specified with identical offset values, - * they will be sorted according to the order in which the stops are - * added, (stops added earlier will compare less than stops added - * later). This can be useful for reliably making sharp color - * transitions instead of the typical blend. - * - * Note: If the pattern is not a gradient pattern, (eg. a linear or - * radial pattern), then the pattern will be put into an error status - * with a status of %CAIRO_STATUS_PATTERN_TYPE_MISMATCH. - */ -void -cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, - double offset, - double red, - double green, - double blue, - double alpha) -{ - if (pattern->status) - return; - - if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && - pattern->type != CAIRO_PATTERN_TYPE_RADIAL) - { - _cairo_pattern_set_error (pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - return; - } - - _cairo_restrict_value (&offset, 0.0, 1.0); - _cairo_restrict_value (&red, 0.0, 1.0); - _cairo_restrict_value (&green, 0.0, 1.0); - _cairo_restrict_value (&blue, 0.0, 1.0); - _cairo_restrict_value (&alpha, 0.0, 1.0); - - _cairo_pattern_add_color_stop ((cairo_gradient_pattern_t *) pattern, - offset, red, green, blue, alpha); -} - -/** - * cairo_pattern_set_matrix: - * @pattern: a #cairo_pattern_t - * @matrix: a #cairo_matrix_t - * - * Sets the pattern's transformation matrix to @matrix. This matrix is - * a transformation from user space to pattern space. - * - * When a pattern is first created it always has the identity matrix - * for its transformation matrix, which means that pattern space is - * initially identical to user space. - * - * Important: Please note that the direction of this transformation - * matrix is from user space to pattern space. This means that if you - * imagine the flow from a pattern to user space (and on to device - * space), then coordinates in that flow will be transformed by the - * inverse of the pattern matrix. - * - * For example, if you want to make a pattern appear twice as large as - * it does by default the correct code to use is: - * - * - * cairo_matrix_init_scale (&matrix, 0.5, 0.5); - * cairo_pattern_set_matrix (pattern, &matrix); - * - * - * Meanwhile, using values of 2.0 rather than 0.5 in the code above - * would cause the pattern to appear at half of its default size. - * - * Also, please note the discussion of the user-space locking - * semantics of cairo_set_source(). - **/ -void -cairo_pattern_set_matrix (cairo_pattern_t *pattern, - const cairo_matrix_t *matrix) -{ - cairo_matrix_t inverse; - cairo_status_t status; - - if (pattern->status) - return; - - pattern->matrix = *matrix; - - inverse = *matrix; - status = cairo_matrix_invert (&inverse); - if (status) - status = _cairo_pattern_set_error (pattern, status); -} -slim_hidden_def (cairo_pattern_set_matrix); - -/** - * cairo_pattern_get_matrix: - * @pattern: a #cairo_pattern_t - * @matrix: return value for the matrix - * - * Stores the pattern's transformation matrix into @matrix. - **/ -void -cairo_pattern_get_matrix (cairo_pattern_t *pattern, cairo_matrix_t *matrix) -{ - *matrix = pattern->matrix; -} - -/** - * cairo_pattern_set_filter: - * @pattern: a #cairo_pattern_t - * @filter: a #cairo_filter_t describing the filter to use for resizing - * the pattern - * - * Sets the filter to be used for resizing when using this pattern. - * See #cairo_filter_t for details on each filter. - * - * * Note that you might want to control filtering even when you do not - * have an explicit #cairo_pattern_t object, (for example when using - * cairo_set_source_surface()). In these cases, it is convenient to - * use cairo_get_source() to get access to the pattern that cairo - * creates implicitly. For example: - * - * - * cairo_set_source_surface (cr, image, x, y); - * cairo_pattern_set_filter (cairo_get_source (cr), %CAIRO_FILTER_NEAREST); - * - **/ -void -cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter) -{ - if (pattern->status) - return; - - pattern->filter = filter; -} - -/** - * cairo_pattern_get_filter: - * @pattern: a #cairo_pattern_t - * - * Gets the current filter for a pattern. See #cairo_filter_t - * for details on each filter. - * - * Return value: the current filter used for resizing the pattern. - **/ -cairo_filter_t -cairo_pattern_get_filter (cairo_pattern_t *pattern) -{ - return pattern->filter; -} - -/** - * cairo_pattern_set_extend: - * @pattern: a #cairo_pattern_t - * @extend: a #cairo_extend_t describing how the area outside of the - * pattern will be drawn - * - * Sets the mode to be used for drawing outside the area of a pattern. - * See #cairo_extend_t for details on the semantics of each extend - * strategy. - * - * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns - * and %CAIRO_EXTEND_PAD for gradient patterns. - **/ -void -cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend) -{ - if (pattern->status) - return; - - pattern->extend = extend; -} - -/** - * cairo_pattern_get_extend: - * @pattern: a #cairo_pattern_t - * - * Gets the current extend mode for a pattern. See #cairo_extend_t - * for details on the semantics of each extend strategy. - * - * Return value: the current extend strategy used for drawing the - * pattern. - **/ -cairo_extend_t -cairo_pattern_get_extend (cairo_pattern_t *pattern) -{ - return pattern->extend; -} -slim_hidden_def (cairo_pattern_get_extend); - -void -_cairo_pattern_transform (cairo_pattern_t *pattern, - const cairo_matrix_t *ctm_inverse) -{ - if (pattern->status) - return; - - cairo_matrix_multiply (&pattern->matrix, ctm_inverse, &pattern->matrix); -} - -static void -_cairo_linear_pattern_classify (cairo_linear_pattern_t *pattern, - double offset_x, - double offset_y, - int width, - int height, - cairo_bool_t *is_horizontal, - cairo_bool_t *is_vertical) -{ - cairo_point_double_t point0, point1; - double a, b, c, d, tx, ty; - double scale, start, dx, dy; - cairo_fixed_t factors[3]; - int i; - - /* To classify a pattern as horizontal or vertical, we first - * compute the (fixed point) factors at the corners of the - * pattern. We actually only need 3/4 corners, so we skip the - * fourth. - */ - point0.x = _cairo_fixed_to_double (pattern->p1.x); - point0.y = _cairo_fixed_to_double (pattern->p1.y); - point1.x = _cairo_fixed_to_double (pattern->p2.x); - point1.y = _cairo_fixed_to_double (pattern->p2.y); - - _cairo_matrix_get_affine (&pattern->base.base.matrix, - &a, &b, &c, &d, &tx, &ty); - - dx = point1.x - point0.x; - dy = point1.y - point0.y; - scale = dx * dx + dy * dy; - scale = (scale) ? 1.0 / scale : 1.0; - - start = dx * point0.x + dy * point0.y; - - for (i = 0; i < 3; i++) { - double qx_device = (i % 2) * (width - 1) + offset_x; - double qy_device = (i / 2) * (height - 1) + offset_y; - - /* transform fragment into pattern space */ - double qx = a * qx_device + c * qy_device + tx; - double qy = b * qx_device + d * qy_device + ty; - - factors[i] = _cairo_fixed_from_double (((dx * qx + dy * qy) - start) * scale); - } - - /* We consider a pattern to be vertical if the fixed point factor - * at the two upper corners is the same. We could accept a small - * change, but determining what change is acceptable would require - * sorting the stops in the pattern and looking at the differences. - * - * Horizontal works the same way with the two left corners. - */ - - *is_vertical = factors[1] == factors[0]; - *is_horizontal = factors[2] == factors[0]; -} - -static cairo_int_status_t -_cairo_pattern_acquire_surface_for_gradient (cairo_gradient_pattern_t *pattern, - cairo_surface_t *dst, - int x, - int y, - unsigned int width, - unsigned int height, - cairo_surface_t **out, - cairo_surface_attributes_t *attr) -{ - cairo_image_surface_t *image; - pixman_image_t *pixman_image; - pixman_transform_t pixman_transform; - cairo_status_t status; - cairo_bool_t repeat = FALSE; - - pixman_gradient_stop_t pixman_stops_static[2]; - pixman_gradient_stop_t *pixman_stops = pixman_stops_static; - unsigned int i; - - if (pattern->n_stops > ARRAY_LENGTH(pixman_stops_static)) { - pixman_stops = _cairo_malloc_ab (pattern->n_stops, sizeof(pixman_gradient_stop_t)); - if (pixman_stops == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < pattern->n_stops; i++) { - pixman_stops[i].x = _cairo_fixed_16_16_from_double (pattern->stops[i].offset); - pixman_stops[i].color.red = pattern->stops[i].color.red_short; - pixman_stops[i].color.green = pattern->stops[i].color.green_short; - pixman_stops[i].color.blue = pattern->stops[i].color.blue_short; - pixman_stops[i].color.alpha = pattern->stops[i].color.alpha_short; - } - - if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) - { - cairo_linear_pattern_t *linear = (cairo_linear_pattern_t *) pattern; - pixman_point_fixed_t p1, p2; - - p1.x = _cairo_fixed_to_16_16 (linear->p1.x); - p1.y = _cairo_fixed_to_16_16 (linear->p1.y); - p2.x = _cairo_fixed_to_16_16 (linear->p2.x); - p2.y = _cairo_fixed_to_16_16 (linear->p2.y); - - pixman_image = pixman_image_create_linear_gradient (&p1, &p2, - pixman_stops, - pattern->n_stops); - } - else - { - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - pixman_point_fixed_t c1, c2; - pixman_fixed_t r1, r2; - - c1.x = _cairo_fixed_to_16_16 (radial->c1.x); - c1.y = _cairo_fixed_to_16_16 (radial->c1.y); - r1 = _cairo_fixed_to_16_16 (radial->r1); - - c2.x = _cairo_fixed_to_16_16 (radial->c2.x); - c2.y = _cairo_fixed_to_16_16 (radial->c2.y); - r2 = _cairo_fixed_to_16_16 (radial->r2); - - pixman_image = pixman_image_create_radial_gradient (&c1, &c2, - r1, r2, - pixman_stops, - pattern->n_stops); - } - - if (pixman_stops != pixman_stops_static) - free (pixman_stops); - - if (pixman_image == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (_cairo_surface_is_image (dst)) - { - image = (cairo_image_surface_t *) - _cairo_image_surface_create_for_pixman_image (pixman_image, - PIXMAN_a8r8g8b8); - if (image->base.status) - { - pixman_image_unref (pixman_image); - return image->base.status; - } - - attr->x_offset = attr->y_offset = 0; - attr->matrix = pattern->base.matrix; - attr->extend = pattern->base.extend; - attr->filter = CAIRO_FILTER_NEAREST; - attr->acquired = FALSE; - - *out = &image->base; - - return CAIRO_STATUS_SUCCESS; - } - - if (pattern->base.type == CAIRO_PATTERN_TYPE_LINEAR) { - cairo_bool_t is_horizontal; - cairo_bool_t is_vertical; - - _cairo_linear_pattern_classify ((cairo_linear_pattern_t *)pattern, - x, y, width, height, - &is_horizontal, &is_vertical); - if (is_horizontal) { - height = 1; - repeat = TRUE; - } - /* width-1 repeating patterns are quite slow with scan-line based - * compositing code, so we use a wider strip and spend some extra - * expense in computing the gradient. It's possible that for narrow - * gradients we'd be better off using a 2 or 4 pixel strip; the - * wider the gradient, the more it's worth spending extra time - * computing a sample. - */ - if (is_vertical && width > 8) { - width = 8; - repeat = TRUE; - } - } - - image = (cairo_image_surface_t *) - cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); - if (image->base.status) { - pixman_image_unref (pixman_image); - return image->base.status; - } - - pixman_image_set_filter (pixman_image, PIXMAN_FILTER_BILINEAR, NULL, 0); - - _cairo_matrix_to_pixman_matrix (&pattern->base.matrix, &pixman_transform); - if (!pixman_image_set_transform (pixman_image, &pixman_transform)) { - cairo_surface_destroy (&image->base); - pixman_image_unref (pixman_image); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - switch (pattern->base.extend) { - case CAIRO_EXTEND_NONE: - pixman_image_set_repeat (pixman_image, PIXMAN_REPEAT_NONE); - break; - case CAIRO_EXTEND_REPEAT: - pixman_image_set_repeat (pixman_image, PIXMAN_REPEAT_NORMAL); - break; - case CAIRO_EXTEND_REFLECT: - pixman_image_set_repeat (pixman_image, PIXMAN_REPEAT_REFLECT); - break; - case CAIRO_EXTEND_PAD: - pixman_image_set_repeat (pixman_image, PIXMAN_REPEAT_PAD); - break; - } - - pixman_image_composite (PIXMAN_OP_SRC, - pixman_image, - NULL, - image->pixman_image, - x, y, - 0, 0, - 0, 0, - width, height); - - pixman_image_unref (pixman_image); - - status = _cairo_surface_clone_similar (dst, &image->base, - 0, 0, width, height, out); - - cairo_surface_destroy (&image->base); - - attr->x_offset = -x; - attr->y_offset = -y; - cairo_matrix_init_identity (&attr->matrix); - attr->extend = repeat ? CAIRO_EXTEND_REPEAT : CAIRO_EXTEND_NONE; - attr->filter = CAIRO_FILTER_NEAREST; - attr->acquired = FALSE; - - return status; -} - -/* We maintain a small cache here, because we don't want to constantly - * recreate surfaces for simple solid colors. */ -#define MAX_SURFACE_CACHE_SIZE 16 -static struct { - struct _cairo_pattern_solid_surface_cache{ - cairo_color_t color; - cairo_surface_t *surface; - } cache[MAX_SURFACE_CACHE_SIZE]; - int size; -} solid_surface_cache; - -static cairo_bool_t -_cairo_pattern_solid_surface_matches ( - const struct _cairo_pattern_solid_surface_cache *cache, - const cairo_solid_pattern_t *pattern, - cairo_surface_t *dst) -{ - if (CAIRO_REFERENCE_COUNT_GET_VALUE (&cache->surface->ref_count) != 1) - return FALSE; - - if (! _cairo_color_equal (&cache->color, &pattern->color)) - return FALSE; - - if (! _cairo_surface_is_similar (cache->surface, dst, pattern->content)) - return FALSE; - - return TRUE; -} - -static cairo_int_status_t -_cairo_pattern_acquire_surface_for_solid (cairo_solid_pattern_t *pattern, - cairo_surface_t *dst, - int x, - int y, - unsigned int width, - unsigned int height, - cairo_surface_t **out, - cairo_surface_attributes_t *attribs) -{ - static int i; - - cairo_surface_t *surface; - cairo_status_t status; - - CAIRO_MUTEX_LOCK (_cairo_pattern_solid_surface_cache_lock); - - /* Check cache first */ - if (i < solid_surface_cache.size && - _cairo_pattern_solid_surface_matches (&solid_surface_cache.cache[i], - pattern, - dst)) - { - if (! _cairo_surface_reset (solid_surface_cache.cache[i].surface)) - goto DONE; - } - - for (i = 0 ; i < solid_surface_cache.size; i++) { - if (_cairo_pattern_solid_surface_matches (&solid_surface_cache.cache[i], - pattern, - dst)) - { - if (! _cairo_surface_reset (solid_surface_cache.cache[i].surface)) - goto DONE; - } - } - - /* Not cached, need to create new */ - surface = _cairo_surface_create_similar_solid (dst, - pattern->content, - 1, 1, - &pattern->color, - &pattern->base); - if (surface->status) { - status = surface->status; - goto UNLOCK; - } - - if (! _cairo_surface_is_similar (surface, dst, pattern->content)) { - /* in the rare event of a substitute surface being returned (e.g. - * malloc failure) don't cache the fallback surface */ - *out = surface; - goto NOCACHE; - } - - /* Cache new */ - if (solid_surface_cache.size < MAX_SURFACE_CACHE_SIZE) { - solid_surface_cache.size++; - } else { - i = rand () % MAX_SURFACE_CACHE_SIZE; - - /* Evict old */ - cairo_surface_destroy (solid_surface_cache.cache[i].surface); - } - - solid_surface_cache.cache[i].color = pattern->color; - solid_surface_cache.cache[i].surface = surface; - -DONE: - *out = cairo_surface_reference (solid_surface_cache.cache[i].surface); - -NOCACHE: - attribs->x_offset = attribs->y_offset = 0; - cairo_matrix_init_identity (&attribs->matrix); - attribs->extend = CAIRO_EXTEND_REPEAT; - attribs->filter = CAIRO_FILTER_NEAREST; - attribs->acquired = FALSE; - - status = CAIRO_STATUS_SUCCESS; - -UNLOCK: - CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_surface_cache_lock); - - return status; -} - -static void -_cairo_pattern_reset_solid_surface_cache (void) -{ - int i; - - CAIRO_MUTEX_LOCK (_cairo_pattern_solid_surface_cache_lock); - - for (i = 0; i < solid_surface_cache.size; i++) - cairo_surface_destroy (solid_surface_cache.cache[i].surface); - solid_surface_cache.size = 0; - - CAIRO_MUTEX_UNLOCK (_cairo_pattern_solid_surface_cache_lock); -} - -/** - * _cairo_pattern_is_opaque_solid - * - * Convenience function to determine whether a pattern is an opaque - * (alpha==1.0) solid color pattern. This is done by testing whether - * the pattern's alpha value when converted to a byte is 255, so if a - * backend actually supported deep alpha channels this function might - * not do the right thing. - * - * Return value: %TRUE if the pattern is an opaque, solid color. - **/ -cairo_bool_t -_cairo_pattern_is_opaque_solid (const cairo_pattern_t *pattern) -{ - cairo_solid_pattern_t *solid; - - if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) - return FALSE; - - solid = (cairo_solid_pattern_t *) pattern; - - return CAIRO_COLOR_IS_OPAQUE (&solid->color); -} - -static cairo_bool_t -_gradient_is_opaque (const cairo_gradient_pattern_t *gradient) -{ - unsigned int i; - - for (i = 0; i < gradient->n_stops; i++) - if (! CAIRO_COLOR_IS_OPAQUE (&gradient->stops[i].color)) - return FALSE; - - return TRUE; -} - -/** - * _cairo_pattern_is_opaque - * - * Convenience function to determine whether a pattern is an opaque - * pattern (of any type). The same caveats that apply to - * _cairo_pattern_is_opaque_solid apply here as well. - * - * Return value: %TRUE if the pattern is a opaque. - **/ -cairo_bool_t -_cairo_pattern_is_opaque (const cairo_pattern_t *abstract_pattern) -{ - const cairo_pattern_union_t *pattern; - - pattern = (cairo_pattern_union_t *) abstract_pattern; - switch (pattern->base.type) { - case CAIRO_PATTERN_TYPE_SOLID: - return _cairo_pattern_is_opaque_solid (abstract_pattern); - case CAIRO_PATTERN_TYPE_SURFACE: - return cairo_surface_get_content (pattern->surface.surface) == CAIRO_CONTENT_COLOR; - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: - return _gradient_is_opaque (&pattern->gradient.base); - } - - ASSERT_NOT_REACHED; - return FALSE; -} - -static cairo_int_status_t -_cairo_pattern_acquire_surface_for_surface (cairo_surface_pattern_t *pattern, - cairo_surface_t *dst, - int x, - int y, - unsigned int width, - unsigned int height, - cairo_surface_t **out, - cairo_surface_attributes_t *attr) -{ - cairo_int_status_t status; - int tx, ty; - - attr->acquired = FALSE; - - attr->extend = pattern->base.extend; - attr->filter = pattern->base.filter; - if (_cairo_matrix_is_integer_translation (&pattern->base.matrix, - &tx, &ty)) - { - cairo_matrix_init_identity (&attr->matrix); - attr->x_offset = tx; - attr->y_offset = ty; - attr->filter = CAIRO_FILTER_NEAREST; - } - else - { - attr->matrix = pattern->base.matrix; - attr->x_offset = attr->y_offset = 0; - tx = 0; - ty = 0; - } - - /* XXX: Hack: - * - * The way we currently support CAIRO_EXTEND_REFLECT is to create - * an image twice bigger on each side, and create a pattern of four - * images such that the new image, when repeated, has the same effect - * of reflecting the original pattern. - * - * This is because the reflect support in pixman is broken and we - * pass repeat instead of reflect to pixman. See - * _cairo_image_surface_set_attributes() for that. - */ - if (attr->extend == CAIRO_EXTEND_REFLECT) { - cairo_t *cr; - int w,h; - - cairo_rectangle_int_t extents; - status = _cairo_surface_get_extents (pattern->surface, &extents); - if (status) - return status; - - attr->extend = CAIRO_EXTEND_REPEAT; - - /* TODO: Instead of rendering pattern->surface four times to - * out, we should first copy pattern->surface to surface similar - * to dst and then copy that four times to out. This may cause - * an extra copy in the case of image destination, but for X servers, - * this will send pattern->surface just once over the wire instead - * of current four. - */ - x = extents.x; - y = extents.y; - w = 2 * extents.width; - h = 2 * extents.height; - - *out = cairo_surface_create_similar (dst, dst->content, w, h); - status = cairo_surface_status (*out); - if (status) { - cairo_surface_destroy (*out); - *out = NULL; - return status; - } - - (*out)->device_transform = pattern->surface->device_transform; - (*out)->device_transform_inverse = pattern->surface->device_transform_inverse; - - cr = cairo_create (*out); - - cairo_set_source_surface (cr, pattern->surface, -x, -y); - cairo_paint (cr); - - cairo_scale (cr, -1, +1); - cairo_set_source_surface (cr, pattern->surface, x-w, -y); - cairo_paint (cr); - - cairo_scale (cr, +1, -1); - cairo_set_source_surface (cr, pattern->surface, x-w, y-h); - cairo_paint (cr); - - cairo_scale (cr, -1, +1); - cairo_set_source_surface (cr, pattern->surface, -x, y-h); - cairo_paint (cr); - - status = cairo_status (cr); - cairo_destroy (cr); - - if (status) { - cairo_surface_destroy (*out); - *out = NULL; - } - - return status; - } - - if (_cairo_surface_is_image (dst)) - { - cairo_image_surface_t *image; - - status = _cairo_surface_acquire_source_image (pattern->surface, - &image, - &attr->extra); - if (status) - return status; - - *out = &image->base; - attr->acquired = TRUE; - } - else - { - cairo_rectangle_int_t extents; - status = _cairo_surface_get_extents (pattern->surface, &extents); - if (status) - return status; - - /* If we're repeating, we just play it safe and clone the entire surface. */ - /* If requested width and height are -1, clone the entire surface. - * This is relied on in the svg backend. */ - if (attr->extend == CAIRO_EXTEND_REPEAT || - (width == (unsigned int) -1 && height == (unsigned int) -1)) { - x = extents.x; - y = extents.y; - width = extents.width; - height = extents.height; - } else { - /* Otherwise, we first transform the rectangle to the - * coordinate space of the source surface so that we can - * clone only that portion of the surface that will be - * read. */ - if (! _cairo_matrix_is_identity (&attr->matrix)) { - double x1 = x; - double y1 = y; - double x2 = x + width; - double y2 = y + height; - cairo_bool_t is_tight; - - _cairo_matrix_transform_bounding_box (&attr->matrix, - &x1, &y1, &x2, &y2, - &is_tight); - - /* The transform_bounding_box call may have resulted - * in a region larger than the surface, but we never - * want to clone more than the surface itself, (we - * know we're not repeating at this point due to the - * above. - * - * XXX: The one padding here is to account for filter - * radius. It's a workaround right now, until we get a - * proper fix. (see bug #10508) - */ - x = MAX (0, floor (x1) - 1); - y = MAX (0, floor (y1) - 1); - width = MIN (extents.width, ceil (x2) + 1) - x; - height = MIN (extents.height, ceil (y2) + 1) - y; - } - x += tx; - y += ty; - } - - status = _cairo_surface_clone_similar (dst, pattern->surface, - x, y, width, height, out); - } - - return status; -} - -/** - * _cairo_pattern_acquire_surface: - * @pattern: a #cairo_pattern_t - * @dst: destination surface - * @x: X coordinate in source corresponding to left side of destination area - * @y: Y coordinate in source corresponding to top side of destination area - * @width: width of destination area - * @height: height of destination area - * @surface_out: location to store a pointer to a surface - * @attributes: surface attributes that destination backend should apply to - * the returned surface - * - * A convenience function to obtain a surface to use as the source for - * drawing on @dst. - * - * Return value: %CAIRO_STATUS_SUCCESS if a surface was stored in @surface_out. - **/ -cairo_int_status_t -_cairo_pattern_acquire_surface (cairo_pattern_t *pattern, - cairo_surface_t *dst, - int x, - int y, - unsigned int width, - unsigned int height, - cairo_surface_t **surface_out, - cairo_surface_attributes_t *attributes) -{ - cairo_status_t status; - - if (pattern->status) { - *surface_out = NULL; - attributes->acquired = FALSE; - return pattern->status; - } - - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: { - cairo_solid_pattern_t *src = (cairo_solid_pattern_t *) pattern; - - status = _cairo_pattern_acquire_surface_for_solid (src, dst, - x, y, width, height, - surface_out, - attributes); - } break; - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: { - cairo_gradient_pattern_t *src = (cairo_gradient_pattern_t *) pattern; - - /* fast path for gradients with less than 2 color stops */ - if (src->n_stops < 2) - { - cairo_solid_pattern_t solid; - - if (src->n_stops) - { - cairo_color_t color; - - _cairo_color_init_rgba (&color, - src->stops->color.red, - src->stops->color.green, - src->stops->color.blue, - src->stops->color.alpha); - - _cairo_pattern_init_solid (&solid, &color, - CAIRO_COLOR_IS_OPAQUE (&color) ? - CAIRO_CONTENT_COLOR : - CAIRO_CONTENT_COLOR_ALPHA); - } - else - { - const cairo_color_t *color; - - color = _cairo_stock_color (CAIRO_STOCK_TRANSPARENT); - _cairo_pattern_init_solid (&solid, color, - CAIRO_CONTENT_ALPHA); - } - - status = _cairo_pattern_acquire_surface_for_solid (&solid, dst, - x, y, - width, height, - surface_out, - attributes); - } - else - { - status = _cairo_pattern_acquire_surface_for_gradient (src, dst, - x, y, - width, height, - surface_out, - attributes); - } - } break; - case CAIRO_PATTERN_TYPE_SURFACE: { - cairo_surface_pattern_t *src = (cairo_surface_pattern_t *) pattern; - - status = _cairo_pattern_acquire_surface_for_surface (src, dst, - x, y, width, height, - surface_out, - attributes); - } break; - default: - ASSERT_NOT_REACHED; - status = _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - } - - return status; -} - -/** - * _cairo_pattern_release_surface: - * @pattern: a #cairo_pattern_t - * @surface: a surface obtained by _cairo_pattern_acquire_surface - * @attributes: attributes obtained by _cairo_pattern_acquire_surface - * - * Releases resources obtained by _cairo_pattern_acquire_surface. - **/ -void -_cairo_pattern_release_surface (cairo_pattern_t *pattern, - cairo_surface_t *surface, - cairo_surface_attributes_t *attributes) -{ - if (attributes->acquired) - { - cairo_surface_pattern_t *surface_pattern; - - assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE); - surface_pattern = (cairo_surface_pattern_t *) pattern; - - _cairo_surface_release_source_image (surface_pattern->surface, - (cairo_image_surface_t *) surface, - attributes->extra); - } - else - { - cairo_surface_destroy (surface); - } -} - -cairo_int_status_t -_cairo_pattern_acquire_surfaces (cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - unsigned int width, - unsigned int height, - cairo_surface_t **src_out, - cairo_surface_t **mask_out, - cairo_surface_attributes_t *src_attributes, - cairo_surface_attributes_t *mask_attributes) -{ - cairo_int_status_t status; - cairo_pattern_union_t src_tmp, mask_tmp; - - if (src->status) - return src->status; - if (mask && mask->status) - return mask->status; - - /* If src and mask are both solid, then the mask alpha can be - * combined into src and mask can be ignored. */ - - /* XXX: This optimization assumes that there is no color - * information in mask, so this will need to change when we - * support RENDER-style 4-channel masks. */ - if (src->type == CAIRO_PATTERN_TYPE_SOLID && - mask && mask->type == CAIRO_PATTERN_TYPE_SOLID) - { - cairo_color_t combined; - cairo_solid_pattern_t *src_solid = (cairo_solid_pattern_t *) src; - cairo_solid_pattern_t *mask_solid = (cairo_solid_pattern_t *) mask; - - combined = src_solid->color; - _cairo_color_multiply_alpha (&combined, mask_solid->color.alpha); - - _cairo_pattern_init_solid (&src_tmp.solid, &combined, - CAIRO_COLOR_IS_OPAQUE (&combined) ? - CAIRO_CONTENT_COLOR : - CAIRO_CONTENT_COLOR_ALPHA); - - mask = NULL; - } - else - { - status = _cairo_pattern_init_copy (&src_tmp.base, src); - if (status) - return status; - } - - status = _cairo_pattern_acquire_surface (&src_tmp.base, dst, - src_x, src_y, - width, height, - src_out, src_attributes); - if (status) { - _cairo_pattern_fini (&src_tmp.base); - return status; - } - - if (mask == NULL) - { - _cairo_pattern_fini (&src_tmp.base); - *mask_out = NULL; - return CAIRO_STATUS_SUCCESS; - } - - status = _cairo_pattern_init_copy (&mask_tmp.base, mask); - if (status) - goto CLEANUP_SOURCE; - - status = _cairo_pattern_acquire_surface (&mask_tmp.base, dst, - mask_x, mask_y, - width, height, - mask_out, mask_attributes); - - _cairo_pattern_fini (&mask_tmp.base); - -CLEANUP_SOURCE: - if (status) - _cairo_pattern_release_surface (&src_tmp.base, - *src_out, src_attributes); - - _cairo_pattern_fini (&src_tmp.base); - - return status; -} - -/** - * _cairo_pattern_get_extents: - * - * Return the "target-space" extents of @pattern in @extents. - * - * For unbounded patterns, the @extents will be initialized with - * "infinite" extents, (minimum and maximum fixed-point values). - * - * XXX: Currently, bounded gradient patterns will also return - * "infinite" extents, though it would be possible to optimize these - * with a little more work. - **/ -cairo_status_t -_cairo_pattern_get_extents (cairo_pattern_t *pattern, - cairo_rectangle_int_t *extents) -{ - if (pattern->extend == CAIRO_EXTEND_NONE && - pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - { - cairo_status_t status; - cairo_rectangle_int_t surface_extents; - cairo_surface_pattern_t *surface_pattern = - (cairo_surface_pattern_t *) pattern; - cairo_surface_t *surface = surface_pattern->surface; - cairo_matrix_t imatrix; - double x1, y1, x2, y2; - - status = _cairo_surface_get_extents (surface, &surface_extents); - if (status) - return status; - - x1 = surface_extents.x; - y1 = surface_extents.y; - x2 = x1 + surface_extents.width; - y2 = y1 + surface_extents.height; - - imatrix = pattern->matrix; - status = cairo_matrix_invert (&imatrix); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - _cairo_matrix_transform_bounding_box (&imatrix, - &x1, &y1, &x2, &y2, - NULL); - - x1 = floor (x1); - if (x1 < 0) - x1 = 0; - y1 = floor (y1); - if (y1 < 0) - y1 = 0; - - x2 = ceil (x2); - if (x2 > CAIRO_RECT_INT_MAX) - x2 = CAIRO_RECT_INT_MAX; - y2 = ceil (y2); - if (y2 > CAIRO_RECT_INT_MAX) - y2 = CAIRO_RECT_INT_MAX; - - extents->x = x1; extents->width = x2 - x1; - extents->y = y1; extents->height = y2 - y1; - - return CAIRO_STATUS_SUCCESS; - } - - /* XXX: We could optimize gradients with pattern->extend of NONE - * here in some cases, (eg. radial gradients and 1 axis of - * horizontal/vertical linear gradients). - */ - - /* XXX: because extents are represented as x, y, w, h we can't - * actually have a rectangle that covers our entire valid - * coordinate space, since we'd need width/height to be 2*INT_MAX. - */ - - extents->x = 0; - extents->y = 0; - extents->width = CAIRO_RECT_INT_MAX; - extents->height = CAIRO_RECT_INT_MAX; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pattern_get_rgba - * @pattern: a #cairo_pattern_t - * @red: return value for red component of color, or %NULL - * @green: return value for green component of color, or %NULL - * @blue: return value for blue component of color, or %NULL - * @alpha: return value for alpha component of color, or %NULL - * - * Gets the solid color for a solid color pattern. - * - * Return value: %CAIRO_STATUS_SUCCESS, or - * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH if the pattern is not a solid - * color pattern. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_pattern_get_rgba (cairo_pattern_t *pattern, - double *red, double *green, - double *blue, double *alpha) -{ - cairo_solid_pattern_t *solid = (cairo_solid_pattern_t*) pattern; - double r0, g0, b0, a0; - - if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - - _cairo_color_get_rgba (&solid->color, &r0, &g0, &b0, &a0); - - if (red) - *red = r0; - if (green) - *green = g0; - if (blue) - *blue = b0; - if (alpha) - *alpha = a0; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pattern_get_surface - * @pattern: a #cairo_pattern_t - * @surface: return value for surface of pattern, or %NULL - * - * Gets the surface of a surface pattern. The reference returned in - * @surface is owned by the pattern; the caller should call - * cairo_surface_reference() if the surface is to be retained. - * - * Return value: %CAIRO_STATUS_SUCCESS, or - * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH if the pattern is not a surface - * pattern. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_pattern_get_surface (cairo_pattern_t *pattern, - cairo_surface_t **surface) -{ - cairo_surface_pattern_t *spat = (cairo_surface_pattern_t*) pattern; - - if (pattern->type != CAIRO_PATTERN_TYPE_SURFACE) - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - - if (surface) - *surface = spat->surface; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pattern_get_color_stop_rgba - * @pattern: a #cairo_pattern_t - * @index: index of the stop to return data for - * @offset: return value for the offset of the stop, or %NULL - * @red: return value for red component of color, or %NULL - * @green: return value for green component of color, or %NULL - * @blue: return value for blue component of color, or %NULL - * @alpha: return value for alpha component of color, or %NULL - * - * Gets the color and offset information at the given @index for a - * gradient pattern. Values of @index are 0 to 1 less than the number - * returned by cairo_pattern_get_color_stop_count(). - * - * Return value: %CAIRO_STATUS_SUCCESS, or %CAIRO_STATUS_INVALID_INDEX - * if @index is not valid for the given pattern. If the pattern is - * not a gradient pattern, %CAIRO_STATUS_PATTERN_TYPE_MISMATCH is - * returned. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, - int index, double *offset, - double *red, double *green, - double *blue, double *alpha) -{ - cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t*) pattern; - - if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && - pattern->type != CAIRO_PATTERN_TYPE_RADIAL) - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - - if (index < 0 || (unsigned int) index >= gradient->n_stops) - return _cairo_error (CAIRO_STATUS_INVALID_INDEX); - - if (offset) - *offset = gradient->stops[index].offset; - if (red) - *red = gradient->stops[index].color.red; - if (green) - *green = gradient->stops[index].color.green; - if (blue) - *blue = gradient->stops[index].color.blue; - if (alpha) - *alpha = gradient->stops[index].color.alpha; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pattern_get_color_stop_count - * @pattern: a #cairo_pattern_t - * @count: return value for the number of color stops, or %NULL - * - * Gets the number of color stops specified in the given gradient - * pattern. - * - * Return value: %CAIRO_STATUS_SUCCESS, or - * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH if @pattern is not a gradient - * pattern. - * - * Since: 1.4 - */ -cairo_status_t -cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, - int *count) -{ - cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t*) pattern; - - if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && - pattern->type != CAIRO_PATTERN_TYPE_RADIAL) - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - - if (count) - *count = gradient->n_stops; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pattern_get_linear_points - * @pattern: a #cairo_pattern_t - * @x0: return value for the x coordinate of the first point, or %NULL - * @y0: return value for the y coordinate of the first point, or %NULL - * @x1: return value for the x coordinate of the second point, or %NULL - * @y1: return value for the y coordinate of the second point, or %NULL - * - * Gets the gradient endpoints for a linear gradient. - * - * Return value: %CAIRO_STATUS_SUCCESS, or - * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH if @pattern is not a linear - * gradient pattern. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_pattern_get_linear_points (cairo_pattern_t *pattern, - double *x0, double *y0, - double *x1, double *y1) -{ - cairo_linear_pattern_t *linear = (cairo_linear_pattern_t*) pattern; - - if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR) - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - - if (x0) - *x0 = _cairo_fixed_to_double (linear->p1.x); - if (y0) - *y0 = _cairo_fixed_to_double (linear->p1.y); - if (x1) - *x1 = _cairo_fixed_to_double (linear->p2.x); - if (y1) - *y1 = _cairo_fixed_to_double (linear->p2.y); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pattern_get_radial_circles - * @pattern: a #cairo_pattern_t - * @x0: return value for the x coordinate of the center of the first circle, or %NULL - * @y0: return value for the y coordinate of the center of the first circle, or %NULL - * @r0: return value for the radius of the first circle, or %NULL - * @x1: return value for the x coordinate of the center of the second circle, or %NULL - * @y1: return value for the y coordinate of the center of the second circle, or %NULL - * @r1: return value for the radius of the second circle, or %NULL - * - * Gets the gradient endpoint circles for a radial gradient, each - * specified as a center coordinate and a radius. - * - * Return value: %CAIRO_STATUS_SUCCESS, or - * %CAIRO_STATUS_PATTERN_TYPE_MISMATCH if @pattern is not a radial - * gradient pattern. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, - double *x0, double *y0, double *r0, - double *x1, double *y1, double *r1) -{ - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t*) pattern; - - if (pattern->type != CAIRO_PATTERN_TYPE_RADIAL) - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - - if (x0) - *x0 = _cairo_fixed_to_double (radial->c1.x); - if (y0) - *y0 = _cairo_fixed_to_double (radial->c1.y); - if (r0) - *r0 = _cairo_fixed_to_double (radial->r1); - if (x1) - *x1 = _cairo_fixed_to_double (radial->c2.x); - if (y1) - *y1 = _cairo_fixed_to_double (radial->c2.y); - if (r1) - *r1 = _cairo_fixed_to_double (radial->r2); - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_pattern_reset_static_data (void) -{ - _cairo_pattern_reset_solid_pattern_cache (); - _cairo_pattern_reset_solid_surface_cache (); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo.pc.in libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo.pc.in --- libgdiplus-4.0-2.10.9/cairo/src/cairo.pc.in 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo.pc.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: cairo -Description: Multi-platform 2D graphics library -Version: @VERSION@ - -@PKGCONFIG_REQUIRES@: @CAIRO_REQUIRES@ -Libs: -L${libdir} -lcairo -Libs.private: @CAIRO_NONPKGCONFIG_LIBS@ -Cflags: -I${includedir}/cairo diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PDF_H -#define CAIRO_PDF_H - -#include - -#if CAIRO_HAS_PDF_SURFACE - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_pdf_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -cairo_public cairo_surface_t * -cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_pdf_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_PDF_SURFACE */ -# error Cairo was not compiled with support for the pdf backend -#endif /* CAIRO_HAS_PDF_SURFACE */ - -#endif /* CAIRO_PDF_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-operators.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-operators.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-operators.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-operators.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,977 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * Copyright © 2006 Red Hat, Inc - * Copyright © 2007, 2008 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Carl Worth - * Adrian Johnson - */ - -#include "cairoint.h" -#include "cairo-pdf-operators-private.h" -#include "cairo-path-fixed-private.h" -#include "cairo-output-stream-private.h" -#include "cairo-scaled-font-subsets-private.h" - -#include - -void -_cairo_pdf_operators_init (cairo_pdf_operators_t *pdf_operators, - cairo_output_stream_t *stream, - cairo_matrix_t *cairo_to_pdf, - cairo_scaled_font_subsets_t *font_subsets) -{ - pdf_operators->stream = stream; - pdf_operators->cairo_to_pdf = *cairo_to_pdf; - pdf_operators->font_subsets = font_subsets; - pdf_operators->use_font_subset = NULL; - pdf_operators->use_font_subset_closure = NULL; -} - -void -_cairo_pdf_operators_fini (cairo_pdf_operators_t *pdf_operators) -{ -} - -void -_cairo_pdf_operators_set_font_subsets_callback (cairo_pdf_operators_t *pdf_operators, - cairo_pdf_operators_use_font_subset_t use_font_subset, - void *closure) -{ - pdf_operators->use_font_subset = use_font_subset; - pdf_operators->use_font_subset_closure = closure; -} - -void -_cairo_pdf_operators_set_stream (cairo_pdf_operators_t *pdf_operators, - cairo_output_stream_t *stream) -{ - pdf_operators->stream = stream; -} - -void -_cairo_pdf_operators_set_cairo_to_pdf_matrix (cairo_pdf_operators_t *pdf_operators, - cairo_matrix_t *cairo_to_pdf) -{ - pdf_operators->cairo_to_pdf = *cairo_to_pdf; -} - -/* A word wrap stream can be used as a filter to do word wrapping on - * top of an existing output stream. The word wrapping is quite - * simple, using isspace to determine characters that separate - * words. Any word that will cause the column count exceed the given - * max_column will have a '\n' character emitted before it. - * - * The stream is careful to maintain integrity for words that cross - * the boundary from one call to write to the next. - * - * Note: This stream does not guarantee that the output will never - * exceed max_column. In particular, if a single word is larger than - * max_column it will not be broken up. - */ -typedef struct _word_wrap_stream { - cairo_output_stream_t base; - cairo_output_stream_t *output; - int max_column; - int column; - cairo_bool_t last_write_was_space; - cairo_bool_t in_hexstring; - cairo_bool_t empty_hexstring; -} word_wrap_stream_t; - -static int -_count_word_up_to (const unsigned char *s, int length) -{ - int word = 0; - - while (length--) { - if (! (isspace (*s) || *s == '<')) { - s++; - word++; - } else { - return word; - } - } - - return word; -} - - -/* Count up to either the end of the ASCII hexstring or the number - * of columns remaining. - */ -static int -_count_hexstring_up_to (const unsigned char *s, int length, int columns) -{ - int word = 0; - - while (length--) { - if (*s++ != '>') - word++; - else - return word; - - columns--; - if (columns < 0 && word > 1) - return word; - } - - return word; -} - -static cairo_status_t -_word_wrap_stream_write (cairo_output_stream_t *base, - const unsigned char *data, - unsigned int length) -{ - word_wrap_stream_t *stream = (word_wrap_stream_t *) base; - cairo_bool_t newline; - int word; - - while (length) { - if (*data == '<') { - stream->in_hexstring = TRUE; - stream->empty_hexstring = TRUE; - stream->last_write_was_space = FALSE; - data++; - length--; - _cairo_output_stream_printf (stream->output, "<"); - stream->column++; - } else if (*data == '>') { - stream->in_hexstring = FALSE; - stream->last_write_was_space = FALSE; - data++; - length--; - _cairo_output_stream_printf (stream->output, ">"); - stream->column++; - } else if (isspace (*data)) { - newline = (*data == '\n' || *data == '\r'); - if (! newline && stream->column >= stream->max_column) { - _cairo_output_stream_printf (stream->output, "\n"); - stream->column = 0; - } - _cairo_output_stream_write (stream->output, data, 1); - data++; - length--; - if (newline) { - stream->column = 0; - } - else - stream->column++; - stream->last_write_was_space = TRUE; - } else { - if (stream->in_hexstring) { - word = _count_hexstring_up_to (data, length, - MAX (stream->max_column - stream->column, 0)); - } else { - word = _count_word_up_to (data, length); - } - /* Don't wrap if this word is a continuation of a non hex - * string word from a previous call to write. */ - if (stream->column + word >= stream->max_column) { - if (stream->last_write_was_space || - (stream->in_hexstring && !stream->empty_hexstring)) - { - _cairo_output_stream_printf (stream->output, "\n"); - stream->column = 0; - } - } - _cairo_output_stream_write (stream->output, data, word); - data += word; - length -= word; - stream->column += word; - stream->last_write_was_space = FALSE; - if (stream->in_hexstring) - stream->empty_hexstring = FALSE; - } - } - - return _cairo_output_stream_get_status (stream->output); -} - -static cairo_status_t -_word_wrap_stream_close (cairo_output_stream_t *base) -{ - word_wrap_stream_t *stream = (word_wrap_stream_t *) base; - - return _cairo_output_stream_get_status (stream->output); -} - -static cairo_output_stream_t * -_word_wrap_stream_create (cairo_output_stream_t *output, int max_column) -{ - word_wrap_stream_t *stream; - - if (output->status) - return _cairo_output_stream_create_in_error (output->status); - - stream = malloc (sizeof (word_wrap_stream_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, - _word_wrap_stream_write, - _word_wrap_stream_close); - stream->output = output; - stream->max_column = max_column; - stream->column = 0; - stream->last_write_was_space = FALSE; - stream->in_hexstring = FALSE; - stream->empty_hexstring = TRUE; - - return &stream->base; -} - -typedef struct _pdf_path_info { - cairo_output_stream_t *output; - cairo_matrix_t *path_transform; - cairo_line_cap_t line_cap; - cairo_point_t last_move_to_point; - cairo_bool_t has_sub_path; -} pdf_path_info_t; - -static cairo_status_t -_cairo_pdf_path_move_to (void *closure, cairo_point_t *point) -{ - pdf_path_info_t *info = closure; - double x = _cairo_fixed_to_double (point->x); - double y = _cairo_fixed_to_double (point->y); - - info->last_move_to_point = *point; - info->has_sub_path = FALSE; - cairo_matrix_transform_point (info->path_transform, &x, &y); - _cairo_output_stream_printf (info->output, - "%g %g m ", x, y); - - return _cairo_output_stream_get_status (info->output); -} - -static cairo_status_t -_cairo_pdf_path_line_to (void *closure, cairo_point_t *point) -{ - pdf_path_info_t *info = closure; - double x = _cairo_fixed_to_double (point->x); - double y = _cairo_fixed_to_double (point->y); - - if (info->line_cap != CAIRO_LINE_CAP_ROUND && - ! info->has_sub_path && - point->x == info->last_move_to_point.x && - point->y == info->last_move_to_point.y) - { - return CAIRO_STATUS_SUCCESS; - } - - info->has_sub_path = TRUE; - cairo_matrix_transform_point (info->path_transform, &x, &y); - _cairo_output_stream_printf (info->output, - "%g %g l ", x, y); - - return _cairo_output_stream_get_status (info->output); -} - -static cairo_status_t -_cairo_pdf_path_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d) -{ - pdf_path_info_t *info = closure; - double bx = _cairo_fixed_to_double (b->x); - double by = _cairo_fixed_to_double (b->y); - double cx = _cairo_fixed_to_double (c->x); - double cy = _cairo_fixed_to_double (c->y); - double dx = _cairo_fixed_to_double (d->x); - double dy = _cairo_fixed_to_double (d->y); - - info->has_sub_path = TRUE; - cairo_matrix_transform_point (info->path_transform, &bx, &by); - cairo_matrix_transform_point (info->path_transform, &cx, &cy); - cairo_matrix_transform_point (info->path_transform, &dx, &dy); - _cairo_output_stream_printf (info->output, - "%g %g %g %g %g %g c ", - bx, by, cx, cy, dx, dy); - return _cairo_output_stream_get_status (info->output); -} - -static cairo_status_t -_cairo_pdf_path_close_path (void *closure) -{ - pdf_path_info_t *info = closure; - - if (info->line_cap != CAIRO_LINE_CAP_ROUND && - ! info->has_sub_path) - { - return CAIRO_STATUS_SUCCESS; - } - - _cairo_output_stream_printf (info->output, - "h\n"); - - return _cairo_output_stream_get_status (info->output); -} - -static cairo_status_t -_cairo_pdf_path_rectangle (pdf_path_info_t *info, cairo_box_t *box) -{ - double x1 = _cairo_fixed_to_double (box->p1.x); - double y1 = _cairo_fixed_to_double (box->p1.y); - double x2 = _cairo_fixed_to_double (box->p2.x); - double y2 = _cairo_fixed_to_double (box->p2.y); - - cairo_matrix_transform_point (info->path_transform, &x1, &y1); - cairo_matrix_transform_point (info->path_transform, &x2, &y2); - _cairo_output_stream_printf (info->output, - "%g %g %g %g re ", - x1, y1, x2 - x1, y2 - y1); - - return _cairo_output_stream_get_status (info->output); -} - -/* The line cap value is needed to workaround the fact that PostScript - * and PDF semantics for stroking degenerate sub-paths do not match - * cairo semantics. (PostScript draws something for any line cap - * value, while cairo draws something only for round caps). - * - * When using this function to emit a path to be filled, rather than - * stroked, simply pass %CAIRO_LINE_CAP_ROUND which will guarantee that - * the stroke workaround will not modify the path being emitted. - */ -static cairo_status_t -_cairo_pdf_operators_emit_path (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_matrix_t *path_transform, - cairo_line_cap_t line_cap) -{ - cairo_output_stream_t *word_wrap; - cairo_status_t status, status2; - pdf_path_info_t info; - cairo_box_t box; - - word_wrap = _word_wrap_stream_create (pdf_operators->stream, 72); - status = _cairo_output_stream_get_status (word_wrap); - if (status) - return _cairo_output_stream_destroy (word_wrap); - - info.output = word_wrap; - info.path_transform = path_transform; - info.line_cap = line_cap; - if (_cairo_path_fixed_is_rectangle (path, &box)) { - status = _cairo_pdf_path_rectangle (&info, &box); - } else { - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_pdf_path_move_to, - _cairo_pdf_path_line_to, - _cairo_pdf_path_curve_to, - _cairo_pdf_path_close_path, - &info); - } - - status2 = _cairo_output_stream_destroy (word_wrap); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - return status; -} - -cairo_int_status_t -_cairo_pdf_operators_clip (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule) -{ - const char *pdf_operator; - cairo_status_t status; - - if (! path->has_current_point) { - /* construct an empty path */ - _cairo_output_stream_printf (pdf_operators->stream, "0 0 m "); - } else { - status = _cairo_pdf_operators_emit_path (pdf_operators, - path, - &pdf_operators->cairo_to_pdf, - CAIRO_LINE_CAP_ROUND); - if (status) - return status; - } - - switch (fill_rule) { - case CAIRO_FILL_RULE_WINDING: - pdf_operator = "W"; - break; - case CAIRO_FILL_RULE_EVEN_ODD: - pdf_operator = "W*"; - break; - default: - ASSERT_NOT_REACHED; - } - - _cairo_output_stream_printf (pdf_operators->stream, - "%s n\n", - pdf_operator); - - return _cairo_output_stream_get_status (pdf_operators->stream); -} - -static int -_cairo_pdf_line_cap (cairo_line_cap_t cap) -{ - switch (cap) { - case CAIRO_LINE_CAP_BUTT: - return 0; - case CAIRO_LINE_CAP_ROUND: - return 1; - case CAIRO_LINE_CAP_SQUARE: - return 2; - default: - ASSERT_NOT_REACHED; - return 0; - } -} - -static int -_cairo_pdf_line_join (cairo_line_join_t join) -{ - switch (join) { - case CAIRO_LINE_JOIN_MITER: - return 0; - case CAIRO_LINE_JOIN_ROUND: - return 1; - case CAIRO_LINE_JOIN_BEVEL: - return 2; - default: - ASSERT_NOT_REACHED; - return 0; - } -} - -static cairo_int_status_t -_cairo_pdf_operators_emit_stroke_style (cairo_pdf_operators_t *pdf_operators, - cairo_stroke_style_t *style, - double scale) -{ - double *dash = style->dash; - int num_dashes = style->num_dashes; - double dash_offset = style->dash_offset; - - /* PostScript has "special needs" when it comes to zero-length - * dash segments with butt caps. It apparently (at least - * according to ghostscript) draws hairlines for this - * case. That's not what the cairo semantics want, so we first - * touch up the array to eliminate any 0.0 values that will - * result in "on" segments. - */ - if (num_dashes && style->line_cap == CAIRO_LINE_CAP_BUTT) { - int i; - - /* If there's an odd number of dash values they will each get - * interpreted as both on and off. So we first explicitly - * expand the array to remove the duplicate usage so that we - * can modify some of the values. - */ - if (num_dashes % 2) { - dash = _cairo_malloc_abc (num_dashes, 2, sizeof (double)); - if (dash == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (dash, style->dash, num_dashes * sizeof (double)); - memcpy (dash + num_dashes, style->dash, num_dashes * sizeof (double)); - - num_dashes *= 2; - } - - for (i = 0; i < num_dashes; i += 2) { - if (dash[i] == 0.0) { - /* If we're at the front of the list, we first rotate - * two elements from the end of the list to the front - * of the list before folding away the 0.0. Or, if - * there are only two dash elements, then there is - * nothing at all to draw. - */ - if (i == 0) { - double last_two[2]; - - if (num_dashes == 2) { - if (dash != style->dash) - free (dash); - return CAIRO_INT_STATUS_NOTHING_TO_DO; - } - /* The cases of num_dashes == 0, 1, or 3 elements - * cannot exist, so the rotation of 2 elements - * will always be safe */ - memcpy (last_two, dash + num_dashes - 2, sizeof (last_two)); - memmove (dash + 2, dash, (num_dashes - 2) * sizeof (double)); - memcpy (dash, last_two, sizeof (last_two)); - dash_offset += dash[0] + dash[1]; - i = 2; - } - dash[i-1] += dash[i+1]; - num_dashes -= 2; - memmove (dash + i, dash + i + 2, (num_dashes - i) * sizeof (double)); - /* If we might have just rotated, it's possible that - * we rotated a 0.0 value to the front of the list. - * Set i to -2 so it will get incremented to 0. */ - if (i == 2) - i = -2; - } - } - } - - _cairo_output_stream_printf (pdf_operators->stream, - "%f w\n", - style->line_width * scale); - - _cairo_output_stream_printf (pdf_operators->stream, - "%d J\n", - _cairo_pdf_line_cap (style->line_cap)); - - _cairo_output_stream_printf (pdf_operators->stream, - "%d j\n", - _cairo_pdf_line_join (style->line_join)); - - if (num_dashes) { - int d; - - _cairo_output_stream_printf (pdf_operators->stream, "["); - for (d = 0; d < num_dashes; d++) - _cairo_output_stream_printf (pdf_operators->stream, " %f", dash[d] * scale); - _cairo_output_stream_printf (pdf_operators->stream, "] %f d\n", - dash_offset * scale); - } else { - _cairo_output_stream_printf (pdf_operators->stream, "[] 0.0 d\n"); - } - if (dash != style->dash) - free (dash); - - _cairo_output_stream_printf (pdf_operators->stream, - "%f M ", - style->miter_limit < 1.0 ? 1.0 : style->miter_limit); - - return _cairo_output_stream_get_status (pdf_operators->stream); -} - -/* Scale the matrix so the largest absolute value of the non - * translation components is 1.0. Return the scale required to restore - * the matrix to the original values. - * - * eg the matrix [ 100 0 0 50 20 10 ] - * - * is rescaled to [ 1 0 0 0.5 0.2 0.1 ] - * and the scale returned is 100 - */ -static void -_cairo_matrix_factor_out_scale (cairo_matrix_t *m, double *scale) -{ - double s; - - s = fabs (m->xx); - if (fabs (m->xy) > s) - s = fabs (m->xy); - if (fabs (m->yx) > s) - s = fabs (m->yx); - if (fabs (m->yy) > s) - s = fabs (m->yy); - *scale = s; - s = 1.0/s; - cairo_matrix_scale (m, s, s); -} - -static cairo_int_status_t -_cairo_pdf_operators_emit_stroke (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - const char *pdf_operator) -{ - cairo_status_t status; - cairo_matrix_t m, path_transform; - cairo_bool_t has_ctm = TRUE; - double scale = 1.0; - - /* Optimize away the stroke ctm when it does not affect the - * stroke. There are other ctm cases that could be optimized - * however this is the most common. - */ - if (fabs(ctm->xx) == 1.0 && fabs(ctm->yy) == 1.0 && - fabs(ctm->xy) == 0.0 && fabs(ctm->yx) == 0.0) - { - has_ctm = FALSE; - } - - /* The PDF CTM is transformed to the user space CTM when stroking - * so the corect pen shape will be used. This also requires that - * the path be transformed to user space when emitted. The - * conversion of path coordinates to user space may cause rounding - * errors. For example the device space point (1.234, 3.142) when - * transformed to a user space CTM of [100 0 0 100 0 0] will be - * emitted as (0.012, 0.031). - * - * To avoid the rounding problem we scale the user space CTM - * matrix so that all the non translation components of the matrix - * are <= 1. The line width and and dashes are scaled by the - * inverse of the scale applied to the CTM. This maintains the - * shape of the stroke pen while keeping the user space CTM within - * the range that maximizes the precision of the emitted path. - */ - if (has_ctm) { - m = *ctm; - /* Zero out the translation since it does not affect the pen - * shape however it may cause unnecessary digits to be emitted. - */ - m.x0 = 0.0; - m.y0 = 0.0; - _cairo_matrix_factor_out_scale (&m, &scale); - path_transform = m; - status = cairo_matrix_invert (&path_transform); - if (status) - return status; - - cairo_matrix_multiply (&m, &m, &pdf_operators->cairo_to_pdf); - } - - status = _cairo_pdf_operators_emit_stroke_style (pdf_operators, style, scale); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - if (status) - return status; - - if (has_ctm) { - _cairo_output_stream_printf (pdf_operators->stream, - "q %f %f %f %f %f %f cm\n", - m.xx, m.yx, m.xy, m.yy, - m.x0, m.y0); - } else { - path_transform = pdf_operators->cairo_to_pdf; - } - - status = _cairo_pdf_operators_emit_path (pdf_operators, - path, - &path_transform, - style->line_cap); - if (status) - return status; - - _cairo_output_stream_printf (pdf_operators->stream, "%s", pdf_operator); - if (has_ctm) - _cairo_output_stream_printf (pdf_operators->stream, " Q"); - - _cairo_output_stream_printf (pdf_operators->stream, "\n"); - - return _cairo_output_stream_get_status (pdf_operators->stream); -} - -cairo_int_status_t -_cairo_pdf_operators_stroke (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse) -{ - return _cairo_pdf_operators_emit_stroke (pdf_operators, - path, - style, - ctm, - ctm_inverse, - "S"); -} - -cairo_int_status_t -_cairo_pdf_operators_fill (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule) -{ - const char *pdf_operator; - cairo_status_t status; - - status = _cairo_pdf_operators_emit_path (pdf_operators, - path, - &pdf_operators->cairo_to_pdf, - CAIRO_LINE_CAP_ROUND); - if (status) - return status; - - switch (fill_rule) { - case CAIRO_FILL_RULE_WINDING: - pdf_operator = "f"; - break; - case CAIRO_FILL_RULE_EVEN_ODD: - pdf_operator = "f*"; - break; - default: - ASSERT_NOT_REACHED; - } - - _cairo_output_stream_printf (pdf_operators->stream, - "%s\n", - pdf_operator); - - return _cairo_output_stream_get_status (pdf_operators->stream); -} - -cairo_int_status_t -_cairo_pdf_operators_fill_stroke (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse) -{ - const char *operator; - - switch (fill_rule) { - case CAIRO_FILL_RULE_WINDING: - operator = "B"; - break; - case CAIRO_FILL_RULE_EVEN_ODD: - operator = "B*"; - break; - default: - ASSERT_NOT_REACHED; - } - - return _cairo_pdf_operators_emit_stroke (pdf_operators, - path, - style, - ctm, - ctm_inverse, - operator); -} - -#define GLYPH_POSITION_TOLERANCE 0.001 - -cairo_int_status_t -_cairo_pdf_operators_show_glyphs (cairo_pdf_operators_t *pdf_operators, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - unsigned int current_subset_id = (unsigned int)-1; - cairo_scaled_font_subsets_glyph_t subset_glyph; - cairo_bool_t diagonal, in_TJ; - cairo_status_t status, status_ignored; - double Tlm_x = 0, Tlm_y = 0; - double Tm_x = 0, y; - int i, hex_width; - cairo_output_stream_t *word_wrap_stream; - - for (i = 0; i < num_glyphs; i++) - cairo_matrix_transform_point (&pdf_operators->cairo_to_pdf, &glyphs[i].x, &glyphs[i].y); - - word_wrap_stream = _word_wrap_stream_create (pdf_operators->stream, 72); - status = _cairo_output_stream_get_status (word_wrap_stream); - if (status) - return _cairo_output_stream_destroy (word_wrap_stream); - - _cairo_output_stream_printf (word_wrap_stream, - "BT\n"); - - if (scaled_font->scale.xy == 0.0 && - scaled_font->scale.yx == 0.0) - diagonal = TRUE; - else - diagonal = FALSE; - - in_TJ = FALSE; - for (i = 0; i < num_glyphs; i++) { - status = _cairo_scaled_font_subsets_map_glyph (pdf_operators->font_subsets, - scaled_font, glyphs[i].index, - &subset_glyph); - if (status) { - status_ignored = _cairo_output_stream_destroy (word_wrap_stream); - return status; - } - - if (subset_glyph.is_composite) - hex_width = 4; - else - hex_width = 2; - - if (subset_glyph.is_scaled == FALSE) { - y = 0.0; - cairo_matrix_transform_distance (&scaled_font->scale, - &subset_glyph.x_advance, - &y); - } - - if (subset_glyph.subset_id != current_subset_id) { - if (in_TJ) { - _cairo_output_stream_printf (word_wrap_stream, ">] TJ\n"); - in_TJ = FALSE; - } - _cairo_output_stream_printf (word_wrap_stream, - "/f-%d-%d 1 Tf\n", - subset_glyph.font_id, - subset_glyph.subset_id); - if (pdf_operators->use_font_subset) { - status = pdf_operators->use_font_subset (subset_glyph.font_id, - subset_glyph.subset_id, - pdf_operators->use_font_subset_closure); - if (status) { - status_ignored = _cairo_output_stream_destroy (word_wrap_stream); - return status; - } - } - } - - if (subset_glyph.subset_id != current_subset_id || !diagonal) { - _cairo_output_stream_printf (word_wrap_stream, - "%f %f %f %f %f %f Tm\n", - scaled_font->scale.xx, - -scaled_font->scale.yx, - -scaled_font->scale.xy, - scaled_font->scale.yy, - glyphs[i].x, - glyphs[i].y); - current_subset_id = subset_glyph.subset_id; - Tlm_x = glyphs[i].x; - Tlm_y = glyphs[i].y; - Tm_x = Tlm_x; - } - - if (diagonal) { - if (i < num_glyphs - 1 && - fabs((glyphs[i].y - glyphs[i+1].y)/scaled_font->scale.yy) < GLYPH_POSITION_TOLERANCE && - fabs((glyphs[i].x - glyphs[i+1].x)/scaled_font->scale.xx) < 10) - { - if (!in_TJ) { - if (i != 0) { - _cairo_output_stream_printf (word_wrap_stream, - "%f %f Td\n", - (glyphs[i].x - Tlm_x)/scaled_font->scale.xx, - (glyphs[i].y - Tlm_y)/scaled_font->scale.yy); - - Tlm_x = glyphs[i].x; - Tlm_y = glyphs[i].y; - Tm_x = Tlm_x; - } - _cairo_output_stream_printf (word_wrap_stream, - "[<%0*x", - hex_width, - subset_glyph.subset_glyph_index); - Tm_x += subset_glyph.x_advance; - in_TJ = TRUE; - } else { - if (fabs((glyphs[i].x - Tm_x)/scaled_font->scale.xx) > GLYPH_POSITION_TOLERANCE) { - double delta = glyphs[i].x - Tm_x; - int rounded_delta; - - delta = -1000.0*delta/scaled_font->scale.xx; - /* As the delta is in 1/1000 of a unit of text - * space, rounding to an integer should still - * provide sufficient precision. We round the - * delta before adding to Tm_x so that we keep - * track of the accumulated rounding error in - * the PDF interpreter and compensate for it - * when calculating subsequent deltas. - */ - rounded_delta = _cairo_lround (delta); - if (rounded_delta != 0) { - _cairo_output_stream_printf (word_wrap_stream, - "> %d <", - rounded_delta); - } - - /* Convert the rounded delta back to cairo - * space before adding to the current text - * position. */ - delta = rounded_delta*scaled_font->scale.xx/-1000.0; - Tm_x += delta; - } - _cairo_output_stream_printf (word_wrap_stream, - "%0*x", - hex_width, - subset_glyph.subset_glyph_index); - Tm_x += subset_glyph.x_advance; - } - } - else - { - if (in_TJ) { - if (fabs((glyphs[i].x - Tm_x)/scaled_font->scale.xx) > GLYPH_POSITION_TOLERANCE) { - double delta = glyphs[i].x - Tm_x; - int rounded_delta; - - delta = -1000.0*delta/scaled_font->scale.xx; - rounded_delta = _cairo_lround (delta); - if (rounded_delta != 0) { - _cairo_output_stream_printf (word_wrap_stream, - "> %d <", - rounded_delta); - } - delta = rounded_delta*scaled_font->scale.xx/-1000.0; - Tm_x += delta; - } - _cairo_output_stream_printf (word_wrap_stream, - "%0*x>] TJ\n", - hex_width, - subset_glyph.subset_glyph_index); - Tm_x += subset_glyph.x_advance; - in_TJ = FALSE; - } else { - if (i != 0) { - _cairo_output_stream_printf (word_wrap_stream, - "%f %f Td ", - (glyphs[i].x - Tlm_x)/scaled_font->scale.xx, - (glyphs[i].y - Tlm_y)/scaled_font->scale.yy); - Tlm_x = glyphs[i].x; - Tlm_y = glyphs[i].y; - Tm_x = Tlm_x; - } - _cairo_output_stream_printf (word_wrap_stream, - "<%0*x> Tj ", - hex_width, - subset_glyph.subset_glyph_index); - Tm_x += subset_glyph.x_advance; - } - } - } else { - _cairo_output_stream_printf (word_wrap_stream, - "<%0*x> Tj\n", - hex_width, - subset_glyph.subset_glyph_index); - } - } - - _cairo_output_stream_printf (word_wrap_stream, - "ET\n"); - - status = _cairo_output_stream_destroy (word_wrap_stream); - if (status) - return status; - - return _cairo_output_stream_get_status (pdf_operators->stream); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-operators-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-operators-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-operators-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-operators-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * Copyright © 2006 Red Hat, Inc - * Copyright © 2007 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Carl Worth - * Adrian Johnson - */ - -#ifndef CAIRO_PDF_OPERATORS_H -#define CAIRO_PDF_OPERATORS_H - -#include "cairo-compiler-private.h" -#include "cairo-types-private.h" - -typedef cairo_status_t (*cairo_pdf_operators_use_font_subset_t) (unsigned int font_id, - unsigned int subset_id, - void *closure); - -typedef struct _cairo_pdf_operators { - cairo_output_stream_t *stream; - cairo_matrix_t cairo_to_pdf; - cairo_scaled_font_subsets_t *font_subsets; - cairo_pdf_operators_use_font_subset_t use_font_subset; - void *use_font_subset_closure; -} cairo_pdf_operators_t; - -cairo_private void -_cairo_pdf_operators_init (cairo_pdf_operators_t *pdf_operators, - cairo_output_stream_t *stream, - cairo_matrix_t *cairo_to_pdf, - cairo_scaled_font_subsets_t *font_subsets); - -cairo_private void -_cairo_pdf_operators_fini (cairo_pdf_operators_t *pdf_operators); - -cairo_private void -_cairo_pdf_operators_set_font_subsets_callback (cairo_pdf_operators_t *pdf_operators, - cairo_pdf_operators_use_font_subset_t use_font_subset, - void *closure); - -cairo_private void -_cairo_pdf_operators_set_stream (cairo_pdf_operators_t *pdf_operators, - cairo_output_stream_t *stream); - - -cairo_private void -_cairo_pdf_operators_set_cairo_to_pdf_matrix (cairo_pdf_operators_t *pdf_operators, - cairo_matrix_t *cairo_to_pdf); - -cairo_private cairo_int_status_t -_cairo_pdf_operators_clip (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule); - -cairo_private cairo_int_status_t -_cairo_pdf_operators_stroke (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse); - -cairo_private cairo_int_status_t -_cairo_pdf_operators_fill (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule); - -cairo_private cairo_int_status_t -_cairo_pdf_operators_fill_stroke (cairo_pdf_operators_t *pdf_operators, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse); - -cairo_private cairo_int_status_t -_cairo_pdf_operators_show_glyphs (cairo_pdf_operators_t *pdf_operators, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - -#endif /* CAIRO_PDF_OPERATORS_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,4723 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * Copyright © 2006 Red Hat, Inc - * Copyright © 2007, 2008 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Carl Worth - * Adrian Johnson - */ - -#define _BSD_SOURCE /* for snprintf() */ -#include "cairoint.h" -#include "cairo-pdf.h" -#include "cairo-pdf-surface-private.h" -#include "cairo-pdf-operators-private.h" -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-paginated-private.h" -#include "cairo-output-stream-private.h" -#include "cairo-meta-surface-private.h" - -#include -#include - -/* Issues: - * - * - We embed an image in the stream each time it's composited. We - * could add generation counters to surfaces and remember the stream - * ID for a particular generation for a particular surface. - * - * - Backend specific meta data. - */ - -/* - * Page Structure of the Generated PDF: - * - * Each page requiring fallbacks images contains a knockout group at - * the top level. The first operation of the knockout group paints a - * group containing all the supported drawing operations. Fallback - * images (if any) are painted in the knockout group. This ensures - * that fallback images do not composite with any content under the - * fallback images. - * - * Streams: - * - * This PDF surface has three types of streams: - * - PDF Stream - * - Content Stream - * - Group Stream - * - * Calling _cairo_output_stream_printf (surface->output, ...) will - * write to the currently open stream. - * - * PDF Stream: - * A PDF Stream may be opened and closed with the following functions: - * _cairo_pdf_surface_open stream () - * _cairo_pdf_surface_close_stream () - * - * PDF Streams are written directly to the PDF file. They are used for - * fonts, images and patterns. - * - * Content Stream: - * The Content Stream is opened and closed with the following functions: - * _cairo_pdf_surface_open_content_stream () - * _cairo_pdf_surface_close_content_stream () - * - * The Content Stream contains the text and graphics operators. - * - * Group Stream: - * A Group Stream may be opened and closed with the following functions: - * _cairo_pdf_surface_open_group () - * _cairo_pdf_surface_close_group () - * - * A Group Stream is a Form XObject. It is used for short sequences - * of operators. As the content is very short the group is stored in - * memory until it is closed. This allows some optimization such as - * including the Resource dictionary and stream length inside the - * XObject instead of using an indirect object. - */ - -typedef struct _cairo_pdf_object { - long offset; -} cairo_pdf_object_t; - -typedef struct _cairo_pdf_font { - unsigned int font_id; - unsigned int subset_id; - cairo_pdf_resource_t subset_resource; -} cairo_pdf_font_t; - -typedef struct _cairo_pdf_rgb_linear_function { - cairo_pdf_resource_t resource; - double color1[3]; - double color2[3]; -} cairo_pdf_rgb_linear_function_t; - -typedef struct _cairo_pdf_alpha_linear_function { - cairo_pdf_resource_t resource; - double alpha1; - double alpha2; -} cairo_pdf_alpha_linear_function_t; - -static cairo_pdf_resource_t -_cairo_pdf_surface_new_object (cairo_pdf_surface_t *surface); - -static void -_cairo_pdf_surface_clear (cairo_pdf_surface_t *surface); - -static void -_cairo_pdf_smask_group_destroy (cairo_pdf_smask_group_t *group); - -static cairo_status_t -_cairo_pdf_surface_add_font (unsigned int font_id, - unsigned int subset_id, - void *closure); - -static void -_cairo_pdf_group_resources_init (cairo_pdf_group_resources_t *res); - -static cairo_status_t -_cairo_pdf_surface_open_stream (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t *resource, - cairo_bool_t compressed, - const char *fmt, - ...) CAIRO_PRINTF_FORMAT(4, 5); -static cairo_status_t -_cairo_pdf_surface_close_stream (cairo_pdf_surface_t *surface); - -static cairo_status_t -_cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface); - -static void -_cairo_pdf_surface_write_pages (cairo_pdf_surface_t *surface); - -static cairo_pdf_resource_t -_cairo_pdf_surface_write_info (cairo_pdf_surface_t *surface); - -static cairo_pdf_resource_t -_cairo_pdf_surface_write_catalog (cairo_pdf_surface_t *surface); - -static long -_cairo_pdf_surface_write_xref (cairo_pdf_surface_t *surface); - -static cairo_status_t -_cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface); - -static cairo_status_t -_cairo_pdf_surface_emit_font_subsets (cairo_pdf_surface_t *surface); - -static const cairo_surface_backend_t cairo_pdf_surface_backend; -static const cairo_paginated_surface_backend_t cairo_pdf_surface_paginated_backend; - -static cairo_pdf_resource_t -_cairo_pdf_surface_new_object (cairo_pdf_surface_t *surface) -{ - cairo_pdf_resource_t resource; - cairo_status_t status; - cairo_pdf_object_t object; - - object.offset = _cairo_output_stream_get_position (surface->output); - - status = _cairo_array_append (&surface->objects, &object); - if (status) { - resource.id = 0; - return resource; - } - - resource = surface->next_available_resource; - surface->next_available_resource.id++; - - return resource; -} - -static void -_cairo_pdf_surface_update_object (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t resource) -{ - cairo_pdf_object_t *object; - - object = _cairo_array_index (&surface->objects, resource.id - 1); - object->offset = _cairo_output_stream_get_position (surface->output); -} - -static void -_cairo_pdf_surface_set_size_internal (cairo_pdf_surface_t *surface, - double width, - double height) -{ - surface->width = width; - surface->height = height; - cairo_matrix_init (&surface->cairo_to_pdf, 1, 0, 0, -1, 0, height); - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, - &surface->cairo_to_pdf); -} - -static cairo_surface_t * -_cairo_pdf_surface_create_for_stream_internal (cairo_output_stream_t *output, - double width, - double height) -{ - cairo_pdf_surface_t *surface; - cairo_status_t status, status_ignored; - - surface = malloc (sizeof (cairo_pdf_surface_t)); - if (surface == NULL) { - /* destroy stream on behalf of caller */ - status = _cairo_output_stream_destroy (output); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - _cairo_surface_init (&surface->base, &cairo_pdf_surface_backend, - CAIRO_CONTENT_COLOR_ALPHA); - - surface->output = output; - surface->width = width; - surface->height = height; - cairo_matrix_init (&surface->cairo_to_pdf, 1, 0, 0, -1, 0, height); - - _cairo_array_init (&surface->objects, sizeof (cairo_pdf_object_t)); - _cairo_array_init (&surface->pages, sizeof (cairo_pdf_resource_t)); - _cairo_array_init (&surface->rgb_linear_functions, sizeof (cairo_pdf_rgb_linear_function_t)); - _cairo_array_init (&surface->alpha_linear_functions, sizeof (cairo_pdf_alpha_linear_function_t)); - _cairo_array_init (&surface->fonts, sizeof (cairo_pdf_font_t)); - _cairo_array_init (&surface->patterns, sizeof (cairo_pdf_pattern_t)); - _cairo_array_init (&surface->smask_groups, sizeof (cairo_pdf_smask_group_t *)); - _cairo_array_init (&surface->knockout_group, sizeof (cairo_pdf_resource_t)); - - _cairo_pdf_group_resources_init (&surface->resources); - - surface->font_subsets = _cairo_scaled_font_subsets_create_composite (); - if (! surface->font_subsets) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL0; - } - - surface->next_available_resource.id = 1; - surface->pages_resource = _cairo_pdf_surface_new_object (surface); - if (surface->pages_resource.id == 0) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL1; - } - - surface->compress_content = TRUE; - surface->pdf_stream.active = FALSE; - surface->pdf_stream.old_output = NULL; - surface->group_stream.active = FALSE; - surface->group_stream.stream = NULL; - surface->group_stream.mem_stream = NULL; - - surface->paginated_mode = CAIRO_PAGINATED_MODE_ANALYZE; - - surface->force_fallbacks = FALSE; - surface->select_pattern_gstate_saved = FALSE; - - _cairo_pdf_operators_init (&surface->pdf_operators, - surface->output, - &surface->cairo_to_pdf, - surface->font_subsets); - _cairo_pdf_operators_set_font_subsets_callback (&surface->pdf_operators, - _cairo_pdf_surface_add_font, - surface); - - /* Document header */ - _cairo_output_stream_printf (surface->output, - "%%PDF-1.4\n"); - _cairo_output_stream_printf (surface->output, - "%%%c%c%c%c\n", 181, 237, 174, 251); - - surface->paginated_surface = _cairo_paginated_surface_create ( - &surface->base, - CAIRO_CONTENT_COLOR_ALPHA, - width, height, - &cairo_pdf_surface_paginated_backend); - status = surface->paginated_surface->status; - if (status == CAIRO_STATUS_SUCCESS) - return surface->paginated_surface; - -BAIL1: - _cairo_scaled_font_subsets_destroy (surface->font_subsets); -BAIL0: - _cairo_array_fini (&surface->objects); - free (surface); - - /* destroy stream on behalf of caller */ - status_ignored = _cairo_output_stream_destroy (output); - - return _cairo_surface_create_in_error (status); -} - -/** - * cairo_pdf_surface_create_for_stream: - * @write_func: a #cairo_write_func_t to accept the output data - * @closure: the closure argument for @write_func - * @width_in_points: width of the surface, in points (1 point == 1/72.0 inch) - * @height_in_points: height of the surface, in points (1 point == 1/72.0 inch) - * - * Creates a PDF surface of the specified size in points to be written - * incrementally to the stream represented by @write_func and @closure. - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - * - * Since: 1.2 - */ -cairo_surface_t * -cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points) -{ - cairo_output_stream_t *output; - - output = _cairo_output_stream_create (write_func, NULL, closure); - if (_cairo_output_stream_get_status (output)) - return _cairo_surface_create_in_error (_cairo_output_stream_destroy (output)); - - return _cairo_pdf_surface_create_for_stream_internal (output, - width_in_points, - height_in_points); -} - -/** - * cairo_pdf_surface_create: - * @filename: a filename for the PDF output (must be writable) - * @width_in_points: width of the surface, in points (1 point == 1/72.0 inch) - * @height_in_points: height of the surface, in points (1 point == 1/72.0 inch) - * - * Creates a PDF surface of the specified size in points to be written - * to @filename. - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - * - * Since: 1.2 - **/ -cairo_surface_t * -cairo_pdf_surface_create (const char *filename, - double width_in_points, - double height_in_points) -{ - cairo_output_stream_t *output; - - output = _cairo_output_stream_create_for_filename (filename); - if (_cairo_output_stream_get_status (output)) - return _cairo_surface_create_in_error (_cairo_output_stream_destroy (output)); - - return _cairo_pdf_surface_create_for_stream_internal (output, - width_in_points, - height_in_points); -} - -static cairo_bool_t -_cairo_surface_is_pdf (cairo_surface_t *surface) -{ - return surface->backend == &cairo_pdf_surface_backend; -} - -/* If the abstract_surface is a paginated surface, and that paginated - * surface's target is a pdf_surface, then set pdf_surface to that - * target. Otherwise return %CAIRO_STATUS_SURFACE_TYPE_MISMATCH. - */ -static cairo_status_t -_extract_pdf_surface (cairo_surface_t *surface, - cairo_pdf_surface_t **pdf_surface) -{ - cairo_surface_t *target; - - if (surface->status) - return surface->status; - - if (! _cairo_surface_is_paginated (surface)) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - - target = _cairo_paginated_surface_get_target (surface); - if (target->status) - return target->status; - - if (! _cairo_surface_is_pdf (target)) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - - *pdf_surface = (cairo_pdf_surface_t *) target; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_pdf_surface_set_size: - * @surface: a PDF #cairo_surface_t - * @width_in_points: new surface width, in points (1 point == 1/72.0 inch) - * @height_in_points: new surface height, in points (1 point == 1/72.0 inch) - * - * Changes the size of a PDF surface for the current (and - * subsequent) pages. - * - * This function should only be called before any drawing operations - * have been performed on the current page. The simplest way to do - * this is to call this function immediately after creating the - * surface or immediately after completing a page with either - * cairo_show_page() or cairo_copy_page(). - * - * Since: 1.2 - **/ -void -cairo_pdf_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points) -{ - cairo_pdf_surface_t *pdf_surface = NULL; /* hide compiler warning */ - cairo_status_t status; - - status = _extract_pdf_surface (surface, &pdf_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - _cairo_pdf_surface_set_size_internal (pdf_surface, - width_in_points, - height_in_points); - status = _cairo_paginated_surface_set_size (pdf_surface->paginated_surface, - width_in_points, - height_in_points); - if (status) - status = _cairo_surface_set_error (surface, status); -} - -static void -_cairo_pdf_surface_clear (cairo_pdf_surface_t *surface) -{ - int i, size; - cairo_pdf_pattern_t *pattern; - cairo_pdf_smask_group_t *group; - - size = _cairo_array_num_elements (&surface->patterns); - for (i = 0; i < size; i++) { - pattern = (cairo_pdf_pattern_t *) _cairo_array_index (&surface->patterns, i); - cairo_pattern_destroy (pattern->pattern); - } - _cairo_array_truncate (&surface->patterns, 0); - - size = _cairo_array_num_elements (&surface->smask_groups); - for (i = 0; i < size; i++) { - _cairo_array_copy_element (&surface->smask_groups, i, &group); - _cairo_pdf_smask_group_destroy (group); - } - _cairo_array_truncate (&surface->smask_groups, 0); - _cairo_array_truncate (&surface->knockout_group, 0); -} - -static void -_cairo_pdf_group_resources_init (cairo_pdf_group_resources_t *res) -{ - _cairo_array_init (&res->alphas, sizeof (double)); - _cairo_array_init (&res->smasks, sizeof (cairo_pdf_resource_t)); - _cairo_array_init (&res->patterns, sizeof (cairo_pdf_resource_t)); - _cairo_array_init (&res->xobjects, sizeof (cairo_pdf_resource_t)); - _cairo_array_init (&res->fonts, sizeof (cairo_pdf_font_t)); -} - -static void -_cairo_pdf_group_resources_fini (cairo_pdf_group_resources_t *res) -{ - _cairo_array_fini (&res->alphas); - _cairo_array_fini (&res->smasks); - _cairo_array_fini (&res->patterns); - _cairo_array_fini (&res->xobjects); - _cairo_array_fini (&res->fonts); -} - -static void -_cairo_pdf_group_resources_clear (cairo_pdf_group_resources_t *res) -{ - _cairo_array_truncate (&res->alphas, 0); - _cairo_array_truncate (&res->smasks, 0); - _cairo_array_truncate (&res->patterns, 0); - _cairo_array_truncate (&res->xobjects, 0); - _cairo_array_truncate (&res->fonts, 0); -} - -static cairo_status_t -_cairo_pdf_surface_add_alpha (cairo_pdf_surface_t *surface, - double alpha, - int *index) -{ - int num_alphas, i; - double other; - cairo_status_t status; - cairo_pdf_group_resources_t *res = &surface->resources; - - num_alphas = _cairo_array_num_elements (&res->alphas); - for (i = 0; i < num_alphas; i++) { - _cairo_array_copy_element (&res->alphas, i, &other); - if (alpha == other) { - *index = i; - return CAIRO_STATUS_SUCCESS; - } - } - - status = _cairo_array_append (&res->alphas, &alpha); - if (status) - return status; - - *index = _cairo_array_num_elements (&res->alphas) - 1; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_pdf_surface_add_smask (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t smask) -{ - return _cairo_array_append (&(surface->resources.smasks), &smask); -} - -static cairo_status_t -_cairo_pdf_surface_add_pattern (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t pattern) -{ - return _cairo_array_append (&(surface->resources.patterns), &pattern); -} - -static cairo_status_t -_cairo_pdf_surface_add_xobject (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t xobject) -{ - return _cairo_array_append (&(surface->resources.xobjects), &xobject); -} - -static cairo_status_t -_cairo_pdf_surface_add_font (unsigned int font_id, - unsigned int subset_id, - void *closure) -{ - cairo_pdf_surface_t *surface = closure; - cairo_pdf_font_t font; - int num_fonts, i; - cairo_status_t status; - cairo_pdf_group_resources_t *res = &surface->resources; - - num_fonts = _cairo_array_num_elements (&res->fonts); - for (i = 0; i < num_fonts; i++) { - _cairo_array_copy_element (&res->fonts, i, &font); - if (font.font_id == font_id && - font.subset_id == subset_id) - return CAIRO_STATUS_SUCCESS; - } - - num_fonts = _cairo_array_num_elements (&surface->fonts); - for (i = 0; i < num_fonts; i++) { - _cairo_array_copy_element (&surface->fonts, i, &font); - if (font.font_id == font_id && - font.subset_id == subset_id) - return _cairo_array_append (&res->fonts, &font); - } - - font.font_id = font_id; - font.subset_id = subset_id; - font.subset_resource = _cairo_pdf_surface_new_object (surface); - if (font.subset_resource.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_array_append (&surface->fonts, &font); - if (status) - return status; - - return _cairo_array_append (&res->fonts, &font); -} - -static cairo_pdf_resource_t -_cairo_pdf_surface_get_font_resource (cairo_pdf_surface_t *surface, - unsigned int font_id, - unsigned int subset_id) -{ - cairo_pdf_font_t font; - int num_fonts, i; - - num_fonts = _cairo_array_num_elements (&surface->fonts); - for (i = 0; i < num_fonts; i++) { - _cairo_array_copy_element (&surface->fonts, i, &font); - if (font.font_id == font_id && font.subset_id == subset_id) - return font.subset_resource; - } - - font.subset_resource.id = 0; - return font.subset_resource; -} - -static void -_cairo_pdf_surface_emit_group_resources (cairo_pdf_surface_t *surface, - cairo_pdf_group_resources_t *res) -{ - int num_alphas, num_smasks, num_resources, i; - double alpha; - cairo_pdf_resource_t *smask, *pattern, *xobject; - cairo_pdf_font_t *font; - - _cairo_output_stream_printf (surface->output, "<<\n"); - - num_alphas = _cairo_array_num_elements (&res->alphas); - num_smasks = _cairo_array_num_elements (&res->smasks); - if (num_alphas > 0 || num_smasks > 0) { - _cairo_output_stream_printf (surface->output, - " /ExtGState <<\n"); - - for (i = 0; i < num_alphas; i++) { - _cairo_array_copy_element (&res->alphas, i, &alpha); - _cairo_output_stream_printf (surface->output, - " /a%d << /CA %f /ca %f >>\n", - i, alpha, alpha); - } - - for (i = 0; i < num_smasks; i++) { - smask = _cairo_array_index (&res->smasks, i); - _cairo_output_stream_printf (surface->output, - " /s%d %d 0 R\n", - smask->id, smask->id); - } - - _cairo_output_stream_printf (surface->output, - " >>\n"); - } - - num_resources = _cairo_array_num_elements (&res->patterns); - if (num_resources > 0) { - _cairo_output_stream_printf (surface->output, - " /Pattern <<"); - for (i = 0; i < num_resources; i++) { - pattern = _cairo_array_index (&res->patterns, i); - _cairo_output_stream_printf (surface->output, - " /p%d %d 0 R", - pattern->id, pattern->id); - } - - _cairo_output_stream_printf (surface->output, - " >>\n"); - } - - num_resources = _cairo_array_num_elements (&res->xobjects); - if (num_resources > 0) { - _cairo_output_stream_printf (surface->output, - " /XObject <<"); - - for (i = 0; i < num_resources; i++) { - xobject = _cairo_array_index (&res->xobjects, i); - _cairo_output_stream_printf (surface->output, - " /x%d %d 0 R", - xobject->id, xobject->id); - } - - _cairo_output_stream_printf (surface->output, - " >>\n"); - } - - num_resources = _cairo_array_num_elements (&res->fonts); - if (num_resources > 0) { - _cairo_output_stream_printf (surface->output," /Font <<\n"); - for (i = 0; i < num_resources; i++) { - font = _cairo_array_index (&res->fonts, i); - _cairo_output_stream_printf (surface->output, - " /f-%d-%d %d 0 R\n", - font->font_id, - font->subset_id, - font->subset_resource.id); - } - _cairo_output_stream_printf (surface->output, " >>\n"); - } - - _cairo_output_stream_printf (surface->output, - ">>\n"); -} - -static cairo_pdf_smask_group_t * -_cairo_pdf_surface_create_smask_group (cairo_pdf_surface_t *surface) -{ - cairo_pdf_smask_group_t *group; - - group = calloc (1, sizeof (cairo_pdf_smask_group_t)); - if (group == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - group->group_res = _cairo_pdf_surface_new_object (surface); - if (group->group_res.id == 0) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - free (group); - return NULL; - } - group->width = surface->width; - group->height = surface->height; - - return group; -} - -static void -_cairo_pdf_smask_group_destroy (cairo_pdf_smask_group_t *group) -{ - if (group->operation == PDF_FILL || group->operation == PDF_STROKE) - _cairo_path_fixed_fini (&group->path); - if (group->source) - cairo_pattern_destroy (group->source); - if (group->mask) - cairo_pattern_destroy (group->mask); - if (group->glyphs) - free (group->glyphs); - if (group->scaled_font) - cairo_scaled_font_destroy (group->scaled_font); - free (group); -} - -static cairo_status_t -_cairo_pdf_surface_add_smask_group (cairo_pdf_surface_t *surface, - cairo_pdf_smask_group_t *group) -{ - return _cairo_array_append (&surface->smask_groups, &group); -} - -static cairo_status_t -_cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface, - cairo_pattern_t *pattern, - cairo_pdf_resource_t *pattern_res, - cairo_pdf_resource_t *gstate_res) -{ - cairo_pdf_pattern_t pdf_pattern; - cairo_status_t status; - - /* Solid colors are emitted into the content stream */ - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) { - pattern_res->id = 0; - gstate_res->id = 0; - return CAIRO_STATUS_SUCCESS; - } - - /* Gradients with zero stops do not produce any output */ - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) - { - cairo_gradient_pattern_t *gradient; - - gradient = (cairo_gradient_pattern_t *) pattern; - if (gradient->n_stops == 0) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - } - - pdf_pattern.pattern = cairo_pattern_reference (pattern); - pdf_pattern.pattern_res = _cairo_pdf_surface_new_object (surface); - if (pdf_pattern.pattern_res.id == 0) { - cairo_pattern_destroy (pattern); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - pdf_pattern.gstate_res.id = 0; - - /* gradient patterns require an smask object to implement transparency */ - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) { - if (_cairo_pattern_is_opaque (pattern) == FALSE) { - pdf_pattern.gstate_res = _cairo_pdf_surface_new_object (surface); - if (pdf_pattern.gstate_res.id == 0) { - cairo_pattern_destroy (pattern); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - } - - pdf_pattern.width = surface->width; - pdf_pattern.height = surface->height; - *pattern_res = pdf_pattern.pattern_res; - *gstate_res = pdf_pattern.gstate_res; - - status = _cairo_array_append (&surface->patterns, &pdf_pattern); - if (status) { - cairo_pattern_destroy (pattern); - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_pdf_surface_open_stream (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t *resource, - cairo_bool_t compressed, - const char *fmt, - ...) -{ - va_list ap; - cairo_pdf_resource_t self, length; - cairo_output_stream_t *output = NULL; - - if (resource) { - self = *resource; - _cairo_pdf_surface_update_object (surface, self); - } else { - self = _cairo_pdf_surface_new_object (surface); - if (self.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - length = _cairo_pdf_surface_new_object (surface); - if (length.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (compressed) { - output = _cairo_deflate_stream_create (surface->output); - if (_cairo_output_stream_get_status (output)) - return _cairo_output_stream_destroy (output); - } - - surface->pdf_stream.active = TRUE; - surface->pdf_stream.self = self; - surface->pdf_stream.length = length; - surface->pdf_stream.compressed = compressed; - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Length %d 0 R\n", - surface->pdf_stream.self.id, - surface->pdf_stream.length.id); - if (compressed) - _cairo_output_stream_printf (surface->output, - " /Filter /FlateDecode\n"); - - if (fmt != NULL) { - va_start (ap, fmt); - _cairo_output_stream_vprintf (surface->output, fmt, ap); - va_end (ap); - } - - _cairo_output_stream_printf (surface->output, - ">>\n" - "stream\n"); - - surface->pdf_stream.start_offset = _cairo_output_stream_get_position (surface->output); - - if (compressed) { - assert (surface->pdf_stream.old_output == NULL); - surface->pdf_stream.old_output = surface->output; - surface->output = output; - _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->output); - } - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -_cairo_pdf_surface_close_stream (cairo_pdf_surface_t *surface) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - long length; - - if (! surface->pdf_stream.active) - return CAIRO_STATUS_SUCCESS; - - if (surface->pdf_stream.compressed) { - status = _cairo_output_stream_destroy (surface->output); - surface->output = surface->pdf_stream.old_output; - _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->output); - surface->pdf_stream.old_output = NULL; - _cairo_output_stream_printf (surface->output, - "\n"); - } - - length = _cairo_output_stream_get_position (surface->output) - - surface->pdf_stream.start_offset; - _cairo_output_stream_printf (surface->output, - "endstream\n" - "endobj\n"); - - _cairo_pdf_surface_update_object (surface, - surface->pdf_stream.length); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - " %ld\n" - "endobj\n", - surface->pdf_stream.length.id, - length); - - surface->pdf_stream.active = FALSE; - - if (status == CAIRO_STATUS_SUCCESS) - status = _cairo_output_stream_get_status (surface->output); - - return status; -} - -static void -_cairo_pdf_surface_write_memory_stream (cairo_pdf_surface_t *surface, - cairo_output_stream_t *mem_stream, - cairo_pdf_resource_t resource, - cairo_pdf_group_resources_t *resources, - cairo_bool_t is_knockout_group) -{ - _cairo_pdf_surface_update_object (surface, resource); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /XObject\n" - " /Length %d\n", - resource.id, - _cairo_memory_stream_length (mem_stream)); - - if (surface->compress_content) { - _cairo_output_stream_printf (surface->output, - " /Filter /FlateDecode\n"); - } - - _cairo_output_stream_printf (surface->output, - " /Subtype /Form\n" - " /BBox [ 0 0 %f %f ]\n" - " /Group <<\n" - " /Type /Group\n" - " /S /Transparency\n" - " /CS /DeviceRGB\n", - surface->width, - surface->height); - - if (is_knockout_group) - _cairo_output_stream_printf (surface->output, - " /K true\n"); - - _cairo_output_stream_printf (surface->output, - " >>\n" - " /Resources\n"); - _cairo_pdf_surface_emit_group_resources (surface, resources); - _cairo_output_stream_printf (surface->output, - ">>\n" - "stream\n"); - _cairo_memory_stream_copy (mem_stream, surface->output); - _cairo_output_stream_printf (surface->output, - "endstream\n" - "endobj\n"); -} - -static cairo_status_t -_cairo_pdf_surface_open_group (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t *resource) -{ - cairo_status_t status; - - assert (surface->pdf_stream.active == FALSE); - assert (surface->group_stream.active == FALSE); - - surface->group_stream.active = TRUE; - - surface->group_stream.mem_stream = _cairo_memory_stream_create (); - - if (surface->compress_content) { - surface->group_stream.stream = - _cairo_deflate_stream_create (surface->group_stream.mem_stream); - } else { - surface->group_stream.stream = surface->group_stream.mem_stream; - } - status = _cairo_output_stream_get_status (surface->group_stream.stream); - - surface->group_stream.old_output = surface->output; - surface->output = surface->group_stream.stream; - _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->output); - _cairo_pdf_group_resources_clear (&surface->resources); - - if (resource) { - surface->group_stream.resource = *resource; - } else { - surface->group_stream.resource = _cairo_pdf_surface_new_object (surface); - if (surface->group_stream.resource.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - surface->group_stream.is_knockout = FALSE; - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_open_knockout_group (cairo_pdf_surface_t *surface) -{ - cairo_status_t status; - - status = _cairo_pdf_surface_open_group (surface, NULL); - if (status) - return status; - - surface->group_stream.is_knockout = TRUE; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_pdf_surface_close_group (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t *group) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS, status2; - - assert (surface->pdf_stream.active == FALSE); - assert (surface->group_stream.active == TRUE); - - if (surface->compress_content) { - status = _cairo_output_stream_destroy (surface->group_stream.stream); - surface->group_stream.stream = NULL; - - _cairo_output_stream_printf (surface->group_stream.mem_stream, - "\n"); - } - surface->output = surface->group_stream.old_output; - _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->output); - surface->group_stream.active = FALSE; - _cairo_pdf_surface_write_memory_stream (surface, - surface->group_stream.mem_stream, - surface->group_stream.resource, - &surface->resources, - surface->group_stream.is_knockout); - if (group) - *group = surface->group_stream.resource; - - status2 = _cairo_output_stream_destroy (surface->group_stream.mem_stream); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - surface->group_stream.mem_stream = NULL; - surface->group_stream.stream = NULL; - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_open_content_stream (cairo_pdf_surface_t *surface, - cairo_bool_t is_form) -{ - cairo_status_t status; - - assert (surface->pdf_stream.active == FALSE); - assert (surface->group_stream.active == FALSE); - - surface->content_resources = _cairo_pdf_surface_new_object (surface); - if (surface->content_resources.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (is_form) { - status = - _cairo_pdf_surface_open_stream (surface, - NULL, - surface->compress_content, - " /Type /XObject\n" - " /Subtype /Form\n" - " /BBox [ 0 0 %f %f ]\n" - " /Group <<\n" - " /Type /Group\n" - " /S /Transparency\n" - " /CS /DeviceRGB\n" - " >>\n" - " /Resources %d 0 R\n", - surface->width, - surface->height, - surface->content_resources.id); - } else { - status = - _cairo_pdf_surface_open_stream (surface, - NULL, - surface->compress_content, - NULL); - } - if (status) - return status; - - surface->content = surface->pdf_stream.self; - - _cairo_output_stream_printf (surface->output, "q\n"); - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -_cairo_pdf_surface_close_content_stream (cairo_pdf_surface_t *surface) -{ - cairo_status_t status; - - assert (surface->pdf_stream.active == TRUE); - assert (surface->group_stream.active == FALSE); - - _cairo_output_stream_printf (surface->output, "Q\n"); - status = _cairo_pdf_surface_close_stream (surface); - if (status) - return status; - - _cairo_pdf_surface_update_object (surface, surface->content_resources); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n", - surface->content_resources.id); - _cairo_pdf_surface_emit_group_resources (surface, &surface->resources); - _cairo_output_stream_printf (surface->output, - "endobj\n"); - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_surface_t * -_cairo_pdf_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - return _cairo_meta_surface_create (content, width, height); -} - -static cairo_status_t -_cairo_pdf_surface_finish (void *abstract_surface) -{ - cairo_pdf_surface_t *surface = abstract_surface; - long offset; - cairo_pdf_resource_t info, catalog; - cairo_status_t status, status2; - - status = surface->base.status; - if (status == CAIRO_STATUS_SUCCESS) - status = _cairo_pdf_surface_emit_font_subsets (surface); - - _cairo_pdf_surface_write_pages (surface); - - info = _cairo_pdf_surface_write_info (surface); - if (info.id == 0 && status == CAIRO_STATUS_SUCCESS) - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - - catalog = _cairo_pdf_surface_write_catalog (surface); - if (catalog.id == 0 && status == CAIRO_STATUS_SUCCESS) - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - - offset = _cairo_pdf_surface_write_xref (surface); - - _cairo_output_stream_printf (surface->output, - "trailer\n" - "<< /Size %d\n" - " /Root %d 0 R\n" - " /Info %d 0 R\n" - ">>\n", - surface->next_available_resource.id, - catalog.id, - info.id); - - _cairo_output_stream_printf (surface->output, - "startxref\n" - "%ld\n" - "%%%%EOF\n", - offset); - - _cairo_pdf_operators_fini (&surface->pdf_operators); - - /* close any active streams still open due to fatal errors */ - status2 = _cairo_pdf_surface_close_stream (surface); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - if (surface->group_stream.stream != NULL) { - status2 = _cairo_output_stream_destroy (surface->group_stream.stream); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - if (surface->group_stream.mem_stream != NULL) { - status2 = _cairo_output_stream_destroy (surface->group_stream.mem_stream); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - if (surface->pdf_stream.active) - surface->output = surface->pdf_stream.old_output; - if (surface->group_stream.active) - surface->output = surface->group_stream.old_output; - - /* and finish the pdf surface */ - status2 = _cairo_output_stream_destroy (surface->output); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - _cairo_pdf_surface_clear (surface); - _cairo_pdf_group_resources_fini (&surface->resources); - - _cairo_array_fini (&surface->objects); - _cairo_array_fini (&surface->pages); - _cairo_array_fini (&surface->rgb_linear_functions); - _cairo_array_fini (&surface->alpha_linear_functions); - _cairo_array_fini (&surface->patterns); - _cairo_array_fini (&surface->smask_groups); - _cairo_array_fini (&surface->fonts); - _cairo_array_fini (&surface->knockout_group); - - if (surface->font_subsets) { - _cairo_scaled_font_subsets_destroy (surface->font_subsets); - surface->font_subsets = NULL; - } - - return status; -} - -static cairo_int_status_t -_cairo_pdf_surface_start_page (void *abstract_surface) -{ - cairo_status_t status; - cairo_pdf_surface_t *surface = abstract_surface; - - surface->has_fallback_images = FALSE; - _cairo_pdf_group_resources_clear (&surface->resources); - status = _cairo_pdf_surface_open_content_stream (surface, TRUE); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -/* Emit alpha channel from the image into the given data, providing - * an id that can be used to reference the resulting SMask object. - * - * In the case that the alpha channel happens to be all opaque, then - * no SMask object will be emitted and *id_ret will be set to 0. - */ -static cairo_status_t -_cairo_pdf_surface_emit_smask (cairo_pdf_surface_t *surface, - cairo_image_surface_t *image, - cairo_pdf_resource_t *stream_ret) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - char *alpha; - unsigned long alpha_size; - uint32_t *pixel32; - uint8_t *pixel8; - int i, x, y; - cairo_bool_t opaque; - uint8_t a; - - /* This is the only image format we support, which simplifies things. */ - assert (image->format == CAIRO_FORMAT_ARGB32 || - image->format == CAIRO_FORMAT_A8 || - image->format == CAIRO_FORMAT_A1 ); - - stream_ret->id = 0; - - if (image->format == CAIRO_FORMAT_A1) { - alpha_size = (image->width + 7) / 8 * image->height; - alpha = _cairo_malloc_ab ((image->width+7) / 8, image->height); - } else { - alpha_size = image->height * image->width; - alpha = _cairo_malloc_ab (image->height, image->width); - } - - if (alpha == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP; - } - - opaque = TRUE; - i = 0; - for (y = 0; y < image->height; y++) { - if (image->format == CAIRO_FORMAT_ARGB32) { - pixel32 = (uint32_t *) (image->data + y * image->stride); - - for (x = 0; x < image->width; x++, pixel32++) { - a = (*pixel32 & 0xff000000) >> 24; - alpha[i++] = a; - if (a != 0xff) - opaque = FALSE; - } - } else if (image->format == CAIRO_FORMAT_A8){ - pixel8 = (uint8_t *) (image->data + y * image->stride); - - for (x = 0; x < image->width; x++, pixel8++) { - a = *pixel8; - alpha[i++] = a; - if (a != 0xff) - opaque = FALSE; - } - } else { /* image->format == CAIRO_FORMAT_A1 */ - pixel8 = (uint8_t *) (image->data + y * image->stride); - - for (x = 0; x < (image->width + 7) / 8; x++, pixel8++) { - a = *pixel8; - a = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (a); - alpha[i++] = a; - if (a != 0xff) - opaque = FALSE; - } - } - } - - /* Bail out without emitting smask if it's all opaque. */ - if (opaque) - goto CLEANUP_ALPHA; - - status = _cairo_pdf_surface_open_stream (surface, - NULL, - TRUE, - " /Type /XObject\n" - " /Subtype /Image\n" - " /Width %d\n" - " /Height %d\n" - " /ColorSpace /DeviceGray\n" - " /BitsPerComponent %d\n", - image->width, image->height, - image->format == CAIRO_FORMAT_A1 ? 1 : 8); - if (status) - goto CLEANUP_ALPHA; - - *stream_ret = surface->pdf_stream.self; - _cairo_output_stream_write (surface->output, alpha, alpha_size); - status = _cairo_pdf_surface_close_stream (surface); - - CLEANUP_ALPHA: - free (alpha); - CLEANUP: - return status; -} - -/* Emit image data into the given surface, providing a resource that - * can be used to reference the data in image_ret. */ -static cairo_status_t -_cairo_pdf_surface_emit_image (cairo_pdf_surface_t *surface, - cairo_image_surface_t *image, - cairo_pdf_resource_t *image_ret) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - char *rgb; - unsigned long rgb_size; - uint32_t *pixel; - int i, x, y; - cairo_pdf_resource_t smask = {0}; /* squelch bogus compiler warning */ - cairo_bool_t need_smask; - - /* These are the only image formats we currently support, (which - * makes things a lot simpler here). This is enforced through - * _cairo_pdf_surface_analyze_operation which only accept source surfaces of - * CONTENT_COLOR or CONTENT_COLOR_ALPHA. - */ - assert (image->format == CAIRO_FORMAT_RGB24 || - image->format == CAIRO_FORMAT_ARGB32 || - image->format == CAIRO_FORMAT_A8 || - image->format == CAIRO_FORMAT_A1); - - rgb_size = image->height * image->width * 3; - rgb = _cairo_malloc_abc (image->width, image->height, 3); - if (rgb == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP; - } - - i = 0; - for (y = 0; y < image->height; y++) { - pixel = (uint32_t *) (image->data + y * image->stride); - - for (x = 0; x < image->width; x++, pixel++) { - /* XXX: We're un-premultiplying alpha here. My reading of the PDF - * specification suggests that we should be able to avoid having - * to do this by filling in the SMask's Matte dictionary - * appropriately, but my attempts to do that so far have - * failed. */ - if (image->format == CAIRO_FORMAT_ARGB32) { - uint8_t a; - a = (*pixel & 0xff000000) >> 24; - if (a == 0) { - rgb[i++] = 0; - rgb[i++] = 0; - rgb[i++] = 0; - } else { - rgb[i++] = (((*pixel & 0xff0000) >> 16) * 255 + a / 2) / a; - rgb[i++] = (((*pixel & 0x00ff00) >> 8) * 255 + a / 2) / a; - rgb[i++] = (((*pixel & 0x0000ff) >> 0) * 255 + a / 2) / a; - } - } else if (image->format == CAIRO_FORMAT_RGB24) { - rgb[i++] = (*pixel & 0x00ff0000) >> 16; - rgb[i++] = (*pixel & 0x0000ff00) >> 8; - rgb[i++] = (*pixel & 0x000000ff) >> 0; - } else { - rgb[i++] = 0; - rgb[i++] = 0; - rgb[i++] = 0; - } - } - } - - need_smask = FALSE; - if (image->format == CAIRO_FORMAT_ARGB32 || - image->format == CAIRO_FORMAT_A8 || - image->format == CAIRO_FORMAT_A1) { - status = _cairo_pdf_surface_emit_smask (surface, image, &smask); - if (status) - goto CLEANUP_RGB; - - if (smask.id) - need_smask = TRUE; - } - -#define IMAGE_DICTIONARY " /Type /XObject\n" \ - " /Subtype /Image\n" \ - " /Width %d\n" \ - " /Height %d\n" \ - " /ColorSpace /DeviceRGB\n" \ - " /BitsPerComponent 8\n" - - if (need_smask) - status = _cairo_pdf_surface_open_stream (surface, - NULL, - TRUE, - IMAGE_DICTIONARY - " /SMask %d 0 R\n", - image->width, image->height, - smask.id); - else - status = _cairo_pdf_surface_open_stream (surface, - NULL, - TRUE, - IMAGE_DICTIONARY, - image->width, image->height); - if (status) - goto CLEANUP_RGB; - -#undef IMAGE_DICTIONARY - - *image_ret = surface->pdf_stream.self; - _cairo_output_stream_write (surface->output, rgb, rgb_size); - status = _cairo_pdf_surface_close_stream (surface); - -CLEANUP_RGB: - free (rgb); -CLEANUP: - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_image_surface (cairo_pdf_surface_t *surface, - cairo_surface_pattern_t *pattern, - cairo_pdf_resource_t *resource, - int *width, - int *height) -{ - cairo_image_surface_t *image; - void *image_extra; - cairo_status_t status; - - status = _cairo_surface_acquire_source_image (pattern->surface, &image, &image_extra); - if (status) - goto BAIL; - - status = _cairo_pdf_surface_emit_image (surface, image, resource); - if (status) - goto BAIL; - - *width = image->width; - *height = image->height; - -BAIL: - _cairo_surface_release_source_image (pattern->surface, image, image_extra); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_meta_surface (cairo_pdf_surface_t *surface, - cairo_surface_t *meta_surface, - cairo_pdf_resource_t *resource) -{ - double old_width, old_height; - cairo_paginated_mode_t old_paginated_mode; - cairo_clip_t *old_clip; - cairo_rectangle_int_t meta_extents; - cairo_status_t status, status2; - int alpha = 0; - - status = _cairo_surface_get_extents (meta_surface, &meta_extents); - if (status) - return status; - - old_width = surface->width; - old_height = surface->height; - old_paginated_mode = surface->paginated_mode; - old_clip = _cairo_surface_get_clip (&surface->base); - _cairo_pdf_surface_set_size_internal (surface, - meta_extents.width, - meta_extents.height); - /* Patterns are emitted after fallback images. The paginated mode - * needs to be set to _RENDER while the meta surface is replayed - * back to this surface. - */ - surface->paginated_mode = CAIRO_PAGINATED_MODE_RENDER; - _cairo_pdf_group_resources_clear (&surface->resources); - status = _cairo_pdf_surface_open_content_stream (surface, TRUE); - if (status) - return status; - - *resource = surface->content; - if (cairo_surface_get_content (meta_surface) == CAIRO_CONTENT_COLOR) { - status = _cairo_pdf_surface_add_alpha (surface, 1.0, &alpha); - if (status) - goto CLEANUP_GROUP; - - _cairo_output_stream_printf (surface->output, - "q /a%d gs 0 0 0 rg 0 0 %f %f re f Q\n", - alpha, - surface->width, - surface->height); - } - - status = _cairo_meta_surface_replay_region (meta_surface, &surface->base, - CAIRO_META_REGION_NATIVE); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - if (status) - goto CLEANUP_GROUP; - - status = _cairo_pdf_surface_close_content_stream (surface); - - CLEANUP_GROUP: - _cairo_pdf_surface_set_size_internal (surface, - old_width, - old_height); - surface->paginated_mode = old_paginated_mode; - status2 = _cairo_surface_set_clip (&surface->base, old_clip); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_surface_pattern (cairo_pdf_surface_t *surface, - cairo_pdf_pattern_t *pdf_pattern) -{ - cairo_surface_pattern_t *pattern = (cairo_surface_pattern_t *) pdf_pattern->pattern; - cairo_status_t status; - cairo_pdf_resource_t pattern_resource = {0}; /* squelch bogus compiler warning */ - cairo_matrix_t cairo_p2d, pdf_p2d; - cairo_extend_t extend = cairo_pattern_get_extend (&pattern->base); - double xstep, ystep; - cairo_rectangle_int_t surface_extents; - int pattern_width = 0; /* squelch bogus compiler warning */ - int pattern_height = 0; /* squelch bogus compiler warning */ - int bbox_x, bbox_y; - char draw_surface[200]; - - if (_cairo_surface_is_meta (pattern->surface)) { - cairo_surface_t *meta_surface = pattern->surface; - cairo_rectangle_int_t pattern_extents; - - status = _cairo_pdf_surface_emit_meta_surface (surface, - meta_surface, - &pattern_resource); - if (status) - return status; - - status = _cairo_surface_get_extents (meta_surface, &pattern_extents); - if (status) - return status; - - pattern_width = pattern_extents.width; - pattern_height = pattern_extents.height; - } else { - status = _cairo_pdf_surface_emit_image_surface (surface, - pattern, - &pattern_resource, - &pattern_width, - &pattern_height); - if (status) - return status; - } - - status = _cairo_surface_get_extents (&surface->base, &surface_extents); - if (status) - return status; - - bbox_x = pattern_width; - bbox_y = pattern_height; - switch (extend) { - /* We implement EXTEND_PAD like EXTEND_NONE for now */ - case CAIRO_EXTEND_PAD: - case CAIRO_EXTEND_NONE: - { - /* In PS/PDF, (as far as I can tell), all patterns are - * repeating. So we support cairo's EXTEND_NONE semantics - * by setting the repeat step size to a size large enough - * to guarantee that no more than a single occurrence will - * be visible. - * - * First, map the surface extents into pattern space (since - * xstep and ystep are in pattern space). Then use an upper - * bound on the length of the diagonal of the pattern image - * and the surface as repeat size. This guarantees to never - * repeat visibly. - */ - double x1 = 0.0, y1 = 0.0; - double x2 = surface->width, y2 = surface->height; - _cairo_matrix_transform_bounding_box (&pattern->base.matrix, - &x1, &y1, &x2, &y2, - NULL); - - /* Rather than computing precise bounds of the union, just - * add the surface extents unconditionally. We only - * required an answer that's large enough, we don't really - * care if it's not as tight as possible.*/ - xstep = ystep = ceil ((x2 - x1) + (y2 - y1) + - pattern_width + pattern_height); - } - break; - case CAIRO_EXTEND_REPEAT: - xstep = pattern_width; - ystep = pattern_height; - break; - case CAIRO_EXTEND_REFLECT: - bbox_x = pattern_width*2; - bbox_y = pattern_height*2; - xstep = bbox_x; - ystep = bbox_y; - break; - /* All the rest (if any) should have been analyzed away, so this - * case should be unreachable. */ - default: - ASSERT_NOT_REACHED; - xstep = 0; - ystep = 0; - } - - /* At this point, (that is, within the surface backend interface), - * the pattern's matrix maps from cairo's device space to cairo's - * pattern space, (both with their origin at the upper-left, and - * cairo's pattern space of size width,height). - * - * Then, we must emit a PDF pattern object that maps from its own - * pattern space, (which has a size that we establish in the BBox - * dictionary entry), to the PDF page's *initial* space, (which - * does not benefit from the Y-axis flipping matrix that we emit - * on each page). So the PDF patterns matrix maps from a - * (width,height) pattern space to a device space with the origin - * in the lower-left corner. - * - * So to handle all of that, we start with an identity matrix for - * the PDF pattern to device matrix. We translate it up by the - * image height then flip it in the Y direction, (moving us from - * the PDF origin to cairo's origin). We then multiply in the - * inverse of the cairo pattern matrix, (since it maps from device - * to pattern, while we're setting up pattern to device). Finally, - * we translate back down by the image height and flip again to - * end up at the lower-left origin that PDF expects. - * - * Additionally, within the stream that paints the pattern itself, - * we are using a PDF image object that has a size of (1,1) so we - * have to scale it up by the image width and height to fill our - * pattern cell. - */ - cairo_p2d = pattern->base.matrix; - status = cairo_matrix_invert (&cairo_p2d); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_init_identity (&pdf_p2d); - cairo_matrix_translate (&pdf_p2d, 0.0, surface_extents.height); - cairo_matrix_scale (&pdf_p2d, 1.0, -1.0); - cairo_matrix_multiply (&pdf_p2d, &cairo_p2d, &pdf_p2d); - cairo_matrix_translate (&pdf_p2d, 0.0, pattern_height); - cairo_matrix_scale (&pdf_p2d, 1.0, -1.0); - - _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); - status = _cairo_pdf_surface_open_stream (surface, - &pdf_pattern->pattern_res, - FALSE, - " /PatternType 1\n" - " /BBox [0 0 %d %d]\n" - " /XStep %f\n" - " /YStep %f\n" - " /TilingType 1\n" - " /PaintType 1\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Resources << /XObject << /x%d %d 0 R >> >>\n", - bbox_x, bbox_y, - xstep, ystep, - pdf_p2d.xx, pdf_p2d.yx, - pdf_p2d.xy, pdf_p2d.yy, - pdf_p2d.x0, pdf_p2d.y0, - pattern_resource.id, - pattern_resource.id); - if (status) - return status; - - if (_cairo_surface_is_meta (pattern->surface)) { - snprintf(draw_surface, - sizeof (draw_surface), - "/x%d Do\n", - pattern_resource.id); - } else { - snprintf(draw_surface, - sizeof (draw_surface), - "q %d 0 0 %d 0 0 cm /x%d Do Q", - pattern_width, - pattern_height, - pattern_resource.id); - } - - if (extend == CAIRO_EXTEND_REFLECT) { - _cairo_output_stream_printf (surface->output, - "q 0 0 %d %d re W n %s Q\n" - "q -1 0 0 1 %d 0 cm 0 0 %d %d re W n %s Q\n" - "q 1 0 0 -1 0 %d cm 0 0 %d %d re W n %s Q\n" - "q -1 0 0 -1 %d %d cm 0 0 %d %d re W n %s Q\n", - pattern_width, pattern_height, - draw_surface, - pattern_width*2, pattern_width, pattern_height, - draw_surface, - pattern_height*2, pattern_width, pattern_height, - draw_surface, - pattern_width*2, pattern_height*2, pattern_width, pattern_height, - draw_surface); - } else { - _cairo_output_stream_printf (surface->output, - " %s \n", - draw_surface); - } - - status = _cairo_pdf_surface_close_stream (surface); - if (status) - return status; - - return _cairo_output_stream_get_status (surface->output); -} - -typedef struct _cairo_pdf_color_stop { - double offset; - double color[4]; - cairo_pdf_resource_t resource; -} cairo_pdf_color_stop_t; - -static cairo_status_t -cairo_pdf_surface_emit_rgb_linear_function (cairo_pdf_surface_t *surface, - cairo_pdf_color_stop_t *stop1, - cairo_pdf_color_stop_t *stop2, - cairo_pdf_resource_t *function) -{ - int num_elems, i; - cairo_pdf_rgb_linear_function_t elem; - cairo_pdf_resource_t res; - cairo_status_t status; - - num_elems = _cairo_array_num_elements (&surface->rgb_linear_functions); - for (i = 0; i < num_elems; i++) { - _cairo_array_copy_element (&surface->rgb_linear_functions, i, &elem); - if (memcmp (&elem.color1[0], &stop1->color[0], sizeof (double)*3) != 0) - continue; - if (memcmp (&elem.color2[0], &stop2->color[0], sizeof (double)*3) != 0) - continue; - *function = elem.resource; - return CAIRO_STATUS_SUCCESS; - } - - res = _cairo_pdf_surface_new_object (surface); - if (res.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /FunctionType 2\n" - " /Domain [ 0 1 ]\n" - " /C0 [ %f %f %f ]\n" - " /C1 [ %f %f %f ]\n" - " /N 1\n" - ">>\n" - "endobj\n", - res.id, - stop1->color[0], - stop1->color[1], - stop1->color[2], - stop2->color[0], - stop2->color[1], - stop2->color[2]); - - elem.resource = res; - memcpy (&elem.color1[0], &stop1->color[0], sizeof (double)*3); - memcpy (&elem.color2[0], &stop2->color[0], sizeof (double)*3); - - status = _cairo_array_append (&surface->rgb_linear_functions, &elem); - *function = res; - - return status; -} - -static cairo_status_t -cairo_pdf_surface_emit_alpha_linear_function (cairo_pdf_surface_t *surface, - cairo_pdf_color_stop_t *stop1, - cairo_pdf_color_stop_t *stop2, - cairo_pdf_resource_t *function) -{ - int num_elems, i; - cairo_pdf_alpha_linear_function_t elem; - cairo_pdf_resource_t res; - cairo_status_t status; - - num_elems = _cairo_array_num_elements (&surface->alpha_linear_functions); - for (i = 0; i < num_elems; i++) { - _cairo_array_copy_element (&surface->alpha_linear_functions, i, &elem); - if (elem.alpha1 != stop1->color[3]) - continue; - if (elem.alpha2 != stop2->color[3]) - continue; - *function = elem.resource; - return CAIRO_STATUS_SUCCESS; - } - - res = _cairo_pdf_surface_new_object (surface); - if (res.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /FunctionType 2\n" - " /Domain [ 0 1 ]\n" - " /C0 [ %f ]\n" - " /C1 [ %f ]\n" - " /N 1\n" - ">>\n" - "endobj\n", - res.id, - stop1->color[3], - stop2->color[3]); - - elem.resource = res; - elem.alpha1 = stop1->color[3]; - elem.alpha2 = stop2->color[3]; - - status = _cairo_array_append (&surface->alpha_linear_functions, &elem); - *function = res; - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_stitched_colorgradient (cairo_pdf_surface_t *surface, - unsigned int n_stops, - cairo_pdf_color_stop_t *stops, - cairo_bool_t is_alpha, - cairo_pdf_resource_t *function) -{ - cairo_pdf_resource_t res; - unsigned int i; - cairo_status_t status; - - /* emit linear gradients between pairs of subsequent stops... */ - for (i = 0; i < n_stops-1; i++) { - if (is_alpha) { - status = cairo_pdf_surface_emit_alpha_linear_function (surface, - &stops[i], - &stops[i+1], - &stops[i].resource); - if (status) - return status; - } else { - status = cairo_pdf_surface_emit_rgb_linear_function (surface, - &stops[i], - &stops[i+1], - &stops[i].resource); - if (status) - return status; - } - } - - /* ... and stitch them together */ - res = _cairo_pdf_surface_new_object (surface); - if (res.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /FunctionType 3\n" - " /Domain [ %f %f ]\n", - res.id, - stops[0].offset, - stops[n_stops - 1].offset); - - _cairo_output_stream_printf (surface->output, - " /Functions [ "); - for (i = 0; i < n_stops-1; i++) - _cairo_output_stream_printf (surface->output, - "%d 0 R ", stops[i].resource.id); - _cairo_output_stream_printf (surface->output, - "]\n"); - - _cairo_output_stream_printf (surface->output, - " /Bounds [ "); - for (i = 1; i < n_stops-1; i++) - _cairo_output_stream_printf (surface->output, - "%f ", stops[i].offset); - _cairo_output_stream_printf (surface->output, - "]\n"); - - _cairo_output_stream_printf (surface->output, - " /Encode [ "); - for (i = 1; i < n_stops; i++) - _cairo_output_stream_printf (surface->output, - "0 1 "); - _cairo_output_stream_printf (surface->output, - "]\n"); - - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - *function = res; - - return _cairo_output_stream_get_status (surface->output); -} - - -static void -calc_gradient_color (cairo_pdf_color_stop_t *new_stop, - cairo_pdf_color_stop_t *stop1, - cairo_pdf_color_stop_t *stop2) -{ - int i; - double offset = stop1->offset / (stop1->offset + 1.0 - stop2->offset); - - for (i = 0; i < 4; i++) - new_stop->color[i] = stop1->color[i] + offset*(stop2->color[i] - stop1->color[i]); -} - -#define COLOR_STOP_EPSILON 1e-6 - -static cairo_status_t -_cairo_pdf_surface_emit_pattern_stops (cairo_pdf_surface_t *surface, - cairo_gradient_pattern_t *pattern, - cairo_pdf_resource_t *color_function, - cairo_pdf_resource_t *alpha_function) -{ - cairo_pdf_color_stop_t *allstops, *stops; - unsigned int n_stops; - unsigned int i; - cairo_bool_t emit_alpha = FALSE; - cairo_status_t status; - - color_function->id = 0; - alpha_function->id = 0; - - allstops = _cairo_malloc_ab ((pattern->n_stops + 2), sizeof (cairo_pdf_color_stop_t)); - if (allstops == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - stops = &allstops[1]; - n_stops = pattern->n_stops; - - for (i = 0; i < n_stops; i++) { - stops[i].color[0] = pattern->stops[i].color.red; - stops[i].color[1] = pattern->stops[i].color.green; - stops[i].color[2] = pattern->stops[i].color.blue; - stops[i].color[3] = pattern->stops[i].color.alpha; - if (!CAIRO_ALPHA_IS_OPAQUE (stops[i].color[3])) - emit_alpha = TRUE; - stops[i].offset = pattern->stops[i].offset; - } - - if (pattern->base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.extend == CAIRO_EXTEND_REFLECT) { - if (stops[0].offset > COLOR_STOP_EPSILON) { - if (pattern->base.extend == CAIRO_EXTEND_REFLECT) - memcpy (allstops, stops, sizeof (cairo_pdf_color_stop_t)); - else - calc_gradient_color (&allstops[0], &stops[0], &stops[n_stops-1]); - stops = allstops; - n_stops++; - } - stops[0].offset = 0.0; - - if (stops[n_stops-1].offset < 1.0 - COLOR_STOP_EPSILON) { - if (pattern->base.extend == CAIRO_EXTEND_REFLECT) { - memcpy (&stops[n_stops], - &stops[n_stops - 1], - sizeof (cairo_pdf_color_stop_t)); - } else { - calc_gradient_color (&stops[n_stops], &stops[0], &stops[n_stops-1]); - } - n_stops++; - } - stops[n_stops-1].offset = 1.0; - } - - if (n_stops == 2) { - /* no need for stitched function */ - status = cairo_pdf_surface_emit_rgb_linear_function (surface, - &stops[0], - &stops[1], - color_function); - if (status) - goto BAIL; - - if (emit_alpha) { - status = cairo_pdf_surface_emit_alpha_linear_function (surface, - &stops[0], - &stops[1], - alpha_function); - if (status) - goto BAIL; - } - } else { - /* multiple stops: stitch. XXX possible optimization: regularly spaced - * stops do not require stitching. XXX */ - status = _cairo_pdf_surface_emit_stitched_colorgradient (surface, - n_stops, - stops, - FALSE, - color_function); - if (status) - goto BAIL; - - if (emit_alpha) { - status = _cairo_pdf_surface_emit_stitched_colorgradient (surface, - n_stops, - stops, - TRUE, - alpha_function); - if (status) - goto BAIL; - } - } - -BAIL: - free (allstops); - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_repeating_function (cairo_pdf_surface_t *surface, - cairo_gradient_pattern_t *pattern, - cairo_pdf_resource_t *function, - int begin, - int end) -{ - cairo_pdf_resource_t res; - int i; - - res = _cairo_pdf_surface_new_object (surface); - if (res.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /FunctionType 3\n" - " /Domain [ %d %d ]\n", - res.id, - begin, - end); - - _cairo_output_stream_printf (surface->output, - " /Functions [ "); - for (i = begin; i < end; i++) - _cairo_output_stream_printf (surface->output, - "%d 0 R ", function->id); - _cairo_output_stream_printf (surface->output, - "]\n"); - - _cairo_output_stream_printf (surface->output, - " /Bounds [ "); - for (i = begin + 1; i < end; i++) - _cairo_output_stream_printf (surface->output, - "%d ", i); - _cairo_output_stream_printf (surface->output, - "]\n"); - - _cairo_output_stream_printf (surface->output, - " /Encode [ "); - for (i = begin; i < end; i++) { - if ((i % 2) && pattern->base.extend == CAIRO_EXTEND_REFLECT) { - _cairo_output_stream_printf (surface->output, - "1 0 "); - } else { - _cairo_output_stream_printf (surface->output, - "0 1 "); - } - } - _cairo_output_stream_printf (surface->output, - "]\n"); - - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - *function = res; - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -cairo_pdf_surface_emit_transparency_group (cairo_pdf_surface_t *surface, - cairo_pdf_resource_t gstate_resource, - cairo_pdf_resource_t gradient_mask) -{ - cairo_pdf_resource_t smask_resource; - cairo_status_t status; - - status = _cairo_pdf_surface_open_stream (surface, - NULL, - surface->compress_content, - " /Type /XObject\n" - " /Subtype /Form\n" - " /FormType 1\n" - " /BBox [ 0 0 %f %f ]\n" - " /Resources\n" - " << /ExtGState\n" - " << /a0 << /ca 1 /CA 1 >>" - " >>\n" - " /Pattern\n" - " << /p%d %d 0 R >>\n" - " >>\n" - " /Group\n" - " << /Type /Group\n" - " /S /Transparency\n" - " /CS /DeviceGray\n" - " >>\n", - surface->width, - surface->height, - gradient_mask.id, - gradient_mask.id); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q\n" - "/a0 gs\n" - "/Pattern cs /p%d scn\n" - "0 0 %f %f re\n" - "f\n" - "Q\n", - gradient_mask.id, - surface->width, - surface->height); - - status = _cairo_pdf_surface_close_stream (surface); - if (status) - return status; - - smask_resource = _cairo_pdf_surface_new_object (surface); - if (smask_resource.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Mask\n" - " /S /Luminosity\n" - " /G %d 0 R\n" - ">>\n" - "endobj\n", - smask_resource.id, - surface->pdf_stream.self.id); - - /* Create GState which uses the transparency group as an SMask. */ - _cairo_pdf_surface_update_object (surface, gstate_resource); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /ExtGState\n" - " /SMask %d 0 R\n" - " /ca 1\n" - " /CA 1\n" - " /AIS false\n" - ">>\n" - "endobj\n", - gstate_resource.id, - smask_resource.id); - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -_cairo_pdf_surface_emit_linear_pattern (cairo_pdf_surface_t *surface, - cairo_pdf_pattern_t *pdf_pattern) -{ - cairo_linear_pattern_t *pattern = (cairo_linear_pattern_t *) pdf_pattern->pattern; - cairo_pdf_resource_t color_function, alpha_function; - double x1, y1, x2, y2; - double _x1, _y1, _x2, _y2; - cairo_matrix_t pat_to_pdf; - cairo_extend_t extend; - cairo_status_t status; - cairo_gradient_pattern_t *gradient = &pattern->base; - double first_stop, last_stop; - int repeat_begin = 0, repeat_end = 1; - - assert (pattern->base.n_stops != 0); - - extend = cairo_pattern_get_extend (pdf_pattern->pattern); - - pat_to_pdf = pattern->base.base.matrix; - status = cairo_matrix_invert (&pat_to_pdf); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); - first_stop = gradient->stops[0].offset; - last_stop = gradient->stops[gradient->n_stops - 1].offset; - - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { - double dx, dy; - int x_rep = 0, y_rep = 0; - - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - cairo_matrix_transform_point (&pat_to_pdf, &x1, &y1); - - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - cairo_matrix_transform_point (&pat_to_pdf, &x2, &y2); - - dx = fabs (x2 - x1); - dy = fabs (y2 - y1); - if (dx > 1e-6) - x_rep = (int) ceil (surface->width/dx); - if (dy > 1e-6) - y_rep = (int) ceil (surface->height/dy); - - repeat_end = MAX (x_rep, y_rep); - repeat_begin = -repeat_end; - first_stop = repeat_begin; - last_stop = repeat_end; - } - - /* PDF requires the first and last stop to be the same as the line - * coordinates. For repeating patterns this moves the line - * coordinates out to the begin/end of the repeating function. For - * non repeating patterns this may move the line coordinates in if - * there are not stops at offset 0 and 1. */ - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - - _x1 = x1 + (x2 - x1)*first_stop; - _y1 = y1 + (y2 - y1)*first_stop; - _x2 = x1 + (x2 - x1)*last_stop; - _y2 = y1 + (y2 - y1)*last_stop; - - x1 = _x1; - x2 = _x2; - y1 = _y1; - y2 = _y2; - - /* For EXTEND_NONE and EXTEND_PAD if there are only two stops a - * Type 2 function is used by itself without a stitching - * function. Type 2 functions always have the domain [0 1] */ - if ((pattern->base.base.extend == CAIRO_EXTEND_NONE || - pattern->base.base.extend == CAIRO_EXTEND_PAD) && - gradient->n_stops == 2) { - first_stop = 0.0; - last_stop = 1.0; - } - - status = _cairo_pdf_surface_emit_pattern_stops (surface, - &pattern->base, - &color_function, - &alpha_function); - if (status) - return status; - - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { - status = _cairo_pdf_surface_emit_repeating_function (surface, - &pattern->base, - &color_function, - repeat_begin, - repeat_end); - if (status) - return status; - - if (alpha_function.id != 0) { - status = _cairo_pdf_surface_emit_repeating_function (surface, - &pattern->base, - &alpha_function, - repeat_begin, - repeat_end); - if (status) - return status; - } - } - - _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 2\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f ]\n" - " /Domain [ %f %f ]\n" - " /Function %d 0 R\n", - pdf_pattern->pattern_res.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, x2, y2, - first_stop, last_stop, - color_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } - - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); - - if (alpha_function.id != 0) { - cairo_pdf_resource_t mask_resource; - - assert (pdf_pattern->gstate_res.id != 0); - - /* Create pattern for SMask. */ - mask_resource = _cairo_pdf_surface_new_object (surface); - if (mask_resource.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 2\n" - " /ColorSpace /DeviceGray\n" - " /Coords [ %f %f %f %f ]\n" - " /Domain [ %f %f ]\n" - " /Function %d 0 R\n", - mask_resource.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, x2, y2, - first_stop, last_stop, - alpha_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } - - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); - status = _cairo_pdf_surface_add_pattern (surface, mask_resource); - if (status) - return status; - - status = cairo_pdf_surface_emit_transparency_group (surface, - pdf_pattern->gstate_res, - mask_resource); - if (status) - return status; - } - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -_cairo_pdf_surface_emit_radial_pattern (cairo_pdf_surface_t *surface, - cairo_pdf_pattern_t *pdf_pattern) -{ - cairo_pdf_resource_t color_function, alpha_function; - double x1, y1, x2, y2, r1, r2; - cairo_matrix_t pat_to_pdf; - cairo_extend_t extend; - cairo_status_t status; - cairo_radial_pattern_t *pattern = (cairo_radial_pattern_t *) pdf_pattern->pattern; - - assert (pattern->base.n_stops != 0); - - extend = cairo_pattern_get_extend (pdf_pattern->pattern); - - status = _cairo_pdf_surface_emit_pattern_stops (surface, - &pattern->base, - &color_function, - &alpha_function); - if (status) - return status; - - pat_to_pdf = pattern->base.base.matrix; - status = cairo_matrix_invert (&pat_to_pdf); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); - x1 = _cairo_fixed_to_double (pattern->c1.x); - y1 = _cairo_fixed_to_double (pattern->c1.y); - r1 = _cairo_fixed_to_double (pattern->r1); - x2 = _cairo_fixed_to_double (pattern->c2.x); - y2 = _cairo_fixed_to_double (pattern->c2.y); - r2 = _cairo_fixed_to_double (pattern->r2); - - _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 3\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f %f %f ]\n" - " /Function %d 0 R\n", - pdf_pattern->pattern_res.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, r1, x2, y2, r2, - color_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } - - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); - - if (alpha_function.id != 0) { - cairo_pdf_resource_t mask_resource; - - assert (pdf_pattern->gstate_res.id != 0); - - /* Create pattern for SMask. */ - mask_resource = _cairo_pdf_surface_new_object (surface); - if (mask_resource.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pattern\n" - " /PatternType 2\n" - " /Matrix [ %f %f %f %f %f %f ]\n" - " /Shading\n" - " << /ShadingType 3\n" - " /ColorSpace /DeviceGray\n" - " /Coords [ %f %f %f %f %f %f ]\n" - " /Function %d 0 R\n", - mask_resource.id, - pat_to_pdf.xx, pat_to_pdf.yx, - pat_to_pdf.xy, pat_to_pdf.yy, - pat_to_pdf.x0, pat_to_pdf.y0, - x1, y1, r1, x2, y2, r2, - alpha_function.id); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->output, - " /Extend [ true true ]\n"); - } else { - _cairo_output_stream_printf (surface->output, - " /Extend [ false false ]\n"); - } - - _cairo_output_stream_printf (surface->output, - " >>\n" - ">>\n" - "endobj\n"); - - status = cairo_pdf_surface_emit_transparency_group (surface, - pdf_pattern->gstate_res, - mask_resource); - if (status) - return status; - } - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -_cairo_pdf_surface_emit_pattern (cairo_pdf_surface_t *surface, cairo_pdf_pattern_t *pdf_pattern) -{ - double old_width, old_height; - cairo_status_t status; - - old_width = surface->width; - old_height = surface->height; - _cairo_pdf_surface_set_size_internal (surface, - pdf_pattern->width, - pdf_pattern->height); - - switch (pdf_pattern->pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: - ASSERT_NOT_REACHED; - status = _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - break; - - case CAIRO_PATTERN_TYPE_SURFACE: - status = _cairo_pdf_surface_emit_surface_pattern (surface, pdf_pattern); - break; - - case CAIRO_PATTERN_TYPE_LINEAR: - status = _cairo_pdf_surface_emit_linear_pattern (surface, pdf_pattern); - break; - - case CAIRO_PATTERN_TYPE_RADIAL: - status = _cairo_pdf_surface_emit_radial_pattern (surface, pdf_pattern); - break; - - default: - ASSERT_NOT_REACHED; - status = _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); - break; - } - - _cairo_pdf_surface_set_size_internal (surface, - old_width, - old_height); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_select_pattern (cairo_pdf_surface_t *surface, - cairo_pattern_t *pattern, - cairo_pdf_resource_t pattern_res, - cairo_bool_t is_stroke) -{ - cairo_status_t status; - int alpha; - - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) { - cairo_solid_pattern_t *solid_pattern = (cairo_solid_pattern_t *) pattern; - - status = _cairo_pdf_surface_add_alpha (surface, solid_pattern->color.alpha, &alpha); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "%f %f %f ", - solid_pattern->color.red, - solid_pattern->color.green, - solid_pattern->color.blue); - - if (is_stroke) - _cairo_output_stream_printf (surface->output, "RG "); - else - _cairo_output_stream_printf (surface->output, "rg "); - - _cairo_output_stream_printf (surface->output, - "/a%d gs\n", - alpha); - surface->select_pattern_gstate_saved = FALSE; - } else { - status = _cairo_pdf_surface_add_alpha (surface, 1.0, &alpha); - if (status) - return status; - - status = _cairo_pdf_surface_add_pattern (surface, pattern_res); - if (status) - return status; - - /* fill-stroke calls select_pattern twice. Don't save if the - * gstate is already saved. */ - if (!surface->select_pattern_gstate_saved) - _cairo_output_stream_printf (surface->output, "q "); - - if (is_stroke) { - _cairo_output_stream_printf (surface->output, - "/Pattern CS /p%d SCN ", - pattern_res.id); - } else { - _cairo_output_stream_printf (surface->output, - "/Pattern cs /p%d scn ", - pattern_res.id); - } - _cairo_output_stream_printf (surface->output, - "/a%d gs\n", - alpha); - surface->select_pattern_gstate_saved = TRUE; - } - - return _cairo_output_stream_get_status (surface->output); -} - -static void -_cairo_pdf_surface_unselect_pattern (cairo_pdf_surface_t *surface) -{ - if (surface->select_pattern_gstate_saved) - _cairo_output_stream_printf (surface->output, "Q\n"); - surface->select_pattern_gstate_saved = FALSE; -} - -static cairo_int_status_t -_cairo_pdf_surface_show_page (void *abstract_surface) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_int_status_t status; - - status = _cairo_pdf_surface_close_content_stream (surface); - if (status) - return status; - - status = _cairo_pdf_surface_write_page (surface); - if (status) - return status; - - _cairo_pdf_surface_clear (surface); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_pdf_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_pdf_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - - /* XXX: The conversion to integers here is pretty bogus, (not to - * mention the arbitrary limitation of width to a short(!). We - * may need to come up with a better interface for get_size. - */ - rectangle->width = (int) ceil (surface->width); - rectangle->height = (int) ceil (surface->height); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_pdf_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_pdf_surface_t *surface = abstract_surface; - - if (path == NULL) { - _cairo_output_stream_printf (surface->output, "Q q\n"); - return CAIRO_STATUS_SUCCESS; - } - - return _cairo_pdf_operators_clip (&surface->pdf_operators, path, fill_rule); -} - -static void -_cairo_pdf_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - _cairo_font_options_init_default (options); - - cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); -} - -static cairo_pdf_resource_t -_cairo_pdf_surface_write_info (cairo_pdf_surface_t *surface) -{ - cairo_pdf_resource_t info; - - info = _cairo_pdf_surface_new_object (surface); - if (info.id == 0) - return info; - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Creator (cairo %s (http://cairographics.org))\n" - " /Producer (cairo %s (http://cairographics.org))\n" - ">>\n" - "endobj\n", - info.id, - cairo_version_string (), - cairo_version_string ()); - - return info; -} - -static void -_cairo_pdf_surface_write_pages (cairo_pdf_surface_t *surface) -{ - cairo_pdf_resource_t page; - int num_pages, i; - - _cairo_pdf_surface_update_object (surface, surface->pages_resource); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Pages\n" - " /Kids [ ", - surface->pages_resource.id); - - num_pages = _cairo_array_num_elements (&surface->pages); - for (i = 0; i < num_pages; i++) { - _cairo_array_copy_element (&surface->pages, i, &page); - _cairo_output_stream_printf (surface->output, "%d 0 R ", page.id); - } - - _cairo_output_stream_printf (surface->output, "]\n"); - _cairo_output_stream_printf (surface->output, " /Count %d\n", num_pages); - - - /* TODO: Figure out which other defaults to be inherited by /Page - * objects. */ - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); -} - -static cairo_int_status_t -_cairo_pdf_surface_emit_to_unicode_stream (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset, - cairo_bool_t is_composite, - cairo_pdf_resource_t *stream) -{ - const cairo_scaled_font_backend_t *backend; - unsigned int i, num_bfchar; - cairo_int_status_t status; - - stream->id = 0; - if (font_subset->to_unicode == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_truetype_create_glyph_to_unicode_map (font_subset); - if (status) { - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - backend = font_subset->scaled_font->backend; - if (backend->map_glyphs_to_unicode == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = backend->map_glyphs_to_unicode (font_subset->scaled_font, - font_subset); - if (status) - return status; - } - - status = _cairo_pdf_surface_open_stream (surface, - NULL, - surface->compress_content, - NULL); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "/CIDInit /ProcSet findresource begin\n" - "12 dict begin\n" - "begincmap\n" - "/CIDSystemInfo\n" - "<< /Registry (Adobe)\n" - " /Ordering (UCS)\n" - " /Supplement 0\n" - ">> def\n" - "/CMapName /Adobe-Identity-UCS def\n" - "/CMapType 2 def\n" - "1 begincodespacerange\n"); - - if (is_composite) { - _cairo_output_stream_printf (surface->output, - "<0000> \n"); - } else { - _cairo_output_stream_printf (surface->output, - "<00> \n"); - } - - _cairo_output_stream_printf (surface->output, - "endcodespacerange\n"); - - num_bfchar = font_subset->num_glyphs - 1; - /* The CMap specification has a limit of 100 characters per beginbfchar operator */ - _cairo_output_stream_printf (surface->output, - "%d beginbfchar\n", - num_bfchar > 100 ? 100 : num_bfchar); - for (i = 0; i < num_bfchar; i++) { - if (i != 0 && i % 100 == 0) { - _cairo_output_stream_printf (surface->output, - "endbfchar\n" - "%d beginbfchar\n", - num_bfchar - i > 100 ? 100 : num_bfchar - i); - } - if (is_composite) { - _cairo_output_stream_printf (surface->output, - "<%04x> <%04lx>\n", - i + 1, font_subset->to_unicode[i + 1]); - } else { - _cairo_output_stream_printf (surface->output, - "<%02x> <%04lx>\n", - i + 1, font_subset->to_unicode[i + 1]); - } - } - _cairo_output_stream_printf (surface->output, - "endbfchar\n"); - - _cairo_output_stream_printf (surface->output, - "endcmap\n" - "CMapName currentdict /CMap defineresource pop\n" - "end\n" - "end\n"); - - *stream = surface->pdf_stream.self; - return _cairo_pdf_surface_close_stream (surface); -} - -static cairo_status_t -_cairo_pdf_surface_emit_cff_font (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset, - cairo_cff_subset_t *subset) -{ - cairo_pdf_resource_t stream, descriptor, cidfont_dict; - cairo_pdf_resource_t subset_resource, to_unicode_stream; - cairo_pdf_font_t font; - unsigned int i; - cairo_status_t status; - - subset_resource = _cairo_pdf_surface_get_font_resource (surface, - font_subset->font_id, - font_subset->subset_id); - if (subset_resource.id == 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_pdf_surface_open_stream (surface, - NULL, - TRUE, - " /Subtype /CIDFontType0C\n"); - if (status) - return status; - - stream = surface->pdf_stream.self; - _cairo_output_stream_write (surface->output, - subset->data, subset->data_length); - status = _cairo_pdf_surface_close_stream (surface); - if (status) - return status; - - status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, TRUE, - &to_unicode_stream); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - descriptor = _cairo_pdf_surface_new_object (surface); - if (descriptor.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /FontDescriptor\n" - " /FontName /%s\n" - " /Flags 4\n" - " /FontBBox [ %ld %ld %ld %ld ]\n" - " /ItalicAngle 0\n" - " /Ascent %ld\n" - " /Descent %ld\n" - " /CapHeight 500\n" - " /StemV 80\n" - " /StemH 80\n" - " /FontFile3 %u 0 R\n" - ">>\n" - "endobj\n", - descriptor.id, - subset->base_font, - subset->x_min, - subset->y_min, - subset->x_max, - subset->y_max, - subset->ascent, - subset->descent, - stream.id); - - cidfont_dict = _cairo_pdf_surface_new_object (surface); - if (cidfont_dict.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /CIDFontType0\n" - " /BaseFont /%s\n" - " /CIDSystemInfo\n" - " << /Registry (Adobe)\n" - " /Ordering (Identity)\n" - " /Supplement 0\n" - " >>\n" - " /FontDescriptor %d 0 R\n" - " /W [0 [", - cidfont_dict.id, - subset->base_font, - descriptor.id); - - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " %d", - subset->widths[i]); - - _cairo_output_stream_printf (surface->output, - " ]]\n" - ">>\n" - "endobj\n"); - - _cairo_pdf_surface_update_object (surface, subset_resource); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /Type0\n" - " /BaseFont /%s\n" - " /Encoding /Identity-H\n" - " /DescendantFonts [ %d 0 R]\n", - subset_resource.id, - subset->base_font, - cidfont_dict.id); - - if (to_unicode_stream.id != 0) - _cairo_output_stream_printf (surface->output, - " /ToUnicode %d 0 R\n", - to_unicode_stream.id); - - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - font.font_id = font_subset->font_id; - font.subset_id = font_subset->subset_id; - font.subset_resource = subset_resource; - status = _cairo_array_append (&surface->fonts, &font); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_cff_font_subset (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_status_t status; - cairo_cff_subset_t subset; - char name[64]; - - snprintf (name, sizeof name, "CairoFont-%d-%d", - font_subset->font_id, font_subset->subset_id); - status = _cairo_cff_subset_init (&subset, name, font_subset); - if (status) - return status; - - status = _cairo_pdf_surface_emit_cff_font (surface, font_subset, &subset); - - _cairo_cff_subset_fini (&subset); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_cff_fallback_font (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_status_t status; - cairo_cff_subset_t subset; - char name[64]; - - snprintf (name, sizeof name, "CairoFont-%d-%d", - font_subset->font_id, font_subset->subset_id); - status = _cairo_cff_fallback_init (&subset, name, font_subset); - if (status) - return status; - - status = _cairo_pdf_surface_emit_cff_font (surface, font_subset, &subset); - - _cairo_cff_fallback_fini (&subset); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_type1_font (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset, - cairo_type1_subset_t *subset) -{ - cairo_pdf_resource_t stream, descriptor, subset_resource, to_unicode_stream; - cairo_pdf_font_t font; - cairo_status_t status; - unsigned long length; - unsigned int i; - - subset_resource = _cairo_pdf_surface_get_font_resource (surface, - font_subset->font_id, - font_subset->subset_id); - if (subset_resource.id == 0) - return CAIRO_STATUS_SUCCESS; - - /* We ignore the zero-trailer and set Length3 to 0. */ - length = subset->header_length + subset->data_length; - status = _cairo_pdf_surface_open_stream (surface, - NULL, - TRUE, - " /Length1 %lu\n" - " /Length2 %lu\n" - " /Length3 0\n", - subset->header_length, - subset->data_length); - if (status) - return status; - - stream = surface->pdf_stream.self; - _cairo_output_stream_write (surface->output, subset->data, length); - status = _cairo_pdf_surface_close_stream (surface); - if (status) - return status; - - status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, FALSE, - &to_unicode_stream); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - descriptor = _cairo_pdf_surface_new_object (surface); - if (descriptor.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /FontDescriptor\n" - " /FontName /%s\n" - " /Flags 4\n" - " /FontBBox [ %ld %ld %ld %ld ]\n" - " /ItalicAngle 0\n" - " /Ascent %ld\n" - " /Descent %ld\n" - " /CapHeight 500\n" - " /StemV 80\n" - " /StemH 80\n" - " /FontFile %u 0 R\n" - ">>\n" - "endobj\n", - descriptor.id, - subset->base_font, - subset->x_min, - subset->y_min, - subset->x_max, - subset->y_max, - subset->ascent, - subset->descent, - stream.id); - - _cairo_pdf_surface_update_object (surface, subset_resource); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /Type1\n" - " /BaseFont /%s\n" - " /FirstChar 0\n" - " /LastChar %d\n" - " /FontDescriptor %d 0 R\n" - " /Widths [", - subset_resource.id, - subset->base_font, - font_subset->num_glyphs - 1, - descriptor.id); - - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " %d", - subset->widths[i]); - - _cairo_output_stream_printf (surface->output, - " ]\n"); - - if (to_unicode_stream.id != 0) - _cairo_output_stream_printf (surface->output, - " /ToUnicode %d 0 R\n", - to_unicode_stream.id); - - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - font.font_id = font_subset->font_id; - font.subset_id = font_subset->subset_id; - font.subset_resource = subset_resource; - return _cairo_array_append (&surface->fonts, &font); -} - -#if CAIRO_HAS_FT_FONT -static cairo_status_t -_cairo_pdf_surface_emit_type1_font_subset (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_status_t status; - cairo_type1_subset_t subset; - char name[64]; - - snprintf (name, sizeof name, "CairoFont-%d-%d", - font_subset->font_id, font_subset->subset_id); - status = _cairo_type1_subset_init (&subset, name, font_subset, FALSE); - if (status) - return status; - - status = _cairo_pdf_surface_emit_type1_font (surface, font_subset, &subset); - - _cairo_type1_subset_fini (&subset); - return status; -} -#endif - -static cairo_status_t -_cairo_pdf_surface_emit_type1_fallback_font (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_status_t status; - cairo_type1_subset_t subset; - char name[64]; - - snprintf (name, sizeof name, "CairoFont-%d-%d", - font_subset->font_id, font_subset->subset_id); - status = _cairo_type1_fallback_init_binary (&subset, name, font_subset); - if (status) - return status; - - status = _cairo_pdf_surface_emit_type1_font (surface, font_subset, &subset); - - _cairo_type1_fallback_fini (&subset); - return status; -} - -#define PDF_UNITS_PER_EM 1000 - -static cairo_status_t -_cairo_pdf_surface_emit_truetype_font_subset (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_pdf_resource_t stream, descriptor, cidfont_dict; - cairo_pdf_resource_t subset_resource, to_unicode_stream; - cairo_status_t status; - cairo_pdf_font_t font; - cairo_truetype_subset_t subset; - unsigned int i; - - subset_resource = _cairo_pdf_surface_get_font_resource (surface, - font_subset->font_id, - font_subset->subset_id); - if (subset_resource.id == 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_truetype_subset_init (&subset, font_subset); - if (status) - return status; - - status = _cairo_pdf_surface_open_stream (surface, - NULL, - TRUE, - " /Length1 %lu\n", - subset.data_length); - if (status) { - _cairo_truetype_subset_fini (&subset); - return status; - } - - stream = surface->pdf_stream.self; - _cairo_output_stream_write (surface->output, - subset.data, subset.data_length); - status = _cairo_pdf_surface_close_stream (surface); - if (status) { - _cairo_truetype_subset_fini (&subset); - return status; - } - - status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, TRUE, - &to_unicode_stream); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) { - _cairo_truetype_subset_fini (&subset); - return status; - } - - descriptor = _cairo_pdf_surface_new_object (surface); - if (descriptor.id == 0) { - _cairo_truetype_subset_fini (&subset); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /FontDescriptor\n" - " /FontName /%s\n" - " /Flags 4\n" - " /FontBBox [ %ld %ld %ld %ld ]\n" - " /ItalicAngle 0\n" - " /Ascent %ld\n" - " /Descent %ld\n" - " /CapHeight %ld\n" - " /StemV 80\n" - " /StemH 80\n" - " /FontFile2 %u 0 R\n" - ">>\n" - "endobj\n", - descriptor.id, - subset.base_font, - (long)(subset.x_min*PDF_UNITS_PER_EM), - (long)(subset.y_min*PDF_UNITS_PER_EM), - (long)(subset.x_max*PDF_UNITS_PER_EM), - (long)(subset.y_max*PDF_UNITS_PER_EM), - (long)(subset.ascent*PDF_UNITS_PER_EM), - (long)(subset.descent*PDF_UNITS_PER_EM), - (long)(subset.y_max*PDF_UNITS_PER_EM), - stream.id); - - cidfont_dict = _cairo_pdf_surface_new_object (surface); - if (cidfont_dict.id == 0) { - _cairo_truetype_subset_fini (&subset); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /CIDFontType2\n" - " /BaseFont /%s\n" - " /CIDSystemInfo\n" - " << /Registry (Adobe)\n" - " /Ordering (Identity)\n" - " /Supplement 0\n" - " >>\n" - " /FontDescriptor %d 0 R\n" - " /W [0 [", - cidfont_dict.id, - subset.base_font, - descriptor.id); - - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " %ld", - (long)(subset.widths[i]*PDF_UNITS_PER_EM)); - - _cairo_output_stream_printf (surface->output, - " ]]\n" - ">>\n" - "endobj\n"); - - _cairo_pdf_surface_update_object (surface, subset_resource); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /Type0\n" - " /BaseFont /%s\n" - " /Encoding /Identity-H\n" - " /DescendantFonts [ %d 0 R]\n", - subset_resource.id, - subset.base_font, - cidfont_dict.id); - - if (to_unicode_stream.id != 0) - _cairo_output_stream_printf (surface->output, - " /ToUnicode %d 0 R\n", - to_unicode_stream.id); - - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - font.font_id = font_subset->font_id; - font.subset_id = font_subset->subset_id; - font.subset_resource = subset_resource; - status = _cairo_array_append (&surface->fonts, &font); - - _cairo_truetype_subset_fini (&subset); - - return status; -} - -static cairo_int_status_t -_cairo_pdf_surface_emit_bitmap_glyph (cairo_pdf_surface_t *surface, - cairo_scaled_font_t *scaled_font, - unsigned long glyph_index, - cairo_pdf_resource_t *glyph_ret, - cairo_box_t *bbox, - double *width) -{ - cairo_scaled_glyph_t *scaled_glyph; - cairo_status_t status; - cairo_image_surface_t *image; - unsigned char *row, *byte; - int rows, cols; - double x_advance, y_advance; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS| - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - if (status) - return status; - - x_advance = scaled_glyph->metrics.x_advance; - y_advance = scaled_glyph->metrics.y_advance; - cairo_matrix_transform_distance (&scaled_font->ctm, &x_advance, &y_advance); - *bbox = scaled_glyph->bbox; - *width = x_advance; - - image = scaled_glyph->surface; - if (image->format != CAIRO_FORMAT_A1) { - image = _cairo_image_surface_clone (image, CAIRO_FORMAT_A1); - status = cairo_surface_status (&image->base); - if (status) - return status; - } - - status = _cairo_pdf_surface_open_stream (surface, - NULL, - surface->compress_content, - NULL); - if (status) { - if (image != scaled_glyph->surface) - cairo_surface_destroy (&image->base); - return status; - } - - *glyph_ret = surface->pdf_stream.self; - - _cairo_output_stream_printf (surface->output, - "%f 0 %f %f %f %f d1\n", - x_advance, - _cairo_fixed_to_double (scaled_glyph->bbox.p1.x), - _cairo_fixed_to_double (scaled_glyph->bbox.p2.y), - _cairo_fixed_to_double (scaled_glyph->bbox.p2.x), - _cairo_fixed_to_double (scaled_glyph->bbox.p1.y)); - - _cairo_output_stream_printf (surface->output, - "%f 0 0 %f %f %f cm\n", - _cairo_fixed_to_double (scaled_glyph->bbox.p2.x) - _cairo_fixed_to_double (scaled_glyph->bbox.p1.x), - _cairo_fixed_to_double (scaled_glyph->bbox.p1.y) - _cairo_fixed_to_double (scaled_glyph->bbox.p2.y), - _cairo_fixed_to_double (scaled_glyph->bbox.p1.x), - _cairo_fixed_to_double (scaled_glyph->bbox.p2.y)); - - _cairo_output_stream_printf (surface->output, - "BI\n" - "/IM true\n" - "/W %d\n" - "/H %d\n" - "/BPC 1\n" - "/D [1 0]\n", - image->width, - image->height); - - _cairo_output_stream_printf (surface->output, - "ID "); - for (row = image->data, rows = image->height; rows; row += image->stride, rows--) { - for (byte = row, cols = (image->width + 7) / 8; cols; byte++, cols--) { - unsigned char output_byte = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (*byte); - _cairo_output_stream_write (surface->output, &output_byte, 1); - } - } - _cairo_output_stream_printf (surface->output, - "\nEI\n"); - - status = _cairo_pdf_surface_close_stream (surface); - - if (image != scaled_glyph->surface) - cairo_surface_destroy (&image->base); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_emit_type3_font_subset (cairo_pdf_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_pdf_resource_t *glyphs, encoding, char_procs, subset_resource, to_unicode_stream; - cairo_pdf_font_t font; - cairo_matrix_t matrix; - double *widths; - unsigned int i; - cairo_box_t font_bbox = {{0,0},{0,0}}; - cairo_box_t bbox = {{0,0},{0,0}}; - - if (font_subset->num_glyphs == 0) - return CAIRO_STATUS_SUCCESS; - - subset_resource = _cairo_pdf_surface_get_font_resource (surface, - font_subset->font_id, - font_subset->subset_id); - if (subset_resource.id == 0) - return CAIRO_STATUS_SUCCESS; - - glyphs = _cairo_malloc_ab (font_subset->num_glyphs, sizeof (cairo_pdf_resource_t)); - if (glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - widths = _cairo_malloc_ab (font_subset->num_glyphs, sizeof (double)); - if (widths == NULL) { - free (glyphs); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < font_subset->num_glyphs; i++) { - status = _cairo_pdf_surface_emit_bitmap_glyph (surface, - font_subset->scaled_font, - font_subset->glyphs[i], - &glyphs[i], - &bbox, - &widths[i]); - if (status) - break; - - if (i == 0) { - font_bbox.p1.x = bbox.p1.x; - font_bbox.p1.y = bbox.p1.y; - font_bbox.p2.x = bbox.p2.x; - font_bbox.p2.y = bbox.p2.y; - } else { - if (bbox.p1.x < font_bbox.p1.x) - font_bbox.p1.x = bbox.p1.x; - if (bbox.p1.y < font_bbox.p1.y) - font_bbox.p1.y = bbox.p1.y; - if (bbox.p2.x > font_bbox.p2.x) - font_bbox.p2.x = bbox.p2.x; - if (bbox.p2.y > font_bbox.p2.y) - font_bbox.p2.y = bbox.p2.y; - } - } - if (status) { - free (glyphs); - free (widths); - return status; - } - - encoding = _cairo_pdf_surface_new_object (surface); - if (encoding.id == 0) { - free (glyphs); - free (widths); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Encoding\n" - " /Differences [0", encoding.id); - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " /%d", i); - _cairo_output_stream_printf (surface->output, - "]\n" - ">>\n" - "endobj\n"); - - char_procs = _cairo_pdf_surface_new_object (surface); - if (char_procs.id == 0) { - free (glyphs); - free (widths); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<<\n", char_procs.id); - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, - " /%d %d 0 R\n", - i, glyphs[i].id); - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - free (glyphs); - - status = _cairo_pdf_surface_emit_to_unicode_stream (surface, - font_subset, FALSE, - &to_unicode_stream); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) { - free (widths); - return status; - } - - _cairo_pdf_surface_update_object (surface, subset_resource); - matrix = font_subset->scaled_font->scale_inverse; - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Font\n" - " /Subtype /Type3\n" - " /FontBBox [%f %f %f %f]\n" - " /FontMatrix [ %f %f %f %f 0 0 ]\n" - " /Encoding %d 0 R\n" - " /CharProcs %d 0 R\n" - " /FirstChar 0\n" - " /LastChar %d\n", - subset_resource.id, - _cairo_fixed_to_double (font_bbox.p1.x), - _cairo_fixed_to_double (font_bbox.p1.y), - _cairo_fixed_to_double (font_bbox.p2.x), - _cairo_fixed_to_double (font_bbox.p2.y), - matrix.xx, - matrix.yx, - -matrix.xy, - -matrix.yy, - encoding.id, - char_procs.id, - font_subset->num_glyphs - 1); - - _cairo_output_stream_printf (surface->output, - " /Widths ["); - for (i = 0; i < font_subset->num_glyphs; i++) - _cairo_output_stream_printf (surface->output, " %f", widths[i]); - _cairo_output_stream_printf (surface->output, - "]\n"); - free (widths); - - if (to_unicode_stream.id != 0) - _cairo_output_stream_printf (surface->output, - " /ToUnicode %d 0 R\n", - to_unicode_stream.id); - - _cairo_output_stream_printf (surface->output, - ">>\n" - "endobj\n"); - - font.font_id = font_subset->font_id; - font.subset_id = font_subset->subset_id; - font.subset_resource = subset_resource; - return _cairo_array_append (&surface->fonts, &font); -} - -static cairo_status_t -_cairo_pdf_surface_emit_unscaled_font_subset (cairo_scaled_font_subset_t *font_subset, - void *closure) -{ - cairo_pdf_surface_t *surface = closure; - cairo_status_t status; - - if (font_subset->is_composite) { - status = _cairo_pdf_surface_emit_cff_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - status = _cairo_pdf_surface_emit_truetype_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - status = _cairo_pdf_surface_emit_cff_fallback_font (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - } else { -#if CAIRO_HAS_FT_FONT - status = _cairo_pdf_surface_emit_type1_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; -#endif - - status = _cairo_pdf_surface_emit_type1_fallback_font (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - } - - ASSERT_NOT_REACHED; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_pdf_surface_emit_scaled_font_subset (cairo_scaled_font_subset_t *font_subset, - void *closure) -{ - cairo_pdf_surface_t *surface = closure; - cairo_status_t status; - - status = _cairo_pdf_surface_emit_type3_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - ASSERT_NOT_REACHED; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_pdf_surface_emit_font_subsets (cairo_pdf_surface_t *surface) -{ - cairo_status_t status; - - status = _cairo_scaled_font_subsets_foreach_unscaled (surface->font_subsets, - _cairo_pdf_surface_emit_unscaled_font_subset, - surface); - if (status) - goto BAIL; - - status = _cairo_scaled_font_subsets_foreach_scaled (surface->font_subsets, - _cairo_pdf_surface_emit_scaled_font_subset, - surface); - -BAIL: - _cairo_scaled_font_subsets_destroy (surface->font_subsets); - surface->font_subsets = NULL; - - return status; -} - -static cairo_pdf_resource_t -_cairo_pdf_surface_write_catalog (cairo_pdf_surface_t *surface) -{ - cairo_pdf_resource_t catalog; - - catalog = _cairo_pdf_surface_new_object (surface); - if (catalog.id == 0) - return catalog; - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Catalog\n" - " /Pages %d 0 R\n" - ">>\n" - "endobj\n", - catalog.id, - surface->pages_resource.id); - - return catalog; -} - -static long -_cairo_pdf_surface_write_xref (cairo_pdf_surface_t *surface) -{ - cairo_pdf_object_t *object; - int num_objects, i; - long offset; - char buffer[11]; - - num_objects = _cairo_array_num_elements (&surface->objects); - - offset = _cairo_output_stream_get_position (surface->output); - _cairo_output_stream_printf (surface->output, - "xref\n" - "%d %d\n", - 0, num_objects + 1); - - _cairo_output_stream_printf (surface->output, - "0000000000 65535 f \n"); - for (i = 0; i < num_objects; i++) { - object = _cairo_array_index (&surface->objects, i); - snprintf (buffer, sizeof buffer, "%010ld", object->offset); - _cairo_output_stream_printf (surface->output, - "%s 00000 n \n", buffer); - } - - return offset; -} - -static cairo_status_t -_cairo_pdf_surface_write_mask_group (cairo_pdf_surface_t *surface, - cairo_pdf_smask_group_t *group) -{ - cairo_pdf_resource_t mask_group; - cairo_pdf_resource_t smask; - cairo_pdf_smask_group_t *smask_group; - cairo_pdf_resource_t pattern_res, gstate_res; - cairo_status_t status; - - /* Create mask group */ - status = _cairo_pdf_surface_open_group (surface, NULL); - if (status) - return status; - - pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, group->mask, &pattern_res, &gstate_res); - if (status) - return status; - - if (gstate_res.id != 0) { - smask_group = _cairo_pdf_surface_create_smask_group (surface); - if (smask_group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - smask_group->operation = PDF_PAINT; - smask_group->source = cairo_pattern_reference (group->mask); - smask_group->source_res = pattern_res; - status = _cairo_pdf_surface_add_smask_group (surface, smask_group); - if (status) { - _cairo_pdf_smask_group_destroy (smask_group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, gstate_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, smask_group->group_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - gstate_res.id, - smask_group->group_res.id); - } else { - status = _cairo_pdf_surface_select_pattern (surface, group->mask, pattern_res, FALSE); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "0 0 %f %f re f\n", - surface->width, surface->height); - - _cairo_pdf_surface_unselect_pattern (surface); - } - - status = _cairo_pdf_surface_close_group (surface, &mask_group); - if (status) - return status; - - /* Create source group */ - status = _cairo_pdf_surface_open_group (surface, &group->source_res); - if (status) - return status; - - pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, group->source, &pattern_res, &gstate_res); - if (status) - return status; - - if (gstate_res.id != 0) { - smask_group = _cairo_pdf_surface_create_smask_group (surface); - if (smask_group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - smask_group->operation = PDF_PAINT; - smask_group->source = cairo_pattern_reference (group->source); - smask_group->source_res = pattern_res; - status = _cairo_pdf_surface_add_smask_group (surface, smask_group); - if (status) { - _cairo_pdf_smask_group_destroy (smask_group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, gstate_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, smask_group->group_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - gstate_res.id, - smask_group->group_res.id); - } else { - status = _cairo_pdf_surface_select_pattern (surface, group->source, pattern_res, FALSE); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "0 0 %f %f re f\n", - surface->width, surface->height); - - _cairo_pdf_surface_unselect_pattern (surface); - } - - status = _cairo_pdf_surface_close_group (surface, NULL); - if (status) - return status; - - /* Create an smask based on the alpha component of mask_group */ - smask = _cairo_pdf_surface_new_object (surface); - if (smask.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Mask\n" - " /S /Alpha\n" - " /G %d 0 R\n" - ">>\n" - "endobj\n", - smask.id, - mask_group.id); - - /* Create a GState that uses the smask */ - _cairo_pdf_surface_update_object (surface, group->group_res); - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /ExtGState\n" - " /SMask %d 0 R\n" - " /ca 1\n" - " /CA 1\n" - " /AIS false\n" - ">>\n" - "endobj\n", - group->group_res.id, - smask.id); - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_status_t -_cairo_pdf_surface_write_smask_group (cairo_pdf_surface_t *surface, - cairo_pdf_smask_group_t *group) -{ - double old_width, old_height; - cairo_status_t status; - - old_width = surface->width; - old_height = surface->height; - _cairo_pdf_surface_set_size_internal (surface, - group->width, - group->height); - /* _mask is a special case that requires two groups - source - * and mask as well as a smask and gstate dictionary */ - if (group->operation == PDF_MASK) - return _cairo_pdf_surface_write_mask_group (surface, group); - - status = _cairo_pdf_surface_open_group (surface, &group->group_res); - if (status) - return status; - - status = _cairo_pdf_surface_select_pattern (surface, - group->source, - group->source_res, - group->operation == PDF_STROKE); - if (status) - return status; - - switch (group->operation) { - case PDF_PAINT: - _cairo_output_stream_printf (surface->output, - "0 0 %f %f re f\n", - surface->width, surface->height); - break; - case PDF_MASK: - ASSERT_NOT_REACHED; - break; - case PDF_FILL: - status = _cairo_pdf_operators_fill (&surface->pdf_operators, - &group->path, - group->fill_rule); - break; - case PDF_STROKE: - status = _cairo_pdf_operators_stroke (&surface->pdf_operators, - &group->path, - group->style, - &group->ctm, - &group->ctm_inverse); - break; - case PDF_SHOW_GLYPHS: - status = _cairo_pdf_operators_show_glyphs (&surface->pdf_operators, - group->glyphs, - group->num_glyphs, - group->scaled_font); - break; - } - if (status) - return status; - - _cairo_pdf_surface_unselect_pattern (surface); - status = _cairo_pdf_surface_close_group (surface, NULL); - - _cairo_pdf_surface_set_size_internal (surface, - old_width, - old_height); - - return status; -} - -static cairo_status_t -_cairo_pdf_surface_write_patterns_and_smask_groups (cairo_pdf_surface_t *surface) -{ - cairo_pdf_pattern_t pattern; - cairo_pdf_smask_group_t *group; - int pattern_index, group_index; - cairo_status_t status; - - /* Writing out PDF_MASK groups will cause additional smask groups - * to be appended to surface->smask_groups. Additional patterns - * may also be appended to surface->patterns. - * - * Writing meta surface patterns will cause additional patterns - * and groups to be appended. - */ - pattern_index = 0; - group_index = 0; - while ((pattern_index < _cairo_array_num_elements (&surface->patterns)) || - (group_index < _cairo_array_num_elements (&surface->smask_groups))) - { - for (; group_index < _cairo_array_num_elements (&surface->smask_groups); group_index++) { - _cairo_array_copy_element (&surface->smask_groups, group_index, &group); - status = _cairo_pdf_surface_write_smask_group (surface, group); - if (status) - return status; - } - - for (; pattern_index < _cairo_array_num_elements (&surface->patterns); pattern_index++) { - _cairo_array_copy_element (&surface->patterns, pattern_index, &pattern); - status = _cairo_pdf_surface_emit_pattern (surface, &pattern); - if (status) - return status; - } - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface) -{ - cairo_pdf_resource_t page, knockout, res; - cairo_status_t status; - int i, len; - - _cairo_pdf_group_resources_clear (&surface->resources); - if (surface->has_fallback_images) { - status = _cairo_pdf_surface_open_knockout_group (surface); - if (status) - return status; - - len = _cairo_array_num_elements (&surface->knockout_group); - for (i = 0; i < len; i++) { - _cairo_array_copy_element (&surface->knockout_group, i, &res); - _cairo_output_stream_printf (surface->output, - "/x%d Do\n", - res.id); - status = _cairo_pdf_surface_add_xobject (surface, res); - if (status) - return status; - } - _cairo_output_stream_printf (surface->output, - "/x%d Do\n", - surface->content.id); - status = _cairo_pdf_surface_add_xobject (surface, surface->content); - if (status) - return status; - - status = _cairo_pdf_surface_close_group (surface, &knockout); - if (status) - return status; - - _cairo_pdf_group_resources_clear (&surface->resources); - status = _cairo_pdf_surface_open_content_stream (surface, FALSE); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "/x%d Do\n", - knockout.id); - status = _cairo_pdf_surface_add_xobject (surface, knockout); - if (status) - return status; - - status = _cairo_pdf_surface_close_content_stream (surface); - if (status) - return status; - } - - page = _cairo_pdf_surface_new_object (surface); - if (page.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Type /Page\n" - " /Parent %d 0 R\n" - " /MediaBox [ 0 0 %f %f ]\n" - " /Contents %d 0 R\n" - " /Group <<\n" - " /Type /Group\n" - " /S /Transparency\n" - " /CS /DeviceRGB\n" - " >>\n" - " /Resources %d 0 R\n" - ">>\n" - "endobj\n", - page.id, - surface->pages_resource.id, - surface->width, - surface->height, - surface->content.id, - surface->content_resources.id); - - status = _cairo_array_append (&surface->pages, &page); - if (status) - return status; - - status = _cairo_pdf_surface_write_patterns_and_smask_groups (surface); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_pdf_surface_analyze_surface_pattern_transparency (cairo_pdf_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - cairo_image_surface_t *image; - void *image_extra; - cairo_int_status_t status; - cairo_image_transparency_t transparency; - - status = _cairo_surface_acquire_source_image (pattern->surface, - &image, - &image_extra); - if (status) - return status; - - if (image->base.status) - return image->base.status; - - transparency = _cairo_image_analyze_transparency (image); - if (transparency == CAIRO_IMAGE_IS_OPAQUE) - status = CAIRO_STATUS_SUCCESS; - else - status = CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - - _cairo_surface_release_source_image (pattern->surface, image, image_extra); - - return status; -} - -static cairo_bool_t -_surface_pattern_supported (cairo_surface_pattern_t *pattern) -{ - cairo_extend_t extend; - - if (_cairo_surface_is_meta (pattern->surface)) - return TRUE; - - if (pattern->surface->backend->acquire_source_image == NULL) - return FALSE; - - /* Does an ALPHA-only source surface even make sense? Maybe, but I - * don't think it's worth the extra code to support it. */ - -/* XXX: Need to write this function here... - content = cairo_surface_get_content (pattern->surface); - if (content == CAIRO_CONTENT_ALPHA) - return FALSE; -*/ - - extend = cairo_pattern_get_extend (&pattern->base); - switch (extend) { - case CAIRO_EXTEND_NONE: - case CAIRO_EXTEND_REPEAT: - case CAIRO_EXTEND_REFLECT: - /* There's no point returning FALSE for EXTEND_PAD, as the image - * surface does not currently implement it either */ - case CAIRO_EXTEND_PAD: - return TRUE; - } - - ASSERT_NOT_REACHED; - return FALSE; -} - -static cairo_bool_t -_gradient_pattern_supported (cairo_pattern_t *pattern) -{ - cairo_extend_t extend; - - extend = cairo_pattern_get_extend (pattern); - - - /* Radial gradients are currently only supported with EXTEND_NONE - * and EXTEND_PAD and when one circle is inside the other. */ - if (pattern->type == CAIRO_PATTERN_TYPE_RADIAL) { - double x1, y1, x2, y2, r1, r2, d; - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - - if (extend == CAIRO_EXTEND_REPEAT || - extend == CAIRO_EXTEND_REFLECT) { - return FALSE; - } - - x1 = _cairo_fixed_to_double (radial->c1.x); - y1 = _cairo_fixed_to_double (radial->c1.y); - r1 = _cairo_fixed_to_double (radial->r1); - x2 = _cairo_fixed_to_double (radial->c2.x); - y2 = _cairo_fixed_to_double (radial->c2.y); - r2 = _cairo_fixed_to_double (radial->r2); - - d = sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - if (d > fabs(r2 - r1)) { - return FALSE; - } - } - - return TRUE; -} - -static cairo_bool_t -_pattern_supported (cairo_pattern_t *pattern) -{ - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) - return TRUE; - - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) - return _gradient_pattern_supported (pattern); - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - return _surface_pattern_supported ((cairo_surface_pattern_t *) pattern); - - return FALSE; -} - -static cairo_int_status_t -_cairo_pdf_surface_analyze_operation (cairo_pdf_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *pattern) -{ - if (surface->force_fallbacks && surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (! _pattern_supported (pattern)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (op == CAIRO_OPERATOR_OVER) { - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - if ( _cairo_surface_is_meta (surface_pattern->surface)) - return CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN; - } - } - - if (op == CAIRO_OPERATOR_OVER) - return CAIRO_STATUS_SUCCESS; - - /* The SOURCE operator is supported if the pattern is opaque or if - * there is nothing painted underneath. */ - if (op == CAIRO_OPERATOR_SOURCE) { - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - if (_cairo_surface_is_meta (surface_pattern->surface)) { - if (_cairo_pattern_is_opaque (pattern)) - return CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN; - } else { - return _cairo_pdf_surface_analyze_surface_pattern_transparency (surface, - surface_pattern); - } - } - - if (_cairo_pattern_is_opaque (pattern)) - return CAIRO_STATUS_SUCCESS; - else - return CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_bool_t -_cairo_pdf_surface_operation_supported (cairo_pdf_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *pattern) -{ - if (_cairo_pdf_surface_analyze_operation (surface, op, pattern) != CAIRO_INT_STATUS_UNSUPPORTED) - return TRUE; - else - return FALSE; -} - -static cairo_int_status_t -_cairo_pdf_surface_start_fallback (cairo_pdf_surface_t *surface) -{ - cairo_status_t status; - - status = _cairo_pdf_surface_close_content_stream (surface); - if (status) - return status; - - status = _cairo_array_append (&surface->knockout_group, &surface->content); - if (status) - return status; - - surface->has_fallback_images = TRUE; - _cairo_pdf_group_resources_clear (&surface->resources); - return _cairo_pdf_surface_open_content_stream (surface, TRUE); -} - -static cairo_int_status_t -_cairo_pdf_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_status_t status; - cairo_pdf_smask_group_t *group; - cairo_pdf_resource_t pattern_res, gstate_res; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { - return _cairo_pdf_surface_analyze_operation (surface, op, source); - } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_FALLBACK) { - status = _cairo_pdf_surface_start_fallback (surface); - if (status) - return status; - } - - assert (_cairo_pdf_surface_operation_supported (surface, op, source)); - - pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, source, &pattern_res, &gstate_res); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - if (status) - return status; - - if (gstate_res.id != 0) { - group = _cairo_pdf_surface_create_smask_group (surface); - if (group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - group->operation = PDF_PAINT; - group->source = cairo_pattern_reference (source); - group->source_res = pattern_res; - status = _cairo_pdf_surface_add_smask_group (surface, group); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, gstate_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, group->group_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - gstate_res.id, - group->group_res.id); - } else { - status = _cairo_pdf_surface_select_pattern (surface, source, pattern_res, FALSE); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "0 0 %f %f re f\n", - surface->width, surface->height); - - _cairo_pdf_surface_unselect_pattern (surface); - } - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_int_status_t -_cairo_pdf_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_pdf_smask_group_t *group; - cairo_status_t status, status2; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { - status = _cairo_pdf_surface_analyze_operation (surface, op, source); - if (status != CAIRO_STATUS_SUCCESS && - status != CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN) - return status; - - status2 = _cairo_pdf_surface_analyze_operation (surface, op, mask); - if (status2 != CAIRO_STATUS_SUCCESS) - return status2; - - return status; - } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_FALLBACK) { - status = _cairo_pdf_surface_start_fallback (surface); - if (status) - return status; - } - - assert (_cairo_pdf_surface_operation_supported (surface, op, source)); - assert (_cairo_pdf_surface_operation_supported (surface, op, mask)); - - group = _cairo_pdf_surface_create_smask_group (surface); - if (group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - group->operation = PDF_MASK; - group->source = cairo_pattern_reference (source); - group->mask = cairo_pattern_reference (mask); - group->source_res = _cairo_pdf_surface_new_object (surface); - if (group->source_res.id == 0) { - _cairo_pdf_smask_group_destroy (group); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - status = _cairo_pdf_surface_add_smask_group (surface, group); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, group->group_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, group->source_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - group->group_res.id, - group->source_res.id); - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_int_status_t -_cairo_pdf_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_status_t status; - cairo_pdf_smask_group_t *group; - cairo_pdf_resource_t pattern_res, gstate_res; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_pdf_surface_analyze_operation (surface, op, source); - - assert (_cairo_pdf_surface_operation_supported (surface, op, source)); - - pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, source, &pattern_res, &gstate_res); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - if (status) - return status; - - if (gstate_res.id != 0) { - group = _cairo_pdf_surface_create_smask_group (surface); - if (group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - group->operation = PDF_STROKE; - group->source = cairo_pattern_reference (source); - group->source_res = pattern_res; - status = _cairo_path_fixed_init_copy (&group->path, path); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - group->style = style; - group->ctm = *ctm; - group->ctm_inverse = *ctm_inverse; - status = _cairo_pdf_surface_add_smask_group (surface, group); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, gstate_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, group->group_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - gstate_res.id, - group->group_res.id); - } else { - status = _cairo_pdf_surface_select_pattern (surface, source, pattern_res, TRUE); - if (status) - return status; - - status = _cairo_pdf_operators_stroke (&surface->pdf_operators, - path, - style, - ctm, - ctm_inverse); - if (status) - return status; - - _cairo_pdf_surface_unselect_pattern (surface); - } - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_int_status_t -_cairo_pdf_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_status_t status; - cairo_pdf_smask_group_t *group; - cairo_pdf_resource_t pattern_res, gstate_res; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { - return _cairo_pdf_surface_analyze_operation (surface, op, source); - } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_FALLBACK) { - status = _cairo_pdf_surface_start_fallback (surface); - if (status) - return status; - } - - assert (_cairo_pdf_surface_operation_supported (surface, op, source)); - - pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, source, &pattern_res, &gstate_res); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - if (status) - return status; - - if (gstate_res.id != 0) { - group = _cairo_pdf_surface_create_smask_group (surface); - if (group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - group->operation = PDF_FILL; - group->source = cairo_pattern_reference (source); - group->source_res = pattern_res; - status = _cairo_path_fixed_init_copy (&group->path, path); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - group->fill_rule = fill_rule; - status = _cairo_pdf_surface_add_smask_group (surface, group); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, gstate_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, group->group_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - gstate_res.id, - group->group_res.id); - } else { - status = _cairo_pdf_surface_select_pattern (surface, source, pattern_res, FALSE); - if (status) - return status; - - status = _cairo_pdf_operators_fill (&surface->pdf_operators, - path, - fill_rule); - if (status) - return status; - - _cairo_pdf_surface_unselect_pattern (surface); - } - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_int_status_t -_cairo_pdf_surface_fill_stroke (void *abstract_surface, - cairo_operator_t fill_op, - cairo_pattern_t *fill_source, - cairo_fill_rule_t fill_rule, - double fill_tolerance, - cairo_antialias_t fill_antialias, - cairo_path_fixed_t *path, - cairo_operator_t stroke_op, - cairo_pattern_t *stroke_source, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *stroke_ctm, - cairo_matrix_t *stroke_ctm_inverse, - double stroke_tolerance, - cairo_antialias_t stroke_antialias) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_status_t status; - cairo_pdf_resource_t fill_pattern_res, stroke_pattern_res, gstate_res; - - /* During analysis we return unsupported and let the _fill and - * _stroke functions that are on the fallback path do the analysis - * for us. During render we may still encounter unsupported - * combinations of fill/stroke patterns. However we can return - * unsupported anytime to let the _fill and _stroke functions take - * over. - */ - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* PDF rendering of fill-stroke is not the same as cairo when - * either the fill or stroke is not opaque. - */ - if ( !_cairo_pattern_is_opaque (fill_source) || - !_cairo_pattern_is_opaque (stroke_source)) - { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - fill_pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, fill_source, - &fill_pattern_res, - &gstate_res); - if (status) - return status; - - assert (gstate_res.id == 0); - - stroke_pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, - stroke_source, - &stroke_pattern_res, - &gstate_res); - if (status) - return status; - - assert (gstate_res.id == 0); - - /* As PDF has separate graphics state for fill and stroke we can - * select both at the same time */ - status = _cairo_pdf_surface_select_pattern (surface, fill_source, - fill_pattern_res, FALSE); - if (status) - return status; - - status = _cairo_pdf_surface_select_pattern (surface, stroke_source, - stroke_pattern_res, TRUE); - if (status) - return status; - - status = _cairo_pdf_operators_fill_stroke (&surface->pdf_operators, - path, - fill_rule, - stroke_style, - stroke_ctm, - stroke_ctm_inverse); - if (status) - return status; - - _cairo_pdf_surface_unselect_pattern (surface); - - return _cairo_output_stream_get_status (surface->output); -} - -static cairo_int_status_t -_cairo_pdf_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_pdf_surface_t *surface = abstract_surface; - cairo_status_t status; - cairo_pdf_smask_group_t *group; - cairo_pdf_resource_t pattern_res, gstate_res; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_pdf_surface_analyze_operation (surface, op, source); - - assert (_cairo_pdf_surface_operation_supported (surface, op, source)); - - pattern_res.id = 0; - gstate_res.id = 0; - status = _cairo_pdf_surface_add_pdf_pattern (surface, source, &pattern_res, &gstate_res); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - if (status) - return status; - - if (gstate_res.id != 0) { - group = _cairo_pdf_surface_create_smask_group (surface); - if (group == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - group->operation = PDF_SHOW_GLYPHS; - group->source = cairo_pattern_reference (source); - group->source_res = pattern_res; - group->glyphs = _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t)); - if (group->glyphs == NULL) { - _cairo_pdf_smask_group_destroy (group); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - memcpy (group->glyphs, glyphs, sizeof (cairo_glyph_t) * num_glyphs); - group->num_glyphs = num_glyphs; - group->scaled_font = cairo_scaled_font_reference (scaled_font); - status = _cairo_pdf_surface_add_smask_group (surface, group); - if (status) { - _cairo_pdf_smask_group_destroy (group); - return status; - } - - status = _cairo_pdf_surface_add_smask (surface, gstate_res); - if (status) - return status; - - status = _cairo_pdf_surface_add_xobject (surface, group->group_res); - if (status) - return status; - - _cairo_output_stream_printf (surface->output, - "q /s%d gs /x%d Do Q\n", - gstate_res.id, - group->group_res.id); - } else { - status = _cairo_pdf_surface_select_pattern (surface, source, pattern_res, FALSE); - if (status) - return status; - - status = _cairo_pdf_operators_show_glyphs (&surface->pdf_operators, - glyphs, - num_glyphs, - scaled_font); - if (status) - return status; - - _cairo_pdf_surface_unselect_pattern (surface); - } - - return _cairo_output_stream_get_status (surface->output); -} - -static void -_cairo_pdf_surface_set_paginated_mode (void *abstract_surface, - cairo_paginated_mode_t paginated_mode) -{ - cairo_pdf_surface_t *surface = abstract_surface; - - surface->paginated_mode = paginated_mode; -} - -static const cairo_surface_backend_t cairo_pdf_surface_backend = { - CAIRO_SURFACE_TYPE_PDF, - _cairo_pdf_surface_create_similar, - _cairo_pdf_surface_finish, - NULL, /* acquire_source_image */ - NULL, /* release_source_image */ - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* _cairo_pdf_surface_copy_page */ - _cairo_pdf_surface_show_page, - NULL, /* set_clip_region */ - _cairo_pdf_surface_intersect_clip_path, - _cairo_pdf_surface_get_extents, - NULL, /* old_show_glyphs */ - _cairo_pdf_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - /* Here are the drawing functions */ - - _cairo_pdf_surface_paint, - _cairo_pdf_surface_mask, - _cairo_pdf_surface_stroke, - _cairo_pdf_surface_fill, - _cairo_pdf_surface_show_glyphs, - NULL, /* snapshot */ - - NULL, /* is_compatible */ - NULL, /* reset */ - _cairo_pdf_surface_fill_stroke, -}; - -static const cairo_paginated_surface_backend_t cairo_pdf_surface_paginated_backend = { - _cairo_pdf_surface_start_page, - _cairo_pdf_surface_set_paginated_mode -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pdf-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pdf-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,159 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * Copyright © 2006 Red Hat, Inc - * Copyright © 2007, 2008 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Carl Worth - * Adrian Johnson - */ - -#ifndef CAIRO_PDF_SURFACE_PRIVATE_H -#define CAIRO_PDF_SURFACE_PRIVATE_H - -#include "cairo-pdf.h" - -#include "cairo-surface-private.h" -#include "cairo-pdf-operators-private.h" -#include "cairo-path-fixed-private.h" - -typedef struct _cairo_pdf_resource { - unsigned int id; -} cairo_pdf_resource_t; - -typedef struct _cairo_pdf_group_resources { - cairo_array_t alphas; - cairo_array_t smasks; - cairo_array_t patterns; - cairo_array_t xobjects; - cairo_array_t fonts; -} cairo_pdf_group_resources_t; - -typedef struct _cairo_pdf_pattern { - double width; - double height; - cairo_pattern_t *pattern; - cairo_pdf_resource_t pattern_res; - cairo_pdf_resource_t gstate_res; -} cairo_pdf_pattern_t; - -typedef enum _cairo_pdf_operation { - PDF_PAINT, - PDF_MASK, - PDF_FILL, - PDF_STROKE, - PDF_SHOW_GLYPHS -} cairo_pdf_operation_t; - -typedef struct _cairo_pdf_smask_group -{ - double width; - double height; - cairo_pdf_resource_t group_res; - cairo_pdf_operation_t operation; - cairo_pattern_t *source; - cairo_pdf_resource_t source_res; - cairo_pattern_t *mask; - cairo_path_fixed_t path; - cairo_fill_rule_t fill_rule; - cairo_stroke_style_t *style; - cairo_matrix_t ctm; - cairo_matrix_t ctm_inverse; - cairo_glyph_t *glyphs; - int num_glyphs; - cairo_scaled_font_t *scaled_font; -} cairo_pdf_smask_group_t; - -typedef struct _cairo_pdf_surface cairo_pdf_surface_t; - -struct _cairo_pdf_surface { - cairo_surface_t base; - - /* Prefer the name "output" here to avoid confusion over the - * structure within a PDF document known as a "stream". */ - cairo_output_stream_t *output; - - double width; - double height; - cairo_matrix_t cairo_to_pdf; - - cairo_array_t objects; - cairo_array_t pages; - cairo_array_t rgb_linear_functions; - cairo_array_t alpha_linear_functions; - cairo_array_t patterns; - cairo_array_t smask_groups; - cairo_array_t knockout_group; - - cairo_scaled_font_subsets_t *font_subsets; - cairo_array_t fonts; - - cairo_pdf_resource_t next_available_resource; - cairo_pdf_resource_t pages_resource; - - cairo_bool_t compress_content; - - cairo_pdf_resource_t content; - cairo_pdf_resource_t content_resources; - cairo_pdf_group_resources_t resources; - cairo_bool_t has_fallback_images; - - struct { - cairo_bool_t active; - cairo_pdf_resource_t self; - cairo_pdf_resource_t length; - long start_offset; - cairo_bool_t compressed; - cairo_output_stream_t *old_output; - } pdf_stream; - - struct { - cairo_bool_t active; - cairo_output_stream_t *stream; - cairo_output_stream_t *mem_stream; - cairo_output_stream_t *old_output; - cairo_pdf_resource_t resource; - cairo_bool_t is_knockout; - } group_stream; - - cairo_pdf_operators_t pdf_operators; - cairo_paginated_mode_t paginated_mode; - cairo_bool_t select_pattern_gstate_saved; - - cairo_bool_t force_fallbacks; - - cairo_surface_t *paginated_surface; -}; - -#endif /* CAIRO_PDF_SURFACE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-pen.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pen.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-pen.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-pen.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,480 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -static int -_cairo_pen_vertices_needed (double tolerance, double radius, cairo_matrix_t *matrix); - -static void -_cairo_pen_compute_slopes (cairo_pen_t *pen); - -static void -_cairo_pen_stroke_spline_half (cairo_pen_t *pen, cairo_spline_t *spline, cairo_direction_t dir, cairo_polygon_t *polygon); - -void -_cairo_pen_init_empty (cairo_pen_t *pen) -{ - pen->radius = 0; - pen->tolerance = 0; - pen->vertices = NULL; - pen->num_vertices = 0; -} - -cairo_status_t -_cairo_pen_init (cairo_pen_t *pen, - double radius, - double tolerance, - cairo_matrix_t *ctm) -{ - int i; - int reflect; - double det; - - pen->radius = radius; - pen->tolerance = tolerance; - - _cairo_matrix_compute_determinant (ctm, &det); - if (det >= 0) { - reflect = 0; - } else { - reflect = 1; - } - - pen->num_vertices = _cairo_pen_vertices_needed (tolerance, - radius, - ctm); - - pen->vertices = _cairo_malloc_ab (pen->num_vertices, - sizeof (cairo_pen_vertex_t)); - if (pen->vertices == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - /* - * Compute pen coordinates. To generate the right ellipse, compute points around - * a circle in user space and transform them to device space. To get a consistent - * orientation in device space, flip the pen if the transformation matrix - * is reflecting - */ - for (i=0; i < pen->num_vertices; i++) { - double theta = 2 * M_PI * i / (double) pen->num_vertices; - double dx = radius * cos (reflect ? -theta : theta); - double dy = radius * sin (reflect ? -theta : theta); - cairo_pen_vertex_t *v = &pen->vertices[i]; - cairo_matrix_transform_distance (ctm, &dx, &dy); - v->point.x = _cairo_fixed_from_double (dx); - v->point.y = _cairo_fixed_from_double (dy); - } - - _cairo_pen_compute_slopes (pen); - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_pen_fini (cairo_pen_t *pen) -{ - free (pen->vertices); - pen->vertices = NULL; - - _cairo_pen_init_empty (pen); -} - -cairo_status_t -_cairo_pen_init_copy (cairo_pen_t *pen, cairo_pen_t *other) -{ - *pen = *other; - - if (pen->num_vertices) { - pen->vertices = _cairo_malloc_ab (pen->num_vertices, - sizeof (cairo_pen_vertex_t)); - if (pen->vertices == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (pen->vertices, other->vertices, pen->num_vertices * sizeof (cairo_pen_vertex_t)); - } - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_pen_add_points (cairo_pen_t *pen, cairo_point_t *point, int num_points) -{ - cairo_pen_vertex_t *vertices; - cairo_status_t status; - int num_vertices; - int i; - - num_vertices = pen->num_vertices + num_points; - vertices = _cairo_realloc_ab (pen->vertices, - num_vertices, sizeof (cairo_pen_vertex_t)); - if (vertices == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - pen->vertices = vertices; - pen->num_vertices = num_vertices; - - /* initialize new vertices */ - for (i=0; i < num_points; i++) - pen->vertices[pen->num_vertices-num_points+i].point = point[i]; - - status = _cairo_hull_compute (pen->vertices, &pen->num_vertices); - if (status) - return status; - - _cairo_pen_compute_slopes (pen); - - return CAIRO_STATUS_SUCCESS; -} - -/* -The circular pen in user space is transformed into an ellipse in -device space. - -We construct the pen by computing points along the circumference -using equally spaced angles. - -We show that this approximation to the ellipse has maximum error at the -major axis of the ellipse. - -Set - - M = major axis length - m = minor axis length - -Align 'M' along the X axis and 'm' along the Y axis and draw -an ellipse parameterized by angle 't': - - x = M cos t y = m sin t - -Perturb t by ± d and compute two new points (x+,y+), (x-,y-). -The distance from the average of these two points to (x,y) represents -the maximum error in approximating the ellipse with a polygon formed -from vertices 2∆ radians apart. - - x+ = M cos (t+∆) y+ = m sin (t+∆) - x- = M cos (t-∆) y- = m sin (t-∆) - -Now compute the approximation error, E: - - Ex = (x - (x+ + x-) / 2) - Ex = (M cos(t) - (Mcos(t+∆) + Mcos(t-∆))/2) - = M (cos(t) - (cos(t)cos(∆) + sin(t)sin(∆) + - cos(t)cos(∆) - sin(t)sin(∆))/2) - = M(cos(t) - cos(t)cos(∆)) - = M cos(t) (1 - cos(∆)) - - Ey = y - (y+ - y-) / 2 - = m sin (t) - (m sin(t+∆) + m sin(t-∆)) / 2 - = m (sin(t) - (sin(t)cos(∆) + cos(t)sin(∆) + - sin(t)cos(∆) - cos(t)sin(∆))/2) - = m (sin(t) - sin(t)cos(∆)) - = m sin(t) (1 - cos(∆)) - - E² = Ex² + Ey² - = (M cos(t) (1 - cos (∆)))² + (m sin(t) (1-cos(∆)))² - = (1 - cos(∆))² (M² cos²(t) + m² sin²(t)) - = (1 - cos(∆))² ((m² + M² - m²) cos² (t) + m² sin²(t)) - = (1 - cos(∆))² (M² - m²) cos² (t) + (1 - cos(∆))² m² - -Find the extremum by differentiation wrt t and setting that to zero - -∂(E²)/∂(t) = (1-cos(∆))² (M² - m²) (-2 cos(t) sin(t)) - - 0 = 2 cos (t) sin (t) - 0 = sin (2t) - t = nÏ€ - -Which is to say that the maximum and minimum errors occur on the -axes of the ellipse at 0 and Ï€ radians: - - E²(0) = (1-cos(∆))² (M² - m²) + (1-cos(∆))² m² - = (1-cos(∆))² M² - E²(Ï€) = (1-cos(∆))² m² - -maximum error = M (1-cos(∆)) -minimum error = m (1-cos(∆)) - -We must make maximum error ≤ tolerance, so compute the ∆ needed: - - tolerance = M (1-cos(∆)) - tolerance / M = 1 - cos (∆) - cos(∆) = 1 - tolerance/M - ∆ = acos (1 - tolerance / M); - -Remembering that ∆ is half of our angle between vertices, -the number of vertices is then - - vertices = ceil(2Ï€/2∆). - = ceil(Ï€/∆). - -Note that this also equation works for M == m (a circle) as it -doesn't matter where on the circle the error is computed. -*/ - -static int -_cairo_pen_vertices_needed (double tolerance, - double radius, - cairo_matrix_t *matrix) -{ - /* - * the pen is a circle that gets transformed to an ellipse by matrix. - * compute major axis length for a pen with the specified radius. - * we don't need the minor axis length. - */ - - double major_axis = _cairo_matrix_transformed_circle_major_axis(matrix, radius); - - /* - * compute number of vertices needed - */ - int num_vertices; - - /* Where tolerance / M is > 1, we use 4 points */ - if (tolerance >= major_axis) { - num_vertices = 4; - } else { - double delta = acos (1 - tolerance / major_axis); - num_vertices = ceil (M_PI / delta); - - /* number of vertices must be even */ - if (num_vertices % 2) - num_vertices++; - - /* And we must always have at least 4 vertices. */ - if (num_vertices < 4) - num_vertices = 4; - } - - return num_vertices; -} - -static void -_cairo_pen_compute_slopes (cairo_pen_t *pen) -{ - int i, i_prev; - cairo_pen_vertex_t *prev, *v, *next; - - for (i=0, i_prev = pen->num_vertices - 1; - i < pen->num_vertices; - i_prev = i++) { - prev = &pen->vertices[i_prev]; - v = &pen->vertices[i]; - next = &pen->vertices[(i + 1) % pen->num_vertices]; - - _cairo_slope_init (&v->slope_cw, &prev->point, &v->point); - _cairo_slope_init (&v->slope_ccw, &v->point, &next->point); - } -} -/* - * Find active pen vertex for clockwise edge of stroke at the given slope. - * - * The strictness of the inequalities here is delicate. The issue is - * that the slope_ccw member of one pen vertex will be equivalent to - * the slope_cw member of the next pen vertex in a counterclockwise - * order. However, for this function, we care strongly about which - * vertex is returned. - * - * [I think the "care strongly" above has to do with ensuring that the - * pen's "extra points" from the spline's initial and final slopes are - * properly found when beginning the spline stroking.] - */ -void -_cairo_pen_find_active_cw_vertex_index (cairo_pen_t *pen, - cairo_slope_t *slope, - int *active) -{ - int i; - - for (i=0; i < pen->num_vertices; i++) { - if ((_cairo_slope_compare (slope, &pen->vertices[i].slope_ccw) < 0) && - (_cairo_slope_compare (slope, &pen->vertices[i].slope_cw) >= 0)) - break; - } - - /* If the desired slope cannot be found between any of the pen - * vertices, then we must have a degenerate pen, (such as a pen - * that's been transformed to a line). In that case, we consider - * the first pen vertex as the appropriate clockwise vertex. - */ - if (i == pen->num_vertices) - i = 0; - - *active = i; -} - -/* Find active pen vertex for counterclockwise edge of stroke at the given slope. - * - * Note: See the comments for _cairo_pen_find_active_cw_vertex_index - * for some details about the strictness of the inequalities here. - */ -void -_cairo_pen_find_active_ccw_vertex_index (cairo_pen_t *pen, - cairo_slope_t *slope, - int *active) -{ - int i; - cairo_slope_t slope_reverse; - - slope_reverse = *slope; - slope_reverse.dx = -slope_reverse.dx; - slope_reverse.dy = -slope_reverse.dy; - - for (i=pen->num_vertices-1; i >= 0; i--) { - if ((_cairo_slope_compare (&pen->vertices[i].slope_ccw, &slope_reverse) >= 0) && - (_cairo_slope_compare (&pen->vertices[i].slope_cw, &slope_reverse) < 0)) - break; - } - - /* If the desired slope cannot be found between any of the pen - * vertices, then we must have a degenerate pen, (such as a pen - * that's been transformed to a line). In that case, we consider - * the last pen vertex as the appropriate counterclockwise vertex. - */ - if (i < 0) - i = pen->num_vertices - 1; - - *active = i; -} - -static void -_cairo_pen_stroke_spline_half (cairo_pen_t *pen, - cairo_spline_t *spline, - cairo_direction_t dir, - cairo_polygon_t *polygon) -{ - int i; - int start, stop, step; - int active = 0; - cairo_point_t hull_point; - cairo_slope_t slope, initial_slope, final_slope; - cairo_point_t *point = spline->points; - int num_points = spline->num_points; - - if (dir == CAIRO_DIRECTION_FORWARD) { - start = 0; - stop = num_points; - step = 1; - initial_slope = spline->initial_slope; - final_slope = spline->final_slope; - } else { - start = num_points - 1; - stop = -1; - step = -1; - initial_slope = spline->final_slope; - initial_slope.dx = -initial_slope.dx; - initial_slope.dy = -initial_slope.dy; - final_slope = spline->initial_slope; - final_slope.dx = -final_slope.dx; - final_slope.dy = -final_slope.dy; - } - - _cairo_pen_find_active_cw_vertex_index (pen, - &initial_slope, - &active); - - i = start; - while (i != stop) { - hull_point.x = point[i].x + pen->vertices[active].point.x; - hull_point.y = point[i].y + pen->vertices[active].point.y; - - _cairo_polygon_line_to (polygon, &hull_point); - - if (i + step == stop) - slope = final_slope; - else - _cairo_slope_init (&slope, &point[i], &point[i+step]); - - /* The strict inequalities here ensure that if a spline slope - * compares identically with either of the slopes of the - * active vertex, then it remains the active vertex. This is - * very important since otherwise we can trigger an infinite - * loop in the case of a degenerate pen, (a line), where - * neither vertex considers itself active for the slope---one - * will consider it as equal and reject, and the other will - * consider it unequal and reject. This is due to the inherent - * ambiguity when comparing slopes that differ by exactly - * pi. */ - if (_cairo_slope_compare (&slope, &pen->vertices[active].slope_ccw) > 0) { - if (++active == pen->num_vertices) - active = 0; - } else if (_cairo_slope_compare (&slope, &pen->vertices[active].slope_cw) < 0) { - if (--active == -1) - active = pen->num_vertices - 1; - } else { - i += step; - } - } -} - -/* Compute outline of a given spline using the pen. - The trapezoids needed to fill that outline will be added to traps -*/ -cairo_status_t -_cairo_pen_stroke_spline (cairo_pen_t *pen, - cairo_spline_t *spline, - double tolerance, - cairo_traps_t *traps) -{ - cairo_status_t status; - cairo_polygon_t polygon; - - /* If the line width is so small that the pen is reduced to a - single point, then we have nothing to do. */ - if (pen->num_vertices <= 1) - return CAIRO_STATUS_SUCCESS; - - _cairo_polygon_init (&polygon); - - status = _cairo_spline_decompose (spline, tolerance); - if (status) - goto BAIL; - - _cairo_pen_stroke_spline_half (pen, spline, CAIRO_DIRECTION_FORWARD, &polygon); - - _cairo_pen_stroke_spline_half (pen, spline, CAIRO_DIRECTION_REVERSE, &polygon); - - _cairo_polygon_close (&polygon); - status = _cairo_polygon_status (&polygon); - if (status) - goto BAIL; - - status = _cairo_bentley_ottmann_tessellate_polygon (traps, &polygon, CAIRO_FILL_RULE_WINDING); -BAIL: - _cairo_polygon_fini (&polygon); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-png.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-png.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-png.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-png.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,677 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Kristian Høgsberg - * Chris Wilson - */ - -#include "cairoint.h" - -#include -#include - -/* Unpremultiplies data and converts native endian ARGB => RGBA bytes */ -static void -unpremultiply_data (png_structp png, png_row_infop row_info, png_bytep data) -{ - unsigned int i; - - for (i = 0; i < row_info->rowbytes; i += 4) { - uint8_t *b = &data[i]; - uint32_t pixel; - uint8_t alpha; - - memcpy (&pixel, b, sizeof (uint32_t)); - alpha = (pixel & 0xff000000) >> 24; - if (alpha == 0) { - b[0] = b[1] = b[2] = b[3] = 0; - } else { - b[0] = (((pixel & 0xff0000) >> 16) * 255 + alpha / 2) / alpha; - b[1] = (((pixel & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha; - b[2] = (((pixel & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha; - b[3] = alpha; - } - } -} - -/* Converts native endian xRGB => RGBx bytes */ -static void -convert_data_to_bytes (png_structp png, png_row_infop row_info, png_bytep data) -{ - unsigned int i; - - for (i = 0; i < row_info->rowbytes; i += 4) { - uint8_t *b = &data[i]; - uint32_t pixel; - - memcpy (&pixel, b, sizeof (uint32_t)); - - b[0] = (pixel & 0xff0000) >> 16; - b[1] = (pixel & 0x00ff00) >> 8; - b[2] = (pixel & 0x0000ff) >> 0; - b[3] = 0; - } -} - -/* Use a couple of simple error callbacks that do not print anything to - * stderr and rely on the user to check for errors via the #cairo_status_t - * return. - */ -static void -png_simple_error_callback (png_structp png, - png_const_charp error_msg) -{ - cairo_status_t *error = png_get_error_ptr (png); - - /* default to the most likely error */ - if (*error == CAIRO_STATUS_SUCCESS) - *error = _cairo_error (CAIRO_STATUS_NO_MEMORY); - -#ifdef PNG_SETJMP_SUPPORTED - longjmp (png_jmpbuf (png), 1); -#endif - - /* if we get here, then we have to choice but to abort ... */ -} - -static void -png_simple_warning_callback (png_structp png, - png_const_charp error_msg) -{ - cairo_status_t *error = png_get_error_ptr (png); - - /* default to the most likely error */ - if (*error == CAIRO_STATUS_SUCCESS) - *error = _cairo_error (CAIRO_STATUS_NO_MEMORY); - - /* png does not expect to abort and will try to tidy up after a warning */ -} - - -static cairo_status_t -write_png (cairo_surface_t *surface, - png_rw_ptr write_func, - void *closure) -{ - int i; - cairo_status_t status; - cairo_image_surface_t *image; - void *image_extra; - png_struct *png; - png_info *info; - png_time pt; - png_byte **volatile rows = NULL; - png_color_16 white; - int png_color_type; - int depth; - - status = _cairo_surface_acquire_source_image (surface, - &image, - &image_extra); - - if (status == CAIRO_INT_STATUS_UNSUPPORTED) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - else if (status) - return status; - - /* PNG complains about "Image width or height is zero in IHDR" */ - if (image->width == 0 || image->height == 0) { - status = _cairo_error (CAIRO_STATUS_WRITE_ERROR); - goto BAIL1; - } - - rows = _cairo_malloc_ab (image->height, sizeof (png_byte*)); - if (rows == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL1; - } - - for (i = 0; i < image->height; i++) - rows[i] = (png_byte *) image->data + i * image->stride; - - png = png_create_write_struct (PNG_LIBPNG_VER_STRING, &status, - png_simple_error_callback, - png_simple_warning_callback); - if (png == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL2; - } - - info = png_create_info_struct (png); - if (info == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL3; - } - -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp (png_jmpbuf (png))) - goto BAIL3; -#endif - - png_set_write_fn (png, closure, write_func, NULL); - - switch (image->format) { - case CAIRO_FORMAT_ARGB32: - depth = 8; - png_color_type = PNG_COLOR_TYPE_RGB_ALPHA; - break; - case CAIRO_FORMAT_RGB24: - depth = 8; - png_color_type = PNG_COLOR_TYPE_RGB; - break; - case CAIRO_FORMAT_A8: - depth = 8; - png_color_type = PNG_COLOR_TYPE_GRAY; - break; - case CAIRO_FORMAT_A1: - depth = 1; - png_color_type = PNG_COLOR_TYPE_GRAY; - break; - default: - status = _cairo_error (CAIRO_STATUS_INVALID_FORMAT); - goto BAIL3; - } - - png_set_IHDR (png, info, - image->width, - image->height, depth, - png_color_type, - PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_DEFAULT); - - white.gray = (1 << depth) - 1; - white.red = white.blue = white.green = white.gray; - png_set_bKGD (png, info, &white); - - png_convert_from_time_t (&pt, time (NULL)); - png_set_tIME (png, info, &pt); - - /* We have to call png_write_info() before setting up the write - * transformation, since it stores data internally in 'png' - * that is needed for the write transformation functions to work. - */ - png_write_info (png, info); - - if (image->format == CAIRO_FORMAT_ARGB32) - png_set_write_user_transform_fn (png, unpremultiply_data); - else if (image->format == CAIRO_FORMAT_RGB24) - png_set_write_user_transform_fn (png, convert_data_to_bytes); - if (image->format == CAIRO_FORMAT_RGB24) - png_set_filler (png, 0, PNG_FILLER_AFTER); - - png_write_image (png, rows); - png_write_end (png, info); - -BAIL3: - png_destroy_write_struct (&png, &info); -BAIL2: - free (rows); -BAIL1: - _cairo_surface_release_source_image (surface, image, image_extra); - - return status; -} - -static void -stdio_write_func (png_structp png, png_bytep data, png_size_t size) -{ - FILE *fp; - - fp = png_get_io_ptr (png); - while (size) { - size_t ret = fwrite (data, 1, size, fp); - size -= ret; - data += ret; - if (size && ferror (fp)) { - cairo_status_t *error = png_get_error_ptr (png); - if (*error == CAIRO_STATUS_SUCCESS) - *error = _cairo_error (CAIRO_STATUS_WRITE_ERROR); - png_error (png, NULL); - } - } -} - -/** - * cairo_surface_write_to_png: - * @surface: a #cairo_surface_t with pixel contents - * @filename: the name of a file to write to - * - * Writes the contents of @surface to a new file @filename as a PNG - * image. - * - * Return value: %CAIRO_STATUS_SUCCESS if the PNG file was written - * successfully. Otherwise, %CAIRO_STATUS_NO_MEMORY if memory could not - * be allocated for the operation or - * CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have - * pixel contents, or %CAIRO_STATUS_WRITE_ERROR if an I/O error occurs - * while attempting to write the file. - **/ -cairo_status_t -cairo_surface_write_to_png (cairo_surface_t *surface, - const char *filename) -{ - FILE *fp; - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_error (CAIRO_STATUS_SURFACE_FINISHED); - - fp = fopen (filename, "wb"); - if (fp == NULL) { - switch (errno) { - case ENOMEM: - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - default: - return _cairo_error (CAIRO_STATUS_WRITE_ERROR); - } - } - - status = write_png (surface, stdio_write_func, fp); - - if (fclose (fp) && status == CAIRO_STATUS_SUCCESS) - status = _cairo_error (CAIRO_STATUS_WRITE_ERROR); - - return status; -} - -struct png_write_closure_t { - cairo_write_func_t write_func; - void *closure; -}; - -static void -stream_write_func (png_structp png, png_bytep data, png_size_t size) -{ - cairo_status_t status; - struct png_write_closure_t *png_closure; - - png_closure = png_get_io_ptr (png); - status = png_closure->write_func (png_closure->closure, data, size); - if (status) { - cairo_status_t *error = png_get_error_ptr (png); - if (*error == CAIRO_STATUS_SUCCESS) - *error = status; - png_error (png, NULL); - } -} - -/** - * cairo_surface_write_to_png_stream: - * @surface: a #cairo_surface_t with pixel contents - * @write_func: a #cairo_write_func_t - * @closure: closure data for the write function - * - * Writes the image surface to the write function. - * - * Return value: %CAIRO_STATUS_SUCCESS if the PNG file was written - * successfully. Otherwise, %CAIRO_STATUS_NO_MEMORY is returned if - * memory could not be allocated for the operation, - * CAIRO_STATUS_SURFACE_TYPE_MISMATCH if the surface does not have - * pixel contents. - **/ -cairo_status_t -cairo_surface_write_to_png_stream (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure) -{ - struct png_write_closure_t png_closure; - - png_closure.write_func = write_func; - png_closure.closure = closure; - - return write_png (surface, stream_write_func, &png_closure); -} -slim_hidden_def (cairo_surface_write_to_png_stream); - -static inline int -multiply_alpha (int alpha, int color) -{ - int temp = (alpha * color) + 0x80; - return ((temp + (temp >> 8)) >> 8); -} - -/* Premultiplies data and converts RGBA bytes => native endian */ -static void -premultiply_data (png_structp png, - png_row_infop row_info, - png_bytep data) -{ - unsigned int i; - - for (i = 0; i < row_info->rowbytes; i += 4) { - uint8_t *base = &data[i]; - uint8_t alpha = base[3]; - uint32_t p; - - if (alpha == 0) { - p = 0; - } else { - uint8_t red = base[0]; - uint8_t green = base[1]; - uint8_t blue = base[2]; - - if (alpha != 0xff) { - red = multiply_alpha (alpha, red); - green = multiply_alpha (alpha, green); - blue = multiply_alpha (alpha, blue); - } - p = (alpha << 24) | (red << 16) | (green << 8) | (blue << 0); - } - memcpy (base, &p, sizeof (uint32_t)); - } -} - -/* Converts RGBx bytes to native endian xRGB */ -static void -convert_bytes_to_data (png_structp png, png_row_infop row_info, png_bytep data) -{ - unsigned int i; - - for (i = 0; i < row_info->rowbytes; i += 4) { - uint8_t *base = &data[i]; - uint8_t red = base[0]; - uint8_t green = base[1]; - uint8_t blue = base[2]; - uint32_t pixel; - - pixel = (0xff << 24) | (red << 16) | (green << 8) | (blue << 0); - memcpy (base, &pixel, sizeof (uint32_t)); - } -} - -static cairo_surface_t * -read_png (png_rw_ptr read_func, - void *closure) -{ - cairo_surface_t *surface; - png_struct *png = NULL; - png_info *info; - png_byte *data = NULL; - png_byte **row_pointers = NULL; - png_uint_32 png_width, png_height; - int depth, color_type, interlace, stride; - unsigned int i; - cairo_format_t format; - cairo_status_t status; - - /* XXX: Perhaps we'll want some other error handlers? */ - png = png_create_read_struct (PNG_LIBPNG_VER_STRING, - &status, - png_simple_error_callback, - png_simple_warning_callback); - if (png == NULL) { - surface = _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - goto BAIL; - } - - info = png_create_info_struct (png); - if (info == NULL) { - surface = _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - goto BAIL; - } - - png_set_read_fn (png, closure, read_func); - - status = CAIRO_STATUS_SUCCESS; -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp (png_jmpbuf (png))) { - surface = _cairo_surface_create_in_error (status); - goto BAIL; - } -#endif - - png_read_info (png, info); - - png_get_IHDR (png, info, - &png_width, &png_height, &depth, - &color_type, &interlace, NULL, NULL); - if (status) { /* catch any early warnings */ - surface = _cairo_surface_create_in_error (status); - goto BAIL; - } - - /* convert palette/gray image to rgb */ - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_palette_to_rgb (png); - - /* expand gray bit depth if needed */ - if (color_type == PNG_COLOR_TYPE_GRAY) { -#if PNG_LIBPNG_VER >= 10209 - png_set_expand_gray_1_2_4_to_8 (png); -#else - png_set_gray_1_2_4_to_8 (png); -#endif - } - - /* transform transparency to alpha */ - if (png_get_valid (png, info, PNG_INFO_tRNS)) - png_set_tRNS_to_alpha (png); - - if (depth == 16) - png_set_strip_16 (png); - - if (depth < 8) - png_set_packing (png); - - /* convert grayscale to RGB */ - if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - png_set_gray_to_rgb (png); - } - - if (interlace != PNG_INTERLACE_NONE) - png_set_interlace_handling (png); - - switch (color_type) { - default: - case PNG_COLOR_TYPE_GRAY_ALPHA: - case PNG_COLOR_TYPE_RGB_ALPHA: - format = CAIRO_FORMAT_ARGB32; - png_set_read_user_transform_fn (png, premultiply_data); - break; - - case PNG_COLOR_TYPE_GRAY: - case PNG_COLOR_TYPE_PALETTE: - case PNG_COLOR_TYPE_RGB: - format = CAIRO_FORMAT_RGB24; - png_set_read_user_transform_fn (png, convert_bytes_to_data); - png_set_filler (png, 0xff, PNG_FILLER_AFTER); - break; - } - - png_read_update_info (png, info); - - stride = cairo_format_stride_for_width (format, png_width); - if (stride < 0) { - surface = _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_STRIDE)); - goto BAIL; - } - - data = _cairo_malloc_ab (png_height, stride); - if (data == NULL) { - surface = _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - goto BAIL; - } - - row_pointers = _cairo_malloc_ab (png_height, sizeof (char *)); - if (row_pointers == NULL) { - surface = _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - goto BAIL; - } - - for (i = 0; i < png_height; i++) - row_pointers[i] = &data[i * stride]; - - png_read_image (png, row_pointers); - png_read_end (png, info); - - if (status) { /* catch any late warnings - probably hit an error already */ - surface = _cairo_surface_create_in_error (status); - goto BAIL; - } - - surface = cairo_image_surface_create_for_data (data, format, - png_width, png_height, - stride); - if (surface->status) - goto BAIL; - - _cairo_image_surface_assume_ownership_of_data ((cairo_image_surface_t*)surface); - data = NULL; - - BAIL: - if (row_pointers) - free (row_pointers); - if (data) - free (data); - if (png) - png_destroy_read_struct (&png, &info, NULL); - - return surface; -} - -static void -stdio_read_func (png_structp png, png_bytep data, png_size_t size) -{ - FILE *fp; - - fp = png_get_io_ptr (png); - while (size) { - size_t ret = fread (data, 1, size, fp); - size -= ret; - data += ret; - if (size && (feof (fp) || ferror (fp))) { - cairo_status_t *error = png_get_error_ptr (png); - if (*error == CAIRO_STATUS_SUCCESS) - *error = _cairo_error (CAIRO_STATUS_READ_ERROR); - png_error (png, NULL); - } - } -} - -/** - * cairo_image_surface_create_from_png: - * @filename: name of PNG file to load - * - * Creates a new image surface and initializes the contents to the - * given PNG file. - * - * Return value: a new #cairo_surface_t initialized with the contents - * of the PNG file, or a "nil" surface if any error occurred. A nil - * surface can be checked for with cairo_surface_status(surface) which - * may return one of the following values: - * - * CAIRO_STATUS_NO_MEMORY - * CAIRO_STATUS_FILE_NOT_FOUND - * CAIRO_STATUS_READ_ERROR - **/ -cairo_surface_t * -cairo_image_surface_create_from_png (const char *filename) -{ - FILE *fp; - cairo_surface_t *surface; - - fp = fopen (filename, "rb"); - if (fp == NULL) { - cairo_status_t status; - switch (errno) { - case ENOMEM: - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - break; - case ENOENT: - status = _cairo_error (CAIRO_STATUS_FILE_NOT_FOUND); - break; - default: - status = _cairo_error (CAIRO_STATUS_READ_ERROR); - break; - } - return _cairo_surface_create_in_error (status); - } - - surface = read_png (stdio_read_func, fp); - - fclose (fp); - - return surface; -} - -struct png_read_closure_t { - cairo_read_func_t read_func; - void *closure; -}; - -static void -stream_read_func (png_structp png, png_bytep data, png_size_t size) -{ - cairo_status_t status; - struct png_read_closure_t *png_closure; - - png_closure = png_get_io_ptr (png); - status = png_closure->read_func (png_closure->closure, data, size); - if (status) { - cairo_status_t *error = png_get_error_ptr (png); - if (*error == CAIRO_STATUS_SUCCESS) - *error = status; - png_error (png, NULL); - } -} - -/** - * cairo_image_surface_create_from_png_stream: - * @read_func: function called to read the data of the file - * @closure: data to pass to @read_func. - * - * Creates a new image surface from PNG data read incrementally - * via the @read_func function. - * - * Return value: a new #cairo_surface_t initialized with the contents - * of the PNG file or %NULL if the data read is not a valid PNG image or - * memory could not be allocated for the operation. - **/ -cairo_surface_t * -cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func, - void *closure) -{ - struct png_read_closure_t png_closure; - - png_closure.read_func = read_func; - png_closure.closure = closure; - - return read_png (stream_read_func, &png_closure); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-polygon.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-polygon.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-polygon.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-polygon.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -/* private functions */ - -static cairo_status_t -_cairo_polygon_grow (cairo_polygon_t *polygon); - -void -_cairo_polygon_init (cairo_polygon_t *polygon) -{ - polygon->status = CAIRO_STATUS_SUCCESS; - - polygon->num_edges = 0; - - polygon->edges_size = 0; - polygon->edges = NULL; - - polygon->has_current_point = FALSE; -} - -void -_cairo_polygon_fini (cairo_polygon_t *polygon) -{ - if (polygon->edges && polygon->edges != polygon->edges_embedded) - free (polygon->edges); - - polygon->edges = NULL; - polygon->edges_size = 0; - polygon->num_edges = 0; - - polygon->has_current_point = FALSE; -} - -cairo_status_t -_cairo_polygon_status (cairo_polygon_t *polygon) -{ - return polygon->status; -} - -/* make room for at least one more edge */ -static cairo_status_t -_cairo_polygon_grow (cairo_polygon_t *polygon) -{ - cairo_edge_t *new_edges; - int old_size = polygon->edges_size; - int embedded_size = ARRAY_LENGTH (polygon->edges_embedded); - int new_size = 2 * MAX (old_size, 16); - - /* we have a local buffer at polygon->edges_embedded. try to fulfill the request - * from there. */ - if (old_size < embedded_size) { - polygon->edges = polygon->edges_embedded; - polygon->edges_size = embedded_size; - return CAIRO_STATUS_SUCCESS; - } - - assert (polygon->num_edges <= polygon->edges_size); - - if (polygon->edges == polygon->edges_embedded) { - new_edges = _cairo_malloc_ab (new_size, sizeof (cairo_edge_t)); - if (new_edges) - memcpy (new_edges, polygon->edges, old_size * sizeof (cairo_edge_t)); - } else { - new_edges = _cairo_realloc_ab (polygon->edges, - new_size, sizeof (cairo_edge_t)); - } - - if (new_edges == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - polygon->edges = new_edges; - polygon->edges_size = new_size; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_polygon_add_edge (cairo_polygon_t *polygon, cairo_point_t *p1, cairo_point_t *p2) -{ - cairo_edge_t *edge; - - if (polygon->status) - return; - - /* drop horizontal edges */ - if (p1->y == p2->y) - goto DONE; - - if (polygon->num_edges >= polygon->edges_size) { - polygon->status = _cairo_polygon_grow (polygon); - if (polygon->status) - return; - } - - edge = &polygon->edges[polygon->num_edges]; - if (p1->y < p2->y) { - edge->edge.p1 = *p1; - edge->edge.p2 = *p2; - edge->clockWise = 1; - } else { - edge->edge.p1 = *p2; - edge->edge.p2 = *p1; - edge->clockWise = 0; - } - - polygon->num_edges++; - - DONE: - _cairo_polygon_move_to (polygon, p2); -} - -void -_cairo_polygon_move_to (cairo_polygon_t *polygon, cairo_point_t *point) -{ - if (polygon->status) - return; - - if (! polygon->has_current_point) - polygon->first_point = *point; - - polygon->current_point = *point; - polygon->has_current_point = TRUE; -} - -void -_cairo_polygon_line_to (cairo_polygon_t *polygon, cairo_point_t *point) -{ - if (polygon->status) - return; - - if (polygon->has_current_point) { - _cairo_polygon_add_edge (polygon, &polygon->current_point, point); - } else { - _cairo_polygon_move_to (polygon, point); - } -} - -void -_cairo_polygon_close (cairo_polygon_t *polygon) -{ - if (polygon->status) - return; - - if (polygon->has_current_point) { - _cairo_polygon_add_edge (polygon, - &polygon->current_point, - &polygon->first_point); - - polygon->has_current_point = FALSE; - } -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PRIVATE_H -#define CAIRO_PRIVATE_H - -#include "cairo-reference-count-private.h" -#include "cairo-gstate-private.h" -#include "cairo-path-fixed-private.h" - -struct _cairo { - cairo_reference_count_t ref_count; - - cairo_status_t status; - - cairo_user_data_array_t user_data; - - cairo_gstate_t *gstate; - cairo_gstate_t gstate_tail[1]; - - cairo_path_fixed_t path[1]; -}; - -#endif /* CAIRO_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-ps.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ps.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-ps.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ps.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PS_H -#define CAIRO_PS_H - -#include - -#if CAIRO_HAS_PS_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -/* PS-surface functions */ - -/** - * cairo_ps_level_t: - * @CAIRO_PS_LEVEL_2: The language level 2 of the PostScript specification. - * @CAIRO_PS_LEVEL_3: The language level 3 of the PostScript specification. - * - * #cairo_ps_level_t is used to describe the language level of the - * PostScript Language Reference that a generated PostScript file will - * conform to. - */ -typedef enum _cairo_ps_level { - CAIRO_PS_LEVEL_2, - CAIRO_PS_LEVEL_3 -} cairo_ps_level_t; - -cairo_public cairo_surface_t * -cairo_ps_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -cairo_public cairo_surface_t * -cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, - cairo_ps_level_t level); - -cairo_public void -cairo_ps_get_levels (cairo_ps_level_t const **levels, - int *num_levels); - -cairo_public const char * -cairo_ps_level_to_string (cairo_ps_level_t level); - -cairo_public void -cairo_ps_surface_set_eps (cairo_surface_t *surface, - cairo_bool_t eps); - -cairo_public cairo_bool_t -cairo_ps_surface_get_eps (cairo_surface_t *surface); - -cairo_public void -cairo_ps_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_ps_surface_dsc_comment (cairo_surface_t *surface, - const char *comment); - -cairo_public void -cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface); - -cairo_public void -cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_PS_SURFACE */ -# error Cairo was not compiled with support for the ps backend -#endif /* CAIRO_HAS_PS_SURFACE */ - -#endif /* CAIRO_PS_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-ps-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ps-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-ps-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ps-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3195 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * Copyright © 2005 Red Hat, Inc - * Copyright © 2007,2008 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Kristian Høgsberg - * Keith Packard - * Adrian Johnson - */ - -#define _BSD_SOURCE /* for ctime_r(), snprintf(), strdup() */ -#include "cairoint.h" -#include "cairo-ps.h" -#include "cairo-ps-surface-private.h" -#include "cairo-pdf-operators-private.h" -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-paginated-private.h" -#include "cairo-meta-surface-private.h" -#include "cairo-output-stream-private.h" - -#include -#include -#include -#include -#include - -#define DEBUG_PS 0 - -#ifndef HAVE_CTIME_R -#define ctime_r(T, BUF) ctime (T) -#endif - -static const cairo_surface_backend_t cairo_ps_surface_backend; -static const cairo_paginated_surface_backend_t cairo_ps_surface_paginated_backend; - -static const cairo_ps_level_t _cairo_ps_levels[] = -{ - CAIRO_PS_LEVEL_2, - CAIRO_PS_LEVEL_3 -}; - -#define CAIRO_PS_LEVEL_LAST ARRAY_LENGTH (_cairo_ps_levels) - -static const char * _cairo_ps_level_strings[CAIRO_PS_LEVEL_LAST] = -{ - "PS Level 2", - "PS Level 3" -}; - -static void -_cairo_ps_surface_emit_header (cairo_ps_surface_t *surface) -{ - char ctime_buf[26]; - time_t now; - char **comments; - int i, num_comments; - int level; - const char *eps_header = ""; - - now = time (NULL); - - if (surface->ps_level_used == CAIRO_PS_LEVEL_2) - level = 2; - else - level = 3; - - if (surface->eps) - eps_header = " EPSF-3.0"; - - _cairo_output_stream_printf (surface->final_stream, - "%%!PS-Adobe-3.0%s\n" - "%%%%Creator: cairo %s (http://cairographics.org)\n" - "%%%%CreationDate: %s" - "%%%%Pages: %d\n" - "%%%%BoundingBox: %d %d %d %d\n", - eps_header, - cairo_version_string (), - ctime_r (&now, ctime_buf), - surface->num_pages, - surface->bbox_x1, - surface->bbox_y1, - surface->bbox_x2, - surface->bbox_y2); - - _cairo_output_stream_printf (surface->final_stream, - "%%%%DocumentData: Clean7Bit\n" - "%%%%LanguageLevel: %d\n", - level); - - num_comments = _cairo_array_num_elements (&surface->dsc_header_comments); - comments = _cairo_array_index (&surface->dsc_header_comments, 0); - for (i = 0; i < num_comments; i++) { - _cairo_output_stream_printf (surface->final_stream, - "%s\n", comments[i]); - free (comments[i]); - comments[i] = NULL; - } - - _cairo_output_stream_printf (surface->final_stream, - "%%%%EndComments\n"); - - _cairo_output_stream_printf (surface->final_stream, - "%%%%BeginProlog\n"); - - if (surface->eps) { - _cairo_output_stream_printf (surface->final_stream, - "/cairo_eps_state save def\n" - "/dict_count countdictstack def\n" - "/op_count count 1 sub def\n" - "userdict begin\n"); - } else { - _cairo_output_stream_printf (surface->final_stream, - "/languagelevel where\n" - "{ pop languagelevel } { 1 } ifelse\n" - "%d lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto\n" - " (This print job requires a PostScript Language Level %d printer.) show\n" - " showpage quit } if\n", - level, - level); - } - - _cairo_output_stream_printf (surface->final_stream, - "/q { gsave } bind def\n" - "/Q { grestore } bind def\n" - "/cm { 6 array astore concat } bind def\n" - "/w { setlinewidth } bind def\n" - "/J { setlinecap } bind def\n" - "/j { setlinejoin } bind def\n" - "/M { setmiterlimit } bind def\n" - "/d { setdash } bind def\n" - "/m { moveto } bind def\n" - "/l { lineto } bind def\n" - "/c { curveto } bind def\n" - "/h { closepath } bind def\n" - "/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto\n" - " 0 exch rlineto 0 rlineto closepath } bind def\n" - "/S { stroke } bind def\n" - "/f { fill } bind def\n" - "/f* { eofill } bind def\n" - "/n { newpath } bind def\n" - "/W { clip } bind def\n" - "/W* { eoclip } bind def\n" - "/Tf { pop /cairo_font exch def } bind def\n" - "/BT { } bind def\n" - "/ET { } bind def\n" - "/Tj { show } bind def\n" - "/TJ {\n" - " {\n" - " dup\n" - " type /stringtype eq\n" - " { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse\n" - " } forall\n" - "} bind def\n" - "/Td { matrix translate cairo_font_matrix matrix concatmatrix aload\n" - " /cairo_font_matrix exch def 6 2 roll 0 0 6 array astore\n" - " cairo_font exch selectfont moveto } bind def\n" - "/Tm { 6 copy 6 array astore /cairo_font_matrix exch def 6 2 roll 0 0\n" - " 6 array astore cairo_font exch selectfont moveto } bind def\n" - "/g { setgray } bind def\n" - "/rg { setrgbcolor } bind def\n"); - - _cairo_output_stream_printf (surface->final_stream, - "%%%%EndProlog\n"); - - num_comments = _cairo_array_num_elements (&surface->dsc_setup_comments); - if (num_comments) { - _cairo_output_stream_printf (surface->final_stream, - "%%%%BeginSetup\n"); - - comments = _cairo_array_index (&surface->dsc_setup_comments, 0); - for (i = 0; i < num_comments; i++) { - _cairo_output_stream_printf (surface->final_stream, - "%s\n", comments[i]); - free (comments[i]); - comments[i] = NULL; - } - - _cairo_output_stream_printf (surface->final_stream, - "%%%%EndSetup\n"); - } -} - -#if CAIRO_HAS_FT_FONT -static cairo_status_t -_cairo_ps_surface_emit_type1_font_subset (cairo_ps_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) - - -{ - cairo_type1_subset_t subset; - cairo_status_t status; - int length; - char name[64]; - - snprintf (name, sizeof name, "f-%d-%d", - font_subset->font_id, font_subset->subset_id); - status = _cairo_type1_subset_init (&subset, name, font_subset, TRUE); - if (status) - return status; - - /* FIXME: Figure out document structure convention for fonts */ - -#if DEBUG_PS - _cairo_output_stream_printf (surface->final_stream, - "%% _cairo_ps_surface_emit_type1_font_subset\n"); -#endif - - length = subset.header_length + subset.data_length + subset.trailer_length; - _cairo_output_stream_write (surface->final_stream, subset.data, length); - - _cairo_type1_subset_fini (&subset); - - return CAIRO_STATUS_SUCCESS; -} -#endif - -static cairo_status_t -_cairo_ps_surface_emit_type1_font_fallback (cairo_ps_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_type1_subset_t subset; - cairo_status_t status; - int length; - char name[64]; - - snprintf (name, sizeof name, "f-%d-%d", - font_subset->font_id, font_subset->subset_id); - status = _cairo_type1_fallback_init_hex (&subset, name, font_subset); - if (status) - return status; - - /* FIXME: Figure out document structure convention for fonts */ - -#if DEBUG_PS - _cairo_output_stream_printf (surface->final_stream, - "%% _cairo_ps_surface_emit_type1_font_fallback\n"); -#endif - - length = subset.header_length + subset.data_length + subset.trailer_length; - _cairo_output_stream_write (surface->final_stream, subset.data, length); - - _cairo_type1_fallback_fini (&subset); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_truetype_font_subset (cairo_ps_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) - - -{ - cairo_truetype_subset_t subset; - cairo_status_t status; - unsigned int i, begin, end; - - status = _cairo_truetype_subset_init (&subset, font_subset); - if (status) - return status; - - /* FIXME: Figure out document structure convention for fonts */ - -#if DEBUG_PS - _cairo_output_stream_printf (surface->final_stream, - "%% _cairo_ps_surface_emit_truetype_font_subset\n"); -#endif - - _cairo_output_stream_printf (surface->final_stream, - "11 dict begin\n" - "/FontType 42 def\n" - "/FontName /f-%d-%d def\n" - "/PaintType 0 def\n" - "/FontMatrix [ 1 0 0 1 0 0 ] def\n" - "/FontBBox [ 0 0 0 0 ] def\n" - "/Encoding 256 array def\n" - "0 1 255 { Encoding exch /.notdef put } for\n", - font_subset->font_id, - font_subset->subset_id); - - /* FIXME: Figure out how subset->x_max etc maps to the /FontBBox */ - - for (i = 1; i < font_subset->num_glyphs; i++) { - if (font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (surface->final_stream, - "Encoding %d /%s put\n", - i, font_subset->glyph_names[i]); - } else { - _cairo_output_stream_printf (surface->final_stream, - "Encoding %d /g%d put\n", i, i); - } - } - - _cairo_output_stream_printf (surface->final_stream, - "/CharStrings %d dict dup begin\n" - "/.notdef 0 def\n", - font_subset->num_glyphs); - - for (i = 1; i < font_subset->num_glyphs; i++) { - if (font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (surface->final_stream, - "/%s %d def\n", - font_subset->glyph_names[i], i); - } else { - _cairo_output_stream_printf (surface->final_stream, - "/g%d %d def\n", i, i); - } - } - - _cairo_output_stream_printf (surface->final_stream, - "end readonly def\n"); - - _cairo_output_stream_printf (surface->final_stream, - "/sfnts [\n"); - begin = 0; - end = 0; - for (i = 0; i < subset.num_string_offsets; i++) { - end = subset.string_offsets[i]; - _cairo_output_stream_printf (surface->final_stream,"<"); - _cairo_output_stream_write_hex_string (surface->final_stream, - subset.data + begin, end - begin); - _cairo_output_stream_printf (surface->final_stream,"00>\n"); - begin = end; - } - if (subset.data_length > end) { - _cairo_output_stream_printf (surface->final_stream,"<"); - _cairo_output_stream_write_hex_string (surface->final_stream, - subset.data + end, subset.data_length - end); - _cairo_output_stream_printf (surface->final_stream,"00>\n"); - } - - _cairo_output_stream_printf (surface->final_stream, - "] def\n" - "FontName currentdict end definefont pop\n"); - - _cairo_truetype_subset_fini (&subset); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_ps_surface_emit_bitmap_glyph_data (cairo_ps_surface_t *surface, - cairo_scaled_font_t *scaled_font, - unsigned long glyph_index, - cairo_box_t *bbox) -{ - cairo_scaled_glyph_t *scaled_glyph; - cairo_status_t status; - cairo_image_surface_t *image; - unsigned char *row, *byte; - int rows, cols; - double x_advance, y_advance; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS| - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - if (status) - return status; - - *bbox = scaled_glyph->bbox; - x_advance = scaled_glyph->metrics.x_advance; - y_advance = scaled_glyph->metrics.y_advance; - cairo_matrix_transform_distance (&scaled_font->ctm, &x_advance, &y_advance); - - image = scaled_glyph->surface; - if (image->format != CAIRO_FORMAT_A1) { - image = _cairo_image_surface_clone (image, CAIRO_FORMAT_A1); - if (cairo_surface_status (&image->base)) - return cairo_surface_status (&image->base); - } - - _cairo_output_stream_printf (surface->final_stream, - "%f 0 %f %f %f %f setcachedevice\n", - x_advance, - _cairo_fixed_to_double (scaled_glyph->bbox.p1.x), - _cairo_fixed_to_double (scaled_glyph->bbox.p2.y), - _cairo_fixed_to_double (scaled_glyph->bbox.p2.x), - _cairo_fixed_to_double (scaled_glyph->bbox.p1.y)); - - _cairo_output_stream_printf (surface->final_stream, - "<<\n" - " /ImageType 1\n" - " /Width %d\n" - " /Height %d\n" - " /ImageMatrix [%f %f %f %f %f %f]\n" - " /Decode [1 0]\n" - " /BitsPerComponent 1\n", - image->width, - image->height, - image->base.device_transform.xx, - image->base.device_transform.yx, - image->base.device_transform.xy, - image->base.device_transform.yy, - image->base.device_transform.x0, - image->base.device_transform.y0); - - _cairo_output_stream_printf (surface->final_stream, - " /DataSource {<"); - for (row = image->data, rows = image->height; rows; row += image->stride, rows--) { - for (byte = row, cols = (image->width + 7) / 8; cols; byte++, cols--) { - unsigned char output_byte = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (*byte); - _cairo_output_stream_printf (surface->final_stream, "%02x ", output_byte); - } - _cairo_output_stream_printf (surface->final_stream, "\n "); - } - _cairo_output_stream_printf (surface->final_stream, - " >}\n"); - _cairo_output_stream_printf (surface->final_stream, - ">>\n"); - - _cairo_output_stream_printf (surface->final_stream, - "imagemask\n"); - - if (image != scaled_glyph->surface) - cairo_surface_destroy (&image->base); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_glyph (cairo_ps_surface_t *surface, - cairo_scaled_font_t *scaled_font, - unsigned long scaled_font_glyph_index, - unsigned int subset_glyph_index, - cairo_box_t *bbox) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - _cairo_output_stream_printf (surface->final_stream, - "\t\t{ %% %d\n", subset_glyph_index); - - if (subset_glyph_index != 0) { - status = _cairo_ps_surface_emit_bitmap_glyph_data (surface, - scaled_font, - scaled_font_glyph_index, - bbox); - } - - _cairo_output_stream_printf (surface->final_stream, - "\t\t}\n"); - - if (status) - status = _cairo_surface_set_error (&surface->base, status); - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_type3_font_subset (cairo_ps_surface_t *surface, - cairo_scaled_font_subset_t *font_subset) - - -{ - cairo_status_t status; - cairo_matrix_t matrix; - unsigned int i; - cairo_box_t font_bbox = {{0,0},{0,0}}; - cairo_box_t bbox = {{0,0},{0,0}}; - -#if DEBUG_PS - _cairo_output_stream_printf (surface->final_stream, - "%% _cairo_ps_surface_emit_type3_font_subset\n"); -#endif - - matrix = font_subset->scaled_font->scale_inverse; - _cairo_output_stream_printf (surface->final_stream, - "8 dict begin\n" - "/FontType 3 def\n" - "/FontMatrix [%f %f %f %f 0 0] def\n" - "/Encoding 256 array def\n" - "0 1 255 { Encoding exch /.notdef put } for\n", - matrix.xx, - matrix.yx, - -matrix.xy, - -matrix.yy); - - for (i = 1; i < font_subset->num_glyphs; i++) { - if (font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (surface->final_stream, - "Encoding %d /%s put\n", - i, font_subset->glyph_names[i]); - } else { - _cairo_output_stream_printf (surface->final_stream, - "Encoding %d /g%d put\n", i, i); - } - } - - _cairo_output_stream_printf (surface->final_stream, - "/Glyphs [\n"); - - for (i = 0; i < font_subset->num_glyphs; i++) { - status = _cairo_ps_surface_emit_glyph (surface, - font_subset->scaled_font, - font_subset->glyphs[i], i, - &bbox); - if (status) - return status; - - if (i == 0) { - font_bbox.p1.x = bbox.p1.x; - font_bbox.p1.y = bbox.p1.y; - font_bbox.p2.x = bbox.p2.x; - font_bbox.p2.y = bbox.p2.y; - } else { - if (bbox.p1.x < font_bbox.p1.x) - font_bbox.p1.x = bbox.p1.x; - if (bbox.p1.y < font_bbox.p1.y) - font_bbox.p1.y = bbox.p1.y; - if (bbox.p2.x > font_bbox.p2.x) - font_bbox.p2.x = bbox.p2.x; - if (bbox.p2.y > font_bbox.p2.y) - font_bbox.p2.y = bbox.p2.y; - } - } - - _cairo_output_stream_printf (surface->final_stream, - "] def\n" - "/FontBBox [%f %f %f %f] def\n" - "/BuildChar {\n" - " exch /Glyphs get\n" - " exch get exec\n" - "} bind def\n" - "currentdict\n" - "end\n" - "/f-%d-%d exch definefont pop\n", - _cairo_fixed_to_double (font_bbox.p1.x), - _cairo_fixed_to_double (font_bbox.p1.y), - _cairo_fixed_to_double (font_bbox.p2.x), - _cairo_fixed_to_double (font_bbox.p2.y), - font_subset->font_id, - font_subset->subset_id); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_unscaled_font_subset (cairo_scaled_font_subset_t *font_subset, - void *closure) -{ - cairo_ps_surface_t *surface = closure; - cairo_status_t status; - - - status = _cairo_scaled_font_subset_create_glyph_names (font_subset); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - -#if CAIRO_HAS_FT_FONT - status = _cairo_ps_surface_emit_type1_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; -#endif - - status = _cairo_ps_surface_emit_truetype_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - status = _cairo_ps_surface_emit_type1_font_fallback (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - ASSERT_NOT_REACHED; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_scaled_font_subset (cairo_scaled_font_subset_t *font_subset, - void *closure) -{ - cairo_ps_surface_t *surface = closure; - cairo_status_t status; - - status = _cairo_scaled_font_subset_create_glyph_names (font_subset); - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - status = _cairo_ps_surface_emit_type3_font_subset (surface, font_subset); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - ASSERT_NOT_REACHED; - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_font_subsets (cairo_ps_surface_t *surface) -{ - cairo_status_t status; - -#if DEBUG_PS - _cairo_output_stream_printf (surface->final_stream, - "%% _cairo_ps_surface_emit_font_subsets\n"); -#endif - - status = _cairo_scaled_font_subsets_foreach_unscaled (surface->font_subsets, - _cairo_ps_surface_emit_unscaled_font_subset, - surface); - if (status) - goto BAIL; - - status = _cairo_scaled_font_subsets_foreach_scaled (surface->font_subsets, - _cairo_ps_surface_emit_scaled_font_subset, - surface); - -BAIL: - _cairo_scaled_font_subsets_destroy (surface->font_subsets); - surface->font_subsets = NULL; - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_body (cairo_ps_surface_t *surface) -{ - char buf[4096]; - int n; - - if (ferror (surface->tmpfile) != 0) - return _cairo_error (CAIRO_STATUS_TEMP_FILE_ERROR); - - rewind (surface->tmpfile); - while ((n = fread (buf, 1, sizeof (buf), surface->tmpfile)) > 0) - _cairo_output_stream_write (surface->final_stream, buf, n); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_ps_surface_emit_footer (cairo_ps_surface_t *surface) -{ - _cairo_output_stream_printf (surface->final_stream, - "%%%%Trailer\n"); - - if (surface->eps) { - _cairo_output_stream_printf (surface->final_stream, - "count op_count sub {pop} repeat\n" - "countdictstack dict_count sub {end} repeat\n" - "cairo_eps_state restore\n"); - } - - _cairo_output_stream_printf (surface->final_stream, - "%%%%EOF\n"); -} - -static cairo_surface_t * -_cairo_ps_surface_create_for_stream_internal (cairo_output_stream_t *stream, - double width, - double height) -{ - cairo_status_t status, status_ignored; - cairo_ps_surface_t *surface; - - surface = malloc (sizeof (cairo_ps_surface_t)); - if (surface == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP; - } - - _cairo_surface_init (&surface->base, &cairo_ps_surface_backend, - CAIRO_CONTENT_COLOR_ALPHA); - - surface->final_stream = stream; - - surface->tmpfile = tmpfile (); - if (surface->tmpfile == NULL) { - switch (errno) { - case ENOMEM: - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - break; - default: - status = _cairo_error (CAIRO_STATUS_TEMP_FILE_ERROR); - break; - } - goto CLEANUP_SURFACE; - } - - surface->stream = _cairo_output_stream_create_for_file (surface->tmpfile); - status = _cairo_output_stream_get_status (surface->stream); - if (status) - goto CLEANUP_OUTPUT_STREAM; - - surface->font_subsets = _cairo_scaled_font_subsets_create_simple (); - if (surface->font_subsets == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_OUTPUT_STREAM; - } - - surface->eps = FALSE; - surface->ps_level = CAIRO_PS_LEVEL_3; - surface->ps_level_used = CAIRO_PS_LEVEL_2; - surface->width = width; - surface->height = height; - cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, -1, 0, height); - surface->paginated_mode = CAIRO_PAGINATED_MODE_ANALYZE; - surface->force_fallbacks = FALSE; - surface->content = CAIRO_CONTENT_COLOR_ALPHA; - surface->use_string_datasource = FALSE; - - _cairo_pdf_operators_init (&surface->pdf_operators, - surface->stream, - &surface->cairo_to_ps, - surface->font_subsets); - surface->num_pages = 0; - - _cairo_array_init (&surface->dsc_header_comments, sizeof (char *)); - _cairo_array_init (&surface->dsc_setup_comments, sizeof (char *)); - _cairo_array_init (&surface->dsc_page_setup_comments, sizeof (char *)); - - surface->dsc_comment_target = &surface->dsc_header_comments; - - surface->paginated_surface = _cairo_paginated_surface_create ( - &surface->base, - CAIRO_CONTENT_COLOR_ALPHA, - width, height, - &cairo_ps_surface_paginated_backend); - status = surface->paginated_surface->status; - if (status == CAIRO_STATUS_SUCCESS) - return surface->paginated_surface; - - _cairo_scaled_font_subsets_destroy (surface->font_subsets); - CLEANUP_OUTPUT_STREAM: - status_ignored = _cairo_output_stream_destroy (surface->stream); - fclose (surface->tmpfile); - CLEANUP_SURFACE: - free (surface); - CLEANUP: - /* destroy stream on behalf of caller */ - status_ignored = _cairo_output_stream_destroy (stream); - - return _cairo_surface_create_in_error (status); -} - -/** - * cairo_ps_surface_create: - * @filename: a filename for the PS output (must be writable) - * @width_in_points: width of the surface, in points (1 point == 1/72.0 inch) - * @height_in_points: height of the surface, in points (1 point == 1/72.0 inch) - * - * Creates a PostScript surface of the specified size in points to be - * written to @filename. See cairo_ps_surface_create_for_stream() for - * a more flexible mechanism for handling the PostScript output than - * simply writing it to a named file. - * - * Note that the size of individual pages of the PostScript output can - * vary. See cairo_ps_surface_set_size(). - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - * - * Since: 1.2 - **/ -cairo_surface_t * -cairo_ps_surface_create (const char *filename, - double width_in_points, - double height_in_points) -{ - cairo_output_stream_t *stream; - - stream = _cairo_output_stream_create_for_filename (filename); - if (_cairo_output_stream_get_status (stream)) - return _cairo_surface_create_in_error (_cairo_output_stream_destroy (stream)); - - return _cairo_ps_surface_create_for_stream_internal (stream, - width_in_points, - height_in_points); -} - -/** - * cairo_ps_surface_create_for_stream: - * @write_func: a #cairo_write_func_t to accept the output data - * @closure: the closure argument for @write_func - * @width_in_points: width of the surface, in points (1 point == 1/72.0 inch) - * @height_in_points: height of the surface, in points (1 point == 1/72.0 inch) - * - * Creates a PostScript surface of the specified size in points to be - * written incrementally to the stream represented by @write_func and - * @closure. See cairo_ps_surface_create() for a more convenient way - * to simply direct the PostScript output to a named file. - * - * Note that the size of individual pages of the PostScript - * output can vary. See cairo_ps_surface_set_size(). - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - * - * Since: 1.2 - */ -cairo_surface_t * -cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points) -{ - cairo_output_stream_t *stream; - - stream = _cairo_output_stream_create (write_func, NULL, closure); - if (_cairo_output_stream_get_status (stream)) - return _cairo_surface_create_in_error (_cairo_output_stream_destroy (stream)); - - return _cairo_ps_surface_create_for_stream_internal (stream, - width_in_points, - height_in_points); -} - -static cairo_bool_t -_cairo_surface_is_ps (cairo_surface_t *surface) -{ - return surface->backend == &cairo_ps_surface_backend; -} - -/* If the abstract_surface is a paginated surface, and that paginated - * surface's target is a ps_surface, then set ps_surface to that - * target. Otherwise return %CAIRO_STATUS_SURFACE_TYPE_MISMATCH. - */ -static cairo_status_t -_extract_ps_surface (cairo_surface_t *surface, - cairo_ps_surface_t **ps_surface) -{ - cairo_surface_t *target; - - if (surface->status) - return surface->status; - - if (! _cairo_surface_is_paginated (surface)) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - - target = _cairo_paginated_surface_get_target (surface); - if (target->status) - return target->status; - - if (! _cairo_surface_is_ps (target)) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - - *ps_surface = (cairo_ps_surface_t *) target; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_ps_surface_restrict_to_level: - * @surface: a PostScript #cairo_surface_t - * @level: PostScript level - * - * Restricts the generated PostSript file to @level. See - * cairo_ps_get_levels() for a list of available level values that - * can be used here. - * - * This function should only be called before any drawing operations - * have been performed on the given surface. The simplest way to do - * this is to call this function immediately after creating the - * surface. - * - * Since: 1.6 - **/ -void -cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, - cairo_ps_level_t level) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - if (level < CAIRO_PS_LEVEL_LAST) - ps_surface->ps_level = level; -} - -/** - * cairo_ps_get_levels: - * @levels: supported level list - * @num_levels: list length - * - * Used to retrieve the list of supported levels. See - * cairo_ps_surface_restrict_to_level(). - * - * Since: 1.6 - **/ -void -cairo_ps_get_levels (cairo_ps_level_t const **levels, - int *num_levels) -{ - if (levels != NULL) - *levels = _cairo_ps_levels; - - if (num_levels != NULL) - *num_levels = CAIRO_PS_LEVEL_LAST; -} - -/** - * cairo_ps_level_to_string: - * @level: a level id - * - * Get the string representation of the given @level id. This function - * will return %NULL if @level id isn't valid. See cairo_ps_get_levels() - * for a way to get the list of valid level ids. - * - * Return value: the string associated to given level. - * - * Since: 1.6 - **/ -const char * -cairo_ps_level_to_string (cairo_ps_level_t level) -{ - if (level >= CAIRO_PS_LEVEL_LAST) - return NULL; - - return _cairo_ps_level_strings[level]; -} - -/** - * cairo_ps_surface_set_eps: - * @surface: a PostScript #cairo_surface_t - * @eps: %TRUE to output EPS format PostScript - * - * If @eps is %TRUE, the PostScript surface will output Encapsulated - * PostScript. - * - * This function should only be called before any drawing operations - * have been performed on the current page. The simplest way to do - * this is to call this function immediately after creating the - * surface. An Encapsulated PostScript file should never contain more - * than one page. - * - * Since: 1.6 - **/ -void -cairo_ps_surface_set_eps (cairo_surface_t *surface, - cairo_bool_t eps) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - ps_surface->eps = eps; -} - -/** - * cairo_ps_surface_get_eps: - * @surface: a PostScript #cairo_surface_t - * - * Check whether the PostScript surface will output Encapsulated PostScript. - * - * Return value: %TRUE if the surface will output Encapsulated PostScript. - * - * Since: 1.6 - **/ -cairo_public cairo_bool_t -cairo_ps_surface_get_eps (cairo_surface_t *surface) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return FALSE; - } - - return ps_surface->eps; -} - -/** - * cairo_ps_surface_set_size: - * @surface: a PostScript #cairo_surface_t - * @width_in_points: new surface width, in points (1 point == 1/72.0 inch) - * @height_in_points: new surface height, in points (1 point == 1/72.0 inch) - * - * Changes the size of a PostScript surface for the current (and - * subsequent) pages. - * - * This function should only be called before any drawing operations - * have been performed on the current page. The simplest way to do - * this is to call this function immediately after creating the - * surface or immediately after completing a page with either - * cairo_show_page() or cairo_copy_page(). - * - * Since: 1.2 - **/ -void -cairo_ps_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - ps_surface->width = width_in_points; - ps_surface->height = height_in_points; - cairo_matrix_init (&ps_surface->cairo_to_ps, 1, 0, 0, -1, 0, height_in_points); - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&ps_surface->pdf_operators, - &ps_surface->cairo_to_ps); - status = _cairo_paginated_surface_set_size (ps_surface->paginated_surface, - width_in_points, - height_in_points); - if (status) - status = _cairo_surface_set_error (surface, status); -} - -/** - * cairo_ps_surface_dsc_comment: - * @surface: a PostScript #cairo_surface_t - * @comment: a comment string to be emitted into the PostScript output - * - * Emit a comment into the PostScript output for the given surface. - * - * The comment is expected to conform to the PostScript Language - * Document Structuring Conventions (DSC). Please see that manual for - * details on the available comments and their meanings. In - * particular, the %%IncludeFeature comment allows a - * device-independent means of controlling printer device features. So - * the PostScript Printer Description Files Specification will also be - * a useful reference. - * - * The comment string must begin with a percent character (%) and the - * total length of the string (including any initial percent - * characters) must not exceed 255 characters. Violating either of - * these conditions will place @surface into an error state. But - * beyond these two conditions, this function will not enforce - * conformance of the comment with any particular specification. - * - * The comment string should not have a trailing newline. - * - * The DSC specifies different sections in which particular comments - * can appear. This function provides for comments to be emitted - * within three sections: the header, the Setup section, and the - * PageSetup section. Comments appearing in the first two sections - * apply to the entire document while comments in the BeginPageSetup - * section apply only to a single page. - * - * For comments to appear in the header section, this function should - * be called after the surface is created, but before a call to - * cairo_ps_surface_begin_setup(). - * - * For comments to appear in the Setup section, this function should - * be called after a call to cairo_ps_surface_begin_setup() but before - * a call to cairo_ps_surface_begin_page_setup(). - * - * For comments to appear in the PageSetup section, this function - * should be called after a call to cairo_ps_surface_begin_page_setup(). - * - * Note that it is only necessary to call cairo_ps_surface_begin_page_setup() - * for the first page of any surface. After a call to - * cairo_show_page() or cairo_copy_page() comments are unambiguously - * directed to the PageSetup section of the current page. But it - * doesn't hurt to call this function at the beginning of every page - * as that consistency may make the calling code simpler. - * - * As a final note, cairo automatically generates several comments on - * its own. As such, applications must not manually generate any of - * the following comments: - * - * Header section: %!PS-Adobe-3.0, %%Creator, %%CreationDate, %%Pages, - * %%BoundingBox, %%DocumentData, %%LanguageLevel, %%EndComments. - * - * Setup section: %%BeginSetup, %%EndSetup - * - * PageSetup section: %%BeginPageSetup, %%PageBoundingBox, - * %%EndPageSetup. - * - * Other sections: %%BeginProlog, %%EndProlog, %%Page, %%Trailer, %%EOF - * - * Here is an example sequence showing how this function might be used: - * - * - * #cairo_surface_t *surface = cairo_ps_surface_create (filename, width, height); - * ... - * cairo_ps_surface_dsc_comment (surface, "%%Title: My excellent document"); - * cairo_ps_surface_dsc_comment (surface, "%%Copyright: Copyright (C) 2006 Cairo Lover") - * ... - * cairo_ps_surface_dsc_begin_setup (surface); - * cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaColor White"); - * ... - * cairo_ps_surface_dsc_begin_page_setup (surface); - * cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A3"); - * cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *InputSlot LargeCapacity"); - * cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaType Glossy"); - * cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *MediaColor Blue"); - * ... draw to first page here .. - * cairo_show_page (cr); - * ... - * cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A5"); - * ... - * - * - * Since: 1.2 - **/ -void -cairo_ps_surface_dsc_comment (cairo_surface_t *surface, - const char *comment) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - char *comment_copy; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - /* A couple of sanity checks on the comment value. */ - if (comment == NULL) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_NULL_POINTER); - return; - } - - if (comment[0] != '%' || strlen (comment) > 255) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_INVALID_DSC_COMMENT); - return; - } - - /* Then, copy the comment and store it in the appropriate array. */ - comment_copy = strdup (comment); - if (comment_copy == NULL) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_NO_MEMORY); - return; - } - - status = _cairo_array_append (ps_surface->dsc_comment_target, &comment_copy); - if (status) { - free (comment_copy); - status = _cairo_surface_set_error (surface, status); - return; - } -} - -/** - * cairo_ps_surface_dsc_begin_setup: - * @surface: a PostScript #cairo_surface_t - * - * This function indicates that subsequent calls to - * cairo_ps_surface_dsc_comment() should direct comments to the Setup - * section of the PostScript output. - * - * This function should be called at most once per surface, and must - * be called before any call to cairo_ps_surface_dsc_begin_page_setup() - * and before any drawing is performed to the surface. - * - * See cairo_ps_surface_dsc_comment() for more details. - * - * Since: 1.2 - **/ -void -cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - if (ps_surface->dsc_comment_target == &ps_surface->dsc_header_comments) - { - ps_surface->dsc_comment_target = &ps_surface->dsc_setup_comments; - } -} - -/** - * cairo_ps_surface_dsc_begin_page_setup: - * @surface: a PostScript #cairo_surface_t - * - * This function indicates that subsequent calls to - * cairo_ps_surface_dsc_comment() should direct comments to the - * PageSetup section of the PostScript output. - * - * This function call is only needed for the first page of a - * surface. It should be called after any call to - * cairo_ps_surface_dsc_begin_setup() and before any drawing is - * performed to the surface. - * - * See cairo_ps_surface_dsc_comment() for more details. - * - * Since: 1.2 - **/ -void -cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface) -{ - cairo_ps_surface_t *ps_surface = NULL; - cairo_status_t status; - - status = _extract_ps_surface (surface, &ps_surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - - if (ps_surface->dsc_comment_target == &ps_surface->dsc_header_comments || - ps_surface->dsc_comment_target == &ps_surface->dsc_setup_comments) - { - ps_surface->dsc_comment_target = &ps_surface->dsc_page_setup_comments; - } -} - -static cairo_surface_t * -_cairo_ps_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - return _cairo_meta_surface_create (content, width, height); -} - -static cairo_status_t -_cairo_ps_surface_finish (void *abstract_surface) -{ - cairo_status_t status, status2; - cairo_ps_surface_t *surface = abstract_surface; - int i, num_comments; - char **comments; - - _cairo_ps_surface_emit_header (surface); - - status = _cairo_ps_surface_emit_font_subsets (surface); - if (status) - goto CLEANUP; - - status = _cairo_ps_surface_emit_body (surface); - if (status) - goto CLEANUP; - - _cairo_ps_surface_emit_footer (surface); - -CLEANUP: - status2 = _cairo_output_stream_destroy (surface->stream); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - fclose (surface->tmpfile); - - status2 = _cairo_output_stream_destroy (surface->final_stream); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - num_comments = _cairo_array_num_elements (&surface->dsc_header_comments); - comments = _cairo_array_index (&surface->dsc_header_comments, 0); - for (i = 0; i < num_comments; i++) - free (comments[i]); - _cairo_array_fini (&surface->dsc_header_comments); - - num_comments = _cairo_array_num_elements (&surface->dsc_setup_comments); - comments = _cairo_array_index (&surface->dsc_setup_comments, 0); - for (i = 0; i < num_comments; i++) - free (comments[i]); - _cairo_array_fini (&surface->dsc_setup_comments); - - num_comments = _cairo_array_num_elements (&surface->dsc_page_setup_comments); - comments = _cairo_array_index (&surface->dsc_page_setup_comments, 0); - for (i = 0; i < num_comments; i++) - free (comments[i]); - _cairo_array_fini (&surface->dsc_page_setup_comments); - - return status; -} - -static cairo_int_status_t -_cairo_ps_surface_start_page (void *abstract_surface) -{ - cairo_ps_surface_t *surface = abstract_surface; - - /* Increment before print so page numbers start at 1. */ - surface->num_pages++; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_ps_surface_end_page (cairo_ps_surface_t *surface) -{ - _cairo_output_stream_printf (surface->stream, - "Q\n"); -} - -static cairo_int_status_t -_cairo_ps_surface_show_page (void *abstract_surface) -{ - cairo_ps_surface_t *surface = abstract_surface; - - _cairo_ps_surface_end_page (surface); - - _cairo_output_stream_printf (surface->stream, "showpage\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_bool_t -color_is_gray (double red, double green, double blue) -{ - const double epsilon = 0.00001; - - return (fabs (red - green) < epsilon && - fabs (red - blue) < epsilon); -} - -static cairo_int_status_t -_cairo_ps_surface_analyze_surface_pattern_transparency (cairo_ps_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - cairo_image_surface_t *image; - void *image_extra; - cairo_int_status_t status; - cairo_image_transparency_t transparency; - - status = _cairo_surface_acquire_source_image (pattern->surface, - &image, - &image_extra); - if (status) - return status; - - if (image->base.status) - return image->base.status; - - transparency = _cairo_image_analyze_transparency (image); - switch (transparency) { - case CAIRO_IMAGE_IS_OPAQUE: - status = CAIRO_STATUS_SUCCESS; - break; - - case CAIRO_IMAGE_HAS_BILEVEL_ALPHA: - if (surface->ps_level == CAIRO_PS_LEVEL_2) { - status = CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - } else { - surface->ps_level_used = CAIRO_PS_LEVEL_3; - status = CAIRO_STATUS_SUCCESS; - } - break; - - case CAIRO_IMAGE_HAS_ALPHA: - status = CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - break; - - case CAIRO_IMAGE_UNKNOWN: - ASSERT_NOT_REACHED; - } - - _cairo_surface_release_source_image (pattern->surface, image, image_extra); - - return status; -} - -static cairo_bool_t -surface_pattern_supported (cairo_surface_pattern_t *pattern) -{ - cairo_extend_t extend; - - if (_cairo_surface_is_meta (pattern->surface)) - return TRUE; - - if (pattern->surface->backend->acquire_source_image == NULL) - return FALSE; - - /* Does an ALPHA-only source surface even make sense? Maybe, but I - * don't think it's worth the extra code to support it. */ - -/* XXX: Need to write this function here... - content = cairo_surface_get_content (pattern->surface); - if (content == CAIRO_CONTENT_ALPHA) - return FALSE; -*/ - - /* Cast away the const, trusting get_extend not to muck with it. - * And I really wish I had a way to cast away just the const, and - * not potentially coerce this pointer to an incorrect type at the - * same time. :-( - */ - extend = cairo_pattern_get_extend ((cairo_pattern_t*)&pattern->base); - switch (extend) { - case CAIRO_EXTEND_NONE: - case CAIRO_EXTEND_REPEAT: - case CAIRO_EXTEND_REFLECT: - /* There's no point returning FALSE for EXTEND_PAD, as the image - * surface does not currently implement it either */ - case CAIRO_EXTEND_PAD: - return TRUE; - } - - ASSERT_NOT_REACHED; - return FALSE; -} - -static cairo_bool_t -_gradient_pattern_supported (cairo_ps_surface_t *surface, - cairo_pattern_t *pattern) -{ - cairo_extend_t extend; - - if (surface->ps_level == CAIRO_PS_LEVEL_2) - return FALSE; - - surface->ps_level_used = CAIRO_PS_LEVEL_3; - extend = cairo_pattern_get_extend (pattern); - - /* Radial gradients are currently only supported when one circle - * is inside the other. */ - if (pattern->type == CAIRO_PATTERN_TYPE_RADIAL) { - double x1, y1, x2, y2, r1, r2, d; - cairo_radial_pattern_t *radial = (cairo_radial_pattern_t *) pattern; - - if (extend == CAIRO_EXTEND_REPEAT || - extend == CAIRO_EXTEND_REFLECT) { - return FALSE; - } - - x1 = _cairo_fixed_to_double (radial->c1.x); - y1 = _cairo_fixed_to_double (radial->c1.y); - r1 = _cairo_fixed_to_double (radial->r1); - x2 = _cairo_fixed_to_double (radial->c2.x); - y2 = _cairo_fixed_to_double (radial->c2.y); - r2 = _cairo_fixed_to_double (radial->r2); - - d = sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - if (d > fabs(r2 - r1)) { - return FALSE; - } - } - - return TRUE; -} - -static cairo_bool_t -pattern_supported (cairo_ps_surface_t *surface, cairo_pattern_t *pattern) -{ - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) - return TRUE; - - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR || - pattern->type == CAIRO_PATTERN_TYPE_RADIAL) - return _gradient_pattern_supported (surface, pattern); - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - return surface_pattern_supported ((cairo_surface_pattern_t *) pattern); - - return FALSE; -} - -static cairo_int_status_t -_cairo_ps_surface_analyze_operation (cairo_ps_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *pattern) -{ - if (surface->force_fallbacks && surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (! pattern_supported (surface, pattern)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (!(op == CAIRO_OPERATOR_SOURCE || - op == CAIRO_OPERATOR_OVER)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - if ( _cairo_surface_is_meta (surface_pattern->surface)) - return CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN; - } - - if (op == CAIRO_OPERATOR_SOURCE) - return CAIRO_STATUS_SUCCESS; - - /* CAIRO_OPERATOR_OVER is only supported for opaque patterns. If - * the pattern contains transparency, we return - * CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY to the analysis - * surface. If the analysis surface determines that there is - * anything drawn under this operation, a fallback image will be - * used. Otherwise the operation will be replayed during the - * render stage and we blend the transarency into the white - * background to convert the pattern to opaque. - */ - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - return _cairo_ps_surface_analyze_surface_pattern_transparency (surface, - surface_pattern); - } - - if (_cairo_pattern_is_opaque (pattern)) - return CAIRO_STATUS_SUCCESS; - else - return CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; -} - -static cairo_bool_t -_cairo_ps_surface_operation_supported (cairo_ps_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *pattern) -{ - if (_cairo_ps_surface_analyze_operation (surface, op, pattern) != CAIRO_INT_STATUS_UNSUPPORTED) - return TRUE; - else - return FALSE; -} - -/* The "standard" implementation limit for PostScript string sizes is - * 65535 characters (see PostScript Language Reference, Appendix - * B). We go one short of that because we sometimes need two - * characters in a string to represent a single ASCII85 byte, (for the - * escape sequences "\\", "\(", and "\)") and we must not split these - * across two strings. So we'd be in trouble if we went right to the - * limit and one of these escape sequences just happened to land at - * the end. - */ -#define STRING_ARRAY_MAX_STRING_SIZE (65535-1) -#define STRING_ARRAY_MAX_COLUMN 72 - -typedef struct _string_array_stream { - cairo_output_stream_t base; - cairo_output_stream_t *output; - int column; - int string_size; - cairo_bool_t use_strings; -} string_array_stream_t; - -static cairo_status_t -_string_array_stream_write (cairo_output_stream_t *base, - const unsigned char *data, - unsigned int length) -{ - string_array_stream_t *stream = (string_array_stream_t *) base; - unsigned char c; - const unsigned char backslash = '\\'; - - if (length == 0) - return CAIRO_STATUS_SUCCESS; - - while (length--) { - if (stream->string_size == 0 && stream->use_strings) { - _cairo_output_stream_printf (stream->output, "("); - stream->column++; - } - - c = *data++; - if (stream->use_strings) { - switch (c) { - case '\\': - case '(': - case ')': - _cairo_output_stream_write (stream->output, &backslash, 1); - stream->column++; - stream->string_size++; - break; - } - } - /* Have to be careful to never split the final ~> sequence. */ - if (c == '~') { - _cairo_output_stream_write (stream->output, &c, 1); - stream->column++; - stream->string_size++; - length--; - c = *data++; - } - _cairo_output_stream_write (stream->output, &c, 1); - stream->column++; - stream->string_size++; - - if (stream->use_strings && - stream->string_size >= STRING_ARRAY_MAX_STRING_SIZE) - { - _cairo_output_stream_printf (stream->output, ")\n"); - stream->string_size = 0; - stream->column = 0; - } - if (stream->column >= STRING_ARRAY_MAX_COLUMN) { - _cairo_output_stream_printf (stream->output, "\n "); - stream->string_size += 2; - stream->column = 1; - } - } - - return _cairo_output_stream_get_status (stream->output); -} - -static cairo_status_t -_string_array_stream_close (cairo_output_stream_t *base) -{ - cairo_status_t status; - string_array_stream_t *stream = (string_array_stream_t *) base; - - if (stream->use_strings) - _cairo_output_stream_printf (stream->output, ")\n"); - - status = _cairo_output_stream_get_status (stream->output); - - return status; -} - -/* A string_array_stream wraps an existing output stream. It takes the - * data provided to it and output one or more consecutive string - * objects, each within the standard PostScript implementation limit - * of 65k characters. - * - * The strings are each separated by a space character for easy - * inclusion within an array object, (but the array delimiters are not - * added by the string_array_stream). - * - * The string array stream is also careful to wrap the output within - * STRING_ARRAY_MAX_COLUMN columns (+/- 1). The stream also adds - * necessary escaping for special characters within a string, - * (specifically '\', '(', and ')'). - */ -static cairo_output_stream_t * -_string_array_stream_create (cairo_output_stream_t *output) -{ - string_array_stream_t *stream; - - stream = malloc (sizeof (string_array_stream_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, - _string_array_stream_write, - _string_array_stream_close); - stream->output = output; - stream->column = 0; - stream->string_size = 0; - stream->use_strings = TRUE; - - return &stream->base; -} - -/* A base85_array_stream wraps an existing output stream. It wraps the - * output within STRING_ARRAY_MAX_COLUMN columns (+/- 1). The output - * is not enclosed in strings like string_array_stream. - */ -static cairo_output_stream_t * -_base85_array_stream_create (cairo_output_stream_t *output) -{ - string_array_stream_t *stream; - - stream = malloc (sizeof (string_array_stream_t)); - if (stream == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_output_stream_t *) &_cairo_output_stream_nil; - } - - _cairo_output_stream_init (&stream->base, - _string_array_stream_write, - _string_array_stream_close); - stream->output = output; - stream->column = 0; - stream->string_size = 0; - stream->use_strings = FALSE; - - return &stream->base; -} - - -/* PS Output - this section handles output of the parts of the meta - * surface we can render natively in PS. */ - -static cairo_status_t -_cairo_ps_surface_flatten_image_transparency (cairo_ps_surface_t *surface, - cairo_image_surface_t *image, - cairo_image_surface_t **opaque_image) -{ - const cairo_color_t *background_color; - cairo_surface_t *opaque; - cairo_pattern_union_t pattern; - cairo_status_t status; - - if (surface->content == CAIRO_CONTENT_COLOR_ALPHA) - background_color = CAIRO_COLOR_WHITE; - else - background_color = CAIRO_COLOR_BLACK; - - opaque = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - image->width, - image->height); - if (opaque->status) - return opaque->status; - - _cairo_pattern_init_for_surface (&pattern.surface, &image->base); - - status = _cairo_surface_fill_rectangle (opaque, - CAIRO_OPERATOR_SOURCE, - background_color, - 0, 0, - image->width, image->height); - if (status) - goto fail; - - status = _cairo_surface_composite (CAIRO_OPERATOR_OVER, - &pattern.base, - NULL, - opaque, - 0, 0, - 0, 0, - 0, 0, - image->width, - image->height); - if (status) - goto fail; - - _cairo_pattern_fini (&pattern.base); - *opaque_image = (cairo_image_surface_t *) opaque; - - return CAIRO_STATUS_SUCCESS; - -fail: - _cairo_pattern_fini (&pattern.base); - cairo_surface_destroy (opaque); - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_base85_string (cairo_ps_surface_t *surface, - unsigned char *data, - unsigned long length, - cairo_bool_t use_strings) -{ - cairo_output_stream_t *base85_stream, *string_array_stream; - cairo_status_t status, status2; - - if (use_strings) - string_array_stream = _string_array_stream_create (surface->stream); - else - string_array_stream = _base85_array_stream_create (surface->stream); - - status = _cairo_output_stream_get_status (string_array_stream); - if (status) - return _cairo_output_stream_destroy (string_array_stream); - - base85_stream = _cairo_base85_stream_create (string_array_stream); - status = _cairo_output_stream_get_status (base85_stream); - if (status) { - status2 = _cairo_output_stream_destroy (string_array_stream); - return _cairo_output_stream_destroy (base85_stream); - } - - _cairo_output_stream_write (base85_stream, data, length); - - status = _cairo_output_stream_destroy (base85_stream); - status2 = _cairo_output_stream_destroy (string_array_stream); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_image (cairo_ps_surface_t *surface, - cairo_image_surface_t *image, - cairo_operator_t op) -{ - cairo_status_t status; - unsigned char *data, *data_compressed; - unsigned long data_size, data_compressed_size; - cairo_image_surface_t *opaque_image = NULL; - int x, y, i; - cairo_image_transparency_t transparency; - cairo_bool_t use_mask; - uint32_t *pixel; - int bit; - - if (image->base.status) - return image->base.status; - - transparency = _cairo_image_analyze_transparency (image); - - /* PostScript can not represent the alpha channel, so we blend the - current image over a white (or black for CONTENT_COLOR - surfaces) RGB surface to eliminate it. */ - - if (op == CAIRO_OPERATOR_SOURCE || - transparency == CAIRO_IMAGE_HAS_ALPHA || - (transparency == CAIRO_IMAGE_HAS_BILEVEL_ALPHA && - surface->ps_level == CAIRO_PS_LEVEL_2)) - { - status = _cairo_ps_surface_flatten_image_transparency (surface, - image, - &opaque_image); - if (status) - return status; - - use_mask = FALSE; - } else if (transparency == CAIRO_IMAGE_IS_OPAQUE) { - opaque_image = image; - use_mask = FALSE; - } else { - use_mask = TRUE; - } - - if (use_mask) { - /* Type 2 (mask and image interleaved) has the mask and image - * samples interleaved by row. The mask row is first, one bit - * per pixel with (bit 7 first). The row is padded to byte - * boundaries. The image data is 3 bytes per pixel RGB - * format. */ - data_size = image->height * ((image->width + 7)/8 + 3*image->width); - } else { - data_size = image->height * image->width * 3; - } - data = malloc (data_size); - if (data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto bail1; - } - - if (use_mask) { - i = 0; - for (y = 0; y < image->height; y++) { - /* mask row */ - pixel = (uint32_t *) (image->data + y * image->stride); - bit = 7; - for (x = 0; x < image->width; x++, pixel++) { - if (bit == 7) - data[i] = 0; - if (((*pixel & 0xff000000) >> 24) > 0x80) - data[i] |= (1 << bit); - bit--; - if (bit < 0) { - bit = 7; - i++; - } - } - if (bit != 7) - i++; - - /* image row*/ - pixel = (uint32_t *) (image->data + y * image->stride); - for (x = 0; x < image->width; x++, pixel++) { - data[i++] = (*pixel & 0x00ff0000) >> 16; - data[i++] = (*pixel & 0x0000ff00) >> 8; - data[i++] = (*pixel & 0x000000ff) >> 0; - } - } - } else { - i = 0; - for (y = 0; y < opaque_image->height; y++) { - pixel = (uint32_t *) (opaque_image->data + y * opaque_image->stride); - for (x = 0; x < opaque_image->width; x++, pixel++) { - data[i++] = (*pixel & 0x00ff0000) >> 16; - data[i++] = (*pixel & 0x0000ff00) >> 8; - data[i++] = (*pixel & 0x000000ff) >> 0; - } - } - } - - /* XXX: Should fix cairo-lzw to provide a stream-based interface - * instead. */ - data_compressed_size = data_size; - data_compressed = _cairo_lzw_compress (data, &data_compressed_size); - if (data_compressed == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto bail2; - } - - if (surface->use_string_datasource) { - /* Emit the image data as a base85-encoded string which will - * be used as the data source for the image operator later. */ - _cairo_output_stream_printf (surface->stream, - "/CairoImageData [\n"); - - status = _cairo_ps_surface_emit_base85_string (surface, - data_compressed, - data_compressed_size, - TRUE); - if (status) - goto bail3; - - _cairo_output_stream_printf (surface->stream, - "] def\n"); - _cairo_output_stream_printf (surface->stream, - "/CairoImageDataIndex 0 def\n"); - } - - if (use_mask) { - _cairo_output_stream_printf (surface->stream, - "/DeviceRGB setcolorspace\n" - "5 dict dup begin\n" - " /ImageType 3 def\n" - " /InterleaveType 2 def\n" - " /DataDict 8 dict def\n" - " DataDict begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /BitsPerComponent 8 def\n" - " /Decode [ 0 1 0 1 0 1 ] def\n", - image->width, - image->height); - - if (surface->use_string_datasource) { - _cairo_output_stream_printf (surface->stream, - " /DataSource {\n" - " CairoImageData CairoImageDataIndex get\n" - " /CairoImageDataIndex CairoImageDataIndex 1 add def\n" - " CairoImageDataIndex CairoImageData length 1 sub gt\n" - " { /CairoImageDataIndex 0 def } if\n" - " } /ASCII85Decode filter /LZWDecode filter def\n"); - } else { - _cairo_output_stream_printf (surface->stream, - " /DataSource currentfile /ASCII85Decode filter /LZWDecode filter def\n"); - } - - _cairo_output_stream_printf (surface->stream, - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - " end\n" - " /MaskDict 8 dict def\n" - " MaskDict begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /BitsPerComponent 1 def\n" - " /Decode [ 1 0 ] def\n" - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - " end\n" - "end\n" - "image\n", - image->height, - image->width, - image->height, - image->height); - } else { - _cairo_output_stream_printf (surface->stream, - "/DeviceRGB setcolorspace\n" - "8 dict dup begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /BitsPerComponent 8 def\n" - " /Decode [ 0 1 0 1 0 1 ] def\n", - opaque_image->width, - opaque_image->height); - if (surface->use_string_datasource) { - _cairo_output_stream_printf (surface->stream, - " /DataSource {\n" - " CairoImageData CairoImageDataIndex get\n" - " /CairoImageDataIndex CairoImageDataIndex 1 add def\n" - " CairoImageDataIndex CairoImageData length 1 sub gt\n" - " { /CairoImageDataIndex 0 def } if\n" - " } /ASCII85Decode filter /LZWDecode filter def\n"); - } else { - _cairo_output_stream_printf (surface->stream, - " /DataSource currentfile /ASCII85Decode filter /LZWDecode filter def\n"); - } - - _cairo_output_stream_printf (surface->stream, - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - "end\n" - "image\n", - opaque_image->height); - } - - if (!surface->use_string_datasource) { - /* Emit the image data as a base85-encoded string which will - * be used as the data source for the image operator. */ - status = _cairo_ps_surface_emit_base85_string (surface, - data_compressed, - data_compressed_size, - FALSE); - } else { - status = CAIRO_STATUS_SUCCESS; - } - -bail3: - free (data_compressed); - -bail2: - free (data); - -bail1: - if (!use_mask && opaque_image != image) - cairo_surface_destroy (&opaque_image->base); - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_meta_surface (cairo_ps_surface_t *surface, - cairo_surface_t *meta_surface) -{ - double old_width, old_height; - cairo_matrix_t old_cairo_to_ps; - cairo_content_t old_content; - cairo_clip_t *old_clip; - cairo_rectangle_int_t meta_extents; - cairo_status_t status; - - status = _cairo_surface_get_extents (meta_surface, &meta_extents); - if (status) - return status; - - old_content = surface->content; - old_width = surface->width; - old_height = surface->height; - old_cairo_to_ps = surface->cairo_to_ps; - old_clip = _cairo_surface_get_clip (&surface->base); - surface->width = meta_extents.width; - surface->height = meta_extents.height; - cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, -1, 0, surface->height); - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, - &surface->cairo_to_ps); - _cairo_output_stream_printf (surface->stream, - " q\n" - " 0 0 %f %f rectclip\n", - surface->width, - surface->height); - - if (cairo_surface_get_content (meta_surface) == CAIRO_CONTENT_COLOR) { - surface->content = CAIRO_CONTENT_COLOR; - _cairo_output_stream_printf (surface->stream, - " 0 g 0 0 %f %f rectfill\n", - surface->width, - surface->height); - } - - status = _cairo_meta_surface_replay_region (meta_surface, &surface->base, - CAIRO_META_REGION_NATIVE); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - if (status) - return status; - - _cairo_output_stream_printf (surface->stream, - " Q\n"); - surface->content = old_content; - surface->width = old_width; - surface->height = old_height; - surface->cairo_to_ps = old_cairo_to_ps; - status = _cairo_surface_set_clip (&surface->base, old_clip); - if (status) - return status; - - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, - &surface->cairo_to_ps); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_ps_surface_flatten_transparency (cairo_ps_surface_t *surface, - const cairo_color_t *color, - double *red, - double *green, - double *blue) -{ - *red = color->red; - *green = color->green; - *blue = color->blue; - - if (!CAIRO_COLOR_IS_OPAQUE(color)) { - if (surface->content == CAIRO_CONTENT_COLOR_ALPHA) { - uint8_t one_minus_alpha = 255 - (color->alpha_short >> 8); - - *red = ((color->red_short >> 8) + one_minus_alpha) / 255.0; - *green = ((color->green_short >> 8) + one_minus_alpha) / 255.0; - *blue = ((color->blue_short >> 8) + one_minus_alpha) / 255.0; - } else { - *red = (color->red_short >> 8) / 255.0; - *green = (color->green_short >> 8) / 255.0; - *blue = (color->blue_short >> 8) / 255.0; - } - } -} - -static void -_cairo_ps_surface_emit_solid_pattern (cairo_ps_surface_t *surface, - cairo_solid_pattern_t *pattern) -{ - double red, green, blue; - - _cairo_ps_surface_flatten_transparency (surface, &pattern->color, &red, &green, &blue); - - if (color_is_gray (red, green, blue)) - _cairo_output_stream_printf (surface->stream, - "%f g\n", - red); - else - _cairo_output_stream_printf (surface->stream, - "%f %f %f rg\n", - red, green, blue); -} - -static cairo_status_t -_cairo_ps_surface_acquire_surface (cairo_ps_surface_t *surface, - cairo_surface_pattern_t *pattern, - int *width, - int *height, - cairo_operator_t op) -{ - cairo_status_t status; - - if (_cairo_surface_is_meta (pattern->surface)) { - cairo_surface_t *meta_surface = pattern->surface; - cairo_rectangle_int_t pattern_extents; - - status = _cairo_surface_get_extents (meta_surface, &pattern_extents); - if (status) - return status; - - *width = pattern_extents.width; - *height = pattern_extents.height; - } else { - status = _cairo_surface_acquire_source_image (pattern->surface, - &surface->image, - &surface->image_extra); - if (status) - return status; - - *width = surface->image->width; - *height = surface->image->height; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_surface (cairo_ps_surface_t *surface, - cairo_surface_pattern_t *pattern, - cairo_operator_t op) -{ - cairo_status_t status; - - if (_cairo_surface_is_meta (pattern->surface)) { - cairo_surface_t *meta_surface = pattern->surface; - - status = _cairo_ps_surface_emit_meta_surface (surface, - meta_surface); - } else { - status = _cairo_ps_surface_emit_image (surface, surface->image, op); - } - - return status; -} - -static void -_cairo_ps_surface_release_surface (cairo_ps_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - if (!_cairo_surface_is_meta (pattern->surface)) - _cairo_surface_release_source_image (pattern->surface, surface->image, - surface->image_extra); -} - -static cairo_status_t -_cairo_ps_surface_paint_surface (cairo_ps_surface_t *surface, - cairo_surface_pattern_t *pattern, - cairo_operator_t op) -{ - cairo_status_t status; - int width, height; - cairo_matrix_t cairo_p2d, ps_p2d; - - status = _cairo_ps_surface_acquire_surface (surface, - pattern, - &width, - &height, - op); - if (status) - return status; - - cairo_p2d = pattern->base.matrix; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_FALLBACK) { - double scale = cairo_p2d.xx; - - _cairo_output_stream_printf (surface->stream, - "%% Fallback Image: x=%f, y=%f, w=%d, h=%d res=%fdpi size=%ld\n", - -cairo_p2d.x0/scale, - -cairo_p2d.y0/scale, - (int)(width/scale), - (int)(height/scale), - scale*72, - (long)width*height*3); - } else { - if (op == CAIRO_OPERATOR_SOURCE) { - _cairo_output_stream_printf (surface->stream, - "%d g 0 0 %f %f rectfill\n", - surface->content == CAIRO_CONTENT_COLOR ? 0 : 1, - surface->width, - surface->height); - } - } - - status = cairo_matrix_invert (&cairo_p2d); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - ps_p2d = surface->cairo_to_ps; - cairo_matrix_multiply (&ps_p2d, &cairo_p2d, &ps_p2d); - cairo_matrix_translate (&ps_p2d, 0.0, height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); - - _cairo_output_stream_printf (surface->stream, - "[ %f %f %f %f %f %f ] concat\n", - ps_p2d.xx, ps_p2d.yx, - ps_p2d.xy, ps_p2d.yy, - ps_p2d.x0, ps_p2d.y0); - - status = _cairo_ps_surface_emit_surface (surface, pattern, op); - _cairo_ps_surface_release_surface (surface, pattern); - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_surface_pattern (cairo_ps_surface_t *surface, - cairo_surface_pattern_t *pattern, - cairo_operator_t op) -{ - cairo_status_t status; - int pattern_width = 0; /* squelch bogus compiler warning */ - int pattern_height = 0; /* squelch bogus compiler warning */ - double xstep, ystep; - cairo_matrix_t cairo_p2d, ps_p2d; - cairo_rectangle_int_t surface_extents; - cairo_bool_t old_use_string_datasource; - - cairo_p2d = pattern->base.matrix; - status = cairo_matrix_invert (&cairo_p2d); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - ps_p2d = surface->cairo_to_ps; - cairo_matrix_multiply (&ps_p2d, &cairo_p2d, &ps_p2d); - cairo_matrix_translate (&ps_p2d, 0.0, pattern_height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); - - status = _cairo_ps_surface_acquire_surface (surface, - pattern, - &pattern_width, - &pattern_height, - op); - if (status) - return status; - - switch (pattern->base.extend) { - /* We implement EXTEND_PAD like EXTEND_NONE for now */ - case CAIRO_EXTEND_PAD: - case CAIRO_EXTEND_NONE: - { - /* In PS/PDF, (as far as I can tell), all patterns are - * repeating. So we support cairo's EXTEND_NONE semantics - * by setting the repeat step size to a size large enough - * to guarantee that no more than a single occurrence will - * be visible. - * - * First, map the surface extents into pattern space (since - * xstep and ystep are in pattern space). Then use an upper - * bound on the length of the diagonal of the pattern image - * and the surface as repeat size. This guarantees to never - * repeat visibly. - */ - double x1 = 0.0, y1 = 0.0; - double x2 = surface->width, y2 = surface->height; - _cairo_matrix_transform_bounding_box (&pattern->base.matrix, - &x1, &y1, &x2, &y2, - NULL); - - /* Rather than computing precise bounds of the union, just - * add the surface extents unconditionally. We only - * required an answer that's large enough, we don't really - * care if it's not as tight as possible.*/ - xstep = ystep = ceil ((x2 - x1) + (y2 - y1) + - pattern_width + pattern_height); - break; - } - case CAIRO_EXTEND_REPEAT: - xstep = pattern_width; - ystep = pattern_height; - break; - case CAIRO_EXTEND_REFLECT: - xstep = pattern_width*2; - ystep = pattern_height*2; - break; - /* All the rest (if any) should have been analyzed away, so these - * cases should be unreachable. */ - default: - ASSERT_NOT_REACHED; - xstep = 0; - ystep = 0; - } - - _cairo_output_stream_printf (surface->stream, - "/CairoPattern {\n"); - - old_use_string_datasource = surface->use_string_datasource; - surface->use_string_datasource = TRUE; - if (op == CAIRO_OPERATOR_SOURCE) { - _cairo_output_stream_printf (surface->stream, - "%d g 0 0 %f %f rectfill\n", - surface->content == CAIRO_CONTENT_COLOR ? 0 : 1, - xstep, ystep); - } - status = _cairo_ps_surface_emit_surface (surface, pattern, op); - if (status) - return status; - - surface->use_string_datasource = old_use_string_datasource; - _cairo_output_stream_printf (surface->stream, - "} bind def\n"); - - _cairo_output_stream_printf (surface->stream, - "<< /PatternType 1\n" - " /PaintType 1\n" - " /TilingType 1\n"); - _cairo_output_stream_printf (surface->stream, - " /XStep %f /YStep %f\n", - xstep, ystep); - - if (pattern->base.extend == CAIRO_EXTEND_REFLECT) { - _cairo_output_stream_printf (surface->stream, - " /BBox [0 0 %d %d]\n" - " /PaintProc {\n" - " CairoPattern\n" - " [-1 0 0 1 %d 0] concat CairoPattern\n" - " [ 1 0 0 -1 0 %d] concat CairoPattern\n" - " [-1 0 0 1 %d 0] concat CairoPattern\n" - " CairoPattern\n" - " } bind\n", - pattern_width*2, pattern_height*2, - pattern_width*2, - pattern_height*2, - pattern_width*2); - } else { - if (op == CAIRO_OPERATOR_SOURCE) { - _cairo_output_stream_printf (surface->stream, - " /BBox [0 0 %f %f]\n", - xstep, ystep); - } else { - _cairo_output_stream_printf (surface->stream, - " /BBox [0 0 %d %d]\n", - pattern_width, pattern_height); - } - _cairo_output_stream_printf (surface->stream, - " /PaintProc { CairoPattern }\n"); - } - - _cairo_output_stream_printf (surface->stream, - ">>\n"); - - status = _cairo_surface_get_extents (&surface->base, &surface_extents); - if (status) - return status; - - cairo_p2d = pattern->base.matrix; - status = cairo_matrix_invert (&cairo_p2d); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_init_identity (&ps_p2d); - cairo_matrix_translate (&ps_p2d, 0.0, surface_extents.height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); - cairo_matrix_multiply (&ps_p2d, &cairo_p2d, &ps_p2d); - cairo_matrix_translate (&ps_p2d, 0.0, pattern_height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); - - _cairo_output_stream_printf (surface->stream, - "[ %f %f %f %f %f %f ]\n", - ps_p2d.xx, ps_p2d.yx, - ps_p2d.xy, ps_p2d.yy, - ps_p2d.x0, ps_p2d.y0); - _cairo_output_stream_printf (surface->stream, - "makepattern setpattern\n"); - - return CAIRO_STATUS_SUCCESS; -} - -typedef struct _cairo_ps_color_stop { - double offset; - double color[4]; -} cairo_ps_color_stop_t; - -static void -_cairo_ps_surface_emit_linear_colorgradient (cairo_ps_surface_t *surface, - cairo_ps_color_stop_t *stop1, - cairo_ps_color_stop_t *stop2) -{ - _cairo_output_stream_printf (surface->stream, - " << /FunctionType 2\n" - " /Domain [ 0 1 ]\n" - " /C0 [ %f %f %f ]\n" - " /C1 [ %f %f %f ]\n" - " /N 1\n" - " >>\n", - stop1->color[0], - stop1->color[1], - stop1->color[2], - stop2->color[0], - stop2->color[1], - stop2->color[2]); -} - -static void -_cairo_ps_surface_emit_stitched_colorgradient (cairo_ps_surface_t *surface, - unsigned int n_stops, - cairo_ps_color_stop_t stops[]) -{ - unsigned int i; - - _cairo_output_stream_printf (surface->stream, - "<< /FunctionType 3\n" - " /Domain [ 0 1 ]\n" - " /Functions [\n"); - for (i = 0; i < n_stops - 1; i++) - _cairo_ps_surface_emit_linear_colorgradient (surface, &stops[i], &stops[i+1]); - - _cairo_output_stream_printf (surface->stream, " ]\n"); - - _cairo_output_stream_printf (surface->stream, " /Bounds [ "); - for (i = 1; i < n_stops-1; i++) - _cairo_output_stream_printf (surface->stream, "%f ", stops[i].offset); - _cairo_output_stream_printf (surface->stream, "]\n"); - - _cairo_output_stream_printf (surface->stream, " /Encode [ 1 1 %d { pop 0 1 } for ]\n", - n_stops - 1); - - _cairo_output_stream_printf (surface->stream, ">>\n"); -} - -static void -calc_gradient_color (cairo_ps_color_stop_t *new_stop, - cairo_ps_color_stop_t *stop1, - cairo_ps_color_stop_t *stop2) -{ - int i; - double offset = stop1->offset / (stop1->offset + 1.0 - stop2->offset); - - for (i = 0; i < 4; i++) - new_stop->color[i] = stop1->color[i] + offset*(stop2->color[i] - stop1->color[i]); -} - -#define COLOR_STOP_EPSILON 1e-6 - -static cairo_status_t -_cairo_ps_surface_emit_pattern_stops (cairo_ps_surface_t *surface, - cairo_gradient_pattern_t *pattern) -{ - cairo_ps_color_stop_t *allstops, *stops; - unsigned int i, n_stops; - - allstops = _cairo_malloc_ab ((pattern->n_stops + 2), sizeof (cairo_ps_color_stop_t)); - if (allstops == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - stops = &allstops[1]; - n_stops = pattern->n_stops; - - for (i = 0; i < n_stops; i++) { - cairo_gradient_stop_t *stop = &pattern->stops[i]; - - stops[i].color[0] = stop->color.red; - stops[i].color[1] = stop->color.green; - stops[i].color[2] = stop->color.blue; - stops[i].color[3] = stop->color.alpha; - stops[i].offset = pattern->stops[i].offset; - } - - if (pattern->base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.extend == CAIRO_EXTEND_REFLECT) { - if (stops[0].offset > COLOR_STOP_EPSILON) { - if (pattern->base.extend == CAIRO_EXTEND_REFLECT) - memcpy (allstops, stops, sizeof (cairo_ps_color_stop_t)); - else - calc_gradient_color (&allstops[0], &stops[0], &stops[n_stops-1]); - stops = allstops; - n_stops++; - } - stops[0].offset = 0.0; - - if (stops[n_stops-1].offset < 1.0 - COLOR_STOP_EPSILON) { - if (pattern->base.extend == CAIRO_EXTEND_REFLECT) { - memcpy (&stops[n_stops], - &stops[n_stops - 1], - sizeof (cairo_ps_color_stop_t)); - } else { - calc_gradient_color (&stops[n_stops], &stops[0], &stops[n_stops-1]); - } - n_stops++; - } - stops[n_stops-1].offset = 1.0; - } - - for (i = 0; i < n_stops; i++) { - double red, green, blue; - cairo_color_t color; - - _cairo_color_init_rgba (&color, - stops[i].color[0], - stops[i].color[1], - stops[i].color[2], - stops[i].color[3]); - _cairo_ps_surface_flatten_transparency (surface, &color, - &red, &green, &blue); - stops[i].color[0] = red; - stops[i].color[1] = green; - stops[i].color[2] = blue; - } - - _cairo_output_stream_printf (surface->stream, - "/CairoFunction\n"); - if (n_stops == 2) { - /* no need for stitched function */ - _cairo_ps_surface_emit_linear_colorgradient (surface, &stops[0], &stops[1]); - } else { - /* multiple stops: stitch. XXX possible optimization: regulary spaced - * stops do not require stitching. XXX */ - _cairo_ps_surface_emit_stitched_colorgradient (surface, n_stops,stops); - } - _cairo_output_stream_printf (surface->stream, - "def\n"); - - free (allstops); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_repeating_function (cairo_ps_surface_t *surface, - cairo_gradient_pattern_t *pattern, - int begin, - int end) -{ - _cairo_output_stream_printf (surface->stream, - "/CairoFunction\n" - "<< /FunctionType 3\n" - " /Domain [ %d %d ]\n" - " /Functions [ %d {CairoFunction} repeat ]\n" - " /Bounds [ %d 1 %d {} for ]\n", - begin, - end, - end - begin, - begin + 1, - end - 1); - - if (pattern->base.extend == CAIRO_EXTEND_REFLECT) { - _cairo_output_stream_printf (surface->stream, " /Encode [ %d 1 %d { 2 mod 0 eq {0 1} {1 0} ifelse } for ]\n", - begin, - end - 1); - } else { - _cairo_output_stream_printf (surface->stream, " /Encode [ %d 1 %d { pop 0 1 } for ]\n", - begin, - end - 1); - } - - _cairo_output_stream_printf (surface->stream, ">> def\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_ps_surface_emit_linear_pattern (cairo_ps_surface_t *surface, - cairo_linear_pattern_t *pattern) -{ - double x1, y1, x2, y2; - double _x1, _y1, _x2, _y2; - cairo_matrix_t pat_to_ps; - cairo_extend_t extend; - cairo_status_t status; - cairo_gradient_pattern_t *gradient = &pattern->base; - double first_stop, last_stop; - int repeat_begin = 0, repeat_end = 1; - - if (pattern->base.n_stops == 0) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - extend = cairo_pattern_get_extend (&pattern->base.base); - - pat_to_ps = pattern->base.base.matrix; - status = cairo_matrix_invert (&pat_to_ps); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&pat_to_ps, &pat_to_ps, &surface->cairo_to_ps); - first_stop = gradient->stops[0].offset; - last_stop = gradient->stops[gradient->n_stops - 1].offset; - - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { - double dx, dy; - int x_rep = 0, y_rep = 0; - - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - cairo_matrix_transform_point (&pat_to_ps, &x1, &y1); - - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - cairo_matrix_transform_point (&pat_to_ps, &x2, &y2); - - dx = fabs (x2 - x1); - dy = fabs (y2 - y1); - if (dx > 1e-6) - x_rep = (int) ceil (surface->width/dx); - if (dy > 1e-6) - y_rep = (int) ceil (surface->height/dy); - - repeat_end = MAX (x_rep, y_rep); - repeat_begin = -repeat_end; - first_stop = repeat_begin; - last_stop = repeat_end; - } - - /* PS requires the first and last stop to be the same as the line - * coordinates. For repeating patterns this moves the line - * coordinates out to the begin/end of the repeating function. For - * non repeating patterns this may move the line coordinates in if - * there are not stops at offset 0 and 1. */ - x1 = _cairo_fixed_to_double (pattern->p1.x); - y1 = _cairo_fixed_to_double (pattern->p1.y); - x2 = _cairo_fixed_to_double (pattern->p2.x); - y2 = _cairo_fixed_to_double (pattern->p2.y); - - _x1 = x1 + (x2 - x1)*first_stop; - _y1 = y1 + (y2 - y1)*first_stop; - _x2 = x1 + (x2 - x1)*last_stop; - _y2 = y1 + (y2 - y1)*last_stop; - - x1 = _x1; - x2 = _x2; - y1 = _y1; - y2 = _y2; - - /* For EXTEND_NONE and EXTEND_PAD if there are only two stops a - * Type 2 function is used by itself without a stitching - * function. Type 2 functions always have the domain [0 1] */ - if ((pattern->base.base.extend == CAIRO_EXTEND_NONE || - pattern->base.base.extend == CAIRO_EXTEND_PAD) && - gradient->n_stops == 2) { - first_stop = 0.0; - last_stop = 1.0; - } - - status = _cairo_ps_surface_emit_pattern_stops (surface, - &pattern->base); - if (status) - return status; - - if (pattern->base.base.extend == CAIRO_EXTEND_REPEAT || - pattern->base.base.extend == CAIRO_EXTEND_REFLECT) { - status = _cairo_ps_surface_emit_repeating_function (surface, - &pattern->base, - repeat_begin, - repeat_end); - if (status) - return status; - } - - _cairo_output_stream_printf (surface->stream, - "<< /PatternType 2\n" - " /Shading\n" - " << /ShadingType 2\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f ]\n" - " /Domain [ %f %f ]\r\n" - " /Function CairoFunction\n", - x1, y1, x2, y2, - first_stop, last_stop); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->stream, - " /Extend [ true true ]\r\n"); - } else { - _cairo_output_stream_printf (surface->stream, - " /Extend [ false false ]\r\n"); - } - - _cairo_output_stream_printf (surface->stream, - " >>\n" - ">>\n"); - _cairo_output_stream_printf (surface->stream, - "[ %f %f %f %f %f %f ]\n", - pat_to_ps.xx, pat_to_ps.yx, - pat_to_ps.xy, pat_to_ps.yy, - pat_to_ps.x0, pat_to_ps.y0); - _cairo_output_stream_printf (surface->stream, - "makepattern setpattern\n"); - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_radial_pattern (cairo_ps_surface_t *surface, - cairo_radial_pattern_t *pattern) -{ - double x1, y1, x2, y2, r1, r2; - cairo_matrix_t pat_to_ps; - cairo_extend_t extend; - cairo_status_t status; - - if (pattern->base.n_stops == 0) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - extend = cairo_pattern_get_extend (&pattern->base.base); - - pat_to_ps = pattern->base.base.matrix; - status = cairo_matrix_invert (&pat_to_ps); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&pat_to_ps, &pat_to_ps, &surface->cairo_to_ps); - x1 = _cairo_fixed_to_double (pattern->c1.x); - y1 = _cairo_fixed_to_double (pattern->c1.y); - r1 = _cairo_fixed_to_double (pattern->r1); - x2 = _cairo_fixed_to_double (pattern->c2.x); - y2 = _cairo_fixed_to_double (pattern->c2.y); - r2 = _cairo_fixed_to_double (pattern->r2); - - status = _cairo_ps_surface_emit_pattern_stops (surface, &pattern->base); - if (status) - return status; - - _cairo_output_stream_printf (surface->stream, - "<< /PatternType 2\n" - " /Shading\n" - " << /ShadingType 3\n" - " /ColorSpace /DeviceRGB\n" - " /Coords [ %f %f %f %f %f %f ]\n" - " /Function CairoFunction\n", - x1, y1, r1, x2, y2, r2); - - if (extend == CAIRO_EXTEND_PAD) { - _cairo_output_stream_printf (surface->stream, - " /Extend [ true true ]\r\n"); - } else { - _cairo_output_stream_printf (surface->stream, - " /Extend [ false false ]\r\n"); - } - - _cairo_output_stream_printf (surface->stream, - " >>\n" - ">>\n"); - - _cairo_output_stream_printf (surface->stream, - "[ %f %f %f %f %f %f ]\n", - pat_to_ps.xx, pat_to_ps.yx, - pat_to_ps.xy, pat_to_ps.yy, - pat_to_ps.x0, pat_to_ps.y0); - _cairo_output_stream_printf (surface->stream, - "makepattern setpattern\n"); - - return status; -} - -static cairo_status_t -_cairo_ps_surface_emit_pattern (cairo_ps_surface_t *surface, - cairo_pattern_t *pattern, - cairo_operator_t op) -{ - /* FIXME: We should keep track of what pattern is currently set in - * the postscript file and only emit code if we're setting a - * different pattern. */ - cairo_status_t status; - - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: - _cairo_ps_surface_emit_solid_pattern (surface, (cairo_solid_pattern_t *) pattern); - break; - - case CAIRO_PATTERN_TYPE_SURFACE: - status = _cairo_ps_surface_emit_surface_pattern (surface, - (cairo_surface_pattern_t *) pattern, - op); - if (status) - return status; - break; - - case CAIRO_PATTERN_TYPE_LINEAR: - status = _cairo_ps_surface_emit_linear_pattern (surface, - (cairo_linear_pattern_t *) pattern); - if (status) - return status; - break; - - case CAIRO_PATTERN_TYPE_RADIAL: - status = _cairo_ps_surface_emit_radial_pattern (surface, - (cairo_radial_pattern_t *) pattern); - if (status) - return status; - break; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_ps_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_ps_surface_t *surface = abstract_surface; - cairo_output_stream_t *stream = surface->stream; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - -#if DEBUG_PS - _cairo_output_stream_printf (stream, - "%% _cairo_ps_surface_intersect_clip_path\n"); -#endif - - if (path == NULL) { - _cairo_output_stream_printf (stream, "Q q\n"); - return CAIRO_STATUS_SUCCESS; - } - - return _cairo_pdf_operators_clip (&surface->pdf_operators, - path, - fill_rule); -} - -static cairo_int_status_t -_cairo_ps_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_ps_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - - /* XXX: The conversion to integers here is pretty bogus, (not to - * mention the aribitray limitation of width to a short(!). We - * may need to come up with a better interface for get_extents. - */ - rectangle->width = (int) ceil (surface->width); - rectangle->height = (int) ceil (surface->height); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_ps_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - _cairo_font_options_init_default (options); - - cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); -} - -static cairo_int_status_t -_cairo_ps_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_ps_surface_t *surface = abstract_surface; - cairo_output_stream_t *stream = surface->stream; - cairo_rectangle_int_t extents; - cairo_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_ps_surface_analyze_operation (surface, op, source); - - assert (_cairo_ps_surface_operation_supported (surface, op, source)); - -#if DEBUG_PS - _cairo_output_stream_printf (stream, - "%% _cairo_ps_surface_paint\n"); -#endif - - status = _cairo_surface_get_extents (&surface->base, &extents); - if (status) - return status; - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE && - (source->extend == CAIRO_EXTEND_NONE || - source->extend == CAIRO_EXTEND_PAD)) - { - _cairo_output_stream_printf (stream, "q 0 0 %d %d rectclip\n", - extents.width, - extents.height); - - status = _cairo_ps_surface_paint_surface (surface, - (cairo_surface_pattern_t *) source, - op); - if (status) - return status; - - _cairo_output_stream_printf (stream, "Q\n"); - } else { - status = _cairo_ps_surface_emit_pattern (surface, source, op); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - - if (status) - return status; - - _cairo_output_stream_printf (stream, "0 0 %d %d rectfill\n", - extents.width, - extents.height); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_ps_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_ps_surface_t *surface = abstract_surface; - cairo_int_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_ps_surface_analyze_operation (surface, op, source); - - assert (_cairo_ps_surface_operation_supported (surface, op, source)); - -#if DEBUG_PS - _cairo_output_stream_printf (surface->stream, - "%% _cairo_ps_surface_stroke\n"); -#endif - - status = _cairo_ps_surface_emit_pattern (surface, source, op); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - - return _cairo_pdf_operators_stroke (&surface->pdf_operators, - path, - style, - ctm, - ctm_inverse); -} - -static cairo_int_status_t -_cairo_ps_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_ps_surface_t *surface = abstract_surface; - cairo_int_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_ps_surface_analyze_operation (surface, op, source); - - assert (_cairo_ps_surface_operation_supported (surface, op, source)); - -#if DEBUG_PS - _cairo_output_stream_printf (surface->stream, - "%% _cairo_ps_surface_fill\n"); -#endif - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE && - (source->extend == CAIRO_EXTEND_NONE || - source->extend == CAIRO_EXTEND_PAD)) - { - _cairo_output_stream_printf (surface->stream, "q\n"); - - status = _cairo_pdf_operators_clip (&surface->pdf_operators, - path, - fill_rule); - if (status) - return status; - - status = _cairo_ps_surface_paint_surface (surface, - (cairo_surface_pattern_t *) source, - op); - if (status) - return status; - - _cairo_output_stream_printf (surface->stream, "Q\n"); - } else { - status = _cairo_ps_surface_emit_pattern (surface, source, op); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - - if (status) - return status; - - status = _cairo_pdf_operators_fill (&surface->pdf_operators, - path, - fill_rule); - } - - return status; -} - -static cairo_int_status_t -_cairo_ps_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_ps_surface_t *surface = abstract_surface; - cairo_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_ps_surface_analyze_operation (surface, op, source); - - assert (_cairo_ps_surface_operation_supported (surface, op, source)); - -#if DEBUG_PS - _cairo_output_stream_printf (surface->stream, - "%% _cairo_ps_surface_show_glyphs\n"); -#endif - - if (num_glyphs <= 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_ps_surface_emit_pattern (surface, source, op); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - - if (status) - return status; - - return _cairo_pdf_operators_show_glyphs (&surface->pdf_operators, - glyphs, - num_glyphs, - scaled_font); -} - -static void -_cairo_ps_surface_set_paginated_mode (void *abstract_surface, - cairo_paginated_mode_t paginated_mode) -{ - cairo_ps_surface_t *surface = abstract_surface; - - surface->paginated_mode = paginated_mode; -} - -static cairo_int_status_t -_cairo_ps_surface_set_bounding_box (void *abstract_surface, - cairo_box_t *bbox) -{ - cairo_ps_surface_t *surface = abstract_surface; - int i, num_comments; - char **comments; - int x1, y1, x2, y2; - - if (surface->eps) { - x1 = (int) floor (_cairo_fixed_to_double (bbox->p1.x)); - y1 = (int) floor (surface->height - _cairo_fixed_to_double (bbox->p2.y)); - x2 = (int) ceil (_cairo_fixed_to_double (bbox->p2.x)); - y2 = (int) ceil (surface->height - _cairo_fixed_to_double (bbox->p1.y)); - } else { - x1 = 0; - y1 = 0; - x2 = (int) ceil (surface->width); - y2 = (int) ceil (surface->height); - } - - _cairo_output_stream_printf (surface->stream, - "%%%%Page: %d %d\n", - surface->num_pages, - surface->num_pages); - - _cairo_output_stream_printf (surface->stream, - "%%%%BeginPageSetup\n"); - - num_comments = _cairo_array_num_elements (&surface->dsc_page_setup_comments); - comments = _cairo_array_index (&surface->dsc_page_setup_comments, 0); - for (i = 0; i < num_comments; i++) { - _cairo_output_stream_printf (surface->stream, - "%s\n", comments[i]); - free (comments[i]); - comments[i] = NULL; - } - _cairo_array_truncate (&surface->dsc_page_setup_comments, 0); - - _cairo_output_stream_printf (surface->stream, - "%%%%PageBoundingBox: %d %d %d %d\n", - x1, y1, x2, y2); - - _cairo_output_stream_printf (surface->stream, - "%%%%EndPageSetup\n" - "q\n"); - - if (surface->num_pages == 1) { - surface->bbox_x1 = x1; - surface->bbox_y1 = y1; - surface->bbox_x2 = x2; - surface->bbox_y2 = y2; - } else { - if (x1 < surface->bbox_x1) - surface->bbox_x1 = x1; - if (y1 < surface->bbox_y1) - surface->bbox_y1 = y1; - if (x2 > surface->bbox_x2) - surface->bbox_x2 = x2; - if (y2 > surface->bbox_y2) - surface->bbox_y2 = y2; - } - - return _cairo_output_stream_get_status (surface->stream); -} - -static const cairo_surface_backend_t cairo_ps_surface_backend = { - CAIRO_SURFACE_TYPE_PS, - _cairo_ps_surface_create_similar, - _cairo_ps_surface_finish, - NULL, /* acquire_source_image */ - NULL, /* release_source_image */ - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* cairo_ps_surface_copy_page */ - _cairo_ps_surface_show_page, - NULL, /* set_clip_region */ - _cairo_ps_surface_intersect_clip_path, - _cairo_ps_surface_get_extents, - NULL, /* old_show_glyphs */ - _cairo_ps_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - /* Here are the drawing functions */ - - _cairo_ps_surface_paint, /* paint */ - NULL, /* mask */ - _cairo_ps_surface_stroke, - _cairo_ps_surface_fill, - _cairo_ps_surface_show_glyphs, - NULL, /* snapshot */ -}; - -static const cairo_paginated_surface_backend_t cairo_ps_surface_paginated_backend = { - _cairo_ps_surface_start_page, - _cairo_ps_surface_set_paginated_mode, - _cairo_ps_surface_set_bounding_box, -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-ps-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ps-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-ps-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-ps-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Kristian Høgsberg - * Keith Packard - */ - -#ifndef CAIRO_PS_SURFACE_PRIVATE_H -#define CAIRO_PS_SURFACE_PRIVATE_H - -#include "cairo-ps.h" - -#include "cairo-surface-private.h" -#include "cairo-pdf-operators-private.h" - -typedef struct cairo_ps_surface { - cairo_surface_t base; - - /* Here final_stream corresponds to the stream/file passed to - * cairo_ps_surface_create surface is built. Meanwhile stream is a - * temporary stream in which the file output is built, (so that - * the header can be built and inserted into the target stream - * before the contents of the temporary stream are copied). */ - cairo_output_stream_t *final_stream; - - FILE *tmpfile; - cairo_output_stream_t *stream; - - cairo_bool_t eps; - cairo_content_t content; - double width; - double height; - int bbox_x1, bbox_y1, bbox_x2, bbox_y2; - cairo_matrix_t cairo_to_ps; - cairo_image_surface_t *image; - void *image_extra; - cairo_bool_t use_string_datasource; - - int num_pages; - - cairo_paginated_mode_t paginated_mode; - - cairo_bool_t force_fallbacks; - - cairo_scaled_font_subsets_t *font_subsets; - - cairo_array_t dsc_header_comments; - cairo_array_t dsc_setup_comments; - cairo_array_t dsc_page_setup_comments; - - cairo_array_t *dsc_comment_target; - - cairo_ps_level_t ps_level; - cairo_ps_level_t ps_level_used; - - cairo_pdf_operators_t pdf_operators; - cairo_surface_t *paginated_surface; -} cairo_ps_surface_t; - -#endif /* CAIRO_PS_SURFACE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-font.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-font.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-font.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-font.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,794 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright � 2008 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation. - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#include "cairoint.h" - -#include - -#include "cairo-quartz.h" -#include "cairo-quartz-private.h" - -/* CreateWithFontName exists in 10.5, but not in 10.4; CreateWithName isn't public in 10.4 */ -static CGFontRef (*CGFontCreateWithFontNamePtr) (CFStringRef) = NULL; -static CGFontRef (*CGFontCreateWithNamePtr) (const char *) = NULL; - -/* These aren't public before 10.5, and some have different names in 10.4 */ -static int (*CGFontGetUnitsPerEmPtr) (CGFontRef) = NULL; -static bool (*CGFontGetGlyphAdvancesPtr) (CGFontRef, const CGGlyph[], size_t, int[]) = NULL; -static bool (*CGFontGetGlyphBBoxesPtr) (CGFontRef, const CGGlyph[], size_t, CGRect[]) = NULL; -static CGRect (*CGFontGetFontBBoxPtr) (CGFontRef) = NULL; - -/* Not public, but present */ -static void (*CGFontGetGlyphsForUnicharsPtr) (CGFontRef, const UniChar[], const CGGlyph[], size_t) = NULL; - -/* Not public in the least bit */ -static CGPathRef (*CGFontGetGlyphPathPtr) (CGFontRef fontRef, CGAffineTransform *textTransform, int unknown, CGGlyph glyph) = NULL; - -/* CGFontGetHMetrics isn't public, but the other functions are public/present in 10.5 */ -typedef struct { - int ascent; - int descent; - int leading; -} quartz_CGFontMetrics; -static quartz_CGFontMetrics* (*CGFontGetHMetricsPtr) (CGFontRef fontRef) = NULL; -static int (*CGFontGetAscentPtr) (CGFontRef fontRef) = NULL; -static int (*CGFontGetDescentPtr) (CGFontRef fontRef) = NULL; -static int (*CGFontGetLeadingPtr) (CGFontRef fontRef) = NULL; - -static cairo_bool_t _cairo_quartz_font_symbol_lookup_done = FALSE; -static cairo_bool_t _cairo_quartz_font_symbols_present = FALSE; - -static void -quartz_font_ensure_symbols(void) -{ - if (_cairo_quartz_font_symbol_lookup_done) - return; - - /* Look for the 10.5 versions first */ - CGFontGetGlyphBBoxesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphBBoxes"); - if (!CGFontGetGlyphBBoxesPtr) - CGFontGetGlyphBBoxesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphBoundingBoxes"); - - CGFontGetGlyphsForUnicharsPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphsForUnichars"); - if (!CGFontGetGlyphsForUnicharsPtr) - CGFontGetGlyphsForUnicharsPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphsForUnicodes"); - - CGFontGetFontBBoxPtr = dlsym(RTLD_DEFAULT, "CGFontGetFontBBox"); - - /* We just need one of these two */ - CGFontCreateWithFontNamePtr = dlsym(RTLD_DEFAULT, "CGFontCreateWithFontName"); - CGFontCreateWithNamePtr = dlsym(RTLD_DEFAULT, "CGFontCreateWithName"); - - /* These have the same name in 10.4 and 10.5 */ - CGFontGetUnitsPerEmPtr = dlsym(RTLD_DEFAULT, "CGFontGetUnitsPerEm"); - CGFontGetGlyphAdvancesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphAdvances"); - CGFontGetGlyphPathPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphPath"); - - CGFontGetHMetricsPtr = dlsym(RTLD_DEFAULT, "CGFontGetHMetrics"); - CGFontGetAscentPtr = dlsym(RTLD_DEFAULT, "CGFontGetAscent"); - CGFontGetDescentPtr = dlsym(RTLD_DEFAULT, "CGFontGetDescent"); - CGFontGetLeadingPtr = dlsym(RTLD_DEFAULT, "CGFontGetLeading"); - - if ((CGFontCreateWithFontNamePtr || CGFontCreateWithNamePtr) && - CGFontGetGlyphBBoxesPtr && - CGFontGetGlyphsForUnicharsPtr && - CGFontGetUnitsPerEmPtr && - CGFontGetGlyphAdvancesPtr && - CGFontGetGlyphPathPtr && - (CGFontGetHMetricsPtr || (CGFontGetAscentPtr && CGFontGetDescentPtr && CGFontGetLeadingPtr))) - _cairo_quartz_font_symbols_present = TRUE; - - _cairo_quartz_font_symbol_lookup_done = TRUE; -} - -typedef struct _cairo_quartz_font_face cairo_quartz_font_face_t; -typedef struct _cairo_quartz_scaled_font cairo_quartz_scaled_font_t; - -struct _cairo_quartz_scaled_font { - cairo_scaled_font_t base; -}; - -struct _cairo_quartz_font_face { - cairo_font_face_t base; - - CGFontRef cgFont; -}; - -/** - ** font face backend - **/ - -static void -_cairo_quartz_font_face_destroy (void *abstract_face) -{ - cairo_quartz_font_face_t *font_face = (cairo_quartz_font_face_t*) abstract_face; - - CGFontRelease (font_face->cgFont); -} - -static cairo_status_t -_cairo_quartz_font_face_scaled_font_create (void *abstract_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **font_out) -{ - cairo_quartz_font_face_t *font_face = abstract_face; - cairo_quartz_scaled_font_t *font = NULL; - cairo_status_t status; - cairo_font_extents_t fs_metrics; - double ems; - CGRect bbox; - - quartz_font_ensure_symbols(); - if (!_cairo_quartz_font_symbols_present) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font = malloc(sizeof(cairo_quartz_scaled_font_t)); - if (font == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memset (font, 0, sizeof(cairo_quartz_scaled_font_t)); - - status = _cairo_scaled_font_init (&font->base, - &font_face->base, font_matrix, ctm, options, - &cairo_quartz_scaled_font_backend); - if (status) - goto FINISH; - - ems = CGFontGetUnitsPerEmPtr (font_face->cgFont); - - /* initialize metrics */ - if (CGFontGetFontBBoxPtr && CGFontGetAscentPtr) { - fs_metrics.ascent = (CGFontGetAscentPtr (font_face->cgFont) / ems); - fs_metrics.descent = - (CGFontGetDescentPtr (font_face->cgFont) / ems); - fs_metrics.height = fs_metrics.ascent + fs_metrics.descent + - (CGFontGetLeadingPtr (font_face->cgFont) / ems); - - bbox = CGFontGetFontBBoxPtr (font_face->cgFont); - fs_metrics.max_x_advance = CGRectGetMaxX(bbox) / ems; - fs_metrics.max_y_advance = 0.0; - } else { - CGGlyph wGlyph; - UniChar u; - - quartz_CGFontMetrics *m; - m = CGFontGetHMetricsPtr (font_face->cgFont); - - fs_metrics.ascent = (m->ascent / ems); - fs_metrics.descent = - (m->descent / ems); - fs_metrics.height = fs_metrics.ascent + fs_metrics.descent + (m->leading / ems); - - /* We kind of have to guess here; W's big, right? */ - u = (UniChar) 'W'; - CGFontGetGlyphsForUnicharsPtr (font_face->cgFont, &u, &wGlyph, 1); - if (wGlyph && CGFontGetGlyphBBoxesPtr (font_face->cgFont, &wGlyph, 1, &bbox)) { - fs_metrics.max_x_advance = CGRectGetMaxX(bbox) / ems; - fs_metrics.max_y_advance = 0.0; - } else { - fs_metrics.max_x_advance = 0.0; - fs_metrics.max_y_advance = 0.0; - } - } - - status = _cairo_scaled_font_set_metrics (&font->base, &fs_metrics); - -FINISH: - if (status != CAIRO_STATUS_SUCCESS) { - free (font); - } else { - *font_out = (cairo_scaled_font_t*) font; - } - - return status; -} - -static const cairo_font_face_backend_t _cairo_quartz_font_face_backend = { - CAIRO_FONT_TYPE_QUARTZ, - _cairo_quartz_font_face_destroy, - _cairo_quartz_font_face_scaled_font_create -}; - -/** - * cairo_quartz_font_face_create_for_cgfont - * @font: a #CGFontRef obtained through a method external to cairo. - * - * Creates a new font for the Quartz font backend based on a - * #CGFontRef. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - * - * Since: 1.6 - */ -cairo_font_face_t * -cairo_quartz_font_face_create_for_cgfont (CGFontRef font) -{ - cairo_quartz_font_face_t *font_face; - - quartz_font_ensure_symbols(); - - font_face = malloc (sizeof (cairo_quartz_font_face_t)); - if (!font_face) { - _cairo_error (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_face_t *)&_cairo_font_face_nil; - } - - font_face->cgFont = CGFontRetain (font); - - _cairo_font_face_init (&font_face->base, &_cairo_quartz_font_face_backend); - - return &font_face->base; -} - -/** - ** scaled font backend - **/ - -static cairo_quartz_font_face_t * -_cairo_quartz_scaled_to_face (void *abstract_font) -{ - cairo_quartz_scaled_font_t *sfont = (cairo_quartz_scaled_font_t*) abstract_font; - cairo_font_face_t *font_face = cairo_scaled_font_get_font_face (&sfont->base); - if (!font_face || font_face->backend->type != CAIRO_FONT_TYPE_QUARTZ) - return NULL; - - return (cairo_quartz_font_face_t*) font_face; -} - -static cairo_status_t -_cairo_quartz_font_create_toy(cairo_toy_font_face_t *toy_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **font_out) -{ - const char *family = toy_face->family; - char *full_name = malloc(strlen(family) + 64); // give us a bit of room to tack on Bold, Oblique, etc. - CFStringRef cgFontName = NULL; - CGFontRef cgFont = NULL; - int loop; - - cairo_status_t status; - cairo_font_face_t *face; - cairo_scaled_font_t *scaled_font; - - quartz_font_ensure_symbols(); - if (!_cairo_quartz_font_symbols_present) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - /* handle CSS-ish faces */ - if (!strcmp(family, "serif") || !strcmp(family, "Times Roman")) - family = "Times"; - else if (!strcmp(family, "sans-serif") || !strcmp(family, "sans")) - family = "Helvetica"; - else if (!strcmp(family, "cursive")) - family = "Apple Chancery"; - else if (!strcmp(family, "fantasy")) - family = "Papyrus"; - else if (!strcmp(family, "monospace") || !strcmp(family, "mono")) - family = "Courier"; - - /* Try to build up the full name, e.g. "Helvetica Bold Oblique" first, - * then drop the bold, then drop the slant, then drop both.. finally - * just use "Helvetica". And if Helvetica doesn't exist, give up. - */ - for (loop = 0; loop < 5; loop++) { - if (loop == 4) - family = "Helvetica"; - - strcpy (full_name, family); - - if (loop < 3 && (loop & 1) == 0) { - if (toy_face->weight == CAIRO_FONT_WEIGHT_BOLD) - strcat (full_name, " Bold"); - } - - if (loop < 3 && (loop & 2) == 0) { - if (toy_face->slant == CAIRO_FONT_SLANT_ITALIC) - strcat (full_name, " Italic"); - else if (toy_face->slant == CAIRO_FONT_SLANT_OBLIQUE) - strcat (full_name, " Oblique"); - } - - if (CGFontCreateWithFontNamePtr) { - cgFontName = CFStringCreateWithCString (NULL, full_name, kCFStringEncodingASCII); - cgFont = CGFontCreateWithFontNamePtr (cgFontName); - CFRelease (cgFontName); - } else { - cgFont = CGFontCreateWithNamePtr (full_name); - } - - if (cgFont) - break; - } - - if (!cgFont) { - /* Give up */ - return CAIRO_STATUS_NO_MEMORY; - } - - face = cairo_quartz_font_face_create_for_cgfont (cgFont); - if (face->status) - return face->status; - - status = _cairo_quartz_font_face_scaled_font_create (face, - font_matrix, ctm, - options, - &scaled_font); - cairo_font_face_destroy (face); - if (status) - return status; - - *font_out = scaled_font; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_quartz_font_fini(void *abstract_font) -{ -} - -#define INVALID_GLYPH 0x00 - -static inline CGGlyph -_cairo_quartz_scaled_glyph_index (cairo_scaled_glyph_t *scaled_glyph) { - unsigned long index = _cairo_scaled_glyph_index (scaled_glyph); - if (index > 0xffff) - return INVALID_GLYPH; - return (CGGlyph) index; -} - -static inline cairo_status_t -_cairo_matrix_to_unit_quartz_matrix (const cairo_matrix_t *m, CGAffineTransform *txout, - double *xout, double *yout) -{ - CGAffineTransform transform; - double xscale, yscale; - cairo_status_t status; - - status = _cairo_matrix_compute_scale_factors (m, &xscale, &yscale, 1); - if (status) - return status; - - transform = CGAffineTransformMake (m->xx, - m->yx, - - m->xy, m->yy, - 0.0f, 0.0f); - if (xout) - *xout = xscale; - if (yout) - *yout = yscale; - - if (xscale) - xscale = 1.0 / xscale; - if (yscale) - yscale = 1.0 / yscale; - - *txout = CGAffineTransformScale (transform, xscale, yscale); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_quartz_init_glyph_metrics (cairo_quartz_scaled_font_t *font, - cairo_scaled_glyph_t *scaled_glyph) -{ - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - - cairo_quartz_font_face_t *font_face = _cairo_quartz_scaled_to_face(font); - cairo_text_extents_t extents = {0, 0, 0, 0, 0, 0}; - CGAffineTransform textMatrix; - CGGlyph glyph = _cairo_quartz_scaled_glyph_index (scaled_glyph); - int advance; - CGRect bbox; - double emscale = CGFontGetUnitsPerEmPtr (font_face->cgFont); - double xscale, yscale; - double xmin, ymin, xmax, ymax; - - if (glyph == INVALID_GLYPH) - goto FAIL; - - if (!CGFontGetGlyphAdvancesPtr (font_face->cgFont, &glyph, 1, &advance) || - !CGFontGetGlyphBBoxesPtr (font_face->cgFont, &glyph, 1, &bbox)) - goto FAIL; - - status = _cairo_matrix_compute_scale_factors (&font->base.scale, - &xscale, &yscale, 1); - if (status) - goto FAIL; - - bbox = CGRectMake (bbox.origin.x / emscale, - bbox.origin.y / emscale, - bbox.size.width / emscale, - bbox.size.height / emscale); - - /* Should we want to always integer-align glyph extents, we can do so in this way */ -#if 0 - { - CGAffineTransform textMatrix; - textMatrix = CGAffineTransformMake (font->base.scale.xx, - -font->base.scale.yx, - -font->base.scale.xy, - font->base.scale.yy, - 0.0f, 0.0f); - - bbox = CGRectApplyAffineTransform (bbox, textMatrix); - bbox = CGRectIntegral (bbox); - bbox = CGRectApplyAffineTransform (bbox, CGAffineTransformInvert (textMatrix)); - } -#endif - -#if 0 - fprintf (stderr, "[0x%04x] bbox: %f %f %f %f\n", glyph, - bbox.origin.x / emscale, bbox.origin.y / emscale, - bbox.size.width / emscale, bbox.size.height / emscale); -#endif - - xmin = CGRectGetMinX(bbox); - ymin = CGRectGetMinY(bbox); - xmax = CGRectGetMaxX(bbox); - ymax = CGRectGetMaxY(bbox); - - extents.x_bearing = xmin; - extents.y_bearing = - ymax; - extents.width = xmax - xmin; - extents.height = ymax - ymin; - - extents.x_advance = (double) advance / emscale; - extents.y_advance = 0.0; - -#if 0 - fprintf (stderr, "[0x%04x] extents: bearings: %f %f dim: %f %f adv: %f\n\n", glyph, - extents.x_bearing, extents.y_bearing, extents.width, extents.height, extents.x_advance); -#endif - - FAIL: - _cairo_scaled_glyph_set_metrics (scaled_glyph, - &font->base, - &extents); - - return status; -} - -static void -_cairo_quartz_path_apply_func (void *info, const CGPathElement *el) -{ - cairo_path_fixed_t *path = (cairo_path_fixed_t *) info; - - switch (el->type) { - case kCGPathElementMoveToPoint: - _cairo_path_fixed_move_to (path, - _cairo_fixed_from_double(el->points[0].x), - _cairo_fixed_from_double(el->points[0].y)); - break; - case kCGPathElementAddLineToPoint: - _cairo_path_fixed_line_to (path, - _cairo_fixed_from_double(el->points[0].x), - _cairo_fixed_from_double(el->points[0].y)); - break; - case kCGPathElementAddQuadCurveToPoint: { - cairo_fixed_t fx, fy; - double x, y; - if (!_cairo_path_fixed_get_current_point (path, &fx, &fy)) - fx = fy = 0; - x = _cairo_fixed_to_double (fx); - y = _cairo_fixed_to_double (fy); - - _cairo_path_fixed_curve_to (path, - _cairo_fixed_from_double((x + el->points[0].x * 2.0) / 3.0), - _cairo_fixed_from_double((y + el->points[0].y * 2.0) / 3.0), - _cairo_fixed_from_double((el->points[0].x * 2.0 + el->points[1].x) / 3.0), - _cairo_fixed_from_double((el->points[0].y * 2.0 + el->points[1].y) / 3.0), - _cairo_fixed_from_double(el->points[1].x), - _cairo_fixed_from_double(el->points[1].y)); - } - break; - case kCGPathElementAddCurveToPoint: - _cairo_path_fixed_curve_to (path, - _cairo_fixed_from_double(el->points[0].x), - _cairo_fixed_from_double(el->points[0].y), - _cairo_fixed_from_double(el->points[1].x), - _cairo_fixed_from_double(el->points[1].y), - _cairo_fixed_from_double(el->points[2].x), - _cairo_fixed_from_double(el->points[2].y)); - break; - case kCGPathElementCloseSubpath: - _cairo_path_fixed_close_path (path); - break; - } -} - -static cairo_int_status_t -_cairo_quartz_init_glyph_path (cairo_quartz_scaled_font_t *font, - cairo_scaled_glyph_t *scaled_glyph) -{ - cairo_quartz_font_face_t *font_face = _cairo_quartz_scaled_to_face(font); - CGGlyph glyph = _cairo_quartz_scaled_glyph_index (scaled_glyph); - CGAffineTransform textMatrix; - CGPathRef glyphPath; - cairo_path_fixed_t *path; - - if (glyph == INVALID_GLYPH) { - _cairo_scaled_glyph_set_path (scaled_glyph, &font->base, _cairo_path_fixed_create()); - return CAIRO_STATUS_SUCCESS; - } - - textMatrix = CGAffineTransformMake (font->base.scale.xx, - -font->base.scale.yx, - -font->base.scale.xy, - font->base.scale.yy, - font->base.scale.x0, - font->base.scale.y0); - - textMatrix = CGAffineTransformConcat (textMatrix, CGAffineTransformMake (1.0, 0.0, 0.0, -1.0, 0.0, 0.0)); - - glyphPath = CGFontGetGlyphPathPtr (font_face->cgFont, &textMatrix, 0, glyph); - if (!glyphPath) - return CAIRO_INT_STATUS_UNSUPPORTED; - - path = _cairo_path_fixed_create (); - if (!path) { - CGPathRelease (glyphPath); - return _cairo_error(CAIRO_STATUS_NO_MEMORY); - } - - CGPathApply (glyphPath, path, _cairo_quartz_path_apply_func); - - CGPathRelease (glyphPath); - - _cairo_scaled_glyph_set_path (scaled_glyph, &font->base, path); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_quartz_init_glyph_surface (cairo_quartz_scaled_font_t *font, - cairo_scaled_glyph_t *scaled_glyph) -{ - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - - cairo_quartz_font_face_t *font_face = _cairo_quartz_scaled_to_face(font); - - cairo_image_surface_t *surface = NULL; - - CGGlyph glyph = _cairo_quartz_scaled_glyph_index (scaled_glyph); - - int advance; - CGRect bbox; - double width, height; - double xscale, yscale; - double emscale = CGFontGetUnitsPerEmPtr (font_face->cgFont); - - CGColorSpaceRef gray; - CGContextRef cgContext = NULL; - CGAffineTransform textMatrix; - CGRect glyphRect, glyphRectInt; - CGPoint glyphOrigin; - - //fprintf (stderr, "scaled_glyph: %p surface: %p\n", scaled_glyph, scaled_glyph->surface); - - /* Create blank 2x2 image if we don't have this character. - * Maybe we should draw a better missing-glyph slug or something, - * but this is ok for now. - */ - if (glyph == INVALID_GLYPH) { - surface = (cairo_image_surface_t*) cairo_image_surface_create (CAIRO_FORMAT_A8, 2, 2); - status = cairo_surface_status ((cairo_surface_t *) surface); - if (status) - return status; - - _cairo_scaled_glyph_set_surface (scaled_glyph, - &font->base, - surface); - return CAIRO_STATUS_SUCCESS; - } - - if (!CGFontGetGlyphAdvancesPtr (font_face->cgFont, &glyph, 1, &advance) || - !CGFontGetGlyphBBoxesPtr (font_face->cgFont, &glyph, 1, &bbox)) - { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - status = _cairo_matrix_compute_scale_factors (&font->base.scale, - &xscale, &yscale, 1); - if (status) - return status; - - textMatrix = CGAffineTransformMake (font->base.scale.xx, - -font->base.scale.yx, - -font->base.scale.xy, - font->base.scale.yy, - 0.0f, 0.0f); - glyphRect = CGRectMake (bbox.origin.x / emscale, - bbox.origin.y / emscale, - bbox.size.width / emscale, - bbox.size.height / emscale); - - glyphRect = CGRectApplyAffineTransform (glyphRect, textMatrix); - - /* Round the rectangle outwards, so that we don't have to deal - * with non-integer-pixel origins or dimensions. - */ - glyphRectInt = CGRectIntegral (glyphRect); - -#if 0 - fprintf (stderr, "glyphRect[o]: %f %f %f %f\n", - glyphRect.origin.x, glyphRect.origin.y, glyphRect.size.width, glyphRect.size.height); - fprintf (stderr, "glyphRectInt: %f %f %f %f\n", - glyphRectInt.origin.x, glyphRectInt.origin.y, glyphRectInt.size.width, glyphRectInt.size.height); -#endif - - glyphOrigin = glyphRectInt.origin; - - //textMatrix = CGAffineTransformConcat (textMatrix, CGAffineTransformInvert (ctm)); - - width = glyphRectInt.size.width; - height = glyphRectInt.size.height; - - //fprintf (stderr, "glyphRect[n]: %f %f %f %f\n", glyphRect.origin.x, glyphRect.origin.y, glyphRect.size.width, glyphRect.size.height); - - surface = (cairo_image_surface_t*) cairo_image_surface_create (CAIRO_FORMAT_A8, width, height); - if (surface->base.status) - return surface->base.status; - - gray = CGColorSpaceCreateDeviceGray (); - cgContext = CGBitmapContextCreate (surface->data, - surface->width, - surface->height, - 8, - surface->stride, - gray, - kCGImageAlphaNone); - CGColorSpaceRelease (gray); - - CGContextSetFont (cgContext, font_face->cgFont); - CGContextSetFontSize (cgContext, 1.0); - CGContextSetTextMatrix (cgContext, textMatrix); - - CGContextClearRect (cgContext, CGRectMake (0.0f, 0.0f, width, height)); - - if (font->base.options.antialias == CAIRO_ANTIALIAS_NONE) - CGContextSetShouldAntialias (cgContext, false); - - CGContextSetRGBFillColor (cgContext, 1.0, 1.0, 1.0, 1.0); - CGContextShowGlyphsAtPoint (cgContext, - glyphOrigin.x, - glyphOrigin.y, &glyph, 1); - - CGContextRelease (cgContext); - - cairo_surface_set_device_offset (&surface->base, - - glyphOrigin.x, - height + glyphOrigin.y); - - _cairo_scaled_glyph_set_surface (scaled_glyph, &font->base, surface); - - return status; -} - -static cairo_int_status_t -_cairo_quartz_font_scaled_glyph_init (void *abstract_font, - cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_glyph_info_t info) -{ - cairo_quartz_scaled_font_t *font = (cairo_quartz_scaled_font_t *) abstract_font; - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - - if (!status && (info & CAIRO_SCALED_GLYPH_INFO_METRICS)) - status = _cairo_quartz_init_glyph_metrics (font, scaled_glyph); - - if (!status && (info & CAIRO_SCALED_GLYPH_INFO_PATH)) - status = _cairo_quartz_init_glyph_path (font, scaled_glyph); - - if (!status && (info & CAIRO_SCALED_GLYPH_INFO_SURFACE)) - status = _cairo_quartz_init_glyph_surface (font, scaled_glyph); - - return status; -} - -static unsigned long -_cairo_quartz_ucs4_to_index (void *abstract_font, - uint32_t ucs4) -{ - cairo_quartz_scaled_font_t *font = (cairo_quartz_scaled_font_t*) abstract_font; - cairo_quartz_font_face_t *ffont = _cairo_quartz_scaled_to_face(font); - UniChar u = (UniChar) ucs4; - CGGlyph glyph; - - CGFontGetGlyphsForUnicharsPtr (ffont->cgFont, &u, &glyph, 1); - - return glyph; -} - -const cairo_scaled_font_backend_t cairo_quartz_scaled_font_backend = { - CAIRO_FONT_TYPE_QUARTZ, - _cairo_quartz_font_create_toy, - _cairo_quartz_font_fini, - _cairo_quartz_font_scaled_glyph_init, - NULL, /* text_to_glyphs */ - _cairo_quartz_ucs4_to_index, - NULL, /* show_glyphs */ - NULL, /* load_truetype_table */ - NULL, /* map_glyphs_to_unicode */ -}; - -/* - * private methods that the quartz surface uses - */ - -CGFontRef -_cairo_quartz_scaled_font_get_cg_font_ref (cairo_scaled_font_t *abstract_font) -{ - cairo_quartz_font_face_t *ffont = _cairo_quartz_scaled_to_face(abstract_font); - - return ffont->cgFont; -} - - -/* - * compat with old ATSUI backend - */ - -/** - * cairo_quartz_font_face_create_for_atsu_font_id - * @font_id: an ATSUFontID for the font. - * - * Creates a new font for the Quartz font backend based on an - * #ATSUFontID. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - * - * Since: 1.6 - **/ -cairo_font_face_t * -cairo_quartz_font_face_create_for_atsu_font_id (ATSUFontID font_id) -{ - ATSFontRef atsFont = FMGetATSFontRefFromFont (font_id); - CGFontRef cgFont = CGFontCreateWithPlatformFont (&atsFont); - - return cairo_quartz_font_face_create_for_cgfont (cgFont); -} - -/* This is the old name for the above function, exported for compat purposes */ -cairo_font_face_t *cairo_atsui_font_face_create_for_atsu_font_id (ATSUFontID font_id); - -cairo_font_face_t * -cairo_atsui_font_face_create_for_atsu_font_id (ATSUFontID font_id) -{ - return cairo_quartz_font_face_create_for_atsu_font_id (font_id); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006, 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation. - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_QUARTZ_H -#define CAIRO_QUARTZ_H - -#include - -#if CAIRO_HAS_QUARTZ_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_quartz_surface_create (cairo_format_t format, - unsigned int width, - unsigned int height); - -cairo_public cairo_surface_t * -cairo_quartz_surface_create_for_cg_context (CGContextRef cgContext, - unsigned int width, - unsigned int height); - -cairo_public CGContextRef -cairo_quartz_surface_get_cg_context (cairo_surface_t *surface); - -/* - * Quartz font support - */ - -#ifdef CAIRO_HAS_QUARTZ_FONT - -cairo_public cairo_font_face_t * -cairo_quartz_font_face_create_for_cgfont (CGFontRef font); - -cairo_public cairo_font_face_t * -cairo_quartz_font_face_create_for_atsu_font_id (ATSUFontID font_id); - -#endif /* CAIRO_HAS_QUARTZ_FONT */ - -CAIRO_END_DECLS - -#else - -# error Cairo was not compiled with support for the quartz backend - -#endif /* CAIRO_HAS_QUARTZ_SURFACE */ - -#endif /* CAIRO_QUARTZ_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-image.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-image.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-image.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-image.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2008 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation. - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_QUARTZ_IMAGE_H -#define CAIRO_QUARTZ_IMAGE_H - -#include - -#if CAIRO_HAS_QUARTZ_IMAGE_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_quartz_image_surface_create (cairo_surface_t *image_surface); - -cairo_public cairo_surface_t * -cairo_quartz_image_surface_get_image (cairo_surface_t *surface); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_QUARTZ_IMAGE_SURFACE */ -# error Cairo was not compiled with support for the quartz-image backend -#endif /* CAIRO_HAS_QUARTZ_IMAGE_SURFACE */ - -#endif /* CAIRO_QUARTZ_IMAGE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-image-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-image-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-image-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-image-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,377 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright � 2008 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation. - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#include "cairoint.h" - -#ifdef CAIRO_HAS_QUARTZ_IMAGE_SURFACE -#include "cairo-quartz-image.h" -#endif - -#include "cairo-quartz-private.h" - -#ifndef kCGBitmapByteOrder32Host -#define kCGBitmapByteOrder32Host 0 -#endif - -#define SURFACE_ERROR_NO_MEMORY (_cairo_surface_create_in_error(_cairo_error(CAIRO_STATUS_NO_MEMORY))) -#define SURFACE_ERROR_INVALID_FORMAT (_cairo_surface_create_in_error(_cairo_error(CAIRO_STATUS_INVALID_FORMAT))) - -CGImageRef -_cairo_quartz_create_cgimage (cairo_format_t format, - unsigned int width, - unsigned int height, - unsigned int stride, - void *data, - cairo_bool_t interpolate, - CGColorSpaceRef colorSpaceOverride, - CGDataProviderReleaseDataCallback releaseCallback, - void *releaseInfo) -{ - CGImageRef image = NULL; - CGDataProviderRef dataProvider = NULL; - CGColorSpaceRef colorSpace = colorSpaceOverride; - CGBitmapInfo bitinfo; - int bitsPerComponent, bitsPerPixel; - - switch (format) { - case CAIRO_FORMAT_ARGB32: - if (colorSpace == NULL) - colorSpace = CGColorSpaceCreateDeviceRGB(); - bitinfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host; - bitsPerComponent = 8; - bitsPerPixel = 32; - break; - - case CAIRO_FORMAT_RGB24: - if (colorSpace == NULL) - colorSpace = CGColorSpaceCreateDeviceRGB(); - bitinfo = kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host; - bitsPerComponent = 8; - bitsPerPixel = 32; - break; - - /* XXX -- should use CGImageMaskCreate! */ - case CAIRO_FORMAT_A8: - if (colorSpace == NULL) - colorSpace = CGColorSpaceCreateDeviceGray(); - bitinfo = kCGImageAlphaNone; - bitsPerComponent = 8; - bitsPerPixel = 8; - break; - - case CAIRO_FORMAT_A1: - default: - return NULL; - } - - dataProvider = CGDataProviderCreateWithData (releaseInfo, - data, - height * stride, - releaseCallback); - - if (!dataProvider) { - // manually release - if (releaseCallback) - releaseCallback (releaseInfo, data, height * stride); - goto FINISH; - } - - image = CGImageCreate (width, height, - bitsPerComponent, - bitsPerPixel, - stride, - colorSpace, - bitinfo, - dataProvider, - NULL, - interpolate, - kCGRenderingIntentDefault); - -FINISH: - - CGDataProviderRelease (dataProvider); - - if (colorSpace != colorSpaceOverride) - CGColorSpaceRelease (colorSpace); - - return image; -} - -#ifdef CAIRO_HAS_QUARTZ_IMAGE_SURFACE - -static void -DataProviderReleaseCallback (void *info, const void *data, size_t size) -{ - cairo_surface_t *surface = (cairo_surface_t *) info; - cairo_surface_destroy (surface); -} - -static cairo_surface_t * -_cairo_quartz_image_surface_create_similar (void *asurface, - cairo_content_t content, - int width, - int height) -{ - cairo_surface_t *result; - cairo_surface_t *isurf = cairo_image_surface_create (_cairo_format_from_content (content), - width, - height); - if (cairo_surface_status(isurf)) - return isurf; - - result = cairo_quartz_image_surface_create (isurf); - cairo_surface_destroy (isurf); - - return result; -} - -static cairo_status_t -_cairo_quartz_image_surface_finish (void *asurface) -{ - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t *) asurface; - - /* the imageSurface will be destroyed by the data provider's release callback */ - CGImageRelease (surface->image); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_quartz_image_surface_acquire_source_image (void *asurface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t *) asurface; - - *image_out = surface->imageSurface; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_quartz_image_surface_acquire_dest_image (void *asurface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra) -{ - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t *) asurface; - - *image_out = surface->imageSurface; - *image_rect = surface->extents; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; - -} - -static cairo_int_status_t -_cairo_quartz_image_surface_get_extents (void *asurface, - cairo_rectangle_int_t *extents) -{ - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t *) asurface; - - *extents = surface->extents; - - return CAIRO_STATUS_SUCCESS; -} - -/* we assume some drawing happened to the image buffer; make sure it's - * represented in the CGImage on flush() - */ - -static cairo_status_t -_cairo_quartz_image_surface_flush (void *asurface) -{ - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t *) asurface; - CGImageRef oldImage = surface->image; - CGImageRef newImage = NULL; - - /* To be released by the ReleaseCallback */ - cairo_surface_reference ((cairo_surface_t*) surface->imageSurface); - - newImage = _cairo_quartz_create_cgimage (surface->imageSurface->format, - surface->imageSurface->width, - surface->imageSurface->height, - surface->imageSurface->stride, - surface->imageSurface->data, - TRUE, - NULL, - DataProviderReleaseCallback, - surface->imageSurface); - - surface->image = newImage; - CGImageRelease (oldImage); - - return CAIRO_STATUS_SUCCESS; -} - -static const cairo_surface_backend_t cairo_quartz_image_surface_backend = { - CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, - _cairo_quartz_image_surface_create_similar, - _cairo_quartz_image_surface_finish, - _cairo_quartz_image_surface_acquire_source_image, - NULL, /* release_source_image */ - _cairo_quartz_image_surface_acquire_dest_image, - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - NULL, /* set_clip_region */ - NULL, /* intersect_clip_path */ - _cairo_quartz_image_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - _cairo_quartz_image_surface_flush, - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - NULL, /* surface_show_glyphs */ - NULL, /* snapshot */ - NULL, /* is_similar */ - NULL, /* reset */ - NULL /* fill_stroke */ - -}; - -/** - * cairo_quartz_image_surface_create - * @surface: a cairo image surface to wrap with a quartz image surface - * - * Creates a Quartz surface backed by a CGImageRef that references the - * given image surface. The resulting surface can be rendered quickly - * when used as a source when rendering to a #cairo_quartz_surface. If - * the data in the image surface is ever updated, cairo_surface_flush() - * must be called on the #cairo_quartz_image_surface to ensure that the - * CGImageRef refers to the updated data. - * - * Return value: the newly created surface. - * - * Since: 1.6 - */ -cairo_surface_t * -cairo_quartz_image_surface_create (cairo_surface_t *surface) -{ - cairo_quartz_image_surface_t *qisurf; - - CGImageRef image; - - cairo_image_surface_t *image_surface; - int width, height, stride; - cairo_format_t format; - unsigned char *data; - - if (cairo_surface_get_type(surface) != CAIRO_SURFACE_TYPE_IMAGE) - return SURFACE_ERROR_NO_MEMORY; - - image_surface = (cairo_image_surface_t*) surface; - width = image_surface->width; - height = image_surface->height; - stride = image_surface->stride; - format = image_surface->format; - data = image_surface->data; - - if (!_cairo_quartz_verify_surface_size(width, height)) - return SURFACE_ERROR_NO_MEMORY; - - if (width == 0 || height == 0) - return SURFACE_ERROR_NO_MEMORY; - - if (format != CAIRO_FORMAT_ARGB32 && format != CAIRO_FORMAT_RGB24) - return SURFACE_ERROR_INVALID_FORMAT; - - qisurf = malloc(sizeof(cairo_quartz_image_surface_t)); - if (qisurf == NULL) - return SURFACE_ERROR_NO_MEMORY; - - memset (qisurf, 0, sizeof(cairo_quartz_image_surface_t)); - - /* In case the create_cgimage fails, this ref will - * be released via the callback (which will be called in - * case of failure.) - */ - cairo_surface_reference (surface); - - image = _cairo_quartz_create_cgimage (format, - width, height, - stride, - data, - TRUE, - NULL, - DataProviderReleaseCallback, - surface); - - if (!image) { - free (qisurf); - return SURFACE_ERROR_NO_MEMORY; - } - - _cairo_surface_init (&qisurf->base, - &cairo_quartz_image_surface_backend, - _cairo_content_from_format (format)); - - qisurf->extents.x = qisurf->extents.y = 0; - qisurf->extents.width = width; - qisurf->extents.height = height; - - qisurf->image = image; - qisurf->imageSurface = image_surface; - - return &qisurf->base; -} - - -cairo_surface_t * -cairo_quartz_image_surface_get_image (cairo_surface_t *asurface) -{ - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t*) asurface; - - if (cairo_surface_get_type(asurface) != CAIRO_SURFACE_TYPE_QUARTZ_IMAGE) - return NULL; - - return (cairo_surface_t*) surface->imageSurface; -} - -#endif /* CAIRO_HAS_QUARTZ_IMAGE_SURFACE */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Calum Robinson - * Copyright (C) 2006,2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Calum Robinson - * - * Contributor(s): - * Calum Robinson - * Vladimir Vukicevic - */ - -#ifndef CAIRO_QUARTZ_PRIVATE_H -#define CAIRO_QUARTZ_PRIVATE_H - -#include "cairoint.h" - -#ifdef CAIRO_HAS_QUARTZ_SURFACE -#include - -typedef struct cairo_quartz_surface { - cairo_surface_t base; - - CGContextRef cgContext; - CGAffineTransform cgContextBaseCTM; - - void *imageData; - cairo_surface_t *imageSurfaceEquiv; - - cairo_rectangle_int_t extents; - - /* These are stored while drawing operations are in place, set up - * by quartz_setup_source() and quartz_finish_source() - */ - CGAffineTransform sourceTransform; - - CGImageRef sourceImage; - cairo_surface_t *sourceImageSurface; - CGRect sourceImageRect; - - CGShadingRef sourceShading; - CGPatternRef sourcePattern; - - CGInterpolationQuality oldInterpolationQuality; -} cairo_quartz_surface_t; - -typedef struct cairo_quartz_image_surface { - cairo_surface_t base; - - cairo_rectangle_int_t extents; - - CGImageRef image; - cairo_image_surface_t *imageSurface; -} cairo_quartz_image_surface_t; - -cairo_bool_t -_cairo_quartz_verify_surface_size(int width, int height); - -CGImageRef -_cairo_quartz_create_cgimage (cairo_format_t format, - unsigned int width, - unsigned int height, - unsigned int stride, - void *data, - cairo_bool_t interpolate, - CGColorSpaceRef colorSpaceOverride, - CGDataProviderReleaseDataCallback releaseCallback, - void *releaseInfo); - -CGFontRef -_cairo_quartz_scaled_font_get_cg_font_ref (cairo_scaled_font_t *sfont); - -#endif /* CAIRO_HAS_QUARTZ_SURFACE */ - -#if CAIRO_HAS_CGFONT_FONT -CGFontRef -_cairo_cgfont_scaled_font_get_cg_font_ref (cairo_scaled_font_t *sfont); -#endif /* CAIRO_HAS_CGFONT_FONT */ - -#endif /* CAIRO_QUARTZ_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-quartz-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-quartz-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2648 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright � 2006, 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation. - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#include "cairoint.h" - -#include "cairo-quartz-private.h" - -#include - -/* The 10.5 SDK includes a funky new definition of FloatToFixed which - * causes all sorts of breakage; so reset to old-style definition - */ -#ifdef FloatToFixed -#undef FloatToFixed -#define FloatToFixed(a) ((Fixed)((float)(a) * fixed1)) -#endif - -#include - -#undef QUARTZ_DEBUG - -#ifdef QUARTZ_DEBUG -#define ND(_x) fprintf _x -#else -#define ND(_x) do {} while(0) -#endif - -#define IS_EMPTY(s) ((s)->extents.width == 0 || (s)->extents.height == 0) - -/* This method is private, but it exists. Its params are are exposed - * as args to the NS* method, but not as CG. - */ -enum PrivateCGCompositeMode { - kPrivateCGCompositeClear = 0, - kPrivateCGCompositeCopy = 1, - kPrivateCGCompositeSourceOver = 2, - kPrivateCGCompositeSourceIn = 3, - kPrivateCGCompositeSourceOut = 4, - kPrivateCGCompositeSourceAtop = 5, - kPrivateCGCompositeDestinationOver = 6, - kPrivateCGCompositeDestinationIn = 7, - kPrivateCGCompositeDestinationOut = 8, - kPrivateCGCompositeDestinationAtop = 9, - kPrivateCGCompositeXOR = 10, - kPrivateCGCompositePlusDarker = 11, // (max (0, (1-d) + (1-s))) - kPrivateCGCompositePlusLighter = 12, // (min (1, s + d)) -}; -typedef enum PrivateCGCompositeMode PrivateCGCompositeMode; -CG_EXTERN void CGContextSetCompositeOperation (CGContextRef, PrivateCGCompositeMode); -CG_EXTERN void CGContextResetCTM (CGContextRef); -CG_EXTERN void CGContextSetCTM (CGContextRef, CGAffineTransform); -CG_EXTERN void CGContextResetClip (CGContextRef); -CG_EXTERN CGSize CGContextGetPatternPhase (CGContextRef); - -/* We need to work with the 10.3 SDK as well (and 10.3 machines; luckily, 10.3.9 - * has all the stuff we care about, just some of it isn't exported in the SDK. - */ -#ifndef kCGBitmapByteOrder32Host -#define USE_10_3_WORKAROUNDS -#define kCGBitmapAlphaInfoMask 0x1F -#define kCGBitmapByteOrderMask 0x7000 -#define kCGBitmapByteOrder32Host 0 - -typedef uint32_t CGBitmapInfo; - -/* public in 10.4, present in 10.3.9 */ -CG_EXTERN void CGContextReplacePathWithStrokedPath (CGContextRef); -CG_EXTERN CGImageRef CGBitmapContextCreateImage (CGContextRef); -#endif - -/* Some of these are present in earlier versions of the OS than where - * they are public; others are not public at all (CGContextCopyPath, - * CGContextReplacePathWithClipPath, many of the getters, etc.) - */ -static void (*CGContextClipToMaskPtr) (CGContextRef, CGRect, CGImageRef) = NULL; -static void (*CGContextDrawTiledImagePtr) (CGContextRef, CGRect, CGImageRef) = NULL; -static unsigned int (*CGContextGetTypePtr) (CGContextRef) = NULL; -static void (*CGContextSetShouldAntialiasFontsPtr) (CGContextRef, bool) = NULL; -static bool (*CGContextGetShouldAntialiasFontsPtr) (CGContextRef) = NULL; -static bool (*CGContextGetShouldSmoothFontsPtr) (CGContextRef) = NULL; -static void (*CGContextSetAllowsFontSmoothingPtr) (CGContextRef, bool) = NULL; -static bool (*CGContextGetAllowsFontSmoothingPtr) (CGContextRef) = NULL; -static CGPathRef (*CGContextCopyPathPtr) (CGContextRef) = NULL; -static void (*CGContextReplacePathWithClipPathPtr) (CGContextRef) = NULL; - -static SInt32 _cairo_quartz_osx_version = 0x0; - -static cairo_bool_t _cairo_quartz_symbol_lookup_done = FALSE; - -/* - * Utility functions - */ - -#ifdef QUARTZ_DEBUG -static void quartz_surface_to_png (cairo_quartz_surface_t *nq, char *dest); -static void quartz_image_to_png (CGImageRef, char *dest); -#endif - -static cairo_quartz_surface_t * -_cairo_quartz_surface_create_internal (CGContextRef cgContext, - cairo_content_t content, - unsigned int width, - unsigned int height); - -/* Load all extra symbols */ -static void quartz_ensure_symbols(void) -{ - if (_cairo_quartz_symbol_lookup_done) - return; - - CGContextClipToMaskPtr = dlsym(RTLD_DEFAULT, "CGContextClipToMask"); - CGContextDrawTiledImagePtr = dlsym(RTLD_DEFAULT, "CGContextDrawTiledImage"); - CGContextGetTypePtr = dlsym(RTLD_DEFAULT, "CGContextGetType"); - CGContextSetShouldAntialiasFontsPtr = dlsym(RTLD_DEFAULT, "CGContextSetShouldAntialiasFonts"); - CGContextGetShouldAntialiasFontsPtr = dlsym(RTLD_DEFAULT, "CGContextGetShouldAntialiasFonts"); - CGContextGetShouldSmoothFontsPtr = dlsym(RTLD_DEFAULT, "CGContextGetShouldSmoothFonts"); - CGContextCopyPathPtr = dlsym(RTLD_DEFAULT, "CGContextCopyPath"); - CGContextReplacePathWithClipPathPtr = dlsym(RTLD_DEFAULT, "CGContextReplacePathWithClipPath"); - CGContextGetAllowsFontSmoothingPtr = dlsym(RTLD_DEFAULT, "CGContextGetAllowsFontSmoothing"); - CGContextSetAllowsFontSmoothingPtr = dlsym(RTLD_DEFAULT, "CGContextSetAllowsFontSmoothing"); - - if (Gestalt(gestaltSystemVersion, &_cairo_quartz_osx_version) != noErr) { - // assume 10.4 - _cairo_quartz_osx_version = 0x1040; - } - - _cairo_quartz_symbol_lookup_done = TRUE; -} - -static inline cairo_bool_t -_cairo_quartz_is_cgcontext_bitmap_context (CGContextRef cgc) { - if (cgc == NULL) - return FALSE; - - if (CGContextGetTypePtr) { - /* 4 is the type value of a bitmap context */ - if (CGContextGetTypePtr(cgc) == 4) - return TRUE; - return FALSE; - } - - /* This will cause a (harmless) warning to be printed if called on a non-bitmap context */ - return CGBitmapContextGetBitsPerPixel(cgc) != 0; -} - -/* CoreGraphics limitation with flipped CTM surfaces: height must be less than signed 16-bit max */ - -#define CG_MAX_HEIGHT SHRT_MAX -#define CG_MAX_WIDTH USHRT_MAX - -/* is the desired size of the surface within bounds? */ -cairo_bool_t -_cairo_quartz_verify_surface_size(int width, int height) -{ - /* hmmm, allow width, height == 0 ? */ - if (width < 0 || height < 0) { - return FALSE; - } - - if (width > CG_MAX_WIDTH || height > CG_MAX_HEIGHT) { - return FALSE; - } - - return TRUE; -} - -/* - * Cairo path -> Quartz path conversion helpers - */ - -typedef struct _quartz_stroke { - CGContextRef cgContext; - cairo_matrix_t *ctm_inverse; -} quartz_stroke_t; - -/* cairo path -> execute in context */ -static cairo_status_t -_cairo_path_to_quartz_context_move_to (void *closure, cairo_point_t *point) -{ - //ND((stderr, "moveto: %f %f\n", _cairo_fixed_to_double(point->x), _cairo_fixed_to_double(point->y))); - quartz_stroke_t *stroke = (quartz_stroke_t *)closure; - double x = _cairo_fixed_to_double (point->x); - double y = _cairo_fixed_to_double (point->y); - - if (stroke->ctm_inverse) - cairo_matrix_transform_point (stroke->ctm_inverse, &x, &y); - - CGContextMoveToPoint (stroke->cgContext, x, y); - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_path_to_quartz_context_line_to (void *closure, cairo_point_t *point) -{ - //ND((stderr, "lineto: %f %f\n", _cairo_fixed_to_double(point->x), _cairo_fixed_to_double(point->y))); - quartz_stroke_t *stroke = (quartz_stroke_t *)closure; - double x = _cairo_fixed_to_double (point->x); - double y = _cairo_fixed_to_double (point->y); - - if (stroke->ctm_inverse) - cairo_matrix_transform_point (stroke->ctm_inverse, &x, &y); - - if (CGContextIsPathEmpty (stroke->cgContext)) - CGContextMoveToPoint (stroke->cgContext, x, y); - else - CGContextAddLineToPoint (stroke->cgContext, x, y); - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_path_to_quartz_context_curve_to (void *closure, cairo_point_t *p0, cairo_point_t *p1, cairo_point_t *p2) -{ - //ND( (stderr, "curveto: %f,%f %f,%f %f,%f\n", - // _cairo_fixed_to_double(p0->x), _cairo_fixed_to_double(p0->y), - // _cairo_fixed_to_double(p1->x), _cairo_fixed_to_double(p1->y), - // _cairo_fixed_to_double(p2->x), _cairo_fixed_to_double(p2->y))); - quartz_stroke_t *stroke = (quartz_stroke_t *)closure; - double x0 = _cairo_fixed_to_double (p0->x); - double y0 = _cairo_fixed_to_double (p0->y); - double x1 = _cairo_fixed_to_double (p1->x); - double y1 = _cairo_fixed_to_double (p1->y); - double x2 = _cairo_fixed_to_double (p2->x); - double y2 = _cairo_fixed_to_double (p2->y); - - if (stroke->ctm_inverse) { - cairo_matrix_transform_point (stroke->ctm_inverse, &x0, &y0); - cairo_matrix_transform_point (stroke->ctm_inverse, &x1, &y1); - cairo_matrix_transform_point (stroke->ctm_inverse, &x2, &y2); - } - - CGContextAddCurveToPoint (stroke->cgContext, - x0, y0, x1, y1, x2, y2); - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_path_to_quartz_context_close_path (void *closure) -{ - //ND((stderr, "closepath\n")); - quartz_stroke_t *stroke = (quartz_stroke_t *)closure; - CGContextClosePath (stroke->cgContext); - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_quartz_cairo_path_to_quartz_context (cairo_path_fixed_t *path, - quartz_stroke_t *stroke) -{ - return _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_path_to_quartz_context_move_to, - _cairo_path_to_quartz_context_line_to, - _cairo_path_to_quartz_context_curve_to, - _cairo_path_to_quartz_context_close_path, - stroke); -} - -/* - * Misc helpers/callbacks - */ - -static PrivateCGCompositeMode -_cairo_quartz_cairo_operator_to_quartz (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - return kPrivateCGCompositeClear; - case CAIRO_OPERATOR_SOURCE: - return kPrivateCGCompositeCopy; - case CAIRO_OPERATOR_OVER: - return kPrivateCGCompositeSourceOver; - case CAIRO_OPERATOR_IN: - /* XXX This doesn't match image output */ - return kPrivateCGCompositeSourceIn; - case CAIRO_OPERATOR_OUT: - /* XXX This doesn't match image output */ - return kPrivateCGCompositeSourceOut; - case CAIRO_OPERATOR_ATOP: - return kPrivateCGCompositeSourceAtop; - - case CAIRO_OPERATOR_DEST: - /* XXX this is handled specially (noop)! */ - return kPrivateCGCompositeCopy; - case CAIRO_OPERATOR_DEST_OVER: - return kPrivateCGCompositeDestinationOver; - case CAIRO_OPERATOR_DEST_IN: - /* XXX This doesn't match image output */ - return kPrivateCGCompositeDestinationIn; - case CAIRO_OPERATOR_DEST_OUT: - return kPrivateCGCompositeDestinationOut; - case CAIRO_OPERATOR_DEST_ATOP: - /* XXX This doesn't match image output */ - return kPrivateCGCompositeDestinationAtop; - - case CAIRO_OPERATOR_XOR: - return kPrivateCGCompositeXOR; /* This will generate strange results */ - case CAIRO_OPERATOR_ADD: - return kPrivateCGCompositePlusLighter; - case CAIRO_OPERATOR_SATURATE: - /* XXX This doesn't match image output for SATURATE; there's no equivalent */ - return kPrivateCGCompositePlusDarker; /* ??? */ - } - - - return kPrivateCGCompositeCopy; -} - -static inline CGLineCap -_cairo_quartz_cairo_line_cap_to_quartz (cairo_line_cap_t ccap) -{ - switch (ccap) { - case CAIRO_LINE_CAP_BUTT: return kCGLineCapButt; break; - case CAIRO_LINE_CAP_ROUND: return kCGLineCapRound; break; - case CAIRO_LINE_CAP_SQUARE: return kCGLineCapSquare; break; - } - - return kCGLineCapButt; -} - -static inline CGLineJoin -_cairo_quartz_cairo_line_join_to_quartz (cairo_line_join_t cjoin) -{ - switch (cjoin) { - case CAIRO_LINE_JOIN_MITER: return kCGLineJoinMiter; break; - case CAIRO_LINE_JOIN_ROUND: return kCGLineJoinRound; break; - case CAIRO_LINE_JOIN_BEVEL: return kCGLineJoinBevel; break; - } - - return kCGLineJoinMiter; -} - -static inline CGInterpolationQuality -_cairo_quartz_filter_to_quartz (cairo_filter_t filter) -{ - switch (filter) { - case CAIRO_FILTER_NEAREST: - return kCGInterpolationNone; - - case CAIRO_FILTER_FAST: - return kCGInterpolationLow; - - case CAIRO_FILTER_BEST: - case CAIRO_FILTER_GOOD: - case CAIRO_FILTER_BILINEAR: - case CAIRO_FILTER_GAUSSIAN: - return kCGInterpolationDefault; - } - - return kCGInterpolationDefault; -} - -static inline void -_cairo_quartz_cairo_matrix_to_quartz (const cairo_matrix_t *src, - CGAffineTransform *dst) -{ - dst->a = src->xx; - dst->b = src->yx; - dst->c = src->xy; - dst->d = src->yy; - dst->tx = src->x0; - dst->ty = src->y0; -} - -typedef struct { - bool isClipping; - CGGlyph *cg_glyphs; - CGSize *cg_advances; - size_t nglyphs; - CGAffineTransform textTransform; - CGFontRef font; - CGPoint origin; -} unbounded_show_glyphs_t; - -typedef struct { - CGPathRef cgPath; - cairo_fill_rule_t fill_rule; -} unbounded_stroke_fill_t; - -typedef struct { - CGImageRef mask; - CGAffineTransform maskTransform; -} unbounded_mask_t; - -typedef enum { - UNBOUNDED_STROKE_FILL, - UNBOUNDED_SHOW_GLYPHS, - UNBOUNDED_MASK -} unbounded_op_t; - -typedef struct { - unbounded_op_t op; - union { - unbounded_stroke_fill_t stroke_fill; - unbounded_show_glyphs_t show_glyphs; - unbounded_mask_t mask; - } u; -} unbounded_op_data_t; - -static void -_cairo_quartz_fixup_unbounded_operation (cairo_quartz_surface_t *surface, - unbounded_op_data_t *op, - cairo_antialias_t antialias) -{ - CGColorSpaceRef gray; - CGRect clipBox, clipBoxRound; - CGContextRef cgc; - CGImageRef maskImage; - - if (!CGContextClipToMaskPtr) - return; - - clipBox = CGContextGetClipBoundingBox (surface->cgContext); - clipBoxRound = CGRectIntegral (clipBox); - - gray = CGColorSpaceCreateDeviceGray (); - cgc = CGBitmapContextCreate (NULL, - clipBoxRound.size.width, - clipBoxRound.size.height, - 8, - clipBoxRound.size.width, - gray, - kCGImageAlphaNone); - CGColorSpaceRelease (gray); - - if (!cgc) - return; - - /* We want to mask out whatever we just rendered, so we fill the - * surface with white, and then we'll render with black. - */ - CGContextSetRGBFillColor (cgc, 1.0f, 1.0f, 1.0f, 1.0f); - CGContextFillRect (cgc, CGRectMake (0, 0, clipBoxRound.size.width, clipBoxRound.size.height)); - - CGContextSetRGBFillColor (cgc, 0.0f, 0.0f, 0.0f, 1.0f); - CGContextSetShouldAntialias (cgc, (antialias != CAIRO_ANTIALIAS_NONE)); - - CGContextTranslateCTM (cgc, -clipBoxRound.origin.x, -clipBoxRound.origin.y); - - /* We need to either render the path that was given to us, or the glyph op */ - if (op->op == UNBOUNDED_STROKE_FILL) { - CGContextBeginPath (cgc); - CGContextAddPath (cgc, op->u.stroke_fill.cgPath); - - if (op->u.stroke_fill.fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextFillPath (cgc); - else - CGContextEOFillPath (cgc); - } else if (op->op == UNBOUNDED_SHOW_GLYPHS) { - CGContextSetFont (cgc, op->u.show_glyphs.font); - CGContextSetFontSize (cgc, 1.0); - CGContextSetTextMatrix (cgc, op->u.show_glyphs.textTransform); - CGContextTranslateCTM (cgc, op->u.show_glyphs.origin.x, op->u.show_glyphs.origin.y); - - if (op->u.show_glyphs.isClipping) { - /* Note that the comment in show_glyphs about kCGTextClip - * and the text transform still applies here; however, the - * cg_advances we have were already transformed, so we - * don't have to do anything. */ - CGContextSetTextDrawingMode (cgc, kCGTextClip); - CGContextSaveGState (cgc); - } - - CGContextShowGlyphsWithAdvances (cgc, - op->u.show_glyphs.cg_glyphs, - op->u.show_glyphs.cg_advances, - op->u.show_glyphs.nglyphs); - - if (op->u.show_glyphs.isClipping) { - CGContextFillRect (cgc, CGRectMake (0.0, 0.0, clipBoxRound.size.width, clipBoxRound.size.height)); - CGContextRestoreGState (cgc); - } - } else if (op->op == UNBOUNDED_MASK) { - CGContextSaveGState (cgc); - CGContextConcatCTM (cgc, op->u.mask.maskTransform); - CGContextClipToMask (cgc, CGRectMake (0.0f, 0.0f, - CGImageGetWidth(op->u.mask.mask), CGImageGetHeight(op->u.mask.mask)), - op->u.mask.mask); - CGContextFillRect (cgc, CGRectMake (0.0, 0.0, clipBoxRound.size.width, clipBoxRound.size.height)); - CGContextRestoreGState (cgc); - } - - /* Also mask out the portion of the clipbox that we rounded out, if any */ - if (!CGRectEqualToRect (clipBox, clipBoxRound)) { - CGContextBeginPath (cgc); - CGContextAddRect (cgc, CGRectMake (0.0, 0.0, clipBoxRound.size.width, clipBoxRound.size.height)); - CGContextAddRect (cgc, CGRectMake (clipBoxRound.origin.x - clipBox.origin.x, - clipBoxRound.origin.y - clipBox.origin.y, - clipBox.size.width, - clipBox.size.height)); - CGContextEOFillPath (cgc); - } - - maskImage = CGBitmapContextCreateImage (cgc); - CGContextRelease (cgc); - - if (!maskImage) - return; - - /* Then render with the mask */ - CGContextSaveGState (surface->cgContext); - - CGContextSetCompositeOperation (surface->cgContext, kPrivateCGCompositeCopy); - CGContextClipToMaskPtr (surface->cgContext, clipBoxRound, maskImage); - CGImageRelease (maskImage); - - /* Finally, clear out the entire clipping region through our mask */ - CGContextClearRect (surface->cgContext, clipBoxRound); - - CGContextRestoreGState (surface->cgContext); -} - -/* - * Source -> Quartz setup and finish functions - */ - -static void -ComputeGradientValue (void *info, const float *in, float *out) -{ - double fdist = *in; - cairo_gradient_pattern_t *grad = (cairo_gradient_pattern_t*) info; - unsigned int i; - - /* Put fdist back in the 0.0..1.0 range if we're doing - * REPEAT/REFLECT - */ - if (grad->base.extend == CAIRO_EXTEND_REPEAT) { - fdist = fdist - floor(fdist); - } else if (grad->base.extend == CAIRO_EXTEND_REFLECT) { - fdist = fmod(fabs(fdist), 2.0); - if (fdist > 1.0) { - fdist = 2.0 - fdist; - } - } - - for (i = 0; i < grad->n_stops; i++) { - if (grad->stops[i].offset > fdist) - break; - } - - if (i == 0 || i == grad->n_stops) { - if (i == grad->n_stops) - --i; - out[0] = grad->stops[i].color.red; - out[1] = grad->stops[i].color.green; - out[2] = grad->stops[i].color.blue; - out[3] = grad->stops[i].color.alpha; - } else { - float ax = grad->stops[i-1].offset; - float bx = grad->stops[i].offset - ax; - float bp = (fdist - ax)/bx; - float ap = 1.0 - bp; - - out[0] = - grad->stops[i-1].color.red * ap + - grad->stops[i].color.red * bp; - out[1] = - grad->stops[i-1].color.green * ap + - grad->stops[i].color.green * bp; - out[2] = - grad->stops[i-1].color.blue * ap + - grad->stops[i].color.blue * bp; - out[3] = - grad->stops[i-1].color.alpha * ap + - grad->stops[i].color.alpha * bp; - } -} - -static CGFunctionRef -CreateGradientFunction (cairo_gradient_pattern_t *gpat) -{ - float input_value_range[2] = { 0.f, 1.f }; - float output_value_ranges[8] = { 0.f, 1.f, 0.f, 1.f, 0.f, 1.f, 0.f, 1.f }; - CGFunctionCallbacks callbacks = { - 0, ComputeGradientValue, (CGFunctionReleaseInfoCallback) cairo_pattern_destroy - }; - - return CGFunctionCreate (gpat, - 1, - input_value_range, - 4, - output_value_ranges, - &callbacks); -} - -static CGFunctionRef -CreateRepeatingGradientFunction (cairo_quartz_surface_t *surface, - cairo_gradient_pattern_t *gpat, - CGPoint *start, CGPoint *end, - CGAffineTransform matrix) -{ - float input_value_range[2]; - float output_value_ranges[8] = { 0.f, 1.f, 0.f, 1.f, 0.f, 1.f, 0.f, 1.f }; - CGFunctionCallbacks callbacks = { - 0, ComputeGradientValue, (CGFunctionReleaseInfoCallback) cairo_pattern_destroy - }; - - CGPoint mstart, mend; - - double dx, dy; - int x_rep_start = 0, x_rep_end = 0; - int y_rep_start = 0, y_rep_end = 0; - - int rep_start, rep_end; - - // figure out how many times we'd need to repeat the gradient pattern - // to cover the whole (transformed) surface area - mstart = CGPointApplyAffineTransform (*start, matrix); - mend = CGPointApplyAffineTransform (*end, matrix); - - dx = fabs (mend.x - mstart.x); - dy = fabs (mend.y - mstart.y); - - if (dx > 1e-6) { - x_rep_start = (int) ceil(MIN(mstart.x, mend.x) / dx); - x_rep_end = (int) ceil((surface->extents.width - MAX(mstart.x, mend.x)) / dx); - - if (mend.x < mstart.x) { - int swap = x_rep_end; - x_rep_end = x_rep_start; - x_rep_start = swap; - } - } - - if (dy > 1e-6) { - y_rep_start = (int) ceil(MIN(mstart.y, mend.y) / dy); - y_rep_end = (int) ceil((surface->extents.width - MAX(mstart.y, mend.y)) / dy); - - if (mend.y < mstart.y) { - int swap = y_rep_end; - y_rep_end = y_rep_start; - y_rep_start = swap; - } - } - - rep_start = MAX(x_rep_start, y_rep_start); - rep_end = MAX(x_rep_end, y_rep_end); - - // extend the line between start and end by rep_start times from the start - // and rep_end times from the end - - dx = end->x - start->x; - dy = end->y - start->y; - - start->x = start->x - dx * rep_start; - start->y = start->y - dy * rep_start; - - end->x = end->x + dx * rep_end; - end->y = end->y + dy * rep_end; - - // set the input range for the function -- the function knows how to - // map values outside of 0.0 .. 1.0 to that range for REPEAT/REFLECT. - input_value_range[0] = 0.0 - 1.0 * rep_start; - input_value_range[1] = 1.0 + 1.0 * rep_end; - - return CGFunctionCreate (gpat, - 1, - input_value_range, - 4, - output_value_ranges, - &callbacks); -} - -/* Obtain a CGImageRef from a #cairo_surface_t * */ - -static cairo_status_t -_cairo_surface_to_cgimage (cairo_surface_t *target, - cairo_surface_t *source, - CGImageRef *image_out) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_surface_type_t stype = cairo_surface_get_type (source); - cairo_image_surface_t *isurf; - CGImageRef image; - void *image_extra; - - if (stype == CAIRO_SURFACE_TYPE_QUARTZ_IMAGE) { - cairo_quartz_image_surface_t *surface = (cairo_quartz_image_surface_t *) source; - *image_out = CGImageRetain (surface->image); - return CAIRO_STATUS_SUCCESS; - } - - if (stype == CAIRO_SURFACE_TYPE_QUARTZ) { - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) source; - if (IS_EMPTY(surface)) { - *image_out = NULL; - return CAIRO_STATUS_SUCCESS; - } - - if (_cairo_quartz_is_cgcontext_bitmap_context (surface->cgContext)) { - *image_out = CGBitmapContextCreateImage (surface->cgContext); - if (*image_out) - return CAIRO_STATUS_SUCCESS; - } - } - - if (stype != CAIRO_SURFACE_TYPE_IMAGE) { - status = _cairo_surface_acquire_source_image (source, &isurf, &image_extra); - if (status) - return status; - } else { - isurf = (cairo_image_surface_t *) source; - } - - if (isurf->width == 0 || isurf->height == 0) { - *image_out = NULL; - } else { - image = _cairo_quartz_create_cgimage (isurf->format, - isurf->width, - isurf->height, - isurf->stride, - isurf->data, - TRUE, - NULL, NULL, NULL); - - /* Create a copy to ensure that the CGImageRef doesn't depend on the image surface's backing store */ - *image_out = CGImageCreateCopy (image); - CGImageRelease (image); - } - - if ((cairo_surface_t*) isurf != source) - _cairo_surface_release_source_image (source, isurf, image_extra); - - return status; -} - -/* Generic #cairo_pattern_t -> CGPattern function */ - -typedef struct { - CGImageRef image; - CGRect imageBounds; - cairo_bool_t do_reflect; -} SurfacePatternDrawInfo; - -static void -SurfacePatternDrawFunc (void *ainfo, CGContextRef context) -{ - SurfacePatternDrawInfo *info = (SurfacePatternDrawInfo*) ainfo; - - CGContextTranslateCTM (context, 0, info->imageBounds.size.height); - CGContextScaleCTM (context, 1, -1); - - CGContextDrawImage (context, info->imageBounds, info->image); - if (info->do_reflect) { - /* draw 3 more copies of the image, flipped. - * DrawImage draws the image according to the current Y-direction into the rectangle given - * (imageBounds); at the time of the first DrawImage above, the origin is at the bottom left - * of the base image position, and the Y axis is extending upwards. - */ - - /* Make the y axis extend downwards, and draw a flipped image below */ - CGContextScaleCTM (context, 1, -1); - CGContextDrawImage (context, info->imageBounds, info->image); - - /* Shift over to the right, and flip vertically (translation is 2x, - * since we'll be flipping and thus rendering the rectangle "backwards" - */ - CGContextTranslateCTM (context, 2 * info->imageBounds.size.width, 0); - CGContextScaleCTM (context, -1, 1); - CGContextDrawImage (context, info->imageBounds, info->image); - - /* Then unflip the Y-axis again, and draw the image above the point. */ - CGContextScaleCTM (context, 1, -1); - CGContextDrawImage (context, info->imageBounds, info->image); - - } -} - -static void -SurfacePatternReleaseInfoFunc (void *ainfo) -{ - SurfacePatternDrawInfo *info = (SurfacePatternDrawInfo*) ainfo; - - CGImageRelease (info->image); - free (info); -} - -static cairo_int_status_t -_cairo_quartz_cairo_repeating_surface_pattern_to_quartz (cairo_quartz_surface_t *dest, - cairo_pattern_t *apattern, - CGPatternRef *cgpat) -{ - cairo_surface_pattern_t *spattern; - cairo_surface_t *pat_surf; - cairo_rectangle_int_t extents; - - CGImageRef image; - CGRect pbounds; - CGAffineTransform ptransform, stransform; - CGPatternCallbacks cb = { 0, - SurfacePatternDrawFunc, - SurfacePatternReleaseInfoFunc }; - SurfacePatternDrawInfo *info; - float rw, rh; - cairo_status_t status; - - cairo_matrix_t m; - - /* SURFACE is the only type we'll handle here */ - if (apattern->type != CAIRO_PATTERN_TYPE_SURFACE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - spattern = (cairo_surface_pattern_t *) apattern; - pat_surf = spattern->surface; - - status = _cairo_surface_get_extents (pat_surf, &extents); - if (status) - return status; - - status = _cairo_surface_to_cgimage ((cairo_surface_t*) dest, pat_surf, &image); - if (status != CAIRO_STATUS_SUCCESS) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (image == NULL) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - info = malloc(sizeof(SurfacePatternDrawInfo)); - if (!info) - return CAIRO_STATUS_NO_MEMORY; - - /* XXX -- if we're printing, we may need to call CGImageCreateCopy to make sure - * that the data will stick around for this image when the printer gets to it. - * Otherwise, the underlying data store may disappear from under us! - * - * _cairo_surface_to_cgimage will copy when it converts non-Quartz surfaces, - * since the Quartz surfaces have a higher chance of sticking around. If the - * source is a quartz image surface, then it's set up to retain a ref to the - * image surface that it's backed by. - */ - info->image = image; - - info->imageBounds = CGRectMake (0, 0, extents.width, extents.height); - - pbounds.origin.x = 0; - pbounds.origin.y = 0; - - if (spattern->base.extend == CAIRO_EXTEND_REFLECT) { - pbounds.size.width = 2.0 * extents.width; - pbounds.size.height = 2.0 * extents.height; - info->do_reflect = TRUE; - } else { - pbounds.size.width = extents.width; - pbounds.size.height = extents.height; - } - rw = pbounds.size.width; - rh = pbounds.size.height; - - m = spattern->base.matrix; - cairo_matrix_invert(&m); - _cairo_quartz_cairo_matrix_to_quartz (&m, &stransform); - - /* The pattern matrix is relative to the bottom left, again; the - * incoming cairo pattern matrix is relative to the upper left. - * So we take the pattern matrix and the original context matrix, - * which gives us the correct base translation/y flip. - */ - ptransform = CGAffineTransformConcat(stransform, dest->cgContextBaseCTM); - -#ifdef QUARTZ_DEBUG - ND((stderr, " pbounds: %f %f %f %f\n", pbounds.origin.x, pbounds.origin.y, pbounds.size.width, pbounds.size.height)); - ND((stderr, " pattern xform: t: %f %f xx: %f xy: %f yx: %f yy: %f\n", ptransform.tx, ptransform.ty, ptransform.a, ptransform.b, ptransform.c, ptransform.d)); - CGAffineTransform xform = CGContextGetCTM(dest->cgContext); - ND((stderr, " context xform: t: %f %f xx: %f xy: %f yx: %f yy: %f\n", xform.tx, xform.ty, xform.a, xform.b, xform.c, xform.d)); -#endif - - *cgpat = CGPatternCreate (info, - pbounds, - ptransform, - rw, rh, - kCGPatternTilingConstantSpacing, /* kCGPatternTilingNoDistortion, */ - TRUE, - &cb); - - return CAIRO_STATUS_SUCCESS; -} - -typedef enum { - DO_SOLID, - DO_SHADING, - DO_PATTERN, - DO_IMAGE, - DO_UNSUPPORTED, - DO_NOTHING, - DO_TILED_IMAGE -} cairo_quartz_action_t; - -static cairo_quartz_action_t -_cairo_quartz_setup_fallback_source (cairo_quartz_surface_t *surface, - cairo_pattern_t *source) -{ - CGRect clipBox = CGContextGetClipBoundingBox (surface->cgContext); - CGAffineTransform ctm; - double x0, y0, w, h; - - cairo_surface_t *fallback; - cairo_t *fallback_cr; - CGImageRef img; - - cairo_status_t status; - - if (clipBox.size.width == 0.0f || - clipBox.size.height == 0.0f) - return DO_NOTHING; - - // the clipBox is in userspace, so: - ctm = CGContextGetCTM (surface->cgContext); - ctm = CGAffineTransformInvert (ctm); - clipBox = CGRectApplyAffineTransform (clipBox, ctm); - - // get the Y flip right -- the CTM will always have a Y flip in place - clipBox.origin.y = surface->extents.height - (clipBox.origin.y + clipBox.size.height); - - x0 = floor(clipBox.origin.x); - y0 = floor(clipBox.origin.y); - w = ceil(clipBox.origin.x + clipBox.size.width) - x0; - h = ceil(clipBox.origin.y + clipBox.size.height) - y0; - - /* Create a temporary the size of the clip surface, and position - * it so that the device origin coincides with the original surface */ - fallback = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, (int) w, (int) h); - cairo_surface_set_device_offset (fallback, -x0, -y0); - - /* Paint the source onto our temporary */ - fallback_cr = cairo_create (fallback); - cairo_set_operator (fallback_cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source (fallback_cr, source); - cairo_paint (fallback_cr); - cairo_destroy (fallback_cr); - - status = _cairo_surface_to_cgimage ((cairo_surface_t*) surface, fallback, &img); - if (status == CAIRO_STATUS_SUCCESS && img == NULL) - return DO_NOTHING; - if (status) - return DO_UNSUPPORTED; - - surface->sourceImageRect = CGRectMake (0.0, 0.0, w, h); - surface->sourceImage = img; - surface->sourceImageSurface = fallback; - surface->sourceTransform = CGAffineTransformMakeTranslation (x0, y0); - - return DO_IMAGE; -} - -static cairo_quartz_action_t -_cairo_quartz_setup_linear_source (cairo_quartz_surface_t *surface, - cairo_linear_pattern_t *lpat) -{ - cairo_pattern_t *abspat = (cairo_pattern_t *) lpat; - cairo_matrix_t mat; - CGPoint start, end; - CGFunctionRef gradFunc; - CGColorSpaceRef rgb; - bool extend = abspat->extend == CAIRO_EXTEND_PAD; - - if (lpat->base.n_stops == 0) { - CGContextSetRGBStrokeColor (surface->cgContext, 0., 0., 0., 0.); - CGContextSetRGBFillColor (surface->cgContext, 0., 0., 0., 0.); - return DO_SOLID; - } - - cairo_pattern_get_matrix (abspat, &mat); - cairo_matrix_invert (&mat); - _cairo_quartz_cairo_matrix_to_quartz (&mat, &surface->sourceTransform); - - rgb = CGColorSpaceCreateDeviceRGB(); - - start = CGPointMake (_cairo_fixed_to_double (lpat->p1.x), - _cairo_fixed_to_double (lpat->p1.y)); - end = CGPointMake (_cairo_fixed_to_double (lpat->p2.x), - _cairo_fixed_to_double (lpat->p2.y)); - - // ref will be released by the CGShading's destructor - cairo_pattern_reference ((cairo_pattern_t*) lpat); - - if (abspat->extend == CAIRO_EXTEND_NONE || - abspat->extend == CAIRO_EXTEND_PAD) - { - gradFunc = CreateGradientFunction ((cairo_gradient_pattern_t*) lpat); - } else { - gradFunc = CreateRepeatingGradientFunction (surface, - (cairo_gradient_pattern_t*) lpat, - &start, &end, surface->sourceTransform); - } - - surface->sourceShading = CGShadingCreateAxial (rgb, - start, end, - gradFunc, - extend, extend); - - CGColorSpaceRelease(rgb); - CGFunctionRelease(gradFunc); - - return DO_SHADING; -} - -static cairo_quartz_action_t -_cairo_quartz_setup_radial_source (cairo_quartz_surface_t *surface, - cairo_radial_pattern_t *rpat) -{ - cairo_pattern_t *abspat = (cairo_pattern_t *)rpat; - cairo_matrix_t mat; - CGPoint start, end; - CGFunctionRef gradFunc; - CGColorSpaceRef rgb; - bool extend = abspat->extend == CAIRO_EXTEND_PAD; - - if (rpat->base.n_stops == 0) { - CGContextSetRGBStrokeColor (surface->cgContext, 0., 0., 0., 0.); - CGContextSetRGBFillColor (surface->cgContext, 0., 0., 0., 0.); - return DO_SOLID; - } - - if (abspat->extend == CAIRO_EXTEND_REPEAT || - abspat->extend == CAIRO_EXTEND_REFLECT) - { - /* I started trying to map these to Quartz, but it's much harder - * then the linear case (I think it would involve doing multiple - * Radial shadings). So, instead, let's just render an image - * for pixman to draw the shading into, and use that. - */ - return _cairo_quartz_setup_fallback_source (surface, (cairo_pattern_t*) rpat); - } - - cairo_pattern_get_matrix (abspat, &mat); - cairo_matrix_invert (&mat); - _cairo_quartz_cairo_matrix_to_quartz (&mat, &surface->sourceTransform); - - rgb = CGColorSpaceCreateDeviceRGB(); - - start = CGPointMake (_cairo_fixed_to_double (rpat->c1.x), - _cairo_fixed_to_double (rpat->c1.y)); - end = CGPointMake (_cairo_fixed_to_double (rpat->c2.x), - _cairo_fixed_to_double (rpat->c2.y)); - - // ref will be released by the CGShading's destructor - cairo_pattern_reference ((cairo_pattern_t*) rpat); - - gradFunc = CreateGradientFunction ((cairo_gradient_pattern_t*) rpat); - - surface->sourceShading = CGShadingCreateRadial (rgb, - start, - _cairo_fixed_to_double (rpat->r1), - end, - _cairo_fixed_to_double (rpat->r2), - gradFunc, - extend, extend); - - CGColorSpaceRelease(rgb); - CGFunctionRelease(gradFunc); - - return DO_SHADING; -} - -static cairo_quartz_action_t -_cairo_quartz_setup_source (cairo_quartz_surface_t *surface, - cairo_pattern_t *source) -{ - assert (!(surface->sourceImage || surface->sourceShading || surface->sourcePattern)); - - surface->oldInterpolationQuality = CGContextGetInterpolationQuality (surface->cgContext); - CGContextSetInterpolationQuality (surface->cgContext, _cairo_quartz_filter_to_quartz (source->filter)); - - if (source->type == CAIRO_PATTERN_TYPE_SOLID) { - cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) source; - - CGContextSetRGBStrokeColor (surface->cgContext, - solid->color.red, - solid->color.green, - solid->color.blue, - solid->color.alpha); - CGContextSetRGBFillColor (surface->cgContext, - solid->color.red, - solid->color.green, - solid->color.blue, - solid->color.alpha); - - return DO_SOLID; - } - - if (source->type == CAIRO_PATTERN_TYPE_LINEAR) { - cairo_linear_pattern_t *lpat = (cairo_linear_pattern_t *)source; - return _cairo_quartz_setup_linear_source (surface, lpat); - - } - - if (source->type == CAIRO_PATTERN_TYPE_RADIAL) { - cairo_radial_pattern_t *rpat = (cairo_radial_pattern_t *)source; - return _cairo_quartz_setup_radial_source (surface, rpat); - - } - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE && - (source->extend == CAIRO_EXTEND_NONE || (CGContextDrawTiledImagePtr && source->extend == CAIRO_EXTEND_REPEAT))) - { - cairo_surface_pattern_t *spat = (cairo_surface_pattern_t *) source; - cairo_surface_t *pat_surf = spat->surface; - CGImageRef img; - cairo_matrix_t m = spat->base.matrix; - cairo_rectangle_int_t extents; - cairo_status_t status; - CGAffineTransform xform; - CGRect srcRect; - cairo_fixed_t fw, fh; - - status = _cairo_surface_to_cgimage ((cairo_surface_t *) surface, pat_surf, &img); - if (status == CAIRO_STATUS_SUCCESS && img == NULL) - return DO_NOTHING; - if (status) - return DO_UNSUPPORTED; - - surface->sourceImage = img; - - cairo_matrix_invert(&m); - _cairo_quartz_cairo_matrix_to_quartz (&m, &surface->sourceTransform); - - status = _cairo_surface_get_extents (pat_surf, &extents); - if (status) - return DO_UNSUPPORTED; - - if (source->extend == CAIRO_EXTEND_NONE) { - surface->sourceImageRect = CGRectMake (0, 0, extents.width, extents.height); - return DO_IMAGE; - } - - /* Quartz seems to tile images at pixel-aligned regions only -- this - * leads to seams if the image doesn't end up scaling to fill the - * space exactly. The CGPattern tiling approach doesn't have this - * problem. Check if we're going to fill up the space (within some - * epsilon), and if not, fall back to the CGPattern type. - */ - - xform = CGAffineTransformConcat (CGContextGetCTM (surface->cgContext), - surface->sourceTransform); - - srcRect = CGRectMake (0, 0, extents.width, extents.height); - srcRect = CGRectApplyAffineTransform (srcRect, xform); - - fw = _cairo_fixed_from_double (srcRect.size.width); - fh = _cairo_fixed_from_double (srcRect.size.height); - - if ((fw & CAIRO_FIXED_FRAC_MASK) <= CAIRO_FIXED_EPSILON && - (fh & CAIRO_FIXED_FRAC_MASK) <= CAIRO_FIXED_EPSILON) - { - /* We're good to use DrawTiledImage, but ensure that - * the math works out */ - - srcRect.size.width = round(srcRect.size.width); - srcRect.size.height = round(srcRect.size.height); - - xform = CGAffineTransformInvert (xform); - - srcRect = CGRectApplyAffineTransform (srcRect, xform); - - surface->sourceImageRect = srcRect; - - return DO_TILED_IMAGE; - } - - /* Fall through to generic SURFACE case */ - } - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { - float patternAlpha = 1.0f; - CGColorSpaceRef patternSpace; - CGPatternRef pattern; - cairo_int_status_t status; - - status = _cairo_quartz_cairo_repeating_surface_pattern_to_quartz (surface, source, &pattern); - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return DO_NOTHING; - if (status) - return DO_UNSUPPORTED; - - // Save before we change the pattern, colorspace, etc. so that - // we can restore and make sure that quartz releases our - // pattern (which may be stack allocated) - CGContextSaveGState(surface->cgContext); - - patternSpace = CGColorSpaceCreatePattern(NULL); - CGContextSetFillColorSpace (surface->cgContext, patternSpace); - CGContextSetFillPattern (surface->cgContext, pattern, &patternAlpha); - CGContextSetStrokeColorSpace (surface->cgContext, patternSpace); - CGContextSetStrokePattern (surface->cgContext, pattern, &patternAlpha); - CGColorSpaceRelease (patternSpace); - - /* Quartz likes to munge the pattern phase (as yet unexplained - * why); force it to 0,0 as we've already baked in the correct - * pattern translation into the pattern matrix - */ - CGContextSetPatternPhase (surface->cgContext, CGSizeMake(0,0)); - - surface->sourcePattern = pattern; - - return DO_PATTERN; - } - - return DO_UNSUPPORTED; -} - -static void -_cairo_quartz_teardown_source (cairo_quartz_surface_t *surface, - cairo_pattern_t *source) -{ - CGContextSetInterpolationQuality (surface->cgContext, surface->oldInterpolationQuality); - - if (surface->sourceImage) { - CGImageRelease(surface->sourceImage); - surface->sourceImage = NULL; - - cairo_surface_destroy(surface->sourceImageSurface); - surface->sourceImageSurface = NULL; - } - - if (surface->sourceShading) { - CGShadingRelease(surface->sourceShading); - surface->sourceShading = NULL; - } - - if (surface->sourcePattern) { - CGPatternRelease(surface->sourcePattern); - // To tear down the pattern and colorspace - CGContextRestoreGState(surface->cgContext); - - surface->sourcePattern = NULL; - } -} - -/* - * get source/dest image implementation - */ - -/* Read the image from the surface's front buffer */ -static cairo_int_status_t -_cairo_quartz_get_image (cairo_quartz_surface_t *surface, - cairo_image_surface_t **image_out) -{ - unsigned char *imageData; - cairo_image_surface_t *isurf; - - if (IS_EMPTY(surface)) { - *image_out = (cairo_image_surface_t*) cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 0, 0); - return CAIRO_STATUS_SUCCESS; - } - - if (surface->imageSurfaceEquiv) { - *image_out = (cairo_image_surface_t*) cairo_surface_reference(surface->imageSurfaceEquiv); - return CAIRO_STATUS_SUCCESS; - } - - if (_cairo_quartz_is_cgcontext_bitmap_context(surface->cgContext)) { - unsigned int stride; - unsigned int bitinfo; - unsigned int bpc, bpp; - CGColorSpaceRef colorspace; - unsigned int color_comps; - - imageData = (unsigned char *) CGBitmapContextGetData(surface->cgContext); - -#ifdef USE_10_3_WORKAROUNDS - bitinfo = CGBitmapContextGetAlphaInfo (surface->cgContext); -#else - bitinfo = CGBitmapContextGetBitmapInfo (surface->cgContext); -#endif - stride = CGBitmapContextGetBytesPerRow (surface->cgContext); - bpp = CGBitmapContextGetBitsPerPixel (surface->cgContext); - bpc = CGBitmapContextGetBitsPerComponent (surface->cgContext); - - // let's hope they don't add YUV under us - colorspace = CGBitmapContextGetColorSpace (surface->cgContext); - color_comps = CGColorSpaceGetNumberOfComponents(colorspace); - - // XXX TODO: We can handle all of these by converting to - // pixman masks, including non-native-endian masks - if (bpc != 8) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (bpp != 32 && bpp != 8) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (color_comps != 3 && color_comps != 1) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (bpp == 32 && color_comps == 3 && - (bitinfo & kCGBitmapAlphaInfoMask) == kCGImageAlphaPremultipliedFirst && - (bitinfo & kCGBitmapByteOrderMask) == kCGBitmapByteOrder32Host) - { - isurf = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (imageData, - CAIRO_FORMAT_ARGB32, - surface->extents.width, - surface->extents.height, - stride); - } else if (bpp == 32 && color_comps == 3 && - (bitinfo & kCGBitmapAlphaInfoMask) == kCGImageAlphaNoneSkipFirst && - (bitinfo & kCGBitmapByteOrderMask) == kCGBitmapByteOrder32Host) - { - isurf = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (imageData, - CAIRO_FORMAT_RGB24, - surface->extents.width, - surface->extents.height, - stride); - } else if (bpp == 8 && color_comps == 1) - { - isurf = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (imageData, - CAIRO_FORMAT_A8, - surface->extents.width, - surface->extents.height, - stride); - } else { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - } else { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - *image_out = isurf; - return CAIRO_STATUS_SUCCESS; -} - -/* - * Cairo surface backend implementations - */ - -static cairo_status_t -_cairo_quartz_surface_finish (void *abstract_surface) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - - ND((stderr, "_cairo_quartz_surface_finish[%p] cgc: %p\n", surface, surface->cgContext)); - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - /* Restore our saved gstate that we use to reset clipping */ - CGContextRestoreGState (surface->cgContext); - - CGContextRelease (surface->cgContext); - - surface->cgContext = NULL; - - if (surface->imageSurfaceEquiv) { - cairo_surface_destroy (surface->imageSurfaceEquiv); - surface->imageSurfaceEquiv = NULL; - } - - if (surface->imageData) { - free (surface->imageData); - surface->imageData = NULL; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_quartz_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_int_status_t status; - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - - //ND((stderr, "%p _cairo_quartz_surface_acquire_source_image\n", surface)); - - status = _cairo_quartz_get_image (surface, image_out); - if (status) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_quartz_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_surface_destroy ((cairo_surface_t *) image); -} - - -static cairo_status_t -_cairo_quartz_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t status; - - ND((stderr, "%p _cairo_quartz_surface_acquire_dest_image\n", surface)); - - status = _cairo_quartz_get_image (surface, image_out); - if (status) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - *image_rect = surface->extents; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_quartz_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - //cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - - //ND((stderr, "%p _cairo_quartz_surface_release_dest_image\n", surface)); - - cairo_surface_destroy ((cairo_surface_t *) image); -} - -static cairo_surface_t * -_cairo_quartz_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - /*cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;*/ - - cairo_format_t format; - - if (content == CAIRO_CONTENT_COLOR_ALPHA) - format = CAIRO_FORMAT_ARGB32; - else if (content == CAIRO_CONTENT_COLOR) - format = CAIRO_FORMAT_RGB24; - else if (content == CAIRO_CONTENT_ALPHA) - format = CAIRO_FORMAT_A8; - else - return NULL; - - // verify width and height of surface - if (!_cairo_quartz_verify_surface_size(width, height)) { - _cairo_error (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - return cairo_quartz_surface_create (format, width, height); -} - -static cairo_status_t -_cairo_quartz_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_quartz_surface_t *new_surface = NULL; - cairo_format_t new_format; - CGImageRef quartz_image = NULL; - cairo_status_t status; - - *clone_out = NULL; - - // verify width and height of surface - if (!_cairo_quartz_verify_surface_size(width, height)) { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - if (width == 0 || height == 0) { - *clone_out = (cairo_surface_t*) - _cairo_quartz_surface_create_internal (NULL, CAIRO_CONTENT_COLOR_ALPHA, - width, height); - return CAIRO_STATUS_SUCCESS; - } - - if (src->backend->type == CAIRO_SURFACE_TYPE_QUARTZ) { - cairo_quartz_surface_t *qsurf = (cairo_quartz_surface_t *) src; - - if (IS_EMPTY(qsurf)) { - *clone_out = (cairo_surface_t*) - _cairo_quartz_surface_create_internal (NULL, CAIRO_CONTENT_COLOR_ALPHA, - qsurf->extents.width, qsurf->extents.height); - return CAIRO_STATUS_SUCCESS; - } - } - - status = _cairo_surface_to_cgimage ((cairo_surface_t*) abstract_surface, src, &quartz_image); - if (status) - return CAIRO_INT_STATUS_UNSUPPORTED; - - new_format = CAIRO_FORMAT_ARGB32; /* assumed */ - if (_cairo_surface_is_image (src)) { - new_format = ((cairo_image_surface_t *) src)->format; - } - - new_surface = (cairo_quartz_surface_t *) - cairo_quartz_surface_create (new_format, width, height); - - if (quartz_image == NULL) - goto FINISH; - - if (!new_surface || new_surface->base.status) { - CGImageRelease (quartz_image); - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - CGContextSaveGState (new_surface->cgContext); - - CGContextSetCompositeOperation (new_surface->cgContext, - kPrivateCGCompositeCopy); - - CGContextTranslateCTM (new_surface->cgContext, -src_x, -src_y); - CGContextDrawImage (new_surface->cgContext, - CGRectMake (0, 0, CGImageGetWidth(quartz_image), CGImageGetHeight(quartz_image)), - quartz_image); - - CGContextRestoreGState (new_surface->cgContext); - - CGImageRelease (quartz_image); - -FINISH: - *clone_out = (cairo_surface_t*) new_surface; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_quartz_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *extents) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - - *extents = surface->extents; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_quartz_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - - ND((stderr, "%p _cairo_quartz_surface_paint op %d source->type %d\n", surface, op, source->type)); - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - if (op == CAIRO_OPERATOR_DEST) - return CAIRO_STATUS_SUCCESS; - - CGContextSetCompositeOperation (surface->cgContext, _cairo_quartz_cairo_operator_to_quartz (op)); - - action = _cairo_quartz_setup_source (surface, source); - - if (action == DO_SOLID || action == DO_PATTERN) { - CGContextFillRect (surface->cgContext, CGRectMake(surface->extents.x, - surface->extents.y, - surface->extents.width, - surface->extents.height)); - } else if (action == DO_SHADING) { - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - CGContextSaveGState (surface->cgContext); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextTranslateCTM (surface->cgContext, 0, surface->sourceImageRect.size.height); - CGContextScaleCTM (surface->cgContext, 1, -1); - - if (action == DO_IMAGE) - CGContextDrawImage (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - else - CGContextDrawTiledImagePtr (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - CGContextRestoreGState (surface->cgContext); - } else if (action != DO_NOTHING) { - rv = CAIRO_INT_STATUS_UNSUPPORTED; - } - - _cairo_quartz_teardown_source (surface, source); - - ND((stderr, "-- paint\n")); - return rv; -} - -static cairo_int_status_t -_cairo_quartz_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - quartz_stroke_t stroke; - cairo_box_t box; - CGPathRef path_for_unbounded = NULL; - - ND((stderr, "%p _cairo_quartz_surface_fill op %d source->type %d\n", surface, op, source->type)); - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - if (op == CAIRO_OPERATOR_DEST) - return CAIRO_STATUS_SUCCESS; - - /* Check whether the path would be a no-op */ - /* XXX handle unbounded ops */ - if (_cairo_path_fixed_is_empty(path) || - (_cairo_path_fixed_is_box(path, &box) && - box.p1.x == box.p2.x && - box.p1.y == box.p2.y)) - { - return CAIRO_STATUS_SUCCESS; - } - - CGContextSaveGState (surface->cgContext); - - CGContextSetShouldAntialias (surface->cgContext, (antialias != CAIRO_ANTIALIAS_NONE)); - CGContextSetCompositeOperation (surface->cgContext, _cairo_quartz_cairo_operator_to_quartz (op)); - - action = _cairo_quartz_setup_source (surface, source); - - CGContextBeginPath (surface->cgContext); - - stroke.cgContext = surface->cgContext; - stroke.ctm_inverse = NULL; - rv = _cairo_quartz_cairo_path_to_quartz_context (path, &stroke); - if (rv) - goto BAIL; - - if (!_cairo_operator_bounded_by_mask(op) && CGContextCopyPathPtr) - path_for_unbounded = CGContextCopyPathPtr (surface->cgContext); - - if (action == DO_SOLID || action == DO_PATTERN) { - if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextFillPath (surface->cgContext); - else - CGContextEOFillPath (surface->cgContext); - } else if (action == DO_SHADING) { - - // we have to clip and then paint the shading; we can't fill - // with the shading - if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextClip (surface->cgContext); - else - CGContextEOClip (surface->cgContext); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextClip (surface->cgContext); - else - CGContextEOClip (surface->cgContext); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextTranslateCTM (surface->cgContext, 0, surface->sourceImageRect.size.height); - CGContextScaleCTM (surface->cgContext, 1, -1); - - if (action == DO_IMAGE) - CGContextDrawImage (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - else - CGContextDrawTiledImagePtr (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - } else if (action != DO_NOTHING) { - rv = CAIRO_INT_STATUS_UNSUPPORTED; - } - - BAIL: - _cairo_quartz_teardown_source (surface, source); - - CGContextRestoreGState (surface->cgContext); - - if (path_for_unbounded) { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_STROKE_FILL; - ub.u.stroke_fill.cgPath = path_for_unbounded; - ub.u.stroke_fill.fill_rule = fill_rule; - - _cairo_quartz_fixup_unbounded_operation (surface, &ub, antialias); - CGPathRelease (path_for_unbounded); - } - - ND((stderr, "-- fill\n")); - return rv; -} - -static cairo_int_status_t -_cairo_quartz_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - quartz_stroke_t stroke; - CGAffineTransform origCTM, strokeTransform; - CGPathRef path_for_unbounded = NULL; - - ND((stderr, "%p _cairo_quartz_surface_stroke op %d source->type %d\n", surface, op, source->type)); - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - if (op == CAIRO_OPERATOR_DEST) - return CAIRO_STATUS_SUCCESS; - - CGContextSaveGState (surface->cgContext); - - // Turning antialiasing off used to cause misrendering with - // single-pixel lines (e.g. 20,10.5 -> 21,10.5 end up being rendered as 2 pixels). - // That's been since fixed in at least 10.5, and in the latest 10.4 dot releases. - CGContextSetShouldAntialias (surface->cgContext, (antialias != CAIRO_ANTIALIAS_NONE)); - CGContextSetLineWidth (surface->cgContext, style->line_width); - CGContextSetLineCap (surface->cgContext, _cairo_quartz_cairo_line_cap_to_quartz (style->line_cap)); - CGContextSetLineJoin (surface->cgContext, _cairo_quartz_cairo_line_join_to_quartz (style->line_join)); - CGContextSetMiterLimit (surface->cgContext, style->miter_limit); - - origCTM = CGContextGetCTM (surface->cgContext); - - _cairo_quartz_cairo_matrix_to_quartz (ctm, &strokeTransform); - CGContextConcatCTM (surface->cgContext, strokeTransform); - - if (style->dash && style->num_dashes) { -#define STATIC_DASH 32 - float sdash[STATIC_DASH]; - float *fdash = sdash; - unsigned int max_dashes = style->num_dashes; - unsigned int k; - - if (style->num_dashes%2) - max_dashes *= 2; - if (max_dashes > STATIC_DASH) - fdash = _cairo_malloc_ab (max_dashes, sizeof (float)); - if (fdash == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (k = 0; k < max_dashes; k++) - fdash[k] = (float) style->dash[k % style->num_dashes]; - - CGContextSetLineDash (surface->cgContext, style->dash_offset, fdash, max_dashes); - if (fdash != sdash) - free (fdash); - } - - CGContextSetCompositeOperation (surface->cgContext, _cairo_quartz_cairo_operator_to_quartz (op)); - - action = _cairo_quartz_setup_source (surface, source); - - CGContextBeginPath (surface->cgContext); - - stroke.cgContext = surface->cgContext; - stroke.ctm_inverse = ctm_inverse; - rv = _cairo_quartz_cairo_path_to_quartz_context (path, &stroke); - if (rv) - goto BAIL; - - if (!_cairo_operator_bounded_by_mask (op) && CGContextCopyPathPtr) - path_for_unbounded = CGContextCopyPathPtr (surface->cgContext); - - if (action == DO_SOLID || action == DO_PATTERN) { - CGContextStrokePath (surface->cgContext); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - CGContextReplacePathWithStrokedPath (surface->cgContext); - CGContextClip (surface->cgContext); - - CGContextSetCTM (surface->cgContext, origCTM); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextTranslateCTM (surface->cgContext, 0, surface->sourceImageRect.size.height); - CGContextScaleCTM (surface->cgContext, 1, -1); - - if (action == DO_IMAGE) - CGContextDrawImage (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - else - CGContextDrawTiledImagePtr (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - } else if (action == DO_SHADING) { - CGContextReplacePathWithStrokedPath (surface->cgContext); - CGContextClip (surface->cgContext); - - CGContextSetCTM (surface->cgContext, origCTM); - - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } else if (action != DO_NOTHING) { - rv = CAIRO_INT_STATUS_UNSUPPORTED; - } - - BAIL: - _cairo_quartz_teardown_source (surface, source); - - CGContextRestoreGState (surface->cgContext); - - if (path_for_unbounded) { - unbounded_op_data_t ub; - - CGContextBeginPath (surface->cgContext); - - /* recreate the stroke state, but without the CTM, as it's been already baked - * into the path. - */ - CGContextSetShouldAntialias (surface->cgContext, (antialias != CAIRO_ANTIALIAS_NONE)); - CGContextSetLineWidth (surface->cgContext, style->line_width); - CGContextSetLineCap (surface->cgContext, _cairo_quartz_cairo_line_cap_to_quartz (style->line_cap)); - CGContextSetLineJoin (surface->cgContext, _cairo_quartz_cairo_line_join_to_quartz (style->line_join)); - CGContextSetMiterLimit (surface->cgContext, style->miter_limit); - - CGContextAddPath (surface->cgContext, path_for_unbounded); - CGPathRelease (path_for_unbounded); - - CGContextReplacePathWithStrokedPath (surface->cgContext); - path_for_unbounded = CGContextCopyPathPtr (surface->cgContext); - - ub.op = UNBOUNDED_STROKE_FILL; - ub.u.stroke_fill.cgPath = path_for_unbounded; - ub.u.stroke_fill.fill_rule = CAIRO_FILL_RULE_WINDING; - - _cairo_quartz_fixup_unbounded_operation (surface, &ub, antialias); - - CGPathRelease (path_for_unbounded); - } - - ND((stderr, "-- stroke\n")); - return rv; -} - -#if CAIRO_HAS_QUARTZ_FONT -static cairo_int_status_t -_cairo_quartz_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - CGAffineTransform textTransform, ctm; -#define STATIC_BUF_SIZE 64 - CGGlyph glyphs_static[STATIC_BUF_SIZE]; - CGSize cg_advances_static[STATIC_BUF_SIZE]; - CGGlyph *cg_glyphs = &glyphs_static[0]; - CGSize *cg_advances = &cg_advances_static[0]; - - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - cairo_quartz_action_t action; - float xprev, yprev; - int i; - CGFontRef cgfref = NULL; - - cairo_bool_t isClipping = FALSE; - cairo_bool_t didForceFontSmoothing = FALSE; - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - if (num_glyphs <= 0) - return CAIRO_STATUS_SUCCESS; - - if (op == CAIRO_OPERATOR_DEST) - return CAIRO_STATUS_SUCCESS; - - if (cairo_scaled_font_get_type (scaled_font) != CAIRO_FONT_TYPE_QUARTZ) - return CAIRO_INT_STATUS_UNSUPPORTED; - - CGContextSaveGState (surface->cgContext); - - action = _cairo_quartz_setup_source (surface, source); - if (action == DO_SOLID || action == DO_PATTERN) { - CGContextSetTextDrawingMode (surface->cgContext, kCGTextFill); - } else if (action == DO_IMAGE || action == DO_TILED_IMAGE || action == DO_SHADING) { - CGContextSetTextDrawingMode (surface->cgContext, kCGTextClip); - isClipping = TRUE; - } else { - if (action != DO_NOTHING) - rv = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - CGContextSetCompositeOperation (surface->cgContext, _cairo_quartz_cairo_operator_to_quartz (op)); - - /* this doesn't addref */ - cgfref = _cairo_quartz_scaled_font_get_cg_font_ref (scaled_font); - CGContextSetFont (surface->cgContext, cgfref); - CGContextSetFontSize (surface->cgContext, 1.0); - - switch (scaled_font->options.antialias) { - case CAIRO_ANTIALIAS_SUBPIXEL: - CGContextSetShouldAntialias (surface->cgContext, TRUE); - CGContextSetShouldSmoothFonts (surface->cgContext, TRUE); - if (CGContextSetAllowsFontSmoothingPtr && - !CGContextGetAllowsFontSmoothingPtr (surface->cgContext)) - { - didForceFontSmoothing = TRUE; - CGContextSetAllowsFontSmoothingPtr (surface->cgContext, TRUE); - } - break; - case CAIRO_ANTIALIAS_NONE: - CGContextSetShouldAntialias (surface->cgContext, FALSE); - break; - case CAIRO_ANTIALIAS_GRAY: - CGContextSetShouldAntialias (surface->cgContext, TRUE); - CGContextSetShouldSmoothFonts (surface->cgContext, FALSE); - break; - case CAIRO_ANTIALIAS_DEFAULT: - /* Don't do anything */ - break; - } - - if (num_glyphs > STATIC_BUF_SIZE) { - cg_glyphs = (CGGlyph*) _cairo_malloc_ab (num_glyphs, sizeof(CGGlyph)); - if (cg_glyphs == NULL) { - rv = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - - cg_advances = (CGSize*) _cairo_malloc_ab (num_glyphs, sizeof(CGSize)); - if (cg_advances == NULL) { - rv = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - } - - textTransform = CGAffineTransformMake (scaled_font->font_matrix.xx, - scaled_font->font_matrix.yx, - scaled_font->font_matrix.xy, - scaled_font->font_matrix.yy, - 0., 0.); - textTransform = CGAffineTransformScale (textTransform, 1.0, -1.0); - textTransform = CGAffineTransformConcat (CGAffineTransformMake(scaled_font->ctm.xx, - -scaled_font->ctm.yx, - -scaled_font->ctm.xy, - scaled_font->ctm.yy, - 0., 0.), - textTransform); - - CGContextSetTextMatrix (surface->cgContext, textTransform); - - /* Convert our glyph positions to glyph advances. We need n-1 advances, - * since the advance at index 0 is applied after glyph 0. */ - xprev = glyphs[0].x; - yprev = glyphs[0].y; - - cg_glyphs[0] = glyphs[0].index; - - for (i = 1; i < num_glyphs; i++) { - float xf = glyphs[i].x; - float yf = glyphs[i].y; - cg_glyphs[i] = glyphs[i].index; - cg_advances[i-1].width = xf - xprev; - cg_advances[i-1].height = yf - yprev; - xprev = xf; - yprev = yf; - } - - if (_cairo_quartz_osx_version >= 0x1050 && isClipping) { - /* If we're clipping, OSX 10.5 (at least as of 10.5.2) has a - * bug (apple bug ID #5834794) where the glyph - * advances/positions are not transformed by the text matrix - * if kCGTextClip is being used. So, we pre-transform here. - * 10.4 does not have this problem (as of 10.4.11). - */ - for (i = 0; i < num_glyphs - 1; i++) - cg_advances[i] = CGSizeApplyAffineTransform(cg_advances[i], textTransform); - } - -#if 0 - for (i = 0; i < num_glyphs; i++) { - ND((stderr, "[%d: %d %f,%f]\n", i, cg_glyphs[i], cg_advances[i].width, cg_advances[i].height)); - } -#endif - - /* Translate to the first glyph's position before drawing */ - ctm = CGContextGetCTM (surface->cgContext); - CGContextTranslateCTM (surface->cgContext, glyphs[0].x, glyphs[0].y); - - CGContextShowGlyphsWithAdvances (surface->cgContext, - cg_glyphs, - cg_advances, - num_glyphs); - - CGContextSetCTM (surface->cgContext, ctm); - - if (action == DO_IMAGE || action == DO_TILED_IMAGE) { - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextTranslateCTM (surface->cgContext, 0, surface->sourceImageRect.size.height); - CGContextScaleCTM (surface->cgContext, 1, -1); - - if (action == DO_IMAGE) - CGContextDrawImage (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - else - CGContextDrawTiledImagePtr (surface->cgContext, surface->sourceImageRect, surface->sourceImage); - } else if (action == DO_SHADING) { - CGContextConcatCTM (surface->cgContext, surface->sourceTransform); - CGContextDrawShading (surface->cgContext, surface->sourceShading); - } - -BAIL: - _cairo_quartz_teardown_source (surface, source); - - if (didForceFontSmoothing) - CGContextSetAllowsFontSmoothingPtr (surface->cgContext, FALSE); - - CGContextRestoreGState (surface->cgContext); - - if (rv == CAIRO_STATUS_SUCCESS && - cgfref && - !_cairo_operator_bounded_by_mask (op)) - { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_SHOW_GLYPHS; - - ub.u.show_glyphs.isClipping = isClipping; - ub.u.show_glyphs.cg_glyphs = cg_glyphs; - ub.u.show_glyphs.cg_advances = cg_advances; - ub.u.show_glyphs.nglyphs = num_glyphs; - ub.u.show_glyphs.textTransform = textTransform; - ub.u.show_glyphs.font = cgfref; - ub.u.show_glyphs.origin = CGPointMake (glyphs[0].x, glyphs[0].y); - - _cairo_quartz_fixup_unbounded_operation (surface, &ub, scaled_font->options.antialias); - } - - - if (cg_advances != &cg_advances_static[0]) { - free (cg_advances); - } - - if (cg_glyphs != &glyphs_static[0]) { - free (cg_glyphs); - } - - return rv; -} -#endif /* CAIRO_HAS_QUARTZ_FONT */ - -static cairo_int_status_t -_cairo_quartz_surface_mask_with_surface (cairo_quartz_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_surface_pattern_t *mask) -{ - cairo_rectangle_int_t extents; - CGRect rect; - CGImageRef img; - cairo_surface_t *pat_surf = mask->surface; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - CGAffineTransform ctm, mask_matrix; - - status = _cairo_surface_get_extents (pat_surf, &extents); - if (status) - return status; - - // everything would be masked out, so do nothing - if (extents.width == 0 || extents.height == 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_surface_to_cgimage ((cairo_surface_t *) surface, pat_surf, &img); - if (status == CAIRO_STATUS_SUCCESS && img == NULL) - return CAIRO_STATUS_SUCCESS; - if (status) - return status; - - rect = CGRectMake (0.0f, 0.0f, extents.width, extents.height); - - CGContextSaveGState (surface->cgContext); - - /* ClipToMask is essentially drawing an image, so we need to flip the CTM - * to get the image to appear oriented the right way */ - ctm = CGContextGetCTM (surface->cgContext); - - _cairo_quartz_cairo_matrix_to_quartz (&mask->base.matrix, &mask_matrix); - CGContextConcatCTM (surface->cgContext, CGAffineTransformInvert(mask_matrix)); - CGContextTranslateCTM (surface->cgContext, 0.0f, rect.size.height); - CGContextScaleCTM (surface->cgContext, 1.0f, -1.0f); - - CGContextClipToMaskPtr (surface->cgContext, rect, img); - - CGContextSetCTM (surface->cgContext, ctm); - - status = _cairo_quartz_surface_paint (surface, op, source); - - CGContextRestoreGState (surface->cgContext); - - if (!_cairo_operator_bounded_by_mask (op)) { - unbounded_op_data_t ub; - ub.op = UNBOUNDED_MASK; - ub.u.mask.mask = img; - ub.u.mask.maskTransform = CGAffineTransformInvert(mask_matrix); - _cairo_quartz_fixup_unbounded_operation (surface, &ub, CAIRO_ANTIALIAS_NONE); - } - - CGImageRelease (img); - - return status; -} - -/* This is somewhat less than ideal, but it gets the job done; - * it would be better to avoid calling back into cairo. This - * creates a temporary surface to use as the mask. - */ -static cairo_int_status_t -_cairo_quartz_surface_mask_with_generic (cairo_quartz_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - int width = surface->extents.width - surface->extents.x; - int height = surface->extents.height - surface->extents.y; - - cairo_surface_t *gradient_surf = NULL; - cairo_t *gradient_surf_cr = NULL; - - cairo_pattern_union_t surface_pattern; - cairo_int_status_t status; - - /* Render the gradient to a surface */ - gradient_surf = cairo_quartz_surface_create (CAIRO_FORMAT_ARGB32, - width, - height); - gradient_surf_cr = cairo_create(gradient_surf); - cairo_set_source (gradient_surf_cr, mask); - cairo_set_operator (gradient_surf_cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (gradient_surf_cr); - status = cairo_status (gradient_surf_cr); - cairo_destroy (gradient_surf_cr); - - if (status) - goto BAIL; - - _cairo_pattern_init_for_surface (&surface_pattern.surface, gradient_surf); - - status = _cairo_quartz_surface_mask_with_surface (surface, op, source, &surface_pattern.surface); - - _cairo_pattern_fini (&surface_pattern.base); - - BAIL: - if (gradient_surf) - cairo_surface_destroy (gradient_surf); - - return status; -} - -static cairo_int_status_t -_cairo_quartz_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - cairo_int_status_t rv = CAIRO_STATUS_SUCCESS; - - ND((stderr, "%p _cairo_quartz_surface_mask op %d source->type %d mask->type %d\n", surface, op, source->type, mask->type)); - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - if (mask->type == CAIRO_PATTERN_TYPE_SOLID) { - /* This is easy; we just need to paint with the alpha. */ - cairo_solid_pattern_t *solid_mask = (cairo_solid_pattern_t *) mask; - - CGContextSetAlpha (surface->cgContext, solid_mask->color.alpha); - rv = _cairo_quartz_surface_paint (surface, op, source); - CGContextSetAlpha (surface->cgContext, 1.0); - - return rv; - } - - /* If we have CGContextClipToMask, we can do more complex masks */ - if (CGContextClipToMaskPtr) { - /* For these, we can skip creating a temporary surface, since we already have one */ - if (mask->type == CAIRO_PATTERN_TYPE_SURFACE && mask->extend == CAIRO_EXTEND_NONE) - return _cairo_quartz_surface_mask_with_surface (surface, op, source, (cairo_surface_pattern_t *) mask); - - return _cairo_quartz_surface_mask_with_generic (surface, op, source, mask); - } - - /* So, CGContextClipToMask is not present in 10.3.9, so we're - * doomed; if we have imageData, we can do fallback, otherwise - * just pretend success. - */ - if (surface->imageData) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_quartz_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface; - quartz_stroke_t stroke; - cairo_status_t status; - - ND((stderr, "%p _cairo_quartz_surface_intersect_clip_path path: %p\n", surface, path)); - - if (IS_EMPTY(surface)) - return CAIRO_STATUS_SUCCESS; - - if (path == NULL) { - /* If we're being asked to reset the clip, we can only do it - * by restoring the gstate to our previous saved one, and - * saving it again. - * - * Note that this assumes that ALL quartz surface creation - * functions will do a SaveGState first; we do this in create_internal. - */ - CGContextRestoreGState (surface->cgContext); - CGContextSaveGState (surface->cgContext); - } else { - CGContextBeginPath (surface->cgContext); - stroke.cgContext = surface->cgContext; - stroke.ctm_inverse = NULL; - - CGContextSetShouldAntialias (surface->cgContext, (antialias != CAIRO_ANTIALIAS_NONE)); - - /* path must not be empty. */ - CGContextMoveToPoint (surface->cgContext, 0, 0); - status = _cairo_quartz_cairo_path_to_quartz_context (path, &stroke); - if (status) - return status; - - if (fill_rule == CAIRO_FILL_RULE_WINDING) - CGContextClip (surface->cgContext); - else - CGContextEOClip (surface->cgContext); - } - - ND((stderr, "-- intersect_clip_path\n")); - - return CAIRO_STATUS_SUCCESS; -} - -// XXXtodo implement show_page; need to figure out how to handle begin/end - -static const struct _cairo_surface_backend cairo_quartz_surface_backend = { - CAIRO_SURFACE_TYPE_QUARTZ, - _cairo_quartz_surface_create_similar, - _cairo_quartz_surface_finish, - _cairo_quartz_surface_acquire_source_image, - _cairo_quartz_surface_release_source_image, - _cairo_quartz_surface_acquire_dest_image, - _cairo_quartz_surface_release_dest_image, - _cairo_quartz_surface_clone_similar, - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - NULL, /* set_clip_region */ - _cairo_quartz_surface_intersect_clip_path, - _cairo_quartz_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - _cairo_quartz_surface_paint, - _cairo_quartz_surface_mask, - _cairo_quartz_surface_stroke, - _cairo_quartz_surface_fill, -#if CAIRO_HAS_QUARTZ_FONT - _cairo_quartz_surface_show_glyphs, -#else - NULL, /* show_glyphs */ -#endif - - NULL, /* snapshot */ - NULL, /* is_similar */ - NULL, /* reset */ - NULL /* fill_stroke */ -}; - -cairo_quartz_surface_t * -_cairo_quartz_surface_create_internal (CGContextRef cgContext, - cairo_content_t content, - unsigned int width, - unsigned int height) -{ - cairo_quartz_surface_t *surface; - - quartz_ensure_symbols(); - - /* Init the base surface */ - surface = malloc(sizeof(cairo_quartz_surface_t)); - if (surface == NULL) - return (cairo_quartz_surface_t*) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - memset(surface, 0, sizeof(cairo_quartz_surface_t)); - - _cairo_surface_init(&surface->base, &cairo_quartz_surface_backend, - content); - - /* Save our extents */ - surface->extents.x = surface->extents.y = 0; - surface->extents.width = width; - surface->extents.height = height; - - if (IS_EMPTY(surface)) { - surface->cgContext = NULL; - surface->cgContextBaseCTM = CGAffineTransformIdentity; - surface->imageData = NULL; - return surface; - } - - /* Save so we can always get back to a known-good CGContext -- this is - * required for proper behaviour of intersect_clip_path(NULL) - */ - CGContextSaveGState (cgContext); - - surface->cgContext = cgContext; - surface->cgContextBaseCTM = CGContextGetCTM (cgContext); - - surface->imageData = NULL; - surface->imageSurfaceEquiv = NULL; - - return surface; -} - -/** - * cairo_quartz_surface_create_for_cg_context - * @cgContext: the existing CGContext for which to create the surface - * @width: width of the surface, in pixels - * @height: height of the surface, in pixels - * - * Creates a Quartz surface that wraps the given CGContext. The - * CGContext is assumed to be in the standard Cairo coordinate space - * (that is, with the origin at the upper left and the Y axis - * increasing downward). If the CGContext is in the Quartz coordinate - * space (with the origin at the bottom left), then it should be - * flipped before this function is called. The flip can be accomplished - * using a translate and a scale; for example: - * - * - * CGContextTranslateCTM (cgContext, 0.0, height); - * CGContextScaleCTM (cgContext, 1.0, -1.0); - * - * - * All Cairo operations are implemented in terms of Quartz operations, - * as long as Quartz-compatible elements are used (such as Quartz fonts). - * - * Return value: the newly created Cairo surface. - * - * Since: 1.4 - **/ - -cairo_surface_t * -cairo_quartz_surface_create_for_cg_context (CGContextRef cgContext, - unsigned int width, - unsigned int height) -{ - cairo_quartz_surface_t *surf; - - CGContextRetain (cgContext); - - surf = _cairo_quartz_surface_create_internal (cgContext, CAIRO_CONTENT_COLOR_ALPHA, - width, height); - if (surf->base.status) { - CGContextRelease (cgContext); - // create_internal will have set an error - return (cairo_surface_t*) surf; - } - - return (cairo_surface_t *) surf; -} - -/** - * cairo_quartz_surface_create - * @format: format of pixels in the surface to create - * @width: width of the surface, in pixels - * @height: height of the surface, in pixels - * - * Creates a Quartz surface backed by a CGBitmap. The surface is - * created using the Device RGB (or Device Gray, for A8) color space. - * All Cairo operations, including those that require software - * rendering, will succeed on this surface. - * - * Return value: the newly created surface. - * - * Since: 1.4 - **/ -cairo_surface_t * -cairo_quartz_surface_create (cairo_format_t format, - unsigned int width, - unsigned int height) -{ - cairo_quartz_surface_t *surf; - CGContextRef cgc; - CGColorSpaceRef cgColorspace; - CGBitmapInfo bitinfo; - void *imageData; - int stride; - int bitsPerComponent; - - // verify width and height of surface - if (!_cairo_quartz_verify_surface_size(width, height)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - if (width == 0 || height == 0) { - return (cairo_surface_t*) _cairo_quartz_surface_create_internal (NULL, _cairo_content_from_format (format), - width, height); - } - - if (format == CAIRO_FORMAT_ARGB32 || - format == CAIRO_FORMAT_RGB24) - { - cgColorspace = CGColorSpaceCreateDeviceRGB(); - bitinfo = kCGBitmapByteOrder32Host; - if (format == CAIRO_FORMAT_ARGB32) - bitinfo |= kCGImageAlphaPremultipliedFirst; - else - bitinfo |= kCGImageAlphaNoneSkipFirst; - bitsPerComponent = 8; - - /* The Apple docs say that for best performance, the stride and the data - * pointer should be 16-byte aligned. malloc already aligns to 16-bytes, - * so we don't have to anything special on allocation. - */ - stride = width * 4; - stride += (16 - (stride & 15)) & 15; - } else if (format == CAIRO_FORMAT_A8) { - cgColorspace = CGColorSpaceCreateDeviceGray(); - if (width % 4 == 0) - stride = width; - else - stride = (width & ~3) + 4; - bitinfo = kCGImageAlphaNone; - bitsPerComponent = 8; - } else if (format == CAIRO_FORMAT_A1) { - /* I don't think we can usefully support this, as defined by - * cairo_format_t -- these are 1-bit pixels stored in 32-bit - * quantities. - */ - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); - } else { - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); - } - - imageData = _cairo_malloc_ab (height, stride); - if (!imageData) { - CGColorSpaceRelease (cgColorspace); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - /* zero the memory to match the image surface behaviour */ - memset (imageData, 0, height * stride); - - cgc = CGBitmapContextCreate (imageData, - width, - height, - bitsPerComponent, - stride, - cgColorspace, - bitinfo); - CGColorSpaceRelease (cgColorspace); - - if (!cgc) { - free (imageData); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - /* flip the Y axis */ - CGContextTranslateCTM (cgc, 0.0, height); - CGContextScaleCTM (cgc, 1.0, -1.0); - - surf = _cairo_quartz_surface_create_internal (cgc, _cairo_content_from_format (format), - width, height); - if (surf->base.status) { - CGContextRelease (cgc); - free (imageData); - // create_internal will have set an error - return (cairo_surface_t*) surf; - } - - surf->imageData = imageData; - surf->imageSurfaceEquiv = cairo_image_surface_create_for_data (imageData, format, width, height, stride); - - return (cairo_surface_t *) surf; -} - -/** - * cairo_quartz_surface_get_cg_context - * @surface: the Cairo Quartz surface - * - * Returns the CGContextRef that the given Quartz surface is backed - * by. - * - * Return value: the CGContextRef for the given surface. - * - * Since: 1.4 - **/ -CGContextRef -cairo_quartz_surface_get_cg_context (cairo_surface_t *surface) -{ - cairo_quartz_surface_t *quartz = (cairo_quartz_surface_t*)surface; - - if (cairo_surface_get_type(surface) != CAIRO_SURFACE_TYPE_QUARTZ) - return NULL; - - return quartz->cgContext; -} - - -/* Debug stuff */ - -#ifdef QUARTZ_DEBUG - -#include - -void ExportCGImageToPNGFile(CGImageRef inImageRef, char* dest) -{ - Handle dataRef = NULL; - OSType dataRefType; - CFStringRef inPath = CFStringCreateWithCString(NULL, dest, kCFStringEncodingASCII); - - GraphicsExportComponent grex = 0; - unsigned long sizeWritten; - - ComponentResult result; - - // create the data reference - result = QTNewDataReferenceFromFullPathCFString(inPath, kQTNativeDefaultPathStyle, - 0, &dataRef, &dataRefType); - - if (NULL != dataRef && noErr == result) { - // get the PNG exporter - result = OpenADefaultComponent(GraphicsExporterComponentType, kQTFileTypePNG, - &grex); - - if (grex) { - // tell the exporter where to find its source image - result = GraphicsExportSetInputCGImage(grex, inImageRef); - - if (noErr == result) { - // tell the exporter where to save the exporter image - result = GraphicsExportSetOutputDataReference(grex, dataRef, - dataRefType); - - if (noErr == result) { - // write the PNG file - result = GraphicsExportDoExport(grex, &sizeWritten); - } - } - - // remember to close the component - CloseComponent(grex); - } - - // remember to dispose of the data reference handle - DisposeHandle(dataRef); - } -} - -void -quartz_image_to_png (CGImageRef imgref, char *dest) -{ - static int sctr = 0; - char sptr[] = "/Users/vladimir/Desktop/barXXXXX.png"; - - if (dest == NULL) { - fprintf (stderr, "** Writing %p to bar%d\n", imgref, sctr); - sprintf (sptr, "/Users/vladimir/Desktop/bar%d.png", sctr); - sctr++; - dest = sptr; - } - - ExportCGImageToPNGFile(imgref, dest); -} - -void -quartz_surface_to_png (cairo_quartz_surface_t *nq, char *dest) -{ - static int sctr = 0; - char sptr[] = "/Users/vladimir/Desktop/fooXXXXX.png"; - - if (nq->base.type != CAIRO_SURFACE_TYPE_QUARTZ) { - fprintf (stderr, "** quartz_surface_to_png: surface %p isn't quartz!\n", nq); - return; - } - - if (dest == NULL) { - fprintf (stderr, "** Writing %p to foo%d\n", nq, sctr); - sprintf (sptr, "/Users/vladimir/Desktop/foo%d.png", sctr); - sctr++; - dest = sptr; - } - - CGImageRef imgref = CGBitmapContextCreateImage (nq->cgContext); - if (imgref == NULL) { - fprintf (stderr, "quartz surface at %p is not a bitmap context!\n", nq); - return; - } - - ExportCGImageToPNGFile(imgref, dest); - - CGImageRelease(imgref); -} - -#endif /* QUARTZ_DEBUG */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-rectangle.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-rectangle.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-rectangle.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-rectangle.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,185 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -/* XXX We currently have a confusing mix of boxes and rectangles as - * exemplified by this function. A #cairo_box_t is a rectangular area - * represented by the coordinates of the upper left and lower right - * corners, expressed in fixed point numbers. A #cairo_rectangle_int_t is - * also a rectangular area, but represented by the upper left corner - * and the width and the height, as integer numbers. - * - * This function converts a #cairo_box_t to a #cairo_rectangle_int_t by - * increasing the area to the nearest integer coordinates. We should - * standardize on #cairo_rectangle_fixed_t and #cairo_rectangle_int_t, and - * this function could be renamed to the more reasonable - * _cairo_rectangle_fixed_round. - */ - -void -_cairo_box_round_to_rectangle (cairo_box_t *box, cairo_rectangle_int_t *rectangle) -{ - rectangle->x = _cairo_fixed_integer_floor (box->p1.x); - rectangle->y = _cairo_fixed_integer_floor (box->p1.y); - rectangle->width = _cairo_fixed_integer_ceil (box->p2.x) - rectangle->x; - rectangle->height = _cairo_fixed_integer_ceil (box->p2.y) - rectangle->y; -} - -void -_cairo_rectangle_intersect (cairo_rectangle_int_t *dest, cairo_rectangle_int_t *src) -{ - int x1, y1, x2, y2; - - x1 = MAX (dest->x, src->x); - y1 = MAX (dest->y, src->y); - x2 = MIN (dest->x + dest->width, src->x + src->width); - y2 = MIN (dest->y + dest->height, src->y + src->height); - - if (x1 >= x2 || y1 >= y2) { - dest->x = 0; - dest->y = 0; - dest->width = 0; - dest->height = 0; - } else { - dest->x = x1; - dest->y = y1; - dest->width = x2 - x1; - dest->height = y2 - y1; - } -} - - -#define P1x (line->p1.x) -#define P1y (line->p1.y) -#define P2x (line->p2.x) -#define P2y (line->p2.y) -#define B1x (box->p1.x) -#define B1y (box->p1.y) -#define B2x (box->p2.x) -#define B2y (box->p2.y) - -/* - * Check whether any part of line intersects box. This function essentially - * computes whether the ray starting at line->p1 in the direction of line->p2 - * intersects the box before it reaches p2. Normally, this is done - * by dividing by the lengths of the line projected onto each axis. Because - * we're in fixed point, this function does a bit more work to avoid having to - * do the division -- we don't care about the actual intersection point, so - * it's of no interest to us. - */ - -cairo_bool_t -_cairo_box_intersects_line_segment (cairo_box_t *box, cairo_line_t *line) -{ - cairo_fixed_t t1=0, t2=0, t3=0, t4=0; - cairo_int64_t t1y, t2y, t3x, t4x; - - cairo_fixed_t xlen, ylen; - - if (_cairo_box_contains_point(box, &line->p1) || - _cairo_box_contains_point(box, &line->p2)) - return TRUE; - - xlen = P2x - P1x; - ylen = P2y - P1y; - - if (xlen) { - if (xlen > 0) { - t1 = B1x - P1x; - t2 = B2x - P1x; - } else { - t1 = P1x - B2x; - t2 = P1x - B1x; - xlen = - xlen; - } - - if ((t1 < 0 || t1 > xlen) && - (t2 < 0 || t2 > xlen)) - return FALSE; - } else { - /* Fully vertical line -- check that X is in bounds */ - if (P1x < B1x || P1x > B2x) - return FALSE; - } - - if (ylen) { - if (ylen > 0) { - t3 = B1y - P1y; - t4 = B2y - P1y; - } else { - t3 = P1y - B2y; - t4 = P1y - B1y; - ylen = - ylen; - } - - if ((t3 < 0 || t3 > ylen) && - (t4 < 0 || t4 > ylen)) - return FALSE; - } else { - /* Fully horizontal line -- check Y */ - if (P1y < B1y || P1y > B2y) - return FALSE; - } - - /* If we had a horizontal or vertical line, then it's already been checked */ - if (P1x == P2x || P1y == P2y) - return TRUE; - - /* Check overlap. Note that t1 < t2 and t3 < t4 here. */ - t1y = _cairo_int32x32_64_mul (t1, ylen); - t2y = _cairo_int32x32_64_mul (t2, ylen); - t3x = _cairo_int32x32_64_mul (t3, xlen); - t4x = _cairo_int32x32_64_mul (t4, xlen); - - if (_cairo_int64_lt(t1y, t4x) && - _cairo_int64_lt(t3x, t2y)) - return TRUE; - - return FALSE; -} - -cairo_bool_t -_cairo_box_contains_point (cairo_box_t *box, cairo_point_t *point) -{ - if (point->x < box->p1.x || point->x > box->p2.x || - point->y < box->p1.y || point->y > box->p2.y) - return FALSE; - return TRUE; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-reference-count-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-reference-count-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-reference-count-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-reference-count-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Chris Wilson - */ - -#ifndef CAIRO_REFRENCE_COUNT_PRIVATE_H -#define CAIRO_REFRENCE_COUNT_PRIVATE_H - -#include "cairo-atomic-private.h" - -CAIRO_BEGIN_DECLS - -/* Encapsulate operations on the object's reference count */ -typedef struct { - cairo_atomic_int_t ref_count; -} cairo_reference_count_t; - -#define _cairo_reference_count_inc(RC) _cairo_atomic_int_inc (&(RC)->ref_count) -#define _cairo_reference_count_dec_and_test(RC) _cairo_atomic_int_dec_and_test (&(RC)->ref_count) - -#define CAIRO_REFERENCE_COUNT_INIT(RC, VALUE) ((RC)->ref_count = (VALUE)) - -#define CAIRO_REFERENCE_COUNT_GET_VALUE(RC) _cairo_atomic_int_get (&(RC)->ref_count) -#define CAIRO_REFERENCE_COUNT_SET_VALUE(RC, VALUE) _cairo_atomic_int_set (&(RC)->ref_count, (VALUE)) - -#define CAIRO_REFERENCE_COUNT_INVALID_VALUE ((cairo_atomic_int_t) -1) -#define CAIRO_REFERENCE_COUNT_INVALID {CAIRO_REFERENCE_COUNT_INVALID_VALUE} - -#define CAIRO_REFERENCE_COUNT_IS_INVALID(RC) (CAIRO_REFERENCE_COUNT_GET_VALUE (RC) == CAIRO_REFERENCE_COUNT_INVALID_VALUE) - -#define CAIRO_REFERENCE_COUNT_HAS_REFERENCE(RC) (CAIRO_REFERENCE_COUNT_GET_VALUE (RC) > 0) - -CAIRO_END_DECLS - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-region.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-region.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-region.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-region.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Owen Taylor - * Vladimir Vukicevic - */ - -#include "cairoint.h" - -void -_cairo_region_init (cairo_region_t *region) -{ - pixman_region_init (®ion->rgn); -} - -void -_cairo_region_init_rect (cairo_region_t *region, - cairo_rectangle_int_t *rect) -{ - pixman_region_init_rect (®ion->rgn, - rect->x, rect->y, - rect->width, rect->height); -} - -cairo_int_status_t -_cairo_region_init_boxes (cairo_region_t *region, - cairo_box_int_t *boxes, - int count) -{ - pixman_box16_t stack_pboxes[CAIRO_STACK_ARRAY_LENGTH (pixman_box16_t)]; - pixman_box16_t *pboxes = stack_pboxes; - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - int i; - - if (count > ARRAY_LENGTH(stack_pboxes)) { - pboxes = _cairo_malloc_ab (count, sizeof(pixman_box16_t)); - if (pboxes == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < count; i++) { - pboxes[i].x1 = boxes[i].p1.x; - pboxes[i].y1 = boxes[i].p1.y; - pboxes[i].x2 = boxes[i].p2.x; - pboxes[i].y2 = boxes[i].p2.y; - } - - if (!pixman_region_init_rects (®ion->rgn, pboxes, count)) - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (pboxes != stack_pboxes) - free (pboxes); - - return status; -} - -void -_cairo_region_fini (cairo_region_t *region) -{ - pixman_region_fini (®ion->rgn); -} - -cairo_int_status_t -_cairo_region_copy (cairo_region_t *dst, cairo_region_t *src) -{ - if (!pixman_region_copy (&dst->rgn, &src->rgn)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -int -_cairo_region_num_boxes (cairo_region_t *region) -{ - return pixman_region_n_rects (®ion->rgn); -} - -cairo_int_status_t -_cairo_region_get_boxes (cairo_region_t *region, int *num_boxes, cairo_box_int_t **boxes) -{ - int nboxes; - pixman_box16_t *pboxes; - cairo_box_int_t *cboxes; - int i; - - pboxes = pixman_region_rectangles (®ion->rgn, &nboxes); - - if (nboxes == 0) { - *num_boxes = 0; - *boxes = NULL; - return CAIRO_STATUS_SUCCESS; - } - - cboxes = _cairo_malloc_ab (nboxes, sizeof(cairo_box_int_t)); - if (cboxes == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (i = 0; i < nboxes; i++) { - cboxes[i].p1.x = pboxes[i].x1; - cboxes[i].p1.y = pboxes[i].y1; - cboxes[i].p2.x = pboxes[i].x2; - cboxes[i].p2.y = pboxes[i].y2; - } - - *num_boxes = nboxes; - *boxes = cboxes; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_region_boxes_fini (cairo_region_t *region, cairo_box_int_t *boxes) -{ - free (boxes); -} - -/** - * _cairo_region_get_extents: - * @region: a #cairo_region_t - * @rect: rectangle into which to store the extents - * - * Gets the bounding box of a region as a #cairo_rectangle_int_t - **/ -void -_cairo_region_get_extents (cairo_region_t *region, cairo_rectangle_int_t *extents) -{ - pixman_box16_t *pextents = pixman_region_extents (®ion->rgn); - - extents->x = pextents->x1; - extents->y = pextents->y1; - extents->width = pextents->x2 - pextents->x1; - extents->height = pextents->y2 - pextents->y1; -} - -cairo_int_status_t -_cairo_region_subtract (cairo_region_t *dst, cairo_region_t *a, cairo_region_t *b) -{ - if (!pixman_region_subtract (&dst->rgn, &a->rgn, &b->rgn)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_int_status_t -_cairo_region_intersect (cairo_region_t *dst, cairo_region_t *a, cairo_region_t *b) -{ - if (!pixman_region_intersect (&dst->rgn, &a->rgn, &b->rgn)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_int_status_t -_cairo_region_union_rect (cairo_region_t *dst, - cairo_region_t *src, - cairo_rectangle_int_t *rect) -{ - if (!pixman_region_union_rect (&dst->rgn, &src->rgn, - rect->x, rect->y, - rect->width, rect->height)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_bool_t -_cairo_region_not_empty (cairo_region_t *region) -{ - return (cairo_bool_t) pixman_region_not_empty (®ion->rgn); -} - -void -_cairo_region_translate (cairo_region_t *region, - int x, int y) -{ - pixman_region_translate (®ion->rgn, x, y); -} - -pixman_region_overlap_t -_cairo_region_contains_rectangle (cairo_region_t *region, cairo_rectangle_int_t *rect) -{ - pixman_box16_t pbox; - - pbox.x1 = rect->x; - pbox.y1 = rect->y; - pbox.x2 = rect->x + rect->width; - pbox.y2 = rect->y + rect->height; - - return pixman_region_contains_rectangle (®ion->rgn, &pbox); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-region-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-region-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-region-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-region-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Mozilla Corporation - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Mozilla Corporation - * - * Contributor(s): - * Vladimir Vukicevic - */ - -#ifndef CAIRO_REGION_PRIVATE_H -#define CAIRO_REGION_PRIVATE_H - -#include - -#include "cairo-compiler-private.h" - -/* #cairo_region_t is defined in cairoint.h */ - -struct _cairo_region { - pixman_region16_t rgn; -}; - -cairo_private void -_cairo_region_init (cairo_region_t *region); - -cairo_private void -_cairo_region_init_rect (cairo_region_t *region, - cairo_rectangle_int_t *rect); - -cairo_private cairo_int_status_t -_cairo_region_init_boxes (cairo_region_t *region, - cairo_box_int_t *boxes, - int count); - -cairo_private void -_cairo_region_fini (cairo_region_t *region); - -cairo_private cairo_int_status_t -_cairo_region_copy (cairo_region_t *dst, - cairo_region_t *src); - -cairo_private int -_cairo_region_num_boxes (cairo_region_t *region); - -cairo_private cairo_int_status_t -_cairo_region_get_boxes (cairo_region_t *region, - int *num_boxes, - cairo_box_int_t **boxes); - -cairo_private void -_cairo_region_boxes_fini (cairo_region_t *region, - cairo_box_int_t *boxes); - -cairo_private void -_cairo_region_get_extents (cairo_region_t *region, - cairo_rectangle_int_t *extents); - -cairo_private cairo_int_status_t -_cairo_region_subtract (cairo_region_t *dst, - cairo_region_t *a, - cairo_region_t *b); - -cairo_private cairo_int_status_t -_cairo_region_intersect (cairo_region_t *dst, - cairo_region_t *a, - cairo_region_t *b); - -cairo_private cairo_int_status_t -_cairo_region_union_rect (cairo_region_t *dst, - cairo_region_t *src, - cairo_rectangle_int_t *rect); - -cairo_private cairo_bool_t -_cairo_region_not_empty (cairo_region_t *region); - -cairo_private void -_cairo_region_translate (cairo_region_t *region, - int x, int y); - -cairo_private pixman_region_overlap_t -_cairo_region_contains_rectangle (cairo_region_t *region, cairo_rectangle_int_t *box); - - -#endif /* CAIRO_REGION_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1947 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* - * Copyright © 2005 Keith Packard - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith Packard - * Carl D. Worth - * Graydon Hoare - * Owen Taylor - * Behdad Esfahbod - */ - -#include "cairoint.h" -#include "cairo-scaled-font-private.h" - -/* - * Notes: - * - * To store rasterizations of glyphs, we use an image surface and the - * device offset to represent the glyph origin. - * - * A device_transform converts from device space (a conceptual space) to - * surface space. For simple cases of translation only, it's called a - * device_offset and is public API (cairo_surface_[gs]et_device_offset()). - * A possibly better name for those functions could have been - * cairo_surface_[gs]et_origin(). So, that's what they do: they set where - * the device-space origin (0,0) is in the surface. If the origin is inside - * the surface, device_offset values are positive. It may look like this: - * - * Device space: - * (-x,-y) <-- negative numbers - * +----------------+ - * | . | - * | . | - * |......(0,0) <---|-- device-space origin - * | | - * | | - * +----------------+ - * (width-x,height-y) - * - * Surface space: - * (0,0) <-- surface-space origin - * +---------------+ - * | . | - * | . | - * |......(x,y) <--|-- device_offset - * | | - * | | - * +---------------+ - * (width,height) - * - * In other words: device_offset is the coordinates of the device-space - * origin relative to the top-left of the surface. - * - * We use device offsets in a couple of places: - * - * - Public API: To let toolkits like Gtk+ give user a surface that - * only represents part of the final destination (say, the expose - * area), but has the same device space as the destination. In these - * cases device_offset is typically negative. Example: - * - * application window - * +---------------+ - * | . | - * | (x,y). | - * |......+---+ | - * | | | <--|-- expose area - * | +---+ | - * +---------------+ - * - * In this case, the user of cairo API can set the device_space on - * the expose area to (-x,-y) to move the device space origin to that - * of the application window, such that drawing in the expose area - * surface and painting it in the application window has the same - * effect as drawing in the application window directly. Gtk+ has - * been using this feature. - * - * - Glyph surfaces: In most font rendering systems, glyph surfaces - * have an origin at (0,0) and a bounding box that is typically - * represented as (x_bearing,y_bearing,width,height). Depending on - * which way y progresses in the system, y_bearing may typically be - * negative (for systems similar to cairo, with origin at top left), - * or be positive (in systems like PDF with origin at bottom left). - * No matter which is the case, it is important to note that - * (x_bearing,y_bearing) is the coordinates of top-left of the glyph - * relative to the glyph origin. That is, for example: - * - * Scaled-glyph space: - * - * (x_bearing,y_bearing) <-- negative numbers - * +----------------+ - * | . | - * | . | - * |......(0,0) <---|-- glyph origin - * | | - * | | - * +----------------+ - * (width+x_bearing,height+y_bearing) - * - * Note the similarity of the origin to the device space. That is - * exactly how we use the device_offset to represent scaled glyphs: - * to use the device-space origin as the glyph origin. - * - * Now compare the scaled-glyph space to device-space and surface-space - * and convince yourself that: - * - * (x_bearing,y_bearing) = (-x,-y) = - device_offset - * - * That's right. If you are not convinced yet, contrast the definition - * of the two: - * - * "(x_bearing,y_bearing) is the coordinates of top-left of the - * glyph relative to the glyph origin." - * - * "In other words: device_offset is the coordinates of the - * device-space origin relative to the top-left of the surface." - * - * and note that glyph origin = device-space origin. - */ - -static cairo_bool_t -_cairo_scaled_glyph_keys_equal (const void *abstract_key_a, const void *abstract_key_b) -{ - const cairo_scaled_glyph_t *key_a = abstract_key_a; - const cairo_scaled_glyph_t *key_b = abstract_key_b; - - return (_cairo_scaled_glyph_index (key_a) == - _cairo_scaled_glyph_index (key_b)); -} - -static void -_cairo_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph) -{ - cairo_scaled_font_t *scaled_font = scaled_glyph->scaled_font; - const cairo_surface_backend_t *surface_backend = scaled_font->surface_backend; - - if (surface_backend != NULL && surface_backend->scaled_glyph_fini != NULL) - surface_backend->scaled_glyph_fini (scaled_glyph, scaled_font); - if (scaled_glyph->surface != NULL) - cairo_surface_destroy (&scaled_glyph->surface->base); - if (scaled_glyph->path != NULL) - _cairo_path_fixed_destroy (scaled_glyph->path); -} - -static void -_cairo_scaled_glyph_destroy (void *abstract_glyph) -{ - cairo_scaled_glyph_t *scaled_glyph = abstract_glyph; - _cairo_scaled_glyph_fini (scaled_glyph); - free (scaled_glyph); -} - -#define ZOMBIE 0 -static const cairo_scaled_font_t _cairo_scaled_font_nil = { - { ZOMBIE }, /* hash_entry */ - CAIRO_STATUS_NO_MEMORY, /* status */ - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ - { 0, 0, 0, NULL }, /* user_data */ - NULL, /* font_face */ - { 1., 0., 0., 1., 0, 0}, /* font_matrix */ - { 1., 0., 0., 1., 0, 0}, /* ctm */ - { CAIRO_ANTIALIAS_DEFAULT, /* options */ - CAIRO_SUBPIXEL_ORDER_DEFAULT, - CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_METRICS_DEFAULT} , - { 1., 0., 0., 1., 0, 0}, /* scale */ - { 1., 0., 0., 1., 0, 0}, /* scale_inverse */ - { 0., 0., 0., 0., 0. }, /* extents */ - CAIRO_MUTEX_NIL_INITIALIZER,/* mutex */ - NULL, /* glyphs */ - NULL, /* surface_backend */ - NULL, /* surface_private */ - CAIRO_SCALED_FONT_BACKEND_DEFAULT, -}; - -/** - * _cairo_scaled_font_set_error: - * @scaled_font: a scaled_font - * @status: a status value indicating an error, (eg. not - * CAIRO_STATUS_SUCCESS) - * - * Atomically sets scaled_font->status to @status and calls _cairo_error; - * - * All assignments of an error status to scaled_font->status should happen - * through _cairo_scaled_font_set_error(). Note that due to the nature of - * the atomic operation, it is not safe to call this function on the nil - * objects. - * - * The purpose of this function is to allow the user to set a - * breakpoint in _cairo_error() to generate a stack trace for when the - * user causes cairo to detect an error. - * - * Return value: the error status. - **/ -cairo_status_t -_cairo_scaled_font_set_error (cairo_scaled_font_t *scaled_font, - cairo_status_t status) -{ - if (status == CAIRO_STATUS_SUCCESS) - return status; - - /* Don't overwrite an existing error. This preserves the first - * error, which is the most significant. */ - _cairo_status_set_error (&scaled_font->status, status); - - return _cairo_error (status); -} - -/** - * cairo_scaled_font_get_type: - * @scaled_font: a #cairo_scaled_font_t - * - * This function returns the type of the backend used to create - * a scaled font. See #cairo_font_type_t for available types. - * - * Return value: The type of @scaled_font. - * - * Since: 1.2 - **/ -cairo_font_type_t -cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font) -{ - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&scaled_font->ref_count)) - return CAIRO_FONT_TYPE_TOY; - - return scaled_font->backend->type; -} - -/** - * cairo_scaled_font_status: - * @scaled_font: a #cairo_scaled_font_t - * - * Checks whether an error has previously occurred for this - * scaled_font. - * - * Return value: %CAIRO_STATUS_SUCCESS or another error such as - * %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_status_t -cairo_scaled_font_status (cairo_scaled_font_t *scaled_font) -{ - return scaled_font->status; -} -slim_hidden_def (cairo_scaled_font_status); - -/* Here we keep a unique mapping from - * font_face/matrix/ctm/font_options => #cairo_scaled_font_t. - * - * Here are the things that we want to map: - * - * a) All otherwise referenced #cairo_scaled_font_t's - * b) Some number of not otherwise referenced #cairo_scaled_font_t's - * - * The implementation uses a hash table which covers (a) - * completely. Then, for (b) we have an array of otherwise - * unreferenced fonts (holdovers) which are expired in - * least-recently-used order. - * - * The cairo_scaled_font_create() code gets to treat this like a regular - * hash table. All of the magic for the little holdover cache is in - * cairo_scaled_font_reference() and cairo_scaled_font_destroy(). - */ - -/* This defines the size of the holdover array ... that is, the number - * of scaled fonts we keep around even when not otherwise referenced - */ -#define CAIRO_SCALED_FONT_MAX_HOLDOVERS 256 - -typedef struct _cairo_scaled_font_map { - cairo_hash_table_t *hash_table; - cairo_scaled_font_t *holdovers[CAIRO_SCALED_FONT_MAX_HOLDOVERS]; - int num_holdovers; -} cairo_scaled_font_map_t; - -static cairo_scaled_font_map_t *cairo_scaled_font_map = NULL; - -static int -_cairo_scaled_font_keys_equal (const void *abstract_key_a, const void *abstract_key_b); - -static cairo_scaled_font_map_t * -_cairo_scaled_font_map_lock (void) -{ - CAIRO_MUTEX_LOCK (_cairo_scaled_font_map_mutex); - - if (cairo_scaled_font_map == NULL) { - cairo_scaled_font_map = malloc (sizeof (cairo_scaled_font_map_t)); - if (cairo_scaled_font_map == NULL) - goto CLEANUP_MUTEX_LOCK; - - cairo_scaled_font_map->hash_table = - _cairo_hash_table_create (_cairo_scaled_font_keys_equal); - - if (cairo_scaled_font_map->hash_table == NULL) - goto CLEANUP_SCALED_FONT_MAP; - - cairo_scaled_font_map->num_holdovers = 0; - } - - return cairo_scaled_font_map; - - CLEANUP_SCALED_FONT_MAP: - free (cairo_scaled_font_map); - cairo_scaled_font_map = NULL; - CLEANUP_MUTEX_LOCK: - CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_map_mutex); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; -} - -static void -_cairo_scaled_font_map_unlock (void) -{ - CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_map_mutex); -} - -void -_cairo_scaled_font_map_destroy (void) -{ - int i; - cairo_scaled_font_map_t *font_map; - cairo_scaled_font_t *scaled_font; - - CAIRO_MUTEX_LOCK (_cairo_scaled_font_map_mutex); - - font_map = cairo_scaled_font_map; - if (font_map == NULL) { - goto CLEANUP_MUTEX_LOCK; - } - - for (i = 0; i < font_map->num_holdovers; i++) { - scaled_font = font_map->holdovers[i]; - /* We should only get here through the reset_static_data path - * and there had better not be any active references at that - * point. */ - assert (! CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&scaled_font->ref_count)); - _cairo_hash_table_remove (font_map->hash_table, - &scaled_font->hash_entry); - _cairo_scaled_font_fini (scaled_font); - free (scaled_font); - } - - _cairo_hash_table_destroy (font_map->hash_table); - - free (cairo_scaled_font_map); - cairo_scaled_font_map = NULL; - - CLEANUP_MUTEX_LOCK: - CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_map_mutex); -} - -/* Fowler / Noll / Vo (FNV) Hash (http://www.isthe.com/chongo/tech/comp/fnv/) - * - * Not necessarily better than a lot of other hashes, but should be OK, and - * well tested with binary data. - */ - -#define FNV_32_PRIME ((uint32_t)0x01000193) -#define FNV1_32_INIT ((uint32_t)0x811c9dc5) - -static uint32_t -_hash_bytes_fnv (unsigned char *buffer, - int len, - uint32_t hval) -{ - while (len--) { - hval *= FNV_32_PRIME; - hval ^= *buffer++; - } - - return hval; -} - -static void -_cairo_scaled_font_init_key (cairo_scaled_font_t *scaled_font, - cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options) -{ - uint32_t hash = FNV1_32_INIT; - - scaled_font->status = CAIRO_STATUS_SUCCESS; - scaled_font->font_face = font_face; - scaled_font->font_matrix = *font_matrix; - scaled_font->ctm = *ctm; - /* ignore translation values in the ctm */ - scaled_font->ctm.x0 = 0.; - scaled_font->ctm.y0 = 0.; - _cairo_font_options_init_copy (&scaled_font->options, options); - - /* We do a bytewise hash on the font matrices */ - hash = _hash_bytes_fnv ((unsigned char *)(&scaled_font->font_matrix.xx), - sizeof(cairo_matrix_t), hash); - hash = _hash_bytes_fnv ((unsigned char *)(&scaled_font->ctm.xx), - sizeof(cairo_matrix_t), hash); - - hash ^= (unsigned long) scaled_font->font_face; - - hash ^= cairo_font_options_hash (&scaled_font->options); - - assert (hash != ZOMBIE); - scaled_font->hash_entry.hash = hash; -} - -static cairo_bool_t -_cairo_scaled_font_keys_equal (const void *abstract_key_a, const void *abstract_key_b) -{ - const cairo_scaled_font_t *key_a = abstract_key_a; - const cairo_scaled_font_t *key_b = abstract_key_b; - - return (key_a->font_face == key_b->font_face && - memcmp ((unsigned char *)(&key_a->font_matrix.xx), - (unsigned char *)(&key_b->font_matrix.xx), - sizeof(cairo_matrix_t)) == 0 && - memcmp ((unsigned char *)(&key_a->ctm.xx), - (unsigned char *)(&key_b->ctm.xx), - sizeof(double) * 4) == 0 && - cairo_font_options_equal (&key_a->options, &key_b->options)); -} - -/* XXX: This 256 number is arbitary---we've never done any measurement - * of this. In fact, having a per-font glyph caches each managed - * separately is probably not what we want anyway. Would probably be - * much better to have a single cache for glyphs with random - * replacement across all glyphs of all fonts. */ -#define MAX_GLYPHS_CACHED_PER_FONT 256 - -/* - * Basic #cairo_scaled_font_t object management - */ - -cairo_status_t -_cairo_scaled_font_init (cairo_scaled_font_t *scaled_font, - cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - const cairo_scaled_font_backend_t *backend) -{ - cairo_status_t status; - - status = cairo_font_options_status ((cairo_font_options_t *) options); - if (status) - return status; - - _cairo_scaled_font_init_key (scaled_font, font_face, - font_matrix, ctm, options); - - cairo_matrix_multiply (&scaled_font->scale, - &scaled_font->font_matrix, - &scaled_font->ctm); - - scaled_font->scale_inverse = scaled_font->scale; - status = cairo_matrix_invert (&scaled_font->scale_inverse); - if (status) { - /* If the font scale matrix is rank 0, just using an all-zero inverse matrix - * makes everything work correctly. This make font size 0 work without - * producing an error. - * - * FIXME: If the scale is rank 1, we still go into error mode. But then - * again, that's what we doo everywhere in cairo. - * - * Also, the check for == 0. below may bee too harsh... - */ - if (scaled_font->scale.xx == 0. && scaled_font->scale.xy == 0. && - scaled_font->scale.yx == 0. && scaled_font->scale.yy == 0.) - cairo_matrix_init (&scaled_font->scale_inverse, - 0, 0, 0, 0, - -scaled_font->scale.x0, - -scaled_font->scale.y0); - else - return status; - } - - scaled_font->glyphs = _cairo_cache_create (_cairo_scaled_glyph_keys_equal, - _cairo_scaled_glyph_destroy, - MAX_GLYPHS_CACHED_PER_FONT); - if (scaled_font->glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - CAIRO_REFERENCE_COUNT_INIT (&scaled_font->ref_count, 1); - - _cairo_user_data_array_init (&scaled_font->user_data); - - cairo_font_face_reference (font_face); - - CAIRO_MUTEX_INIT (scaled_font->mutex); - - scaled_font->surface_backend = NULL; - scaled_font->surface_private = NULL; - - scaled_font->backend = backend; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_scaled_font_freeze_cache (cairo_scaled_font_t *scaled_font) -{ - _cairo_cache_freeze (scaled_font->glyphs); -} - -void -_cairo_scaled_font_thaw_cache (cairo_scaled_font_t *scaled_font) -{ - _cairo_cache_thaw (scaled_font->glyphs); -} - -void -_cairo_scaled_font_reset_cache (cairo_scaled_font_t *scaled_font) -{ - _cairo_cache_destroy (scaled_font->glyphs); - scaled_font->glyphs = _cairo_cache_create (_cairo_scaled_glyph_keys_equal, - _cairo_scaled_glyph_destroy, - MAX_GLYPHS_CACHED_PER_FONT); -} - -cairo_status_t -_cairo_scaled_font_set_metrics (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *fs_metrics) -{ - cairo_status_t status; - double font_scale_x, font_scale_y; - - status = _cairo_matrix_compute_scale_factors (&scaled_font->font_matrix, - &font_scale_x, &font_scale_y, - /* XXX */ 1); - if (status) - return status; - - /* - * The font responded in unscaled units, scale by the font - * matrix scale factors to get to user space - */ - - scaled_font->extents.ascent = fs_metrics->ascent * font_scale_y; - scaled_font->extents.descent = fs_metrics->descent * font_scale_y; - scaled_font->extents.height = fs_metrics->height * font_scale_y; - scaled_font->extents.max_x_advance = fs_metrics->max_x_advance * font_scale_x; - scaled_font->extents.max_y_advance = fs_metrics->max_y_advance * font_scale_y; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_scaled_font_fini (cairo_scaled_font_t *scaled_font) -{ - if (scaled_font->font_face != NULL) - cairo_font_face_destroy (scaled_font->font_face); - - if (scaled_font->glyphs != NULL) - _cairo_cache_destroy (scaled_font->glyphs); - - CAIRO_MUTEX_FINI (scaled_font->mutex); - - if (scaled_font->surface_backend != NULL && - scaled_font->surface_backend->scaled_font_fini != NULL) - scaled_font->surface_backend->scaled_font_fini (scaled_font); - - scaled_font->backend->fini (scaled_font); - - _cairo_user_data_array_fini (&scaled_font->user_data); -} - -/** - * cairo_scaled_font_create: - * @font_face: a #cairo_font_face_t - * @font_matrix: font space to user space transformation matrix for the - * font. In the simplest case of a N point font, this matrix is - * just a scale by N, but it can also be used to shear the font - * or stretch it unequally along the two axes. See - * cairo_set_font_matrix(). - * @ctm: user to device transformation matrix with which the font will - * be used. - * @options: options to use when getting metrics for the font and - * rendering with it. A %NULL pointer will be interpreted as - * meaning the default options. - * - * Creates a #cairo_scaled_font_t object from a font face and matrices that - * describe the size of the font and the environment in which it will - * be used. - * - * Return value: a newly created #cairo_scaled_font_t. Destroy with - * cairo_scaled_font_destroy() - **/ -cairo_scaled_font_t * -cairo_scaled_font_create (cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options) -{ - cairo_status_t status; - cairo_scaled_font_map_t *font_map; - cairo_scaled_font_t key, *scaled_font = NULL; - - if (font_face->status) - return _cairo_scaled_font_create_in_error (font_face->status); - - status = cairo_font_options_status ((cairo_font_options_t *) options); - if (status) - return _cairo_scaled_font_create_in_error (status); - - /* Note that degenerate ctm or font_matrix *are* allowed. - * We want to support a font size of 0. */ - - font_map = _cairo_scaled_font_map_lock (); - if (font_map == NULL) - return _cairo_scaled_font_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - _cairo_scaled_font_init_key (&key, font_face, - font_matrix, ctm, options); - - /* Return existing scaled_font if it exists in the hash table. */ - if (_cairo_hash_table_lookup (font_map->hash_table, &key.hash_entry, - (cairo_hash_entry_t**) &scaled_font)) - { - /* If the original reference count is 0, then this font must have - * been found in font_map->holdovers, (which means this caching is - * actually working). So now we remove it from the holdovers - * array. */ - if (! CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&scaled_font->ref_count)) { - int i; - - for (i = 0; i < font_map->num_holdovers; i++) - if (font_map->holdovers[i] == scaled_font) - break; - assert (i < font_map->num_holdovers); - - font_map->num_holdovers--; - memmove (&font_map->holdovers[i], - &font_map->holdovers[i+1], - (font_map->num_holdovers - i) * sizeof (cairo_scaled_font_t*)); - - /* reset any error status */ - scaled_font->status = CAIRO_STATUS_SUCCESS; - } - - if (scaled_font->status == CAIRO_STATUS_SUCCESS) { - /* We increment the reference count manually here, (rather - * than calling into cairo_scaled_font_reference), since we - * must modify the reference count while our lock is still - * held. */ - _cairo_reference_count_inc (&scaled_font->ref_count); - _cairo_scaled_font_map_unlock (); - return scaled_font; - } - - /* the font has been put into an error status - abandon the cache */ - _cairo_hash_table_remove (font_map->hash_table, &key.hash_entry); - scaled_font->hash_entry.hash = ZOMBIE; - } - - /* Otherwise create it and insert it into the hash table. */ - status = font_face->backend->scaled_font_create (font_face, font_matrix, - ctm, options, &scaled_font); - if (status) { - _cairo_scaled_font_map_unlock (); - status = _cairo_font_face_set_error (font_face, status); - return _cairo_scaled_font_create_in_error (status); - } - - status = _cairo_hash_table_insert (font_map->hash_table, - &scaled_font->hash_entry); - _cairo_scaled_font_map_unlock (); - - if (status) { - /* We can't call _cairo_scaled_font_destroy here since it expects - * that the font has already been successfully inserted into the - * hash table. */ - _cairo_scaled_font_fini (scaled_font); - free (scaled_font); - return _cairo_scaled_font_create_in_error (status); - } - - return scaled_font; -} -slim_hidden_def (cairo_scaled_font_create); - -static cairo_scaled_font_t *_cairo_scaled_font_nil_objects[CAIRO_STATUS_LAST_STATUS + 1]; - -/* XXX This should disappear in favour of a common pool of error objects. */ -cairo_scaled_font_t * -_cairo_scaled_font_create_in_error (cairo_status_t status) -{ - cairo_scaled_font_t *scaled_font; - - assert (status != CAIRO_STATUS_SUCCESS); - - if (status == CAIRO_STATUS_NO_MEMORY) - return (cairo_scaled_font_t *) &_cairo_scaled_font_nil; - - CAIRO_MUTEX_LOCK (_cairo_scaled_font_error_mutex); - scaled_font = _cairo_scaled_font_nil_objects[status]; - if (scaled_font == NULL) { - scaled_font = malloc (sizeof (cairo_scaled_font_t)); - if (scaled_font == NULL) { - CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_error_mutex); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_scaled_font_t *) &_cairo_scaled_font_nil; - } - - *scaled_font = _cairo_scaled_font_nil; - scaled_font->status = status; - _cairo_scaled_font_nil_objects[status] = scaled_font; - } - CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_error_mutex); - - return scaled_font; -} - -void -_cairo_scaled_font_reset_static_data (void) -{ - int status; - - CAIRO_MUTEX_LOCK (_cairo_scaled_font_error_mutex); - for (status = CAIRO_STATUS_SUCCESS; - status <= CAIRO_STATUS_LAST_STATUS; - status++) - { - if (_cairo_scaled_font_nil_objects[status] != NULL) { - free (_cairo_scaled_font_nil_objects[status]); - _cairo_scaled_font_nil_objects[status] = NULL; - } - } - CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_error_mutex); -} - -/** - * cairo_scaled_font_reference: - * @scaled_font: a #cairo_scaled_font_t, (may be %NULL in which case - * this function does nothing) - * - * Increases the reference count on @scaled_font by one. This prevents - * @scaled_font from being destroyed until a matching call to - * cairo_scaled_font_destroy() is made. - * - * The number of references to a #cairo_scaled_font_t can be get using - * cairo_scaled_font_get_reference_count(). - * - * Returns: the referenced #cairo_scaled_font_t - **/ -cairo_scaled_font_t * -cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font) -{ - if (scaled_font == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&scaled_font->ref_count)) - return scaled_font; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&scaled_font->ref_count)); - - _cairo_reference_count_inc (&scaled_font->ref_count); - - return scaled_font; -} -slim_hidden_def (cairo_scaled_font_reference); - -/** - * cairo_scaled_font_destroy: - * @scaled_font: a #cairo_scaled_font_t - * - * Decreases the reference count on @font by one. If the result - * is zero, then @font and all associated resources are freed. - * See cairo_scaled_font_reference(). - **/ -void -cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font) -{ - cairo_scaled_font_map_t *font_map; - cairo_scaled_font_t *lru = NULL; - - if (scaled_font == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&scaled_font->ref_count)) - return; - - font_map = _cairo_scaled_font_map_lock (); - assert (font_map != NULL); - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&scaled_font->ref_count)); - - if (_cairo_reference_count_dec_and_test (&scaled_font->ref_count)) { - if (scaled_font->hash_entry.hash != ZOMBIE) { - /* Rather than immediately destroying this object, we put it into - * the font_map->holdovers array in case it will get used again - * soon (and is why we must hold the lock over the atomic op on - * the reference count). To make room for it, we do actually - * destroy the least-recently-used holdover. - */ - if (font_map->num_holdovers == CAIRO_SCALED_FONT_MAX_HOLDOVERS) - { - lru = font_map->holdovers[0]; - assert (! CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&lru->ref_count)); - - _cairo_hash_table_remove (font_map->hash_table, &lru->hash_entry); - - font_map->num_holdovers--; - memmove (&font_map->holdovers[0], - &font_map->holdovers[1], - font_map->num_holdovers * sizeof (cairo_scaled_font_t*)); - } - - font_map->holdovers[font_map->num_holdovers] = scaled_font; - font_map->num_holdovers++; - } else - lru = scaled_font; - } - _cairo_scaled_font_map_unlock (); - - /* If we pulled an item from the holdovers array, (while the font - * map lock was held, of course), then there is no way that anyone - * else could have acquired a reference to it. So we can now - * safely call fini on it without any lock held. This is desirable - * as we never want to call into any backend function with a lock - * held. */ - if (lru) { - _cairo_scaled_font_fini (lru); - free (lru); - } -} -slim_hidden_def (cairo_scaled_font_destroy); - -/** - * cairo_scaled_font_get_reference_count: - * @scaled_font: a #cairo_scaled_font_t - * - * Returns the current reference count of @scaled_font. - * - * Return value: the current reference count of @scaled_font. If the - * object is a nil object, 0 will be returned. - * - * Since: 1.4 - **/ -unsigned int -cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font) -{ - if (scaled_font == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&scaled_font->ref_count)) - return 0; - - return CAIRO_REFERENCE_COUNT_GET_VALUE (&scaled_font->ref_count); -} - -/** - * cairo_scaled_font_get_user_data: - * @scaled_font: a #cairo_scaled_font_t - * @key: the address of the #cairo_user_data_key_t the user data was - * attached to - * - * Return user data previously attached to @scaled_font using the - * specified key. If no user data has been attached with the given - * key this function returns %NULL. - * - * Return value: the user data previously attached or %NULL. - * - * Since: 1.4 - **/ -void * -cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key) -{ - return _cairo_user_data_array_get_data (&scaled_font->user_data, - key); -} - -/** - * cairo_scaled_font_set_user_data: - * @scaled_font: a #cairo_scaled_font_t - * @key: the address of a #cairo_user_data_key_t to attach the user data to - * @user_data: the user data to attach to the #cairo_scaled_font_t - * @destroy: a #cairo_destroy_func_t which will be called when the - * #cairo_t is destroyed or when new user data is attached using the - * same key. - * - * Attach user data to @scaled_font. To remove user data from a surface, - * call this function with the key that was used to set it and %NULL - * for @data. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a - * slot could not be allocated for the user data. - * - * Since: 1.4 - **/ -cairo_status_t -cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy) -{ - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&scaled_font->ref_count)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return _cairo_user_data_array_set_data (&scaled_font->user_data, - key, user_data, destroy); -} - -/* Public font API follows. */ - -/** - * cairo_scaled_font_extents: - * @scaled_font: a #cairo_scaled_font_t - * @extents: a #cairo_font_extents_t which to store the retrieved extents. - * - * Gets the metrics for a #cairo_scaled_font_t. - **/ -void -cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents) -{ - *extents = scaled_font->extents; -} -slim_hidden_def (cairo_scaled_font_extents); - -/** - * cairo_scaled_font_text_extents: - * @scaled_font: a #cairo_scaled_font_t - * @utf8: a string of text, encoded in UTF-8 - * @extents: a #cairo_text_extents_t which to store the retrieved extents. - * - * Gets the extents for a string of text. The extents describe a - * user-space rectangle that encloses the "inked" portion of the text - * drawn at the origin (0,0) (as it would be drawn by cairo_show_text() - * if the cairo graphics state were set to the same font_face, - * font_matrix, ctm, and font_options as @scaled_font). Additionally, - * the x_advance and y_advance values indicate the amount by which the - * current point would be advanced by cairo_show_text(). - * - * Note that whitespace characters do not directly contribute to the - * size of the rectangle (extents.width and extents.height). They do - * contribute indirectly by changing the position of non-whitespace - * characters. In particular, trailing whitespace characters are - * likely to not affect the size of the rectangle, though they will - * affect the x_advance and y_advance values. - * - * Since: 1.2 - **/ -void -cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_text_extents_t *extents) -{ - cairo_status_t status; - cairo_glyph_t *glyphs; - int num_glyphs; - - if (scaled_font->status) - goto ZERO_EXTENTS; - - if (utf8 == NULL) - goto ZERO_EXTENTS; - - status = _cairo_scaled_font_text_to_glyphs (scaled_font, 0., 0., utf8, &glyphs, &num_glyphs); - if (status) - goto ZERO_EXTENTS; - - cairo_scaled_font_glyph_extents (scaled_font, glyphs, num_glyphs, extents); - free (glyphs); - - return; - -ZERO_EXTENTS: - extents->x_bearing = 0.0; - extents->y_bearing = 0.0; - extents->width = 0.0; - extents->height = 0.0; - extents->x_advance = 0.0; - extents->y_advance = 0.0; -} - -/** - * cairo_scaled_font_glyph_extents: - * @scaled_font: a #cairo_scaled_font_t - * @glyphs: an array of glyph IDs with X and Y offsets. - * @num_glyphs: the number of glyphs in the @glyphs array - * @extents: a #cairo_text_extents_t which to store the retrieved extents. - * - * Gets the extents for an array of glyphs. The extents describe a - * user-space rectangle that encloses the "inked" portion of the - * glyphs, (as they would be drawn by cairo_show_glyphs() if the cairo - * graphics state were set to the same font_face, font_matrix, ctm, - * and font_options as @scaled_font). Additionally, the x_advance and - * y_advance values indicate the amount by which the current point - * would be advanced by cairo_show_glyphs(). - * - * Note that whitespace glyphs do not contribute to the size of the - * rectangle (extents.width and extents.height). - **/ -void -cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents) -{ - cairo_status_t status; - int i; - double min_x = 0.0, min_y = 0.0, max_x = 0.0, max_y = 0.0; - cairo_bool_t visible = FALSE; - cairo_scaled_glyph_t *scaled_glyph = NULL; - - if (scaled_font->status) { - extents->x_bearing = 0.0; - extents->y_bearing = 0.0; - extents->width = 0.0; - extents->height = 0.0; - extents->x_advance = 0.0; - extents->y_advance = 0.0; - return; - } - - CAIRO_MUTEX_LOCK (scaled_font->mutex); - _cairo_scaled_font_freeze_cache (scaled_font); - - for (i = 0; i < num_glyphs; i++) { - double left, top, right, bottom; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - if (status) { - status = _cairo_scaled_font_set_error (scaled_font, status); - goto UNLOCK; - } - - /* "Ink" extents should skip "invisible" glyphs */ - if (scaled_glyph->metrics.width == 0 || scaled_glyph->metrics.height == 0) - continue; - - left = scaled_glyph->metrics.x_bearing + glyphs[i].x; - right = left + scaled_glyph->metrics.width; - top = scaled_glyph->metrics.y_bearing + glyphs[i].y; - bottom = top + scaled_glyph->metrics.height; - - if (!visible) { - visible = TRUE; - min_x = left; - max_x = right; - min_y = top; - max_y = bottom; - } else { - if (left < min_x) min_x = left; - if (right > max_x) max_x = right; - if (top < min_y) min_y = top; - if (bottom > max_y) max_y = bottom; - } - } - - if (visible) { - extents->x_bearing = min_x - glyphs[0].x; - extents->y_bearing = min_y - glyphs[0].y; - extents->width = max_x - min_x; - extents->height = max_y - min_y; - } else { - extents->x_bearing = 0.0; - extents->y_bearing = 0.0; - extents->width = 0.0; - extents->height = 0.0; - } - - if (num_glyphs) { - double x0, y0, x1, y1; - - x0 = glyphs[0].x; - y0 = glyphs[0].y; - - /* scaled_glyph contains the glyph for num_glyphs - 1 already. */ - x1 = glyphs[num_glyphs - 1].x + scaled_glyph->metrics.x_advance; - y1 = glyphs[num_glyphs - 1].y + scaled_glyph->metrics.y_advance; - - extents->x_advance = x1 - x0; - extents->y_advance = y1 - y0; - } else { - extents->x_advance = 0.0; - extents->y_advance = 0.0; - } - - UNLOCK: - _cairo_scaled_font_thaw_cache (scaled_font); - CAIRO_MUTEX_UNLOCK (scaled_font->mutex); -} -slim_hidden_def (cairo_scaled_font_glyph_extents); - -cairo_status_t -_cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - cairo_glyph_t **glyphs, - int *num_glyphs) -{ - int i; - uint32_t *ucs4 = NULL; - cairo_status_t status; - cairo_scaled_glyph_t *scaled_glyph; - - status = scaled_font->status; - if (status) - return status; - - if (utf8[0] == '\0') { - *num_glyphs = 0; - *glyphs = NULL; - return CAIRO_STATUS_SUCCESS; - } - - CAIRO_MUTEX_LOCK (scaled_font->mutex); - _cairo_scaled_font_freeze_cache (scaled_font); - - if (scaled_font->backend->text_to_glyphs) { - status = scaled_font->backend->text_to_glyphs (scaled_font, - x, y, utf8, - glyphs, num_glyphs); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto DONE; - } - - status = _cairo_utf8_to_ucs4 ((unsigned char*)utf8, -1, &ucs4, num_glyphs); - if (status) - goto DONE; - - *glyphs = (cairo_glyph_t *) _cairo_malloc_ab ((*num_glyphs), sizeof (cairo_glyph_t)); - - if (*glyphs == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto DONE; - } - - for (i = 0; i < *num_glyphs; i++) { - (*glyphs)[i].index = (*scaled_font->backend-> - ucs4_to_index) (scaled_font, ucs4[i]); - (*glyphs)[i].x = x; - (*glyphs)[i].y = y; - - status = _cairo_scaled_glyph_lookup (scaled_font, - (*glyphs)[i].index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - if (status) { - free (*glyphs); - *glyphs = NULL; - goto DONE; - } - - x += scaled_glyph->metrics.x_advance; - y += scaled_glyph->metrics.y_advance; - } - - DONE: - _cairo_scaled_font_thaw_cache (scaled_font); - CAIRO_MUTEX_UNLOCK (scaled_font->mutex); - - if (ucs4) - free (ucs4); - - return _cairo_scaled_font_set_error (scaled_font, status); -} - -/* - * Compute a device-space bounding box for the glyphs. - */ -cairo_status_t -_cairo_scaled_font_glyph_device_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_rectangle_int_t *extents) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - int i; - cairo_point_int_t min = { CAIRO_RECT_INT_MAX, CAIRO_RECT_INT_MAX }; - cairo_point_int_t max = { CAIRO_RECT_INT_MIN, CAIRO_RECT_INT_MIN }; - - if (scaled_font->status) - return scaled_font->status; - - for (i = 0; i < num_glyphs; i++) { - cairo_scaled_glyph_t *scaled_glyph; - int left, top; - int right, bottom; - int x, y; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - if (status) - return _cairo_scaled_font_set_error (scaled_font, status); - - /* glyph images are snapped to pixel locations */ - x = _cairo_lround (glyphs[i].x); - y = _cairo_lround (glyphs[i].y); - - left = x + _cairo_fixed_integer_floor(scaled_glyph->bbox.p1.x); - top = y + _cairo_fixed_integer_floor (scaled_glyph->bbox.p1.y); - right = x + _cairo_fixed_integer_ceil(scaled_glyph->bbox.p2.x); - bottom = y + _cairo_fixed_integer_ceil (scaled_glyph->bbox.p2.y); - - if (left < min.x) min.x = left; - if (right > max.x) max.x = right; - if (top < min.y) min.y = top; - if (bottom > max.y) max.y = bottom; - } - if (min.x < max.x && min.y < max.y) { - extents->x = min.x; - extents->width = max.x - min.x; - extents->y = min.y; - extents->height = max.y - min.y; - } else { - extents->x = extents->y = 0; - extents->width = extents->height = 0; - } - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_scaled_font_show_glyphs (cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *surface, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs) -{ - cairo_status_t status; - cairo_surface_t *mask = NULL; - cairo_format_t mask_format = CAIRO_FORMAT_A1; /* shut gcc up */ - cairo_surface_pattern_t mask_pattern; - cairo_solid_pattern_t white_pattern; - int i; - - /* These operators aren't interpreted the same way by the backends; - * they are implemented in terms of other operators in cairo-gstate.c - */ - assert (op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_CLEAR); - - if (scaled_font->status) - return scaled_font->status; - - if (!num_glyphs) - return CAIRO_STATUS_SUCCESS; - - if (scaled_font->backend->show_glyphs != NULL) { - status = scaled_font->backend->show_glyphs (scaled_font, - op, pattern, - surface, - source_x, source_y, - dest_x, dest_y, - width, height, - glyphs, num_glyphs); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return _cairo_scaled_font_set_error (scaled_font, status); - } - - /* Font display routine either does not exist or failed. */ - - status = CAIRO_STATUS_SUCCESS; - - _cairo_pattern_init_solid (&white_pattern, CAIRO_COLOR_WHITE, CAIRO_CONTENT_COLOR); - - _cairo_cache_freeze (scaled_font->glyphs); - - for (i = 0; i < num_glyphs; i++) { - int x, y; - cairo_surface_pattern_t glyph_pattern; - cairo_image_surface_t *glyph_surface; - cairo_scaled_glyph_t *scaled_glyph; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - - if (status) - goto CLEANUP_MASK; - - glyph_surface = scaled_glyph->surface; - - /* To start, create the mask using the format from the first - * glyph. Later we'll deal with different formats. */ - if (mask == NULL) { - mask_format = glyph_surface->format; - mask = cairo_image_surface_create (mask_format, - width, height); - if (mask->status) { - status = mask->status; - goto CLEANUP_MASK; - } - } - - /* If we have glyphs of different formats, we "upgrade" the mask - * to the wider of the formats. */ - if (glyph_surface->format != mask_format && - _cairo_format_bits_per_pixel (mask_format) < - _cairo_format_bits_per_pixel (glyph_surface->format) ) - { - cairo_surface_t *new_mask; - cairo_surface_pattern_t mask_pattern; - - switch (glyph_surface->format) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_A8: - case CAIRO_FORMAT_A1: - mask_format = glyph_surface->format; - break; - case CAIRO_FORMAT_RGB24: - default: - ASSERT_NOT_REACHED; - mask_format = CAIRO_FORMAT_ARGB32; - break; - } - - new_mask = cairo_image_surface_create (mask_format, - width, height); - if (new_mask->status) { - status = new_mask->status; - cairo_surface_destroy (new_mask); - goto CLEANUP_MASK; - } - - _cairo_pattern_init_for_surface (&mask_pattern, mask); - - status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, - &white_pattern.base, - &mask_pattern.base, - new_mask, - 0, 0, - 0, 0, - 0, 0, - width, height); - - _cairo_pattern_fini (&mask_pattern.base); - - if (status) { - cairo_surface_destroy (new_mask); - goto CLEANUP_MASK; - } - - cairo_surface_destroy (mask); - mask = new_mask; - } - - /* round glyph locations to the nearest pixel */ - /* XXX: FRAGILE: We're ignoring device_transform scaling here. A bug? */ - x = _cairo_lround (glyphs[i].x - glyph_surface->base.device_transform.x0); - y = _cairo_lround (glyphs[i].y - glyph_surface->base.device_transform.y0); - - _cairo_pattern_init_for_surface (&glyph_pattern, &glyph_surface->base); - - status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, - &white_pattern.base, - &glyph_pattern.base, - mask, - 0, 0, - 0, 0, - x - dest_x, y - dest_y, - glyph_surface->width, - glyph_surface->height); - - _cairo_pattern_fini (&glyph_pattern.base); - - if (status) - goto CLEANUP_MASK; - } - - if (mask_format == CAIRO_FORMAT_ARGB32) - pixman_image_set_component_alpha (((cairo_image_surface_t*) mask)-> - pixman_image, TRUE); - _cairo_pattern_init_for_surface (&mask_pattern, mask); - - status = _cairo_surface_composite (op, pattern, &mask_pattern.base, - surface, - source_x, source_y, - 0, 0, - dest_x, dest_y, - width, height); - - _cairo_pattern_fini (&mask_pattern.base); - -CLEANUP_MASK: - _cairo_cache_thaw (scaled_font->glyphs); - - _cairo_pattern_fini (&white_pattern.base); - - if (mask != NULL) - cairo_surface_destroy (mask); - return _cairo_scaled_font_set_error (scaled_font, status); -} - -typedef struct _cairo_scaled_glyph_path_closure { - cairo_point_t offset; - cairo_path_fixed_t *path; -} cairo_scaled_glyph_path_closure_t; - -static cairo_status_t -_scaled_glyph_path_move_to (void *abstract_closure, cairo_point_t *point) -{ - cairo_scaled_glyph_path_closure_t *closure = abstract_closure; - - return _cairo_path_fixed_move_to (closure->path, - point->x + closure->offset.x, - point->y + closure->offset.y); -} - -static cairo_status_t -_scaled_glyph_path_line_to (void *abstract_closure, cairo_point_t *point) -{ - cairo_scaled_glyph_path_closure_t *closure = abstract_closure; - - return _cairo_path_fixed_line_to (closure->path, - point->x + closure->offset.x, - point->y + closure->offset.y); -} - -static cairo_status_t -_scaled_glyph_path_curve_to (void *abstract_closure, - cairo_point_t *p0, - cairo_point_t *p1, - cairo_point_t *p2) -{ - cairo_scaled_glyph_path_closure_t *closure = abstract_closure; - - return _cairo_path_fixed_curve_to (closure->path, - p0->x + closure->offset.x, - p0->y + closure->offset.y, - p1->x + closure->offset.x, - p1->y + closure->offset.y, - p2->x + closure->offset.x, - p2->y + closure->offset.y); -} - -static cairo_status_t -_scaled_glyph_path_close_path (void *abstract_closure) -{ - cairo_scaled_glyph_path_closure_t *closure = abstract_closure; - - return _cairo_path_fixed_close_path (closure->path); -} - -/* Add a single-device-unit rectangle to a path. */ -static cairo_status_t -_add_unit_rectangle_to_path (cairo_path_fixed_t *path, int x, int y) -{ - cairo_status_t status; - - status = _cairo_path_fixed_move_to (path, - _cairo_fixed_from_int (x), - _cairo_fixed_from_int (y)); - if (status) - return status; - - status = _cairo_path_fixed_rel_line_to (path, - _cairo_fixed_from_int (1), - _cairo_fixed_from_int (0)); - if (status) - return status; - - status = _cairo_path_fixed_rel_line_to (path, - _cairo_fixed_from_int (0), - _cairo_fixed_from_int (1)); - if (status) - return status; - - status = _cairo_path_fixed_rel_line_to (path, - _cairo_fixed_from_int (-1), - _cairo_fixed_from_int (0)); - if (status) - return status; - - status = _cairo_path_fixed_close_path (path); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _trace_mask_to_path: - * @bitmap: An alpha mask (either %CAIRO_FORMAT_A1 or %CAIRO_FORMAT_A8) - * @path: An initialized path to hold the result - * - * Given a mask surface, (an alpha image), fill out the provided path - * so that when filled it would result in something that approximates - * the mask. - * - * Note: The current tracing code here is extremely primitive. It - * operates only on an A1 surface, (converting an A8 surface to A1 if - * necessary), and performs the tracing by drawing a little square - * around each pixel that is on in the mask. We do not pretend that - * this is a high-quality result. But we are leaving it up to someone - * who cares enough about getting a better result to implement - * something more sophisticated. - **/ -static cairo_status_t -_trace_mask_to_path (cairo_image_surface_t *mask, - cairo_path_fixed_t *path) -{ - cairo_status_t status; - cairo_image_surface_t *a1_mask; - unsigned char *row, *byte_ptr, byte; - int rows, cols, bytes_per_row; - int x, y, bit; - double xoff, yoff; - - if (mask->format == CAIRO_FORMAT_A1) - a1_mask = (cairo_image_surface_t *) cairo_surface_reference (&mask->base); - else - a1_mask = _cairo_image_surface_clone (mask, CAIRO_FORMAT_A1); - - status = cairo_surface_status (&a1_mask->base); - if (status) { - cairo_surface_destroy (&a1_mask->base); - return status; - } - - cairo_surface_get_device_offset (&mask->base, &xoff, &yoff); - - bytes_per_row = (a1_mask->width + 7) / 8; - for (y = 0, row = a1_mask->data, rows = a1_mask->height; rows; row += a1_mask->stride, rows--, y++) { - for (x = 0, byte_ptr = row, cols = (a1_mask->width + 7) / 8; cols; byte_ptr++, cols--) { - byte = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (*byte_ptr); - for (bit = 7; bit >= 0 && x < a1_mask->width; bit--, x++) { - if (byte & (1 << bit)) { - status = _add_unit_rectangle_to_path (path, - x - xoff, y - yoff); - if (status) - goto BAIL; - } - } - } - } - -BAIL: - cairo_surface_destroy (&a1_mask->base); - - return status; -} - -cairo_status_t -_cairo_scaled_font_glyph_path (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_path_fixed_t *path) -{ - cairo_status_t status; - int i; - cairo_scaled_glyph_path_closure_t closure; - cairo_path_fixed_t *glyph_path; - - status = scaled_font->status; - if (status) - return status; - - closure.path = path; - _cairo_scaled_font_freeze_cache (scaled_font); - for (i = 0; i < num_glyphs; i++) { - cairo_scaled_glyph_t *scaled_glyph; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_PATH, - &scaled_glyph); - if (status == CAIRO_STATUS_SUCCESS) - glyph_path = scaled_glyph->path; - else if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto BAIL; - - /* If the font is incapable of providing a path, then we'll - * have to trace our own from a surface. */ - if (status == CAIRO_INT_STATUS_UNSUPPORTED) { - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - if (status) - goto BAIL; - - glyph_path = _cairo_path_fixed_create (); - if (glyph_path == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - - status = _trace_mask_to_path (scaled_glyph->surface, glyph_path); - if (status) { - _cairo_path_fixed_destroy (glyph_path); - goto BAIL; - } - } - - closure.offset.x = _cairo_fixed_from_double (glyphs[i].x); - closure.offset.y = _cairo_fixed_from_double (glyphs[i].y); - - status = _cairo_path_fixed_interpret (glyph_path, - CAIRO_DIRECTION_FORWARD, - _scaled_glyph_path_move_to, - _scaled_glyph_path_line_to, - _scaled_glyph_path_curve_to, - _scaled_glyph_path_close_path, - &closure); - if (glyph_path != scaled_glyph->path) - _cairo_path_fixed_destroy (glyph_path); - - if (status) - goto BAIL; - } - BAIL: - _cairo_scaled_font_thaw_cache (scaled_font); - - return _cairo_scaled_font_set_error (scaled_font, status); -} - -/** - * cairo_scaled_glyph_set_metrics: - * @scaled_glyph: a #cairo_scaled_glyph_t - * @scaled_font: a #cairo_scaled_font_t - * @fs_metrics: a #cairo_text_extents_t in font space - * - * _cairo_scaled_glyph_set_metrics() stores user space metrics - * for the specified glyph given font space metrics. It is - * called by the font backend when initializing a glyph with - * CAIRO_SCALED_GLYPH_INFO_METRICS. - **/ -void -_cairo_scaled_glyph_set_metrics (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font, - cairo_text_extents_t *fs_metrics) -{ - cairo_bool_t first = TRUE; - double hm, wm; - double min_user_x = 0.0, max_user_x = 0.0, min_user_y = 0.0, max_user_y = 0.0; - double min_device_x = 0.0, max_device_x = 0.0, min_device_y = 0.0, max_device_y = 0.0; - double device_x_advance, device_y_advance; - - for (hm = 0.0; hm <= 1.0; hm += 1.0) - for (wm = 0.0; wm <= 1.0; wm += 1.0) { - double x, y; - - /* Transform this corner to user space */ - x = fs_metrics->x_bearing + fs_metrics->width * wm; - y = fs_metrics->y_bearing + fs_metrics->height * hm; - cairo_matrix_transform_point (&scaled_font->font_matrix, - &x, &y); - if (first) { - min_user_x = max_user_x = x; - min_user_y = max_user_y = y; - } else { - if (x < min_user_x) min_user_x = x; - if (x > max_user_x) max_user_x = x; - if (y < min_user_y) min_user_y = y; - if (y > max_user_y) max_user_y = y; - } - - /* Transform this corner to device space from glyph origin */ - x = fs_metrics->x_bearing + fs_metrics->width * wm; - y = fs_metrics->y_bearing + fs_metrics->height * hm; - cairo_matrix_transform_distance (&scaled_font->scale, - &x, &y); - - if (first) { - min_device_x = max_device_x = x; - min_device_y = max_device_y = y; - } else { - if (x < min_device_x) min_device_x = x; - if (x > max_device_x) max_device_x = x; - if (y < min_device_y) min_device_y = y; - if (y > max_device_y) max_device_y = y; - } - first = FALSE; - } - scaled_glyph->metrics.x_bearing = min_user_x; - scaled_glyph->metrics.y_bearing = min_user_y; - scaled_glyph->metrics.width = max_user_x - min_user_x; - scaled_glyph->metrics.height = max_user_y - min_user_y; - - scaled_glyph->metrics.x_advance = fs_metrics->x_advance; - scaled_glyph->metrics.y_advance = fs_metrics->y_advance; - cairo_matrix_transform_distance (&scaled_font->font_matrix, - &scaled_glyph->metrics.x_advance, - &scaled_glyph->metrics.y_advance); - - device_x_advance = fs_metrics->x_advance; - device_y_advance = fs_metrics->y_advance; - cairo_matrix_transform_distance (&scaled_font->scale, - &device_x_advance, - &device_y_advance); - - scaled_glyph->bbox.p1.x = _cairo_fixed_from_double (min_device_x); - scaled_glyph->bbox.p1.y = _cairo_fixed_from_double (min_device_y); - scaled_glyph->bbox.p2.x = _cairo_fixed_from_double (max_device_x); - scaled_glyph->bbox.p2.y = _cairo_fixed_from_double (max_device_y); - - scaled_glyph->x_advance = _cairo_lround (device_x_advance); - scaled_glyph->y_advance = _cairo_lround (device_y_advance); -} - -void -_cairo_scaled_glyph_set_surface (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font, - cairo_image_surface_t *surface) -{ - if (scaled_glyph->surface != NULL) - cairo_surface_destroy (&scaled_glyph->surface->base); - scaled_glyph->surface = surface; -} - -void -_cairo_scaled_glyph_set_path (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font, - cairo_path_fixed_t *path) -{ - if (scaled_glyph->path != NULL) - _cairo_path_fixed_destroy (scaled_glyph->path); - scaled_glyph->path = path; -} - -/** - * _cairo_scaled_glyph_lookup: - * @scaled_font: a #cairo_scaled_font_t - * @index: the glyph to create - * @info: a #cairo_scaled_glyph_info_t marking which portions of - * the glyph should be filled in. - * @scaled_glyph_ret: a #cairo_scaled_glyph_t * where the glyph - * is returned. - * - * Returns: a glyph with the requested portions filled in. Glyph - * lookup is cached and glyph will be automatically freed along - * with the scaled_font so no explicit free is required. - * @info can be one or more of: - * %CAIRO_SCALED_GLYPH_INFO_METRICS - glyph metrics and bounding box - * %CAIRO_SCALED_GLYPH_INFO_SURFACE - surface holding glyph image - * %CAIRO_SCALED_GLYPH_INFO_PATH - path holding glyph outline in device space - * - * If the desired info is not available, (for example, when trying to - * get INFO_PATH with a bitmapped font), this function will return - * CAIRO_INT_STATUS_UNSUPPORTED. - * - * Note: This function must be called with scaled_font->mutex held. - **/ -cairo_int_status_t -_cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font, - unsigned long index, - cairo_scaled_glyph_info_t info, - cairo_scaled_glyph_t **scaled_glyph_ret) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_cache_entry_t key; - cairo_scaled_glyph_t *scaled_glyph; - cairo_scaled_glyph_info_t need_info; - - if (scaled_font->status) - return scaled_font->status; - - key.hash = index; - /* - * Check cache for glyph - */ - info |= CAIRO_SCALED_GLYPH_INFO_METRICS; - if (!_cairo_cache_lookup (scaled_font->glyphs, &key, - (cairo_cache_entry_t **) &scaled_glyph)) - { - /* - * On miss, create glyph and insert into cache - */ - scaled_glyph = malloc (sizeof (cairo_scaled_glyph_t)); - if (scaled_glyph == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP; - } - - _cairo_scaled_glyph_set_index(scaled_glyph, index); - scaled_glyph->cache_entry.size = 1; /* XXX */ - scaled_glyph->scaled_font = scaled_font; - scaled_glyph->surface = NULL; - scaled_glyph->path = NULL; - scaled_glyph->surface_private = NULL; - - /* ask backend to initialize metrics and shape fields */ - status = (*scaled_font->backend-> - scaled_glyph_init) (scaled_font, scaled_glyph, info); - if (status) { - _cairo_scaled_glyph_destroy (scaled_glyph); - goto CLEANUP; - } - - /* on success, the cache takes ownership of the scaled_glyph */ - status = _cairo_cache_insert (scaled_font->glyphs, - &scaled_glyph->cache_entry); - if (status) { - _cairo_scaled_glyph_destroy (scaled_glyph); - goto CLEANUP; - } - } - /* - * Check and see if the glyph, as provided, - * already has the requested data and ammend it if not - */ - need_info = 0; - if ((info & CAIRO_SCALED_GLYPH_INFO_SURFACE) != 0 && - scaled_glyph->surface == NULL) - need_info |= CAIRO_SCALED_GLYPH_INFO_SURFACE; - - if (((info & CAIRO_SCALED_GLYPH_INFO_PATH) != 0 && - scaled_glyph->path == NULL)) - need_info |= CAIRO_SCALED_GLYPH_INFO_PATH; - - if (need_info) { - status = (*scaled_font->backend-> - scaled_glyph_init) (scaled_font, scaled_glyph, need_info); - if (status) - goto CLEANUP; - } - - CLEANUP: - if (status) { - /* It's not an error for the backend to not support the info we want. */ - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - status = _cairo_scaled_font_set_error (scaled_font, status); - *scaled_glyph_ret = NULL; - } else { - *scaled_glyph_ret = scaled_glyph; - } - - return status; -} - -/** - * cairo_scaled_font_get_font_face: - * @scaled_font: a #cairo_scaled_font_t - * - * Gets the font face that this scaled font was created for. - * - * Return value: The #cairo_font_face_t with which @scaled_font was - * created. - * - * Since: 1.2 - **/ -cairo_font_face_t * -cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font) -{ - if (scaled_font->status) - return (cairo_font_face_t*) &_cairo_font_face_nil; - - return scaled_font->font_face; -} -slim_hidden_def (cairo_scaled_font_get_font_face); - -/** - * cairo_scaled_font_get_font_matrix: - * @scaled_font: a #cairo_scaled_font_t - * @font_matrix: return value for the matrix - * - * Stores the font matrix with which @scaled_font was created into - * @matrix. - * - * Since: 1.2 - **/ -void -cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *font_matrix) -{ - if (scaled_font->status) { - cairo_matrix_init_identity (font_matrix); - return; - } - - *font_matrix = scaled_font->font_matrix; -} -slim_hidden_def (cairo_scaled_font_get_font_matrix); - -/** - * cairo_scaled_font_get_ctm: - * @scaled_font: a #cairo_scaled_font_t - * @ctm: return value for the CTM - * - * Stores the CTM with which @scaled_font was created into @ctm. - * - * Since: 1.2 - **/ -void -cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *ctm) -{ - if (scaled_font->status) { - cairo_matrix_init_identity (ctm); - return; - } - - *ctm = scaled_font->ctm; -} -slim_hidden_def (cairo_scaled_font_get_ctm); - -/** - * cairo_scaled_font_get_font_options: - * @scaled_font: a #cairo_scaled_font_t - * @options: return value for the font options - * - * Stores the font options with which @scaled_font was created into - * @options. - * - * Since: 1.2 - **/ -void -cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, - cairo_font_options_t *options) -{ - if (cairo_font_options_status (options)) - return; - - if (scaled_font->status) { - _cairo_font_options_init_default (options); - return; - } - - _cairo_font_options_init_copy (options, &scaled_font->options); -} -slim_hidden_def (cairo_scaled_font_get_font_options); diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_SCALED_FONT_PRIVATE_H -#define CAIRO_SCALED_FONT_PRIVATE_H - -#include "cairo.h" - -#include "cairo-types-private.h" -#include "cairo-mutex-type-private.h" -#include "cairo-reference-count-private.h" - -struct _cairo_scaled_font { - /* For most cairo objects, the rule for multiple threads is that - * the user is responsible for any locking if the same object is - * manipulated from multiple threads simultaneously. - * - * However, with the caching that cairo does for scaled fonts, a - * user can easily end up with the same cairo_scaled_font object - * being manipulated from multiple threads without the user ever - * being aware of this, (and in fact, unable to control it). - * - * So, as a special exception, the cairo implementation takes care - * of all locking needed for cairo_scaled_font_t. Most of what is - * in the scaled font is immutable, (which is what allows for the - * sharing in the first place). The things that are modified and - * the locks protecting them are as follows: - * - * 1. The reference count (scaled_font->ref_count) - * - * Modifications to the reference count are protected by the - * _cairo_scaled_font_map_mutex. This is because the reference - * count of a scaled font is intimately related with the font - * map itself, (and the magic holdovers array). - * - * 2. The cache of glyphs (scaled_font->glyphs) - * 3. The backend private data (scaled_font->surface_backend, - * scaled_font->surface_private) - * - * Modifications to these fields are protected with locks on - * scaled_font->mutex in the generic scaled_font code. - */ - - /* must be first to be stored in a hash table */ - cairo_hash_entry_t hash_entry; - - /* useful bits for _cairo_scaled_font_nil */ - cairo_status_t status; - cairo_reference_count_t ref_count; - cairo_user_data_array_t user_data; - - /* hash key members */ - cairo_font_face_t *font_face; /* may be NULL */ - cairo_matrix_t font_matrix; /* font space => user space */ - cairo_matrix_t ctm; /* user space => device space */ - cairo_font_options_t options; - - /* "live" scaled_font members */ - cairo_matrix_t scale; /* font space => device space */ - cairo_matrix_t scale_inverse; /* device space => font space */ - cairo_font_extents_t extents; /* user space */ - - /* The mutex protects modification to all subsequent fields. */ - cairo_mutex_t mutex; - - cairo_cache_t *glyphs; /* glyph index -> cairo_scaled_glyph_t */ - - /* - * One surface backend may store data in each glyph. - * Whichever surface manages to store its pointer here - * first gets to store data in each glyph - */ - const cairo_surface_backend_t *surface_backend; - void *surface_private; - - /* font backend managing this scaled font */ - const cairo_scaled_font_backend_t *backend; -}; - -#endif /* CAIRO_SCALED_FONT_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font-subsets.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font-subsets.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font-subsets.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font-subsets.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,864 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2003 University of Southern California - * Copyright © 2005 Red Hat, Inc - * Copyright © 2006 Keith Packard - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Kristian Høgsberg - * Keith Packard - * Adrian Johnson - */ - -#define _BSD_SOURCE /* for snprintf(), strdup() */ -#include "cairoint.h" -#include "cairo-scaled-font-subsets-private.h" - -#define MAX_GLYPHS_PER_SIMPLE_FONT 256 -#define MAX_GLYPHS_PER_COMPOSITE_FONT 65536 - -typedef enum { - CAIRO_SUBSETS_SCALED, - CAIRO_SUBSETS_SIMPLE, - CAIRO_SUBSETS_COMPOSITE -} cairo_subsets_type_t; - -struct _cairo_scaled_font_subsets { - cairo_subsets_type_t type; - - int max_glyphs_per_unscaled_subset_used; - cairo_hash_table_t *unscaled_sub_fonts; - - int max_glyphs_per_scaled_subset_used; - cairo_hash_table_t *scaled_sub_fonts; - - int num_sub_fonts; -}; - -typedef struct _cairo_sub_font { - cairo_hash_entry_t base; - - cairo_bool_t is_scaled; - cairo_bool_t is_composite; - cairo_scaled_font_subsets_t *parent; - cairo_scaled_font_t *scaled_font; - unsigned int font_id; - - int current_subset; - int num_glyphs_in_current_subset; - int max_glyphs_per_subset; - - cairo_hash_table_t *sub_font_glyphs; -} cairo_sub_font_t; - -typedef struct _cairo_sub_font_glyph { - cairo_hash_entry_t base; - - unsigned int subset_id; - unsigned int subset_glyph_index; - double x_advance; -} cairo_sub_font_glyph_t; - -typedef struct _cairo_sub_font_collection { - unsigned long *glyphs; /* scaled_font_glyph_index */ - unsigned int glyphs_size; - unsigned int max_glyph; - unsigned int num_glyphs; - - unsigned int subset_id; - - cairo_status_t status; - cairo_scaled_font_subset_callback_func_t font_subset_callback; - void *font_subset_callback_closure; -} cairo_sub_font_collection_t; - -typedef struct _cairo_string_entry { - cairo_hash_entry_t base; - char *string; -} cairo_string_entry_t; - -static cairo_status_t -_cairo_sub_font_map_glyph (cairo_sub_font_t *sub_font, - unsigned long scaled_font_glyph_index, - cairo_scaled_font_subsets_glyph_t *subset_glyph); - -static void -_cairo_sub_font_glyph_init_key (cairo_sub_font_glyph_t *sub_font_glyph, - unsigned long scaled_font_glyph_index) -{ - sub_font_glyph->base.hash = scaled_font_glyph_index; -} - -static cairo_bool_t -_cairo_sub_font_glyphs_equal (const void *key_a, const void *key_b) -{ - const cairo_sub_font_glyph_t *sub_font_glyph_a = key_a; - const cairo_sub_font_glyph_t *sub_font_glyph_b = key_b; - - return sub_font_glyph_a->base.hash == sub_font_glyph_b->base.hash; -} - -static cairo_sub_font_glyph_t * -_cairo_sub_font_glyph_create (unsigned long scaled_font_glyph_index, - unsigned int subset_id, - unsigned int subset_glyph_index, - double x_advance) -{ - cairo_sub_font_glyph_t *sub_font_glyph; - - sub_font_glyph = malloc (sizeof (cairo_sub_font_glyph_t)); - if (sub_font_glyph == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - _cairo_sub_font_glyph_init_key (sub_font_glyph, scaled_font_glyph_index); - sub_font_glyph->subset_id = subset_id; - sub_font_glyph->subset_glyph_index = subset_glyph_index; - sub_font_glyph->x_advance = x_advance; - - return sub_font_glyph; -} - -static void -_cairo_sub_font_glyph_destroy (cairo_sub_font_glyph_t *sub_font_glyph) -{ - free (sub_font_glyph); -} - -static void -_cairo_sub_font_glyph_pluck (void *entry, void *closure) -{ - cairo_sub_font_glyph_t *sub_font_glyph = entry; - cairo_hash_table_t *sub_font_glyphs = closure; - - _cairo_hash_table_remove (sub_font_glyphs, &sub_font_glyph->base); - _cairo_sub_font_glyph_destroy (sub_font_glyph); -} - -static void -_cairo_sub_font_glyph_collect (void *entry, void *closure) -{ - cairo_sub_font_glyph_t *sub_font_glyph = entry; - cairo_sub_font_collection_t *collection = closure; - unsigned long scaled_font_glyph_index; - unsigned int subset_glyph_index; - - if (sub_font_glyph->subset_id != collection->subset_id) - return; - - scaled_font_glyph_index = sub_font_glyph->base.hash; - subset_glyph_index = sub_font_glyph->subset_glyph_index; - - /* Ensure we don't exceed the allocated bounds. */ - assert (subset_glyph_index < collection->glyphs_size); - - collection->glyphs[subset_glyph_index] = scaled_font_glyph_index; - if (subset_glyph_index > collection->max_glyph) - collection->max_glyph = subset_glyph_index; - - collection->num_glyphs++; -} - -static cairo_bool_t -_cairo_sub_fonts_equal (const void *key_a, const void *key_b) -{ - const cairo_sub_font_t *sub_font_a = key_a; - const cairo_sub_font_t *sub_font_b = key_b; - - if (sub_font_a->is_scaled) - return sub_font_a->scaled_font == sub_font_b->scaled_font; - else - return sub_font_a->scaled_font->font_face == sub_font_b->scaled_font->font_face; -} - -static void -_cairo_sub_font_init_key (cairo_sub_font_t *sub_font, - cairo_scaled_font_t *scaled_font) -{ - if (sub_font->is_scaled) - { - sub_font->base.hash = (unsigned long) scaled_font; - sub_font->scaled_font = scaled_font; - } - else - { - sub_font->base.hash = (unsigned long) scaled_font->font_face; - sub_font->scaled_font = scaled_font; - } -} - -static cairo_status_t -_cairo_sub_font_create (cairo_scaled_font_subsets_t *parent, - cairo_scaled_font_t *scaled_font, - unsigned int font_id, - int max_glyphs_per_subset, - cairo_bool_t is_scaled, - cairo_bool_t is_composite, - cairo_sub_font_t **sub_font_out) -{ - cairo_sub_font_t *sub_font; - cairo_status_t status; - cairo_scaled_font_subsets_glyph_t subset_glyph; - - sub_font = malloc (sizeof (cairo_sub_font_t)); - if (sub_font == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - sub_font->is_scaled = is_scaled; - sub_font->is_composite = is_composite; - _cairo_sub_font_init_key (sub_font, scaled_font); - - sub_font->parent = parent; - sub_font->scaled_font = scaled_font; - sub_font->font_id = font_id; - - sub_font->current_subset = 0; - sub_font->num_glyphs_in_current_subset = 0; - sub_font->max_glyphs_per_subset = max_glyphs_per_subset; - - sub_font->sub_font_glyphs = _cairo_hash_table_create (_cairo_sub_font_glyphs_equal); - if (sub_font->sub_font_glyphs == NULL) { - free (sub_font); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* Reserve first glyph in subset for the .notdef glyph */ - status = _cairo_sub_font_map_glyph (sub_font, 0, &subset_glyph); - if (status) { - _cairo_hash_table_destroy (sub_font->sub_font_glyphs); - free (sub_font); - return status; - } - - *sub_font_out = sub_font; - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_sub_font_destroy (cairo_sub_font_t *sub_font) -{ - _cairo_hash_table_foreach (sub_font->sub_font_glyphs, - _cairo_sub_font_glyph_pluck, - sub_font->sub_font_glyphs); - _cairo_hash_table_destroy (sub_font->sub_font_glyphs); - cairo_scaled_font_destroy (sub_font->scaled_font); - free (sub_font); -} - -static void -_cairo_sub_font_pluck (void *entry, void *closure) -{ - cairo_sub_font_t *sub_font = entry; - cairo_hash_table_t *sub_fonts = closure; - - _cairo_hash_table_remove (sub_fonts, &sub_font->base); - _cairo_sub_font_destroy (sub_font); -} - -static cairo_bool_t -_cairo_sub_font_lookup_glyph (cairo_sub_font_t *sub_font, - unsigned long scaled_font_glyph_index, - cairo_scaled_font_subsets_glyph_t *subset_glyph) -{ - cairo_sub_font_glyph_t key, *sub_font_glyph; - - _cairo_sub_font_glyph_init_key (&key, scaled_font_glyph_index); - if (_cairo_hash_table_lookup (sub_font->sub_font_glyphs, &key.base, - (cairo_hash_entry_t **) &sub_font_glyph)) - { - subset_glyph->font_id = sub_font->font_id; - subset_glyph->subset_id = sub_font_glyph->subset_id; - subset_glyph->subset_glyph_index = sub_font_glyph->subset_glyph_index; - subset_glyph->is_scaled = sub_font->is_scaled; - subset_glyph->is_composite = sub_font->is_composite; - subset_glyph->x_advance = sub_font_glyph->x_advance; - - return TRUE; - } - - return FALSE; -} - -static cairo_status_t -_cairo_sub_font_map_glyph (cairo_sub_font_t *sub_font, - unsigned long scaled_font_glyph_index, - cairo_scaled_font_subsets_glyph_t *subset_glyph) -{ - cairo_sub_font_glyph_t key, *sub_font_glyph; - cairo_status_t status; - cairo_scaled_glyph_t *scaled_glyph; - cairo_scaled_font_subsets_glyph_t tmp_subset_glyph; - - _cairo_sub_font_glyph_init_key (&key, scaled_font_glyph_index); - if (! _cairo_hash_table_lookup (sub_font->sub_font_glyphs, &key.base, - (cairo_hash_entry_t **) &sub_font_glyph)) - { - if (sub_font->num_glyphs_in_current_subset == sub_font->max_glyphs_per_subset) - { - sub_font->current_subset++; - sub_font->num_glyphs_in_current_subset = 0; - - /* Reserve first glyph in subset for the .notdef glyph */ - status = _cairo_sub_font_map_glyph (sub_font, 0, &tmp_subset_glyph); - if (status) - return status; - } - - status = _cairo_scaled_glyph_lookup (sub_font->scaled_font, - scaled_font_glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - if (status) - return status; - - sub_font_glyph = _cairo_sub_font_glyph_create (scaled_font_glyph_index, - sub_font->current_subset, - sub_font->num_glyphs_in_current_subset, - scaled_glyph->metrics.x_advance); - if (sub_font_glyph == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = _cairo_hash_table_insert (sub_font->sub_font_glyphs, &sub_font_glyph->base); - if (status) { - _cairo_sub_font_glyph_destroy (sub_font_glyph); - return status; - } - - sub_font->num_glyphs_in_current_subset++; - - if (sub_font->is_scaled) - { - if (sub_font->num_glyphs_in_current_subset > sub_font->parent->max_glyphs_per_scaled_subset_used) - sub_font->parent->max_glyphs_per_scaled_subset_used = sub_font->num_glyphs_in_current_subset; - } - else - { - if (sub_font->num_glyphs_in_current_subset > sub_font->parent->max_glyphs_per_unscaled_subset_used) - sub_font->parent->max_glyphs_per_unscaled_subset_used = sub_font->num_glyphs_in_current_subset; - } - } - - subset_glyph->font_id = sub_font->font_id; - subset_glyph->subset_id = sub_font_glyph->subset_id; - subset_glyph->subset_glyph_index = sub_font_glyph->subset_glyph_index; - subset_glyph->is_scaled = sub_font->is_scaled; - subset_glyph->is_composite = sub_font->is_composite; - subset_glyph->x_advance = sub_font_glyph->x_advance; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_sub_font_collect (void *entry, void *closure) -{ - cairo_sub_font_t *sub_font = entry; - cairo_sub_font_collection_t *collection = closure; - cairo_scaled_font_subset_t subset; - int i; - unsigned int j; - - if (collection->status) - return; - - for (i = 0; i <= sub_font->current_subset; i++) { - collection->subset_id = i; - collection->num_glyphs = 0; - collection->max_glyph = 0; - - _cairo_hash_table_foreach (sub_font->sub_font_glyphs, - _cairo_sub_font_glyph_collect, collection); - if (collection->status) - break; - if (collection->num_glyphs == 0) - continue; - - /* Ensure the resulting array has no uninitialized holes */ - assert (collection->num_glyphs == collection->max_glyph + 1); - - subset.scaled_font = sub_font->scaled_font; - subset.is_composite = sub_font->is_composite; - subset.font_id = sub_font->font_id; - subset.subset_id = i; - subset.glyphs = collection->glyphs; - subset.num_glyphs = collection->num_glyphs; - subset.glyph_names = NULL; - /* No need to check for out of memory here. If to_unicode is NULL, the PDF - * surface does not emit an ToUnicode stream */ - subset.to_unicode = _cairo_malloc_ab (collection->num_glyphs, sizeof (unsigned long)); - if (subset.to_unicode) { - for (j = 0; j < collection->num_glyphs; j++) { - /* default unicode character required when mapping fails */ - subset.to_unicode[j] = 0xfffd; - } - } - collection->status = (collection->font_subset_callback) (&subset, - collection->font_subset_callback_closure); - - if (subset.to_unicode != NULL) - free (subset.to_unicode); - - if (subset.glyph_names != NULL) { - for (j = 0; j < collection->num_glyphs; j++) - free (subset.glyph_names[j]); - free (subset.glyph_names); - } - - if (collection->status) - break; - } -} - -static cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_internal (cairo_subsets_type_t type) -{ - cairo_scaled_font_subsets_t *subsets; - - subsets = malloc (sizeof (cairo_scaled_font_subsets_t)); - if (subsets == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - subsets->type = type; - subsets->max_glyphs_per_unscaled_subset_used = 0; - subsets->max_glyphs_per_scaled_subset_used = 0; - subsets->num_sub_fonts = 0; - - subsets->unscaled_sub_fonts = _cairo_hash_table_create (_cairo_sub_fonts_equal); - if (! subsets->unscaled_sub_fonts) { - free (subsets); - return NULL; - } - - subsets->scaled_sub_fonts = _cairo_hash_table_create (_cairo_sub_fonts_equal); - if (! subsets->scaled_sub_fonts) { - _cairo_hash_table_destroy (subsets->unscaled_sub_fonts); - free (subsets); - return NULL; - } - - return subsets; -} - -cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_scaled (void) -{ - return _cairo_scaled_font_subsets_create_internal (CAIRO_SUBSETS_SCALED); -} - -cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_simple (void) -{ - return _cairo_scaled_font_subsets_create_internal (CAIRO_SUBSETS_SIMPLE); -} - -cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_composite (void) -{ - return _cairo_scaled_font_subsets_create_internal (CAIRO_SUBSETS_COMPOSITE); -} - -void -_cairo_scaled_font_subsets_destroy (cairo_scaled_font_subsets_t *subsets) -{ - _cairo_hash_table_foreach (subsets->scaled_sub_fonts, _cairo_sub_font_pluck, subsets->scaled_sub_fonts); - _cairo_hash_table_destroy (subsets->scaled_sub_fonts); - - _cairo_hash_table_foreach (subsets->unscaled_sub_fonts, _cairo_sub_font_pluck, subsets->unscaled_sub_fonts); - _cairo_hash_table_destroy (subsets->unscaled_sub_fonts); - - free (subsets); -} - -cairo_status_t -_cairo_scaled_font_subsets_map_glyph (cairo_scaled_font_subsets_t *subsets, - cairo_scaled_font_t *scaled_font, - unsigned long scaled_font_glyph_index, - cairo_scaled_font_subsets_glyph_t *subset_glyph) -{ - cairo_sub_font_t key, *sub_font; - cairo_scaled_glyph_t *scaled_glyph; - cairo_font_face_t *font_face; - cairo_matrix_t identity; - cairo_font_options_t font_options; - cairo_scaled_font_t *unscaled_font; - cairo_status_t status; - int max_glyphs; - cairo_bool_t type1_font; - - /* Lookup glyph in unscaled subsets */ - if (subsets->type != CAIRO_SUBSETS_SCALED) { - key.is_scaled = FALSE; - _cairo_sub_font_init_key (&key, scaled_font); - if (_cairo_hash_table_lookup (subsets->unscaled_sub_fonts, &key.base, - (cairo_hash_entry_t **) &sub_font)) - { - if (_cairo_sub_font_lookup_glyph (sub_font, - scaled_font_glyph_index, - subset_glyph)) - return CAIRO_STATUS_SUCCESS; - } - } - - /* Lookup glyph in scaled subsets */ - key.is_scaled = TRUE; - _cairo_sub_font_init_key (&key, scaled_font); - if (_cairo_hash_table_lookup (subsets->scaled_sub_fonts, &key.base, - (cairo_hash_entry_t **) &sub_font)) - { - if (_cairo_sub_font_lookup_glyph (sub_font, - scaled_font_glyph_index, - subset_glyph)) - return CAIRO_STATUS_SUCCESS; - } - - /* Glyph not found. Determine whether the glyph is outline or - * bitmap and add to the appropriate subset. - * - * glyph_index 0 (the .notdef glyph) is a special case. Some fonts - * will return CAIRO_INT_STATUS_UNSUPPORTED when doing a - * _scaled_glyph_lookup(_GLYPH_INFO_PATH). Type1-fallback creates - * empty glyphs in this case so we can put the glyph in a unscaled - * subset. */ - if (scaled_font_glyph_index == 0) { - status = CAIRO_STATUS_SUCCESS; - } else { - status = _cairo_scaled_glyph_lookup (scaled_font, - scaled_font_glyph_index, - CAIRO_SCALED_GLYPH_INFO_PATH, - &scaled_glyph); - } - if (status && status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - if (status == CAIRO_STATUS_SUCCESS && - subsets->type != CAIRO_SUBSETS_SCALED) - { - /* Path available. Add to unscaled subset. */ - key.is_scaled = FALSE; - _cairo_sub_font_init_key (&key, scaled_font); - if (! _cairo_hash_table_lookup (subsets->unscaled_sub_fonts, &key.base, - (cairo_hash_entry_t **) &sub_font)) - { - font_face = cairo_scaled_font_get_font_face (scaled_font); - cairo_matrix_init_identity (&identity); - _cairo_font_options_init_default (&font_options); - cairo_font_options_set_hint_style (&font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (&font_options, CAIRO_HINT_METRICS_OFF); - unscaled_font = cairo_scaled_font_create (font_face, - &identity, - &identity, - &font_options); - if (unscaled_font->status) - return unscaled_font->status; - - subset_glyph->is_scaled = FALSE; - type1_font = FALSE; -#if CAIRO_HAS_FT_FONT - type1_font = _cairo_type1_scaled_font_is_type1 (unscaled_font); -#endif - if (subsets->type == CAIRO_SUBSETS_COMPOSITE && !type1_font) { - max_glyphs = MAX_GLYPHS_PER_COMPOSITE_FONT; - subset_glyph->is_composite = TRUE; - } else { - max_glyphs = MAX_GLYPHS_PER_SIMPLE_FONT; - subset_glyph->is_composite = FALSE; - } - - status = _cairo_sub_font_create (subsets, - unscaled_font, - subsets->num_sub_fonts, - max_glyphs, - subset_glyph->is_scaled, - subset_glyph->is_composite, - &sub_font); - if (status) { - cairo_scaled_font_destroy (unscaled_font); - return status; - } - - status = _cairo_hash_table_insert (subsets->unscaled_sub_fonts, - &sub_font->base); - if (status) { - _cairo_sub_font_destroy (sub_font); - return status; - } - - subsets->num_sub_fonts++; - } - } else { - /* No path available. Add to scaled subset. */ - key.is_scaled = TRUE; - _cairo_sub_font_init_key (&key, scaled_font); - if (! _cairo_hash_table_lookup (subsets->scaled_sub_fonts, &key.base, - (cairo_hash_entry_t **) &sub_font)) - { - subset_glyph->is_scaled = TRUE; - subset_glyph->is_composite = FALSE; - if (subsets->type == CAIRO_SUBSETS_SCALED) - max_glyphs = INT_MAX; - else - max_glyphs = MAX_GLYPHS_PER_SIMPLE_FONT; - - status = _cairo_sub_font_create (subsets, - cairo_scaled_font_reference (scaled_font), - subsets->num_sub_fonts, - max_glyphs, - subset_glyph->is_scaled, - subset_glyph->is_composite, - &sub_font); - if (status) { - cairo_scaled_font_destroy (scaled_font); - return status; - } - - status = _cairo_hash_table_insert (subsets->scaled_sub_fonts, - &sub_font->base); - if (status) { - _cairo_sub_font_destroy (sub_font); - return status; - } - - subsets->num_sub_fonts++; - } - } - - return _cairo_sub_font_map_glyph (sub_font, - scaled_font_glyph_index, - subset_glyph); -} - -static cairo_status_t -_cairo_scaled_font_subsets_foreach_internal (cairo_scaled_font_subsets_t *font_subsets, - cairo_scaled_font_subset_callback_func_t font_subset_callback, - void *closure, - cairo_bool_t is_scaled) -{ - cairo_sub_font_collection_t collection; - - if (is_scaled) - collection.glyphs_size = font_subsets->max_glyphs_per_scaled_subset_used; - else - collection.glyphs_size = font_subsets->max_glyphs_per_unscaled_subset_used; - - if (! collection.glyphs_size) - return CAIRO_STATUS_SUCCESS; - - collection.glyphs = _cairo_malloc_ab (collection.glyphs_size, sizeof(unsigned long)); - if (collection.glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - collection.font_subset_callback = font_subset_callback; - collection.font_subset_callback_closure = closure; - collection.status = CAIRO_STATUS_SUCCESS; - - if (is_scaled) - _cairo_hash_table_foreach (font_subsets->scaled_sub_fonts, - _cairo_sub_font_collect, &collection); - else - _cairo_hash_table_foreach (font_subsets->unscaled_sub_fonts, - _cairo_sub_font_collect, &collection); - - free (collection.glyphs); - - return collection.status; -} - -cairo_status_t -_cairo_scaled_font_subsets_foreach_scaled (cairo_scaled_font_subsets_t *font_subsets, - cairo_scaled_font_subset_callback_func_t font_subset_callback, - void *closure) -{ - return _cairo_scaled_font_subsets_foreach_internal (font_subsets, - font_subset_callback, - closure, - TRUE); -} - -cairo_status_t -_cairo_scaled_font_subsets_foreach_unscaled (cairo_scaled_font_subsets_t *font_subsets, - cairo_scaled_font_subset_callback_func_t font_subset_callback, - void *closure) -{ - return _cairo_scaled_font_subsets_foreach_internal (font_subsets, - font_subset_callback, - closure, - FALSE); -} - -static cairo_bool_t -_cairo_string_equal (const void *key_a, const void *key_b) -{ - const cairo_string_entry_t *a = key_a; - const cairo_string_entry_t *b = key_b; - - if (strcmp (a->string, b->string) == 0) - return TRUE; - else - return FALSE; -} - -static void -_cairo_string_init_key (cairo_string_entry_t *key, char *s) -{ - unsigned long sum = 0; - unsigned int i; - - for (i = 0; i < strlen(s); i++) - sum += s[i]; - key->base.hash = sum; - key->string = s; -} - -static cairo_status_t -create_string_entry (char *s, cairo_string_entry_t **entry) -{ - *entry = malloc (sizeof (cairo_string_entry_t)); - if (*entry == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_string_init_key (*entry, s); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_int_status_t -_cairo_scaled_font_subset_create_glyph_names (cairo_scaled_font_subset_t *subset) -{ - const cairo_scaled_font_backend_t *backend; - unsigned int i; - cairo_status_t status; - cairo_hash_table_t *names; - cairo_string_entry_t key, *entry; - char buf[30]; - - if (subset->to_unicode == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_truetype_create_glyph_to_unicode_map (subset); - if (status) { - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - backend = subset->scaled_font->backend; - if (backend->map_glyphs_to_unicode == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = backend->map_glyphs_to_unicode (subset->scaled_font, subset); - if (status) - return status; - } - - names = _cairo_hash_table_create (_cairo_string_equal); - if (names == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - subset->glyph_names = calloc (subset->num_glyphs, sizeof (char *)); - if (subset->glyph_names == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_HASH; - } - - subset->glyph_names[0] = strdup (".notdef"); - if (subset->glyph_names[0] == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_HASH; - } - - status = create_string_entry (subset->glyph_names[0], &entry); - if (status) - goto CLEANUP_HASH; - - status = _cairo_hash_table_insert (names, &entry->base); - if (status) { - free (entry); - goto CLEANUP_HASH; - } - - for (i = 1; i < subset->num_glyphs; i++) { - if (subset->to_unicode[i] <= 0xffff) { - snprintf (buf, sizeof(buf), "uni%04X", (unsigned int)(subset->to_unicode[i])); - _cairo_string_init_key (&key, buf); - if (_cairo_hash_table_lookup (names, &key.base, - (cairo_hash_entry_t **) &entry)) { - snprintf (buf, sizeof(buf), "g%d", i); - } - } else { - snprintf (buf, sizeof(buf), "g%d", i); - } - - subset->glyph_names[i] = strdup (buf); - if (subset->glyph_names[i] == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_HASH; - } - - status = create_string_entry (subset->glyph_names[i], &entry); - if (status) - goto CLEANUP_HASH; - - status = _cairo_hash_table_insert (names, &entry->base); - if (status) { - free (entry); - goto CLEANUP_HASH; - } - } - -CLEANUP_HASH: - while (1) { - entry = _cairo_hash_table_random_entry (names, NULL); - if (entry == NULL) - break; - - _cairo_hash_table_remove (names, (cairo_hash_entry_t *) entry); - free (entry); - } - _cairo_hash_table_destroy (names); - - if (status == CAIRO_STATUS_SUCCESS) - return CAIRO_STATUS_SUCCESS; - - if (subset->glyph_names != NULL) { - for (i = 0; i < subset->num_glyphs; i++) { - if (subset->glyph_names[i] != NULL) - free (subset->glyph_names[i]); - } - - free (subset->glyph_names); - subset->glyph_names = NULL; - } - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font-subsets-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font-subsets-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-scaled-font-subsets-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-scaled-font-subsets-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,556 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_SCALED_FONT_SUBSETS_PRIVATE_H -#define CAIRO_SCALED_FONT_SUBSETS_PRIVATE_H - -#include "cairoint.h" - -typedef struct _cairo_scaled_font_subsets_glyph { - unsigned int font_id; - unsigned int subset_id; - unsigned int subset_glyph_index; - cairo_bool_t is_scaled; - cairo_bool_t is_composite; - double x_advance; -} cairo_scaled_font_subsets_glyph_t; - -/** - * _cairo_scaled_font_subsets_create_scaled: - * - * Create a new #cairo_scaled_font_subsets_t object which can be used - * to create subsets of any number of #cairo_scaled_font_t - * objects. This allows the (arbitrarily large and sparse) glyph - * indices of a #cairo_scaled_font_t to be mapped to one or more font - * subsets with glyph indices packed into the range - * [0 .. max_glyphs_per_subset). - * - * Return value: a pointer to the newly creates font subsets. The - * caller owns this object and should call - * _cairo_scaled_font_subsets_destroy() when done with it. - **/ -cairo_private cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_scaled (void); - -/** - * _cairo_scaled_font_subsets_create_simple: - * - * Create a new #cairo_scaled_font_subsets_t object which can be used - * to create font subsets suitable for embedding as Postscript or PDF - * simple fonts. - * - * Glyphs with an outline path available will be mapped to one font - * subset for each font face. Glyphs from bitmap fonts will mapped to - * separate font subsets for each #cairo_scaled_font_t object. - * - * The maximum number of glyphs per subset is 256. Each subset - * reserves the first glyph for the .notdef glyph. - * - * Return value: a pointer to the newly creates font subsets. The - * caller owns this object and should call - * _cairo_scaled_font_subsets_destroy() when done with it. - **/ -cairo_private cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_simple (void); - -/** - * _cairo_scaled_font_subsets_create_composite: - * - * Create a new #cairo_scaled_font_subsets_t object which can be used - * to create font subsets suitable for embedding as Postscript or PDF - * composite fonts. - * - * Glyphs with an outline path available will be mapped to one font - * subset for each font face. Each unscaled subset has a maximum of - * 65536 glyphs except for Type1 fonts which have a maximum of 256 glyphs. - * - * Glyphs from bitmap fonts will mapped to separate font subsets for - * each #cairo_scaled_font_t object. Each unscaled subset has a maximum - * of 256 glyphs. - * - * Each subset reserves the first glyph for the .notdef glyph. - * - * Return value: a pointer to the newly creates font subsets. The - * caller owns this object and should call - * _cairo_scaled_font_subsets_destroy() when done with it. - **/ -cairo_private cairo_scaled_font_subsets_t * -_cairo_scaled_font_subsets_create_composite (void); - -/** - * _cairo_scaled_font_subsets_destroy: - * @font_subsets: a #cairo_scaled_font_subsets_t object to be destroyed - * - * Destroys @font_subsets and all resources associated with it. - **/ -cairo_private void -_cairo_scaled_font_subsets_destroy (cairo_scaled_font_subsets_t *font_subsets); - -/** - * _cairo_scaled_font_subsets_map_glyph: - * @font_subsets: a #cairo_scaled_font_subsets_t - * @scaled_font: the font of the glyph to be mapped - * @scaled_font_glyph_index: the index of the glyph to be mapped - * @subset_glyph_ret: return structure containing subset font and glyph id - * - * @font_id_ret: return value giving the font ID of the mapped glyph - * @subset_id_ret: return value giving the subset ID of the mapped glyph within the @font_id_ret - * @subset_glyph_index_ret: return value giving the index of the mapped glyph within the @subset_id_ret subset - * - * Map a glyph from a #cairo_scaled_font to a new index within a - * subset of that font. The mapping performed is from the tuple: - * - * (scaled_font, scaled_font_glyph_index) - * - * to the tuple: - * - * (font_id, subset_id, subset_glyph_index) - * - * This mapping is 1:1. If the input tuple has previously mapped, the - * the output tuple previously returned will be returned again. - * - * Otherwise, the return tuple will be constructed as follows: - * - * 1) There is a 1:1 correspondence between the input scaled_font - * value and the output font_id value. If no mapping has been - * previously performed with the scaled_font value then the - * smallest unused font_id value will be returned. - * - * 2) Within the set of output tuples of the same font_id value the - * smallest value of subset_id will be returned such that - * subset_glyph_index does not exceed max_glyphs_per_subset (as - * passed to _cairo_scaled_font_subsets_create()) and that the - * resulting tuple is unique. - * - * 3) The smallest value of subset_glyph_index is returned such that - * the resulting tuple is unique. - * - * The net result is that any #cairo_scaled_font_t will be represented - * by one or more font subsets. Each subset is effectively a tuple of - * (scaled_font, font_id, subset_id) and within each subset there - * exists a mapping of scaled_glyph_font_index to subset_glyph_index. - * - * This final description of a font subset is the same representation - * used by #cairo_scaled_font_subset_t as provided by - * _cairo_scaled_font_subsets_foreach. - * - * The returned values in the #cairo_scaled_font_subsets_glyph_t struct are: - * - * @font_id: The font ID of the mapped glyph - * @subset_id : The subset ID of the mapped glyph within the @font_id - * @subset_glyph_index: The index of the mapped glyph within the @subset_id subset - * @is_scaled: If true, the mapped glyph is from a bitmap font, and separate font - * subset is created for each font scale used. If false, the outline of the mapped glyph - * is available. One font subset for each font face is created. - * @x_advance: When @is_scaled is true, @x_advance contains the x_advance for the mapped glyph in device space. - * When @is_scaled is false, @x_advance contains the x_advance for the the mapped glyph from an unhinted 1 point font. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, or a non-zero - * value indicating an error. Possible errors include - * CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_scaled_font_subsets_map_glyph (cairo_scaled_font_subsets_t *font_subsets, - cairo_scaled_font_t *scaled_font, - unsigned long scaled_font_glyph_index, - cairo_scaled_font_subsets_glyph_t *subset_glyph_ret); - -typedef cairo_status_t -(*cairo_scaled_font_subset_callback_func_t) (cairo_scaled_font_subset_t *font_subset, - void *closure); - -/** - * _cairo_scaled_font_subsets_foreach: - * @font_subsets: a #cairo_scaled_font_subsets_t - * @font_subset_callback: a function to be called for each font subset - * @closure: closure data for the callback function - * - * Iterate over each unique scaled font subset as created by calls to - * _cairo_scaled_font_subsets_map_glyph(). A subset is determined by - * unique pairs of (font_id, subset_id) as returned by - * _cairo_scaled_font_subsets_map_glyph(). - * - * For each subset, @font_subset_callback will be called and will be - * provided with both a #cairo_scaled_font_subset_t object containing - * all the glyphs in the subset as well as the value of @closure. - * - * The #cairo_scaled_font_subset_t object contains the scaled_font, - * the font_id, and the subset_id corresponding to all glyphs - * belonging to the subset. In addition, it contains an array providing - * a mapping between subset glyph indices and the original scaled font - * glyph indices. - * - * The index of the array corresponds to subset_glyph_index values - * returned by _cairo_scaled_font_subsets_map_glyph() while the - * values of the array correspond to the scaled_font_glyph_index - * values passed as input to the same function. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, or a non-zero - * value indicating an error. Possible errors include - * CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_scaled_font_subsets_foreach_scaled (cairo_scaled_font_subsets_t *font_subsets, - cairo_scaled_font_subset_callback_func_t font_subset_callback, - void *closure); - -/** - * _cairo_scaled_font_subsets_foreach_unscaled: - * @font_subsets: a #cairo_scaled_font_subsets_t - * @font_subset_callback: a function to be called for each font subset - * @closure: closure data for the callback function - * - * Iterate over each unique unscaled font subset as created by calls to - * _cairo_scaled_font_subsets_map_glyph(). A subset is determined by - * unique pairs of (font_id, subset_id) as returned by - * _cairo_scaled_font_subsets_map_glyph(). - * - * For each subset, @font_subset_callback will be called and will be - * provided with both a #cairo_scaled_font_subset_t object containing - * all the glyphs in the subset as well as the value of @closure. - * - * The #cairo_scaled_font_subset_t object contains the scaled_font, - * the font_id, and the subset_id corresponding to all glyphs - * belonging to the subset. In addition, it contains an array providing - * a mapping between subset glyph indices and the original scaled font - * glyph indices. - * - * The index of the array corresponds to subset_glyph_index values - * returned by _cairo_scaled_font_subsets_map_glyph() while the - * values of the array correspond to the scaled_font_glyph_index - * values passed as input to the same function. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, or a non-zero - * value indicating an error. Possible errors include - * CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_scaled_font_subsets_foreach_unscaled (cairo_scaled_font_subsets_t *font_subsets, - cairo_scaled_font_subset_callback_func_t font_subset_callback, - void *closure); - -/** - * _cairo_scaled_font_subset_create_glyph_names: - * @font_subsets: a #cairo_scaled_font_subsets_t - * - * Create an array of strings containing the glyph name for each glyph - * in @font_subsets. The array as store in font_subsets->glyph_names. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font backend does not support - * mapping the glyph indices to unicode characters. Possible errors - * include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_int_status_t -_cairo_scaled_font_subset_create_glyph_names (cairo_scaled_font_subset_t *subset); - -typedef struct _cairo_cff_subset { - char *base_font; - int *widths; - long x_min, y_min, x_max, y_max; - long ascent, descent; - char *data; - unsigned long data_length; -} cairo_cff_subset_t; - -/** - * _cairo_cff_subset_init: - * @cff_subset: a #cairo_cff_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate a - * cff file corresponding to @font_subset and initialize - * @cff_subset with information about the subset and the cff - * data. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a - * cff file, or an non-zero value indicating an error. Possible - * errors include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_cff_subset_init (cairo_cff_subset_t *cff_subset, - const char *name, - cairo_scaled_font_subset_t *font_subset); - -/** - * _cairo_cff_subset_fini: - * @cff_subset: a #cairo_cff_subset_t - * - * Free all resources associated with @cff_subset. After this - * call, @cff_subset should not be used again without a - * subsequent call to _cairo_cff_subset_init() again first. - **/ -cairo_private void -_cairo_cff_subset_fini (cairo_cff_subset_t *cff_subset); - -/** - * _cairo_cff_fallback_init: - * @cff_subset: a #cairo_cff_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate a cff - * file corresponding to @font_subset and initialize @cff_subset - * with information about the subset and the cff data. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a - * cff file, or an non-zero value indicating an error. Possible - * errors include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_cff_fallback_init (cairo_cff_subset_t *cff_subset, - const char *name, - cairo_scaled_font_subset_t *font_subset); - -/** - * _cairo_cff_fallback_fini: - * @cff_subset: a #cairo_cff_subset_t - * - * Free all resources associated with @cff_subset. After this - * call, @cff_subset should not be used again without a - * subsequent call to _cairo_cff_subset_init() again first. - **/ -cairo_private void -_cairo_cff_fallback_fini (cairo_cff_subset_t *cff_subset); - -typedef struct _cairo_truetype_subset { - char *base_font; - double *widths; - double x_min, y_min, x_max, y_max; - double ascent, descent; - char *data; - unsigned long data_length; - unsigned long *string_offsets; - unsigned long num_string_offsets; -} cairo_truetype_subset_t; - -/** - * _cairo_truetype_subset_init: - * @truetype_subset: a #cairo_truetype_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate a - * truetype file corresponding to @font_subset and initialize - * @truetype_subset with information about the subset and the truetype - * data. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a - * truetype file, or an non-zero value indicating an error. Possible - * errors include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, - cairo_scaled_font_subset_t *font_subset); - -/** - * _cairo_truetype_subset_fini: - * @truetype_subset: a #cairo_truetype_subset_t - * - * Free all resources associated with @truetype_subset. After this - * call, @truetype_subset should not be used again without a - * subsequent call to _cairo_truetype_subset_init() again first. - **/ -cairo_private void -_cairo_truetype_subset_fini (cairo_truetype_subset_t *truetype_subset); - - - -typedef struct _cairo_type1_subset { - char *base_font; - int *widths; - long x_min, y_min, x_max, y_max; - long ascent, descent; - char *data; - unsigned long header_length; - unsigned long data_length; - unsigned long trailer_length; -} cairo_type1_subset_t; - -/** - * _cairo_type1_subset_init: - * @type1_subset: a #cairo_type1_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * @hex_encode: if true the encrypted portion of the font is hex encoded - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate a type1 - * file corresponding to @font_subset and initialize @type1_subset - * with information about the subset and the type1 data. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a type1 - * file, or an non-zero value indicating an error. Possible errors - * include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_type1_subset_init (cairo_type1_subset_t *type_subset, - const char *name, - cairo_scaled_font_subset_t *font_subset, - cairo_bool_t hex_encode); - -/** - * _cairo_type1_subset_fini: - * @type1_subset: a #cairo_type1_subset_t - * - * Free all resources associated with @type1_subset. After this call, - * @type1_subset should not be used again without a subsequent call to - * _cairo_truetype_type1_init() again first. - **/ -cairo_private void -_cairo_type1_subset_fini (cairo_type1_subset_t *subset); - -/** - * _cairo_type1_scaled_font_is_type1: - * @scaled_font: a #cairo_scaled_font_t - * - * Return %TRUE if @scaled_font is a Type 1 font, otherwise return %FALSE. - **/ -cairo_private cairo_bool_t -_cairo_type1_scaled_font_is_type1 (cairo_scaled_font_t *scaled_font); - -/** - * _cairo_type1_fallback_init_binary: - * @type1_subset: a #cairo_type1_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate a type1 - * file corresponding to @font_subset and initialize @type1_subset - * with information about the subset and the type1 data. The encrypted - * part of the font is binary encoded. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a type1 - * file, or an non-zero value indicating an error. Possible errors - * include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_type1_fallback_init_binary (cairo_type1_subset_t *type_subset, - const char *name, - cairo_scaled_font_subset_t *font_subset); - -/** - * _cairo_type1_fallback_init_hexencode: - * @type1_subset: a #cairo_type1_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate a type1 - * file corresponding to @font_subset and initialize @type1_subset - * with information about the subset and the type1 data. The encrypted - * part of the font is hex encoded. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a type1 - * file, or an non-zero value indicating an error. Possible errors - * include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_type1_fallback_init_hex (cairo_type1_subset_t *type_subset, - const char *name, - cairo_scaled_font_subset_t *font_subset); - -/** - * _cairo_type1_fallback_fini: - * @type1_subset: a #cairo_type1_subset_t - * - * Free all resources associated with @type1_subset. After this call, - * @type1_subset should not be used again without a subsequent call to - * _cairo_truetype_type1_init() again first. - **/ -cairo_private void -_cairo_type1_fallback_fini (cairo_type1_subset_t *subset); - -typedef struct _cairo_type2_charstrings { - int *widths; - long x_min, y_min, x_max, y_max; - long ascent, descent; - cairo_array_t charstrings; -} cairo_type2_charstrings_t; - -/** - * _cairo_type2_charstrings_init: - * @type2_subset: a #cairo_type2_subset_t to initialize - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) generate type2 - * charstrings to @font_subset and initialize @type2_subset - * with information about the subset. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the font can't be subset as a type2 - * charstrings, or an non-zero value indicating an error. Possible errors - * include %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_status_t -_cairo_type2_charstrings_init (cairo_type2_charstrings_t *charstrings, - cairo_scaled_font_subset_t *font_subset); - -/** - * _cairo_type2_charstrings_fini: - * @subset: a #cairo_type2_charstrings_t - * - * Free all resources associated with @type2_charstring. After this call, - * @type2_charstring should not be used again without a subsequent call to - * _cairo_type2_charstring_init() again first. - **/ -cairo_private void -_cairo_type2_charstrings_fini (cairo_type2_charstrings_t *charstrings); - -/** - * _cairo_truetype_create_glyph_to_unicode_map: - * @font_subset: the #cairo_scaled_font_subset_t to initialize from - * - * If possible (depending on the format of the underlying - * #cairo_scaled_font_t and the font backend in use) assign - * the unicode character of each glyph in font_subset to - * fontsubset->to_unicode. - * - * Return value: %CAIRO_STATUS_SUCCESS if successful, - * CAIRO_INT_STATUS_UNSUPPORTED if the unicode encoding of - * the glyphs is not available. Possible errors include - * CAIRO_STATUS_NO_MEMORY. - **/ -cairo_private cairo_int_status_t -_cairo_truetype_create_glyph_to_unicode_map (cairo_scaled_font_subset_t *font_subset); - -#endif /* CAIRO_SCALED_FONT_SUBSETS_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-skiplist.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-skiplist.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-skiplist.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-skiplist.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,481 +0,0 @@ -/* - * Copyright © 2006 Keith Packard - * Copyright © 2006 Carl Worth - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "cairoint.h" - -#include "cairo-skiplist-private.h" - -#define ELT_DATA(elt) (void *) ((char*) (elt) - list->data_size) -#define NEXT_TO_ELT(next) (skip_elt_t *) ((char *) (next) - offsetof (skip_elt_t, next)) - -/* Four 256 element lookup tables back to back implementing a linear - * feedback shift register of degree 32. */ -static unsigned const _cairo_lfsr_random_lut[1024] = { - 0x00000000, 0x9a795537, 0xae8bff59, 0x34f2aa6e, 0xc76eab85, 0x5d17feb2, - 0x69e554dc, 0xf39c01eb, 0x14a4023d, 0x8edd570a, 0xba2ffd64, 0x2056a853, - 0xd3caa9b8, 0x49b3fc8f, 0x7d4156e1, 0xe73803d6, 0x2948047a, 0xb331514d, - 0x87c3fb23, 0x1dbaae14, 0xee26afff, 0x745ffac8, 0x40ad50a6, 0xdad40591, - 0x3dec0647, 0xa7955370, 0x9367f91e, 0x091eac29, 0xfa82adc2, 0x60fbf8f5, - 0x5409529b, 0xce7007ac, 0x529008f4, 0xc8e95dc3, 0xfc1bf7ad, 0x6662a29a, - 0x95fea371, 0x0f87f646, 0x3b755c28, 0xa10c091f, 0x46340ac9, 0xdc4d5ffe, - 0xe8bff590, 0x72c6a0a7, 0x815aa14c, 0x1b23f47b, 0x2fd15e15, 0xb5a80b22, - 0x7bd80c8e, 0xe1a159b9, 0xd553f3d7, 0x4f2aa6e0, 0xbcb6a70b, 0x26cff23c, - 0x123d5852, 0x88440d65, 0x6f7c0eb3, 0xf5055b84, 0xc1f7f1ea, 0x5b8ea4dd, - 0xa812a536, 0x326bf001, 0x06995a6f, 0x9ce00f58, 0xa52011e8, 0x3f5944df, - 0x0babeeb1, 0x91d2bb86, 0x624eba6d, 0xf837ef5a, 0xccc54534, 0x56bc1003, - 0xb18413d5, 0x2bfd46e2, 0x1f0fec8c, 0x8576b9bb, 0x76eab850, 0xec93ed67, - 0xd8614709, 0x4218123e, 0x8c681592, 0x161140a5, 0x22e3eacb, 0xb89abffc, - 0x4b06be17, 0xd17feb20, 0xe58d414e, 0x7ff41479, 0x98cc17af, 0x02b54298, - 0x3647e8f6, 0xac3ebdc1, 0x5fa2bc2a, 0xc5dbe91d, 0xf1294373, 0x6b501644, - 0xf7b0191c, 0x6dc94c2b, 0x593be645, 0xc342b372, 0x30deb299, 0xaaa7e7ae, - 0x9e554dc0, 0x042c18f7, 0xe3141b21, 0x796d4e16, 0x4d9fe478, 0xd7e6b14f, - 0x247ab0a4, 0xbe03e593, 0x8af14ffd, 0x10881aca, 0xdef81d66, 0x44814851, - 0x7073e23f, 0xea0ab708, 0x1996b6e3, 0x83efe3d4, 0xb71d49ba, 0x2d641c8d, - 0xca5c1f5b, 0x50254a6c, 0x64d7e002, 0xfeaeb535, 0x0d32b4de, 0x974be1e9, - 0xa3b94b87, 0x39c01eb0, 0xd03976e7, 0x4a4023d0, 0x7eb289be, 0xe4cbdc89, - 0x1757dd62, 0x8d2e8855, 0xb9dc223b, 0x23a5770c, 0xc49d74da, 0x5ee421ed, - 0x6a168b83, 0xf06fdeb4, 0x03f3df5f, 0x998a8a68, 0xad782006, 0x37017531, - 0xf971729d, 0x630827aa, 0x57fa8dc4, 0xcd83d8f3, 0x3e1fd918, 0xa4668c2f, - 0x90942641, 0x0aed7376, 0xedd570a0, 0x77ac2597, 0x435e8ff9, 0xd927dace, - 0x2abbdb25, 0xb0c28e12, 0x8430247c, 0x1e49714b, 0x82a97e13, 0x18d02b24, - 0x2c22814a, 0xb65bd47d, 0x45c7d596, 0xdfbe80a1, 0xeb4c2acf, 0x71357ff8, - 0x960d7c2e, 0x0c742919, 0x38868377, 0xa2ffd640, 0x5163d7ab, 0xcb1a829c, - 0xffe828f2, 0x65917dc5, 0xabe17a69, 0x31982f5e, 0x056a8530, 0x9f13d007, - 0x6c8fd1ec, 0xf6f684db, 0xc2042eb5, 0x587d7b82, 0xbf457854, 0x253c2d63, - 0x11ce870d, 0x8bb7d23a, 0x782bd3d1, 0xe25286e6, 0xd6a02c88, 0x4cd979bf, - 0x7519670f, 0xef603238, 0xdb929856, 0x41ebcd61, 0xb277cc8a, 0x280e99bd, - 0x1cfc33d3, 0x868566e4, 0x61bd6532, 0xfbc43005, 0xcf369a6b, 0x554fcf5c, - 0xa6d3ceb7, 0x3caa9b80, 0x085831ee, 0x922164d9, 0x5c516375, 0xc6283642, - 0xf2da9c2c, 0x68a3c91b, 0x9b3fc8f0, 0x01469dc7, 0x35b437a9, 0xafcd629e, - 0x48f56148, 0xd28c347f, 0xe67e9e11, 0x7c07cb26, 0x8f9bcacd, 0x15e29ffa, - 0x21103594, 0xbb6960a3, 0x27896ffb, 0xbdf03acc, 0x890290a2, 0x137bc595, - 0xe0e7c47e, 0x7a9e9149, 0x4e6c3b27, 0xd4156e10, 0x332d6dc6, 0xa95438f1, - 0x9da6929f, 0x07dfc7a8, 0xf443c643, 0x6e3a9374, 0x5ac8391a, 0xc0b16c2d, - 0x0ec16b81, 0x94b83eb6, 0xa04a94d8, 0x3a33c1ef, 0xc9afc004, 0x53d69533, - 0x67243f5d, 0xfd5d6a6a, 0x1a6569bc, 0x801c3c8b, 0xb4ee96e5, 0x2e97c3d2, - 0xdd0bc239, 0x4772970e, 0x73803d60, 0xe9f96857, 0x00000000, 0x3a0bb8f9, - 0x741771f2, 0x4e1cc90b, 0xe82ee3e4, 0xd2255b1d, 0x9c399216, 0xa6322aef, - 0x4a2492ff, 0x702f2a06, 0x3e33e30d, 0x04385bf4, 0xa20a711b, 0x9801c9e2, - 0xd61d00e9, 0xec16b810, 0x944925fe, 0xae429d07, 0xe05e540c, 0xda55ecf5, - 0x7c67c61a, 0x466c7ee3, 0x0870b7e8, 0x327b0f11, 0xde6db701, 0xe4660ff8, - 0xaa7ac6f3, 0x90717e0a, 0x364354e5, 0x0c48ec1c, 0x42542517, 0x785f9dee, - 0xb2eb1ecb, 0x88e0a632, 0xc6fc6f39, 0xfcf7d7c0, 0x5ac5fd2f, 0x60ce45d6, - 0x2ed28cdd, 0x14d93424, 0xf8cf8c34, 0xc2c434cd, 0x8cd8fdc6, 0xb6d3453f, - 0x10e16fd0, 0x2aead729, 0x64f61e22, 0x5efda6db, 0x26a23b35, 0x1ca983cc, - 0x52b54ac7, 0x68bef23e, 0xce8cd8d1, 0xf4876028, 0xba9ba923, 0x809011da, - 0x6c86a9ca, 0x568d1133, 0x1891d838, 0x229a60c1, 0x84a84a2e, 0xbea3f2d7, - 0xf0bf3bdc, 0xcab48325, 0xffaf68a1, 0xc5a4d058, 0x8bb81953, 0xb1b3a1aa, - 0x17818b45, 0x2d8a33bc, 0x6396fab7, 0x599d424e, 0xb58bfa5e, 0x8f8042a7, - 0xc19c8bac, 0xfb973355, 0x5da519ba, 0x67aea143, 0x29b26848, 0x13b9d0b1, - 0x6be64d5f, 0x51edf5a6, 0x1ff13cad, 0x25fa8454, 0x83c8aebb, 0xb9c31642, - 0xf7dfdf49, 0xcdd467b0, 0x21c2dfa0, 0x1bc96759, 0x55d5ae52, 0x6fde16ab, - 0xc9ec3c44, 0xf3e784bd, 0xbdfb4db6, 0x87f0f54f, 0x4d44766a, 0x774fce93, - 0x39530798, 0x0358bf61, 0xa56a958e, 0x9f612d77, 0xd17de47c, 0xeb765c85, - 0x0760e495, 0x3d6b5c6c, 0x73779567, 0x497c2d9e, 0xef4e0771, 0xd545bf88, - 0x9b597683, 0xa152ce7a, 0xd90d5394, 0xe306eb6d, 0xad1a2266, 0x97119a9f, - 0x3123b070, 0x0b280889, 0x4534c182, 0x7f3f797b, 0x9329c16b, 0xa9227992, - 0xe73eb099, 0xdd350860, 0x7b07228f, 0x410c9a76, 0x0f10537d, 0x351beb84, - 0x65278475, 0x5f2c3c8c, 0x1130f587, 0x2b3b4d7e, 0x8d096791, 0xb702df68, - 0xf91e1663, 0xc315ae9a, 0x2f03168a, 0x1508ae73, 0x5b146778, 0x611fdf81, - 0xc72df56e, 0xfd264d97, 0xb33a849c, 0x89313c65, 0xf16ea18b, 0xcb651972, - 0x8579d079, 0xbf726880, 0x1940426f, 0x234bfa96, 0x6d57339d, 0x575c8b64, - 0xbb4a3374, 0x81418b8d, 0xcf5d4286, 0xf556fa7f, 0x5364d090, 0x696f6869, - 0x2773a162, 0x1d78199b, 0xd7cc9abe, 0xedc72247, 0xa3dbeb4c, 0x99d053b5, - 0x3fe2795a, 0x05e9c1a3, 0x4bf508a8, 0x71feb051, 0x9de80841, 0xa7e3b0b8, - 0xe9ff79b3, 0xd3f4c14a, 0x75c6eba5, 0x4fcd535c, 0x01d19a57, 0x3bda22ae, - 0x4385bf40, 0x798e07b9, 0x3792ceb2, 0x0d99764b, 0xabab5ca4, 0x91a0e45d, - 0xdfbc2d56, 0xe5b795af, 0x09a12dbf, 0x33aa9546, 0x7db65c4d, 0x47bde4b4, - 0xe18fce5b, 0xdb8476a2, 0x9598bfa9, 0xaf930750, 0x9a88ecd4, 0xa083542d, - 0xee9f9d26, 0xd49425df, 0x72a60f30, 0x48adb7c9, 0x06b17ec2, 0x3cbac63b, - 0xd0ac7e2b, 0xeaa7c6d2, 0xa4bb0fd9, 0x9eb0b720, 0x38829dcf, 0x02892536, - 0x4c95ec3d, 0x769e54c4, 0x0ec1c92a, 0x34ca71d3, 0x7ad6b8d8, 0x40dd0021, - 0xe6ef2ace, 0xdce49237, 0x92f85b3c, 0xa8f3e3c5, 0x44e55bd5, 0x7eeee32c, - 0x30f22a27, 0x0af992de, 0xaccbb831, 0x96c000c8, 0xd8dcc9c3, 0xe2d7713a, - 0x2863f21f, 0x12684ae6, 0x5c7483ed, 0x667f3b14, 0xc04d11fb, 0xfa46a902, - 0xb45a6009, 0x8e51d8f0, 0x624760e0, 0x584cd819, 0x16501112, 0x2c5ba9eb, - 0x8a698304, 0xb0623bfd, 0xfe7ef2f6, 0xc4754a0f, 0xbc2ad7e1, 0x86216f18, - 0xc83da613, 0xf2361eea, 0x54043405, 0x6e0f8cfc, 0x201345f7, 0x1a18fd0e, - 0xf60e451e, 0xcc05fde7, 0x821934ec, 0xb8128c15, 0x1e20a6fa, 0x242b1e03, - 0x6a37d708, 0x503c6ff1, 0x00000000, 0xca4f08ea, 0x0ee744e3, 0xc4a84c09, - 0x1dce89c6, 0xd781812c, 0x1329cd25, 0xd966c5cf, 0x3b9d138c, 0xf1d21b66, - 0x357a576f, 0xff355f85, 0x26539a4a, 0xec1c92a0, 0x28b4dea9, 0xe2fbd643, - 0x773a2718, 0xbd752ff2, 0x79dd63fb, 0xb3926b11, 0x6af4aede, 0xa0bba634, - 0x6413ea3d, 0xae5ce2d7, 0x4ca73494, 0x86e83c7e, 0x42407077, 0x880f789d, - 0x5169bd52, 0x9b26b5b8, 0x5f8ef9b1, 0x95c1f15b, 0xee744e30, 0x243b46da, - 0xe0930ad3, 0x2adc0239, 0xf3bac7f6, 0x39f5cf1c, 0xfd5d8315, 0x37128bff, - 0xd5e95dbc, 0x1fa65556, 0xdb0e195f, 0x114111b5, 0xc827d47a, 0x0268dc90, - 0xc6c09099, 0x0c8f9873, 0x994e6928, 0x530161c2, 0x97a92dcb, 0x5de62521, - 0x8480e0ee, 0x4ecfe804, 0x8a67a40d, 0x4028ace7, 0xa2d37aa4, 0x689c724e, - 0xac343e47, 0x667b36ad, 0xbf1df362, 0x7552fb88, 0xb1fab781, 0x7bb5bf6b, - 0x4691c957, 0x8cdec1bd, 0x48768db4, 0x8239855e, 0x5b5f4091, 0x9110487b, - 0x55b80472, 0x9ff70c98, 0x7d0cdadb, 0xb743d231, 0x73eb9e38, 0xb9a496d2, - 0x60c2531d, 0xaa8d5bf7, 0x6e2517fe, 0xa46a1f14, 0x31abee4f, 0xfbe4e6a5, - 0x3f4caaac, 0xf503a246, 0x2c656789, 0xe62a6f63, 0x2282236a, 0xe8cd2b80, - 0x0a36fdc3, 0xc079f529, 0x04d1b920, 0xce9eb1ca, 0x17f87405, 0xddb77cef, - 0x191f30e6, 0xd350380c, 0xa8e58767, 0x62aa8f8d, 0xa602c384, 0x6c4dcb6e, - 0xb52b0ea1, 0x7f64064b, 0xbbcc4a42, 0x718342a8, 0x937894eb, 0x59379c01, - 0x9d9fd008, 0x57d0d8e2, 0x8eb61d2d, 0x44f915c7, 0x805159ce, 0x4a1e5124, - 0xdfdfa07f, 0x1590a895, 0xd138e49c, 0x1b77ec76, 0xc21129b9, 0x085e2153, - 0xccf66d5a, 0x06b965b0, 0xe442b3f3, 0x2e0dbb19, 0xeaa5f710, 0x20eafffa, - 0xf98c3a35, 0x33c332df, 0xf76b7ed6, 0x3d24763c, 0x8d2392ae, 0x476c9a44, - 0x83c4d64d, 0x498bdea7, 0x90ed1b68, 0x5aa21382, 0x9e0a5f8b, 0x54455761, - 0xb6be8122, 0x7cf189c8, 0xb859c5c1, 0x7216cd2b, 0xab7008e4, 0x613f000e, - 0xa5974c07, 0x6fd844ed, 0xfa19b5b6, 0x3056bd5c, 0xf4fef155, 0x3eb1f9bf, - 0xe7d73c70, 0x2d98349a, 0xe9307893, 0x237f7079, 0xc184a63a, 0x0bcbaed0, - 0xcf63e2d9, 0x052cea33, 0xdc4a2ffc, 0x16052716, 0xd2ad6b1f, 0x18e263f5, - 0x6357dc9e, 0xa918d474, 0x6db0987d, 0xa7ff9097, 0x7e995558, 0xb4d65db2, - 0x707e11bb, 0xba311951, 0x58cacf12, 0x9285c7f8, 0x562d8bf1, 0x9c62831b, - 0x450446d4, 0x8f4b4e3e, 0x4be30237, 0x81ac0add, 0x146dfb86, 0xde22f36c, - 0x1a8abf65, 0xd0c5b78f, 0x09a37240, 0xc3ec7aaa, 0x074436a3, 0xcd0b3e49, - 0x2ff0e80a, 0xe5bfe0e0, 0x2117ace9, 0xeb58a403, 0x323e61cc, 0xf8716926, - 0x3cd9252f, 0xf6962dc5, 0xcbb25bf9, 0x01fd5313, 0xc5551f1a, 0x0f1a17f0, - 0xd67cd23f, 0x1c33dad5, 0xd89b96dc, 0x12d49e36, 0xf02f4875, 0x3a60409f, - 0xfec80c96, 0x3487047c, 0xede1c1b3, 0x27aec959, 0xe3068550, 0x29498dba, - 0xbc887ce1, 0x76c7740b, 0xb26f3802, 0x782030e8, 0xa146f527, 0x6b09fdcd, - 0xafa1b1c4, 0x65eeb92e, 0x87156f6d, 0x4d5a6787, 0x89f22b8e, 0x43bd2364, - 0x9adbe6ab, 0x5094ee41, 0x943ca248, 0x5e73aaa2, 0x25c615c9, 0xef891d23, - 0x2b21512a, 0xe16e59c0, 0x38089c0f, 0xf24794e5, 0x36efd8ec, 0xfca0d006, - 0x1e5b0645, 0xd4140eaf, 0x10bc42a6, 0xdaf34a4c, 0x03958f83, 0xc9da8769, - 0x0d72cb60, 0xc73dc38a, 0x52fc32d1, 0x98b33a3b, 0x5c1b7632, 0x96547ed8, - 0x4f32bb17, 0x857db3fd, 0x41d5fff4, 0x8b9af71e, 0x6961215d, 0xa32e29b7, - 0x678665be, 0xadc96d54, 0x74afa89b, 0xbee0a071, 0x7a48ec78, 0xb007e492, - 0x00000000, 0x803e706b, 0x9a05b5e1, 0x1a3bc58a, 0xae723ef5, 0x2e4c4e9e, - 0x34778b14, 0xb449fb7f, 0xc69d28dd, 0x46a358b6, 0x5c989d3c, 0xdca6ed57, - 0x68ef1628, 0xe8d16643, 0xf2eaa3c9, 0x72d4d3a2, 0x1743048d, 0x977d74e6, - 0x8d46b16c, 0x0d78c107, 0xb9313a78, 0x390f4a13, 0x23348f99, 0xa30afff2, - 0xd1de2c50, 0x51e05c3b, 0x4bdb99b1, 0xcbe5e9da, 0x7fac12a5, 0xff9262ce, - 0xe5a9a744, 0x6597d72f, 0x2e86091a, 0xaeb87971, 0xb483bcfb, 0x34bdcc90, - 0x80f437ef, 0x00ca4784, 0x1af1820e, 0x9acff265, 0xe81b21c7, 0x682551ac, - 0x721e9426, 0xf220e44d, 0x46691f32, 0xc6576f59, 0xdc6caad3, 0x5c52dab8, - 0x39c50d97, 0xb9fb7dfc, 0xa3c0b876, 0x23fec81d, 0x97b73362, 0x17894309, - 0x0db28683, 0x8d8cf6e8, 0xff58254a, 0x7f665521, 0x655d90ab, 0xe563e0c0, - 0x512a1bbf, 0xd1146bd4, 0xcb2fae5e, 0x4b11de35, 0x5d0c1234, 0xdd32625f, - 0xc709a7d5, 0x4737d7be, 0xf37e2cc1, 0x73405caa, 0x697b9920, 0xe945e94b, - 0x9b913ae9, 0x1baf4a82, 0x01948f08, 0x81aaff63, 0x35e3041c, 0xb5dd7477, - 0xafe6b1fd, 0x2fd8c196, 0x4a4f16b9, 0xca7166d2, 0xd04aa358, 0x5074d333, - 0xe43d284c, 0x64035827, 0x7e389dad, 0xfe06edc6, 0x8cd23e64, 0x0cec4e0f, - 0x16d78b85, 0x96e9fbee, 0x22a00091, 0xa29e70fa, 0xb8a5b570, 0x389bc51b, - 0x738a1b2e, 0xf3b46b45, 0xe98faecf, 0x69b1dea4, 0xddf825db, 0x5dc655b0, - 0x47fd903a, 0xc7c3e051, 0xb51733f3, 0x35294398, 0x2f128612, 0xaf2cf679, - 0x1b650d06, 0x9b5b7d6d, 0x8160b8e7, 0x015ec88c, 0x64c91fa3, 0xe4f76fc8, - 0xfeccaa42, 0x7ef2da29, 0xcabb2156, 0x4a85513d, 0x50be94b7, 0xd080e4dc, - 0xa254377e, 0x226a4715, 0x3851829f, 0xb86ff2f4, 0x0c26098b, 0x8c1879e0, - 0x9623bc6a, 0x161dcc01, 0xba182468, 0x3a265403, 0x201d9189, 0xa023e1e2, - 0x146a1a9d, 0x94546af6, 0x8e6faf7c, 0x0e51df17, 0x7c850cb5, 0xfcbb7cde, - 0xe680b954, 0x66bec93f, 0xd2f73240, 0x52c9422b, 0x48f287a1, 0xc8ccf7ca, - 0xad5b20e5, 0x2d65508e, 0x375e9504, 0xb760e56f, 0x03291e10, 0x83176e7b, - 0x992cabf1, 0x1912db9a, 0x6bc60838, 0xebf87853, 0xf1c3bdd9, 0x71fdcdb2, - 0xc5b436cd, 0x458a46a6, 0x5fb1832c, 0xdf8ff347, 0x949e2d72, 0x14a05d19, - 0x0e9b9893, 0x8ea5e8f8, 0x3aec1387, 0xbad263ec, 0xa0e9a666, 0x20d7d60d, - 0x520305af, 0xd23d75c4, 0xc806b04e, 0x4838c025, 0xfc713b5a, 0x7c4f4b31, - 0x66748ebb, 0xe64afed0, 0x83dd29ff, 0x03e35994, 0x19d89c1e, 0x99e6ec75, - 0x2daf170a, 0xad916761, 0xb7aaa2eb, 0x3794d280, 0x45400122, 0xc57e7149, - 0xdf45b4c3, 0x5f7bc4a8, 0xeb323fd7, 0x6b0c4fbc, 0x71378a36, 0xf109fa5d, - 0xe714365c, 0x672a4637, 0x7d1183bd, 0xfd2ff3d6, 0x496608a9, 0xc95878c2, - 0xd363bd48, 0x535dcd23, 0x21891e81, 0xa1b76eea, 0xbb8cab60, 0x3bb2db0b, - 0x8ffb2074, 0x0fc5501f, 0x15fe9595, 0x95c0e5fe, 0xf05732d1, 0x706942ba, - 0x6a528730, 0xea6cf75b, 0x5e250c24, 0xde1b7c4f, 0xc420b9c5, 0x441ec9ae, - 0x36ca1a0c, 0xb6f46a67, 0xaccfafed, 0x2cf1df86, 0x98b824f9, 0x18865492, - 0x02bd9118, 0x8283e173, 0xc9923f46, 0x49ac4f2d, 0x53978aa7, 0xd3a9facc, - 0x67e001b3, 0xe7de71d8, 0xfde5b452, 0x7ddbc439, 0x0f0f179b, 0x8f3167f0, - 0x950aa27a, 0x1534d211, 0xa17d296e, 0x21435905, 0x3b789c8f, 0xbb46ece4, - 0xded13bcb, 0x5eef4ba0, 0x44d48e2a, 0xc4eafe41, 0x70a3053e, 0xf09d7555, - 0xeaa6b0df, 0x6a98c0b4, 0x184c1316, 0x9872637d, 0x8249a6f7, 0x0277d69c, - 0xb63e2de3, 0x36005d88, 0x2c3b9802, 0xac05e869}; - -static unsigned _cairo_lfsr_random_state = 0x12345678; - -static unsigned -lfsr_random(void) -{ - unsigned next; - next = _cairo_lfsr_random_lut[((_cairo_lfsr_random_state>> 0) & 0xFF) + 0*256]; - next ^= _cairo_lfsr_random_lut[((_cairo_lfsr_random_state>> 8) & 0xFF) + 1*256]; - next ^= _cairo_lfsr_random_lut[((_cairo_lfsr_random_state>>16) & 0xFF) + 2*256]; - next ^= _cairo_lfsr_random_lut[((_cairo_lfsr_random_state>>24) & 0xFF) + 3*256]; - return _cairo_lfsr_random_state = next; -} - -/* - * Initialize an empty skip list - */ -void -_cairo_skip_list_init (cairo_skip_list_t *list, - cairo_skip_list_compare_t compare, - size_t elt_size) -{ - int i; - - list->compare = compare; - list->elt_size = elt_size; - list->data_size = elt_size - sizeof (skip_elt_t); - - for (i = 0; i < MAX_LEVEL; i++) { - list->chains[i] = NULL; - } - - for (i = 0; i < MAX_FREELIST_LEVEL; i++) { - list->freelists[i] = NULL; - } - - list->max_level = 0; -} - -void -_cairo_skip_list_fini (cairo_skip_list_t *list) -{ - skip_elt_t *elt; - int i; - - while ((elt = list->chains[0])) { - _cairo_skip_list_delete_given (list, elt); - } - for (i=0; ifreelists[i]; - while (elt) { - skip_elt_t *nextfree = elt->prev; - free (ELT_DATA(elt)); - elt = nextfree; - } - } -} - -/* - * Generate a random level number, distributed - * so that each level is 1/4 as likely as the one before - * - * Note that level numbers run 1 <= level < MAX_LEVEL - */ -static int -random_level (void) -{ - int level = 0; - /* tricky bit -- each bit is '1' 75% of the time. - * This works because we only use the lower MAX_LEVEL - * bits, and MAX_LEVEL < 16 */ - long int bits = lfsr_random(); - bits |= bits >> 16; - - while (++level < MAX_LEVEL) - { - if (bits & 1) - break; - bits >>= 1; - } - return level; -} - -static void * -alloc_node_for_level (cairo_skip_list_t *list, unsigned level) -{ - int freelist_level = FREELIST_FOR_LEVEL (level); - if (list->freelists[freelist_level]) { - skip_elt_t *elt = list->freelists[freelist_level]; - list->freelists[freelist_level] = elt->prev; - return ELT_DATA(elt); - } - return malloc (list->elt_size - + (FREELIST_MAX_LEVEL_FOR (level) - 1) * sizeof (skip_elt_t *)); -} - -static void -free_elt (cairo_skip_list_t *list, skip_elt_t *elt) -{ - int level = elt->prev_index + 1; - int freelist_level = FREELIST_FOR_LEVEL (level); - elt->prev = list->freelists[freelist_level]; - list->freelists[freelist_level] = elt; -} - -/* - * Insert 'data' into the list - */ -void * -_cairo_skip_list_insert (cairo_skip_list_t *list, void *data, int unique) -{ - skip_elt_t **update[MAX_LEVEL]; - skip_elt_t *prev[MAX_LEVEL]; - char *data_and_elt; - skip_elt_t *elt, **next; - int i, level, prev_index; - - /* - * Find links along each chain - */ - next = list->chains; - for (i = list->max_level; --i >= 0; ) - { - for (; (elt = next[i]); next = elt->next) - { - int cmp = list->compare (list, ELT_DATA(elt), data); - if (unique && 0 == cmp) - return ELT_DATA(elt); - if (cmp > 0) - break; - } - update[i] = next; - if (next != list->chains) - prev[i] = NEXT_TO_ELT (next); - else - prev[i] = NULL; - } - level = random_level (); - prev_index = level - 1; - - /* - * Create new list element - */ - if (level > list->max_level) - { - level = list->max_level + 1; - prev_index = level - 1; - prev[prev_index] = NULL; - update[list->max_level] = list->chains; - list->max_level = level; - } - - data_and_elt = alloc_node_for_level (list, level); - if (data_and_elt == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - memcpy (data_and_elt, data, list->data_size); - elt = (skip_elt_t *) (data_and_elt + list->data_size); - - elt->prev_index = prev_index; - elt->prev = prev[prev_index]; - - /* - * Insert into all chains - */ - for (i = 0; i < level; i++) - { - elt->next[i] = update[i][i]; - if (elt->next[i] && elt->next[i]->prev_index == i) - elt->next[i]->prev = elt; - update[i][i] = elt; - } - - return data_and_elt; -} - -void * -_cairo_skip_list_find (cairo_skip_list_t *list, void *data) -{ - int i; - skip_elt_t **next = list->chains; - skip_elt_t *elt; - - /* - * Walk chain pointers one level at a time - */ - for (i = list->max_level; --i >= 0;) - while (next[i] && list->compare (list, data, ELT_DATA(next[i])) > 0) - { - next = next[i]->next; - } - /* - * Here we are - */ - elt = next[0]; - if (elt && list->compare (list, data, ELT_DATA (elt)) == 0) - return ELT_DATA (elt); - - return NULL; -} - -void -_cairo_skip_list_delete (cairo_skip_list_t *list, void *data) -{ - skip_elt_t **update[MAX_LEVEL], *prev[MAX_LEVEL]; - skip_elt_t *elt, **next; - int i; - - /* - * Find links along each chain - */ - next = list->chains; - for (i = list->max_level; --i >= 0; ) - { - for (; (elt = next[i]); next = elt->next) - { - if (list->compare (list, ELT_DATA (elt), data) >= 0) - break; - } - update[i] = &next[i]; - if (next == list->chains) - prev[i] = NULL; - else - prev[i] = NEXT_TO_ELT (next); - } - elt = next[0]; - assert (list->compare (list, ELT_DATA (elt), data) == 0); - for (i = 0; i < list->max_level && *update[i] == elt; i++) { - *update[i] = elt->next[i]; - if (elt->next[i] && elt->next[i]->prev_index == i) - elt->next[i]->prev = prev[i]; - } - while (list->max_level > 0 && list->chains[list->max_level - 1] == NULL) - list->max_level--; - free_elt (list, elt); -} - -void -_cairo_skip_list_delete_given (cairo_skip_list_t *list, skip_elt_t *given) -{ - skip_elt_t **update[MAX_LEVEL], *prev[MAX_LEVEL]; - skip_elt_t *elt, **next; - int i; - - /* - * Find links along each chain - */ - if (given->prev) - next = given->prev->next; - else - next = list->chains; - for (i = given->prev_index + 1; --i >= 0; ) - { - for (; (elt = next[i]); next = elt->next) - { - if (elt == given) - break; - } - update[i] = &next[i]; - if (next == list->chains) - prev[i] = NULL; - else - prev[i] = NEXT_TO_ELT (next); - } - elt = next[0]; - assert (elt == given); - for (i = 0; i < (given->prev_index + 1) && *update[i] == elt; i++) { - *update[i] = elt->next[i]; - if (elt->next[i] && elt->next[i]->prev_index == i) - elt->next[i]->prev = prev[i]; - } - while (list->max_level > 0 && list->chains[list->max_level - 1] == NULL) - list->max_level--; - free_elt (list, elt); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-skiplist-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-skiplist-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-skiplist-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-skiplist-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * Copyright © 2006 Keith Packard - * Copyright © 2006 Carl Worth - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifndef SKIPLIST_H -#define SKIPLIST_H - -#include "cairoint.h" - -/* - * Skip lists are described in detail here: - * - * http://citeseer.ist.psu.edu/pugh90skip.html - */ - -/* Note that random_level() called from alloc_node_for_level() depends on - * this being not more than 16. - */ -#define MAX_LEVEL 15 - -/* Returns the index of the free-list to use for a node at level 'level' */ -#define FREELIST_FOR_LEVEL(level) (((level) - 1) / 2) - -/* Returns the maximum level that uses the same free-list as 'level' does */ -#define FREELIST_MAX_LEVEL_FOR(level) (((level) + 1) & ~1) - -#define MAX_FREELIST_LEVEL (FREELIST_FOR_LEVEL (MAX_LEVEL - 1) + 1) - -/* - * Skip list element. In order to use the skip list, the caller must - * generate a structure for list elements that has as its final member - * a skip_elt_t, (which will be allocated with variable size). - * - * The caller must also pass the size of the structure to - * _cairo_skip_list_init. - */ -typedef struct _skip_elt { - int prev_index; - struct _skip_elt *prev; - struct _skip_elt *next[1]; -} skip_elt_t; - -#define SKIP_LIST_ELT_TO_DATA(type, elt) ((type *) ((char *) (elt) - (sizeof (type) - sizeof (skip_elt_t)))) - -typedef int -(*cairo_skip_list_compare_t) (void *list, void *a, void *b); - -typedef struct _skip_list { - cairo_skip_list_compare_t compare; - size_t elt_size; - size_t data_size; - skip_elt_t *chains[MAX_LEVEL]; - skip_elt_t *freelists[MAX_FREELIST_LEVEL]; - int max_level; -} cairo_skip_list_t; - -/* Initialize a new skip list. The compare function accepts a pointer - * to the list as well as pointers to two elements. The function must - * return a value greater than zero, zero, or less then 0 if the first - * element is considered respectively greater than, equal to, or less - * than the second element. The size of each object, (as computed by - * sizeof) is passed for elt_size. Note that the structure used for - * list elements must have as its final member a skip_elt_t - */ -cairo_private void -_cairo_skip_list_init (cairo_skip_list_t *list, - cairo_skip_list_compare_t compare, - size_t elt_size); - - -/* Deallocate resources associated with a skip list and all elements - * in it. (XXX: currently this simply deletes all elements.) - */ -cairo_private void -_cairo_skip_list_fini (cairo_skip_list_t *list); - -/* Insert a new element into the list at the correct sort order as - * determined by compare. If unique is true, then duplicate elements - * are ignored and the already inserted element is returned. - * Otherwise data will be copied (elt_size bytes from via - * memcpy) and the new element is returned. */ -cairo_private void * -_cairo_skip_list_insert (cairo_skip_list_t *list, void *data, int unique); - -/* Find an element which compare considers equal to */ -cairo_private void * -_cairo_skip_list_find (cairo_skip_list_t *list, void *data); - -/* Delete an element which compare considers equal to */ -cairo_private void -_cairo_skip_list_delete (cairo_skip_list_t *list, void *data); - -/* Delete the given element from the list. */ -cairo_private void -_cairo_skip_list_delete_given (cairo_skip_list_t *list, skip_elt_t *given); - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-slope.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-slope.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-slope.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-slope.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -void -_cairo_slope_init (cairo_slope_t *slope, cairo_point_t *a, cairo_point_t *b) -{ - slope->dx = b->x - a->x; - slope->dy = b->y - a->y; -} - -/* Compare two slopes. Slope angles begin at 0 in the direction of the - positive X axis and increase in the direction of the positive Y - axis. - - This function always compares the slope vectors based on the - smaller angular difference between them, (that is based on an - angular difference that is strictly less than pi). To break ties - when comparing slope vectors with an angular difference of exactly - pi, the vector with a positive dx (or positive dy if dx's are zero) - is considered to be more positive than the other. - - Also, all slope vectors with both dx==0 and dy==0 are considered - equal and more positive than any non-zero vector. - - < 0 => a less positive than b - == 0 => a equal to b - > 0 => a more positive than b -*/ -int -_cairo_slope_compare (cairo_slope_t *a, cairo_slope_t *b) -{ - cairo_fixed_48_16_t diff; - - diff = ((cairo_fixed_48_16_t) a->dy * (cairo_fixed_48_16_t) b->dx - - (cairo_fixed_48_16_t) b->dy * (cairo_fixed_48_16_t) a->dx); - - if (diff > 0) - return 1; - if (diff < 0) - return -1; - - /* special-case zero vectors. the intended logic here is: - * zero vectors all compare equal, and more positive than any - * non-zero vector. - */ - if (a->dx == 0 && a->dy == 0 && b->dx == 0 && b->dy ==0) - return 0; - if (a->dx == 0 && a->dy == 0) - return 1; - if (b->dx == 0 && b->dy ==0) - return -1; - - /* Finally, we're looking at two vectors that are either equal or - * that differ by exactly pi. We can identify the "differ by pi" - * case by looking for a change in sign in either dx or dy between - * a and b. - * - * And in these cases, we eliminate the ambiguity by reducing the angle - * of b by an infinitesimally small amount, (that is, 'a' will - * always be considered less than 'b'). - */ - if (((a->dx > 0) != (b->dx > 0)) || - ((a->dy > 0) != (b->dy > 0))) - { - if (a->dx > 0 || (a->dx == 0 && a->dy > 0)) - return +1; - else - return -1; - } - - /* Finally, for identical slopes, we obviously return 0. */ - return 0; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-spline.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-spline.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-spline.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-spline.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,287 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -static cairo_status_t -_cairo_spline_grow (cairo_spline_t *spline); - -static cairo_status_t -_cairo_spline_add_point (cairo_spline_t *spline, const cairo_point_t *point); - -static void -_lerp_half (const cairo_point_t *a, const cairo_point_t *b, cairo_point_t *result); - -static void -_de_casteljau (cairo_spline_knots_t *s1, cairo_spline_knots_t *s2); - -static double -_cairo_spline_error_squared (const cairo_spline_knots_t *spline); - -static cairo_status_t -_cairo_spline_decompose_into (cairo_spline_knots_t *spline, double tolerance_squared, cairo_spline_t *result); - -cairo_int_status_t -_cairo_spline_init (cairo_spline_t *spline, - const cairo_point_t *a, const cairo_point_t *b, - const cairo_point_t *c, const cairo_point_t *d) -{ - spline->knots.a = *a; - spline->knots.b = *b; - spline->knots.c = *c; - spline->knots.d = *d; - - if (a->x != b->x || a->y != b->y) - _cairo_slope_init (&spline->initial_slope, &spline->knots.a, &spline->knots.b); - else if (a->x != c->x || a->y != c->y) - _cairo_slope_init (&spline->initial_slope, &spline->knots.a, &spline->knots.c); - else if (a->x != d->x || a->y != d->y) - _cairo_slope_init (&spline->initial_slope, &spline->knots.a, &spline->knots.d); - else - return CAIRO_INT_STATUS_DEGENERATE; - - if (c->x != d->x || c->y != d->y) - _cairo_slope_init (&spline->final_slope, &spline->knots.c, &spline->knots.d); - else if (b->x != d->x || b->y != d->y) - _cairo_slope_init (&spline->final_slope, &spline->knots.b, &spline->knots.d); - else - _cairo_slope_init (&spline->final_slope, &spline->knots.a, &spline->knots.d); - - spline->points = spline->points_embedded; - spline->points_size = ARRAY_LENGTH (spline->points_embedded); - spline->num_points = 0; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_spline_fini (cairo_spline_t *spline) -{ - if (spline->points != spline->points_embedded) - free (spline->points); - - spline->points = spline->points_embedded; - spline->points_size = ARRAY_LENGTH (spline->points_embedded); - spline->num_points = 0; -} - -/* make room for at least one more point */ -static cairo_status_t -_cairo_spline_grow (cairo_spline_t *spline) -{ - cairo_point_t *new_points; - int old_size = spline->points_size; - int new_size = 2 * MAX (old_size, 16); - - assert (spline->num_points <= spline->points_size); - - if (spline->points == spline->points_embedded) { - new_points = _cairo_malloc_ab (new_size, sizeof (cairo_point_t)); - if (new_points) - memcpy (new_points, spline->points, old_size * sizeof (cairo_point_t)); - } else { - new_points = _cairo_realloc_ab (spline->points, - new_size, sizeof (cairo_point_t)); - } - - if (new_points == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - spline->points = new_points; - spline->points_size = new_size; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_spline_add_point (cairo_spline_t *spline, const cairo_point_t *point) -{ - cairo_status_t status; - cairo_point_t *prev; - - if (spline->num_points) { - prev = &spline->points[spline->num_points - 1]; - if (prev->x == point->x && prev->y == point->y) - return CAIRO_STATUS_SUCCESS; - } - - if (spline->num_points >= spline->points_size) { - status = _cairo_spline_grow (spline); - if (status) - return status; - } - - spline->points[spline->num_points] = *point; - spline->num_points++; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_lerp_half (const cairo_point_t *a, const cairo_point_t *b, cairo_point_t *result) -{ - result->x = a->x + ((b->x - a->x) >> 1); - result->y = a->y + ((b->y - a->y) >> 1); -} - -static void -_de_casteljau (cairo_spline_knots_t *s1, cairo_spline_knots_t *s2) -{ - cairo_point_t ab, bc, cd; - cairo_point_t abbc, bccd; - cairo_point_t final; - - _lerp_half (&s1->a, &s1->b, &ab); - _lerp_half (&s1->b, &s1->c, &bc); - _lerp_half (&s1->c, &s1->d, &cd); - _lerp_half (&ab, &bc, &abbc); - _lerp_half (&bc, &cd, &bccd); - _lerp_half (&abbc, &bccd, &final); - - s2->a = final; - s2->b = bccd; - s2->c = cd; - s2->d = s1->d; - - s1->b = ab; - s1->c = abbc; - s1->d = final; -} - -/* Return an upper bound on the error (squared) that could result from - * approximating a spline as a line segment connecting the two endpoints. */ -static double -_cairo_spline_error_squared (const cairo_spline_knots_t *knots) -{ - double bdx, bdy, berr; - double cdx, cdy, cerr; - - /* Intersection point (px): - * px = p1 + u(p2 - p1) - * (p - px) ∙ (p2 - p1) = 0 - * Thus: - * u = ((p - p1) ∙ (p2 - p1)) / ∥p2 - p1∥²; - */ - bdx = _cairo_fixed_to_double (knots->b.x - knots->a.x); - bdy = _cairo_fixed_to_double (knots->b.y - knots->a.y); - - cdx = _cairo_fixed_to_double (knots->c.x - knots->a.x); - cdy = _cairo_fixed_to_double (knots->c.y - knots->a.y); - - if (knots->a.x != knots->d.x || knots->a.y != knots->d.y) { - double dx, dy, u, v; - - dx = _cairo_fixed_to_double (knots->d.x - knots->a.x); - dy = _cairo_fixed_to_double (knots->d.y - knots->a.y); - v = dx * dx + dy * dy; - - u = bdx * dx + bdy * dy; - if (u <= 0) { - /* bdx -= 0; - * bdy -= 0; - */ - } else if (u >= v) { - bdx -= dx; - bdy -= dy; - } else { - bdx -= u/v * dx; - bdy -= u/v * dy; - } - - u = cdx * dx + cdy * dy; - if (u <= 0) { - /* cdx -= 0; - * cdy -= 0; - */ - } else if (u >= v) { - cdx -= dx; - cdy -= dy; - } else { - cdx -= u/v * dx; - cdy -= u/v * dy; - } - } - - berr = bdx * bdx + bdy * bdy; - cerr = cdx * cdx + cdy * cdy; - if (berr > cerr) - return berr; - else - return cerr; -} - -static cairo_status_t -_cairo_spline_decompose_into (cairo_spline_knots_t *s1, double tolerance_squared, cairo_spline_t *result) -{ - cairo_spline_knots_t s2; - cairo_status_t status; - - if (_cairo_spline_error_squared (s1) < tolerance_squared) - return _cairo_spline_add_point (result, &s1->a); - - _de_casteljau (s1, &s2); - - status = _cairo_spline_decompose_into (s1, tolerance_squared, result); - if (status) - return status; - - status = _cairo_spline_decompose_into (&s2, tolerance_squared, result); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_spline_decompose (cairo_spline_t *spline, double tolerance) -{ - cairo_status_t status; - cairo_spline_knots_t s1; - - /* reset the spline, but keep the buffer */ - spline->num_points = 0; - - s1 = spline->knots; - status = _cairo_spline_decompose_into (&s1, tolerance * tolerance, spline); - if (status) - return status; - - status = _cairo_spline_add_point (spline, &spline->knots.d); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-stroke-style.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-stroke-style.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-stroke-style.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-stroke-style.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -#include "cairoint.h" - -void -_cairo_stroke_style_init (cairo_stroke_style_t *style) -{ - style->line_width = CAIRO_GSTATE_LINE_WIDTH_DEFAULT; - style->line_cap = CAIRO_GSTATE_LINE_CAP_DEFAULT; - style->line_join = CAIRO_GSTATE_LINE_JOIN_DEFAULT; - style->miter_limit = CAIRO_GSTATE_MITER_LIMIT_DEFAULT; - - style->dash = NULL; - style->num_dashes = 0; - style->dash_offset = 0.0; -} - -cairo_status_t -_cairo_stroke_style_init_copy (cairo_stroke_style_t *style, - cairo_stroke_style_t *other) -{ - style->line_width = other->line_width; - style->line_cap = other->line_cap; - style->line_join = other->line_join; - style->miter_limit = other->miter_limit; - - style->num_dashes = other->num_dashes; - - if (other->dash == NULL) { - style->dash = NULL; - } else { - style->dash = _cairo_malloc_ab (style->num_dashes, sizeof (double)); - if (style->dash == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - memcpy (style->dash, other->dash, - style->num_dashes * sizeof (double)); - } - - style->dash_offset = other->dash_offset; - - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_stroke_style_fini (cairo_stroke_style_t *style) -{ - if (style->dash) { - free (style->dash); - style->dash = NULL; - } - style->num_dashes = 0; -} - -/* - * For a stroke in the given style, compute the maximum distance - * from the path that vertices could be generated. In the case - * of rotation in the ctm, the distance will not be exact. - */ -void -_cairo_stroke_style_max_distance_from_path (const cairo_stroke_style_t *style, - const cairo_matrix_t *ctm, - double *dx, double *dy) -{ - double style_expansion = MAX(style->line_cap == CAIRO_LINE_CAP_SQUARE ? M_SQRT1_2 : 0.5, - style->line_join == CAIRO_LINE_JOIN_MITER ? style->miter_limit : 0.5); - - *dx = style->line_width * style_expansion * (fabs(ctm->xx) + fabs(ctm->xy)); - *dy = style->line_width * style_expansion * (fabs(ctm->yy) + fabs(ctm->yx)); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2524 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-surface-fallback-private.h" -#include "cairo-clip-private.h" - -#define DEFINE_NIL_SURFACE(status, name) \ -const cairo_surface_t name = { \ - &cairo_image_surface_backend, /* backend */ \ - CAIRO_SURFACE_TYPE_IMAGE, \ - CAIRO_CONTENT_COLOR, \ - CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ \ - status, /* status */ \ - FALSE, /* finished */ \ - { 0, /* size */ \ - 0, /* num_elements */ \ - 0, /* element_size */ \ - NULL, /* elements */ \ - }, /* user_data */ \ - { 1.0, 0.0, \ - 0.0, 1.0, \ - 0.0, 0.0 \ - }, /* device_transform */ \ - { 1.0, 0.0, \ - 0.0, 1.0, \ - 0.0, 0.0 \ - }, /* device_transform_inverse */ \ - 0.0, /* x_resolution */ \ - 0.0, /* y_resolution */ \ - 0.0, /* x_fallback_resolution */ \ - 0.0, /* y_fallback_resolution */ \ - NULL, /* clip */ \ - 0, /* next_clip_serial */ \ - 0, /* current_clip_serial */ \ - FALSE, /* is_snapshot */ \ - FALSE, /* has_font_options */ \ - { CAIRO_ANTIALIAS_DEFAULT, \ - CAIRO_SUBPIXEL_ORDER_DEFAULT, \ - CAIRO_HINT_STYLE_DEFAULT, \ - CAIRO_HINT_METRICS_DEFAULT \ - } /* font_options */ \ -} - -static DEFINE_NIL_SURFACE(CAIRO_STATUS_NO_MEMORY, _cairo_surface_nil); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_INVALID_CONTENT, _cairo_surface_nil_invalid_content); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_INVALID_FORMAT, _cairo_surface_nil_invalid_format); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_INVALID_VISUAL, _cairo_surface_nil_invalid_visual); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_FILE_NOT_FOUND, _cairo_surface_nil_file_not_found); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_TEMP_FILE_ERROR, _cairo_surface_nil_temp_file_error); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_READ_ERROR, _cairo_surface_nil_read_error); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_WRITE_ERROR, _cairo_surface_nil_write_error); -static DEFINE_NIL_SURFACE(CAIRO_STATUS_INVALID_STRIDE, _cairo_surface_nil_invalid_stride); - -static cairo_status_t -_cairo_surface_copy_pattern_for_destination (const cairo_pattern_t *pattern, - cairo_surface_t *destination, - cairo_pattern_t **pattern_out); - -/** - * _cairo_surface_set_error: - * @surface: a surface - * @status: a status value indicating an error, (eg. not - * CAIRO_STATUS_SUCCESS) - * - * Atomically sets surface->status to @status and calls _cairo_error; - * - * All assignments of an error status to surface->status should happen - * through _cairo_surface_set_error(). Note that due to the nature of - * the atomic operation, it is not safe to call this function on the - * nil objects. - * - * The purpose of this function is to allow the user to set a - * breakpoint in _cairo_error() to generate a stack trace for when the - * user causes cairo to detect an error. - * - * Return value: the error status. - **/ -cairo_status_t -_cairo_surface_set_error (cairo_surface_t *surface, - cairo_status_t status) -{ - if (status == CAIRO_STATUS_SUCCESS || status >= CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - /* Don't overwrite an existing error. This preserves the first - * error, which is the most significant. */ - _cairo_status_set_error (&surface->status, status); - - return _cairo_error (status); -} - -/** - * cairo_surface_get_type: - * @surface: a #cairo_surface_t - * - * This function returns the type of the backend used to create - * a surface. See #cairo_surface_type_t for available types. - * - * Return value: The type of @surface. - * - * Since: 1.2 - **/ -cairo_surface_type_t -cairo_surface_get_type (cairo_surface_t *surface) -{ - /* We don't use surface->backend->type here so that some of the - * special "wrapper" surfaces such as cairo_paginated_surface_t - * can override surface->type with the type of the "child" - * surface. */ - return surface->type; -} -slim_hidden_def (cairo_surface_get_type); - -/** - * cairo_surface_get_content: - * @surface: a #cairo_surface_t - * - * This function returns the content type of @surface which indicates - * whether the surface contains color and/or alpha information. See - * #cairo_content_t. - * - * Return value: The content type of @surface. - * - * Since: 1.2 - **/ -cairo_content_t -cairo_surface_get_content (cairo_surface_t *surface) -{ - return surface->content; -} -slim_hidden_def(cairo_surface_get_content); - -/** - * cairo_surface_status: - * @surface: a #cairo_surface_t - * - * Checks whether an error has previously occurred for this - * surface. - * - * Return value: %CAIRO_STATUS_SUCCESS, %CAIRO_STATUS_NULL_POINTER, - * %CAIRO_STATUS_NO_MEMORY, %CAIRO_STATUS_READ_ERROR, - * %CAIRO_STATUS_INVALID_CONTENT, %CAIRO_STATUS_INVALID_FORMAT, or - * %CAIRO_STATUS_INVALID_VISUAL. - **/ -cairo_status_t -cairo_surface_status (cairo_surface_t *surface) -{ - return surface->status; -} -slim_hidden_def (cairo_surface_status); - -void -_cairo_surface_init (cairo_surface_t *surface, - const cairo_surface_backend_t *backend, - cairo_content_t content) -{ - CAIRO_MUTEX_INITIALIZE (); - - surface->backend = backend; - surface->content = content; - surface->type = backend->type; - - CAIRO_REFERENCE_COUNT_INIT (&surface->ref_count, 1); - surface->status = CAIRO_STATUS_SUCCESS; - surface->finished = FALSE; - - _cairo_user_data_array_init (&surface->user_data); - - cairo_matrix_init_identity (&surface->device_transform); - cairo_matrix_init_identity (&surface->device_transform_inverse); - - surface->x_resolution = CAIRO_SURFACE_RESOLUTION_DEFAULT; - surface->y_resolution = CAIRO_SURFACE_RESOLUTION_DEFAULT; - - surface->x_fallback_resolution = CAIRO_SURFACE_FALLBACK_RESOLUTION_DEFAULT; - surface->y_fallback_resolution = CAIRO_SURFACE_FALLBACK_RESOLUTION_DEFAULT; - - surface->clip = NULL; - surface->next_clip_serial = 0; - surface->current_clip_serial = 0; - - surface->is_snapshot = FALSE; - - surface->has_font_options = FALSE; -} - -cairo_surface_t * -_cairo_surface_create_similar_scratch (cairo_surface_t *other, - cairo_content_t content, - int width, - int height) -{ - cairo_surface_t *surface = NULL; - cairo_font_options_t options; - - cairo_format_t format = _cairo_format_from_content (content); - - if (other->status) - return _cairo_surface_create_in_error (other->status); - - if (other->backend->create_similar) { - surface = other->backend->create_similar (other, content, width, height); - /* It's not an error if the backend didn't create a valid - * surface---it may just not be supported. */ - if (surface && surface->status) { - cairo_surface_destroy (surface); - surface = NULL; - } - } - - if (surface == NULL) - surface = cairo_image_surface_create (format, width, height); - - /* If any error occurred, then return the nil surface we received. */ - if (surface->status) - return surface; - - cairo_surface_get_font_options (other, &options); - _cairo_surface_set_font_options (surface, &options); - - cairo_surface_set_fallback_resolution (surface, - other->x_fallback_resolution, - other->y_fallback_resolution); - - return surface; -} - -/** - * cairo_surface_create_similar: - * @other: an existing surface used to select the backend of the new surface - * @content: the content for the new surface - * @width: width of the new surface, (in device-space units) - * @height: height of the new surface (in device-space units) - * - * Create a new surface that is as compatible as possible with an - * existing surface. For example the new surface will have the same - * fallback resolution and font options as @other. Generally, the new - * surface will also use the same backend as @other, unless that is - * not possible for some reason. The type of the returned surface may - * be examined with cairo_surface_get_type(). - * - * Initially the surface contents are all 0 (transparent if contents - * have transparency, black otherwise.) - * - * Return value: a pointer to the newly allocated surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if @other is already in an error state - * or any other error occurs. - **/ -cairo_surface_t * -cairo_surface_create_similar (cairo_surface_t *other, - cairo_content_t content, - int width, - int height) -{ - if (other->status) - return _cairo_surface_create_in_error (other->status); - - if (! CAIRO_CONTENT_VALID (content)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_CONTENT)); - - return _cairo_surface_create_similar_solid (other, content, - width, height, - CAIRO_COLOR_TRANSPARENT, - NULL); -} -slim_hidden_def (cairo_surface_create_similar); - -cairo_surface_t * -_cairo_surface_create_similar_solid (cairo_surface_t *other, - cairo_content_t content, - int width, - int height, - const cairo_color_t *color, - cairo_pattern_t *pattern) -{ - cairo_status_t status; - cairo_surface_t *surface; - cairo_pattern_t *source; - - surface = _cairo_surface_create_similar_scratch (other, content, - width, height); - if (surface->status) - return surface; - - if (pattern == NULL) { - source = _cairo_pattern_create_solid (color, content); - if (source->status) { - cairo_surface_destroy (surface); - return _cairo_surface_create_in_error (source->status); - } - } else - source = pattern; - - status = _cairo_surface_paint (surface, - color == CAIRO_COLOR_TRANSPARENT ? - CAIRO_OPERATOR_CLEAR : - CAIRO_OPERATOR_SOURCE, source); - - if (source != pattern) - cairo_pattern_destroy (source); - - if (status) { - cairo_surface_destroy (surface); - return _cairo_surface_create_in_error (status); - } - - return surface; -} - -cairo_clip_mode_t -_cairo_surface_get_clip_mode (cairo_surface_t *surface) -{ - if (surface->backend->intersect_clip_path != NULL) - return CAIRO_CLIP_MODE_PATH; - else if (surface->backend->set_clip_region != NULL) - return CAIRO_CLIP_MODE_REGION; - else - return CAIRO_CLIP_MODE_MASK; -} - -/** - * cairo_surface_reference: - * @surface: a #cairo_surface_t - * - * Increases the reference count on @surface by one. This prevents - * @surface from being destroyed until a matching call to - * cairo_surface_destroy() is made. - * - * The number of references to a #cairo_surface_t can be get using - * cairo_surface_get_reference_count(). - * - * Return value: the referenced #cairo_surface_t. - **/ -cairo_surface_t * -cairo_surface_reference (cairo_surface_t *surface) -{ - if (surface == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) - return surface; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&surface->ref_count)); - - _cairo_reference_count_inc (&surface->ref_count); - - return surface; -} -slim_hidden_def (cairo_surface_reference); - -/** - * cairo_surface_destroy: - * @surface: a #cairo_surface_t - * - * Decreases the reference count on @surface by one. If the result is - * zero, then @surface and all associated resources are freed. See - * cairo_surface_reference(). - **/ -void -cairo_surface_destroy (cairo_surface_t *surface) -{ - if (surface == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) - return; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&surface->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&surface->ref_count)) - return; - - if (! surface->finished) - cairo_surface_finish (surface); - - _cairo_user_data_array_fini (&surface->user_data); - - free (surface); -} -slim_hidden_def(cairo_surface_destroy); - -/** - * cairo_surface_reset: - * @surface: a #cairo_surface_t - * - * Resets the surface back to defaults such that it may be reused in lieu - * of creating a new surface. - **/ -cairo_status_t -_cairo_surface_reset (cairo_surface_t *surface) -{ - if (surface == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) - return CAIRO_STATUS_SUCCESS; - - assert (CAIRO_REFERENCE_COUNT_GET_VALUE (&surface->ref_count) == 1); - - _cairo_user_data_array_fini (&surface->user_data); - - if (surface->backend->reset != NULL) { - cairo_status_t status = surface->backend->reset (surface); - if (status) - return _cairo_surface_set_error (surface, status); - } - - _cairo_surface_init (surface, surface->backend, surface->content); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_surface_get_reference_count: - * @surface: a #cairo_surface_t - * - * Returns the current reference count of @surface. - * - * Return value: the current reference count of @surface. If the - * object is a nil object, 0 will be returned. - * - * Since: 1.4 - **/ -unsigned int -cairo_surface_get_reference_count (cairo_surface_t *surface) -{ - if (surface == NULL || - CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) - return 0; - - return CAIRO_REFERENCE_COUNT_GET_VALUE (&surface->ref_count); -} - -/** - * cairo_surface_finish: - * @surface: the #cairo_surface_t to finish - * - * This function finishes the surface and drops all references to - * external resources. For example, for the Xlib backend it means - * that cairo will no longer access the drawable, which can be freed. - * After calling cairo_surface_finish() the only valid operations on a - * surface are getting and setting user data and referencing and - * destroying it. Further drawing to the surface will not affect the - * surface but will instead trigger a CAIRO_STATUS_SURFACE_FINISHED - * error. - * - * When the last call to cairo_surface_destroy() decreases the - * reference count to zero, cairo will call cairo_surface_finish() if - * it hasn't been called already, before freeing the resources - * associated with the surface. - **/ -void -cairo_surface_finish (cairo_surface_t *surface) -{ - cairo_status_t status; - - if (surface == NULL) - return; - - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - if (surface->backend->finish == NULL) { - surface->finished = TRUE; - return; - } - - if (!surface->status && surface->backend->flush) { - status = surface->backend->flush (surface); - if (status) { - status = _cairo_surface_set_error (surface, status); - return; - } - } - - status = surface->backend->finish (surface); - if (status) - status = _cairo_surface_set_error (surface, status); - - surface->finished = TRUE; -} -slim_hidden_def (cairo_surface_finish); - -/** - * cairo_surface_get_user_data: - * @surface: a #cairo_surface_t - * @key: the address of the #cairo_user_data_key_t the user data was - * attached to - * - * Return user data previously attached to @surface using the specified - * key. If no user data has been attached with the given key this - * function returns %NULL. - * - * Return value: the user data previously attached or %NULL. - **/ -void * -cairo_surface_get_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key) -{ - return _cairo_user_data_array_get_data (&surface->user_data, - key); -} - -/** - * cairo_surface_set_user_data: - * @surface: a #cairo_surface_t - * @key: the address of a #cairo_user_data_key_t to attach the user data to - * @user_data: the user data to attach to the surface - * @destroy: a #cairo_destroy_func_t which will be called when the - * surface is destroyed or when new user data is attached using the - * same key. - * - * Attach user data to @surface. To remove user data from a surface, - * call this function with the key that was used to set it and %NULL - * for @data. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY if a - * slot could not be allocated for the user data. - **/ -cairo_status_t -cairo_surface_set_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy) -{ - if (CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return _cairo_user_data_array_set_data (&surface->user_data, - key, user_data, destroy); -} - -/** - * _cairo_surface_set_font_options: - * @surface: a #cairo_surface_t - * @options: a #cairo_font_options_t object that contains the - * options to use for this surface instead of backend's default - * font options. - * - * Sets the default font rendering options for the surface. - * This is useful to correctly propagate default font options when - * falling back to an image surface in a backend implementation. - * This affects the options returned in cairo_surface_get_font_options(). - * - * If @options is %NULL the surface options are reset to those of - * the backend default. - **/ -void -_cairo_surface_set_font_options (cairo_surface_t *surface, - cairo_font_options_t *options) -{ - cairo_status_t status; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, - CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - if (options) { - surface->has_font_options = TRUE; - _cairo_font_options_init_copy (&surface->font_options, options); - } else { - surface->has_font_options = FALSE; - } -} - -/** - * cairo_surface_get_font_options: - * @surface: a #cairo_surface_t - * @options: a #cairo_font_options_t object into which to store - * the retrieved options. All existing values are overwritten - * - * Retrieves the default font rendering options for the surface. - * This allows display surfaces to report the correct subpixel order - * for rendering on them, print surfaces to disable hinting of - * metrics and so forth. The result can then be used with - * cairo_scaled_font_create(). - **/ -void -cairo_surface_get_font_options (cairo_surface_t *surface, - cairo_font_options_t *options) -{ - if (cairo_font_options_status (options)) - return; - - if (!surface->has_font_options) { - surface->has_font_options = TRUE; - - _cairo_font_options_init_default (&surface->font_options); - - if (!surface->finished && surface->backend->get_font_options) { - surface->backend->get_font_options (surface, &surface->font_options); - } - } - - _cairo_font_options_init_copy (options, &surface->font_options); -} -slim_hidden_def (cairo_surface_get_font_options); - -/** - * cairo_surface_flush: - * @surface: a #cairo_surface_t - * - * Do any pending drawing for the surface and also restore any - * temporary modification's cairo has made to the surface's - * state. This function must be called before switching from - * drawing on the surface with cairo to drawing on it directly - * with native APIs. If the surface doesn't support direct access, - * then this function does nothing. - **/ -void -cairo_surface_flush (cairo_surface_t *surface) -{ - cairo_status_t status; - - if (surface->status) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - if (surface->backend->flush) { - status = surface->backend->flush (surface); - if (status) - status = _cairo_surface_set_error (surface, status); - } -} - -/** - * cairo_surface_mark_dirty: - * @surface: a #cairo_surface_t - * - * Tells cairo that drawing has been done to surface using means other - * than cairo, and that cairo should reread any cached areas. Note - * that you must call cairo_surface_flush() before doing such drawing. - */ -void -cairo_surface_mark_dirty (cairo_surface_t *surface) -{ - assert (! surface->is_snapshot); - - cairo_surface_mark_dirty_rectangle (surface, 0, 0, -1, -1); -} - -/** - * cairo_surface_mark_dirty_rectangle: - * @surface: a #cairo_surface_t - * @x: X coordinate of dirty rectangle - * @y: Y coordinate of dirty rectangle - * @width: width of dirty rectangle - * @height: height of dirty rectangle - * - * Like cairo_surface_mark_dirty(), but drawing has been done only to - * the specified rectangle, so that cairo can retain cached contents - * for other parts of the surface. - * - * Any cached clip set on the surface will be reset by this function, - * to make sure that future cairo calls have the clip set that they - * expect. - */ -void -cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, - int x, - int y, - int width, - int height) -{ - cairo_status_t status; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - /* Always reset the clip here, to avoid having external calls to - * clip manipulation functions of the underlying device clip result - * in a desync between the cairo clip and the backend clip, due to - * the clip caching. - */ - surface->current_clip_serial = -1; - - if (surface->backend->mark_dirty_rectangle) { - /* XXX: FRAGILE: We're ignoring the scaling component of - * device_transform here. I don't know what the right thing to - * do would actually be if there were some scaling here, but - * we avoid this since device_transfom scaling is not exported - * publicly and mark_dirty is not used internally. */ - status = surface->backend->mark_dirty_rectangle (surface, - x + surface->device_transform.x0, - y + surface->device_transform.y0, - width, height); - - if (status) - status = _cairo_surface_set_error (surface, status); - } -} -slim_hidden_def (cairo_surface_mark_dirty_rectangle); - -/** - * _cairo_surface_set_device_scale: - * @surface: a #cairo_surface_t - * @sx: a scale factor in the X direction - * @sy: a scale factor in the Y direction - * - * Private function for setting an extra scale factor to affect all - * drawing to a surface. This is used, for example, when replaying a - * meta surface to an image fallback intended for an eventual - * vector-oriented backend. Since the meta surface will record - * coordinates in one backend space, but the image fallback uses a - * different backend space, (differing by the fallback resolution - * scale factors), we need a scale factor correction. - * - * Caution: There is no guarantee that a surface with both a - * device_scale and a device_offset will be treated in consistent - * fashion. So, for now, just don't do that. (And we'll need to - * examine this issue in more detail if we were to ever want to export - * support for device scaling.) - **/ -void -_cairo_surface_set_device_scale (cairo_surface_t *surface, - double sx, - double sy) -{ - cairo_status_t status; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - surface->device_transform.xx = sx; - surface->device_transform.yy = sy; - - surface->device_transform_inverse.xx = 1.0 / sx; - surface->device_transform_inverse.yy = 1.0 / sy; -} - -/** - * cairo_surface_set_device_offset: - * @surface: a #cairo_surface_t - * @x_offset: the offset in the X direction, in device units - * @y_offset: the offset in the Y direction, in device units - * - * Sets an offset that is added to the device coordinates determined - * by the CTM when drawing to @surface. One use case for this function - * is when we want to create a #cairo_surface_t that redirects drawing - * for a portion of an onscreen surface to an offscreen surface in a - * way that is completely invisible to the user of the cairo - * API. Setting a transformation via cairo_translate() isn't - * sufficient to do this, since functions like - * cairo_device_to_user() will expose the hidden offset. - * - * Note that the offset affects drawing to the surface as well as - * using the surface in a source pattern. - **/ -void -cairo_surface_set_device_offset (cairo_surface_t *surface, - double x_offset, - double y_offset) -{ - cairo_status_t status; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - surface->device_transform.x0 = x_offset; - surface->device_transform.y0 = y_offset; - - surface->device_transform_inverse.x0 = - x_offset; - surface->device_transform_inverse.y0 = - y_offset; -} -slim_hidden_def (cairo_surface_set_device_offset); - -/** - * cairo_surface_get_device_offset: - * @surface: a #cairo_surface_t - * @x_offset: the offset in the X direction, in device units - * @y_offset: the offset in the Y direction, in device units - * - * This function returns the previous device offset set by - * cairo_surface_set_device_offset(). - * - * Since: 1.2 - **/ -void -cairo_surface_get_device_offset (cairo_surface_t *surface, - double *x_offset, - double *y_offset) -{ - if (x_offset) - *x_offset = surface->device_transform.x0; - if (y_offset) - *y_offset = surface->device_transform.y0; -} -slim_hidden_def (cairo_surface_get_device_offset); - -/** - * cairo_surface_set_fallback_resolution: - * @surface: a #cairo_surface_t - * @x_pixels_per_inch: horizontal setting for pixels per inch - * @y_pixels_per_inch: vertical setting for pixels per inch - * - * Set the horizontal and vertical resolution for image fallbacks. - * - * When certain operations aren't supported natively by a backend, - * cairo will fallback by rendering operations to an image and then - * overlaying that image onto the output. For backends that are - * natively vector-oriented, this function can be used to set the - * resolution used for these image fallbacks, (larger values will - * result in more detailed images, but also larger file sizes). - * - * Some examples of natively vector-oriented backends are the ps, pdf, - * and svg backends. - * - * For backends that are natively raster-oriented, image fallbacks are - * still possible, but they are always performed at the native - * device resolution. So this function has no effect on those - * backends. - * - * Note: The fallback resolution only takes effect at the time of - * completing a page (with cairo_show_page() or cairo_copy_page()) so - * there is currently no way to have more than one fallback resolution - * in effect on a single page. - * - * The default fallback resoultion is 300 pixels per inch in both - * dimensions. - * - * Since: 1.2 - **/ -void -cairo_surface_set_fallback_resolution (cairo_surface_t *surface, - double x_pixels_per_inch, - double y_pixels_per_inch) -{ - cairo_status_t status; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status = _cairo_surface_set_error (surface, CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - surface->x_fallback_resolution = x_pixels_per_inch; - surface->y_fallback_resolution = y_pixels_per_inch; -} -slim_hidden_def (cairo_surface_set_fallback_resolution); - -cairo_bool_t -_cairo_surface_has_device_transform (cairo_surface_t *surface) -{ - return ! _cairo_matrix_is_identity (&surface->device_transform); -} - -/** - * _cairo_surface_acquire_source_image: - * @surface: a #cairo_surface_t - * @image_out: location to store a pointer to an image surface that - * has identical contents to @surface. This surface could be @surface - * itself, a surface held internal to @surface, or it could be a new - * surface with a copy of the relevant portion of @surface. - * @image_extra: location to store image specific backend data - * - * Gets an image surface to use when drawing as a fallback when drawing with - * @surface as a source. _cairo_surface_release_source_image() must be called - * when finished. - * - * Return value: %CAIRO_STATUS_SUCCESS if an image was stored in @image_out. - * %CAIRO_INT_STATUS_UNSUPPORTED if an image cannot be retrieved for the specified - * surface. Or %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_status_t -_cairo_surface_acquire_source_image (cairo_surface_t *surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - assert (!surface->finished); - - if (surface->status) - return surface->status; - - if (surface->backend->acquire_source_image == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_surface_set_error (surface, - surface->backend->acquire_source_image (surface, - image_out, image_extra)); -} - -/** - * _cairo_surface_release_source_image: - * @surface: a #cairo_surface_t - * @image_extra: same as return from the matching _cairo_surface_acquire_source_image() - * - * Releases any resources obtained with _cairo_surface_acquire_source_image() - **/ -void -_cairo_surface_release_source_image (cairo_surface_t *surface, - cairo_image_surface_t *image, - void *image_extra) -{ - assert (!surface->finished); - - if (surface->backend->release_source_image) - surface->backend->release_source_image (surface, image, image_extra); -} - -/** - * _cairo_surface_acquire_dest_image: - * @surface: a #cairo_surface_t - * @interest_rect: area of @surface for which fallback drawing is being done. - * A value of %NULL indicates that the entire surface is desired. - * XXXX I'd like to get rid of being able to pass %NULL here (nothing seems to) - * @image_out: location to store a pointer to an image surface that includes at least - * the intersection of @interest_rect with the visible area of @surface. - * This surface could be @surface itself, a surface held internal to @surface, - * or it could be a new surface with a copy of the relevant portion of @surface. - * If a new surface is created, it should have the same channels and depth - * as @surface so that copying to and from it is exact. - * @image_rect: location to store area of the original surface occupied - * by the surface stored in @image. - * @image_extra: location to store image specific backend data - * - * Retrieves a local image for a surface for implementing a fallback drawing - * operation. After calling this function, the implementation of the fallback - * drawing operation draws the primitive to the surface stored in @image_out - * then calls _cairo_surface_release_dest_image(), - * which, if a temporary surface was created, copies the bits back to the - * main surface and frees the temporary surface. - * - * Return value: %CAIRO_STATUS_SUCCESS or %CAIRO_STATUS_NO_MEMORY. - * %CAIRO_INT_STATUS_UNSUPPORTED can be returned but this will mean that - * the backend can't draw with fallbacks. It's possible for the routine - * to store %NULL in @local_out and return %CAIRO_STATUS_SUCCESS; - * that indicates that no part of @interest_rect is visible, so no drawing - * is necessary. _cairo_surface_release_dest_image() should not be called in that - * case. - **/ -cairo_status_t -_cairo_surface_acquire_dest_image (cairo_surface_t *surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra) -{ - assert (!surface->finished); - - if (surface->status) - return surface->status; - - if (surface->backend->acquire_dest_image == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_surface_set_error (surface, - surface->backend->acquire_dest_image (surface, - interest_rect, - image_out, - image_rect, - image_extra)); -} - -/** - * _cairo_surface_release_dest_image: - * @surface: a #cairo_surface_t - * @interest_rect: same as passed to the matching _cairo_surface_acquire_dest_image() - * @image: same as returned from the matching _cairo_surface_acquire_dest_image() - * @image_rect: same as returned from the matching _cairo_surface_acquire_dest_image() - * @image_extra: same as return from the matching _cairo_surface_acquire_dest_image() - * - * Finishes the operation started with _cairo_surface_acquire_dest_image(), by, if - * necessary, copying the image from @image back to @surface and freeing any - * resources that were allocated. - **/ -void -_cairo_surface_release_dest_image (cairo_surface_t *surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - assert (!surface->finished); - - if (surface->backend->release_dest_image) - surface->backend->release_dest_image (surface, interest_rect, - image, image_rect, image_extra); -} - -/** - * _cairo_surface_clone_similar: - * @surface: a #cairo_surface_t - * @src: the source image - * @src_x: extent for the rectangle in src we actually care about - * @src_y: extent for the rectangle in src we actually care about - * @width: extent for the rectangle in src we actually care about - * @height: extent for the rectangle in src we actually care about - * @clone_out: location to store a surface compatible with @surface - * and with contents identical to @src. The caller must call - * cairo_surface_destroy() on the result. - * - * Creates a surface with contents identical to @src but that - * can be used efficiently with @surface. If @surface and @src are - * already compatible then it may return a new reference to @src. - * - * Return value: %CAIRO_STATUS_SUCCESS if a surface was created and stored - * in @clone_out. Otherwise %CAIRO_INT_STATUS_UNSUPPORTED or another - * error like %CAIRO_STATUS_NO_MEMORY. - **/ -cairo_status_t -_cairo_surface_clone_similar (cairo_surface_t *surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_status_t status = CAIRO_INT_STATUS_UNSUPPORTED; - cairo_image_surface_t *image; - void *image_extra; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_error (CAIRO_STATUS_SURFACE_FINISHED); - - if (surface->backend->clone_similar) { - status = surface->backend->clone_similar (surface, src, src_x, src_y, - width, height, clone_out); - - if (status == CAIRO_INT_STATUS_UNSUPPORTED) { - /* If we failed, try again with an image surface */ - status = _cairo_surface_acquire_source_image (src, &image, &image_extra); - if (status == CAIRO_STATUS_SUCCESS) { - status = - surface->backend->clone_similar (surface, &image->base, - src_x, src_y, - width, height, - clone_out); - - _cairo_surface_release_source_image (src, image, image_extra); - } - } - } - - /* If we're still unsupported, hit our fallback path to get a clone */ - if (status == CAIRO_INT_STATUS_UNSUPPORTED) - status = - _cairo_surface_fallback_clone_similar (surface, src, src_x, src_y, - width, height, clone_out); - - /* We should never get UNSUPPORTED here, so if we have an error, bail. */ - if (status) - return status; - - /* Update the clone's device_transform (which the underlying surface - * backend knows nothing about) */ - if (*clone_out != src) { - (*clone_out)->device_transform = src->device_transform; - (*clone_out)->device_transform_inverse = src->device_transform_inverse; - } - - return status; -} - -/* XXX: Shouldn't really need to do this here. */ -#include "cairo-meta-surface-private.h" - -/** - * _cairo_surface_snapshot - * @surface: a #cairo_surface_t - * - * Make an immutable copy of @surface. It is an error to call a - * surface-modifying function on the result of this function. - * - * The caller owns the return value and should call - * cairo_surface_destroy when finished with it. This function will not - * return %NULL, but will return a nil surface instead. - * - * Return value: The snapshot surface. Note that the return surface - * may not necessarily be of the same type as @surface. - **/ -cairo_surface_t * -_cairo_surface_snapshot (cairo_surface_t *surface) -{ - if (surface->status) - return _cairo_surface_create_in_error (surface->status); - - if (surface->finished) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); - - if (surface->backend->snapshot) - return surface->backend->snapshot (surface); - - return _cairo_surface_fallback_snapshot (surface); -} - -/** - * _cairo_surface_is_similar - * @surface_a: a #cairo_surface_t - * @surface_b: a #cairo_surface_t - * @content: a #cairo_content_t - * - * Find out whether the given surfaces share the same backend, - * and if so, whether they can be considered similar. - * - * The definition of "similar" depends on the backend. In - * general, it means that the surface is equivalent to one - * that would have been generated by a call to cairo_surface_create_similar(). - * - * Return value: %TRUE if the surfaces are similar. - **/ -cairo_bool_t -_cairo_surface_is_similar (cairo_surface_t *surface_a, - cairo_surface_t *surface_b, - cairo_content_t content) -{ - if (surface_a->backend != surface_b->backend) - return FALSE; - - if (surface_a->backend->is_similar != NULL) - return surface_a->backend->is_similar (surface_a, surface_b, content); - - return TRUE; -} - -cairo_status_t -_cairo_surface_composite (cairo_operator_t op, - cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_int_status_t status; - - assert (! dst->is_snapshot); - - if (mask) { - /* These operators aren't interpreted the same way by the backends; - * they are implemented in terms of other operators in cairo-gstate.c - */ - assert (op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_CLEAR); - } - - if (dst->status) - return dst->status; - - if (dst->finished) - return _cairo_surface_set_error (dst, CAIRO_STATUS_SURFACE_FINISHED); - - if (dst->backend->composite) { - status = dst->backend->composite (op, - src, mask, dst, - src_x, src_y, - mask_x, mask_y, - dst_x, dst_y, - width, height); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return _cairo_surface_set_error (dst, status); - } - - return _cairo_surface_set_error (dst, - _cairo_surface_fallback_composite (op, - src, mask, dst, - src_x, src_y, - mask_x, mask_y, - dst_x, dst_y, - width, height)); -} - -/** - * _cairo_surface_fill_rectangle: - * @surface: a #cairo_surface_t - * @op: the operator to apply to the rectangle - * @color: the source color - * @x: X coordinate of rectangle, in backend coordinates - * @y: Y coordinate of rectangle, in backend coordinates - * @width: width of rectangle, in backend coordinates - * @height: height of rectangle, in backend coordinates - * - * Applies an operator to a rectangle using a solid color as the source. - * See _cairo_surface_fill_rectangles() for full details. - * - * Return value: %CAIRO_STATUS_SUCCESS or the error that occurred - **/ -cairo_status_t -_cairo_surface_fill_rectangle (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - int x, - int y, - int width, - int height) -{ - cairo_rectangle_int_t rect; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - - return _cairo_surface_fill_rectangles (surface, op, color, &rect, 1); -} - -/** - * _cairo_surface_fill_region: - * @surface: a #cairo_surface_t - * @op: the operator to apply to the region - * @color: the source color - * @region: the region to modify, in backend coordinates - * - * Applies an operator to a set of rectangles specified as a - * #cairo_region_t using a solid color as the source. - * See _cairo_surface_fill_rectangles() for full details. - * - * Return value: %CAIRO_STATUS_SUCCESS or the error that occurred - **/ -cairo_status_t -_cairo_surface_fill_region (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_region_t *region) -{ - int num_boxes; - cairo_box_int_t *boxes = NULL; - cairo_rectangle_int_t stack_rects[CAIRO_STACK_ARRAY_LENGTH (cairo_rectangle_int_t)]; - cairo_rectangle_int_t *rects = stack_rects; - cairo_status_t status; - int i; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - num_boxes = _cairo_region_num_boxes (region); - - if (num_boxes == 0) - return CAIRO_STATUS_SUCCESS; - - /* handle the common case of a single box without allocation */ - if (num_boxes > 1) { - status = _cairo_region_get_boxes (region, &num_boxes, &boxes); - if (status) - return status; - - if (num_boxes > ARRAY_LENGTH (stack_rects)) { - rects = _cairo_malloc_ab (num_boxes, - sizeof (cairo_rectangle_int_t)); - if (!rects) { - _cairo_region_boxes_fini (region, boxes); - return _cairo_surface_set_error (surface, - CAIRO_STATUS_NO_MEMORY); - } - } - - for (i = 0; i < num_boxes; i++) { - rects[i].x = boxes[i].p1.x; - rects[i].y = boxes[i].p1.y; - rects[i].width = boxes[i].p2.x - boxes[i].p1.x; - rects[i].height = boxes[i].p2.y - boxes[i].p1.y; - } - } else - _cairo_region_get_extents (region, &rects[0]); - - status = _cairo_surface_fill_rectangles (surface, op, - color, rects, num_boxes); - - if (boxes != NULL) - _cairo_region_boxes_fini (region, boxes); - - if (rects != stack_rects) - free (rects); - - return _cairo_surface_set_error (surface, status); -} - -/** - * _cairo_surface_fill_rectangles: - * @surface: a #cairo_surface_t - * @op: the operator to apply to the region - * @color: the source color - * @rects: the rectangles to modify, in backend coordinates - * @num_rects: the number of rectangles in @rects - * - * Applies an operator to a set of rectangles using a solid color - * as the source. Note that even if the operator is an unbounded operator - * such as %CAIRO_OPERATOR_IN, only the given set of rectangles - * is affected. This differs from _cairo_surface_composite_trapezoids() - * where the entire destination rectangle is cleared. - * - * Return value: %CAIRO_STATUS_SUCCESS or the error that occurred - **/ -cairo_status_t -_cairo_surface_fill_rectangles (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects) -{ - cairo_int_status_t status; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - if (num_rects == 0) - return CAIRO_STATUS_SUCCESS; - - if (surface->backend->fill_rectangles) { - status = surface->backend->fill_rectangles (surface, op, color, - rects, num_rects); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return _cairo_surface_set_error (surface, status); - } - - return _cairo_surface_set_error (surface, - _cairo_surface_fallback_fill_rectangles (surface, op, color, - rects, num_rects)); -} - -cairo_status_t -_cairo_surface_paint (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_status_t status; - cairo_pattern_t *dev_source; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source); - if (status) - return _cairo_surface_set_error (surface, status); - - if (surface->backend->paint) { - status = surface->backend->paint (surface, op, dev_source); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto FINISH; - } - - status = _cairo_surface_fallback_paint (surface, op, dev_source); - - FINISH: - cairo_pattern_destroy (dev_source); - - return _cairo_surface_set_error (surface, status); -} - -cairo_status_t -_cairo_surface_mask (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_status_t status; - cairo_pattern_t *dev_source; - cairo_pattern_t *dev_mask; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source); - if (status) - goto FINISH; - - status = _cairo_surface_copy_pattern_for_destination (mask, surface, &dev_mask); - if (status) - goto CLEANUP_SOURCE; - - if (surface->backend->mask) { - status = surface->backend->mask (surface, op, dev_source, dev_mask); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto CLEANUP_MASK; - } - - status = _cairo_surface_fallback_mask (surface, op, dev_source, dev_mask); - - CLEANUP_MASK: - cairo_pattern_destroy (dev_mask); - CLEANUP_SOURCE: - cairo_pattern_destroy (dev_source); - FINISH: - - return _cairo_surface_set_error (surface, status); -} - -cairo_status_t -_cairo_surface_fill_stroke (cairo_surface_t *surface, - cairo_operator_t fill_op, - cairo_pattern_t *fill_source, - cairo_fill_rule_t fill_rule, - double fill_tolerance, - cairo_antialias_t fill_antialias, - cairo_path_fixed_t *path, - cairo_operator_t stroke_op, - cairo_pattern_t *stroke_source, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *stroke_ctm, - cairo_matrix_t *stroke_ctm_inverse, - double stroke_tolerance, - cairo_antialias_t stroke_antialias) -{ - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (surface->backend->fill_stroke) { - cairo_pattern_t *dev_stroke_source; - cairo_pattern_t *dev_fill_source; - cairo_matrix_t dev_ctm = *stroke_ctm; - cairo_matrix_t dev_ctm_inverse = *stroke_ctm_inverse; - - status = _cairo_surface_copy_pattern_for_destination (stroke_source, surface, &dev_stroke_source); - if (status) - return _cairo_surface_set_error (surface, status); - - status = _cairo_surface_copy_pattern_for_destination (fill_source, surface, &dev_fill_source); - if (status) { - cairo_pattern_destroy (dev_stroke_source); - return _cairo_surface_set_error (surface, status); - } - - status = surface->backend->fill_stroke (surface, fill_op, dev_fill_source, - fill_rule, fill_tolerance, fill_antialias, - path, stroke_op, dev_stroke_source, stroke_style, - &dev_ctm, &dev_ctm_inverse, stroke_tolerance, - stroke_antialias); - - cairo_pattern_destroy (dev_stroke_source); - cairo_pattern_destroy (dev_fill_source); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return _cairo_surface_set_error (surface, status); - } - - status = _cairo_surface_fill (surface, fill_op, fill_source, path, - fill_rule, fill_tolerance, fill_antialias); - if (status) - return _cairo_surface_set_error (surface, status); - - status = _cairo_surface_stroke (surface, stroke_op, stroke_source, path, - stroke_style, stroke_ctm, stroke_ctm_inverse, - stroke_tolerance, stroke_antialias); - if (status) - return _cairo_surface_set_error (surface, status); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_status_t -_cairo_surface_stroke (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_pattern_t *dev_source; - cairo_path_fixed_t *dev_path = path; - cairo_path_fixed_t real_dev_path; - cairo_matrix_t dev_ctm = *ctm; - cairo_matrix_t dev_ctm_inverse = *ctm_inverse; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source); - if (status) - return _cairo_surface_set_error (surface, status); - - if (surface->backend->stroke) { - status = surface->backend->stroke (surface, op, dev_source, - path, stroke_style, - &dev_ctm, &dev_ctm_inverse, - tolerance, antialias); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto FINISH; - } - - status = _cairo_surface_fallback_stroke (surface, op, dev_source, - path, stroke_style, - &dev_ctm, &dev_ctm_inverse, - tolerance, antialias); - - FINISH: - if (dev_path == &real_dev_path) - _cairo_path_fixed_fini (&real_dev_path); - cairo_pattern_destroy (dev_source); - - return _cairo_surface_set_error (surface, status); -} - -cairo_status_t -_cairo_surface_fill (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_pattern_t *dev_source; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source); - if (status) - return _cairo_surface_set_error (surface, status); - - if (surface->backend->fill) { - status = surface->backend->fill (surface, op, dev_source, - path, fill_rule, - tolerance, antialias); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto FINISH; - } - - status = _cairo_surface_fallback_fill (surface, op, dev_source, - path, fill_rule, - tolerance, antialias); - - FINISH: - cairo_pattern_destroy (dev_source); - - return _cairo_surface_set_error (surface, status); -} - -cairo_status_t -_cairo_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps) -{ - cairo_int_status_t status; - - assert (! dst->is_snapshot); - - /* These operators aren't interpreted the same way by the backends; - * they are implemented in terms of other operators in cairo-gstate.c - */ - assert (op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_CLEAR); - - if (dst->status) - return dst->status; - - if (dst->finished) - return _cairo_surface_set_error (dst, CAIRO_STATUS_SURFACE_FINISHED); - - if (dst->backend->composite_trapezoids) { - status = dst->backend->composite_trapezoids (op, - pattern, dst, - antialias, - src_x, src_y, - dst_x, dst_y, - width, height, - traps, num_traps); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return _cairo_surface_set_error (dst, status); - } - - return _cairo_surface_set_error (dst, - _cairo_surface_fallback_composite_trapezoids (op, pattern, dst, - antialias, - src_x, src_y, - dst_x, dst_y, - width, height, - traps, num_traps)); -} - -/** - * cairo_surface_copy_page: - * @surface: a #cairo_surface_t - * - * Emits the current page for backends that support multiple pages, - * but doesn't clear it, so that the contents of the current page will - * be retained for the next page. Use cairo_surface_show_page() if you - * want to get an empty page after the emission. - * - * Since: 1.6 - */ -void -cairo_surface_copy_page (cairo_surface_t *surface) -{ - cairo_status_t status_ignored; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status_ignored = _cairo_surface_set_error (surface, - CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - /* It's fine if some backends don't implement copy_page */ - if (surface->backend->copy_page == NULL) - return; - - status_ignored = _cairo_surface_set_error (surface, - surface->backend->copy_page (surface)); -} -slim_hidden_def (cairo_surface_copy_page); - -/** - * cairo_surface_show_page: - * @surface: a #cairo_Surface_t - * - * Emits and clears the current page for backends that support multiple - * pages. Use cairo_surface_copy_page() if you don't want to clear the page. - * - * Since: 1.6 - **/ -void -cairo_surface_show_page (cairo_surface_t *surface) -{ - cairo_status_t status_ignored; - - assert (! surface->is_snapshot); - - if (surface->status) - return; - - if (surface->finished) { - status_ignored = _cairo_surface_set_error (surface, - CAIRO_STATUS_SURFACE_FINISHED); - return; - } - - /* It's fine if some backends don't implement show_page */ - if (surface->backend->show_page == NULL) - return; - - status_ignored = _cairo_surface_set_error (surface, - surface->backend->show_page (surface)); -} -slim_hidden_def (cairo_surface_show_page); - -/** - * _cairo_surface_get_current_clip_serial: - * @surface: the #cairo_surface_t to return the serial number for - * - * Returns: the serial number associated with the current - * clip in the surface. All gstate functions must - * verify that the correct clip is set in the surface before - * invoking any surface drawing function - */ -unsigned int -_cairo_surface_get_current_clip_serial (cairo_surface_t *surface) -{ - return surface->current_clip_serial; -} - -/** - * _cairo_surface_allocate_clip_serial: - * @surface: the #cairo_surface_t to allocate a serial number from - * - * Each surface has a separate set of clipping serial numbers, and - * this function allocates one from the specified surface. As zero is - * reserved for the special no-clipping case, this function will not - * return that except for an in-error surface, (ie. surface->status != - * CAIRO_STATUS_SUCCESS). - */ -unsigned int -_cairo_surface_allocate_clip_serial (cairo_surface_t *surface) -{ - unsigned int serial; - - if (surface->status) - return 0; - - if ((serial = ++(surface->next_clip_serial)) == 0) - serial = ++(surface->next_clip_serial); - return serial; -} - -/** - * _cairo_surface_reset_clip: - * @surface: the #cairo_surface_t to reset the clip on - * - * This function sets the clipping for the surface to - * None, which is to say that drawing is entirely - * unclipped. It also sets the clip serial number - * to zero. - */ -cairo_status_t -_cairo_surface_reset_clip (cairo_surface_t *surface) -{ - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - surface->current_clip_serial = 0; - - if (surface->backend->intersect_clip_path) { - status = surface->backend->intersect_clip_path (surface, - NULL, - CAIRO_FILL_RULE_WINDING, - 0, - CAIRO_ANTIALIAS_DEFAULT); - if (status) - return _cairo_surface_set_error (surface, status); - } - - if (surface->backend->set_clip_region != NULL) { - status = surface->backend->set_clip_region (surface, NULL); - if (status) - return _cairo_surface_set_error (surface, status); - } - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_surface_set_clip_region: - * @surface: the #cairo_surface_t to reset the clip on - * @region: the #cairo_region_t to use for clipping - * @serial: the clip serial number associated with the region - * - * This function sets the clipping for the surface to - * the specified region and sets the surface clipping - * serial number to the associated serial number. - */ -cairo_status_t -_cairo_surface_set_clip_region (cairo_surface_t *surface, - cairo_region_t *region, - unsigned int serial) -{ - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - assert (surface->backend->set_clip_region != NULL); - - surface->current_clip_serial = serial; - - status = surface->backend->set_clip_region (surface, region); - - return _cairo_surface_set_error (surface, status); -} - -cairo_int_status_t -_cairo_surface_intersect_clip_path (cairo_surface_t *surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_path_fixed_t *dev_path = path; - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - assert (surface->backend->intersect_clip_path != NULL); - - status = surface->backend->intersect_clip_path (surface, - dev_path, - fill_rule, - tolerance, - antialias); - - return _cairo_surface_set_error (surface, status); -} - -static cairo_status_t -_cairo_surface_set_clip_path_recursive (cairo_surface_t *surface, - cairo_clip_path_t *clip_path) -{ - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (clip_path == NULL) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_surface_set_clip_path_recursive (surface, clip_path->prev); - if (status) - return status; - - return _cairo_surface_intersect_clip_path (surface, - &clip_path->path, - clip_path->fill_rule, - clip_path->tolerance, - clip_path->antialias); -} - -/** - * _cairo_surface_set_clip_path: - * @surface: the #cairo_surface_t to set the clip on - * @clip_path: the clip path to set - * @serial: the clip serial number associated with the clip path - * - * Sets the given clipping path for the surface and assigns the - * clipping serial to the surface. - **/ -static cairo_status_t -_cairo_surface_set_clip_path (cairo_surface_t *surface, - cairo_clip_path_t *clip_path, - unsigned int serial) -{ - cairo_status_t status; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - assert (surface->backend->intersect_clip_path != NULL); - - status = surface->backend->intersect_clip_path (surface, - NULL, - CAIRO_FILL_RULE_WINDING, - 0, - CAIRO_ANTIALIAS_DEFAULT); - if (status) - return _cairo_surface_set_error (surface, status); - - status = _cairo_surface_set_clip_path_recursive (surface, clip_path); - if (status) - return _cairo_surface_set_error (surface, status); - - surface->current_clip_serial = serial; - - return CAIRO_STATUS_SUCCESS; -} - - -/** - * _cairo_surface_set_empty_clip_path: - * @surface: the #cairo_surface_t to set the clip on - * @serial: the clip serial number associated with the clip path - * - * Create an empty clip path, one that represents the entire surface clipped - * out, and assigns the given clipping serial to the surface. - **/ -static cairo_status_t -_cairo_surface_set_empty_clip_path (cairo_surface_t *surface, - unsigned int serial) -{ - cairo_path_fixed_t path; - cairo_status_t status; - - if (surface->status) - return surface->status; - - _cairo_path_fixed_init (&path); - - status = surface->backend->intersect_clip_path (surface, - &path, - CAIRO_FILL_RULE_WINDING, - 0, - CAIRO_ANTIALIAS_DEFAULT); - - if (status == CAIRO_STATUS_SUCCESS) - surface->current_clip_serial = serial; - - _cairo_path_fixed_fini (&path); - - return _cairo_surface_set_error (surface, status); -} - -cairo_clip_t * -_cairo_surface_get_clip (cairo_surface_t *surface) -{ - return surface->clip; -} - -cairo_status_t -_cairo_surface_set_clip (cairo_surface_t *surface, cairo_clip_t *clip) -{ - unsigned int serial = 0; - - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - if (clip) { - serial = clip->serial; - if (serial == 0) - clip = NULL; - } - - surface->clip = clip; - - if (serial == _cairo_surface_get_current_clip_serial (surface)) - return CAIRO_STATUS_SUCCESS; - - if (clip) { - if (clip->all_clipped) { - if (surface->backend->intersect_clip_path != NULL) - return _cairo_surface_set_empty_clip_path (surface, - clip->serial); - - if (surface->backend->set_clip_region != NULL) - return _cairo_surface_set_clip_region (surface, - &clip->region, - clip->serial); - } else { - if (clip->path) - return _cairo_surface_set_clip_path (surface, - clip->path, - clip->serial); - - if (clip->has_region) - return _cairo_surface_set_clip_region (surface, - &clip->region, - clip->serial); - } - } - - return _cairo_surface_reset_clip (surface); -} - -/** - * _cairo_surface_get_extents: - * @surface: the #cairo_surface_t to fetch extents for - * - * This function returns a bounding box for the surface. The surface - * bounds are defined as a region beyond which no rendering will - * possibly be recorded, in other words, it is the maximum extent of - * potentially usable coordinates. - * - * For vector surfaces, (PDF, PS, SVG and meta-surfaces), the surface - * might be conceived as unbounded, but we force the user to provide a - * maximum size at the time of surface_create. So get_extents uses - * that size. - * - * Note: The coordinates returned are in "backend" space rather than - * "surface" space. That is, they are relative to the true (0,0) - * origin rather than the device_transform origin. This might seem a - * bit inconsistent with other #cairo_surface_t interfaces, but all - * current callers are within the surface layer where backend space is - * desired. - * - * This behavior would have to be changed is we ever exported a public - * variant of this function. - */ -cairo_status_t -_cairo_surface_get_extents (cairo_surface_t *surface, - cairo_rectangle_int_t *rectangle) -{ - if (surface->status) - return surface->status; - - if (surface->finished) - return _cairo_surface_set_error (surface,CAIRO_STATUS_SURFACE_FINISHED); - - return _cairo_surface_set_error (surface, - surface->backend->get_extents (surface, rectangle)); -} - -/* Note: the backends may modify the contents of the glyph array as long as - * they do not return %CAIRO_STATUS_UNSUPPORTED. This makes it possible to - * avoid copying the array again and again, and edit it in-place. - * Backends are in fact free to use the array as a generic buffer as they - * see fit. - * See commits 5a9642c5746fd677aed35ce620ce90b1029b1a0c and - * 1781e6018c17909311295a9cc74b70500c6b4d0a for the rationale. - */ -cairo_status_t -_cairo_surface_show_glyphs (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_status_t status; - cairo_scaled_font_t *dev_scaled_font = scaled_font; - cairo_pattern_t *dev_source; - cairo_matrix_t font_matrix; - - assert (! surface->is_snapshot); - - if (surface->status) - return surface->status; - - if (!num_glyphs) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_surface_copy_pattern_for_destination (source, - surface, - &dev_source); - if (status) - return _cairo_surface_set_error (surface, status); - - cairo_scaled_font_get_font_matrix (scaled_font, &font_matrix); - - if (_cairo_surface_has_device_transform (surface) && - ! _cairo_matrix_is_integer_translation (&surface->device_transform, NULL, NULL)) - { - cairo_font_options_t *font_options; - cairo_matrix_t dev_ctm; - - font_options = cairo_font_options_create (); - - cairo_scaled_font_get_ctm (scaled_font, &dev_ctm); - cairo_matrix_multiply (&dev_ctm, &dev_ctm, &surface->device_transform); - cairo_scaled_font_get_font_options (scaled_font, font_options); - dev_scaled_font = cairo_scaled_font_create (cairo_scaled_font_get_font_face (scaled_font), - &font_matrix, - &dev_ctm, - font_options); - cairo_font_options_destroy (font_options); - } - status = cairo_scaled_font_status (dev_scaled_font); - if (status) { - cairo_pattern_destroy (dev_source); - return _cairo_surface_set_error (surface, status); - } - - CAIRO_MUTEX_LOCK (dev_scaled_font->mutex); - - status = CAIRO_INT_STATUS_UNSUPPORTED; - - if (surface->backend->show_glyphs) - status = surface->backend->show_glyphs (surface, op, dev_source, - glyphs, num_glyphs, - dev_scaled_font); - - if (status == CAIRO_INT_STATUS_UNSUPPORTED) - status = _cairo_surface_fallback_show_glyphs (surface, op, dev_source, - glyphs, num_glyphs, - dev_scaled_font); - - CAIRO_MUTEX_UNLOCK (dev_scaled_font->mutex); - - if (dev_scaled_font != scaled_font) - cairo_scaled_font_destroy (dev_scaled_font); - - cairo_pattern_destroy (dev_source); - - return _cairo_surface_set_error (surface, status); -} - -/* XXX: Previously, we had a function named _cairo_surface_show_glyphs - * with not-so-useful semantics. We've now got a new - * _cairo_surface_show_glyphs with the proper semantics, and its - * fallback still uses this old function (which still needs to be - * cleaned up in terms of both semantics and naming). */ -cairo_status_t -_cairo_surface_old_show_glyphs (cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *dst, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs) -{ - cairo_status_t status; - - assert (! dst->is_snapshot); - - if (dst->status) - return dst->status; - - if (dst->finished) - return _cairo_surface_set_error (dst, CAIRO_STATUS_SURFACE_FINISHED); - - if (dst->backend->old_show_glyphs) { - status = dst->backend->old_show_glyphs (scaled_font, - op, pattern, dst, - source_x, source_y, - dest_x, dest_y, - width, height, - glyphs, num_glyphs); - } else - status = CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_surface_set_error (dst, status); -} - -static cairo_status_t -_cairo_surface_composite_fixup_unbounded_internal (cairo_surface_t *dst, - cairo_rectangle_int_t *src_rectangle, - cairo_rectangle_int_t *mask_rectangle, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_rectangle_int_t dst_rectangle; - cairo_rectangle_int_t drawn_rectangle; - cairo_bool_t has_drawn_region = FALSE; - cairo_bool_t has_clear_region = FALSE; - cairo_region_t drawn_region; - cairo_region_t clear_region; - cairo_status_t status; - - /* The area that was drawn is the area in the destination rectangle but not within - * the source or the mask. - */ - dst_rectangle.x = dst_x; - dst_rectangle.y = dst_y; - dst_rectangle.width = width; - dst_rectangle.height = height; - - drawn_rectangle = dst_rectangle; - - if (src_rectangle) - _cairo_rectangle_intersect (&drawn_rectangle, src_rectangle); - - if (mask_rectangle) - _cairo_rectangle_intersect (&drawn_rectangle, mask_rectangle); - - /* Now compute the area that is in dst_rectangle but not in drawn_rectangle - */ - _cairo_region_init_rect (&drawn_region, &drawn_rectangle); - _cairo_region_init_rect (&clear_region, &dst_rectangle); - - has_drawn_region = TRUE; - has_clear_region = TRUE; - - status = _cairo_region_subtract (&clear_region, &clear_region, &drawn_region); - if (status) - goto CLEANUP_REGIONS; - - status = _cairo_surface_fill_region (dst, CAIRO_OPERATOR_SOURCE, - CAIRO_COLOR_TRANSPARENT, - &clear_region); - -CLEANUP_REGIONS: - if (has_drawn_region) - _cairo_region_fini (&drawn_region); - if (has_clear_region) - _cairo_region_fini (&clear_region); - - return _cairo_surface_set_error (dst, status); -} - -/** - * _cairo_surface_composite_fixup_unbounded: - * @dst: the destination surface - * @src_attr: source surface attributes (from _cairo_pattern_acquire_surface()) - * @src_width: width of source surface - * @src_height: height of source surface - * @mask_attr: mask surface attributes or %NULL if no mask - * @mask_width: width of mask surface - * @mask_height: height of mask surface - * @src_x: @src_x from _cairo_surface_composite() - * @src_y: @src_y from _cairo_surface_composite() - * @mask_x: @mask_x from _cairo_surface_composite() - * @mask_y: @mask_y from _cairo_surface_composite() - * @dst_x: @dst_x from _cairo_surface_composite() - * @dst_y: @dst_y from _cairo_surface_composite() - * @width: @width from _cairo_surface_composite() - * @height: @height_x from _cairo_surface_composite() - * - * Eeek! Too many parameters! This is a helper function to take care of fixing - * up for bugs in libpixman and RENDER where, when asked to composite an - * untransformed surface with an unbounded operator (like CLEAR or SOURCE) - * only the region inside both the source and the mask is affected. - * This function clears the region that should have been drawn but was wasn't. - **/ -cairo_status_t -_cairo_surface_composite_fixup_unbounded (cairo_surface_t *dst, - cairo_surface_attributes_t *src_attr, - int src_width, - int src_height, - cairo_surface_attributes_t *mask_attr, - int mask_width, - int mask_height, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_rectangle_int_t src_tmp, mask_tmp; - cairo_rectangle_int_t *src_rectangle = NULL; - cairo_rectangle_int_t *mask_rectangle = NULL; - - assert (! dst->is_snapshot); - - if (dst->status) - return dst->status; - - /* The RENDER/libpixman operators are clipped to the bounds of the untransformed, - * non-repeating sources and masks. Other sources and masks can be ignored. - */ - if (_cairo_matrix_is_integer_translation (&src_attr->matrix, NULL, NULL) && - src_attr->extend == CAIRO_EXTEND_NONE) - { - src_tmp.x = (dst_x - (src_x + src_attr->x_offset)); - src_tmp.y = (dst_y - (src_y + src_attr->y_offset)); - src_tmp.width = src_width; - src_tmp.height = src_height; - - src_rectangle = &src_tmp; - } - - if (mask_attr && - _cairo_matrix_is_integer_translation (&mask_attr->matrix, NULL, NULL) && - mask_attr->extend == CAIRO_EXTEND_NONE) - { - mask_tmp.x = (dst_x - (mask_x + mask_attr->x_offset)); - mask_tmp.y = (dst_y - (mask_y + mask_attr->y_offset)); - mask_tmp.width = mask_width; - mask_tmp.height = mask_height; - - mask_rectangle = &mask_tmp; - } - - return _cairo_surface_composite_fixup_unbounded_internal (dst, src_rectangle, mask_rectangle, - dst_x, dst_y, width, height); -} - -/** - * _cairo_surface_composite_shape_fixup_unbounded: - * @dst: the destination surface - * @src_attr: source surface attributes (from _cairo_pattern_acquire_surface()) - * @src_width: width of source surface - * @src_height: height of source surface - * @mask_width: width of mask surface - * @mask_height: height of mask surface - * @src_x: @src_x from _cairo_surface_composite() - * @src_y: @src_y from _cairo_surface_composite() - * @mask_x: @mask_x from _cairo_surface_composite() - * @mask_y: @mask_y from _cairo_surface_composite() - * @dst_x: @dst_x from _cairo_surface_composite() - * @dst_y: @dst_y from _cairo_surface_composite() - * @width: @width from _cairo_surface_composite() - * @height: @height_x from _cairo_surface_composite() - * - * Like _cairo_surface_composite_fixup_unbounded(), but instead of - * handling the case where we have a source pattern and a mask - * pattern, handle the case where we are compositing a source pattern - * using a mask we create ourselves, as in - * _cairo_surface_composite_glyphs() or _cairo_surface_composite_trapezoids() - **/ -cairo_status_t -_cairo_surface_composite_shape_fixup_unbounded (cairo_surface_t *dst, - cairo_surface_attributes_t *src_attr, - int src_width, - int src_height, - int mask_width, - int mask_height, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_rectangle_int_t src_tmp, mask_tmp; - cairo_rectangle_int_t *src_rectangle = NULL; - cairo_rectangle_int_t *mask_rectangle = NULL; - - assert (! dst->is_snapshot); - - if (dst->status) - return dst->status; - - /* The RENDER/libpixman operators are clipped to the bounds of the untransformed, - * non-repeating sources and masks. Other sources and masks can be ignored. - */ - if (_cairo_matrix_is_integer_translation (&src_attr->matrix, NULL, NULL) && - src_attr->extend == CAIRO_EXTEND_NONE) - { - src_tmp.x = (dst_x - (src_x + src_attr->x_offset)); - src_tmp.y = (dst_y - (src_y + src_attr->y_offset)); - src_tmp.width = src_width; - src_tmp.height = src_height; - - src_rectangle = &src_tmp; - } - - mask_tmp.x = dst_x - mask_x; - mask_tmp.y = dst_y - mask_y; - mask_tmp.width = mask_width; - mask_tmp.height = mask_height; - - mask_rectangle = &mask_tmp; - - return _cairo_surface_composite_fixup_unbounded_internal (dst, src_rectangle, mask_rectangle, - dst_x, dst_y, width, height); -} - -/** - * _cairo_surface_copy_pattern_for_destination - * @pattern: the pattern to copy - * @destination: the destination surface for which the pattern is being copied - * @pattern_out: the location to hold the copy - * - * Copies the given pattern, taking into account device scale and offsets - * of the destination surface. - */ -static cairo_status_t -_cairo_surface_copy_pattern_for_destination (const cairo_pattern_t *pattern, - cairo_surface_t *destination, - cairo_pattern_t **pattern_out) -{ - cairo_status_t status; - - status = _cairo_pattern_create_copy (pattern_out, pattern); - if (status) - return status; - - if (_cairo_surface_has_device_transform (destination)) { - cairo_matrix_t device_to_surface = destination->device_transform; - - status = cairo_matrix_invert (&device_to_surface); - /* We only ever allow for scaling (under the implementation's - * control) or translation (under the user's control). So the - * matrix should always be invertible. */ - assert (status == CAIRO_STATUS_SUCCESS); - - _cairo_pattern_transform (*pattern_out, &device_to_surface); - } - - return CAIRO_STATUS_SUCCESS; -} - -/** - * _cairo_surface_set_resolution - * @surface: the surface - * @x_res: x resolution, in dpi - * @y_res: y resolution, in dpi - * - * Set the actual surface resolution of @surface to the given x and y DPI. - * Mainly used for correctly computing the scale factor when fallback - * rendering needs to take place in the paginated surface. - */ -void -_cairo_surface_set_resolution (cairo_surface_t *surface, - double x_res, - double y_res) -{ - if (surface->status) - return; - - surface->x_resolution = x_res; - surface->y_resolution = y_res; -} - -cairo_surface_t * -_cairo_surface_create_in_error (cairo_status_t status) -{ - switch (status) { - case CAIRO_STATUS_NO_MEMORY: - return (cairo_surface_t *) &_cairo_surface_nil; - case CAIRO_STATUS_INVALID_CONTENT: - return (cairo_surface_t *) &_cairo_surface_nil_invalid_content; - case CAIRO_STATUS_INVALID_FORMAT: - return (cairo_surface_t *) &_cairo_surface_nil_invalid_format; - case CAIRO_STATUS_INVALID_VISUAL: - return (cairo_surface_t *) &_cairo_surface_nil_invalid_visual; - case CAIRO_STATUS_READ_ERROR: - return (cairo_surface_t *) &_cairo_surface_nil_read_error; - case CAIRO_STATUS_WRITE_ERROR: - return (cairo_surface_t *) &_cairo_surface_nil_write_error; - case CAIRO_STATUS_FILE_NOT_FOUND: - return (cairo_surface_t *) &_cairo_surface_nil_file_not_found; - case CAIRO_STATUS_TEMP_FILE_ERROR: - return (cairo_surface_t *) &_cairo_surface_nil_temp_file_error; - case CAIRO_STATUS_INVALID_STRIDE: - return (cairo_surface_t *) &_cairo_surface_nil_invalid_stride; - case CAIRO_STATUS_SUCCESS: - ASSERT_NOT_REACHED; - /* fall-through */ - case CAIRO_STATUS_INVALID_RESTORE: - case CAIRO_STATUS_INVALID_POP_GROUP: - case CAIRO_STATUS_NO_CURRENT_POINT: - case CAIRO_STATUS_INVALID_MATRIX: - case CAIRO_STATUS_INVALID_STATUS: - case CAIRO_STATUS_NULL_POINTER: - case CAIRO_STATUS_INVALID_STRING: - case CAIRO_STATUS_INVALID_PATH_DATA: - case CAIRO_STATUS_SURFACE_FINISHED: - case CAIRO_STATUS_SURFACE_TYPE_MISMATCH: - case CAIRO_STATUS_PATTERN_TYPE_MISMATCH: - case CAIRO_STATUS_INVALID_DASH: - case CAIRO_STATUS_INVALID_DSC_COMMENT: - case CAIRO_STATUS_INVALID_INDEX: - case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: - default: - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_surface_t *) &_cairo_surface_nil; - } -} - -/* LocalWords: rasterized - */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-surface-fallback.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface-fallback.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-surface-fallback.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface-fallback.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1297 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-surface-fallback-private.h" -#include "cairo-clip-private.h" - -typedef struct { - cairo_surface_t *dst; - cairo_rectangle_int_t extents; - cairo_image_surface_t *image; - cairo_rectangle_int_t image_rect; - void *image_extra; -} fallback_state_t; - -/** - * _fallback_init: - * - * Acquire destination image surface needed for an image-based - * fallback. - * - * Return value: %CAIRO_INT_STATUS_NOTHING_TO_DO if the extents are not - * visible, %CAIRO_STATUS_SUCCESS if some portion is visible and all - * went well, or some error status otherwise. - **/ -static cairo_int_status_t -_fallback_init (fallback_state_t *state, - cairo_surface_t *dst, - int x, - int y, - int width, - int height) -{ - cairo_status_t status; - - state->extents.x = x; - state->extents.y = y; - state->extents.width = width; - state->extents.height = height; - - state->dst = dst; - - status = _cairo_surface_acquire_dest_image (dst, &state->extents, - &state->image, &state->image_rect, - &state->image_extra); - if (status) - return status; - - /* XXX: This NULL value tucked away in state->image is a rather - * ugly interface. Cleaner would be to push the - * CAIRO_INT_STATUS_NOTHING_TO_DO value down into - * _cairo_surface_acquire_dest_image and its backend - * counterparts. */ - if (state->image == NULL) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_fallback_fini (fallback_state_t *state) -{ - _cairo_surface_release_dest_image (state->dst, &state->extents, - state->image, &state->image_rect, - state->image_extra); -} - -typedef cairo_status_t (*cairo_draw_func_t) (void *closure, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_surface_t *dst, - int dst_x, - int dst_y, - const cairo_rectangle_int_t *extents); - -static cairo_status_t -_create_composite_mask_pattern (cairo_surface_pattern_t *mask_pattern, - cairo_clip_t *clip, - cairo_draw_func_t draw_func, - void *draw_closure, - cairo_surface_t *dst, - const cairo_rectangle_int_t *extents) -{ - cairo_surface_t *mask; - cairo_status_t status; - - mask = cairo_surface_create_similar (dst, - CAIRO_CONTENT_ALPHA, - extents->width, - extents->height); - if (mask->status) - return mask->status; - - status = (*draw_func) (draw_closure, CAIRO_OPERATOR_ADD, - NULL, mask, - extents->x, extents->y, - extents); - if (status) - goto CLEANUP_SURFACE; - - if (clip && clip->surface) - status = _cairo_clip_combine_to_surface (clip, CAIRO_OPERATOR_IN, - mask, - extents->x, extents->y, - extents); - if (status) - goto CLEANUP_SURFACE; - - _cairo_pattern_init_for_surface (mask_pattern, mask); - - CLEANUP_SURFACE: - cairo_surface_destroy (mask); - - return status; -} - -/* Handles compositing with a clip surface when the operator allows - * us to combine the clip with the mask - */ -static cairo_status_t -_clip_and_composite_with_mask (cairo_clip_t *clip, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_draw_func_t draw_func, - void *draw_closure, - cairo_surface_t *dst, - const cairo_rectangle_int_t *extents) -{ - cairo_surface_pattern_t mask_pattern; - cairo_status_t status; - - status = _create_composite_mask_pattern (&mask_pattern, - clip, - draw_func, draw_closure, - dst, extents); - if (status) - return status; - - status = _cairo_surface_composite (op, - src, &mask_pattern.base, dst, - extents->x, extents->y, - 0, 0, - extents->x, extents->y, - extents->width, extents->height); - - _cairo_pattern_fini (&mask_pattern.base); - - return status; -} - -/* Handles compositing with a clip surface when we have to do the operation - * in two pieces and combine them together. - */ -static cairo_status_t -_clip_and_composite_combine (cairo_clip_t *clip, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_draw_func_t draw_func, - void *draw_closure, - cairo_surface_t *dst, - const cairo_rectangle_int_t *extents) -{ - cairo_surface_t *intermediate; - cairo_surface_pattern_t dst_pattern; - cairo_surface_pattern_t intermediate_pattern; - cairo_status_t status; - - /* We'd be better off here creating a surface identical in format - * to dst, but we have no way of getting that information. - * A CAIRO_CONTENT_CLONE or something might be useful. - * cairo_surface_create_similar() also unnecessarily clears the surface. - */ - intermediate = cairo_surface_create_similar (dst, - CAIRO_CONTENT_COLOR_ALPHA, - extents->width, - extents->height); - if (intermediate->status) - return intermediate->status; - - /* Initialize the intermediate surface from the destination surface - */ - _cairo_pattern_init_for_surface (&dst_pattern, dst); - - status = _cairo_surface_composite (CAIRO_OPERATOR_SOURCE, - &dst_pattern.base, NULL, intermediate, - extents->x, extents->y, - 0, 0, - 0, 0, - extents->width, extents->height); - - _cairo_pattern_fini (&dst_pattern.base); - - if (status) - goto CLEANUP_SURFACE; - - status = (*draw_func) (draw_closure, op, - src, intermediate, - extents->x, extents->y, - extents); - if (status) - goto CLEANUP_SURFACE; - - /* Combine that with the clip - */ - status = _cairo_clip_combine_to_surface (clip, CAIRO_OPERATOR_DEST_IN, - intermediate, - extents->x, extents->y, - extents); - if (status) - goto CLEANUP_SURFACE; - - /* Punch the clip out of the destination - */ - status = _cairo_clip_combine_to_surface (clip, CAIRO_OPERATOR_DEST_OUT, - dst, - 0, 0, - extents); - if (status) - goto CLEANUP_SURFACE; - - /* Now add the two results together - */ - _cairo_pattern_init_for_surface (&intermediate_pattern, intermediate); - - status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, - &intermediate_pattern.base, NULL, dst, - 0, 0, - 0, 0, - extents->x, extents->y, - extents->width, extents->height); - - _cairo_pattern_fini (&intermediate_pattern.base); - - CLEANUP_SURFACE: - cairo_surface_destroy (intermediate); - - return status; -} - -/* Handles compositing for %CAIRO_OPERATOR_SOURCE, which is special; it's - * defined as (src IN mask IN clip) ADD (dst OUT (mask IN clip)) - */ -static cairo_status_t -_clip_and_composite_source (cairo_clip_t *clip, - cairo_pattern_t *src, - cairo_draw_func_t draw_func, - void *draw_closure, - cairo_surface_t *dst, - const cairo_rectangle_int_t *extents) -{ - cairo_surface_pattern_t mask_pattern; - cairo_status_t status; - - /* Create a surface that is mask IN clip - */ - status = _create_composite_mask_pattern (&mask_pattern, - clip, - draw_func, draw_closure, - dst, extents); - if (status) - return status; - - /* Compute dest' = dest OUT (mask IN clip) - */ - status = _cairo_surface_composite (CAIRO_OPERATOR_DEST_OUT, - &mask_pattern.base, NULL, dst, - 0, 0, - 0, 0, - extents->x, extents->y, - extents->width, extents->height); - - if (status) - goto CLEANUP_MASK_PATTERN; - - /* Now compute (src IN (mask IN clip)) ADD dest' - */ - status = _cairo_surface_composite (CAIRO_OPERATOR_ADD, - src, &mask_pattern.base, dst, - extents->x, extents->y, - 0, 0, - extents->x, extents->y, - extents->width, extents->height); - - CLEANUP_MASK_PATTERN: - _cairo_pattern_fini (&mask_pattern.base); - return status; -} - -static int -_cairo_rectangle_empty (const cairo_rectangle_int_t *rect) -{ - return rect->width == 0 || rect->height == 0; -} - -/** - * _clip_and_composite: - * @clip: a #cairo_clip_t - * @op: the operator to draw with - * @src: source pattern - * @draw_func: function that can be called to draw with the mask onto a surface. - * @draw_closure: data to pass to @draw_func. - * @dst: destination surface - * @extents: rectangle holding a bounding box for the operation; this - * rectangle will be used as the size for the temporary - * surface. - * - * When there is a surface clip, we typically need to create an intermediate - * surface. This function handles the logic of creating a temporary surface - * drawing to it, then compositing the result onto the target surface. - * - * @draw_func is to called to draw the mask; it will be called no more - * than once. - * - * Return value: %CAIRO_STATUS_SUCCESS if the drawing succeeded. - **/ -static cairo_status_t -_clip_and_composite (cairo_clip_t *clip, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_draw_func_t draw_func, - void *draw_closure, - cairo_surface_t *dst, - const cairo_rectangle_int_t *extents) -{ - cairo_pattern_union_t solid_pattern; - cairo_status_t status; - - if (_cairo_rectangle_empty (extents)) - /* Nothing to do */ - return CAIRO_STATUS_SUCCESS; - - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_pattern_init_solid (&solid_pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - src = &solid_pattern.base; - op = CAIRO_OPERATOR_DEST_OUT; - } - - if ((clip && clip->surface) || op == CAIRO_OPERATOR_SOURCE) - { - if (op == CAIRO_OPERATOR_SOURCE) - status = _clip_and_composite_source (clip, - src, - draw_func, draw_closure, - dst, extents); - else if (_cairo_operator_bounded_by_mask (op)) - status = _clip_and_composite_with_mask (clip, op, - src, - draw_func, draw_closure, - dst, extents); - else - status = _clip_and_composite_combine (clip, op, - src, - draw_func, draw_closure, - dst, extents); - } - else - { - status = (*draw_func) (draw_closure, op, - src, dst, - 0, 0, - extents); - } - - if (src == &solid_pattern.base) - _cairo_pattern_fini (&solid_pattern.base); - - return status; -} - -/* Composites a region representing a set of trapezoids. - */ -static cairo_status_t -_composite_trap_region (cairo_clip_t *clip, - cairo_pattern_t *src, - cairo_operator_t op, - cairo_surface_t *dst, - cairo_region_t *trap_region, - cairo_rectangle_int_t *extents) -{ - cairo_status_t status; - cairo_pattern_union_t solid_pattern; - cairo_pattern_union_t mask; - int num_rects = _cairo_region_num_boxes (trap_region); - unsigned int clip_serial; - cairo_surface_t *clip_surface = clip ? clip->surface : NULL; - - if (clip_surface && op == CAIRO_OPERATOR_CLEAR) { - _cairo_pattern_init_solid (&solid_pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - src = &solid_pattern.base; - op = CAIRO_OPERATOR_DEST_OUT; - } - - if (num_rects == 0) - return CAIRO_STATUS_SUCCESS; - - if (num_rects > 1) { - if (_cairo_surface_get_clip_mode (dst) != CAIRO_CLIP_MODE_REGION) - return CAIRO_INT_STATUS_UNSUPPORTED; - - clip_serial = _cairo_surface_allocate_clip_serial (dst); - status = _cairo_surface_set_clip_region (dst, - trap_region, - clip_serial); - if (status) - return status; - } - - if (clip_surface) - _cairo_pattern_init_for_surface (&mask.surface, clip_surface); - - status = _cairo_surface_composite (op, - src, - clip_surface ? &mask.base : NULL, - dst, - extents->x, extents->y, - extents->x - (clip_surface ? clip->surface_rect.x : 0), - extents->y - (clip_surface ? clip->surface_rect.y : 0), - extents->x, extents->y, - extents->width, extents->height); - - /* Restore the original clip if we modified it temporarily. */ - if (num_rects > 1) { - cairo_status_t status2 = _cairo_surface_set_clip (dst, clip); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - - if (clip_surface) - _cairo_pattern_fini (&mask.base); - - if (src == &solid_pattern.base) - _cairo_pattern_fini (&solid_pattern.base); - - return status; -} - -typedef struct { - cairo_traps_t *traps; - cairo_antialias_t antialias; -} cairo_composite_traps_info_t; - -static cairo_status_t -_composite_traps_draw_func (void *closure, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_surface_t *dst, - int dst_x, - int dst_y, - const cairo_rectangle_int_t *extents) -{ - cairo_composite_traps_info_t *info = closure; - cairo_pattern_union_t pattern; - cairo_status_t status; - - if (dst_x != 0 || dst_y != 0) - _cairo_traps_translate (info->traps, - dst_x, - dst_y); - - _cairo_pattern_init_solid (&pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - if (!src) - src = &pattern.base; - - status = _cairo_surface_composite_trapezoids (op, - src, dst, info->antialias, - extents->x, extents->y, - extents->x - dst_x, extents->y - dst_y, - extents->width, extents->height, - info->traps->traps, - info->traps->num_traps); - _cairo_pattern_fini (&pattern.base); - - return status; -} - -/* Warning: This call modifies the coordinates of traps */ -static cairo_status_t -_clip_and_composite_trapezoids (cairo_pattern_t *src, - cairo_operator_t op, - cairo_surface_t *dst, - cairo_traps_t *traps, - cairo_clip_t *clip, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_region_t trap_region; - cairo_region_t clear_region; - cairo_bool_t has_trap_region = FALSE; - cairo_bool_t has_clear_region = FALSE; - cairo_rectangle_int_t extents; - cairo_composite_traps_info_t traps_info; - - if (traps->num_traps == 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_surface_get_extents (dst, &extents); - - if (status) - return status; - - status = _cairo_traps_extract_region (traps, &trap_region); - - if (CAIRO_INT_STATUS_UNSUPPORTED == status) { - has_trap_region = FALSE; - } else if (status) { - return status; - } else { - has_trap_region = TRUE; - } - - if (_cairo_operator_bounded_by_mask (op)) { - cairo_rectangle_int_t trap_extents; - - if (has_trap_region) { - status = _cairo_clip_intersect_to_region (clip, &trap_region); - - if (status) - goto out; - - _cairo_region_get_extents (&trap_region, &trap_extents); - } else { - cairo_box_t trap_box; - _cairo_traps_extents (traps, &trap_box); - _cairo_box_round_to_rectangle (&trap_box, &trap_extents); - } - - _cairo_rectangle_intersect (&extents, &trap_extents); - status = _cairo_clip_intersect_to_rectangle (clip, &extents); - - if (status) - goto out; - } else { - cairo_surface_t *clip_surface = clip ? clip->surface : NULL; - - if (has_trap_region && !clip_surface) { - /* If we optimize drawing with an unbounded operator to - * _cairo_surface_fill_rectangles() or to drawing with a - * clip region, then we have an additional region to clear. - */ - _cairo_region_init_rect (&clear_region, &extents); - - has_clear_region = TRUE; - status = _cairo_clip_intersect_to_region (clip, &clear_region); - - if (status) - goto out; - - _cairo_region_get_extents (&clear_region, &extents); - - status = _cairo_region_subtract (&clear_region, &clear_region, &trap_region); - if (status) - goto out; - - if (!_cairo_region_not_empty (&clear_region)) { - _cairo_region_fini (&clear_region); - has_clear_region = FALSE; - } - } else { - status = _cairo_clip_intersect_to_rectangle (clip, &extents); - } - } - - if (status) - goto out; - - if (has_trap_region) { - cairo_surface_t *clip_surface = clip ? clip->surface : NULL; - - if ((src->type == CAIRO_PATTERN_TYPE_SOLID || - op == CAIRO_OPERATOR_CLEAR) && !clip_surface) { - const cairo_color_t *color; - - if (op == CAIRO_OPERATOR_CLEAR) { - color = CAIRO_COLOR_TRANSPARENT; - } else { - color = &((cairo_solid_pattern_t *)src)->color; - } - - /* Solid rectangles special case */ - status = _cairo_surface_fill_region (dst, op, color, &trap_region); - - if (!status && has_clear_region) - status = _cairo_surface_fill_region (dst, CAIRO_OPERATOR_CLEAR, - CAIRO_COLOR_TRANSPARENT, - &clear_region); - - goto out; - } - - if ((_cairo_operator_bounded_by_mask (op) && - op != CAIRO_OPERATOR_SOURCE) || !clip_surface) { - /* For a simple rectangle, we can just use composite(), for more - * rectangles, we have to set a clip region. The cost of rasterizing - * trapezoids is pretty high for most backends currently, so it's - * worthwhile even if a region is needed. - * - * If we have a clip surface, we set it as the mask; this only works - * for bounded operators other than SOURCE; for unbounded operators, - * clip and mask cannot be interchanged. For SOURCE, the operator - * as implemented by the backends is different in it's handling - * of the mask then what we want. - * - * CAIRO_INT_STATUS_UNSUPPORTED will be returned if the region has - * more than rectangle and the destination doesn't support clip - * regions. In that case, we fall through. - */ - status = _composite_trap_region (clip, src, op, dst, - &trap_region, &extents); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) { - if (!status && has_clear_region) - status = _cairo_surface_fill_region (dst, CAIRO_OPERATOR_CLEAR, - CAIRO_COLOR_TRANSPARENT, - &clear_region); - goto out; - } - } - } - - traps_info.traps = traps; - traps_info.antialias = antialias; - - status = _clip_and_composite (clip, op, src, - _composite_traps_draw_func, - &traps_info, dst, &extents); - -out: - if (has_trap_region) - _cairo_region_fini (&trap_region); - if (has_clear_region) - _cairo_region_fini (&clear_region); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_paint (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_status_t status; - cairo_rectangle_int_t extents; - cairo_box_t box; - cairo_traps_t traps; - - status = _cairo_surface_get_extents (surface, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - status = _cairo_clip_intersect_to_rectangle (surface->clip, &extents); - if (status) - return status; - - box.p1.x = _cairo_fixed_from_int (extents.x); - box.p1.y = _cairo_fixed_from_int (extents.y); - box.p2.x = _cairo_fixed_from_int (extents.x + extents.width); - box.p2.y = _cairo_fixed_from_int (extents.y + extents.height); - - status = _cairo_traps_init_box (&traps, &box); - if (status) - return status; - - status = _clip_and_composite_trapezoids (source, - op, - surface, - &traps, - surface->clip, - CAIRO_ANTIALIAS_NONE); - - _cairo_traps_fini (&traps); - - return status; -} - -static cairo_status_t -_cairo_surface_mask_draw_func (void *closure, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_surface_t *dst, - int dst_x, - int dst_y, - const cairo_rectangle_int_t *extents) -{ - cairo_pattern_t *mask = closure; - - if (src) - return _cairo_surface_composite (op, - src, mask, dst, - extents->x, extents->y, - extents->x, extents->y, - extents->x - dst_x, extents->y - dst_y, - extents->width, extents->height); - else - return _cairo_surface_composite (op, - mask, NULL, dst, - extents->x, extents->y, - 0, 0, /* unused */ - extents->x - dst_x, extents->y - dst_y, - extents->width, extents->height); -} - -cairo_status_t -_cairo_surface_fallback_mask (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_status_t status; - cairo_rectangle_int_t extents, source_extents, mask_extents; - - status = _cairo_surface_get_extents (surface, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - if (_cairo_operator_bounded_by_mask (op)) { - status = _cairo_pattern_get_extents (mask, &mask_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &mask_extents); - } - - status = _cairo_clip_intersect_to_rectangle (surface->clip, &extents); - if (status) - return status; - - status = _clip_and_composite (surface->clip, op, - source, - _cairo_surface_mask_draw_func, - mask, - surface, - &extents); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_stroke (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_traps_t traps; - cairo_box_t box; - cairo_rectangle_int_t extents; - - status = _cairo_surface_get_extents (surface, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - status = _cairo_clip_intersect_to_rectangle (surface->clip, &extents); - if (status) - return status; - - box.p1.x = _cairo_fixed_from_int (extents.x); - box.p1.y = _cairo_fixed_from_int (extents.y); - box.p2.x = _cairo_fixed_from_int (extents.x + extents.width); - box.p2.y = _cairo_fixed_from_int (extents.y + extents.height); - - _cairo_traps_init (&traps); - - _cairo_traps_limit (&traps, &box); - - status = _cairo_path_fixed_stroke_to_traps (path, - stroke_style, - ctm, ctm_inverse, - tolerance, - &traps); - if (status) { - _cairo_traps_fini (&traps); - return status; - } - - status = _clip_and_composite_trapezoids (source, - op, - surface, - &traps, - surface->clip, - antialias); - - _cairo_traps_fini (&traps); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_fill (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_status_t status; - cairo_traps_t traps; - cairo_box_t box; - cairo_rectangle_int_t extents; - - status = _cairo_surface_get_extents (surface, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_source (op)) { - cairo_rectangle_int_t source_extents; - status = _cairo_pattern_get_extents (source, &source_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &source_extents); - } - - status = _cairo_clip_intersect_to_rectangle (surface->clip, &extents); - if (status) - return status; - - box.p1.x = _cairo_fixed_from_int (extents.x); - box.p1.y = _cairo_fixed_from_int (extents.y); - box.p2.x = _cairo_fixed_from_int (extents.x + extents.width); - box.p2.y = _cairo_fixed_from_int (extents.y + extents.height); - - _cairo_traps_init (&traps); - - _cairo_traps_limit (&traps, &box); - - status = _cairo_path_fixed_fill_to_traps (path, - fill_rule, - tolerance, - &traps); - if (status) { - _cairo_traps_fini (&traps); - return status; - } - - status = _clip_and_composite_trapezoids (source, - op, - surface, - &traps, - surface->clip, - antialias); - - _cairo_traps_fini (&traps); - - return status; -} - -typedef struct { - cairo_scaled_font_t *font; - cairo_glyph_t *glyphs; - int num_glyphs; -} cairo_show_glyphs_info_t; - -static cairo_status_t -_cairo_surface_old_show_glyphs_draw_func (void *closure, - cairo_operator_t op, - cairo_pattern_t *src, - cairo_surface_t *dst, - int dst_x, - int dst_y, - const cairo_rectangle_int_t *extents) -{ - cairo_show_glyphs_info_t *glyph_info = closure; - cairo_pattern_union_t pattern; - cairo_status_t status; - - /* Modifying the glyph array is fine because we know that this function - * will be called only once, and we've already made a copy of the - * glyphs in the wrapper. - */ - if (dst_x != 0 || dst_y != 0) { - int i; - - for (i = 0; i < glyph_info->num_glyphs; ++i) - { - ((cairo_glyph_t *) glyph_info->glyphs)[i].x -= dst_x; - ((cairo_glyph_t *) glyph_info->glyphs)[i].y -= dst_y; - } - } - - _cairo_pattern_init_solid (&pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - if (!src) - src = &pattern.base; - - status = _cairo_surface_old_show_glyphs (glyph_info->font, op, src, - dst, - extents->x, extents->y, - extents->x - dst_x, - extents->y - dst_y, - extents->width, - extents->height, - glyph_info->glyphs, - glyph_info->num_glyphs); - - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - status = _cairo_scaled_font_show_glyphs (glyph_info->font, - op, - src, dst, - extents->x, extents->y, - extents->x - dst_x, - extents->y - dst_y, - extents->width, extents->height, - glyph_info->glyphs, - glyph_info->num_glyphs); - - if (src == &pattern.base) - _cairo_pattern_fini (&pattern.base); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_show_glyphs (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_status_t status; - cairo_rectangle_int_t extents; - cairo_show_glyphs_info_t glyph_info; - - status = _cairo_surface_get_extents (surface, &extents); - if (status) - return status; - - if (_cairo_operator_bounded_by_mask (op)) { - cairo_rectangle_int_t glyph_extents; - status = _cairo_scaled_font_glyph_device_extents (scaled_font, - glyphs, - num_glyphs, - &glyph_extents); - if (status) - return status; - - _cairo_rectangle_intersect (&extents, &glyph_extents); - } - - status = _cairo_clip_intersect_to_rectangle (surface->clip, &extents); - if (status) - return status; - - glyph_info.font = scaled_font; - glyph_info.glyphs = glyphs; - glyph_info.num_glyphs = num_glyphs; - - status = _clip_and_composite (surface->clip, - op, - source, - _cairo_surface_old_show_glyphs_draw_func, - &glyph_info, - surface, - &extents); - - return status; -} - -cairo_surface_t * -_cairo_surface_fallback_snapshot (cairo_surface_t *surface) -{ - cairo_surface_t *snapshot; - cairo_status_t status; - cairo_pattern_union_t pattern; - cairo_image_surface_t *image; - void *image_extra; - - status = _cairo_surface_acquire_source_image (surface, - &image, &image_extra); - if (status) - return _cairo_surface_create_in_error (status); - - snapshot = cairo_image_surface_create (image->format, - image->width, - image->height); - if (cairo_surface_status (snapshot)) { - _cairo_surface_release_source_image (surface, - image, image_extra); - return snapshot; - } - - _cairo_pattern_init_for_surface (&pattern.surface, &image->base); - - status = _cairo_surface_composite (CAIRO_OPERATOR_SOURCE, - &pattern.base, - NULL, - snapshot, - 0, 0, - 0, 0, - 0, 0, - image->width, - image->height); - - _cairo_pattern_fini (&pattern.base); - _cairo_surface_release_source_image (surface, - image, image_extra); - - if (status) { - cairo_surface_destroy (snapshot); - return _cairo_surface_create_in_error (status); - } - - snapshot->device_transform = surface->device_transform; - snapshot->device_transform_inverse = surface->device_transform_inverse; - - snapshot->is_snapshot = TRUE; - - return snapshot; -} - -cairo_status_t -_cairo_surface_fallback_composite (cairo_operator_t op, - cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - fallback_state_t state; - cairo_status_t status; - - status = _fallback_init (&state, dst, dst_x, dst_y, width, height); - if (status) { - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - return status; - } - - /* We know this will never fail with the image backend; but - * instead of calling into it directly, we call - * _cairo_surface_composite so that we get the correct device - * offset handling. - */ - status = _cairo_surface_composite (op, src, mask, - &state.image->base, - src_x, src_y, mask_x, mask_y, - dst_x - state.image_rect.x, - dst_y - state.image_rect.y, - width, height); - _fallback_fini (&state); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_fill_rectangles (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects) -{ - fallback_state_t state; - cairo_rectangle_int_t *offset_rects = NULL; - cairo_status_t status; - int x1, y1, x2, y2; - int i; - - assert (! surface->is_snapshot); - - if (num_rects <= 0) - return CAIRO_STATUS_SUCCESS; - - /* Compute the bounds of the rectangles, so that we know what area of the - * destination surface to fetch - */ - x1 = rects[0].x; - y1 = rects[0].y; - x2 = rects[0].x + rects[0].width; - y2 = rects[0].y + rects[0].height; - - for (i = 1; i < num_rects; i++) { - if (rects[i].x < x1) - x1 = rects[i].x; - if (rects[i].y < y1) - y1 = rects[i].y; - - if ((int)(rects[i].x + rects[i].width) > x2) - x2 = rects[i].x + rects[i].width; - if ((int)(rects[i].y + rects[i].height) > y2) - y2 = rects[i].y + rects[i].height; - } - - status = _fallback_init (&state, surface, x1, y1, x2 - x1, y2 - y1); - if (status) { - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - return status; - } - - /* If the fetched image isn't at 0,0, we need to offset the rectangles */ - - if (state.image_rect.x != 0 || state.image_rect.y != 0) { - offset_rects = _cairo_malloc_ab (num_rects, sizeof (cairo_rectangle_int_t)); - if (offset_rects == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto DONE; - } - - for (i = 0; i < num_rects; i++) { - offset_rects[i].x = rects[i].x - state.image_rect.x; - offset_rects[i].y = rects[i].y - state.image_rect.y; - offset_rects[i].width = rects[i].width; - offset_rects[i].height = rects[i].height; - } - - rects = offset_rects; - } - - status = _cairo_surface_fill_rectangles (&state.image->base, - op, color, - rects, num_rects); - - free (offset_rects); - - DONE: - _fallback_fini (&state); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps) -{ - fallback_state_t state; - cairo_trapezoid_t *offset_traps = NULL; - cairo_status_t status; - - status = _fallback_init (&state, dst, dst_x, dst_y, width, height); - if (status) { - if (status == CAIRO_INT_STATUS_NOTHING_TO_DO) - return CAIRO_STATUS_SUCCESS; - return status; - } - - /* If the destination image isn't at 0,0, we need to offset the trapezoids */ - - if (state.image_rect.x != 0 || state.image_rect.y != 0) { - offset_traps = _cairo_malloc_ab (num_traps, sizeof (cairo_trapezoid_t)); - if (!offset_traps) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto DONE; - } - - _cairo_trapezoid_array_translate_and_scale (offset_traps, traps, num_traps, - - state.image_rect.x, - state.image_rect.y, - 1.0, 1.0); - traps = offset_traps; - } - - status = _cairo_surface_composite_trapezoids (op, pattern, - &state.image->base, - antialias, - src_x, src_y, - dst_x - state.image_rect.x, - dst_y - state.image_rect.y, - width, height, - traps, num_traps); - if (offset_traps) - free (offset_traps); - - DONE: - _fallback_fini (&state); - - return status; -} - -cairo_status_t -_cairo_surface_fallback_clone_similar (cairo_surface_t *surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_status_t status; - cairo_surface_t *new_surface = NULL; - cairo_t *cr; - - new_surface = _cairo_surface_create_similar_scratch (surface, - cairo_surface_get_content (src), - width, height); - if (new_surface->status) - return new_surface->status; - - /* We have to copy these here, so that the coordinate spaces are correct */ - new_surface->device_transform = src->device_transform; - new_surface->device_transform_inverse = src->device_transform_inverse; - - /* We can't use _cairo_composite directly, because backends that - * implement the "high-level" API may not have it implemented. - * (For example, SVG.) We can fix this by either checking if the - * destination supports composite first, or we can make clone a - * required "high-level" operation. - */ - cr = cairo_create (new_surface); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, src, -src_x, -src_y); - cairo_paint (cr); - status = cairo_status (cr); - cairo_destroy (cr); - - if (status == CAIRO_STATUS_SUCCESS) - *clone_out = new_surface; - else - cairo_surface_destroy (new_surface); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-surface-fallback-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface-fallback-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-surface-fallback-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface-fallback-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_SURFACE_FALLBACK_PRIVATE_H -#define CAIRO_SURFACE_FALLBACK_PRIVATE_H - -#include "cairoint.h" - -cairo_private cairo_status_t -_cairo_surface_fallback_paint (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source); -cairo_private cairo_status_t -_cairo_surface_fallback_mask (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask); - -cairo_private cairo_status_t -_cairo_surface_fallback_stroke (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias); - -cairo_private cairo_status_t -_cairo_surface_fallback_fill (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias); - -cairo_private cairo_status_t -_cairo_surface_fallback_show_glyphs (cairo_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - -cairo_private cairo_surface_t * -_cairo_surface_fallback_snapshot (cairo_surface_t *surface); - -cairo_private cairo_status_t -_cairo_surface_fallback_composite (cairo_operator_t op, - cairo_pattern_t *src, - cairo_pattern_t *mask, - cairo_surface_t *dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height); - -cairo_private cairo_status_t -_cairo_surface_fallback_fill_rectangles (cairo_surface_t *surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects); - -cairo_private cairo_status_t -_cairo_surface_fallback_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps); - -cairo_private cairo_status_t -_cairo_surface_fallback_clone_similar (cairo_surface_t *surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out); - -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_SURFACE_PRIVATE_H -#define CAIRO_SURFACE_PRIVATE_H - -#include "cairo.h" - -#include "cairo-types-private.h" -#include "cairo-reference-count-private.h" - -struct _cairo_surface { - const cairo_surface_backend_t *backend; - - /* We allow surfaces to override the backend->type by shoving something - * else into surface->type. This is for "wrapper" surfaces that want to - * hide their internal type from the user-level API. */ - cairo_surface_type_t type; - - cairo_content_t content; - - cairo_reference_count_t ref_count; - cairo_status_t status; - cairo_bool_t finished; - cairo_user_data_array_t user_data; - - cairo_matrix_t device_transform; - cairo_matrix_t device_transform_inverse; - - /* The actual resolution of the device, in dots per inch. */ - double x_resolution; - double y_resolution; - - /* The resolution that should be used when generating image-based - * fallback; generally only used by the analysis/paginated - * surfaces - */ - double x_fallback_resolution; - double y_fallback_resolution; - - cairo_clip_t *clip; - - /* - * Each time a clip region is modified, it gets the next value in this - * sequence. This means that clip regions for this surface are uniquely - * identified and updates to the clip can be readily identified - */ - unsigned int next_clip_serial; - /* - * The serial number of the current clip. This is set when - * the surface clipping is set. The gstate can then cheaply - * check whether the surface clipping is already correct before - * performing a rendering operation. - * - * The special value '0' is reserved for the unclipped case. - */ - unsigned int current_clip_serial; - - /* A "snapshot" surface is immutable. See _cairo_surface_snapshot. */ - cairo_bool_t is_snapshot; - - /* - * Surface font options, falling back to backend's default options, - * and set using _cairo_surface_set_font_options(), and propagated by - * cairo_surface_create_similar(). - */ - cairo_bool_t has_font_options; - cairo_font_options_t font_options; -}; - -#endif /* CAIRO_SURFACE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-svg.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-svg.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-svg.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-svg.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * cairo-svg.h - * - * Copyright © 2005 Emmanuel Pacaud - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - */ - -#ifndef CAIRO_SVG_H -#define CAIRO_SVG_H - -#include - -#if CAIRO_HAS_SVG_SURFACE - -CAIRO_BEGIN_DECLS - -/** - * cairo_svg_version_t: - * @CAIRO_SVG_VERSION_1_1: The version 1.1 of the SVG specification. - * @CAIRO_SVG_VERSION_1_2: The version 1.2 of the SVG specification. - * - * #cairo_svg_version_t is used to describe the version number of the SVG - * specification that a generated SVG file will conform to. - */ -typedef enum _cairo_svg_version { - CAIRO_SVG_VERSION_1_1, - CAIRO_SVG_VERSION_1_2 -} cairo_svg_version_t; - -cairo_public cairo_surface_t * -cairo_svg_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -cairo_public cairo_surface_t * -cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_svg_surface_restrict_to_version (cairo_surface_t *surface, - cairo_svg_version_t version); - -cairo_public void -cairo_svg_get_versions (cairo_svg_version_t const **versions, - int *num_versions); - -cairo_public const char * -cairo_svg_version_to_string (cairo_svg_version_t version); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_SVG_SURFACE */ -# error Cairo was not compiled with support for the svg backend -#endif /* CAIRO_HAS_SVG_SURFACE */ - -#endif /* CAIRO_SVG_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-svg-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-svg-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-svg-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-svg-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2518 +0,0 @@ -/* vim: set sw=4 sts=4: -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * Copyright © 2005-2007 Emmanuel Pacaud - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Emmanuel Pacaud - * Carl Worth - */ - -#define _BSD_SOURCE /* for snprintf() */ -#include "cairoint.h" -#include "cairo-svg.h" -#include "cairo-svg-surface-private.h" -#include "cairo-path-fixed-private.h" -#include "cairo-meta-surface-private.h" -#include "cairo-paginated-private.h" -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-output-stream-private.h" - -typedef struct cairo_svg_page cairo_svg_page_t; - -static const int invalid_pattern_id = -1; - -static const cairo_svg_version_t _cairo_svg_versions[] = -{ - CAIRO_SVG_VERSION_1_1, - CAIRO_SVG_VERSION_1_2 -}; - -#define CAIRO_SVG_VERSION_LAST ARRAY_LENGTH (_cairo_svg_versions) - -static cairo_bool_t -_cairo_svg_version_has_page_set_support (cairo_svg_version_t version) -{ - return version > CAIRO_SVG_VERSION_1_1; -} - -static const char * _cairo_svg_version_strings[CAIRO_SVG_VERSION_LAST] = -{ - "SVG 1.1", - "SVG 1.2" -}; - -static const char * _cairo_svg_internal_version_strings[CAIRO_SVG_VERSION_LAST] = -{ - "1.1", - "1.2" -}; - -struct cairo_svg_page { - unsigned int surface_id; - unsigned int clip_level; - cairo_output_stream_t *xml_node; -}; - -struct cairo_svg_document { - cairo_output_stream_t *output_stream; - unsigned long refcount; - cairo_surface_t *owner; - cairo_bool_t finished; - - double width; - double height; - - cairo_output_stream_t *xml_node_defs; - cairo_output_stream_t *xml_node_glyphs; - - unsigned int surface_id; - unsigned int linear_pattern_id; - unsigned int radial_pattern_id; - unsigned int pattern_id; - unsigned int filter_id; - unsigned int clip_id; - unsigned int mask_id; - - cairo_bool_t alpha_filter; - - cairo_array_t meta_snapshots; - - cairo_svg_version_t svg_version; - - cairo_scaled_font_subsets_t *font_subsets; -}; - -typedef struct { - unsigned int id; - cairo_meta_surface_t *meta; -} cairo_meta_snapshot_t; - -static cairo_status_t -_cairo_svg_document_create (cairo_output_stream_t *stream, - double width, - double height, - cairo_svg_version_t version, - cairo_svg_document_t **document_out); - -static cairo_status_t -_cairo_svg_document_destroy (cairo_svg_document_t *document); - -static cairo_status_t -_cairo_svg_document_finish (cairo_svg_document_t *document); - -static cairo_svg_document_t * -_cairo_svg_document_reference (cairo_svg_document_t *document); - -static unsigned int -_cairo_svg_document_allocate_mask_id (cairo_svg_document_t *document); - -static cairo_surface_t * -_cairo_svg_surface_create_for_document (cairo_svg_document_t *document, - cairo_content_t content, - double width, - double height); -static cairo_surface_t * -_cairo_svg_surface_create_for_stream_internal (cairo_output_stream_t *stream, - double width, - double height, - cairo_svg_version_t version); - -static const cairo_surface_backend_t cairo_svg_surface_backend; -static const cairo_paginated_surface_backend_t cairo_svg_surface_paginated_backend; - -/** - * cairo_svg_surface_create_for_stream: - * @write_func: a #cairo_write_func_t to accept the output data - * @closure: the closure argument for @write_func - * @width_in_points: width of the surface, in points (1 point == 1/72.0 inch) - * @height_in_points: height of the surface, in points (1 point == 1/72.0 inch) - * - * Creates a SVG surface of the specified size in points to be written - * incrementally to the stream represented by @write_func and @closure. - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - * - * Since: 1.2 - */ -cairo_surface_t * -cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width, - double height) -{ - cairo_output_stream_t *stream; - - stream = _cairo_output_stream_create (write_func, NULL, closure); - if (_cairo_output_stream_get_status (stream)) - return _cairo_surface_create_in_error (_cairo_output_stream_destroy (stream)); - - return _cairo_svg_surface_create_for_stream_internal (stream, width, height, CAIRO_SVG_VERSION_1_1); -} - -/** - * cairo_svg_surface_create: - * @filename: a filename for the SVG output (must be writable) - * @width_in_points: width of the surface, in points (1 point == 1/72.0 inch) - * @height_in_points: height of the surface, in points (1 point == 1/72.0 inch) - * - * Creates a SVG surface of the specified size in points to be written - * to @filename. - * - * Return value: a pointer to the newly created surface. The caller - * owns the surface and should call cairo_surface_destroy() when done - * with it. - * - * This function always returns a valid pointer, but it will return a - * pointer to a "nil" surface if an error such as out of memory - * occurs. You can use cairo_surface_status() to check for this. - * - * Since: 1.2 - **/ -cairo_surface_t * -cairo_svg_surface_create (const char *filename, - double width, - double height) -{ - cairo_output_stream_t *stream; - - stream = _cairo_output_stream_create_for_filename (filename); - if (_cairo_output_stream_get_status (stream)) - return _cairo_surface_create_in_error (_cairo_output_stream_destroy (stream)); - - return _cairo_svg_surface_create_for_stream_internal (stream, width, height, CAIRO_SVG_VERSION_1_1); -} - -static cairo_bool_t -_cairo_surface_is_svg (cairo_surface_t *surface) -{ - return surface->backend == &cairo_svg_surface_backend; -} - -/* If the abstract_surface is a paginated surface, and that paginated - * surface's target is a svg_surface, then set svg_surface to that - * target. Otherwise return %CAIRO_STATUS_SURFACE_TYPE_MISMATCH. - */ -static cairo_status_t -_extract_svg_surface (cairo_surface_t *surface, - cairo_svg_surface_t **svg_surface) -{ - cairo_surface_t *target; - - if (surface->status) - return surface->status; - - if (! _cairo_surface_is_paginated (surface)) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - - target = _cairo_paginated_surface_get_target (surface); - if (target->status) - return target->status; - - if (! _cairo_surface_is_svg (target)) - return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - - *svg_surface = (cairo_svg_surface_t *) target; - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_svg_surface_restrict_to_version: - * @surface: a SVG #cairo_surface_t - * @version: SVG version - * - * Restricts the generated SVG file to @version. See cairo_svg_get_versions() - * for a list of available version values that can be used here. - * - * This function should only be called before any drawing operations - * have been performed on the given surface. The simplest way to do - * this is to call this function immediately after creating the - * surface. - * - * Since: 1.2 - **/ -void -cairo_svg_surface_restrict_to_version (cairo_surface_t *abstract_surface, - cairo_svg_version_t version) -{ - cairo_svg_surface_t *surface = NULL; /* hide compiler warning */ - cairo_status_t status; - - status = _extract_svg_surface (abstract_surface, &surface); - if (status) { - status = _cairo_surface_set_error (abstract_surface, status); - return; - } - - if (version < CAIRO_SVG_VERSION_LAST) - surface->document->svg_version = version; -} - -/** - * cairo_svg_get_versions: - * @versions: supported version list - * @num_versions: list length - * - * Used to retrieve the list of supported versions. See - * cairo_svg_surface_restrict_to_version(). - * - * Since: 1.2 - **/ -void -cairo_svg_get_versions (cairo_svg_version_t const **versions, - int *num_versions) -{ - if (versions != NULL) - *versions = _cairo_svg_versions; - - if (num_versions != NULL) - *num_versions = CAIRO_SVG_VERSION_LAST; -} - -/** - * cairo_svg_version_to_string: - * @version: a version id - * - * Get the string representation of the given @version id. This function - * will return %NULL if @version isn't valid. See cairo_svg_get_versions() - * for a way to get the list of valid version ids. - * - * Return value: the string associated to given version. - * - * Since: 1.2 - **/ -const char * -cairo_svg_version_to_string (cairo_svg_version_t version) -{ - if (version >= CAIRO_SVG_VERSION_LAST) - return NULL; - - return _cairo_svg_version_strings[version]; -} - -static cairo_surface_t * -_cairo_svg_surface_create_for_document (cairo_svg_document_t *document, - cairo_content_t content, - double width, - double height) -{ - cairo_svg_surface_t *surface; - cairo_surface_t *paginated; - cairo_status_t status, status_ignored; - - surface = malloc (sizeof (cairo_svg_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - _cairo_surface_init (&surface->base, &cairo_svg_surface_backend, - content); - - surface->width = width; - surface->height = height; - - surface->document = _cairo_svg_document_reference (document); - - surface->clip_level = 0; - - surface->id = document->surface_id++; - surface->base_clip = document->clip_id++; - surface->is_base_clip_emitted = FALSE; - - surface->xml_node = _cairo_memory_stream_create (); - status = _cairo_output_stream_get_status (surface->xml_node); - if (status) - goto CLEANUP; - - _cairo_array_init (&surface->page_set, sizeof (cairo_svg_page_t)); - - if (content == CAIRO_CONTENT_COLOR) { - _cairo_output_stream_printf (surface->xml_node, - "\n", - width, height); - status = _cairo_output_stream_get_status (surface->xml_node); - if (status) - goto CLEANUP; - } - - surface->paginated_mode = CAIRO_PAGINATED_MODE_ANALYZE; - surface->force_fallbacks = FALSE; - surface->content = content; - - paginated = _cairo_paginated_surface_create (&surface->base, - surface->content, - surface->width, - surface->height, - &cairo_svg_surface_paginated_backend); - status = paginated->status; - if (status == CAIRO_STATUS_SUCCESS) - return paginated; - - /* ignore status as we are on the error path */ -CLEANUP: - status_ignored = _cairo_output_stream_destroy (surface->xml_node); - status_ignored = _cairo_svg_document_destroy (document); - - free (surface); - - return _cairo_surface_create_in_error (status); -} - -static cairo_surface_t * -_cairo_svg_surface_create_for_stream_internal (cairo_output_stream_t *stream, - double width, - double height, - cairo_svg_version_t version) -{ - cairo_svg_document_t *document = NULL; /* silence compiler */ - cairo_surface_t *surface; - cairo_status_t status; - - status = _cairo_svg_document_create (stream, - width, height, version, - &document); - if (status) { - surface = _cairo_surface_create_in_error (status); - /* consume the output stream on behalf of caller */ - status = _cairo_output_stream_destroy (stream); - return surface; - } - - surface = _cairo_svg_surface_create_for_document (document, CAIRO_CONTENT_COLOR_ALPHA, - width, height); - if (surface->status) { - status = _cairo_svg_document_destroy (document); - return surface; - } - - document->owner = surface; - status = _cairo_svg_document_destroy (document); - /* the ref count should be 2 at this point */ - assert (status == CAIRO_STATUS_SUCCESS); - - return surface; -} - -static cairo_svg_page_t * -_cairo_svg_surface_store_page (cairo_svg_surface_t *surface) -{ - unsigned int i; - cairo_svg_page_t page; - cairo_output_stream_t *stream; - cairo_status_t status; - - stream = _cairo_memory_stream_create (); - if (_cairo_output_stream_get_status (stream)) { - status = _cairo_output_stream_destroy (stream); - return NULL; - } - - page.surface_id = surface->id; - page.clip_level = surface->clip_level; - page.xml_node = surface->xml_node; - - if (_cairo_array_append (&surface->page_set, &page)) { - status = _cairo_output_stream_destroy (stream); - return NULL; - } - - surface->xml_node = stream; - surface->clip_level = 0; - - for (i = 0; i < page.clip_level; i++) - _cairo_output_stream_printf (page.xml_node, "\n"); - - return _cairo_array_index (&surface->page_set, surface->page_set.num_elements - 1); -} - -static cairo_int_status_t -_cairo_svg_surface_copy_page (void *abstract_surface) -{ - cairo_svg_surface_t *surface = abstract_surface; - cairo_svg_page_t *page; - - page = _cairo_svg_surface_store_page (surface); - if (page == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _cairo_memory_stream_copy (page->xml_node, surface->xml_node); - surface->clip_level = page->clip_level; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_show_page (void *abstract_surface) -{ - cairo_svg_surface_t *surface = abstract_surface; - - if (_cairo_svg_surface_store_page (surface) == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_svg_surface_emit_transform (cairo_output_stream_t *output, - char const *attribute_str, - const cairo_matrix_t *object_matrix, - const cairo_matrix_t *parent_matrix) -{ - cairo_matrix_t matrix = *object_matrix; - - if (parent_matrix != NULL) - cairo_matrix_multiply (&matrix, &matrix, parent_matrix); - - if (!_cairo_matrix_is_identity (&matrix)) - _cairo_output_stream_printf (output, - "%s=\"matrix(%f,%f,%f,%f,%f,%f)\"", - attribute_str, - matrix.xx, matrix.yx, - matrix.xy, matrix.yy, - matrix.x0, matrix.y0); -} - -typedef struct -{ - cairo_output_stream_t *output; - cairo_matrix_t *ctm_inverse; -} svg_path_info_t; - -static cairo_status_t -_cairo_svg_path_move_to (void *closure, cairo_point_t *point) -{ - svg_path_info_t *info = closure; - double x = _cairo_fixed_to_double (point->x); - double y = _cairo_fixed_to_double (point->y); - - if (info->ctm_inverse) - cairo_matrix_transform_point (info->ctm_inverse, &x, &y); - - _cairo_output_stream_printf (info->output, "M %f %f ", x, y); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_path_line_to (void *closure, cairo_point_t *point) -{ - svg_path_info_t *info = closure; - double x = _cairo_fixed_to_double (point->x); - double y = _cairo_fixed_to_double (point->y); - - if (info->ctm_inverse) - cairo_matrix_transform_point (info->ctm_inverse, &x, &y); - - _cairo_output_stream_printf (info->output, "L %f %f ", x, y); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_path_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d) -{ - svg_path_info_t *info = closure; - double bx = _cairo_fixed_to_double (b->x); - double by = _cairo_fixed_to_double (b->y); - double cx = _cairo_fixed_to_double (c->x); - double cy = _cairo_fixed_to_double (c->y); - double dx = _cairo_fixed_to_double (d->x); - double dy = _cairo_fixed_to_double (d->y); - - if (info->ctm_inverse) { - cairo_matrix_transform_point (info->ctm_inverse, &bx, &by); - cairo_matrix_transform_point (info->ctm_inverse, &cx, &cy); - cairo_matrix_transform_point (info->ctm_inverse, &dx, &dy); - } - - _cairo_output_stream_printf (info->output, - "C %f %f %f %f %f %f ", - bx, by, cx, cy, dx, dy); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_path_close_path (void *closure) -{ - svg_path_info_t *info = closure; - - _cairo_output_stream_printf (info->output, "Z "); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_path (cairo_output_stream_t *output, - cairo_path_fixed_t *path, - cairo_matrix_t *ctm_inverse) -{ - cairo_status_t status; - svg_path_info_t info; - - _cairo_output_stream_printf (output, "d=\""); - - info.output = output; - info.ctm_inverse = ctm_inverse; - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_svg_path_move_to, - _cairo_svg_path_line_to, - _cairo_svg_path_curve_to, - _cairo_svg_path_close_path, - &info); - if (status) - return status; - - _cairo_output_stream_printf (output, "\""); - - return status; -} - -static cairo_int_status_t -_cairo_svg_document_emit_outline_glyph_data (cairo_svg_document_t *document, - cairo_scaled_font_t *scaled_font, - unsigned long glyph_index) -{ - cairo_scaled_glyph_t *scaled_glyph; - cairo_int_status_t status; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS| - CAIRO_SCALED_GLYPH_INFO_PATH, - &scaled_glyph); - if (status) - return status; - - _cairo_output_stream_printf (document->xml_node_glyphs, - "xml_node_glyphs, scaled_glyph->path, NULL); - if (status) - return status; - - _cairo_output_stream_printf (document->xml_node_glyphs, - "/>\n"); - - return status; -} - -static cairo_int_status_t -_cairo_svg_document_emit_bitmap_glyph_data (cairo_svg_document_t *document, - cairo_scaled_font_t *scaled_font, - unsigned long glyph_index) -{ - cairo_image_surface_t *image; - cairo_scaled_glyph_t *scaled_glyph; - cairo_status_t status; - unsigned char *row, *byte; - int rows, cols; - int x, y, bit; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS| - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - if (status) - return status; - - image = scaled_glyph->surface; - if (image->format != CAIRO_FORMAT_A1) { - image = _cairo_image_surface_clone (image, CAIRO_FORMAT_A1); - if (cairo_surface_status (&image->base)) - return cairo_surface_status (&image->base); - } - - _cairo_output_stream_printf (document->xml_node_glyphs, "xml_node_glyphs, " transform", - &image->base.device_transform_inverse, NULL); - _cairo_output_stream_printf (document->xml_node_glyphs, ">/n"); - - for (y = 0, row = image->data, rows = image->height; rows; row += image->stride, rows--, y++) { - for (x = 0, byte = row, cols = (image->width + 7) / 8; cols; byte++, cols--) { - unsigned char output_byte = CAIRO_BITSWAP8_IF_LITTLE_ENDIAN (*byte); - for (bit = 7; bit >= 0 && x < image->width; bit--, x++) { - if (output_byte & (1 << bit)) { - _cairo_output_stream_printf (document->xml_node_glyphs, - "\n", - x, y); - } - } - } - } - _cairo_output_stream_printf (document->xml_node_glyphs, "\n"); - - if (image != scaled_glyph->surface) - cairo_surface_destroy (&image->base); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_document_emit_glyph (cairo_svg_document_t *document, - cairo_scaled_font_t *scaled_font, - unsigned long scaled_font_glyph_index, - unsigned int font_id, - unsigned int subset_glyph_index) -{ - cairo_status_t status; - - _cairo_output_stream_printf (document->xml_node_glyphs, - "\n", - font_id, - subset_glyph_index); - - status = _cairo_svg_document_emit_outline_glyph_data (document, - scaled_font, - scaled_font_glyph_index); - if (status == CAIRO_INT_STATUS_UNSUPPORTED) - status = _cairo_svg_document_emit_bitmap_glyph_data (document, - scaled_font, - scaled_font_glyph_index); - if (status) - return status; - - _cairo_output_stream_printf (document->xml_node_glyphs, "\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_document_emit_font_subset (cairo_scaled_font_subset_t *font_subset, - void *closure) -{ - cairo_svg_document_t *document = closure; - unsigned int i; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - for (i = 0; i < font_subset->num_glyphs; i++) { - status = _cairo_svg_document_emit_glyph (document, - font_subset->scaled_font, - font_subset->glyphs[i], - font_subset->font_id, i); - if (status) - break; - } - - return status; -} - -static cairo_status_t -_cairo_svg_document_emit_font_subsets (cairo_svg_document_t *document) -{ - cairo_status_t status; - - status = _cairo_scaled_font_subsets_foreach_scaled (document->font_subsets, - _cairo_svg_document_emit_font_subset, - document); - - _cairo_scaled_font_subsets_destroy (document->font_subsets); - document->font_subsets = NULL; - - return status; -} - -static cairo_bool_t cairo_svg_force_fallbacks = FALSE; - -static cairo_int_status_t -_cairo_svg_surface_analyze_operation (cairo_svg_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *pattern) -{ - cairo_svg_document_t *document = surface->document; - - if (cairo_svg_force_fallbacks) - return FALSE; - - /* SVG doesn't support extend reflect for image pattern */ - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE && - pattern->extend == CAIRO_EXTEND_REFLECT) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (document->svg_version >= CAIRO_SVG_VERSION_1_2) - return CAIRO_STATUS_SUCCESS; - - if (op == CAIRO_OPERATOR_OVER) - return CAIRO_STATUS_SUCCESS; - - /* The SOURCE operator is only supported if there is nothing - * painted underneath. */ - if (op == CAIRO_OPERATOR_SOURCE) - return CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_int_status_t -_cairo_svg_surface_operation_supported (cairo_svg_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *pattern) -{ - if (_cairo_svg_surface_analyze_operation (surface, op, pattern) - != CAIRO_INT_STATUS_UNSUPPORTED) - { - return TRUE; - } else { - return FALSE; - } -} - -static cairo_surface_t * -_cairo_svg_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - return _cairo_meta_surface_create (content, width, height); -} - -static cairo_status_t -_cairo_svg_surface_finish (void *abstract_surface) -{ - cairo_status_t status, status2; - cairo_svg_surface_t *surface = abstract_surface; - cairo_svg_document_t *document = surface->document; - cairo_svg_page_t *page; - unsigned int i; - - if (_cairo_paginated_surface_get_target (document->owner) == &surface->base) - status = _cairo_svg_document_finish (document); - else - status = CAIRO_STATUS_SUCCESS; - - if (surface->xml_node != NULL) { - status2 = _cairo_output_stream_destroy (surface->xml_node); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - - for (i = 0; i < surface->page_set.num_elements; i++) { - page = _cairo_array_index (&surface->page_set, i); - status2 = _cairo_output_stream_destroy (page->xml_node); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - _cairo_array_fini (&surface->page_set); - - status2 = _cairo_svg_document_destroy (document); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - return status; -} - -static void -_cairo_svg_surface_emit_alpha_filter (cairo_svg_document_t *document) -{ - if (document->alpha_filter) - return; - - _cairo_output_stream_printf (document->xml_node_defs, - "\n" - " \n" - "\n"); - - document->alpha_filter = TRUE; -} - -typedef struct { - cairo_output_stream_t *output; - unsigned int in_mem; - unsigned char src[3]; - unsigned char dst[5]; - unsigned int trailing; -} base64_write_closure_t; - -static char const *base64_table = -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -static cairo_status_t -base64_write_func (void *closure, - const unsigned char *data, - unsigned int length) -{ - base64_write_closure_t *info = (base64_write_closure_t *) closure; - unsigned int i; - unsigned char *src, *dst; - - dst = info->dst; - src = info->src; - - if (info->in_mem + length < 3) { - for (i = 0; i < length; i++) { - src[i + info->in_mem] = *data; - data++; - } - info->in_mem += length; - return CAIRO_STATUS_SUCCESS; - } - - while (info->in_mem + length >= 3) { - for (i = 0; i < 3 - info->in_mem; i++) { - src[i + info->in_mem] = *data; - data++; - length--; - } - dst[0] = base64_table[src[0] >> 2]; - dst[1] = base64_table[(src[0] & 0x03) << 4 | src[1] >> 4]; - dst[2] = base64_table[(src[1] & 0x0f) << 2 | src[2] >> 6]; - dst[3] = base64_table[src[2] & 0xfc >> 2]; - /* Special case for the last missing bits */ - switch (info->trailing) { - case 2: - dst[2] = '='; - case 1: - dst[3] = '='; - default: - break; - } - _cairo_output_stream_write (info->output, dst, 4); - info->in_mem = 0; - } - - for (i = 0; i < length; i++) { - src[i] = *data; - data++; - } - info->in_mem = length; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_surface_base64_encode (cairo_surface_t *surface, - cairo_output_stream_t *output) -{ - cairo_status_t status; - base64_write_closure_t info; - unsigned int i; - - info.output = output; - info.in_mem = 0; - info.trailing = 0; - memset (info.dst, '\x0', 5); - - _cairo_output_stream_printf (info.output, "data:image/png;base64,"); - - status = cairo_surface_write_to_png_stream (surface, base64_write_func, - (void *) &info); - - if (status) - return status; - - if (info.in_mem > 0) { - for (i = info.in_mem; i < 3; i++) - info.src[i] = '\x0'; - info.trailing = 3 - info.in_mem; - info.in_mem = 3; - status = base64_write_func (&info, NULL, 0); - } - - return status; -} - -static cairo_status_t -_cairo_svg_surface_emit_composite_image_pattern (cairo_output_stream_t *output, - cairo_svg_surface_t *svg_surface, - cairo_surface_pattern_t *pattern, - int pattern_id, - const cairo_matrix_t *parent_matrix, - const char *extra_attributes) -{ - cairo_surface_t *surface; - cairo_surface_attributes_t surface_attr; - cairo_rectangle_int_t extents; - cairo_status_t status; - cairo_matrix_t p2u; - - status = _cairo_pattern_acquire_surface ((cairo_pattern_t *)pattern, - (cairo_surface_t *)svg_surface, - 0, 0, (unsigned int)-1, (unsigned int)-1, - &surface, &surface_attr); - if (status) - return status; - - status = _cairo_surface_get_extents (surface, &extents); - if (status) - goto FAIL; - - p2u = pattern->base.matrix; - status = cairo_matrix_invert (&p2u); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - if (pattern_id != invalid_pattern_id) { - _cairo_output_stream_printf (output, - "\n"); - } - - _cairo_output_stream_printf (output, - " \n"); - - if (pattern_id != invalid_pattern_id) - _cairo_output_stream_printf (output, "\n"); - - FAIL: - _cairo_pattern_release_surface ((cairo_pattern_t *)pattern, - surface, &surface_attr); - - return status; -} - -static cairo_status_t -_cairo_svg_surface_emit_meta_surface (cairo_svg_document_t *document, - cairo_meta_surface_t *surface, - int *id) -{ - cairo_status_t status; - cairo_surface_t *paginated_surface; - cairo_svg_surface_t *svg_surface; - cairo_meta_snapshot_t new_snapshot; - cairo_array_t *page_set; - - cairo_output_stream_t *contents; - cairo_meta_surface_t *meta; - cairo_meta_snapshot_t *snapshot; - unsigned int num_elements; - unsigned int i; - - /* search in already emitted meta snapshots */ - num_elements = document->meta_snapshots.num_elements; - for (i = 0; i < num_elements; i++) { - snapshot = _cairo_array_index (&document->meta_snapshots, i); - meta = snapshot->meta; - if (meta->commands.num_elements == surface->commands.num_elements && - _cairo_array_index (&meta->commands, 0) == _cairo_array_index (&surface->commands, 0)) { - *id = snapshot->id; - return CAIRO_STATUS_SUCCESS; - } - } - - meta = (cairo_meta_surface_t *) _cairo_surface_snapshot (&surface->base); - paginated_surface = _cairo_svg_surface_create_for_document (document, - meta->content, - meta->width_pixels, - meta->height_pixels); - if (paginated_surface->status) { - cairo_surface_destroy (&meta->base); - return paginated_surface->status; - } - - svg_surface = (cairo_svg_surface_t *) _cairo_paginated_surface_get_target (paginated_surface); - cairo_surface_set_fallback_resolution (paginated_surface, - document->owner->x_fallback_resolution, - document->owner->y_fallback_resolution); - - status = _cairo_meta_surface_replay (&meta->base, paginated_surface); - if (status) { - cairo_surface_destroy (&meta->base); - cairo_surface_destroy (paginated_surface); - return status; - } - - cairo_surface_show_page (paginated_surface); - status = cairo_surface_status (paginated_surface); - if (status) { - cairo_surface_destroy (&meta->base); - cairo_surface_destroy (paginated_surface); - return status; - } - - new_snapshot.meta = meta; - new_snapshot.id = svg_surface->id; - status = _cairo_array_append (&document->meta_snapshots, &new_snapshot); - if (status) { - cairo_surface_destroy (&meta->base); - cairo_surface_destroy (paginated_surface); - return status; - } - - if (!svg_surface->is_base_clip_emitted) { - svg_surface->is_base_clip_emitted = TRUE; - _cairo_output_stream_printf (document->xml_node_defs, - "\n" - " \n" - "\n", - svg_surface->base_clip, - svg_surface->width, - svg_surface->height); - } - - if (meta->content == CAIRO_CONTENT_ALPHA) { - _cairo_svg_surface_emit_alpha_filter (document); - _cairo_output_stream_printf (document->xml_node_defs, - "\n", - svg_surface->id, - svg_surface->base_clip); - } else { - _cairo_output_stream_printf (document->xml_node_defs, - "\n", - svg_surface->id, - svg_surface->base_clip); - } - - contents = svg_surface->xml_node; - page_set = &svg_surface->page_set; - - if (_cairo_memory_stream_length (contents) > 0) { - if (_cairo_svg_surface_store_page (svg_surface) == NULL) { - cairo_surface_destroy (paginated_surface); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - - if (page_set->num_elements > 0) { - cairo_svg_page_t *page; - - page = _cairo_array_index (page_set, page_set->num_elements - 1); - _cairo_memory_stream_copy (page->xml_node, document->xml_node_defs); - } - - _cairo_output_stream_printf (document->xml_node_defs, "\n"); - - *id = new_snapshot.id; - - status = cairo_surface_status (paginated_surface); - cairo_surface_destroy (paginated_surface); - - /* FIXME: cairo_paginated_surface doesn't take a ref to the - * passed in target surface so we can't call destroy here. - * cairo_paginated_surface should be fixed, but for now just - * work around it. */ - - /* cairo_surface_destroy (svg_surface); */ - - return status; -} - -static cairo_status_t -_cairo_svg_surface_emit_composite_meta_pattern (cairo_output_stream_t *output, - cairo_svg_surface_t *surface, - cairo_surface_pattern_t *pattern, - int pattern_id, - const cairo_matrix_t *parent_matrix, - const char *extra_attributes) -{ - cairo_svg_document_t *document = surface->document; - cairo_meta_surface_t *meta_surface; - cairo_matrix_t p2u; - cairo_status_t status; - int id = 0; - - p2u = pattern->base.matrix; - status = cairo_matrix_invert (&p2u); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - meta_surface = (cairo_meta_surface_t *) pattern->surface; - - status = _cairo_svg_surface_emit_meta_surface (document, meta_surface, &id); - if (status) - return status; - - if (pattern_id != invalid_pattern_id) { - _cairo_output_stream_printf (output, - "width_pixels, - meta_surface->height_pixels); - _cairo_svg_surface_emit_transform (output, " patternTransform", &p2u, parent_matrix); - _cairo_output_stream_printf (output, ">\n"); - } - - _cairo_output_stream_printf (output, - "\n"); - - if (pattern_id != invalid_pattern_id) - _cairo_output_stream_printf (output, "\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_composite_pattern (cairo_output_stream_t *output, - cairo_svg_surface_t *surface, - cairo_surface_pattern_t *pattern, - int pattern_id, - const cairo_matrix_t *parent_matrix, - const char *extra_attributes) -{ - - if (_cairo_surface_is_meta (pattern->surface)) { - return _cairo_svg_surface_emit_composite_meta_pattern (output, surface, pattern, - pattern_id, parent_matrix, extra_attributes); - } - - return _cairo_svg_surface_emit_composite_image_pattern (output, surface, pattern, - pattern_id, parent_matrix, extra_attributes); -} - -static void -_cairo_svg_surface_emit_operator (cairo_output_stream_t *output, - cairo_svg_surface_t *surface, - cairo_operator_t op) -{ - char const *op_str[] = { - "clear", - - "src", "src-over", "src-in", - "src-out", "src-atop", - - "dst", "dst-over", "dst-in", - "dst-out", "dst-atop", - - "xor", "plus", - "color-dodge" /* FIXME: saturate ? */ - }; - - if (surface->document->svg_version >= CAIRO_SVG_VERSION_1_2) - _cairo_output_stream_printf (output, "comp-op: %s; ", op_str[op]); -} - -static cairo_status_t -_cairo_svg_surface_emit_solid_pattern (cairo_svg_surface_t *surface, - cairo_solid_pattern_t *pattern, - cairo_output_stream_t *style, - cairo_bool_t is_stroke) -{ - _cairo_output_stream_printf (style, is_stroke ? - "stroke: rgb(%f%%,%f%%,%f%%); stroke-opacity: %f;": - "fill: rgb(%f%%,%f%%,%f%%); fill-opacity: %f;", - pattern->color.red * 100.0, - pattern->color.green * 100.0, - pattern->color.blue * 100.0, - pattern->color.alpha); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_surface_pattern (cairo_svg_surface_t *surface, - cairo_surface_pattern_t *pattern, - cairo_output_stream_t *style, - cairo_bool_t is_stroke, - const cairo_matrix_t *parent_matrix) -{ - cairo_svg_document_t *document = surface->document; - cairo_status_t status; - int pattern_id; - - pattern_id = document->pattern_id++; - status = _cairo_svg_surface_emit_composite_pattern (document->xml_node_defs, - surface, pattern, - pattern_id, parent_matrix, NULL); - if (status) - return status; - - _cairo_output_stream_printf (style, - "%s: url(#pattern%d);", - is_stroke ? "stroke" : "fill", - pattern_id); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_pattern_stops (cairo_output_stream_t *output, - cairo_gradient_pattern_t const *pattern, - double start_offset, - cairo_bool_t reverse_stops, - cairo_bool_t emulate_reflect) -{ - cairo_gradient_stop_t *stops; - double offset; - unsigned int n_stops; - unsigned int i; - - if (pattern->n_stops < 1) - return CAIRO_STATUS_SUCCESS; - - if (pattern->n_stops == 1) { - _cairo_output_stream_printf (output, - "\n", - pattern->stops[0].offset, - pattern->stops[0].color.red * 100.0, - pattern->stops[0].color.green * 100.0, - pattern->stops[0].color.blue * 100.0, - pattern->stops[0].color.alpha); - return CAIRO_STATUS_SUCCESS; - } - - if (emulate_reflect || reverse_stops) { - n_stops = emulate_reflect ? pattern->n_stops * 2 - 2: pattern->n_stops; - stops = _cairo_malloc_ab (n_stops, sizeof (cairo_gradient_stop_t)); - if (stops == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - for (i = 0; i < pattern->n_stops; i++) { - if (reverse_stops) { - stops[i] = pattern->stops[pattern->n_stops - i - 1]; - stops[i].offset = 1.0 - stops[i].offset; - } else - stops[i] = pattern->stops[i]; - if (emulate_reflect) { - stops[i].offset /= 2; - if (i > 0 && i < (pattern->n_stops - 1)) { - if (reverse_stops) { - stops[i + pattern->n_stops - 1] = pattern->stops[i]; - stops[i + pattern->n_stops - 1].offset = - 0.5 + 0.5 * stops[i + pattern->n_stops - 1].offset; - } else { - stops[i + pattern->n_stops - 1] = pattern->stops[pattern->n_stops - i - 1]; - stops[i + pattern->n_stops - 1].offset = - 1 - 0.5 * stops[i + pattern->n_stops - 1].offset; - } - } - } - } - } else { - n_stops = pattern->n_stops; - stops = pattern->stops; - } - - if (start_offset >= 0.0) - for (i = 0; i < n_stops; i++) { - offset = start_offset + (1 - start_offset ) * stops[i].offset; - _cairo_output_stream_printf (output, - "\n", - offset, - stops[i].color.red * 100.0, - stops[i].color.green * 100.0, - stops[i].color.blue * 100.0, - stops[i].color.alpha); - } - else { - cairo_bool_t found = FALSE; - unsigned int offset_index; - cairo_color_t offset_color_start, offset_color_stop; - - for (i = 0; i < n_stops; i++) { - if (stops[i].offset >= -start_offset) { - if (i > 0) { - if (stops[i].offset != stops[i-1].offset) { - double x0, x1; - cairo_color_t *color0, *color1; - - x0 = stops[i-1].offset; - x1 = stops[i].offset; - color0 = &stops[i-1].color; - color1 = &stops[i].color; - offset_color_start.red = color0->red + (color1->red - color0->red) - * (-start_offset - x0) / (x1 - x0); - offset_color_start.green = color0->green + (color1->green - color0->green) - * (-start_offset - x0) / (x1 - x0); - offset_color_start.blue = color0->blue + (color1->blue - color0->blue) - * (-start_offset - x0) / (x1 - x0); - offset_color_start.alpha = color0->alpha + (color1->alpha - color0->alpha) - * (-start_offset - x0) / (x1 - x0); - offset_color_stop = offset_color_start; - } else { - offset_color_stop = stops[i-1].color; - offset_color_start = stops[i].color; - } - } else - offset_color_stop = offset_color_start = stops[i].color; - offset_index = i; - found = TRUE; - break; - } - } - - if (!found) { - offset_index = n_stops - 1; - offset_color_stop = offset_color_start = stops[offset_index].color; - } - - _cairo_output_stream_printf (output, - "\n", - offset_color_start.red * 100.0, - offset_color_start.green * 100.0, - offset_color_start.blue * 100.0, - offset_color_start.alpha); - for (i = offset_index; i < n_stops; i++) { - _cairo_output_stream_printf (output, - "\n", - stops[i].offset + start_offset, - stops[i].color.red * 100.0, - stops[i].color.green * 100.0, - stops[i].color.blue * 100.0, - stops[i].color.alpha); - } - for (i = 0; i < offset_index; i++) { - _cairo_output_stream_printf (output, - "\n", - 1.0 + stops[i].offset + start_offset, - stops[i].color.red * 100.0, - stops[i].color.green * 100.0, - stops[i].color.blue * 100.0, - stops[i].color.alpha); - } - - _cairo_output_stream_printf (output, - "\n", - offset_color_stop.red * 100.0, - offset_color_stop.green * 100.0, - offset_color_stop.blue * 100.0, - offset_color_stop.alpha); - - } - - if (reverse_stops || emulate_reflect) - free (stops); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_svg_surface_emit_pattern_extend (cairo_output_stream_t *output, - cairo_pattern_t *pattern) -{ - switch (pattern->extend) { - case CAIRO_EXTEND_REPEAT: - _cairo_output_stream_printf (output, "spreadMethod=\"repeat\" "); - break; - case CAIRO_EXTEND_REFLECT: - _cairo_output_stream_printf (output, "spreadMethod=\"reflect\" "); - break; - case CAIRO_EXTEND_NONE: - case CAIRO_EXTEND_PAD: - break; - } -} - -static cairo_status_t -_cairo_svg_surface_emit_linear_pattern (cairo_svg_surface_t *surface, - cairo_linear_pattern_t *pattern, - cairo_output_stream_t *style, - cairo_bool_t is_stroke, - const cairo_matrix_t *parent_matrix) -{ - cairo_svg_document_t *document = surface->document; - double x0, y0, x1, y1; - cairo_matrix_t p2u; - cairo_status_t status; - - p2u = pattern->base.base.matrix; - status = cairo_matrix_invert (&p2u); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - x0 = _cairo_fixed_to_double (pattern->p1.x); - y0 = _cairo_fixed_to_double (pattern->p1.y); - x1 = _cairo_fixed_to_double (pattern->p2.x); - y1 = _cairo_fixed_to_double (pattern->p2.y); - - _cairo_output_stream_printf (document->xml_node_defs, - "linear_pattern_id, - x0, y0, x1, y1); - - _cairo_svg_surface_emit_pattern_extend (document->xml_node_defs, &pattern->base.base), - _cairo_svg_surface_emit_transform (document->xml_node_defs, "gradientTransform", &p2u, parent_matrix); - _cairo_output_stream_printf (document->xml_node_defs, ">\n"); - - status = _cairo_svg_surface_emit_pattern_stops (document->xml_node_defs, - &pattern->base, 0.0, - FALSE, FALSE); - if (status) - return status; - - _cairo_output_stream_printf (document->xml_node_defs, - "\n"); - - _cairo_output_stream_printf (style, - "%s: url(#linear%d);", - is_stroke ? "stroke" : "fill", - document->linear_pattern_id); - - document->linear_pattern_id++; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_radial_pattern (cairo_svg_surface_t *surface, - cairo_radial_pattern_t *pattern, - cairo_output_stream_t *style, - cairo_bool_t is_stroke, - const cairo_matrix_t *parent_matrix) -{ - cairo_svg_document_t *document = surface->document; - cairo_matrix_t p2u; - cairo_extend_t extend; - double x0, y0, x1, y1, r0, r1; - double fx, fy; - cairo_bool_t reverse_stops; - cairo_status_t status; - cairo_point_t *c0, *c1; - cairo_fixed_t radius0, radius1; - - extend = pattern->base.base.extend; - - if (pattern->r1 < pattern->r2) { - c0 = &pattern->c1; - c1 = &pattern->c2; - radius0 = pattern->r1; - radius1 = pattern->r2; - reverse_stops = FALSE; - } else { - c0 = &pattern->c2; - c1 = &pattern->c1; - radius0 = pattern->r2; - radius1 = pattern->r1; - reverse_stops = TRUE; - } - - x0 = _cairo_fixed_to_double (c0->x); - y0 = _cairo_fixed_to_double (c0->y); - r0 = _cairo_fixed_to_double (radius0); - x1 = _cairo_fixed_to_double (c1->x); - y1 = _cairo_fixed_to_double (c1->y); - r1 = _cairo_fixed_to_double (radius1); - - p2u = pattern->base.base.matrix; - status = cairo_matrix_invert (&p2u); - /* cairo_pattern_set_matrix ensures the matrix is invertible */ - assert (status == CAIRO_STATUS_SUCCESS); - - if (pattern->r1 == pattern->r2) { - unsigned int n_stops = pattern->base.n_stops; - - _cairo_output_stream_printf (document->xml_node_defs, - "radial_pattern_id, - x1, y1, - x1, y1, r1); - _cairo_svg_surface_emit_transform (document->xml_node_defs, "gradientTransform", &p2u, parent_matrix); - _cairo_output_stream_printf (document->xml_node_defs, ">\n"); - - if (extend == CAIRO_EXTEND_NONE || n_stops < 1) - _cairo_output_stream_printf (document->xml_node_defs, - "\n"); - else { - _cairo_output_stream_printf (document->xml_node_defs, - "\n", - pattern->base.stops[0].color.red * 100.0, - pattern->base.stops[0].color.green * 100.0, - pattern->base.stops[0].color.blue * 100.0, - pattern->base.stops[0].color.alpha); - if (n_stops > 1) - _cairo_output_stream_printf (document->xml_node_defs, - "\n", - pattern->base.stops[n_stops - 1].color.red * 100.0, - pattern->base.stops[n_stops - 1].color.green * 100.0, - pattern->base.stops[n_stops - 1].color.blue * 100.0, - pattern->base.stops[n_stops - 1].color.alpha); - } - - } else { - double offset, r, x, y; - cairo_bool_t emulate_reflect = FALSE; - - fx = (r1 * x0 - r0 * x1) / (r1 - r0); - fy = (r1 * y0 - r0 * y1) / (r1 - r0); - - /* SVG doesn't support the inner circle and use instead a gradient focal. - * That means we need to emulate the cairo behaviour by processing the - * cairo gradient stops. - * The CAIRO_EXTENT_NONE and CAIRO_EXTENT_PAD modes are quite easy to handle, - * it's just a matter of stop position translation and calculation of - * the corresponding SVG radial gradient focal. - * The CAIRO_EXTENT_REFLECT and CAIRO_EXTEND_REPEAT modes require to compute a new - * radial gradient, with an new outer circle, equal to r1 - r0 in the CAIRO_EXTEND_REPEAT - * case, and 2 * (r1 - r0) in the CAIRO_EXTENT_REFLECT case, and a new gradient stop - * list that maps to the original cairo stop list. - */ - if ((extend == CAIRO_EXTEND_REFLECT - || extend == CAIRO_EXTEND_REPEAT) - && r0 > 0.0) { - double r_org = r1; - - if (extend == CAIRO_EXTEND_REFLECT) { - r1 = 2 * r1 - r0; - emulate_reflect = TRUE; - } - - offset = fmod (r1, r1 - r0) / (r1 - r0) - 1.0; - r = r1 - r0; - - /* New position of outer circle. */ - x = r * (x1 - fx) / r_org + fx; - y = r * (y1 - fy) / r_org + fy; - - x1 = x; - y1 = y; - r1 = r; - r0 = 0.0; - } else { - offset = r0 / r1; - } - - _cairo_output_stream_printf (document->xml_node_defs, - "radial_pattern_id, - x1, y1, - fx, fy, r1); - - if (emulate_reflect) - _cairo_output_stream_printf (document->xml_node_defs, "spreadMethod=\"repeat\" "); - else - _cairo_svg_surface_emit_pattern_extend (document->xml_node_defs, &pattern->base.base); - _cairo_svg_surface_emit_transform (document->xml_node_defs, "gradientTransform", &p2u, parent_matrix); - _cairo_output_stream_printf (document->xml_node_defs, ">\n"); - - /* To support cairo's EXTEND_NONE, (for which SVG has no similar - * notion), we add transparent color stops on either end of the - * user-provided stops. */ - if (extend == CAIRO_EXTEND_NONE) { - _cairo_output_stream_printf (document->xml_node_defs, - "\n"); - if (r0 != 0.0) - _cairo_output_stream_printf (document->xml_node_defs, - "\n", - r0 / r1); - } - status = _cairo_svg_surface_emit_pattern_stops (document->xml_node_defs, - &pattern->base, offset, - reverse_stops, - emulate_reflect); - if (status) - return status; - - if (pattern->base.base.extend == CAIRO_EXTEND_NONE) - _cairo_output_stream_printf (document->xml_node_defs, - "\n"); - } - - _cairo_output_stream_printf (document->xml_node_defs, - "\n"); - - _cairo_output_stream_printf (style, - "%s: url(#radial%d);", - is_stroke ? "stroke" : "fill", - document->radial_pattern_id); - - document->radial_pattern_id++; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_pattern (cairo_svg_surface_t *surface, - cairo_pattern_t *pattern, - cairo_output_stream_t *output, - cairo_bool_t is_stroke, - const cairo_matrix_t *parent_matrix) -{ - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: - return _cairo_svg_surface_emit_solid_pattern (surface, (cairo_solid_pattern_t *) pattern, - output, is_stroke); - - case CAIRO_PATTERN_TYPE_SURFACE: - return _cairo_svg_surface_emit_surface_pattern (surface, (cairo_surface_pattern_t *) pattern, - output, is_stroke, parent_matrix); - - case CAIRO_PATTERN_TYPE_LINEAR: - return _cairo_svg_surface_emit_linear_pattern (surface, (cairo_linear_pattern_t *) pattern, - output, is_stroke, parent_matrix); - - case CAIRO_PATTERN_TYPE_RADIAL: - return _cairo_svg_surface_emit_radial_pattern (surface, (cairo_radial_pattern_t *) pattern, - output, is_stroke, parent_matrix); - } - return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); -} - -static cairo_status_t -_cairo_svg_surface_emit_fill_style (cairo_output_stream_t *output, - cairo_svg_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_fill_rule_t fill_rule, - cairo_matrix_t *parent_matrix) -{ - _cairo_output_stream_printf (output, - "fill-rule: %s; ", - fill_rule == CAIRO_FILL_RULE_EVEN_ODD ? - "evenodd" : "nonzero"); - _cairo_svg_surface_emit_operator (output, surface, op); - return _cairo_svg_surface_emit_pattern (surface, source, output, FALSE, parent_matrix); -} - -static cairo_status_t -_cairo_svg_surface_emit_stroke_style (cairo_output_stream_t *output, - cairo_svg_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *parent_matrix) -{ - cairo_status_t status; - const char *line_cap, *line_join; - unsigned int i; - - switch (stroke_style->line_cap) { - case CAIRO_LINE_CAP_BUTT: - line_cap = "butt"; - break; - case CAIRO_LINE_CAP_ROUND: - line_cap = "round"; - break; - case CAIRO_LINE_CAP_SQUARE: - line_cap = "square"; - break; - default: - ASSERT_NOT_REACHED; - } - - switch (stroke_style->line_join) { - case CAIRO_LINE_JOIN_MITER: - line_join = "miter"; - break; - case CAIRO_LINE_JOIN_ROUND: - line_join = "round"; - break; - case CAIRO_LINE_JOIN_BEVEL: - line_join = "bevel"; - break; - default: - ASSERT_NOT_REACHED; - } - - _cairo_output_stream_printf (output, - "stroke-width: %f; " - "stroke-linecap: %s; " - "stroke-linejoin: %s; ", - stroke_style->line_width, - line_cap, - line_join); - - status = _cairo_svg_surface_emit_pattern (surface, source, output, TRUE, parent_matrix); - if (status) - return status; - - _cairo_svg_surface_emit_operator (output, surface, op); - - if (stroke_style->num_dashes > 0) { - _cairo_output_stream_printf (output, "stroke-dasharray: "); - for (i = 0; i < stroke_style->num_dashes; i++) { - _cairo_output_stream_printf (output, "%f", - stroke_style->dash[i]); - if (i + 1 < stroke_style->num_dashes) - _cairo_output_stream_printf (output, ","); - else - _cairo_output_stream_printf (output, "; "); - } - if (stroke_style->dash_offset != 0.0) { - _cairo_output_stream_printf (output, - "stroke-dashoffset: %f; ", - stroke_style->dash_offset); - } - } - - _cairo_output_stream_printf (output, - "stroke-miterlimit: %f; ", - stroke_style->miter_limit); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_fill_stroke (void *abstract_surface, - cairo_operator_t fill_op, - cairo_pattern_t *fill_source, - cairo_fill_rule_t fill_rule, - double fill_tolerance, - cairo_antialias_t fill_antialias, - cairo_path_fixed_t *path, - cairo_operator_t stroke_op, - cairo_pattern_t *stroke_source, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *stroke_ctm, - cairo_matrix_t *stroke_ctm_inverse, - double stroke_tolerance, - cairo_antialias_t stroke_antialias) -{ - cairo_svg_surface_t *surface = abstract_surface; - cairo_status_t status; - - _cairo_output_stream_printf (surface->xml_node, "xml_node, surface, fill_op, - fill_source, fill_rule, stroke_ctm_inverse); - if (status) - return status; - - status = _cairo_svg_surface_emit_stroke_style (surface->xml_node, surface, stroke_op, - stroke_source, stroke_style, stroke_ctm_inverse); - if (status) - return status; - - _cairo_output_stream_printf (surface->xml_node, "\" "); - - status = _cairo_svg_surface_emit_path (surface->xml_node, path, stroke_ctm_inverse); - if (status) - return status; - - _cairo_svg_surface_emit_transform (surface->xml_node, " transform", stroke_ctm, NULL); - _cairo_output_stream_printf (surface->xml_node, "/>\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_svg_surface_t *surface = abstract_surface; - cairo_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_svg_surface_analyze_operation (surface, op, source); - - assert (_cairo_svg_surface_operation_supported (surface, op, source)); - - _cairo_output_stream_printf (surface->xml_node, "xml_node, surface, op, source, fill_rule, NULL); - if (status) - return status; - - _cairo_output_stream_printf (surface->xml_node, "\" "); - - status = _cairo_svg_surface_emit_path (surface->xml_node, path, NULL); - if (status) - return status; - - _cairo_output_stream_printf (surface->xml_node, "/>\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_svg_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - - /* XXX: The conversion to integers here is pretty bogus, (not to - * mention the aribitray limitation of width to a short(!). We - * may need to come up with a better interface for get_size. - */ - rectangle->width = (int) ceil (surface->width); - rectangle->height = (int) ceil (surface->height); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_svg_surface_emit_paint (cairo_output_stream_t *output, - cairo_svg_surface_t *surface, - cairo_operator_t op, - cairo_pattern_t *source, - const char *extra_attributes) -{ - cairo_status_t status; - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE && - source->extend == CAIRO_EXTEND_NONE) - return _cairo_svg_surface_emit_composite_pattern (output, - surface, - (cairo_surface_pattern_t *) source, - invalid_pattern_id, - NULL, - extra_attributes); - - _cairo_output_stream_printf (output, - "width, surface->height); - _cairo_svg_surface_emit_operator (output, surface, op); - status = _cairo_svg_surface_emit_pattern (surface, source, output, FALSE, NULL); - if (status) - return status; - - _cairo_output_stream_printf (output, " stroke: none;\""); - - if (extra_attributes) - _cairo_output_stream_printf (output, " %s", extra_attributes); - - _cairo_output_stream_printf (output, "/>\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_status_t status; - cairo_svg_surface_t *surface = abstract_surface; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_svg_surface_analyze_operation (surface, op, source); - - /* XXX: It would be nice to be able to assert this condition - * here. But, we actually allow one 'cheat' that is used when - * painting the final image-based fallbacks. The final fallbacks - * do have alpha which we support by blending with white. This is - * possible only because there is nothing between the fallback - * images and the paper, nor is anything painted above. */ - /* - assert (_cairo_svg_surface_operation_supported (surface, op, source)); - */ - - /* Emulation of clear and source operators, when no clipping region - * is defined. We just delete existing content of surface root node, - * and exit early if operator is clear. - * XXX: optimization of SOURCE operator doesn't work, since analyze - * above always return FALSE. In order to make it work, we need a way - * to know if there's an active clipping path. - * Optimization of CLEAR works because of a test in paginated surface, - * and an optimiszation in meta surface. */ - if (surface->clip_level == 0 && - (op == CAIRO_OPERATOR_CLEAR || - op == CAIRO_OPERATOR_SOURCE)) - { - status = _cairo_output_stream_destroy (surface->xml_node); - if (status) { - surface->xml_node = NULL; - return status; - } - - surface->xml_node = _cairo_memory_stream_create (); - if (_cairo_output_stream_get_status (surface->xml_node)) { - status = _cairo_output_stream_destroy (surface->xml_node); - surface->xml_node = NULL; - return status; - } - - if (op == CAIRO_OPERATOR_CLEAR) { - if (surface->content == CAIRO_CONTENT_COLOR) { - _cairo_output_stream_printf (surface->xml_node, - "\n", - surface->width, surface->height); - } - return CAIRO_STATUS_SUCCESS; - } - } - - return _cairo_svg_surface_emit_paint (surface->xml_node, surface, op, source, NULL); -} - -static cairo_int_status_t -_cairo_svg_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - cairo_status_t status; - cairo_svg_surface_t *surface = abstract_surface; - cairo_svg_document_t *document = surface->document; - cairo_output_stream_t *mask_stream; - char buffer[64]; - cairo_bool_t discard_filter = FALSE; - unsigned int mask_id; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_svg_surface_analyze_operation (surface, op, source); - - assert (_cairo_svg_surface_operation_supported (surface, op, source)); - - if (cairo_pattern_get_type (mask) == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t*) mask; - cairo_content_t content = cairo_surface_get_content (surface_pattern->surface); - if (content == CAIRO_CONTENT_ALPHA) - discard_filter = TRUE; - } - - if (!discard_filter) - _cairo_svg_surface_emit_alpha_filter (document); - - /* _cairo_svg_surface_emit_paint() will output a pattern definition to - * document->xml_node_defs so we need to write the mask element to - * a temporary stream and then copy that to xml_node_defs. */ - mask_stream = _cairo_memory_stream_create (); - if (_cairo_output_stream_get_status (mask_stream)) - return _cairo_output_stream_destroy (mask_stream); - - mask_id = _cairo_svg_document_allocate_mask_id (document); - - _cairo_output_stream_printf (mask_stream, - "\n" - "%s", - mask_id, - discard_filter ? "" : " \n"); - status = _cairo_svg_surface_emit_paint (mask_stream, surface, op, mask, NULL); - if (status) { - cairo_status_t ignore = _cairo_output_stream_destroy (mask_stream); - return status; - (void) ignore; - } - - _cairo_output_stream_printf (mask_stream, - "%s" - "\n", - discard_filter ? "" : " \n"); - _cairo_memory_stream_copy (mask_stream, document->xml_node_defs); - - status = _cairo_output_stream_destroy (mask_stream); - if (status) - return status; - - snprintf (buffer, sizeof buffer, "mask=\"url(#mask%d)\"", - mask_id); - status = _cairo_svg_surface_emit_paint (surface->xml_node, surface, op, source, buffer); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_stroke (void *abstract_dst, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *stroke_style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_svg_surface_t *surface = abstract_dst; - cairo_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_svg_surface_analyze_operation (surface, op, source); - - assert (_cairo_svg_surface_operation_supported (surface, op, source)); - - _cairo_output_stream_printf (surface->xml_node, "xml_node, surface, op, - source, stroke_style, ctm_inverse); - if (status) - return status; - - _cairo_output_stream_printf (surface->xml_node, "\" "); - - status = _cairo_svg_surface_emit_path (surface->xml_node, path, ctm_inverse); - if (status) - return status; - - _cairo_svg_surface_emit_transform (surface->xml_node, " transform", ctm, NULL); - _cairo_output_stream_printf (surface->xml_node, "/>\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_svg_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_svg_surface_t *surface = abstract_surface; - cairo_svg_document_t *document = surface->document; - cairo_path_fixed_t path; - cairo_status_t status; - cairo_scaled_font_subsets_glyph_t subset_glyph; - int i; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_svg_surface_analyze_operation (surface, op, pattern); - - assert (_cairo_svg_surface_operation_supported (surface, op, pattern)); - - if (num_glyphs <= 0) - return CAIRO_STATUS_SUCCESS; - - /* FIXME it's probably possible to apply a pattern of a gradient to - * a group of symbols, but I don't know how yet. Gradients or patterns - * are translated by x and y properties of use element. */ - if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) - goto FALLBACK; - - _cairo_output_stream_printf (surface->xml_node, "xml_node, FALSE, NULL); - if (status) - return status; - - _cairo_output_stream_printf (surface->xml_node, "\">\n"); - - for (i = 0; i < num_glyphs; i++) { - status = _cairo_scaled_font_subsets_map_glyph (document->font_subsets, - scaled_font, glyphs[i].index, - &subset_glyph); - if (status == CAIRO_INT_STATUS_UNSUPPORTED) { - _cairo_output_stream_printf (surface->xml_node, "\n"); - - glyphs += i; - num_glyphs -= i; - goto FALLBACK; - } - - if (status) - return status; - - _cairo_output_stream_printf (surface->xml_node, - " \n", - subset_glyph.font_id, - subset_glyph.subset_glyph_index, - glyphs[i].x, glyphs[i].y); - } - - _cairo_output_stream_printf (surface->xml_node, "\n"); - - return CAIRO_STATUS_SUCCESS; - -FALLBACK: - _cairo_path_fixed_init (&path); - - status = _cairo_scaled_font_glyph_path (scaled_font,(cairo_glyph_t *) glyphs, num_glyphs, &path); - - if (status) { - _cairo_path_fixed_fini (&path); - return status; - } - - status = _cairo_svg_surface_fill (abstract_surface, op, pattern, - &path, CAIRO_FILL_RULE_WINDING, 0.0, CAIRO_ANTIALIAS_SUBPIXEL); - - _cairo_path_fixed_fini (&path); - - return status; -} - -static cairo_int_status_t -_cairo_svg_surface_intersect_clip_path (void *dst, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_svg_surface_t *surface = dst; - cairo_svg_document_t *document = surface->document; - cairo_status_t status; - unsigned int i; - - if (path == NULL) { - for (i = 0; i < surface->clip_level; i++) - _cairo_output_stream_printf (surface->xml_node, "\n"); - - surface->clip_level = 0; - return CAIRO_STATUS_SUCCESS; - } - - _cairo_output_stream_printf (document->xml_node_defs, - "\n" - " clip_id); - status = _cairo_svg_surface_emit_path (document->xml_node_defs, path, NULL); - if (status) - return status; - - _cairo_output_stream_printf (document->xml_node_defs, - "/>\n" - "\n"); - - _cairo_output_stream_printf (surface->xml_node, - "\n", - document->clip_id, - fill_rule == CAIRO_FILL_RULE_EVEN_ODD ? - "evenodd" : "nonzero"); - - document->clip_id++; - surface->clip_level++; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_svg_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - _cairo_font_options_init_default (options); - - cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); -} - -static const cairo_surface_backend_t cairo_svg_surface_backend = { - CAIRO_SURFACE_TYPE_SVG, - _cairo_svg_surface_create_similar, - _cairo_svg_surface_finish, - NULL, /* acquire_source_image */ - NULL, /* release_source_image */ - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* _cairo_svg_surface_composite, */ - NULL, /* _cairo_svg_surface_fill_rectangles, */ - NULL, /* _cairo_svg_surface_composite_trapezoids,*/ - _cairo_svg_surface_copy_page, - _cairo_svg_surface_show_page, - NULL, /* set_clip_region */ - _cairo_svg_surface_intersect_clip_path, - _cairo_svg_surface_get_extents, - NULL, /* _cairo_svg_surface_old_show_glyphs, */ - _cairo_svg_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark dirty rectangle */ - NULL, /* scaled font fini */ - NULL, /* scaled glyph fini */ - _cairo_svg_surface_paint, - _cairo_svg_surface_mask, - _cairo_svg_surface_stroke, - _cairo_svg_surface_fill, - _cairo_svg_surface_show_glyphs, - NULL, /* snapshot */ - NULL, /* is_similar */ - NULL, /* reset */ - _cairo_svg_surface_fill_stroke -}; - -static cairo_status_t -_cairo_svg_document_create (cairo_output_stream_t *output_stream, - double width, - double height, - cairo_svg_version_t version, - cairo_svg_document_t **document_out) -{ - cairo_svg_document_t *document; - cairo_status_t status, status_ignored; - - if (output_stream->status) - return output_stream->status; - - document = malloc (sizeof (cairo_svg_document_t)); - if (document == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - /* The use of defs for font glyphs imposes no per-subset limit. */ - document->font_subsets = _cairo_scaled_font_subsets_create_scaled (); - if (document->font_subsets == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_DOCUMENT; - } - - document->output_stream = output_stream; - document->refcount = 1; - document->owner = NULL; - document->finished = FALSE; - document->width = width; - document->height = height; - - document->surface_id = 0; - document->linear_pattern_id = 0; - document->radial_pattern_id = 0; - document->pattern_id = 0; - document->filter_id = 0; - document->clip_id = 0; - document->mask_id = 0; - - document->xml_node_defs = _cairo_memory_stream_create (); - status = _cairo_output_stream_get_status (document->xml_node_defs); - if (status) - goto CLEANUP_NODE_DEFS; - - document->xml_node_glyphs = _cairo_memory_stream_create (); - status = _cairo_output_stream_get_status (document->xml_node_glyphs); - if (status) - goto CLEANUP_NODE_GLYPHS; - - document->alpha_filter = FALSE; - - _cairo_array_init (&document->meta_snapshots, - sizeof (cairo_meta_snapshot_t)); - - document->svg_version = version; - - *document_out = document; - return CAIRO_STATUS_SUCCESS; - - CLEANUP_NODE_GLYPHS: - status_ignored = _cairo_output_stream_destroy (document->xml_node_glyphs); - CLEANUP_NODE_DEFS: - status_ignored = _cairo_output_stream_destroy (document->xml_node_defs); - _cairo_scaled_font_subsets_destroy (document->font_subsets); - CLEANUP_DOCUMENT: - free (document); - return status; -} - -static cairo_svg_document_t * -_cairo_svg_document_reference (cairo_svg_document_t *document) -{ - document->refcount++; - - return document; -} - -static unsigned int -_cairo_svg_document_allocate_mask_id (cairo_svg_document_t *document) -{ - return document->mask_id++; -} - -static cairo_status_t -_cairo_svg_document_destroy (cairo_svg_document_t *document) -{ - cairo_status_t status; - - document->refcount--; - if (document->refcount > 0) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_svg_document_finish (document); - - free (document); - - return status; -} - -static cairo_status_t -_cairo_svg_document_finish (cairo_svg_document_t *document) -{ - cairo_status_t status, status2; - cairo_output_stream_t *output = document->output_stream; - cairo_meta_snapshot_t *snapshot; - cairo_svg_page_t *page; - unsigned int i; - - if (document->finished) - return CAIRO_STATUS_SUCCESS; - - _cairo_output_stream_printf (output, - "\n" - "\n", - document->width, document->height, - document->width, document->height, - _cairo_svg_internal_version_strings [document->svg_version]); - - status = _cairo_svg_document_emit_font_subsets (document); - - if (_cairo_memory_stream_length (document->xml_node_glyphs) > 0 || - _cairo_memory_stream_length (document->xml_node_defs) > 0) { - _cairo_output_stream_printf (output, "\n"); - if (_cairo_memory_stream_length (document->xml_node_glyphs) > 0) { - _cairo_output_stream_printf (output, "\n"); - _cairo_memory_stream_copy (document->xml_node_glyphs, output); - _cairo_output_stream_printf (output, "\n"); - } - _cairo_memory_stream_copy (document->xml_node_defs, output); - _cairo_output_stream_printf (output, "\n"); - } - - if (document->owner != NULL) { - cairo_svg_surface_t *surface; - - surface = (cairo_svg_surface_t *) _cairo_paginated_surface_get_target (document->owner); - if (surface->xml_node != NULL && - _cairo_memory_stream_length (surface->xml_node) > 0) { - if (_cairo_svg_surface_store_page (surface) == NULL) { - if (status == CAIRO_STATUS_SUCCESS) - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } - - if (surface->page_set.num_elements > 1 && - _cairo_svg_version_has_page_set_support (document->svg_version)) { - _cairo_output_stream_printf (output, "\n"); - for (i = 0; i < surface->page_set.num_elements; i++) { - page = _cairo_array_index (&surface->page_set, i); - _cairo_output_stream_printf (output, "\n"); - _cairo_output_stream_printf (output, - "\n", - page->surface_id); - _cairo_memory_stream_copy (page->xml_node, output); - _cairo_output_stream_printf (output, "\n\n"); - } - _cairo_output_stream_printf (output, "\n"); - } else if (surface->page_set.num_elements > 0) { - page = _cairo_array_index (&surface->page_set, surface->page_set.num_elements - 1); - _cairo_output_stream_printf (output, - "\n", - page->surface_id); - _cairo_memory_stream_copy (page->xml_node, output); - _cairo_output_stream_printf (output, "\n"); - } - } - - _cairo_output_stream_printf (output, "\n"); - - status2 = _cairo_output_stream_destroy (document->xml_node_glyphs); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - status2 = _cairo_output_stream_destroy (document->xml_node_defs); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - status2 = _cairo_output_stream_destroy (output); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - for (i = 0; i < document->meta_snapshots.num_elements; i++) { - snapshot = _cairo_array_index (&document->meta_snapshots, i); - status2 = cairo_surface_status (&snapshot->meta->base); - cairo_surface_destroy (&snapshot->meta->base); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - _cairo_array_fini (&document->meta_snapshots); - - document->finished = TRUE; - - return status; -} - -static void -_cairo_svg_surface_set_paginated_mode (void *abstract_surface, - cairo_paginated_mode_t paginated_mode) -{ - cairo_svg_surface_t *surface = abstract_surface; - - surface->paginated_mode = paginated_mode; -} - -static const cairo_paginated_surface_backend_t cairo_svg_surface_paginated_backend = { - NULL /*_cairo_svg_surface_start_page*/, - _cairo_svg_surface_set_paginated_mode -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-svg-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-svg-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-svg-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-svg-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * Copyright © 2005-2006 Emmanuel Pacaud - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Kristian Høgsberg - * Emmanuel Pacaud - * Carl Worth - */ - -#ifndef CAIRO_SVG_SURFACE_PRIVATE_H -#define CAIRO_SVG_SURFACE_PRIVATE_H - -#include "cairo-svg.h" - -#include "cairo-surface-private.h" - -typedef struct cairo_svg_document cairo_svg_document_t; - -typedef struct cairo_svg_surface { - cairo_surface_t base; - - cairo_content_t content; - - unsigned int id; - - double width; - double height; - - cairo_svg_document_t *document; - - cairo_output_stream_t *xml_node; - cairo_array_t page_set; - - unsigned int clip_level; - unsigned int base_clip; - cairo_bool_t is_base_clip_emitted; - - cairo_paginated_mode_t paginated_mode; - - cairo_bool_t force_fallbacks; -} cairo_svg_surface_t; - -#endif /* CAIRO_SVG_SURFACE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-traps.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-traps.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-traps.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-traps.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,657 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* - * Copyright © 2002 Keith Packard - * Copyright © 2007 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith R. Packard - * Carl D. Worth - * - * 2002-07-15: Converted from XRenderCompositeDoublePoly to #cairo_trap_t. Carl D. Worth - */ - -#include "cairoint.h" - -/* private functions */ - -static cairo_status_t -_cairo_traps_grow (cairo_traps_t *traps); - -static void -_cairo_traps_add_trap (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom, - cairo_line_t *left, cairo_line_t *right); - -static int -_compare_point_fixed_by_y (const void *av, const void *bv); - -void -_cairo_traps_init (cairo_traps_t *traps) -{ - traps->status = CAIRO_STATUS_SUCCESS; - - traps->num_traps = 0; - - traps->traps_size = ARRAY_LENGTH (traps->traps_embedded); - traps->traps = traps->traps_embedded; - traps->extents.p1.x = traps->extents.p1.y = INT32_MAX; - traps->extents.p2.x = traps->extents.p2.y = INT32_MIN; - - traps->has_limits = FALSE; -} - -void -_cairo_traps_limit (cairo_traps_t *traps, - cairo_box_t *limits) -{ - traps->has_limits = TRUE; - - traps->limits = *limits; -} - -cairo_bool_t -_cairo_traps_get_limit (cairo_traps_t *traps, - cairo_box_t *limits) -{ - *limits = traps->limits; - return traps->has_limits; -} - -void -_cairo_traps_fini (cairo_traps_t *traps) -{ - if (traps->traps && traps->traps != traps->traps_embedded) - free (traps->traps); - - traps->traps = NULL; - traps->traps_size = 0; - traps->num_traps = 0; -} - -/** - * _cairo_traps_init_box: - * @traps: a #cairo_traps_t - * @box: a box that will be converted to a single trapezoid - * to store in @traps. - * - * Initializes a #cairo_traps_t to contain a single rectangular - * trapezoid. - **/ -cairo_status_t -_cairo_traps_init_box (cairo_traps_t *traps, - cairo_box_t *box) -{ - _cairo_traps_init (traps); - - assert (traps->traps_size >= 1); - - traps->num_traps = 1; - - traps->traps[0].top = box->p1.y; - traps->traps[0].bottom = box->p2.y; - traps->traps[0].left.p1 = box->p1; - traps->traps[0].left.p2.x = box->p1.x; - traps->traps[0].left.p2.y = box->p2.y; - traps->traps[0].right.p1.x = box->p2.x; - traps->traps[0].right.p1.y = box->p1.y; - traps->traps[0].right.p2 = box->p2; - - traps->extents = *box; - - return traps->status; -} - -cairo_status_t -_cairo_traps_status (cairo_traps_t *traps) -{ - return traps->status; -} - -static void -_cairo_traps_add_trap (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom, - cairo_line_t *left, cairo_line_t *right) -{ - cairo_trapezoid_t *trap; - - if (traps->status) - return; - - /* Note: With the goofy trapezoid specification, (where an - * arbitrary two points on the lines can specified for the left - * and right edges), these limit checks would not work in - * general. For example, one can imagine a trapezoid entirely - * within the limits, but with two points used to specify the left - * edge entirely to the right of the limits. Fortunately, for our - * purposes, cairo will never generate such a crazy - * trapezoid. Instead, cairo always uses for its points the - * extreme positions of the edge that are visible on at least some - * trapezoid. With this constraint, it's impossible for both - * points to be outside the limits while the relevant edge is - * entirely inside the limits. - */ - if (traps->has_limits) { - /* Trivially reject if trapezoid is entirely to the right or - * to the left of the limits. */ - if (left->p1.x >= traps->limits.p2.x && - left->p2.x >= traps->limits.p2.x) - { - return; - } - - if (right->p1.x <= traps->limits.p1.x && - right->p2.x <= traps->limits.p1.x) - { - return; - } - - /* Otherwise, clip the trapezoid to the limits. We only clip - * where an edge is entirely outside the limits. If we wanted - * to be more clever, we could handle cases where a trapezoid - * edge intersects the edge of the limits, but that would - * require slicing this trapezoid into multiple trapezoids, - * and I'm not sure the effort would be worth it. */ - if (top < traps->limits.p1.y) - top = traps->limits.p1.y; - - if (bottom > traps->limits.p2.y) - bottom = traps->limits.p2.y; - - if (left->p1.x < traps->limits.p1.x && - left->p2.x < traps->limits.p1.x) - { - left->p1.x = traps->limits.p1.x; - left->p2.x = traps->limits.p1.x; - } - - if (right->p1.x > traps->limits.p2.x && - right->p2.x > traps->limits.p2.x) - { - right->p1.x = traps->limits.p2.x; - right->p2.x = traps->limits.p2.x; - } - } - - if (top >= bottom) { - return; - } - - if (traps->num_traps >= traps->traps_size) { - traps->status = _cairo_traps_grow (traps); - if (traps->status) - return; - } - - trap = &traps->traps[traps->num_traps]; - trap->top = top; - trap->bottom = bottom; - trap->left = *left; - trap->right = *right; - - if (top < traps->extents.p1.y) - traps->extents.p1.y = top; - if (bottom > traps->extents.p2.y) - traps->extents.p2.y = bottom; - /* - * This isn't generally accurate, but it is close enough for - * this purpose. Assuming that the left and right segments always - * contain the trapezoid vertical extents, these compares will - * yield a containing box. Assuming that the points all come from - * the same figure which will eventually be completely drawn, then - * the compares will yield the correct overall extents - */ - if (left->p1.x < traps->extents.p1.x) - traps->extents.p1.x = left->p1.x; - if (left->p2.x < traps->extents.p1.x) - traps->extents.p1.x = left->p2.x; - - if (right->p1.x > traps->extents.p2.x) - traps->extents.p2.x = right->p1.x; - if (right->p2.x > traps->extents.p2.x) - traps->extents.p2.x = right->p2.x; - - traps->num_traps++; -} - -void -_cairo_traps_add_trap_from_points (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom, - cairo_point_t left_p1, cairo_point_t left_p2, - cairo_point_t right_p1, cairo_point_t right_p2) -{ - cairo_line_t left; - cairo_line_t right; - - if (traps->status) - return; - - left.p1 = left_p1; - left.p2 = left_p2; - - right.p1 = right_p1; - right.p2 = right_p2; - - _cairo_traps_add_trap (traps, top, bottom, &left, &right); -} - -/* make room for at least one more trap */ -static cairo_status_t -_cairo_traps_grow (cairo_traps_t *traps) -{ - cairo_trapezoid_t *new_traps; - int new_size = 2 * MAX (traps->traps_size, 16); - - if (traps->traps == traps->traps_embedded) { - new_traps = _cairo_malloc_ab (new_size, sizeof (cairo_trapezoid_t)); - if (new_traps) - memcpy (new_traps, traps->traps, sizeof (traps->traps_embedded)); - } else { - new_traps = _cairo_realloc_ab (traps->traps, - new_size, sizeof (cairo_trapezoid_t)); - } - - if (new_traps == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - traps->traps = new_traps; - traps->traps_size = new_size; - - return CAIRO_STATUS_SUCCESS; -} - -static int -_compare_point_fixed_by_y (const void *av, const void *bv) -{ - const cairo_point_t *a = av, *b = bv; - - int ret = a->y - b->y; - if (ret == 0) { - ret = a->x - b->x; - } - return ret; -} - -void -_cairo_traps_translate (cairo_traps_t *traps, int x, int y) -{ - cairo_fixed_t xoff, yoff; - cairo_trapezoid_t *t; - int i; - - /* Ugh. The cairo_composite/(Render) interface doesn't allow - an offset for the trapezoids. Need to manually shift all - the coordinates to align with the offset origin of the - intermediate surface. */ - - xoff = _cairo_fixed_from_int (x); - yoff = _cairo_fixed_from_int (y); - - for (i = 0, t = traps->traps; i < traps->num_traps; i++, t++) { - t->top += yoff; - t->bottom += yoff; - t->left.p1.x += xoff; - t->left.p1.y += yoff; - t->left.p2.x += xoff; - t->left.p2.y += yoff; - t->right.p1.x += xoff; - t->right.p1.y += yoff; - t->right.p2.x += xoff; - t->right.p2.y += yoff; - } -} - -void -_cairo_trapezoid_array_translate_and_scale (cairo_trapezoid_t *offset_traps, - cairo_trapezoid_t *src_traps, - int num_traps, - double tx, double ty, - double sx, double sy) -{ - int i; - cairo_fixed_t xoff = _cairo_fixed_from_double (tx); - cairo_fixed_t yoff = _cairo_fixed_from_double (ty); - - if (sx == 1.0 && sy == 1.0) { - for (i = 0; i < num_traps; i++) { - offset_traps[i].top = src_traps[i].top + yoff; - offset_traps[i].bottom = src_traps[i].bottom + yoff; - offset_traps[i].left.p1.x = src_traps[i].left.p1.x + xoff; - offset_traps[i].left.p1.y = src_traps[i].left.p1.y + yoff; - offset_traps[i].left.p2.x = src_traps[i].left.p2.x + xoff; - offset_traps[i].left.p2.y = src_traps[i].left.p2.y + yoff; - offset_traps[i].right.p1.x = src_traps[i].right.p1.x + xoff; - offset_traps[i].right.p1.y = src_traps[i].right.p1.y + yoff; - offset_traps[i].right.p2.x = src_traps[i].right.p2.x + xoff; - offset_traps[i].right.p2.y = src_traps[i].right.p2.y + yoff; - } - } else { - cairo_fixed_t xsc = _cairo_fixed_from_double (sx); - cairo_fixed_t ysc = _cairo_fixed_from_double (sy); - - for (i = 0; i < num_traps; i++) { - offset_traps[i].top = _cairo_fixed_mul (src_traps[i].top + yoff, ysc); - offset_traps[i].bottom = _cairo_fixed_mul (src_traps[i].bottom + yoff, ysc); - offset_traps[i].left.p1.x = _cairo_fixed_mul (src_traps[i].left.p1.x + xoff, xsc); - offset_traps[i].left.p1.y = _cairo_fixed_mul (src_traps[i].left.p1.y + yoff, ysc); - offset_traps[i].left.p2.x = _cairo_fixed_mul (src_traps[i].left.p2.x + xoff, xsc); - offset_traps[i].left.p2.y = _cairo_fixed_mul (src_traps[i].left.p2.y + yoff, ysc); - offset_traps[i].right.p1.x = _cairo_fixed_mul (src_traps[i].right.p1.x + xoff, xsc); - offset_traps[i].right.p1.y = _cairo_fixed_mul (src_traps[i].right.p1.y + yoff, ysc); - offset_traps[i].right.p2.x = _cairo_fixed_mul (src_traps[i].right.p2.x + xoff, xsc); - offset_traps[i].right.p2.y = _cairo_fixed_mul (src_traps[i].right.p2.y + yoff, ysc); - } - } -} - -/* A triangle is simply a degenerate case of a convex - * quadrilateral. We would not benefit from having any distinct - * implementation of triangle vs. quadrilateral tessellation here. */ -cairo_status_t -_cairo_traps_tessellate_triangle (cairo_traps_t *traps, cairo_point_t t[3]) -{ - cairo_point_t quad[4]; - - quad[0] = t[0]; - quad[1] = t[0]; - quad[2] = t[1]; - quad[3] = t[2]; - - return _cairo_traps_tessellate_convex_quad (traps, quad); -} - -cairo_status_t -_cairo_traps_tessellate_convex_quad (cairo_traps_t *traps, cairo_point_t q[4]) -{ - int a, b, c, d; - int i; - cairo_slope_t ab, ad; - cairo_bool_t b_left_of_d; - - /* Choose a as a point with minimal y */ - a = 0; - for (i = 1; i < 4; i++) - if (_compare_point_fixed_by_y (&q[i], &q[a]) < 0) - a = i; - - /* b and d are adjacent to a, while c is opposite */ - b = (a + 1) % 4; - c = (a + 2) % 4; - d = (a + 3) % 4; - - /* Choose between b and d so that b.y is less than d.y */ - if (_compare_point_fixed_by_y (&q[d], &q[b]) < 0) { - b = (a + 3) % 4; - d = (a + 1) % 4; - } - - /* Without freedom left to choose anything else, we have four - * cases to tessellate. - * - * First, we have to determine the Y-axis sort of the four - * vertices, (either abcd or abdc). After that we need to detemine - * which edges will be "left" and which will be "right" in the - * resulting trapezoids. This can be determined by computing a - * slope comparison of ab and ad to determine if b is left of d or - * not. - * - * Note that "left of" here is in the sense of which edges should - * be the left vs. right edges of the trapezoid. In particular, b - * left of d does *not* mean that b.x is less than d.x. - * - * This should hopefully be made clear in the lame ASCII art - * below. Since the same slope comparison is used in all cases, we - * compute it before testing for the Y-value sort. */ - - /* Note: If a == b then the ab slope doesn't give us any - * information. In that case, we can replace it with the ac (or - * equivalenly the bc) slope which gives us exactly the same - * information we need. At worst the names of the identifiers ab - * and b_left_of_d are inaccurate in this case, (would be ac, and - * c_left_of_d). */ - if (q[a].x == q[b].x && q[a].y == q[b].y) - _cairo_slope_init (&ab, &q[a], &q[c]); - else - _cairo_slope_init (&ab, &q[a], &q[b]); - - _cairo_slope_init (&ad, &q[a], &q[d]); - - b_left_of_d = (_cairo_slope_compare (&ab, &ad) > 0); - - if (q[c].y <= q[d].y) { - if (b_left_of_d) { - /* Y-sort is abcd and b is left of d, (slope(ab) > slope (ad)) - * - * top bot left right - * _a a a - * / / /| |\ a.y b.y ab ad - * b / b | b \ - * / / | | \ \ b.y c.y bc ad - * c / c | c \ - * | / \| \ \ c.y d.y cd ad - * d d d - */ - _cairo_traps_add_trap_from_points (traps, - q[a].y, q[b].y, - q[a], q[b], q[a], q[d]); - _cairo_traps_add_trap_from_points (traps, - q[b].y, q[c].y, - q[b], q[c], q[a], q[d]); - _cairo_traps_add_trap_from_points (traps, - q[c].y, q[d].y, - q[c], q[d], q[a], q[d]); - } else { - /* Y-sort is abcd and b is right of d, (slope(ab) <= slope (ad)) - * - * a a a_ - * /| |\ \ \ a.y b.y ad ab - * / b | b \ b - * / / | | \ \ b.y c.y ad bc - * / c | c \ c - * / / |/ \ | c.y d.y ad cd - * d d d - */ - _cairo_traps_add_trap_from_points (traps, - q[a].y, q[b].y, - q[a], q[d], q[a], q[b]); - _cairo_traps_add_trap_from_points (traps, - q[b].y, q[c].y, - q[a], q[d], q[b], q[c]); - _cairo_traps_add_trap_from_points (traps, - q[c].y, q[d].y, - q[a], q[d], q[c], q[d]); - } - } else { - if (b_left_of_d) { - /* Y-sort is abdc and b is left of d, (slope (ab) > slope (ad)) - * - * a a a - * // / \ |\ a.y b.y ab ad - * /b/ b \ b \ - * / / \ \ \ \ b.y d.y bc ad - * /d/ \ d \ d - * // \ / \| d.y c.y bc dc - * c c c - */ - _cairo_traps_add_trap_from_points (traps, - q[a].y, q[b].y, - q[a], q[b], q[a], q[d]); - _cairo_traps_add_trap_from_points (traps, - q[b].y, q[d].y, - q[b], q[c], q[a], q[d]); - _cairo_traps_add_trap_from_points (traps, - q[d].y, q[c].y, - q[b], q[c], q[d], q[c]); - } else { - /* Y-sort is abdc and b is right of d, (slope (ab) <= slope (ad)) - * - * a a a - * /| / \ \\ a.y b.y ad ab - * / b / b \b\ - * / / / / \ \ b.y d.y ad bc - * d / d / \d\ - * |/ \ / \\ d.y c.y dc bc - * c c c - */ - _cairo_traps_add_trap_from_points (traps, - q[a].y, q[b].y, - q[a], q[d], q[a], q[b]); - _cairo_traps_add_trap_from_points (traps, - q[b].y, q[d].y, - q[a], q[d], q[b], q[c]); - _cairo_traps_add_trap_from_points (traps, - q[d].y, q[c].y, - q[d], q[c], q[b], q[c]); - } - } - - return traps->status; -} - -static cairo_bool_t -_cairo_trap_contains (cairo_trapezoid_t *t, cairo_point_t *pt) -{ - cairo_slope_t slope_left, slope_pt, slope_right; - - if (t->top > pt->y) - return FALSE; - if (t->bottom < pt->y) - return FALSE; - - _cairo_slope_init (&slope_left, &t->left.p1, &t->left.p2); - _cairo_slope_init (&slope_pt, &t->left.p1, pt); - - if (_cairo_slope_compare (&slope_left, &slope_pt) < 0) - return FALSE; - - _cairo_slope_init (&slope_right, &t->right.p1, &t->right.p2); - _cairo_slope_init (&slope_pt, &t->right.p1, pt); - - if (_cairo_slope_compare (&slope_pt, &slope_right) < 0) - return FALSE; - - return TRUE; -} - -cairo_bool_t -_cairo_traps_contain (cairo_traps_t *traps, double x, double y) -{ - int i; - cairo_point_t point; - - point.x = _cairo_fixed_from_double (x); - point.y = _cairo_fixed_from_double (y); - - for (i = 0; i < traps->num_traps; i++) { - if (_cairo_trap_contains (&traps->traps[i], &point)) - return TRUE; - } - - return FALSE; -} - -void -_cairo_traps_extents (cairo_traps_t *traps, cairo_box_t *extents) -{ - if (traps->num_traps == 0) { - extents->p1.x = extents->p1.y = _cairo_fixed_from_int (0); - extents->p2.x = extents->p2.y = _cairo_fixed_from_int (0); - } else - *extents = traps->extents; -} - -/** - * _cairo_traps_extract_region: - * @traps: a #cairo_traps_t - * @region: a #cairo_region_t - * - * Determines if a set of trapezoids are exactly representable as a - * cairo region. If so, the passed-in region is initialized to - * the area representing the given traps. It should be finalized - * with _cairo_region_fini(). If not, %CAIRO_INT_STATUS_UNSUPPORTED - * is returned. - * - * Return value: %CAIRO_STATUS_SUCCESS, %CAIRO_INT_STATUS_UNSUPPORTED - * or %CAIRO_STATUS_NO_MEMORY - **/ -cairo_int_status_t -_cairo_traps_extract_region (cairo_traps_t *traps, - cairo_region_t *region) -{ - cairo_box_int_t stack_boxes[CAIRO_STACK_ARRAY_LENGTH (cairo_box_int_t)]; - cairo_box_int_t *boxes = stack_boxes; - int i, box_count; - cairo_int_status_t status; - - for (i = 0; i < traps->num_traps; i++) - if (!(traps->traps[i].left.p1.x == traps->traps[i].left.p2.x - && traps->traps[i].right.p1.x == traps->traps[i].right.p2.x - && _cairo_fixed_is_integer(traps->traps[i].top) - && _cairo_fixed_is_integer(traps->traps[i].bottom) - && _cairo_fixed_is_integer(traps->traps[i].left.p1.x) - && _cairo_fixed_is_integer(traps->traps[i].right.p1.x))) { - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - if (traps->num_traps > ARRAY_LENGTH(stack_boxes)) { - boxes = _cairo_malloc_ab (traps->num_traps, sizeof(cairo_box_int_t)); - - if (boxes == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - box_count = 0; - - for (i = 0; i < traps->num_traps; i++) { - int x1 = _cairo_fixed_integer_part(traps->traps[i].left.p1.x); - int y1 = _cairo_fixed_integer_part(traps->traps[i].top); - int x2 = _cairo_fixed_integer_part(traps->traps[i].right.p1.x); - int y2 = _cairo_fixed_integer_part(traps->traps[i].bottom); - - /* XXX: Sometimes we get degenerate trapezoids from the tesellator; - * skip these. - */ - if (x1 == x2 || y1 == y2) - continue; - - boxes[box_count].p1.x = x1; - boxes[box_count].p1.y = y1; - boxes[box_count].p2.x = x2; - boxes[box_count].p2.y = y2; - - box_count++; - } - - status = _cairo_region_init_boxes (region, boxes, box_count); - - if (boxes != stack_boxes) - free (boxes); - - if (status) - _cairo_region_fini (region); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-truetype-subset.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-truetype-subset.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-truetype-subset.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-truetype-subset.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1320 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Kristian Høgsberg - * Adrian Johnson - */ - -/* - * Useful links: - * http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6.html - * http://www.microsoft.com/typography/specs/default.htm - */ - -#define _BSD_SOURCE /* for snprintf(), strdup() */ -#include "cairoint.h" - -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-truetype-subset-private.h" - - -typedef struct subset_glyph subset_glyph_t; -struct subset_glyph { - int parent_index; - unsigned long location; -}; - -typedef struct _cairo_truetype_font cairo_truetype_font_t; - -typedef struct table table_t; -struct table { - unsigned long tag; - cairo_status_t (*write) (cairo_truetype_font_t *font, unsigned long tag); - int pos; /* position in the font directory */ -}; - -struct _cairo_truetype_font { - - cairo_scaled_font_subset_t *scaled_font_subset; - - table_t truetype_tables[10]; - int num_tables; - - struct { - char *base_font; - unsigned int num_glyphs; - int *widths; - long x_min, y_min, x_max, y_max; - long ascent, descent; - int units_per_em; - } base; - - subset_glyph_t *glyphs; - const cairo_scaled_font_backend_t *backend; - int num_glyphs_in_face; - int checksum_index; - cairo_array_t output; - cairo_array_t string_offsets; - unsigned long last_offset; - unsigned long last_boundary; - int *parent_to_subset; - cairo_status_t status; - -}; - -static cairo_status_t -cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, - unsigned short glyph, - unsigned short *out); - -#define SFNT_VERSION 0x00010000 -#define SFNT_STRING_MAX_LENGTH 65535 - -static cairo_status_t -_cairo_truetype_font_set_error (cairo_truetype_font_t *font, - cairo_status_t status) -{ - if (status == CAIRO_STATUS_SUCCESS || status == CAIRO_INT_STATUS_UNSUPPORTED) - return status; - - _cairo_status_set_error (&font->status, status); - - return _cairo_error (status); -} - -static cairo_status_t -_cairo_truetype_font_create (cairo_scaled_font_subset_t *scaled_font_subset, - cairo_truetype_font_t **font_return) -{ - cairo_status_t status; - cairo_truetype_font_t *font; - const cairo_scaled_font_backend_t *backend; - tt_head_t head; - tt_hhea_t hhea; - tt_maxp_t maxp; - tt_name_t *name; - tt_name_record_t *record; - unsigned long size; - int i, j; - - backend = scaled_font_subset->scaled_font->backend; - if (!backend->load_truetype_table) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* FIXME: We should either support subsetting vertical fonts, or fail on - * vertical. Currently font_options_t doesn't have vertical flag, but - * it should be added in the future. For now, the freetype backend - * returns UNSUPPORTED in load_truetype_table if the font is vertical. - * - * if (cairo_font_options_get_vertical_layout (scaled_font_subset->scaled_font)) - * return CAIRO_INT_STATUS_UNSUPPORTED; - */ - - size = sizeof (tt_head_t); - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_head, 0, - (unsigned char *) &head, - &size); - if (status) - return status; - - size = sizeof (tt_maxp_t); - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_maxp, 0, - (unsigned char *) &maxp, - &size); - if (status) - return status; - - size = sizeof (tt_hhea_t); - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_hhea, 0, - (unsigned char *) &hhea, - &size); - if (status) - return status; - - size = 0; - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_name, 0, - NULL, - &size); - if (status) - return status; - - name = malloc(size); - if (name == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = backend->load_truetype_table (scaled_font_subset->scaled_font, - TT_TAG_name, 0, - (unsigned char *) name, - &size); - if (status) - goto fail0; - - font = malloc (sizeof (cairo_truetype_font_t)); - if (font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail0; - } - - font->backend = backend; - font->num_glyphs_in_face = be16_to_cpu (maxp.num_glyphs); - font->scaled_font_subset = scaled_font_subset; - - font->last_offset = 0; - font->last_boundary = 0; - _cairo_array_init (&font->output, sizeof (char)); - status = _cairo_array_grow_by (&font->output, 4096); - if (status) - goto fail1; - - font->glyphs = calloc (font->num_glyphs_in_face + 1, sizeof (subset_glyph_t)); - if (font->glyphs == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - font->parent_to_subset = calloc (font->num_glyphs_in_face, sizeof (int)); - if (font->parent_to_subset == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - - font->base.num_glyphs = 0; - font->base.x_min = (int16_t) be16_to_cpu (head.x_min); - font->base.y_min = (int16_t) be16_to_cpu (head.y_min); - font->base.x_max = (int16_t) be16_to_cpu (head.x_max); - font->base.y_max = (int16_t) be16_to_cpu (head.y_max); - font->base.ascent = (int16_t) be16_to_cpu (hhea.ascender); - font->base.descent = (int16_t) be16_to_cpu (hhea.descender); - font->base.units_per_em = (int16_t) be16_to_cpu (head.units_per_em); - if (font->base.units_per_em == 0) - font->base.units_per_em = 2048; - - /* Extract the font name from the name table. At present this - * just looks for the Mac platform/Roman encoded font name. It - * should be extended to use any suitable font name in the - * name table. If the mac/roman font name is not found a - * CairoFont-x-y name is created. - */ - font->base.base_font = NULL; - for (i = 0; i < be16_to_cpu(name->num_records); i++) { - record = &(name->records[i]); - if ((be16_to_cpu (record->platform) == 1) && - (be16_to_cpu (record->encoding) == 0) && - (be16_to_cpu (record->name) == 4)) { - font->base.base_font = malloc (be16_to_cpu(record->length) + 1); - if (font->base.base_font) { - strncpy(font->base.base_font, - ((char*)name) + be16_to_cpu (name->strings_offset) + be16_to_cpu (record->offset), - be16_to_cpu (record->length)); - font->base.base_font[be16_to_cpu (record->length)] = 0; - } - break; - } - } - - free (name); - name = NULL; - - if (font->base.base_font == NULL) { - font->base.base_font = malloc (30); - if (font->base.base_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - - snprintf(font->base.base_font, 30, "CairoFont-%u-%u", - scaled_font_subset->font_id, - scaled_font_subset->subset_id); - } - - for (i = 0, j = 0; font->base.base_font[j]; j++) { - if (font->base.base_font[j] == ' ') - continue; - font->base.base_font[i++] = font->base.base_font[j]; - } - font->base.base_font[i] = '\0'; - - font->base.widths = calloc (font->num_glyphs_in_face, sizeof (int)); - if (font->base.widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail4; - } - - _cairo_array_init (&font->string_offsets, sizeof (unsigned long)); - status = _cairo_array_grow_by (&font->string_offsets, 10); - if (status) - goto fail5; - - font->status = CAIRO_STATUS_SUCCESS; - - *font_return = font; - - return CAIRO_STATUS_SUCCESS; - - fail5: - _cairo_array_fini (&font->string_offsets); - free (font->base.widths); - fail4: - free (font->base.base_font); - fail3: - free (font->parent_to_subset); - fail2: - free (font->glyphs); - fail1: - _cairo_array_fini (&font->output); - free (font); - fail0: - if (name) - free (name); - - return status; -} - -static void -cairo_truetype_font_destroy (cairo_truetype_font_t *font) -{ - _cairo_array_fini (&font->string_offsets); - free (font->base.widths); - free (font->base.base_font); - free (font->parent_to_subset); - free (font->glyphs); - _cairo_array_fini (&font->output); - free (font); -} - -static cairo_status_t -cairo_truetype_font_allocate_write_buffer (cairo_truetype_font_t *font, - size_t length, - unsigned char **buffer) -{ - cairo_status_t status; - - if (font->status) - return font->status; - - status = _cairo_array_allocate (&font->output, length, (void **) buffer); - if (status) - return _cairo_truetype_font_set_error (font, status); - - return CAIRO_STATUS_SUCCESS; -} - -static void -cairo_truetype_font_write (cairo_truetype_font_t *font, - const void *data, - size_t length) -{ - cairo_status_t status; - - if (font->status) - return; - - status = _cairo_array_append_multiple (&font->output, data, length); - if (status) - status = _cairo_truetype_font_set_error (font, status); -} - -static void -cairo_truetype_font_write_be16 (cairo_truetype_font_t *font, - uint16_t value) -{ - uint16_t be16_value; - - if (font->status) - return; - - be16_value = cpu_to_be16 (value); - cairo_truetype_font_write (font, &be16_value, sizeof be16_value); -} - -static void -cairo_truetype_font_write_be32 (cairo_truetype_font_t *font, - uint32_t value) -{ - uint32_t be32_value; - - if (font->status) - return; - - be32_value = cpu_to_be32 (value); - cairo_truetype_font_write (font, &be32_value, sizeof be32_value); -} - -static cairo_status_t -cairo_truetype_font_align_output (cairo_truetype_font_t *font, - unsigned long *aligned) -{ - int length, pad; - unsigned char *padding; - - length = _cairo_array_num_elements (&font->output); - *aligned = (length + 3) & ~3; - pad = *aligned - length; - - if (pad) { - cairo_status_t status; - - status = cairo_truetype_font_allocate_write_buffer (font, pad, - &padding); - if (status) - return status; - - memset (padding, 0, pad); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_check_boundary (cairo_truetype_font_t *font, - unsigned long boundary) -{ - cairo_status_t status; - - if (font->status) - return font->status; - - if (boundary - font->last_offset > SFNT_STRING_MAX_LENGTH) - { - status = _cairo_array_append (&font->string_offsets, - &font->last_boundary); - if (status) - return _cairo_truetype_font_set_error (font, status); - - font->last_offset = font->last_boundary; - } - font->last_boundary = boundary; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_write_cmap_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - unsigned int i; - - cairo_truetype_font_write_be16 (font, 0); /* Table version */ - cairo_truetype_font_write_be16 (font, 2); /* Num tables */ - - cairo_truetype_font_write_be16 (font, 3); /* Platform */ - cairo_truetype_font_write_be16 (font, 0); /* Encoding */ - cairo_truetype_font_write_be32 (font, 20); /* Offset to start of table */ - - cairo_truetype_font_write_be16 (font, 1); /* Platform */ - cairo_truetype_font_write_be16 (font, 0); /* Encoding */ - cairo_truetype_font_write_be32 (font, 52); /* Offset to start of table */ - - /* Output a format 4 encoding table. */ - - cairo_truetype_font_write_be16 (font, 4); /* Format */ - cairo_truetype_font_write_be16 (font, 32); /* Length */ - cairo_truetype_font_write_be16 (font, 0); /* Version */ - cairo_truetype_font_write_be16 (font, 4); /* 2*segcount */ - cairo_truetype_font_write_be16 (font, 4); /* searchrange */ - cairo_truetype_font_write_be16 (font, 1); /* entry selector */ - cairo_truetype_font_write_be16 (font, 0); /* rangeshift */ - cairo_truetype_font_write_be16 (font, 0xf000 + font->base.num_glyphs - 1); /* end count[0] */ - cairo_truetype_font_write_be16 (font, 0xffff); /* end count[1] */ - cairo_truetype_font_write_be16 (font, 0); /* reserved */ - cairo_truetype_font_write_be16 (font, 0xf000); /* startCode[0] */ - cairo_truetype_font_write_be16 (font, 0xffff); /* startCode[1] */ - cairo_truetype_font_write_be16 (font, 0x1000); /* delta[0] */ - cairo_truetype_font_write_be16 (font, 1); /* delta[1] */ - cairo_truetype_font_write_be16 (font, 0); /* rangeOffset[0] */ - cairo_truetype_font_write_be16 (font, 0); /* rangeOffset[1] */ - - /* Output a format 6 encoding table. */ - - cairo_truetype_font_write_be16 (font, 6); - cairo_truetype_font_write_be16 (font, 10 + 2 * font->base.num_glyphs); - cairo_truetype_font_write_be16 (font, 0); - cairo_truetype_font_write_be16 (font, 0); /* First character */ - cairo_truetype_font_write_be16 (font, font->base.num_glyphs); - for (i = 0; i < font->base.num_glyphs; i++) - cairo_truetype_font_write_be16 (font, i); - - return font->status; -} - -static cairo_status_t -cairo_truetype_font_write_generic_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - cairo_status_t status; - unsigned char *buffer; - unsigned long size; - - if (font->status) - return font->status; - - size = 0; - status = font->backend->load_truetype_table(font->scaled_font_subset->scaled_font, - tag, 0, NULL, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - status = cairo_truetype_font_allocate_write_buffer (font, size, &buffer); - if (status) - return _cairo_truetype_font_set_error (font, status); - - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - tag, 0, buffer, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_remap_composite_glyph (cairo_truetype_font_t *font, - unsigned char *buffer, - unsigned long size) -{ - tt_glyph_data_t *glyph_data; - tt_composite_glyph_t *composite_glyph; - int num_args; - int has_more_components; - unsigned short flags; - unsigned short index; - cairo_status_t status; - unsigned char *end = buffer + size; - - if (font->status) - return font->status; - - glyph_data = (tt_glyph_data_t *) buffer; - if ((unsigned char *)(&glyph_data->data) >= end) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if ((int16_t)be16_to_cpu (glyph_data->num_contours) >= 0) - return CAIRO_STATUS_SUCCESS; - - composite_glyph = &glyph_data->glyph; - do { - if ((unsigned char *)(&composite_glyph->args[1]) >= end) - return CAIRO_INT_STATUS_UNSUPPORTED; - - flags = be16_to_cpu (composite_glyph->flags); - has_more_components = flags & TT_MORE_COMPONENTS; - status = cairo_truetype_font_use_glyph (font, be16_to_cpu (composite_glyph->index), &index); - if (status) - return status; - - composite_glyph->index = cpu_to_be16 (index); - num_args = 1; - if (flags & TT_ARG_1_AND_2_ARE_WORDS) - num_args += 1; - if (flags & TT_WE_HAVE_A_SCALE) - num_args += 1; - else if (flags & TT_WE_HAVE_AN_X_AND_Y_SCALE) - num_args += 2; - else if (flags & TT_WE_HAVE_A_TWO_BY_TWO) - num_args += 3; - composite_glyph = (tt_composite_glyph_t *) &(composite_glyph->args[num_args]); - } while (has_more_components); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_write_glyf_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - unsigned long start_offset, index, size, next; - tt_head_t header; - unsigned long begin, end; - unsigned char *buffer; - unsigned int i; - union { - unsigned char *bytes; - uint16_t *short_offsets; - uint32_t *long_offsets; - } u; - cairo_status_t status; - - if (font->status) - return font->status; - - size = sizeof (tt_head_t); - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_head, 0, - (unsigned char*) &header, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - if (be16_to_cpu (header.index_to_loc_format) == 0) - size = sizeof (int16_t) * (font->num_glyphs_in_face + 1); - else - size = sizeof (int32_t) * (font->num_glyphs_in_face + 1); - - u.bytes = malloc (size); - if (u.bytes == NULL) - return _cairo_truetype_font_set_error (font, CAIRO_STATUS_NO_MEMORY); - - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_loca, 0, u.bytes, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - start_offset = _cairo_array_num_elements (&font->output); - for (i = 0; i < font->base.num_glyphs; i++) { - index = font->glyphs[i].parent_index; - if (be16_to_cpu (header.index_to_loc_format) == 0) { - begin = be16_to_cpu (u.short_offsets[index]) * 2; - end = be16_to_cpu (u.short_offsets[index + 1]) * 2; - } - else { - begin = be32_to_cpu (u.long_offsets[index]); - end = be32_to_cpu (u.long_offsets[index + 1]); - } - - /* quick sanity check... */ - if (end < begin) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto FAIL; - } - - size = end - begin; - status = cairo_truetype_font_align_output (font, &next); - if (status) - goto FAIL; - - status = cairo_truetype_font_check_boundary (font, next); - if (status) - goto FAIL; - - font->glyphs[i].location = next - start_offset; - - status = cairo_truetype_font_allocate_write_buffer (font, size, &buffer); - if (status) - goto FAIL; - - if (size != 0) { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_glyf, begin, buffer, &size); - if (status) - goto FAIL; - - status = cairo_truetype_font_remap_composite_glyph (font, buffer, size); - if (status) - goto FAIL; - } - } - - status = cairo_truetype_font_align_output (font, &next); - if (status) - goto FAIL; - - font->glyphs[i].location = next - start_offset; - - status = font->status; -FAIL: - free (u.bytes); - - return _cairo_truetype_font_set_error (font, status); -} - -static cairo_status_t -cairo_truetype_font_write_head_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - unsigned char *buffer; - unsigned long size; - cairo_status_t status; - - if (font->status) - return font->status; - - size = 0; - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - tag, 0, NULL, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - font->checksum_index = _cairo_array_num_elements (&font->output) + 8; - status = cairo_truetype_font_allocate_write_buffer (font, size, &buffer); - if (status) - return _cairo_truetype_font_set_error (font, status); - - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - tag, 0, buffer, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - /* set checkSumAdjustment to 0 for table checksum calcualtion */ - *(uint32_t *)(buffer + 8) = 0; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_write_hhea_table (cairo_truetype_font_t *font, unsigned long tag) -{ - tt_hhea_t *hhea; - unsigned long size; - cairo_status_t status; - - if (font->status) - return font->status; - - size = sizeof (tt_hhea_t); - status = cairo_truetype_font_allocate_write_buffer (font, size, (unsigned char **) &hhea); - if (status) - return _cairo_truetype_font_set_error (font, status); - - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - tag, 0, (unsigned char *) hhea, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - hhea->num_hmetrics = cpu_to_be16 ((uint16_t)(font->base.num_glyphs)); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_write_hmtx_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - unsigned long size; - unsigned long long_entry_size; - unsigned long short_entry_size; - short *p; - unsigned int i; - tt_hhea_t hhea; - int num_hmetrics; - cairo_status_t status; - - if (font->status) - return font->status; - - size = sizeof (tt_hhea_t); - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hhea, 0, - (unsigned char*) &hhea, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - num_hmetrics = be16_to_cpu(hhea.num_hmetrics); - - for (i = 0; i < font->base.num_glyphs; i++) { - long_entry_size = 2 * sizeof (int16_t); - short_entry_size = sizeof (int16_t); - status = cairo_truetype_font_allocate_write_buffer (font, - long_entry_size, - (unsigned char **) &p); - if (status) - return _cairo_truetype_font_set_error (font, status); - - if (font->glyphs[i].parent_index < num_hmetrics) { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hmtx, - font->glyphs[i].parent_index * long_entry_size, - (unsigned char *) p, &long_entry_size); - if (status) - return _cairo_truetype_font_set_error (font, status); - } - else - { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hmtx, - (num_hmetrics - 1) * long_entry_size, - (unsigned char *) p, &short_entry_size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_hmtx, - num_hmetrics * long_entry_size + - (font->glyphs[i].parent_index - num_hmetrics) * short_entry_size, - (unsigned char *) (p + 1), &short_entry_size); - if (status) - return _cairo_truetype_font_set_error (font, status); - } - font->base.widths[i] = be16_to_cpu (p[0]); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_write_loca_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - unsigned int i; - tt_head_t header; - unsigned long size; - cairo_status_t status; - - if (font->status) - return font->status; - - size = sizeof(tt_head_t); - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_head, 0, - (unsigned char*) &header, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - if (be16_to_cpu (header.index_to_loc_format) == 0) - { - for (i = 0; i < font->base.num_glyphs + 1; i++) - cairo_truetype_font_write_be16 (font, font->glyphs[i].location / 2); - } else { - for (i = 0; i < font->base.num_glyphs + 1; i++) - cairo_truetype_font_write_be32 (font, font->glyphs[i].location); - } - - return font->status; -} - -static cairo_status_t -cairo_truetype_font_write_maxp_table (cairo_truetype_font_t *font, - unsigned long tag) -{ - tt_maxp_t *maxp; - unsigned long size; - cairo_status_t status; - - if (font->status) - return font->status; - - size = sizeof (tt_maxp_t); - status = cairo_truetype_font_allocate_write_buffer (font, size, (unsigned char **) &maxp); - if (status) - return _cairo_truetype_font_set_error (font, status); - - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - tag, 0, (unsigned char *) maxp, &size); - if (status) - return _cairo_truetype_font_set_error (font, status); - - maxp->num_glyphs = cpu_to_be16 (font->base.num_glyphs); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_truetype_font_write_offset_table (cairo_truetype_font_t *font) -{ - cairo_status_t status; - unsigned char *table_buffer; - size_t table_buffer_length; - unsigned short search_range, entry_selector, range_shift; - - if (font->status) - return font->status; - - search_range = 1; - entry_selector = 0; - while (search_range * 2 <= font->num_tables) { - search_range *= 2; - entry_selector++; - } - search_range *= 16; - range_shift = font->num_tables * 16 - search_range; - - cairo_truetype_font_write_be32 (font, SFNT_VERSION); - cairo_truetype_font_write_be16 (font, font->num_tables); - cairo_truetype_font_write_be16 (font, search_range); - cairo_truetype_font_write_be16 (font, entry_selector); - cairo_truetype_font_write_be16 (font, range_shift); - - /* Allocate space for the table directory. Each directory entry - * will be filled in by cairo_truetype_font_update_entry() after - * the table is written. */ - table_buffer_length = font->num_tables * 16; - status = cairo_truetype_font_allocate_write_buffer (font, table_buffer_length, - &table_buffer); - if (status) - return _cairo_truetype_font_set_error (font, status); - - return CAIRO_STATUS_SUCCESS; -} - -static uint32_t -cairo_truetype_font_calculate_checksum (cairo_truetype_font_t *font, - unsigned long start, - unsigned long end) -{ - uint32_t *padded_end; - uint32_t *p; - uint32_t checksum; - char *data; - - checksum = 0; - data = _cairo_array_index (&font->output, 0); - p = (uint32_t *) (data + start); - padded_end = (uint32_t *) (data + ((end + 3) & ~3)); - while (p < padded_end) - checksum += be32_to_cpu(*p++); - - return checksum; -} - -static void -cairo_truetype_font_update_entry (cairo_truetype_font_t *font, - int index, - unsigned long tag, - unsigned long start, - unsigned long end) -{ - uint32_t *entry; - - entry = _cairo_array_index (&font->output, 12 + 16 * index); - entry[0] = cpu_to_be32 ((uint32_t)tag); - entry[1] = cpu_to_be32 (cairo_truetype_font_calculate_checksum (font, start, end)); - entry[2] = cpu_to_be32 ((uint32_t)start); - entry[3] = cpu_to_be32 ((uint32_t)(end - start)); -} - -static cairo_status_t -cairo_truetype_font_generate (cairo_truetype_font_t *font, - const char **data, - unsigned long *length, - const unsigned long **string_offsets, - unsigned long *num_strings) -{ - cairo_status_t status; - unsigned long start, end, next; - uint32_t checksum, *checksum_location; - int i; - - if (font->status) - return font->status; - - status = cairo_truetype_font_write_offset_table (font); - if (status) - goto FAIL; - - status = cairo_truetype_font_align_output (font, &start); - if (status) - goto FAIL; - - end = 0; - for (i = 0; i < font->num_tables; i++) { - status = font->truetype_tables[i].write (font, font->truetype_tables[i].tag); - if (status) - goto FAIL; - - end = _cairo_array_num_elements (&font->output); - status = cairo_truetype_font_align_output (font, &next); - if (status) - goto FAIL; - - cairo_truetype_font_update_entry (font, font->truetype_tables[i].pos, - font->truetype_tables[i].tag, start, end); - status = cairo_truetype_font_check_boundary (font, next); - if (status) - goto FAIL; - - start = next; - } - - checksum = - 0xb1b0afba - cairo_truetype_font_calculate_checksum (font, 0, end); - checksum_location = _cairo_array_index (&font->output, font->checksum_index); - *checksum_location = cpu_to_be32 (checksum); - - *data = _cairo_array_index (&font->output, 0); - *length = _cairo_array_num_elements (&font->output); - *num_strings = _cairo_array_num_elements (&font->string_offsets); - if (*num_strings != 0) - *string_offsets = _cairo_array_index (&font->string_offsets, 0); - else - *string_offsets = NULL; - - FAIL: - return _cairo_truetype_font_set_error (font, status); -} - -static cairo_status_t -cairo_truetype_font_use_glyph (cairo_truetype_font_t *font, - unsigned short glyph, - unsigned short *out) -{ - if (glyph >= font->num_glyphs_in_face) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (font->parent_to_subset[glyph] == 0) { - font->parent_to_subset[glyph] = font->base.num_glyphs; - font->glyphs[font->base.num_glyphs].parent_index = glyph; - font->base.num_glyphs++; - } - - *out = font->parent_to_subset[glyph]; - return CAIRO_STATUS_SUCCESS; -} - -static void -cairo_truetype_font_add_truetype_table (cairo_truetype_font_t *font, - unsigned long tag, - cairo_status_t (*write) (cairo_truetype_font_t *font, unsigned long tag), - int pos) -{ - font->truetype_tables[font->num_tables].tag = tag; - font->truetype_tables[font->num_tables].write = write; - font->truetype_tables[font->num_tables].pos = pos; - font->num_tables++; -} - -/* cairo_truetype_font_create_truetype_table_list() builds the list of - * truetype tables to be embedded in the subsetted font. Each call to - * cairo_truetype_font_add_truetype_table() adds a table, the callback - * for generating the table, and the position in the table directory - * to the truetype_tables array. - * - * As we write out the glyf table we remap composite glyphs. - * Remapping composite glyphs will reference the sub glyphs the - * composite glyph is made up of. The "glyf" table callback needs to - * be called first so we have all the glyphs in the subset before - * going further. - * - * The order in which tables are added to the truetype_table array - * using cairo_truetype_font_add_truetype_table() specifies the order - * in which the callback functions will be called. - * - * The tables in the table directory must be listed in alphabetical - * order. The "cvt", "fpgm", and "prep" are optional tables. They - * will only be embedded in the subset if they exist in the source - * font. The pos parameter of cairo_truetype_font_add_truetype_table() - * specifies the position of the table in the table directory. - */ -static void -cairo_truetype_font_create_truetype_table_list (cairo_truetype_font_t *font) -{ - cairo_bool_t has_cvt = FALSE; - cairo_bool_t has_fpgm = FALSE; - cairo_bool_t has_prep = FALSE; - unsigned long size; - int pos; - - size = 0; - if (font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_cvt, 0, NULL, - &size) == CAIRO_STATUS_SUCCESS) - has_cvt = TRUE; - - size = 0; - if (font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_fpgm, 0, NULL, - &size) == CAIRO_STATUS_SUCCESS) - has_fpgm = TRUE; - - size = 0; - if (font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, - TT_TAG_prep, 0, NULL, - &size) == CAIRO_STATUS_SUCCESS) - has_prep = TRUE; - - font->num_tables = 0; - pos = 1; - if (has_cvt) - pos++; - if (has_fpgm) - pos++; - cairo_truetype_font_add_truetype_table (font, TT_TAG_glyf, cairo_truetype_font_write_glyf_table, pos); - - pos = 0; - cairo_truetype_font_add_truetype_table (font, TT_TAG_cmap, cairo_truetype_font_write_cmap_table, pos++); - if (has_cvt) - cairo_truetype_font_add_truetype_table (font, TT_TAG_cvt, cairo_truetype_font_write_generic_table, pos++); - if (has_fpgm) - cairo_truetype_font_add_truetype_table (font, TT_TAG_fpgm, cairo_truetype_font_write_generic_table, pos++); - pos++; - cairo_truetype_font_add_truetype_table (font, TT_TAG_head, cairo_truetype_font_write_head_table, pos++); - cairo_truetype_font_add_truetype_table (font, TT_TAG_hhea, cairo_truetype_font_write_hhea_table, pos++); - cairo_truetype_font_add_truetype_table (font, TT_TAG_hmtx, cairo_truetype_font_write_hmtx_table, pos++); - cairo_truetype_font_add_truetype_table (font, TT_TAG_loca, cairo_truetype_font_write_loca_table, pos++); - cairo_truetype_font_add_truetype_table (font, TT_TAG_maxp, cairo_truetype_font_write_maxp_table, pos++); - if (has_prep) - cairo_truetype_font_add_truetype_table (font, TT_TAG_prep, cairo_truetype_font_write_generic_table, pos); -} - -cairo_status_t -_cairo_truetype_subset_init (cairo_truetype_subset_t *truetype_subset, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_truetype_font_t *font = NULL; - cairo_status_t status; - const char *data = NULL; /* squelch bogus compiler warning */ - unsigned long length = 0; /* squelch bogus compiler warning */ - unsigned long offsets_length; - unsigned int i; - const unsigned long *string_offsets = NULL; - unsigned long num_strings = 0; - - status = _cairo_truetype_font_create (font_subset, &font); - if (status) - return status; - - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - unsigned short parent_glyph = font->scaled_font_subset->glyphs[i]; - status = cairo_truetype_font_use_glyph (font, parent_glyph, &parent_glyph); - if (status) - goto fail1; - } - - cairo_truetype_font_create_truetype_table_list (font); - status = cairo_truetype_font_generate (font, &data, &length, - &string_offsets, &num_strings); - if (status) - goto fail1; - - truetype_subset->base_font = strdup (font->base.base_font); - if (truetype_subset->base_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - /* The widths array returned must contain only widths for the - * glyphs in font_subset. Any subglyphs appended after - * font_subset->num_glyphs are omitted. */ - truetype_subset->widths = calloc (sizeof (double), - font->scaled_font_subset->num_glyphs); - if (truetype_subset->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) - truetype_subset->widths[i] = (double)font->base.widths[i]/font->base.units_per_em; - - truetype_subset->x_min = (double)font->base.x_min/font->base.units_per_em; - truetype_subset->y_min = (double)font->base.y_min/font->base.units_per_em; - truetype_subset->x_max = (double)font->base.x_max/font->base.units_per_em; - truetype_subset->y_max = (double)font->base.y_max/font->base.units_per_em; - truetype_subset->ascent = (double)font->base.ascent/font->base.units_per_em; - truetype_subset->descent = (double)font->base.descent/font->base.units_per_em; - - if (length) { - truetype_subset->data = malloc (length); - if (truetype_subset->data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - - memcpy (truetype_subset->data, data, length); - } else - truetype_subset->data = NULL; - truetype_subset->data_length = length; - - if (num_strings) { - offsets_length = num_strings * sizeof (unsigned long); - truetype_subset->string_offsets = malloc (offsets_length); - if (truetype_subset->string_offsets == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail4; - } - - memcpy (truetype_subset->string_offsets, string_offsets, offsets_length); - truetype_subset->num_string_offsets = num_strings; - } else { - truetype_subset->string_offsets = NULL; - truetype_subset->num_string_offsets = 0; - } - - cairo_truetype_font_destroy (font); - - return CAIRO_STATUS_SUCCESS; - - fail4: - free (truetype_subset->data); - fail3: - free (truetype_subset->widths); - fail2: - free (truetype_subset->base_font); - fail1: - cairo_truetype_font_destroy (font); - - return status; -} - -void -_cairo_truetype_subset_fini (cairo_truetype_subset_t *subset) -{ - free (subset->base_font); - free (subset->widths); - free (subset->data); - free (subset->string_offsets); -} - -static cairo_int_status_t -_cairo_truetype_map_glyphs_to_unicode (cairo_scaled_font_subset_t *font_subset, - unsigned long table_offset) -{ - cairo_status_t status; - const cairo_scaled_font_backend_t *backend; - tt_segment_map_t *map; - char buf[4]; - unsigned int num_segments, i, j; - unsigned long size; - uint16_t *start_code; - uint16_t *end_code; - uint16_t *delta; - uint16_t *range_offset; - uint16_t *glyph_array; - uint16_t g_id, c; - - backend = font_subset->scaled_font->backend; - size = 4; - status = backend->load_truetype_table (font_subset->scaled_font, - TT_TAG_cmap, table_offset, - (unsigned char *) &buf, - &size); - if (status) - return status; - - /* All table formats have the same first two words */ - map = (tt_segment_map_t *) buf; - if (be16_to_cpu (map->format) != 4) - return CAIRO_INT_STATUS_UNSUPPORTED; - - size = be16_to_cpu (map->length); - map = malloc (size); - if (map == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = backend->load_truetype_table (font_subset->scaled_font, - TT_TAG_cmap, table_offset, - (unsigned char *) map, - &size); - if (status) - goto fail; - - num_segments = be16_to_cpu (map->segCountX2)/2; - end_code = map->endCount; - start_code = &(end_code[num_segments + 1]); - delta = &(start_code[num_segments]); - range_offset = &(delta[num_segments]); - glyph_array = &(range_offset[num_segments]); - - i = 0; - while (i < font_subset->num_glyphs) { - g_id = (uint16_t) font_subset->glyphs[i]; - - /* search for glyph in segments - * with rangeOffset=0 */ - for (j = 0; j < num_segments; j++) { - c = g_id - be16_to_cpu (delta[j]); - if (range_offset[j] == 0 && - c >= be16_to_cpu (start_code[j]) && - c <= be16_to_cpu (end_code[j])) - { - font_subset->to_unicode[i] = c; - goto next_glyph; - } - } - - /* search for glyph in segments with rangeOffset=1 */ - for (j = 0; j < num_segments; j++) { - if (range_offset[j] != 0) { - uint16_t *glyph_ids = &range_offset[j] + be16_to_cpu (range_offset[j])/2; - int range_size = be16_to_cpu (end_code[j]) - be16_to_cpu (start_code[j]) + 1; - uint16_t g_id_be = cpu_to_be16 (g_id); - int k; - - for (k = 0; k < range_size; k++) { - if (glyph_ids[k] == g_id_be) { - font_subset->to_unicode[i] = be16_to_cpu (start_code[j]) + k; - goto next_glyph; - } - } - } - } - - next_glyph: - i++; - } - status = CAIRO_STATUS_SUCCESS; -fail: - free (map); - - return status; -} - -cairo_int_status_t -_cairo_truetype_create_glyph_to_unicode_map (cairo_scaled_font_subset_t *font_subset) -{ - cairo_status_t status = CAIRO_INT_STATUS_UNSUPPORTED; - const cairo_scaled_font_backend_t *backend; - tt_cmap_t *cmap; - char buf[4]; - int num_tables, i; - unsigned long size; - - backend = font_subset->scaled_font->backend; - if (!backend->load_truetype_table) - return CAIRO_INT_STATUS_UNSUPPORTED; - - size = 4; - status = backend->load_truetype_table (font_subset->scaled_font, - TT_TAG_cmap, 0, - (unsigned char *) &buf, - &size); - if (status) - return status; - - cmap = (tt_cmap_t *) buf; - num_tables = be16_to_cpu (cmap->num_tables); - size = 4 + num_tables*sizeof(tt_cmap_index_t); - cmap = malloc (size); - if (cmap == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = backend->load_truetype_table (font_subset->scaled_font, - TT_TAG_cmap, 0, - (unsigned char *) cmap, - &size); - if (status) - goto cleanup; - - /* Find a table with Unicode mapping */ - for (i = 0; i < num_tables; i++) { - if (be16_to_cpu (cmap->index[i].platform) == 3 && - be16_to_cpu (cmap->index[i].encoding) == 1) { - status = _cairo_truetype_map_glyphs_to_unicode (font_subset, - be32_to_cpu (cmap->index[i].offset)); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - goto cleanup; - } - } - -cleanup: - free (cmap); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-truetype-subset-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-truetype-subset-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-truetype-subset-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-truetype-subset-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,195 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Kristian Høgsberg - * Adrian Johnson - */ - -#ifndef CAIRO_TRUETYPE_SUBSET_PRIVATE_H -#define CAIRO_TRUETYPE_SUBSET_PRIVATE_H - -#include "cairoint.h" - -/* The structs defined here should strictly follow the TrueType - * specification and not be padded. We use only 16-bit integer - * in their definition to guarantee that. The fields of type - * "FIXED" in the TT spec are broken into two *_1 and *_2 16-bit - * parts, and 64-bit members are broken into four. - * - * The test truetype-tables in the test suite makes sure that - * these tables have the right size. Please update that test - * if you add new tables/structs that should be packed. - */ - -#define MAKE_TT_TAG(a, b, c, d) (a<<24 | b<<16 | c<<8 | d) -#define TT_TAG_CFF MAKE_TT_TAG('C','F','F',' ') -#define TT_TAG_cmap MAKE_TT_TAG('c','m','a','p') -#define TT_TAG_cvt MAKE_TT_TAG('c','v','t',' ') -#define TT_TAG_fpgm MAKE_TT_TAG('f','p','g','m') -#define TT_TAG_glyf MAKE_TT_TAG('g','l','y','f') -#define TT_TAG_head MAKE_TT_TAG('h','e','a','d') -#define TT_TAG_hhea MAKE_TT_TAG('h','h','e','a') -#define TT_TAG_hmtx MAKE_TT_TAG('h','m','t','x') -#define TT_TAG_loca MAKE_TT_TAG('l','o','c','a') -#define TT_TAG_maxp MAKE_TT_TAG('m','a','x','p') -#define TT_TAG_name MAKE_TT_TAG('n','a','m','e') -#define TT_TAG_post MAKE_TT_TAG('p','o','s','t') -#define TT_TAG_prep MAKE_TT_TAG('p','r','e','p') - -/* All tt_* structs are big-endian */ -typedef struct _tt_cmap_index { - uint16_t platform; - uint16_t encoding; - uint32_t offset; -} tt_cmap_index_t; - -typedef struct _tt_cmap { - uint16_t version; - uint16_t num_tables; - tt_cmap_index_t index[1]; -} tt_cmap_t; - -typedef struct _segment_map { - uint16_t format; - uint16_t length; - uint16_t version; - uint16_t segCountX2; - uint16_t searchRange; - uint16_t entrySelector; - uint16_t rangeShift; - uint16_t endCount[1]; -} tt_segment_map_t; - -typedef struct _tt_head { - int16_t version_1; - int16_t version_2; - int16_t revision_1; - int16_t revision_2; - uint16_t checksum_1; - uint16_t checksum_2; - uint16_t magic_1; - uint16_t magic_2; - uint16_t flags; - uint16_t units_per_em; - int16_t created_1; - int16_t created_2; - int16_t created_3; - int16_t created_4; - int16_t modified_1; - int16_t modified_2; - int16_t modified_3; - int16_t modified_4; - int16_t x_min; /* FWORD */ - int16_t y_min; /* FWORD */ - int16_t x_max; /* FWORD */ - int16_t y_max; /* FWORD */ - uint16_t mac_style; - uint16_t lowest_rec_pppem; - int16_t font_direction_hint; - int16_t index_to_loc_format; - int16_t glyph_data_format; -} tt_head_t; - -typedef struct _tt_hhea { - int16_t version_1; - int16_t version_2; - int16_t ascender; /* FWORD */ - int16_t descender; /* FWORD */ - int16_t line_gap; /* FWORD */ - uint16_t advance_max_width; /* UFWORD */ - int16_t min_left_side_bearing; /* FWORD */ - int16_t min_right_side_bearing; /* FWORD */ - int16_t x_max_extent; /* FWORD */ - int16_t caret_slope_rise; - int16_t caret_slope_run; - int16_t reserved[5]; - int16_t metric_data_format; - uint16_t num_hmetrics; -} tt_hhea_t; - -typedef struct _tt_maxp { - int16_t version_1; - int16_t version_2; - uint16_t num_glyphs; - uint16_t max_points; - uint16_t max_contours; - uint16_t max_composite_points; - uint16_t max_composite_contours; - uint16_t max_zones; - uint16_t max_twilight_points; - uint16_t max_storage; - uint16_t max_function_defs; - uint16_t max_instruction_defs; - uint16_t max_stack_elements; - uint16_t max_size_of_instructions; - uint16_t max_component_elements; - uint16_t max_component_depth; -} tt_maxp_t; - -typedef struct _tt_name_record { - uint16_t platform; - uint16_t encoding; - uint16_t language; - uint16_t name; - uint16_t length; - uint16_t offset; -} tt_name_record_t; - -typedef struct _tt_name { - uint16_t format; - uint16_t num_records; - uint16_t strings_offset; - tt_name_record_t records[1]; -} tt_name_t; - - - -/* composite_glyph_t flags */ -#define TT_ARG_1_AND_2_ARE_WORDS 0x0001 -#define TT_WE_HAVE_A_SCALE 0x0008 -#define TT_MORE_COMPONENTS 0x0020 -#define TT_WE_HAVE_AN_X_AND_Y_SCALE 0x0040 -#define TT_WE_HAVE_A_TWO_BY_TWO 0x0080 - -typedef struct _tt_composite_glyph { - uint16_t flags; - uint16_t index; - uint16_t args[7]; /* 1 to 7 arguments depending on value of flags */ -} tt_composite_glyph_t; - -typedef struct _tt_glyph_data { - int16_t num_contours; - int8_t data[8]; - tt_composite_glyph_t glyph; -} tt_glyph_data_t; - -#endif /* CAIRO_TRUETYPE_SUBSET_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-type1-fallback.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-type1-fallback.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-type1-fallback.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-type1-fallback.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,875 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Adrian Johnson - */ - -#define _BSD_SOURCE /* for snprintf(), strdup() */ -#include "cairoint.h" -#include "cairo-type1-private.h" -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-path-fixed-private.h" -#include "cairo-output-stream-private.h" - -typedef enum { - CAIRO_CHARSTRING_TYPE1, - CAIRO_CHARSTRING_TYPE2 -} cairo_charstring_type_t; - -typedef struct _cairo_type1_font { - int *widths; - - cairo_scaled_font_subset_t *scaled_font_subset; - cairo_scaled_font_t *type1_scaled_font; - - cairo_array_t contents; - - double x_min, y_min, x_max, y_max; - - const char *data; - unsigned long header_size; - unsigned long data_size; - unsigned long trailer_size; - int bbox_position; - int bbox_max_chars; - - cairo_output_stream_t *output; - - unsigned short eexec_key; - cairo_bool_t hex_encode; - int hex_column; -} cairo_type1_font_t; - -static cairo_status_t -cairo_type1_font_create (cairo_scaled_font_subset_t *scaled_font_subset, - cairo_type1_font_t **subset_return, - cairo_bool_t hex_encode) -{ - cairo_type1_font_t *font; - cairo_font_face_t *font_face; - cairo_matrix_t font_matrix; - cairo_matrix_t ctm; - cairo_font_options_t font_options; - cairo_status_t status; - - font = calloc (1, sizeof (cairo_type1_font_t)); - if (font == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->widths = calloc (scaled_font_subset->num_glyphs, - sizeof (int)); - if (font->widths == NULL) { - free (font); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - font->scaled_font_subset = scaled_font_subset; - font->hex_encode = hex_encode; - - font_face = cairo_scaled_font_get_font_face (scaled_font_subset->scaled_font); - - cairo_matrix_init_scale (&font_matrix, 1000, -1000); - cairo_matrix_init_identity (&ctm); - - _cairo_font_options_init_default (&font_options); - cairo_font_options_set_hint_style (&font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (&font_options, CAIRO_HINT_METRICS_OFF); - - font->type1_scaled_font = cairo_scaled_font_create (font_face, - &font_matrix, - &ctm, - &font_options); - status = font->type1_scaled_font->status; - if (status) - goto fail; - - _cairo_array_init (&font->contents, sizeof (unsigned char)); - font->output = NULL; - - *subset_return = font; - - return CAIRO_STATUS_SUCCESS; - -fail: - free (font->widths); - free (font); - - return status; -} - -/* Charstring commands. If the high byte is 0 the command is encoded - * with a single byte. */ -#define CHARSTRING_sbw 0x0c07 -#define CHARSTRING_rmoveto 0x0015 -#define CHARSTRING_rlineto 0x0005 -#define CHARSTRING_rcurveto 0x0008 -#define CHARSTRING_closepath 0x0009 -#define CHARSTRING_endchar 0x000e - -/* Before calling this function, the caller must allocate sufficient - * space in data (see _cairo_array_grow_by). The maximum number of - * bytes that will be used is 2. - */ -static void -charstring_encode_command (cairo_array_t *data, int command) -{ - cairo_status_t status; - int orig_size; - unsigned char buf[5]; - unsigned char *p = buf; - - if (command & 0xff00) - *p++ = command >> 8; - *p++ = command & 0x00ff; - - /* Ensure the array doesn't grow, which allows this function to - * have no possibility of failure. */ - orig_size = _cairo_array_size (data); - status = _cairo_array_append_multiple (data, buf, p - buf); - - assert (status == CAIRO_STATUS_SUCCESS); - assert (_cairo_array_size (data) == orig_size); -} - -/* Before calling this function, the caller must allocate sufficient - * space in data (see _cairo_array_grow_by). The maximum number of - * bytes that will be used is 5. - */ -static void -charstring_encode_integer (cairo_array_t *data, - int i, - cairo_charstring_type_t type) -{ - cairo_status_t status; - int orig_size; - unsigned char buf[10]; - unsigned char *p = buf; - - if (i >= -107 && i <= 107) { - *p++ = i + 139; - } else if (i >= 108 && i <= 1131) { - i -= 108; - *p++ = (i >> 8)+ 247; - *p++ = i & 0xff; - } else if (i >= -1131 && i <= -108) { - i = -i - 108; - *p++ = (i >> 8)+ 251; - *p++ = i & 0xff; - } else { - if (type == CAIRO_CHARSTRING_TYPE1) { - *p++ = 0xff; - *p++ = i >> 24; - *p++ = (i >> 16) & 0xff; - *p++ = (i >> 8) & 0xff; - *p++ = i & 0xff; - } else { - *p++ = 0xff; - *p++ = (i >> 8) & 0xff; - *p++ = i & 0xff; - *p++ = 0; - *p++ = 0; - } - } - - /* Ensure the array doesn't grow, which allows this function to - * have no possibility of failure. */ - orig_size = _cairo_array_size (data); - status = _cairo_array_append_multiple (data, buf, p - buf); - - assert (status == CAIRO_STATUS_SUCCESS); - assert (_cairo_array_size (data) == orig_size); -} - -typedef struct _ps_path_info { - cairo_array_t *data; - int current_x, current_y; - cairo_charstring_type_t type; -} t1_path_info_t; - -static cairo_status_t -_charstring_move_to (void *closure, - cairo_point_t *point) -{ - t1_path_info_t *path_info = (t1_path_info_t *) closure; - int dx, dy; - cairo_status_t status; - - status = _cairo_array_grow_by (path_info->data, 12); - if (status) - return status; - - dx = _cairo_fixed_integer_part (point->x) - path_info->current_x; - dy = _cairo_fixed_integer_part (point->y) - path_info->current_y; - charstring_encode_integer (path_info->data, dx, path_info->type); - charstring_encode_integer (path_info->data, dy, path_info->type); - path_info->current_x += dx; - path_info->current_y += dy; - - charstring_encode_command (path_info->data, CHARSTRING_rmoveto); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_charstring_line_to (void *closure, - cairo_point_t *point) -{ - t1_path_info_t *path_info = (t1_path_info_t *) closure; - int dx, dy; - cairo_status_t status; - - status = _cairo_array_grow_by (path_info->data, 12); - if (status) - return status; - - dx = _cairo_fixed_integer_part (point->x) - path_info->current_x; - dy = _cairo_fixed_integer_part (point->y) - path_info->current_y; - charstring_encode_integer (path_info->data, dx, path_info->type); - charstring_encode_integer (path_info->data, dy, path_info->type); - path_info->current_x += dx; - path_info->current_y += dy; - - charstring_encode_command (path_info->data, CHARSTRING_rlineto); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_charstring_curve_to (void *closure, - cairo_point_t *point1, - cairo_point_t *point2, - cairo_point_t *point3) -{ - t1_path_info_t *path_info = (t1_path_info_t *) closure; - int dx1, dy1, dx2, dy2, dx3, dy3; - cairo_status_t status; - - status = _cairo_array_grow_by (path_info->data, 32); - if (status) - return status; - - dx1 = _cairo_fixed_integer_part (point1->x) - path_info->current_x; - dy1 = _cairo_fixed_integer_part (point1->y) - path_info->current_y; - dx2 = _cairo_fixed_integer_part (point2->x) - path_info->current_x - dx1; - dy2 = _cairo_fixed_integer_part (point2->y) - path_info->current_y - dy1; - dx3 = _cairo_fixed_integer_part (point3->x) - path_info->current_x - dx1 - dx2; - dy3 = _cairo_fixed_integer_part (point3->y) - path_info->current_y - dy1 - dy2; - charstring_encode_integer (path_info->data, dx1, path_info->type); - charstring_encode_integer (path_info->data, dy1, path_info->type); - charstring_encode_integer (path_info->data, dx2, path_info->type); - charstring_encode_integer (path_info->data, dy2, path_info->type); - charstring_encode_integer (path_info->data, dx3, path_info->type); - charstring_encode_integer (path_info->data, dy3, path_info->type); - path_info->current_x += dx1 + dx2 + dx3; - path_info->current_y += dy1 + dy2 + dy3; - charstring_encode_command (path_info->data, CHARSTRING_rcurveto); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_charstring_close_path (void *closure) -{ - cairo_status_t status; - t1_path_info_t *path_info = (t1_path_info_t *) closure; - - if (path_info->type == CAIRO_CHARSTRING_TYPE2) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_array_grow_by (path_info->data, 2); - if (status) - return status; - - charstring_encode_command (path_info->data, CHARSTRING_closepath); - - return CAIRO_STATUS_SUCCESS; -} - -static void -charstring_encrypt (cairo_array_t *data) -{ - unsigned char *d, *end; - uint16_t c, p, r; - - r = CAIRO_TYPE1_CHARSTRING_KEY; - d = (unsigned char *) _cairo_array_index (data, 0); - end = d + _cairo_array_num_elements (data); - while (d < end) { - p = *d; - c = p ^ (r >> 8); - r = (c + r) * CAIRO_TYPE1_ENCRYPT_C1 + CAIRO_TYPE1_ENCRYPT_C2; - *d++ = c; - } -} - -static cairo_int_status_t -cairo_type1_font_create_charstring (cairo_type1_font_t *font, - int subset_index, - int glyph_index, - cairo_charstring_type_t type, - cairo_array_t *data) -{ - cairo_int_status_t status; - cairo_scaled_glyph_t *scaled_glyph; - t1_path_info_t path_info; - cairo_text_extents_t *metrics; - cairo_bool_t emit_path = TRUE; - - /* This call may return CAIRO_INT_STATUS_UNSUPPORTED for bitmap fonts. */ - status = _cairo_scaled_glyph_lookup (font->type1_scaled_font, - glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS| - CAIRO_SCALED_GLYPH_INFO_PATH, - &scaled_glyph); - - /* It is ok for the .notdef glyph to not have a path available. We - * just need the metrics to emit an empty glyph. */ - if (glyph_index == 0 && status == CAIRO_INT_STATUS_UNSUPPORTED) { - emit_path = FALSE; - status = _cairo_scaled_glyph_lookup (font->type1_scaled_font, - glyph_index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - } - if (status) - return status; - - metrics = &scaled_glyph->metrics; - if (subset_index == 0) { - font->x_min = metrics->x_bearing; - font->y_min = metrics->y_bearing; - font->x_max = metrics->x_bearing + metrics->width; - font->y_max = metrics->y_bearing + metrics->height; - } else { - if (metrics->x_bearing < font->x_min) - font->x_min = metrics->x_bearing; - if (metrics->y_bearing < font->y_min) - font->y_min = metrics->y_bearing; - if (metrics->x_bearing + metrics->width > font->x_max) - font->x_max = metrics->x_bearing + metrics->width; - if (metrics->y_bearing + metrics->height > font->y_max) - font->y_max = metrics->y_bearing + metrics->height; - } - font->widths[subset_index] = metrics->x_advance; - - status = _cairo_array_grow_by (data, 30); - if (status) - return status; - - if (type == CAIRO_CHARSTRING_TYPE1) { - charstring_encode_integer (data, (int) scaled_glyph->metrics.x_bearing, type); - charstring_encode_integer (data, (int) scaled_glyph->metrics.y_bearing, type); - charstring_encode_integer (data, (int) scaled_glyph->metrics.x_advance, type); - charstring_encode_integer (data, (int) scaled_glyph->metrics.y_advance, type); - charstring_encode_command (data, CHARSTRING_sbw); - - path_info.current_x = (int) scaled_glyph->metrics.x_bearing; - path_info.current_y = (int) scaled_glyph->metrics.y_bearing; - } else { - charstring_encode_integer (data, (int) scaled_glyph->metrics.x_advance, type); - - path_info.current_x = 0; - path_info.current_y = 0; - } - path_info.data = data; - path_info.type = type; - if (emit_path) { - status = _cairo_path_fixed_interpret (scaled_glyph->path, - CAIRO_DIRECTION_FORWARD, - _charstring_move_to, - _charstring_line_to, - _charstring_curve_to, - _charstring_close_path, - &path_info); - if (status) - return status; - } - - status = _cairo_array_grow_by (data, 1); - if (status) - return status; - charstring_encode_command (path_info.data, CHARSTRING_endchar); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_type1_font_write_charstrings (cairo_type1_font_t *font, - cairo_output_stream_t *encrypted_output) -{ - cairo_status_t status; - unsigned char zeros[] = { 0, 0, 0, 0 }; - cairo_array_t data; - unsigned int i; - int length; - - _cairo_array_init (&data, sizeof (unsigned char)); - status = _cairo_array_grow_by (&data, 1024); - if (status) - goto fail; - - _cairo_output_stream_printf (encrypted_output, - "2 index /CharStrings %d dict dup begin\n", - font->scaled_font_subset->num_glyphs + 1); - - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - _cairo_array_truncate (&data, 0); - /* four "random" bytes required by encryption algorithm */ - status = _cairo_array_append_multiple (&data, zeros, 4); - if (status) - goto fail; - status = cairo_type1_font_create_charstring (font, i, - font->scaled_font_subset->glyphs[i], - CAIRO_CHARSTRING_TYPE1, - &data); - if (status) - goto fail; - charstring_encrypt (&data); - length = _cairo_array_num_elements (&data); - if (font->scaled_font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (encrypted_output, "/%s %d RD ", - font->scaled_font_subset->glyph_names[i], - length); - } else if (i == 0) { - _cairo_output_stream_printf (encrypted_output, "/.notdef %d RD ", length); - } else { - _cairo_output_stream_printf (encrypted_output, "/g%d %d RD ", i, length); - } - _cairo_output_stream_write (encrypted_output, - _cairo_array_index (&data, 0), - length); - _cairo_output_stream_printf (encrypted_output, " ND\n"); - } - -fail: - _cairo_array_fini (&data); - return status; -} - -static void -cairo_type1_font_write_header (cairo_type1_font_t *font, - const char *name) -{ - unsigned int i; - const char spaces[50] = " "; - - _cairo_output_stream_printf (font->output, - "%%!FontType1-1.1 %s 1.0\n" - "11 dict begin\n" - "/FontName /%s def\n" - "/PaintType 0 def\n" - "/FontType 1 def\n" - "/FontMatrix [0.001 0 0 0.001 0 0] readonly def\n", - name, - name); - - /* We don't know the bbox values until after the charstrings have - * been generated. Reserve some space and fill in the bbox - * later. */ - - /* Worst case for four signed ints with spaces between each number */ - font->bbox_max_chars = 50; - - _cairo_output_stream_printf (font->output, "/FontBBox {"); - font->bbox_position = _cairo_output_stream_get_position (font->output); - _cairo_output_stream_write (font->output, spaces, font->bbox_max_chars); - - _cairo_output_stream_printf (font->output, - "} readonly def\n" - "/Encoding 256 array\n" - "0 1 255 {1 index exch /.notdef put} for\n"); - for (i = 1; i < font->scaled_font_subset->num_glyphs; i++) { - if (font->scaled_font_subset->glyph_names != NULL) { - _cairo_output_stream_printf (font->output, "dup %d /%s put\n", - i, font->scaled_font_subset->glyph_names[i]); - } else { - _cairo_output_stream_printf (font->output, "dup %d /g%d put\n", i, i); - } - } - _cairo_output_stream_printf (font->output, - "readonly def\n" - "currentdict end\n" - "currentfile eexec\n"); -} - -static cairo_status_t -cairo_type1_write_stream_encrypted (void *closure, - const unsigned char *data, - unsigned int length) -{ - const unsigned char *in, *end; - uint16_t c, p; - static const char hex_digits[16] = "0123456789abcdef"; - char digits[3]; - cairo_type1_font_t *font = closure; - - in = (const unsigned char *) data; - end = (const unsigned char *) data + length; - while (in < end) { - p = *in++; - c = p ^ (font->eexec_key >> 8); - font->eexec_key = (c + font->eexec_key) * CAIRO_TYPE1_ENCRYPT_C1 + CAIRO_TYPE1_ENCRYPT_C2; - - if (font->hex_encode) { - digits[0] = hex_digits[c >> 4]; - digits[1] = hex_digits[c & 0x0f]; - digits[2] = '\n'; - font->hex_column += 2; - - if (font->hex_column == 78) { - _cairo_output_stream_write (font->output, digits, 3); - font->hex_column = 0; - } else { - _cairo_output_stream_write (font->output, digits, 2); - } - } else { - digits[0] = c; - _cairo_output_stream_write (font->output, digits, 1); - } - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_type1_font_write_private_dict (cairo_type1_font_t *font, - const char *name) -{ - cairo_int_status_t status; - cairo_status_t status2; - cairo_output_stream_t *encrypted_output; - - font->eexec_key = CAIRO_TYPE1_PRIVATE_DICT_KEY; - font->hex_column = 0; - encrypted_output = _cairo_output_stream_create ( - cairo_type1_write_stream_encrypted, - NULL, - font); - if (_cairo_output_stream_get_status (encrypted_output)) - return _cairo_output_stream_destroy (encrypted_output); - - /* Note: the first four spaces at the start of this private dict - * are the four "random" bytes of plaintext required by the - * encryption algorithm */ - _cairo_output_stream_printf (encrypted_output, - " dup /Private 9 dict dup begin\n" - "/RD {string currentfile exch readstring pop}" - " executeonly def\n" - "/ND {noaccess def} executeonly def\n" - "/NP {noaccess put} executeonly def\n" - "/BlueValues [] def\n" - "/MinFeature {16 16} def\n" - "/lenIV 4 def\n" - "/password 5839 def\n"); - - status = cairo_type1_font_write_charstrings (font, encrypted_output); - if (status) - goto fail; - - _cairo_output_stream_printf (encrypted_output, - "end\n" - "end\n" - "readonly put\n" - "noaccess put\n" - "dup /FontName get exch definefont pop\n" - "mark currentfile closefile\n"); - - fail: - status2 = _cairo_output_stream_destroy (encrypted_output); - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - - return status; -} - -static void -cairo_type1_font_write_trailer(cairo_type1_font_t *font) -{ - int i; - static const char zeros[65] = - "0000000000000000000000000000000000000000000000000000000000000000\n"; - - for (i = 0; i < 8; i++) - _cairo_output_stream_write (font->output, zeros, sizeof zeros); - - _cairo_output_stream_printf (font->output, "cleartomark\n"); -} - -static cairo_status_t -cairo_type1_write_stream (void *closure, - const unsigned char *data, - unsigned int length) -{ - cairo_type1_font_t *font = closure; - - return _cairo_array_append_multiple (&font->contents, data, length); -} - -static cairo_int_status_t -cairo_type1_font_write (cairo_type1_font_t *font, - const char *name) -{ - cairo_int_status_t status; - - cairo_type1_font_write_header (font, name); - font->header_size = _cairo_output_stream_get_position (font->output); - - status = cairo_type1_font_write_private_dict (font, name); - if (status) - return status; - - font->data_size = _cairo_output_stream_get_position (font->output) - - font->header_size; - - cairo_type1_font_write_trailer (font); - font->trailer_size = - _cairo_output_stream_get_position (font->output) - - font->header_size - font->data_size; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -cairo_type1_font_generate (cairo_type1_font_t *font, const char *name) -{ - cairo_int_status_t status; - - status = _cairo_array_grow_by (&font->contents, 4096); - if (status) - return status; - - font->output = _cairo_output_stream_create (cairo_type1_write_stream, NULL, font); - if (_cairo_output_stream_get_status (font->output)) - return _cairo_output_stream_destroy (font->output); - - status = cairo_type1_font_write (font, name); - if (status) - return status; - - font->data = _cairo_array_index (&font->contents, 0); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_type1_font_destroy (cairo_type1_font_t *font) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - free (font->widths); - cairo_scaled_font_destroy (font->type1_scaled_font); - _cairo_array_fini (&font->contents); - if (font->output) - status = _cairo_output_stream_destroy (font->output); - free (font); - - return status; -} - -static cairo_status_t -_cairo_type1_fallback_init_internal (cairo_type1_subset_t *type1_subset, - const char *name, - cairo_scaled_font_subset_t *scaled_font_subset, - cairo_bool_t hex_encode) -{ - cairo_type1_font_t *font; - cairo_status_t status; - unsigned long length; - unsigned int i, len; - - status = cairo_type1_font_create (scaled_font_subset, &font, hex_encode); - if (status) - return status; - - status = cairo_type1_font_generate (font, name); - if (status) - goto fail1; - - type1_subset->base_font = strdup (name); - if (type1_subset->base_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - type1_subset->widths = calloc (sizeof (int), font->scaled_font_subset->num_glyphs); - if (type1_subset->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) - type1_subset->widths[i] = font->widths[i]; - - type1_subset->x_min = (int) font->x_min; - type1_subset->y_min = (int) font->y_min; - type1_subset->x_max = (int) font->x_max; - type1_subset->y_max = (int) font->y_max; - type1_subset->ascent = (int) font->y_max; - type1_subset->descent = (int) font->y_min; - - length = font->header_size + font->data_size + - font->trailer_size; - type1_subset->data = malloc (length); - if (type1_subset->data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - memcpy (type1_subset->data, - _cairo_array_index (&font->contents, 0), length); - - len = snprintf(type1_subset->data + font->bbox_position, - font->bbox_max_chars, - "%d %d %d %d", - (int)type1_subset->x_min, - (int)type1_subset->y_min, - (int)type1_subset->x_max, - (int)type1_subset->y_max); - type1_subset->data[font->bbox_position + len] = ' '; - - type1_subset->header_length = font->header_size; - type1_subset->data_length = font->data_size; - type1_subset->trailer_length = font->trailer_size; - - return cairo_type1_font_destroy (font); - - fail3: - free (type1_subset->widths); - fail2: - free (type1_subset->base_font); - fail1: - /* status is already set, ignore further errors */ - cairo_type1_font_destroy (font); - - return status; -} - -cairo_status_t -_cairo_type1_fallback_init_binary (cairo_type1_subset_t *type1_subset, - const char *name, - cairo_scaled_font_subset_t *scaled_font_subset) -{ - return _cairo_type1_fallback_init_internal (type1_subset, - name, - scaled_font_subset, FALSE); -} - -cairo_status_t -_cairo_type1_fallback_init_hex (cairo_type1_subset_t *type1_subset, - const char *name, - cairo_scaled_font_subset_t *scaled_font_subset) -{ - return _cairo_type1_fallback_init_internal (type1_subset, - name, - scaled_font_subset, TRUE); -} - -void -_cairo_type1_fallback_fini (cairo_type1_subset_t *subset) -{ - free (subset->base_font); - free (subset->widths); - free (subset->data); -} - -cairo_status_t -_cairo_type2_charstrings_init (cairo_type2_charstrings_t *type2_subset, - cairo_scaled_font_subset_t *scaled_font_subset) -{ - cairo_type1_font_t *font; - cairo_status_t status; - unsigned int i; - cairo_array_t charstring; - - status = cairo_type1_font_create (scaled_font_subset, &font, FALSE); - if (status) - return status; - - _cairo_array_init (&type2_subset->charstrings, sizeof (cairo_array_t)); - - type2_subset->widths = calloc (sizeof (int), font->scaled_font_subset->num_glyphs); - if (type2_subset->widths == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - _cairo_array_init (&charstring, sizeof (unsigned char)); - status = _cairo_array_grow_by (&charstring, 32); - if (status) - goto fail2; - - status = cairo_type1_font_create_charstring (font, i, - font->scaled_font_subset->glyphs[i], - CAIRO_CHARSTRING_TYPE2, - &charstring); - if (status) - goto fail2; - - status = _cairo_array_append (&type2_subset->charstrings, &charstring); - if (status) - goto fail2; - } - - for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) - type2_subset->widths[i] = font->widths[i]; - - type2_subset->x_min = (int) font->x_min; - type2_subset->y_min = (int) font->y_min; - type2_subset->x_max = (int) font->x_max; - type2_subset->y_max = (int) font->y_max; - type2_subset->ascent = (int) font->y_max; - type2_subset->descent = (int) font->y_min; - - return cairo_type1_font_destroy (font); - -fail2: - _cairo_array_fini (&charstring); - _cairo_type2_charstrings_fini (type2_subset); -fail1: - cairo_type1_font_destroy (font); - return status; -} - -void -_cairo_type2_charstrings_fini (cairo_type2_charstrings_t *type2_subset) -{ - unsigned int i, num_charstrings; - cairo_array_t *charstring; - - num_charstrings = _cairo_array_num_elements (&type2_subset->charstrings); - for (i = 0; i < num_charstrings; i++) { - charstring = _cairo_array_index (&type2_subset->charstrings, i); - _cairo_array_fini (charstring); - } - _cairo_array_fini (&type2_subset->charstrings); - - free (type2_subset->widths); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-type1-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-type1-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-type1-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-type1-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Adrian Johnson - */ - -#ifndef CAIRO_TYPE1_PRIVATE_H -#define CAIRO_TYPE1_PRIVATE_H - -/* Magic constants for the type1 eexec encryption */ -#define CAIRO_TYPE1_ENCRYPT_C1 ((unsigned short) 52845) -#define CAIRO_TYPE1_ENCRYPT_C2 ((unsigned short) 22719) -#define CAIRO_TYPE1_PRIVATE_DICT_KEY ((unsigned short) 55665) -#define CAIRO_TYPE1_CHARSTRING_KEY ((unsigned short) 4330) - -#endif /* CAIRO_TYPE1_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-type1-subset.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-type1-subset.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-type1-subset.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-type1-subset.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1305 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Kristian Høgsberg - */ - -/* - * Useful links: - * http://partners.adobe.com/public/developer/en/font/T1_SPEC.PDF - */ - -#define _BSD_SOURCE /* for snprintf(), strdup() */ -#include "cairoint.h" -#include "cairo-type1-private.h" -#include "cairo-scaled-font-subsets-private.h" -#include "cairo-output-stream-private.h" - -/* XXX: Eventually, we need to handle other font backends */ -#include "cairo-ft-private.h" - -#include -#include FT_FREETYPE_H -#include FT_OUTLINE_H -#include FT_TYPE1_TABLES_H - -#include - -typedef struct _cairo_type1_font_subset { - - cairo_scaled_font_subset_t *scaled_font_subset; - - struct { - cairo_unscaled_font_t *unscaled_font; - unsigned int font_id; - char *base_font; - unsigned int num_glyphs; - long x_min, y_min, x_max, y_max; - long ascent, descent; - - const char *data; - unsigned long header_size; - unsigned long data_size; - unsigned long trailer_size; - - } base; - - FT_Face face; - int num_glyphs; - - struct { - int subset_index; - int width; - char *name; - } *glyphs; - - cairo_output_stream_t *output; - cairo_array_t contents; - - const char *rd, *nd; - - char *type1_data; - unsigned int type1_length; - char *type1_end; - - char *header_segment; - int header_segment_size; - char *eexec_segment; - int eexec_segment_size; - cairo_bool_t eexec_segment_is_ascii; - - char *cleartext; - char *cleartext_end; - - int header_size; - - unsigned short eexec_key; - cairo_bool_t hex_encode; - int hex_column; -} cairo_type1_font_subset_t; - - -static cairo_status_t -_cairo_type1_font_subset_create (cairo_unscaled_font_t *unscaled_font, - cairo_type1_font_subset_t **subset_return, - cairo_bool_t hex_encode) -{ - cairo_ft_unscaled_font_t *ft_unscaled_font; - cairo_status_t status; - FT_Face face; - PS_FontInfoRec font_info; - cairo_type1_font_subset_t *font; - int i, j; - - ft_unscaled_font = (cairo_ft_unscaled_font_t *) unscaled_font; - - face = _cairo_ft_unscaled_font_lock_face (ft_unscaled_font); - if (face == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (FT_Get_PS_Font_Info(face, &font_info) != 0) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto fail1; - } - - /* OpenType/CFF fonts also have a PS_FontInfoRec */ -#if HAVE_FT_LOAD_SFNT_TABLE - if (FT_IS_SFNT (face)) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto fail1; - } -#endif - - font = calloc (sizeof (cairo_type1_font_subset_t), 1); - if (font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - font->base.unscaled_font = _cairo_unscaled_font_reference (unscaled_font); - font->base.num_glyphs = face->num_glyphs; - font->base.x_min = face->bbox.xMin; - font->base.y_min = face->bbox.yMin; - font->base.x_max = face->bbox.xMax; - font->base.y_max = face->bbox.yMax; - font->base.ascent = face->ascender; - font->base.descent = face->descender; - - if (face->family_name) { - font->base.base_font = strdup (face->family_name); - if (font->base.base_font == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - for (i = 0, j = 0; font->base.base_font[j]; j++) { - if (font->base.base_font[j] == ' ') - continue; - font->base.base_font[i++] = font->base.base_font[j]; - } - font->base.base_font[i] = '\0'; - } - - font->glyphs = calloc (face->num_glyphs, sizeof font->glyphs[0]); - if (font->glyphs == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail3; - } - - font->hex_encode = hex_encode; - font->num_glyphs = 0; - for (i = 0; i < face->num_glyphs; i++) - font->glyphs[i].subset_index = -1; - - _cairo_array_init (&font->contents, sizeof (char)); - - _cairo_ft_unscaled_font_unlock_face (ft_unscaled_font); - - *subset_return = font; - - return CAIRO_STATUS_SUCCESS; - - fail3: - if (font->base.base_font) - free (font->base.base_font); - fail2: - _cairo_unscaled_font_destroy (unscaled_font); - free (font); - fail1: - _cairo_ft_unscaled_font_unlock_face (ft_unscaled_font); - - return status; -} - -static void -cairo_type1_font_subset_use_glyph (cairo_type1_font_subset_t *font, int glyph) -{ - if (font->glyphs[glyph].subset_index >= 0) - return; - - font->glyphs[glyph].subset_index = font->num_glyphs++; -} - -static cairo_bool_t -is_ps_delimiter(int c) -{ - static const char delimiters[] = "()[]{}<>/% \t\r\n"; - - return strchr (delimiters, c) != NULL; -} - -static const char * -find_token (const char *buffer, const char *end, const char *token) -{ - int i, length; - /* FIXME: find substring really must be find_token */ - - if (buffer == NULL) - return NULL; - - length = strlen (token); - for (i = 0; buffer + i < end - length + 1; i++) - if (memcmp (buffer + i, token, length) == 0) - if ((i == 0 || token[0] == '/' || is_ps_delimiter(buffer[i - 1])) && - (buffer + i == end - length || is_ps_delimiter(buffer[i + length]))) - return buffer + i; - - return NULL; -} - -static cairo_status_t -cairo_type1_font_subset_find_segments (cairo_type1_font_subset_t *font) -{ - unsigned char *p; - const char *eexec_token; - int size; - - p = (unsigned char *) font->type1_data; - font->type1_end = font->type1_data + font->type1_length; - if (p[0] == 0x80 && p[1] == 0x01) { - font->header_segment_size = - p[2] | (p[3] << 8) | (p[4] << 16) | (p[5] << 24); - font->header_segment = (char *) p + 6; - - p += 6 + font->header_segment_size; - font->eexec_segment_size = - p[2] | (p[3] << 8) | (p[4] << 16) | (p[5] << 24); - font->eexec_segment = (char *) p + 6; - font->eexec_segment_is_ascii = (p[1] == 1); - - p += 6 + font->eexec_segment_size; - while (p < (unsigned char *) (font->type1_end) && p[1] != 0x03) { - size = p[2] | (p[3] << 8) | (p[4] << 16) | (p[5] << 24); - p += 6 + size; - } - font->type1_end = (char *) p; - } else { - eexec_token = find_token ((char *) p, font->type1_end, "eexec"); - if (eexec_token == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - font->header_segment_size = eexec_token - (char *) p + strlen ("eexec\n"); - font->header_segment = (char *) p; - font->eexec_segment_size = font->type1_length - font->header_segment_size; - font->eexec_segment = (char *) p + font->header_segment_size; - font->eexec_segment_is_ascii = TRUE; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_type1_font_subset_write_header (cairo_type1_font_subset_t *font, - const char *name) -{ - const char *start, *end, *segment_end; - unsigned int i; - - segment_end = font->header_segment + font->header_segment_size; - - start = find_token (font->header_segment, segment_end, "/FontName"); - if (start == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - _cairo_output_stream_write (font->output, font->header_segment, - start - font->header_segment); - - _cairo_output_stream_printf (font->output, "/FontName /%s def", name); - - end = find_token (start, segment_end, "def"); - if (end == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - end += 3; - - start = find_token (end, segment_end, "/Encoding"); - if (start == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - _cairo_output_stream_write (font->output, end, start - end); - - _cairo_output_stream_printf (font->output, - "/Encoding 256 array\n" - "0 1 255 {1 index exch /.notdef put} for\n"); - for (i = 1; i < font->base.num_glyphs; i++) { - if (font->glyphs[i].subset_index < 0) - continue; - _cairo_output_stream_printf (font->output, - "dup %d /%s put\n", - font->glyphs[i].subset_index, - font->glyphs[i].name); - } - _cairo_output_stream_printf (font->output, "readonly def"); - - end = find_token (start, segment_end, "def"); - if (end == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - end += 3; - - _cairo_output_stream_write (font->output, end, segment_end - end); - - return font->output->status; -} - -static int -hex_to_int (int ch) -{ - if (ch <= '9') - return ch - '0'; - else if (ch <= 'F') - return ch - 'A' + 10; - else - return ch - 'a' + 10; -} - -static cairo_status_t -cairo_type1_font_subset_write_encrypted (cairo_type1_font_subset_t *font, - const char *data, unsigned int length) -{ - const unsigned char *in, *end; - int c, p; - static const char hex_digits[16] = "0123456789abcdef"; - char digits[3]; - - in = (const unsigned char *) data; - end = (const unsigned char *) data + length; - while (in < end) { - p = *in++; - c = p ^ (font->eexec_key >> 8); - font->eexec_key = (c + font->eexec_key) * CAIRO_TYPE1_ENCRYPT_C1 + CAIRO_TYPE1_ENCRYPT_C2; - - if (font->hex_encode) { - digits[0] = hex_digits[c >> 4]; - digits[1] = hex_digits[c & 0x0f]; - digits[2] = '\n'; - font->hex_column += 2; - - if (font->hex_column == 78) { - _cairo_output_stream_write (font->output, digits, 3); - font->hex_column = 0; - } else { - _cairo_output_stream_write (font->output, digits, 2); - } - } else { - digits[0] = c; - _cairo_output_stream_write (font->output, digits, 1); - } - } - - return font->output->status; -} - -static cairo_status_t -cairo_type1_font_subset_decrypt_eexec_segment (cairo_type1_font_subset_t *font) -{ - unsigned short r = CAIRO_TYPE1_PRIVATE_DICT_KEY; - unsigned char *in, *end; - char *out; - int c, p; - - in = (unsigned char *) font->eexec_segment; - end = (unsigned char *) in + font->eexec_segment_size; - - font->cleartext = malloc (font->eexec_segment_size); - if (font->cleartext == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - out = font->cleartext; - while (in < end) { - if (font->eexec_segment_is_ascii) { - c = *in++; - if (isspace (c)) - continue; - c = (hex_to_int (c) << 4) | hex_to_int (*in++); - } else { - c = *in++; - } - p = c ^ (r >> 8); - r = (c + r) * CAIRO_TYPE1_ENCRYPT_C1 + CAIRO_TYPE1_ENCRYPT_C2; - - *out++ = p; - } - font->cleartext_end = out; - - return CAIRO_STATUS_SUCCESS; -} - -static const char * -skip_token (const char *p, const char *end) -{ - while (p < end && isspace(*p)) - p++; - - while (p < end && !isspace(*p)) - p++; - - if (p == end) - return NULL; - - return p; -} - -static int -cairo_type1_font_subset_lookup_glyph (cairo_type1_font_subset_t *font, - const char *glyph_name, int length) -{ - unsigned int i; - - for (i = 0; i < font->base.num_glyphs; i++) { - if (font->glyphs[i].name && - strncmp (font->glyphs[i].name, glyph_name, length) == 0 && - font->glyphs[i].name[length] == '\0') - return i; - } - - return -1; -} - -static cairo_status_t -cairo_type1_font_subset_get_glyph_names_and_widths (cairo_type1_font_subset_t *font) -{ - unsigned int i; - char buffer[256]; - FT_Error error; - - /* Get glyph names and width using the freetype API */ - for (i = 0; i < font->base.num_glyphs; i++) { - if (font->glyphs[i].name != NULL) - continue; - - error = FT_Load_Glyph (font->face, i, - FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING | - FT_LOAD_NO_BITMAP | FT_LOAD_IGNORE_TRANSFORM); - if (error != 0) { - printf ("could not load glyph %d\n", i); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - font->glyphs[i].width = font->face->glyph->metrics.horiAdvance; - - error = FT_Get_Glyph_Name(font->face, i, buffer, sizeof buffer); - if (error != 0) { - printf ("could not get glyph name for glyph %d\n", i); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - font->glyphs[i].name = strdup (buffer); - if (font->glyphs[i].name == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - return CAIRO_STATUS_SUCCESS; -} - -static void -cairo_type1_font_subset_decrypt_charstring (const unsigned char *in, int size, unsigned char *out) -{ - unsigned short r = CAIRO_TYPE1_CHARSTRING_KEY; - int c, p, i; - - for (i = 0; i < size; i++) { - c = *in++; - p = c ^ (r >> 8); - r = (c + r) * CAIRO_TYPE1_ENCRYPT_C1 + CAIRO_TYPE1_ENCRYPT_C2; - *out++ = p; - } -} - -static const unsigned char * -cairo_type1_font_subset_decode_integer (const unsigned char *p, int *integer) -{ - if (*p <= 246) { - *integer = *p++ - 139; - } else if (*p <= 250) { - *integer = (p[0] - 247) * 256 + p[1] + 108; - p += 2; - } else if (*p <= 254) { - *integer = -(p[0] - 251) * 256 - p[1] - 108; - p += 2; - } else { - *integer = (p[1] << 24) | (p[2] << 16) | (p[3] << 8) | p[4]; - p += 5; - } - - return p; -} - -#if 0 -/* - * The two tables that follow are generated using this perl code: - */ - -@encoding = ( - /* 0 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 16 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 32 */ - "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quoteright", - "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", - /* 48 */ - "zero", "one", "two", "three", - "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", - "less", "equal", "greater", "question", - /* 64 */ - "at", "A", "B", "C", - "D", "E", "F", "G", - "H", "I", "J", "K", - "L", "M", "N", "O", - /* 80 */ - "P", "Q", "R", "S", - "T", "U", "V", "W", - "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", - /* 96 */ - "quoteleft", "a", "b", "c", - "d", "e", "f", "g", - "h", "i", "j", "k", - "l", "m", "n", "o", - /* 112 */ - "p", "q", "r", "s", - "t", "u", "v", "w", - "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", NULL, - /* 128 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 144 */ - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 160 */ - NULL, "exclamdown", "cent", "sterling", - "fraction", "yen", "florin", "section", - "currency", "quotesingle", "quotedblleft", "guillemotleft", - "guilsinglleft","guilsinglright","fi", "fl", - /* 176 */ - NULL, "endash", "dagger", "daggerdbl", - "periodcentered",NULL, "paragraph", "bullet", - "quotesinglbase","quotedblbase","quotedblright","guillemotright", - "ellipsis", "perthousand", NULL, "questiondown", - /* 192 */ - NULL, "grave", "acute", "circumflex", - "tilde", "macron", "breve", "dotaccent", - "dieresis", NULL, "ring", "cedilla", - NULL, "hungarumlaut", "ogonek", "caron", - /* 208 */ - "emdash", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, - /* 224 */ - NULL, "AE", NULL, "ordfeminine", - NULL, NULL, NULL, NULL, - "Lslash", "Oslash", "OE", "ordmasculine", - NULL, NULL, NULL, NULL, - /* 240 */ - NULL, "ae", NULL, NULL, - NULL, "dotlessi", NULL, NULL, - "lslash", "oslash", "oe", "germandbls", - NULL, NULL, NULL, NULL - ); - -print "static const char ps_standard_encoding_symbol[] = {\n"; -$s = qq( "\\0"); -for $sym (@encoding) { - if (! ($sym eq NULL)) { - $ss = qq( "$sym\\0"); - if (length($s) + length($ss) > 78) { - print qq( $s\n); - $s = ""; - } - $s .= $ss; - } -} -print qq( $s\n); -print "};\n\n"; -print "static const int16_t ps_standard_encoding_offset[256] = {\n"; -$offset = 1; -$s = qq(); -for $sym (@encoding) { - if (! ($sym eq NULL)) { - $ss = qq( $offset/*$sym*/,); - $offset += length($sym) + 1; - } else { - $ss = qq( 0,); - } - if (length($s) + length($ss) > 78) { - print qq( $s\n); - $s = ""; - } - $s .= $ss; -} -print qq( $s\n); -print "};\n"; -exit; -#endif - -static const char ps_standard_encoding_symbol[] = { - "\0" "space\0" "exclam\0" "quotedbl\0" "numbersign\0" "dollar\0" "percent\0" - "ampersand\0" "quoteright\0" "parenleft\0" "parenright\0" "asterisk\0" - "plus\0" "comma\0" "hyphen\0" "period\0" "slash\0" "zero\0" "one\0" "two\0" - "three\0" "four\0" "five\0" "six\0" "seven\0" "eight\0" "nine\0" "colon\0" - "semicolon\0" "less\0" "equal\0" "greater\0" "question\0" "at\0" "A\0" "B\0" - "C\0" "D\0" "E\0" "F\0" "G\0" "H\0" "I\0" "J\0" "K\0" "L\0" "M\0" "N\0" "O\0" - "P\0" "Q\0" "R\0" "S\0" "T\0" "U\0" "V\0" "W\0" "X\0" "Y\0" "Z\0" - "bracketleft\0" "backslash\0" "bracketright\0" "asciicircum\0" "underscore\0" - "quoteleft\0" "a\0" "b\0" "c\0" "d\0" "e\0" "f\0" "g\0" "h\0" "i\0" "j\0" - "k\0" "l\0" "m\0" "n\0" "o\0" "p\0" "q\0" "r\0" "s\0" "t\0" "u\0" "v\0" "w\0" - "x\0" "y\0" "z\0" "braceleft\0" "bar\0" "braceright\0" "asciitilde\0" - "exclamdown\0" "cent\0" "sterling\0" "fraction\0" "yen\0" "florin\0" - "section\0" "currency\0" "quotesingle\0" "quotedblleft\0" "guillemotleft\0" - "guilsinglleft\0" "guilsinglright\0" "fi\0" "fl\0" "endash\0" "dagger\0" - "daggerdbl\0" "periodcentered\0" "paragraph\0" "bullet\0" "quotesinglbase\0" - "quotedblbase\0" "quotedblright\0" "guillemotright\0" "ellipsis\0" - "perthousand\0" "questiondown\0" "grave\0" "acute\0" "circumflex\0" "tilde\0" - "macron\0" "breve\0" "dotaccent\0" "dieresis\0" "ring\0" "cedilla\0" - "hungarumlaut\0" "ogonek\0" "caron\0" "emdash\0" "AE\0" "ordfeminine\0" - "Lslash\0" "Oslash\0" "OE\0" "ordmasculine\0" "ae\0" "dotlessi\0" "lslash\0" - "oslash\0" "oe\0" "germandbls\0" -}; - -static const int16_t ps_standard_encoding_offset[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1/*space*/, 7/*exclam*/, 14/*quotedbl*/, 23/*numbersign*/, - 34/*dollar*/, 41/*percent*/, 49/*ampersand*/, 59/*quoteright*/, - 70/*parenleft*/, 80/*parenright*/, 91/*asterisk*/, 100/*plus*/, 105/*comma*/, - 111/*hyphen*/, 118/*period*/, 125/*slash*/, 131/*zero*/, 136/*one*/, - 140/*two*/, 144/*three*/, 150/*four*/, 155/*five*/, 160/*six*/, 164/*seven*/, - 170/*eight*/, 176/*nine*/, 181/*colon*/, 187/*semicolon*/, 197/*less*/, - 202/*equal*/, 208/*greater*/, 216/*question*/, 225/*at*/, 228/*A*/, 230/*B*/, - 232/*C*/, 234/*D*/, 236/*E*/, 238/*F*/, 240/*G*/, 242/*H*/, 244/*I*/, - 246/*J*/, 248/*K*/, 250/*L*/, 252/*M*/, 254/*N*/, 256/*O*/, 258/*P*/, - 260/*Q*/, 262/*R*/, 264/*S*/, 266/*T*/, 268/*U*/, 270/*V*/, 272/*W*/, - 274/*X*/, 276/*Y*/, 278/*Z*/, 280/*bracketleft*/, 292/*backslash*/, - 302/*bracketright*/, 315/*asciicircum*/, 327/*underscore*/, 338/*quoteleft*/, - 348/*a*/, 350/*b*/, 352/*c*/, 354/*d*/, 356/*e*/, 358/*f*/, 360/*g*/, - 362/*h*/, 364/*i*/, 366/*j*/, 368/*k*/, 370/*l*/, 372/*m*/, 374/*n*/, - 376/*o*/, 378/*p*/, 380/*q*/, 382/*r*/, 384/*s*/, 386/*t*/, 388/*u*/, - 390/*v*/, 392/*w*/, 394/*x*/, 396/*y*/, 398/*z*/, 400/*braceleft*/, - 410/*bar*/, 414/*braceright*/, 425/*asciitilde*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 436/*exclamdown*/, 447/*cent*/, 452/*sterling*/, 461/*fraction*/, 470/*yen*/, - 474/*florin*/, 481/*section*/, 489/*currency*/, 498/*quotesingle*/, - 510/*quotedblleft*/, 523/*guillemotleft*/, 537/*guilsinglleft*/, - 551/*guilsinglright*/, 566/*fi*/, 569/*fl*/, 0, 572/*endash*/, 579/*dagger*/, - 586/*daggerdbl*/, 596/*periodcentered*/, 0, 611/*paragraph*/, 621/*bullet*/, - 628/*quotesinglbase*/, 643/*quotedblbase*/, 656/*quotedblright*/, - 670/*guillemotright*/, 685/*ellipsis*/, 694/*perthousand*/, 0, - 706/*questiondown*/, 0, 719/*grave*/, 725/*acute*/, 731/*circumflex*/, - 742/*tilde*/, 748/*macron*/, 755/*breve*/, 761/*dotaccent*/, 771/*dieresis*/, - 0, 780/*ring*/, 785/*cedilla*/, 0, 793/*hungarumlaut*/, 806/*ogonek*/, - 813/*caron*/, 819/*emdash*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 826/*AE*/, 0, 829/*ordfeminine*/, 0, 0, 0, 0, 841/*Lslash*/, 848/*Oslash*/, - 855/*OE*/, 858/*ordmasculine*/, 0, 0, 0, 0, 0, 871/*ae*/, 0, 0, 0, - 874/*dotlessi*/, 0, 0, 883/*lslash*/, 890/*oslash*/, 897/*oe*/, - 900/*germandbls*/, 0, 0, 0, 0, -}; - -#define ps_standard_encoding(index) ((index) ? ps_standard_encoding_symbol+ps_standard_encoding_offset[(index)] : NULL) - -static cairo_status_t -use_standard_encoding_glyph (cairo_type1_font_subset_t *font, int index) -{ - const char *glyph_name; - - if (index < 0 || index > 255) - return CAIRO_STATUS_SUCCESS; - - glyph_name = ps_standard_encoding(index); - if (glyph_name == NULL) - return CAIRO_STATUS_SUCCESS; - - index = cairo_type1_font_subset_lookup_glyph (font, - glyph_name, - strlen(glyph_name)); - if (index < 0) - return CAIRO_INT_STATUS_UNSUPPORTED; - - cairo_type1_font_subset_use_glyph (font, index); - - return CAIRO_STATUS_SUCCESS; -} - -#define TYPE1_CHARSTRING_COMMAND_ESCAPE (12) -#define TYPE1_CHARSTRING_COMMAND_SEAC (32 + 6) - -static cairo_status_t -cairo_type1_font_subset_look_for_seac(cairo_type1_font_subset_t *font, - const char *name, int name_length, - const char *encrypted_charstring, int encrypted_charstring_length) -{ - cairo_status_t status; - unsigned char *charstring; - const unsigned char *end; - const unsigned char *p; - int stack[5], sp, value; - int command; - - charstring = malloc (encrypted_charstring_length); - if (charstring == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - cairo_type1_font_subset_decrypt_charstring ((const unsigned char *) - encrypted_charstring, - encrypted_charstring_length, - charstring); - end = charstring + encrypted_charstring_length; - - p = charstring + 4; - sp = 0; - - while (p < end) { - if (*p < 32) { - command = *p++; - - if (command == TYPE1_CHARSTRING_COMMAND_ESCAPE) - command = 32 + *p++; - - switch (command) { - case TYPE1_CHARSTRING_COMMAND_SEAC: - /* The seac command takes five integer arguments. The - * last two are glyph indices into the PS standard - * encoding give the names of the glyphs that this - * glyph is composed from. All we need to do is to - * make sure those glyphs are present in the subset - * under their standard names. */ - status = use_standard_encoding_glyph (font, stack[3]); - if (status) - return status; - - status = use_standard_encoding_glyph (font, stack[4]); - if (status) - return status; - - sp = 0; - break; - - default: - sp = 0; - break; - } - } else { - /* integer argument */ - p = cairo_type1_font_subset_decode_integer (p, &value); - if (sp < 5) - stack[sp++] = value; - } - } - - free (charstring); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -write_used_glyphs (cairo_type1_font_subset_t *font, - const char *name, int name_length, - const char *charstring, int charstring_length) -{ - cairo_status_t status; - char buffer[256]; - int length; - - length = snprintf (buffer, sizeof buffer, - "/%.*s %d %s ", - name_length, name, charstring_length, font->rd); - status = cairo_type1_font_subset_write_encrypted (font, buffer, length); - if (status) - return status; - - status = cairo_type1_font_subset_write_encrypted (font, - charstring, - charstring_length); - if (status) - return status; - - length = snprintf (buffer, sizeof buffer, "%s\n", font->nd); - status = cairo_type1_font_subset_write_encrypted (font, buffer, length); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -typedef cairo_status_t (*glyph_func_t) (cairo_type1_font_subset_t *font, - const char *name, int name_length, - const char *charstring, int charstring_length); - -static cairo_status_t -cairo_type1_font_subset_for_each_glyph (cairo_type1_font_subset_t *font, - const char *dict_start, - const char *dict_end, - glyph_func_t func, - const char **dict_out) -{ - int charstring_length, name_length, glyph_index; - const char *p, *charstring, *name; - char *end; - - /* We're looking at '/' in the name of the first glyph. The glyph - * definitions are on the form: - * - * /name 23 RD <23 binary bytes> ND - * - * or alternatively using -| and |- instead of RD and ND. - * - * We parse the glyph name and see if it is in the subset. If it - * is, we call the specified callback with the glyph name and - * glyph data, otherwise we just skip it. We need to parse - * through a glyph definition; we can't just find the next '/', - * since the binary data could contain a '/'. - */ - - p = dict_start; - - while (*p == '/') { - name = p + 1; - p = skip_token (p, dict_end); - name_length = p - name; - - charstring_length = strtol (p, &end, 10); - if (p == end) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Skip past -| or RD to binary data. There is exactly one space - * between the -| or RD token and the encrypted data, thus '+ 1'. */ - charstring = skip_token (end, dict_end) + 1; - - /* Skip binary data and |- or ND token. */ - p = skip_token (charstring + charstring_length, dict_end); - while (p < dict_end && isspace(*p)) - p++; - - /* In case any of the skip_token() calls above reached EOF, p will - * be equal to dict_end. */ - if (p == dict_end) - return CAIRO_INT_STATUS_UNSUPPORTED; - - glyph_index = cairo_type1_font_subset_lookup_glyph (font, - name, name_length); - if (font->glyphs[glyph_index].subset_index >= 0) { - cairo_status_t status = func (font, - name, name_length, - charstring, charstring_length); - if (status) - return status; - } - } - - *dict_out = p; - - return CAIRO_STATUS_SUCCESS; -} - - -static cairo_status_t -cairo_type1_font_subset_write_private_dict (cairo_type1_font_subset_t *font, - const char *name) -{ - cairo_status_t status; - const char *p, *charstrings, *dict_start; - const char *closefile_token; - char buffer[32], *glyph_count_end; - int num_charstrings, length; - - /* The private dict holds hint information, common subroutines and - * the actual glyph definitions (charstrings). - * - * FIXME: update this comment. - * - * What we do here is scan directly the /CharString token, which - * marks the beginning of the glyph definitions. Then we parse - * through the glyph definitions and weed out the glyphs not in - * our subset. Everything else before and after the glyph - * definitions is copied verbatim to the output. It might be - * worthwile to figure out which of the common subroutines are - * used by the glyphs in the subset and get rid of the rest. */ - - /* FIXME: The /Subrs array contains binary data and could - * conceivably have "/CharStrings" in it, so we might need to skip - * this more cleverly. */ - charstrings = find_token (font->cleartext, font->cleartext_end, "/CharStrings"); - if (charstrings == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Scan past /CharStrings and the integer following it. */ - p = charstrings + strlen ("/CharStrings"); - num_charstrings = strtol (p, &glyph_count_end, 10); - if (p == glyph_count_end) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Look for a '/' which marks the beginning of the first glyph - * definition. */ - for (p = glyph_count_end; p < font->cleartext_end; p++) - if (*p == '/') - break; - if (p == font->cleartext_end) - return CAIRO_INT_STATUS_UNSUPPORTED; - dict_start = p; - - status = cairo_type1_font_subset_get_glyph_names_and_widths (font); - if (status) - return status; - - /* Now that we have the private dictionary broken down in - * sections, do the first pass through the glyph definitions to - * figure out which subrs and othersubrs are use and which extra - * glyphs may be required by the seac operator. */ - status = cairo_type1_font_subset_for_each_glyph (font, - dict_start, - font->cleartext_end, - cairo_type1_font_subset_look_for_seac, - &p); - if (status) - return status; - - closefile_token = find_token (p, font->cleartext_end, "closefile"); - if (closefile_token == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = cairo_type1_font_subset_get_glyph_names_and_widths (font); - if (status) - return status; - - /* We're ready to start outputting. First write the header, - * i.e. the public part of the font dict.*/ - status = cairo_type1_font_subset_write_header (font, name); - if (status) - return status; - - font->base.header_size = _cairo_output_stream_get_position (font->output); - - - /* Start outputting the private dict. First output everything up - * to the /CharStrings token. */ - status = cairo_type1_font_subset_write_encrypted (font, font->cleartext, - charstrings - font->cleartext); - if (status) - return status; - - /* Write out new charstring count */ - length = snprintf (buffer, sizeof buffer, - "/CharStrings %d", font->num_glyphs); - status = cairo_type1_font_subset_write_encrypted (font, buffer, length); - if (status) - return status; - - /* Write out text between the charstring count and the first - * charstring definition */ - status = cairo_type1_font_subset_write_encrypted (font, glyph_count_end, - dict_start - glyph_count_end); - if (status) - return status; - - /* Write out the charstring definitions for each of the glyphs in - * the subset. */ - status = cairo_type1_font_subset_for_each_glyph (font, - dict_start, - font->cleartext_end, - write_used_glyphs, - &p); - if (status) - return status; - - /* Output what's left between the end of the glyph definitions and - * the end of the private dict to the output. */ - status = cairo_type1_font_subset_write_encrypted (font, p, - closefile_token - p + strlen ("closefile") + 1); - if (status) - return status; - - _cairo_output_stream_write (font->output, "\n", 1); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_type1_font_subset_write_trailer(cairo_type1_font_subset_t *font) -{ - const char *cleartomark_token; - int i; - static const char zeros[65] = - "0000000000000000000000000000000000000000000000000000000000000000\n"; - - /* Some fonts have conditional save/restore around the entire font - * dict, so we need to retain whatever postscript code that may - * come after 'cleartomark'. */ - - for (i = 0; i < 8; i++) - _cairo_output_stream_write (font->output, zeros, sizeof zeros); - - cleartomark_token = find_token (font->type1_data, font->type1_end, "cleartomark"); - if (cleartomark_token == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - _cairo_output_stream_write (font->output, cleartomark_token, - font->type1_end - cleartomark_token); - - /* some fonts do not have a newline at the end of the last line */ - _cairo_output_stream_printf (font->output, "\n"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -type1_font_write (void *closure, const unsigned char *data, unsigned int length) -{ - cairo_type1_font_subset_t *font = closure; - - return _cairo_array_append_multiple (&font->contents, data, length); -} - -static cairo_status_t -cairo_type1_font_subset_write (cairo_type1_font_subset_t *font, - const char *name) -{ - cairo_status_t status; - - status = cairo_type1_font_subset_find_segments (font); - if (status) - return status; - - status = cairo_type1_font_subset_decrypt_eexec_segment (font); - if (status) - return status; - - /* Determine which glyph definition delimiters to use. */ - if (find_token (font->cleartext, font->cleartext_end, "/-|") != NULL) { - font->rd = "-|"; - font->nd = "|-"; - } else if (find_token (font->cleartext, font->cleartext_end, "/RD") != NULL) { - font->rd = "RD"; - font->nd = "ND"; - } else { - /* Don't know *what* kind of font this is... */ - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - font->eexec_key = CAIRO_TYPE1_PRIVATE_DICT_KEY; - font->hex_column = 0; - - status = cairo_type1_font_subset_write_private_dict (font, name); - if (status) - return status; - - font->base.data_size = _cairo_output_stream_get_position (font->output) - - font->base.header_size; - - status = cairo_type1_font_subset_write_trailer (font); - if (status) - return status; - - font->base.trailer_size = - _cairo_output_stream_get_position (font->output) - - font->base.header_size - font->base.data_size; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -cairo_type1_font_subset_generate (void *abstract_font, - const char *name) - -{ - cairo_type1_font_subset_t *font = abstract_font; - cairo_ft_unscaled_font_t *ft_unscaled_font; - unsigned long ret; - cairo_status_t status; - - ft_unscaled_font = (cairo_ft_unscaled_font_t *) font->base.unscaled_font; - font->face = _cairo_ft_unscaled_font_lock_face (ft_unscaled_font); - if (font->face == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font->type1_length = font->face->stream->size; - font->type1_data = malloc (font->type1_length); - if (font->type1_data == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail; - } - - if (font->face->stream->read) { - ret = font->face->stream->read (font->face->stream, 0, - (unsigned char *) font->type1_data, - font->type1_length); - if (ret != font->type1_length) { - status = _cairo_error (CAIRO_STATUS_READ_ERROR); - goto fail; - } - } else { - memcpy (font->type1_data, - font->face->stream->base, font->type1_length); - } - - status = _cairo_array_grow_by (&font->contents, 4096); - if (status) - goto fail; - - font->output = _cairo_output_stream_create (type1_font_write, NULL, font); - if (_cairo_output_stream_get_status (font->output)) { - status = _cairo_output_stream_destroy (font->output); - goto fail; - } - - status = cairo_type1_font_subset_write (font, name); - if (status) - goto fail; - - font->base.data = _cairo_array_index (&font->contents, 0); - - fail: - _cairo_ft_unscaled_font_unlock_face (ft_unscaled_font); - - return status; -} - -static void -cairo_type1_font_subset_destroy (void *abstract_font) -{ - cairo_type1_font_subset_t *font = abstract_font; - unsigned int i; - - /* If the subset generation failed, some of the pointers below may - * be NULL depending on at which point the error occurred. */ - - _cairo_array_fini (&font->contents); - - free (font->type1_data); - if (font->glyphs != NULL) - for (i = 0; i < font->base.num_glyphs; i++) { - free (font->glyphs[i].name); - } - - _cairo_unscaled_font_destroy (font->base.unscaled_font); - - if (font->base.base_font) - free (font->base.base_font); - free (font->glyphs); - free (font); -} - - -cairo_status_t -_cairo_type1_subset_init (cairo_type1_subset_t *type1_subset, - const char *name, - cairo_scaled_font_subset_t *scaled_font_subset, - cairo_bool_t hex_encode) -{ - cairo_type1_font_subset_t *font = NULL; /* hide compiler warning */ - cairo_status_t status; - unsigned long parent_glyph, length; - unsigned int i; - cairo_unscaled_font_t *unscaled_font; - char buf[30]; - - /* XXX: Need to fix this to work with a general cairo_unscaled_font_t. */ - if (!_cairo_scaled_font_is_ft (scaled_font_subset->scaled_font)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (_cairo_ft_scaled_font_is_vertical (scaled_font_subset->scaled_font)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - unscaled_font = _cairo_ft_scaled_font_get_unscaled_font (scaled_font_subset->scaled_font); - - status = _cairo_type1_font_subset_create (unscaled_font, &font, hex_encode); - if (status) - return status; - - for (i = 0; i < scaled_font_subset->num_glyphs; i++) { - parent_glyph = scaled_font_subset->glyphs[i]; - cairo_type1_font_subset_use_glyph (font, parent_glyph); - } - - status = cairo_type1_font_subset_generate (font, name); - if (status) - goto fail1; - - if (font->base.base_font) { - type1_subset->base_font = strdup (font->base.base_font); - } else { - snprintf(buf, sizeof (buf), "CairoFont-%u-%u", - scaled_font_subset->font_id, scaled_font_subset->subset_id); - type1_subset->base_font = strdup (buf); - } - if (type1_subset->base_font == NULL) - goto fail1; - - type1_subset->widths = calloc (sizeof (int), font->num_glyphs); - if (type1_subset->widths == NULL) - goto fail2; - for (i = 0; i < font->base.num_glyphs; i++) { - if (font->glyphs[i].subset_index < 0) - continue; - type1_subset->widths[font->glyphs[i].subset_index] = - font->glyphs[i].width; - } - - type1_subset->x_min = font->base.x_min; - type1_subset->y_min = font->base.y_min; - type1_subset->x_max = font->base.x_max; - type1_subset->y_max = font->base.y_max; - type1_subset->ascent = font->base.ascent; - type1_subset->descent = font->base.descent; - - length = font->base.header_size + font->base.data_size + - font->base.trailer_size; - type1_subset->data = malloc (length); - if (type1_subset->data == NULL) - goto fail3; - - memcpy (type1_subset->data, - _cairo_array_index (&font->contents, 0), length); - - type1_subset->header_length = font->base.header_size; - type1_subset->data_length = font->base.data_size; - type1_subset->trailer_length = font->base.trailer_size; - - cairo_type1_font_subset_destroy (font); - - return CAIRO_STATUS_SUCCESS; - - fail3: - free (type1_subset->widths); - fail2: - free (type1_subset->base_font); - fail1: - cairo_type1_font_subset_destroy (font); - - return status; -} - -void -_cairo_type1_subset_fini (cairo_type1_subset_t *subset) -{ - free (subset->base_font); - free (subset->widths); - free (subset->data); -} - -cairo_bool_t -_cairo_type1_scaled_font_is_type1 (cairo_scaled_font_t *scaled_font) -{ - cairo_ft_unscaled_font_t *unscaled; - FT_Face face; - PS_FontInfoRec font_info; - cairo_bool_t is_type1 = FALSE; - - if (!_cairo_scaled_font_is_ft (scaled_font)) - return FALSE; - unscaled = (cairo_ft_unscaled_font_t *) _cairo_ft_scaled_font_get_unscaled_font (scaled_font); - face = _cairo_ft_unscaled_font_lock_face (unscaled); - if (!face) - return FALSE; - - if (FT_Get_PS_Font_Info(face, &font_info) == 0) - is_type1 = TRUE; - - /* OpenType/CFF fonts also have a PS_FontInfoRec */ -#if HAVE_FT_LOAD_SFNT_TABLE - if (FT_IS_SFNT (face)) - is_type1 = FALSE; -#endif - - _cairo_ft_unscaled_font_unlock_face (unscaled); - - return is_type1; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-types-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-types-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-types-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-types-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,323 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_TYPES_PRIVATE_H -#define CAIRO_TYPES_PRIVATE_H - -/* This is the only header file not including cairoint.h. It only contains - * typedefs.*/ -#include "cairo.h" -#include "cairo-fixed-type-private.h" - -typedef struct _cairo_array cairo_array_t; -typedef struct _cairo_hash_table cairo_hash_table_t; -typedef struct _cairo_cache cairo_cache_t; -typedef struct _cairo_hash_entry cairo_hash_entry_t; -typedef struct _cairo_surface_backend cairo_surface_backend_t; -typedef struct _cairo_clip cairo_clip_t; -typedef struct _cairo_output_stream cairo_output_stream_t; -typedef struct _cairo_scaled_font_subsets cairo_scaled_font_subsets_t; -typedef struct _cairo_paginated_surface_backend cairo_paginated_surface_backend_t; -typedef struct _cairo_scaled_font_backend cairo_scaled_font_backend_t; -typedef struct _cairo_font_face_backend cairo_font_face_backend_t; -typedef struct _cairo_xlib_screen_info cairo_xlib_screen_info_t; -typedef cairo_array_t cairo_user_data_array_t; - -/** - * cairo_hash_entry_t: - * - * A #cairo_hash_entry_t contains both a key and a value for - * #cairo_hash_table_t. User-derived types for #cairo_hash_entry_t must - * be type-compatible with this structure (eg. they must have an - * unsigned long as the first parameter. The easiest way to get this - * is to use: - * - * typedef _my_entry { - * cairo_hash_entry_t base; - * ... Remainder of key and value fields here .. - * } my_entry_t; - * - * which then allows a pointer to my_entry_t to be passed to any of - * the #cairo_hash_table_t functions as follows without requiring a cast: - * - * _cairo_hash_table_insert (hash_table, &my_entry->base); - * - * IMPORTANT: The caller is reponsible for initializing - * my_entry->base.hash with a hash code derived from the key. The - * essential property of the hash code is that keys_equal must never - * return %TRUE for two keys that have different hashes. The best hash - * code will reduce the frequency of two keys with the same code for - * which keys_equal returns %FALSE. - * - * Which parts of the entry make up the "key" and which part make up - * the value are entirely up to the caller, (as determined by the - * computation going into base.hash as well as the keys_equal - * function). A few of the #cairo_hash_table_t functions accept an entry - * which will be used exclusively as a "key", (indicated by a - * parameter name of key). In these cases, the value-related fields of - * the entry need not be initialized if so desired. - **/ -struct _cairo_hash_entry { - unsigned long hash; -}; - -struct _cairo_array { - unsigned int size; - unsigned int num_elements; - unsigned int element_size; - char **elements; - - cairo_bool_t is_snapshot; -}; - -struct _cairo_font_options { - cairo_antialias_t antialias; - cairo_subpixel_order_t subpixel_order; - cairo_hint_style_t hint_style; - cairo_hint_metrics_t hint_metrics; -}; - -struct _cairo_cache { - cairo_hash_table_t *hash_table; - - cairo_destroy_func_t entry_destroy; - - unsigned long max_size; - unsigned long size; - - int freeze_count; -}; - -typedef enum _cairo_paginated_mode { - CAIRO_PAGINATED_MODE_ANALYZE, /* analyze page regions */ - CAIRO_PAGINATED_MODE_RENDER, /* render page contents */ - CAIRO_PAGINATED_MODE_FALLBACK /* paint fallback images */ -} cairo_paginated_mode_t; - -/* Sure wish C had a real enum type so that this would be distinct - from cairo_status_t. Oh well, without that, I'll use this bogus 1000 - offset */ -typedef enum _cairo_int_status { - CAIRO_INT_STATUS_DEGENERATE = 1000, - CAIRO_INT_STATUS_UNSUPPORTED, - CAIRO_INT_STATUS_NOTHING_TO_DO, - CAIRO_INT_STATUS_CACHE_EMPTY, - CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY, - CAIRO_INT_STATUS_IMAGE_FALLBACK, - CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN -} cairo_int_status_t; - -typedef enum _cairo_internal_surface_type { - CAIRO_INTERNAL_SURFACE_TYPE_META = 0x1000, - CAIRO_INTERNAL_SURFACE_TYPE_PAGINATED, - CAIRO_INTERNAL_SURFACE_TYPE_ANALYSIS, - CAIRO_INTERNAL_SURFACE_TYPE_TEST_META, - CAIRO_INTERNAL_SURFACE_TYPE_TEST_FALLBACK, - CAIRO_INTERNAL_SURFACE_TYPE_TEST_PAGINATED -} cairo_internal_surface_type_t; - -typedef struct _cairo_region cairo_region_t; - -typedef struct _cairo_point { - cairo_fixed_t x; - cairo_fixed_t y; -} cairo_point_t; - -typedef struct _cairo_slope -{ - cairo_fixed_t dx; - cairo_fixed_t dy; -} cairo_slope_t, cairo_distance_t; - -typedef struct _cairo_point_double { - double x; - double y; -} cairo_point_double_t; - -typedef struct _cairo_distance_double { - double dx; - double dy; -} cairo_distance_double_t; - -typedef struct _cairo_line { - cairo_point_t p1; - cairo_point_t p2; -} cairo_line_t, cairo_box_t; - -typedef struct _cairo_trapezoid { - cairo_fixed_t top, bottom; - cairo_line_t left, right; -} cairo_trapezoid_t; - -struct _cairo_rectangle_int16 { - int16_t x, y; - uint16_t width, height; -}; - -struct _cairo_rectangle_int32 { - int32_t x, y; - uint32_t width, height; -}; - -typedef struct _cairo_rectangle_int16 cairo_glyph_size_t; - -struct _cairo_point_int16 { - int16_t x, y; -}; - -struct _cairo_point_int32 { - int32_t x, y; -}; - -#if CAIRO_FIXED_BITS == 32 && CAIRO_FIXED_FRAC_BITS >= 16 -typedef struct _cairo_rectangle_int16 cairo_rectangle_int_t; -typedef struct _cairo_point_int16 cairo_point_int_t; -#define CAIRO_RECT_INT_MIN INT16_MIN -#define CAIRO_RECT_INT_MAX INT16_MAX -#elif CAIRO_FIXED_BITS == 32 -typedef struct _cairo_rectangle_int32 cairo_rectangle_int_t; -typedef struct _cairo_point_int32 cairo_point_int_t; -#define CAIRO_RECT_INT_MIN INT32_MIN -#define CAIRO_RECT_INT_MAX INT32_MAX -#else -#error Not sure how to pick a cairo_rectangle_int_t and cairo_point_int_t for your CAIRO_FIXED_BITS! -#endif - -typedef struct _cairo_box_int { - cairo_point_int_t p1; - cairo_point_int_t p2; -} cairo_box_int_t; - -typedef enum _cairo_direction { - CAIRO_DIRECTION_FORWARD, - CAIRO_DIRECTION_REVERSE -} cairo_direction_t; - -typedef struct _cairo_path_fixed cairo_path_fixed_t; -typedef enum _cairo_clip_mode { - CAIRO_CLIP_MODE_PATH, - CAIRO_CLIP_MODE_REGION, - CAIRO_CLIP_MODE_MASK -} cairo_clip_mode_t; -typedef struct _cairo_clip_path cairo_clip_path_t; - -typedef struct _cairo_edge { - cairo_line_t edge; - int clockWise; - - cairo_fixed_t current_x; -} cairo_edge_t; - -typedef struct _cairo_polygon { - cairo_status_t status; - - cairo_point_t first_point; - cairo_point_t current_point; - cairo_bool_t has_current_point; - - int num_edges; - int edges_size; - cairo_edge_t *edges; - cairo_edge_t edges_embedded[8]; -} cairo_polygon_t; - -typedef struct _cairo_spline_knots { - cairo_point_t a, b, c, d; -} cairo_spline_knots_t; -typedef struct _cairo_spline { - cairo_spline_knots_t knots; - - cairo_slope_t initial_slope; - cairo_slope_t final_slope; - - int num_points; - int points_size; - cairo_point_t *points; - cairo_point_t points_embedded[8]; -} cairo_spline_t; - -typedef struct _cairo_pen_vertex { - cairo_point_t point; - - cairo_slope_t slope_ccw; - cairo_slope_t slope_cw; -} cairo_pen_vertex_t; - -typedef struct _cairo_pen { - double radius; - double tolerance; - - cairo_pen_vertex_t *vertices; - int num_vertices; -} cairo_pen_t; - -typedef struct _cairo_color cairo_color_t; -typedef struct _cairo_image_surface cairo_image_surface_t; - -typedef struct _cairo_stroke_style { - double line_width; - cairo_line_cap_t line_cap; - cairo_line_join_t line_join; - double miter_limit; - double *dash; - unsigned int num_dashes; - double dash_offset; -} cairo_stroke_style_t; - -typedef struct _cairo_format_masks { - int bpp; - unsigned long alpha_mask; - unsigned long red_mask; - unsigned long green_mask; - unsigned long blue_mask; -} cairo_format_masks_t; - -typedef enum { - CAIRO_STOCK_WHITE, - CAIRO_STOCK_BLACK, - CAIRO_STOCK_TRANSPARENT -} cairo_stock_t; - -typedef enum _cairo_image_transparency { - CAIRO_IMAGE_IS_OPAQUE, - CAIRO_IMAGE_HAS_BILEVEL_ALPHA, - CAIRO_IMAGE_HAS_ALPHA, - CAIRO_IMAGE_UNKNOWN -} cairo_image_transparency_t; - -#endif /* CAIRO_TYPES_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-unicode.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-unicode.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-unicode.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-unicode.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,336 +0,0 @@ -/* cairo_unicode.c: Unicode conversion routines - * - * The code in this file is derived from GLib's gutf8.c and - * ultimately from libunicode. It is relicensed under the - * dual LGPL/MPL with permission of the original authors. - * - * Copyright © 1999 Tom Tromey - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Tom Tromey. - * and Red Hat, Inc. - * - * Contributor(s): - * Owen Taylor - */ - -#include "cairoint.h" - -#define UTF8_COMPUTE(Char, Mask, Len) \ - if (Char < 128) \ - { \ - Len = 1; \ - Mask = 0x7f; \ - } \ - else if ((Char & 0xe0) == 0xc0) \ - { \ - Len = 2; \ - Mask = 0x1f; \ - } \ - else if ((Char & 0xf0) == 0xe0) \ - { \ - Len = 3; \ - Mask = 0x0f; \ - } \ - else if ((Char & 0xf8) == 0xf0) \ - { \ - Len = 4; \ - Mask = 0x07; \ - } \ - else if ((Char & 0xfc) == 0xf8) \ - { \ - Len = 5; \ - Mask = 0x03; \ - } \ - else if ((Char & 0xfe) == 0xfc) \ - { \ - Len = 6; \ - Mask = 0x01; \ - } \ - else \ - Len = -1; - -#define UTF8_LENGTH(Char) \ - ((Char) < 0x80 ? 1 : \ - ((Char) < 0x800 ? 2 : \ - ((Char) < 0x10000 ? 3 : \ - ((Char) < 0x200000 ? 4 : \ - ((Char) < 0x4000000 ? 5 : 6))))) - -#define UTF8_GET(Result, Chars, Count, Mask, Len) \ - (Result) = (Chars)[0] & (Mask); \ - for ((Count) = 1; (Count) < (Len); ++(Count)) \ - { \ - if (((Chars)[(Count)] & 0xc0) != 0x80) \ - { \ - (Result) = -1; \ - break; \ - } \ - (Result) <<= 6; \ - (Result) |= ((Chars)[(Count)] & 0x3f); \ - } - -#define UNICODE_VALID(Char) \ - ((Char) < 0x110000 && \ - (((Char) & 0xFFFFF800) != 0xD800) && \ - ((Char) < 0xFDD0 || (Char) > 0xFDEF) && \ - ((Char) & 0xFFFE) != 0xFFFE) - -static const char utf8_skip_data[256] = { - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1 -}; - -#define UTF8_NEXT_CHAR(p) ((p) + utf8_skip_data[*(unsigned char *)(p)]) - -/* Converts a sequence of bytes encoded as UTF-8 to a Unicode character. - * If @p does not point to a valid UTF-8 encoded character, results are - * undefined. - **/ -static uint32_t -_utf8_get_char (const unsigned char *p) -{ - int i, mask = 0, len; - uint32_t result; - unsigned char c = (unsigned char) *p; - - UTF8_COMPUTE (c, mask, len); - if (len == -1) - return (uint32_t)-1; - UTF8_GET (result, p, i, mask, len); - - return result; -} - -/* Like _utf8_get_char, but take a maximum length - * and return (uint32_t)-2 on incomplete trailing character - */ -static uint32_t -_utf8_get_char_extended (const unsigned char *p, - long max_len) -{ - int i, len; - uint32_t wc = (unsigned char) *p; - - if (wc < 0x80) { - return wc; - } else if (wc < 0xc0) { - return (uint32_t)-1; - } else if (wc < 0xe0) { - len = 2; - wc &= 0x1f; - } else if (wc < 0xf0) { - len = 3; - wc &= 0x0f; - } else if (wc < 0xf8) { - len = 4; - wc &= 0x07; - } else if (wc < 0xfc) { - len = 5; - wc &= 0x03; - } else if (wc < 0xfe) { - len = 6; - wc &= 0x01; - } else { - return (uint32_t)-1; - } - - if (max_len >= 0 && len > max_len) { - for (i = 1; i < max_len; i++) { - if ((((unsigned char *)p)[i] & 0xc0) != 0x80) - return (uint32_t)-1; - } - return (uint32_t)-2; - } - - for (i = 1; i < len; ++i) { - uint32_t ch = ((unsigned char *)p)[i]; - - if ((ch & 0xc0) != 0x80) { - if (ch) - return (uint32_t)-1; - else - return (uint32_t)-2; - } - - wc <<= 6; - wc |= (ch & 0x3f); - } - - if (UTF8_LENGTH(wc) != len) - return (uint32_t)-1; - - return wc; -} - -/** - * _cairo_utf8_to_utf32: - * @str: an UTF-8 string - * @len: length of @str in bytes, or -1 if it is nul-terminated. - * If @len is supplied and the string has an embedded nul - * byte, only the portion before the nul byte is converted. - * @result: location to store a pointer to a newly allocated UTF-32 - * string (always native endian). Free with free(). A 0 - * word will be written after the last character. - * @items_written: location to store number of 32-bit words - * written. (Not including the trailing 0) - * - * Converts a UTF-8 string to UCS-4. UCS-4 is an encoding of Unicode - * with 1 32-bit word per character. The string is validated to - * consist entirely of valid Unicode characters. - * - * Return value: %CAIRO_STATUS_SUCCESS if the entire string was - * successfully converted. %CAIRO_STATUS_INVALID_STRING if an - * an invalid sequence was found. - **/ -cairo_status_t -_cairo_utf8_to_ucs4 (const unsigned char *str, - int len, - uint32_t **result, - int *items_written) -{ - uint32_t *str32 = NULL; - int n_chars, i; - const unsigned char *in; - - in = str; - n_chars = 0; - while ((len < 0 || str + len - in > 0) && *in) - { - uint32_t wc = _utf8_get_char_extended (in, str + len - in); - if (wc & 0x80000000 || !UNICODE_VALID (wc)) - return _cairo_error (CAIRO_STATUS_INVALID_STRING); - - n_chars++; - if (n_chars == INT_MAX) - return _cairo_error (CAIRO_STATUS_INVALID_STRING); - - in = UTF8_NEXT_CHAR (in); - } - - str32 = _cairo_malloc_ab (n_chars + 1, sizeof (uint32_t)); - if (!str32) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - in = str; - for (i=0; i < n_chars; i++) { - str32[i] = _utf8_get_char (in); - in = UTF8_NEXT_CHAR (in); - } - str32[i] = 0; - - *result = str32; - if (items_written) - *items_written = n_chars; - - return CAIRO_STATUS_SUCCESS; -} - -#if CAIRO_HAS_UTF8_TO_UTF16 -/** - * _cairo_utf8_to_utf16: - * @str: an UTF-8 string - * @len: length of @str in bytes, or -1 if it is nul-terminated. - * If @len is supplied and the string has an embedded nul - * byte, only the portion before the nul byte is converted. - * @result: location to store a pointer to a newly allocated UTF-16 - * string (always native endian). Free with free(). A 0 - * word will be written after the last character. - * @items_written: location to store number of 16-bit words - * written. (Not including the trailing 0) - * - * Converts a UTF-8 string to UTF-16. UTF-16 is an encoding of Unicode - * where characters are represented either as a single 16-bit word, or - * as a pair of 16-bit "surrogates". The string is validated to - * consist entirely of valid Unicode characters. - * - * Return value: %CAIRO_STATUS_SUCCESS if the entire string was - * successfully converted. %CAIRO_STATUS_INVALID_STRING if an - * an invalid sequence was found. - **/ -cairo_status_t -_cairo_utf8_to_utf16 (const unsigned char *str, - int len, - uint16_t **result, - int *items_written) -{ - uint16_t *str16 = NULL; - int n16, i; - const unsigned char *in; - - in = str; - n16 = 0; - while ((len < 0 || str + len - in > 0) && *in) { - uint32_t wc = _utf8_get_char_extended (in, str + len - in); - if (wc & 0x80000000 || !UNICODE_VALID (wc)) - return _cairo_error (CAIRO_STATUS_INVALID_STRING); - - if (wc < 0x10000) - n16 += 1; - else - n16 += 2; - - if (n16 == INT_MAX - 1 || n16 == INT_MAX) - return _cairo_error (CAIRO_STATUS_INVALID_STRING); - - in = UTF8_NEXT_CHAR (in); - } - - str16 = _cairo_malloc_ab (n16 + 1, sizeof (uint16_t)); - if (!str16) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - in = str; - for (i = 0; i < n16;) { - uint32_t wc = _utf8_get_char (in); - - if (wc < 0x10000) { - str16[i++] = wc; - } else { - str16[i++] = (wc - 0x10000) / 0x400 + 0xd800; - str16[i++] = (wc - 0x10000) % 0x400 + 0xdc00; - } - - in = UTF8_NEXT_CHAR (in); - } - - str16[i] = 0; - - *result = str16; - if (items_written) - *items_written = n16; - - return CAIRO_STATUS_SUCCESS; -} -#endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-wideint.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-wideint.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-wideint.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-wideint.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,812 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Keith Packard - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith R. Packard - */ - -#include "cairoint.h" - -#if HAVE_UINT64_T - -#define _cairo_uint32s_to_uint64(h,l) ((uint64_t) (h) << 32 | (l)) - -cairo_uquorem64_t -_cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den) -{ - cairo_uquorem64_t qr; - - qr.quo = num / den; - qr.rem = num % den; - return qr; -} - -#else - -cairo_uint64_t -_cairo_uint32_to_uint64 (uint32_t i) -{ - cairo_uint64_t q; - - q.lo = i; - q.hi = 0; - return q; -} - -cairo_int64_t -_cairo_int32_to_int64 (int32_t i) -{ - cairo_uint64_t q; - - q.lo = i; - q.hi = i < 0 ? -1 : 0; - return q; -} - -static cairo_uint64_t -_cairo_uint32s_to_uint64 (uint32_t h, uint32_t l) -{ - cairo_uint64_t q; - - q.lo = l; - q.hi = h; - return q; -} - -cairo_uint64_t -_cairo_uint64_add (cairo_uint64_t a, cairo_uint64_t b) -{ - cairo_uint64_t s; - - s.hi = a.hi + b.hi; - s.lo = a.lo + b.lo; - if (s.lo < a.lo) - s.hi++; - return s; -} - -cairo_uint64_t -_cairo_uint64_sub (cairo_uint64_t a, cairo_uint64_t b) -{ - cairo_uint64_t s; - - s.hi = a.hi - b.hi; - s.lo = a.lo - b.lo; - if (s.lo > a.lo) - s.hi--; - return s; -} - -#define uint32_lo(i) ((i) & 0xffff) -#define uint32_hi(i) ((i) >> 16) -#define uint32_carry16 ((1) << 16) - -cairo_uint64_t -_cairo_uint32x32_64_mul (uint32_t a, uint32_t b) -{ - cairo_uint64_t s; - - uint16_t ah, al, bh, bl; - uint32_t r0, r1, r2, r3; - - al = uint32_lo (a); - ah = uint32_hi (a); - bl = uint32_lo (b); - bh = uint32_hi (b); - - r0 = (uint32_t) al * bl; - r1 = (uint32_t) al * bh; - r2 = (uint32_t) ah * bl; - r3 = (uint32_t) ah * bh; - - r1 += uint32_hi(r0); /* no carry possible */ - r1 += r2; /* but this can carry */ - if (r1 < r2) /* check */ - r3 += uint32_carry16; - - s.hi = r3 + uint32_hi(r1); - s.lo = (uint32_lo (r1) << 16) + uint32_lo (r0); - return s; -} - -cairo_int64_t -_cairo_int32x32_64_mul (int32_t a, int32_t b) -{ - cairo_int64_t s; - s = _cairo_uint32x32_64_mul ((uint32_t) a, (uint32_t) b); - if (a < 0) - s.hi -= b; - if (b < 0) - s.hi -= a; - return s; -} - -cairo_uint64_t -_cairo_uint64_mul (cairo_uint64_t a, cairo_uint64_t b) -{ - cairo_uint64_t s; - - s = _cairo_uint32x32_64_mul (a.lo, b.lo); - s.hi += a.lo * b.hi + a.hi * b.lo; - return s; -} - -cairo_uint64_t -_cairo_uint64_lsl (cairo_uint64_t a, int shift) -{ - if (shift >= 32) - { - a.hi = a.lo; - a.lo = 0; - shift -= 32; - } - if (shift) - { - a.hi = a.hi << shift | a.lo >> (32 - shift); - a.lo = a.lo << shift; - } - return a; -} - -cairo_uint64_t -_cairo_uint64_rsl (cairo_uint64_t a, int shift) -{ - if (shift >= 32) - { - a.lo = a.hi; - a.hi = 0; - shift -= 32; - } - if (shift) - { - a.lo = a.lo >> shift | a.hi << (32 - shift); - a.hi = a.hi >> shift; - } - return a; -} - -#define _cairo_uint32_rsa(a,n) ((uint32_t) (((int32_t) (a)) >> (n))) - -cairo_int64_t -_cairo_uint64_rsa (cairo_int64_t a, int shift) -{ - if (shift >= 32) - { - a.lo = a.hi; - a.hi = _cairo_uint32_rsa (a.hi, 31); - shift -= 32; - } - if (shift) - { - a.lo = a.lo >> shift | a.hi << (32 - shift); - a.hi = _cairo_uint32_rsa (a.hi, shift); - } - return a; -} - -int -_cairo_uint64_lt (cairo_uint64_t a, cairo_uint64_t b) -{ - return (a.hi < b.hi || - (a.hi == b.hi && a.lo < b.lo)); -} - -int -_cairo_uint64_eq (cairo_uint64_t a, cairo_uint64_t b) -{ - return a.hi == b.hi && a.lo == b.lo; -} - -int -_cairo_int64_lt (cairo_int64_t a, cairo_int64_t b) -{ - if (_cairo_int64_negative (a) && !_cairo_int64_negative (b)) - return 1; - if (!_cairo_int64_negative (a) && _cairo_int64_negative (b)) - return 0; - return _cairo_uint64_lt (a, b); -} - -cairo_uint64_t -_cairo_uint64_not (cairo_uint64_t a) -{ - a.lo = ~a.lo; - a.hi = ~a.hi; - return a; -} - -cairo_uint64_t -_cairo_uint64_negate (cairo_uint64_t a) -{ - a.lo = ~a.lo; - a.hi = ~a.hi; - if (++a.lo == 0) - ++a.hi; - return a; -} - -/* - * Simple bit-at-a-time divide. - */ -cairo_uquorem64_t -_cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den) -{ - cairo_uquorem64_t qr; - cairo_uint64_t bit; - cairo_uint64_t quo; - - bit = _cairo_uint32_to_uint64 (1); - - /* normalize to make den >= num, but not overflow */ - while (_cairo_uint64_lt (den, num) && (den.hi & 0x80000000) == 0) - { - bit = _cairo_uint64_lsl (bit, 1); - den = _cairo_uint64_lsl (den, 1); - } - quo = _cairo_uint32_to_uint64 (0); - - /* generate quotient, one bit at a time */ - while (bit.hi | bit.lo) - { - if (_cairo_uint64_le (den, num)) - { - num = _cairo_uint64_sub (num, den); - quo = _cairo_uint64_add (quo, bit); - } - bit = _cairo_uint64_rsl (bit, 1); - den = _cairo_uint64_rsl (den, 1); - } - qr.quo = quo; - qr.rem = num; - return qr; -} - -#endif /* !HAVE_UINT64_T */ - -cairo_quorem64_t -_cairo_int64_divrem (cairo_int64_t num, cairo_int64_t den) -{ - int num_neg = _cairo_int64_negative (num); - int den_neg = _cairo_int64_negative (den); - cairo_uquorem64_t uqr; - cairo_quorem64_t qr; - - if (num_neg) - num = _cairo_int64_negate (num); - if (den_neg) - den = _cairo_int64_negate (den); - uqr = _cairo_uint64_divrem (num, den); - if (num_neg) - qr.rem = _cairo_int64_negate (uqr.rem); - else - qr.rem = uqr.rem; - if (num_neg != den_neg) - qr.quo = (cairo_int64_t) _cairo_int64_negate (uqr.quo); - else - qr.quo = (cairo_int64_t) uqr.quo; - return qr; -} - -#if HAVE_UINT128_T - -cairo_uquorem128_t -_cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den) -{ - cairo_uquorem128_t qr; - - qr.quo = num / den; - qr.rem = num % den; - return qr; -} - -#else - -cairo_uint128_t -_cairo_uint32_to_uint128 (uint32_t i) -{ - cairo_uint128_t q; - - q.lo = _cairo_uint32_to_uint64 (i); - q.hi = _cairo_uint32_to_uint64 (0); - return q; -} - -cairo_int128_t -_cairo_int32_to_int128 (int32_t i) -{ - cairo_int128_t q; - - q.lo = _cairo_int32_to_int64 (i); - q.hi = _cairo_int32_to_int64 (i < 0 ? -1 : 0); - return q; -} - -cairo_uint128_t -_cairo_uint64_to_uint128 (cairo_uint64_t i) -{ - cairo_uint128_t q; - - q.lo = i; - q.hi = _cairo_uint32_to_uint64 (0); - return q; -} - -cairo_int128_t -_cairo_int64_to_int128 (cairo_int64_t i) -{ - cairo_int128_t q; - - q.lo = i; - q.hi = _cairo_int32_to_int64 (_cairo_int64_negative(i) ? -1 : 0); - return q; -} - -cairo_uint128_t -_cairo_uint128_add (cairo_uint128_t a, cairo_uint128_t b) -{ - cairo_uint128_t s; - - s.hi = _cairo_uint64_add (a.hi, b.hi); - s.lo = _cairo_uint64_add (a.lo, b.lo); - if (_cairo_uint64_lt (s.lo, a.lo)) - s.hi = _cairo_uint64_add (s.hi, _cairo_uint32_to_uint64 (1)); - return s; -} - -cairo_uint128_t -_cairo_uint128_sub (cairo_uint128_t a, cairo_uint128_t b) -{ - cairo_uint128_t s; - - s.hi = _cairo_uint64_sub (a.hi, b.hi); - s.lo = _cairo_uint64_sub (a.lo, b.lo); - if (_cairo_uint64_gt (s.lo, a.lo)) - s.hi = _cairo_uint64_sub (s.hi, _cairo_uint32_to_uint64(1)); - return s; -} - -#if HAVE_UINT64_T - -#define uint64_lo32(i) ((i) & 0xffffffff) -#define uint64_hi32(i) ((i) >> 32) -#define uint64_lo(i) ((i) & 0xffffffff) -#define uint64_hi(i) ((i) >> 32) -#define uint64_shift32(i) ((i) << 32) -#define uint64_carry32 (((uint64_t) 1) << 32) - -#else - -#define uint64_lo32(i) ((i).lo) -#define uint64_hi32(i) ((i).hi) - -static cairo_uint64_t -uint64_lo (cairo_uint64_t i) -{ - cairo_uint64_t s; - - s.lo = i.lo; - s.hi = 0; - return s; -} - -static cairo_uint64_t -uint64_hi (cairo_uint64_t i) -{ - cairo_uint64_t s; - - s.lo = i.hi; - s.hi = 0; - return s; -} - -static cairo_uint64_t -uint64_shift32 (cairo_uint64_t i) -{ - cairo_uint64_t s; - - s.lo = 0; - s.hi = i.lo; - return s; -} - -static const cairo_uint64_t uint64_carry32 = { 0, 1 }; - -#endif - -cairo_uint128_t -_cairo_uint64x64_128_mul (cairo_uint64_t a, cairo_uint64_t b) -{ - cairo_uint128_t s; - uint32_t ah, al, bh, bl; - cairo_uint64_t r0, r1, r2, r3; - - al = uint64_lo32 (a); - ah = uint64_hi32 (a); - bl = uint64_lo32 (b); - bh = uint64_hi32 (b); - - r0 = _cairo_uint32x32_64_mul (al, bl); - r1 = _cairo_uint32x32_64_mul (al, bh); - r2 = _cairo_uint32x32_64_mul (ah, bl); - r3 = _cairo_uint32x32_64_mul (ah, bh); - - r1 = _cairo_uint64_add (r1, uint64_hi (r0)); /* no carry possible */ - r1 = _cairo_uint64_add (r1, r2); /* but this can carry */ - if (_cairo_uint64_lt (r1, r2)) /* check */ - r3 = _cairo_uint64_add (r3, uint64_carry32); - - s.hi = _cairo_uint64_add (r3, uint64_hi(r1)); - s.lo = _cairo_uint64_add (uint64_shift32 (r1), - uint64_lo (r0)); - return s; -} - -cairo_int128_t -_cairo_int64x64_128_mul (cairo_int64_t a, cairo_int64_t b) -{ - cairo_int128_t s; - s = _cairo_uint64x64_128_mul (_cairo_int64_to_uint64(a), - _cairo_int64_to_uint64(b)); - if (_cairo_int64_negative (a)) - s.hi = _cairo_uint64_sub (s.hi, - _cairo_int64_to_uint64 (b)); - if (_cairo_int64_negative (b)) - s.hi = _cairo_uint64_sub (s.hi, - _cairo_int64_to_uint64 (a)); - return s; -} - -cairo_uint128_t -_cairo_uint128_mul (cairo_uint128_t a, cairo_uint128_t b) -{ - cairo_uint128_t s; - - s = _cairo_uint64x64_128_mul (a.lo, b.lo); - s.hi = _cairo_uint64_add (s.hi, - _cairo_uint64_mul (a.lo, b.hi)); - s.hi = _cairo_uint64_add (s.hi, - _cairo_uint64_mul (a.hi, b.lo)); - return s; -} - -cairo_uint128_t -_cairo_uint128_lsl (cairo_uint128_t a, int shift) -{ - if (shift >= 64) - { - a.hi = a.lo; - a.lo = _cairo_uint32_to_uint64 (0); - shift -= 64; - } - if (shift) - { - a.hi = _cairo_uint64_add (_cairo_uint64_lsl (a.hi, shift), - _cairo_uint64_rsl (a.lo, (64 - shift))); - a.lo = _cairo_uint64_lsl (a.lo, shift); - } - return a; -} - -cairo_uint128_t -_cairo_uint128_rsl (cairo_uint128_t a, int shift) -{ - if (shift >= 64) - { - a.lo = a.hi; - a.hi = _cairo_uint32_to_uint64 (0); - shift -= 64; - } - if (shift) - { - a.lo = _cairo_uint64_add (_cairo_uint64_rsl (a.lo, shift), - _cairo_uint64_lsl (a.hi, (64 - shift))); - a.hi = _cairo_uint64_rsl (a.hi, shift); - } - return a; -} - -cairo_uint128_t -_cairo_uint128_rsa (cairo_int128_t a, int shift) -{ - if (shift >= 64) - { - a.lo = a.hi; - a.hi = _cairo_uint64_rsa (a.hi, 64-1); - shift -= 64; - } - if (shift) - { - a.lo = _cairo_uint64_add (_cairo_uint64_rsl (a.lo, shift), - _cairo_uint64_lsl (a.hi, (64 - shift))); - a.hi = _cairo_uint64_rsa (a.hi, shift); - } - return a; -} - -int -_cairo_uint128_lt (cairo_uint128_t a, cairo_uint128_t b) -{ - return (_cairo_uint64_lt (a.hi, b.hi) || - (_cairo_uint64_eq (a.hi, b.hi) && - _cairo_uint64_lt (a.lo, b.lo))); -} - -int -_cairo_int128_lt (cairo_int128_t a, cairo_int128_t b) -{ - if (_cairo_int128_negative (a) && !_cairo_int128_negative (b)) - return 1; - if (!_cairo_int128_negative (a) && _cairo_int128_negative (b)) - return 0; - return _cairo_uint128_lt (a, b); -} - -int -_cairo_uint128_eq (cairo_uint128_t a, cairo_uint128_t b) -{ - return (_cairo_uint64_eq (a.hi, b.hi) && - _cairo_uint64_eq (a.lo, b.lo)); -} - -#if HAVE_UINT64_T -#define _cairo_msbset64(q) (q & ((uint64_t) 1 << 63)) -#else -#define _cairo_msbset64(q) (q.hi & ((uint32_t) 1 << 31)) -#endif - -cairo_uquorem128_t -_cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den) -{ - cairo_uquorem128_t qr; - cairo_uint128_t bit; - cairo_uint128_t quo; - - bit = _cairo_uint32_to_uint128 (1); - - /* normalize to make den >= num, but not overflow */ - while (_cairo_uint128_lt (den, num) && !_cairo_msbset64(den.hi)) - { - bit = _cairo_uint128_lsl (bit, 1); - den = _cairo_uint128_lsl (den, 1); - } - quo = _cairo_uint32_to_uint128 (0); - - /* generate quotient, one bit at a time */ - while (_cairo_uint128_ne (bit, _cairo_uint32_to_uint128(0))) - { - if (_cairo_uint128_le (den, num)) - { - num = _cairo_uint128_sub (num, den); - quo = _cairo_uint128_add (quo, bit); - } - bit = _cairo_uint128_rsl (bit, 1); - den = _cairo_uint128_rsl (den, 1); - } - qr.quo = quo; - qr.rem = num; - return qr; -} - -cairo_int128_t -_cairo_int128_negate (cairo_int128_t a) -{ - a.lo = _cairo_uint64_not (a.lo); - a.hi = _cairo_uint64_not (a.hi); - return _cairo_uint128_add (a, _cairo_uint32_to_uint128 (1)); -} - -cairo_int128_t -_cairo_int128_not (cairo_int128_t a) -{ - a.lo = _cairo_uint64_not (a.lo); - a.hi = _cairo_uint64_not (a.hi); - return a; -} - -#endif /* !HAVE_UINT128_T */ - -cairo_quorem128_t -_cairo_int128_divrem (cairo_int128_t num, cairo_int128_t den) -{ - int num_neg = _cairo_int128_negative (num); - int den_neg = _cairo_int128_negative (den); - cairo_uquorem128_t uqr; - cairo_quorem128_t qr; - - if (num_neg) - num = _cairo_int128_negate (num); - if (den_neg) - den = _cairo_int128_negate (den); - uqr = _cairo_uint128_divrem (num, den); - if (num_neg) - qr.rem = _cairo_int128_negate (uqr.rem); - else - qr.rem = uqr.rem; - if (num_neg != den_neg) - qr.quo = _cairo_int128_negate (uqr.quo); - else - qr.quo = uqr.quo; - return qr; -} - -/** - * _cairo_uint_96by64_32x64_divrem: - * - * Compute a 32 bit quotient and 64 bit remainder of a 96 bit unsigned - * dividend and 64 bit divisor. If the quotient doesn't fit into 32 - * bits then the returned remainder is equal to the divisor, and the - * quotient is the largest representable 64 bit integer. It is an - * error to call this function with the high 32 bits of @num being - * non-zero. */ -cairo_uquorem64_t -_cairo_uint_96by64_32x64_divrem (cairo_uint128_t num, - cairo_uint64_t den) -{ - cairo_uquorem64_t result; - cairo_uint64_t B = _cairo_uint32s_to_uint64 (1, 0); - - /* These are the high 64 bits of the *96* bit numerator. We're - * going to represent the numerator as xB + y, where x is a 64, - * and y is a 32 bit number. */ - cairo_uint64_t x = _cairo_uint128_to_uint64 (_cairo_uint128_rsl(num, 32)); - - /* Initialise the result to indicate overflow. */ - result.quo = _cairo_uint32s_to_uint64 (-1U, -1U); - result.rem = den; - - /* Don't bother if the quotient is going to overflow. */ - if (_cairo_uint64_ge (x, den)) { - return /* overflow */ result; - } - - if (_cairo_uint64_lt (x, B)) { - /* When the final quotient is known to fit in 32 bits, then - * num < 2^64 if and only if den < 2^32. */ - return _cairo_uint64_divrem (_cairo_uint128_to_uint64 (num), den); - } - else { - /* Denominator is >= 2^32. the numerator is >= 2^64, and the - * division won't overflow: need two divrems. Write the - * numerator and denominator as - * - * num = xB + y x : 64 bits, y : 32 bits - * den = uB + v u, v : 32 bits - */ - uint32_t y = _cairo_uint128_to_uint32 (num); - uint32_t u = uint64_hi32 (den); - uint32_t v = _cairo_uint64_to_uint32 (den); - - /* Compute a lower bound approximate quotient of num/den - * from x/(u+1). Then we have - * - * x = q(u+1) + r ; q : 32 bits, r <= u : 32 bits. - * - * xB + y = q(u+1)B + (rB+y) - * = q(uB + B + v - v) + (rB+y) - * = q(uB + v) + qB - qv + (rB+y) - * = q(uB + v) + q(B-v) + (rB+y) - * - * The true quotient of num/den then is q plus the - * contribution of q(B-v) + (rB+y). The main contribution - * comes from the term q(B-v), with the term (rB+y) only - * contributing at most one part. - * - * The term q(B-v) must fit into 64 bits, since q fits into 32 - * bits on account of being a lower bound to the true - * quotient, and as B-v <= 2^32, we may safely use a single - * 64/64 bit division to find its contribution. */ - - cairo_uquorem64_t quorem; - cairo_uint64_t remainder; /* will contain final remainder */ - uint32_t quotient; /* will contain final quotient. */ - uint32_t q; - uint32_t r; - - /* Approximate quotient by dividing the high 64 bits of num by - * u+1. Watch out for overflow of u+1. */ - if (u+1) { - quorem = _cairo_uint64_divrem (x, _cairo_uint32_to_uint64 (u+1)); - q = _cairo_uint64_to_uint32 (quorem.quo); - r = _cairo_uint64_to_uint32 (quorem.rem); - } - else { - q = uint64_hi32 (x); - r = _cairo_uint64_to_uint32 (x); - } - quotient = q; - - /* Add the main term's contribution to quotient. Note B-v = - * -v as an uint32 (unless v = 0) */ - if (v) - quorem = _cairo_uint64_divrem (_cairo_uint32x32_64_mul (q, -v), den); - else - quorem = _cairo_uint64_divrem (_cairo_uint32s_to_uint64 (q, 0), den); - quotient += _cairo_uint64_to_uint32 (quorem.quo); - - /* Add the contribution of the subterm and start computing the - * true remainder. */ - remainder = _cairo_uint32s_to_uint64 (r, y); - if (_cairo_uint64_ge (remainder, den)) { - remainder = _cairo_uint64_sub (remainder, den); - quotient++; - } - - /* Add the contribution of the main term's remainder. The - * funky test here checks that remainder + main_rem >= den, - * taking into account overflow of the addition. */ - remainder = _cairo_uint64_add (remainder, quorem.rem); - if (_cairo_uint64_ge (remainder, den) || - _cairo_uint64_lt (remainder, quorem.rem)) - { - remainder = _cairo_uint64_sub (remainder, den); - quotient++; - } - - result.quo = _cairo_uint32_to_uint64 (quotient); - result.rem = remainder; - } - return result; -} - -cairo_quorem64_t -_cairo_int_96by64_32x64_divrem (cairo_int128_t num, cairo_int64_t den) -{ - int num_neg = _cairo_int128_negative (num); - int den_neg = _cairo_int64_negative (den); - cairo_uint64_t nonneg_den; - cairo_uquorem64_t uqr; - cairo_quorem64_t qr; - - if (num_neg) - num = _cairo_int128_negate (num); - if (den_neg) - nonneg_den = _cairo_int64_negate (den); - else - nonneg_den = den; - - uqr = _cairo_uint_96by64_32x64_divrem (num, nonneg_den); - if (_cairo_uint64_eq (uqr.rem, nonneg_den)) { - /* bail on overflow. */ - qr.quo = _cairo_uint32s_to_uint64 (0x7FFFFFFF, -1U);; - qr.rem = den; - return qr; - } - - if (num_neg) - qr.rem = _cairo_int64_negate (uqr.rem); - else - qr.rem = uqr.rem; - if (num_neg != den_neg) - qr.quo = _cairo_int64_negate (uqr.quo); - else - qr.quo = uqr.quo; - return qr; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-wideint-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-wideint-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-wideint-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-wideint-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Keith Packard - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith R. Packard - * - */ - -#ifndef CAIRO_WIDEINT_H -#define CAIRO_WIDEINT_H - -#include "cairo-wideint-type-private.h" - -#include "cairo-compiler-private.h" - -/* - * 64-bit datatypes. Two separate implementations, one using - * built-in 64-bit signed/unsigned types another implemented - * as a pair of 32-bit ints - */ - -#define I cairo_private - -#if !HAVE_UINT64_T - -cairo_uint64_t I _cairo_uint32_to_uint64 (uint32_t i); -#define _cairo_uint64_to_uint32(a) ((a).lo) -cairo_uint64_t I _cairo_uint64_add (cairo_uint64_t a, cairo_uint64_t b); -cairo_uint64_t I _cairo_uint64_sub (cairo_uint64_t a, cairo_uint64_t b); -cairo_uint64_t I _cairo_uint64_mul (cairo_uint64_t a, cairo_uint64_t b); -cairo_uint64_t I _cairo_uint32x32_64_mul (uint32_t a, uint32_t b); -cairo_uint64_t I _cairo_uint64_lsl (cairo_uint64_t a, int shift); -cairo_uint64_t I _cairo_uint64_rsl (cairo_uint64_t a, int shift); -cairo_uint64_t I _cairo_uint64_rsa (cairo_uint64_t a, int shift); -int I _cairo_uint64_lt (cairo_uint64_t a, cairo_uint64_t b); -int I _cairo_uint64_eq (cairo_uint64_t a, cairo_uint64_t b); -cairo_uint64_t I _cairo_uint64_negate (cairo_uint64_t a); -#define _cairo_uint64_negative(a) (((int32_t) ((a).hi)) < 0) -cairo_uint64_t I _cairo_uint64_not (cairo_uint64_t a); - -#define _cairo_uint64_to_int64(i) (i) -#define _cairo_int64_to_uint64(i) (i) - -cairo_int64_t I _cairo_int32_to_int64(int32_t i); -#define _cairo_int64_to_int32(a) ((int32_t) _cairo_uint64_to_uint32(a)) -#define _cairo_int64_add(a,b) _cairo_uint64_add (a,b) -#define _cairo_int64_sub(a,b) _cairo_uint64_sub (a,b) -#define _cairo_int64_mul(a,b) _cairo_uint64_mul (a,b) -cairo_int64_t I _cairo_int32x32_64_mul (int32_t a, int32_t b); -int I _cairo_int64_lt (cairo_uint64_t a, cairo_uint64_t b); -#define _cairo_int64_eq(a,b) _cairo_uint64_eq (a,b) -#define _cairo_int64_lsl(a,b) _cairo_uint64_lsl (a,b) -#define _cairo_int64_rsl(a,b) _cairo_uint64_rsl (a,b) -#define _cairo_int64_rsa(a,b) _cairo_uint64_rsa (a,b) -#define _cairo_int64_negate(a) _cairo_uint64_negate(a) -#define _cairo_int64_negative(a) (((int32_t) ((a).hi)) < 0) -#define _cairo_int64_not(a) _cairo_uint64_not(a) - -#else - -#define _cairo_uint32_to_uint64(i) ((uint64_t) (i)) -#define _cairo_uint64_to_uint32(i) ((uint32_t) (i)) -#define _cairo_uint64_add(a,b) ((a) + (b)) -#define _cairo_uint64_sub(a,b) ((a) - (b)) -#define _cairo_uint64_mul(a,b) ((a) * (b)) -#define _cairo_uint32x32_64_mul(a,b) ((uint64_t) (a) * (b)) -#define _cairo_uint64_lsl(a,b) ((a) << (b)) -#define _cairo_uint64_rsl(a,b) ((uint64_t) (a) >> (b)) -#define _cairo_uint64_rsa(a,b) ((uint64_t) ((int64_t) (a) >> (b))) -#define _cairo_uint64_lt(a,b) ((a) < (b)) -#define _cairo_uint64_eq(a,b) ((a) == (b)) -#define _cairo_uint64_negate(a) ((uint64_t) -((int64_t) (a))) -#define _cairo_uint64_negative(a) ((int64_t) (a) < 0) -#define _cairo_uint64_not(a) (~(a)) - -#define _cairo_uint64_to_int64(i) ((int64_t) (i)) -#define _cairo_int64_to_uint64(i) ((uint64_t) (i)) - -#define _cairo_int32_to_int64(i) ((int64_t) (i)) -#define _cairo_int64_to_int32(i) ((int32_t) (i)) -#define _cairo_int64_add(a,b) ((a) + (b)) -#define _cairo_int64_sub(a,b) ((a) - (b)) -#define _cairo_int64_mul(a,b) ((a) * (b)) -#define _cairo_int32x32_64_mul(a,b) ((int64_t) (a) * (b)) -#define _cairo_int64_lt(a,b) ((a) < (b)) -#define _cairo_int64_eq(a,b) ((a) == (b)) -#define _cairo_int64_lsl(a,b) ((a) << (b)) -#define _cairo_int64_rsl(a,b) ((int64_t) ((uint64_t) (a) >> (b))) -#define _cairo_int64_rsa(a,b) ((int64_t) (a) >> (b)) -#define _cairo_int64_negate(a) (-(a)) -#define _cairo_int64_negative(a) ((a) < 0) -#define _cairo_int64_not(a) (~(a)) - -#endif - -/* - * 64-bit comparisions derived from lt or eq - */ -#define _cairo_uint64_le(a,b) (!_cairo_uint64_gt(a,b)) -#define _cairo_uint64_ne(a,b) (!_cairo_uint64_eq(a,b)) -#define _cairo_uint64_ge(a,b) (!_cairo_uint64_lt(a,b)) -#define _cairo_uint64_gt(a,b) _cairo_uint64_lt(b,a) - -#define _cairo_int64_le(a,b) (!_cairo_int64_gt(a,b)) -#define _cairo_int64_ne(a,b) (!_cairo_int64_eq(a,b)) -#define _cairo_int64_ge(a,b) (!_cairo_int64_lt(a,b)) -#define _cairo_int64_gt(a,b) _cairo_int64_lt(b,a) - -/* - * As the C implementation always computes both, create - * a function which returns both for the 'native' type as well - */ - -cairo_uquorem64_t I -_cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den); - -cairo_quorem64_t I -_cairo_int64_divrem (cairo_int64_t num, cairo_int64_t den); - -/* - * 128-bit datatypes. Again, provide two implementations in - * case the machine has a native 128-bit datatype. GCC supports int128_t - * on ia64 - */ - -#if !HAVE_UINT128_T - -cairo_uint128_t I _cairo_uint32_to_uint128 (uint32_t i); -cairo_uint128_t I _cairo_uint64_to_uint128 (cairo_uint64_t i); -#define _cairo_uint128_to_uint64(a) ((a).lo) -#define _cairo_uint128_to_uint32(a) _cairo_uint64_to_uint32(_cairo_uint128_to_uint64(a)) -cairo_uint128_t I _cairo_uint128_add (cairo_uint128_t a, cairo_uint128_t b); -cairo_uint128_t I _cairo_uint128_sub (cairo_uint128_t a, cairo_uint128_t b); -cairo_uint128_t I _cairo_uint128_mul (cairo_uint128_t a, cairo_uint128_t b); -cairo_uint128_t I _cairo_uint64x64_128_mul (cairo_uint64_t a, cairo_uint64_t b); -cairo_uint128_t I _cairo_uint128_lsl (cairo_uint128_t a, int shift); -cairo_uint128_t I _cairo_uint128_rsl (cairo_uint128_t a, int shift); -cairo_uint128_t I _cairo_uint128_rsa (cairo_uint128_t a, int shift); -int I _cairo_uint128_lt (cairo_uint128_t a, cairo_uint128_t b); -int I _cairo_uint128_eq (cairo_uint128_t a, cairo_uint128_t b); -cairo_uint128_t I _cairo_uint128_negate (cairo_uint128_t a); -#define _cairo_uint128_negative(a) (_cairo_uint64_negative(a.hi)) -cairo_uint128_t I _cairo_uint128_not (cairo_uint128_t a); - -#define _cairo_uint128_to_int128(i) (i) -#define _cairo_int128_to_uint128(i) (i) - -cairo_int128_t I _cairo_int32_to_int128 (int32_t i); -cairo_int128_t I _cairo_int64_to_int128 (cairo_int64_t i); -#define _cairo_int128_to_int64(a) ((cairo_int64_t) (a).lo) -#define _cairo_int128_to_int32(a) _cairo_int64_to_int32(_cairo_int128_to_int64(a)) -#define _cairo_int128_add(a,b) _cairo_uint128_add(a,b) -#define _cairo_int128_sub(a,b) _cairo_uint128_sub(a,b) -#define _cairo_int128_mul(a,b) _cairo_uint128_mul(a,b) -cairo_int128_t I _cairo_int64x64_128_mul (cairo_int64_t a, cairo_int64_t b); -#define _cairo_int128_lsl(a,b) _cairo_uint128_lsl(a,b) -#define _cairo_int128_rsl(a,b) _cairo_uint128_rsl(a,b) -#define _cairo_int128_rsa(a,b) _cairo_uint128_rsa(a,b) -int I _cairo_int128_lt (cairo_int128_t a, cairo_int128_t b); -#define _cairo_int128_eq(a,b) _cairo_uint128_eq (a,b) -#define _cairo_int128_negate(a) _cairo_uint128_negate(a) -#define _cairo_int128_negative(a) (_cairo_uint128_negative(a)) -#define _cairo_int128_not(a) _cairo_uint128_not(a) - -#else /* !HAVE_UINT128_T */ - -#define _cairo_uint32_to_uint128(i) ((uint128_t) (i)) -#define _cairo_uint64_to_uint128(i) ((uint128_t) (i)) -#define _cairo_uint128_to_uint64(i) ((uint64_t) (i)) -#define _cairo_uint128_to_uint32(i) ((uint32_t) (i)) -#define _cairo_uint128_add(a,b) ((a) + (b)) -#define _cairo_uint128_sub(a,b) ((a) - (b)) -#define _cairo_uint128_mul(a,b) ((a) * (b)) -#define _cairo_uint64x64_128_mul(a,b) ((uint128_t) (a) * (b)) -#define _cairo_uint128_lsl(a,b) ((a) << (b)) -#define _cairo_uint128_rsl(a,b) ((uint128_t) (a) >> (b)) -#define _cairo_uint128_rsa(a,b) ((uint128_t) ((int128_t) (a) >> (b))) -#define _cairo_uint128_lt(a,b) ((a) < (b)) -#define _cairo_uint128_eq(a,b) ((a) == (b)) -#define _cairo_uint128_negate(a) ((uint128_t) -((int128_t) (a))) -#define _cairo_uint128_negative(a) ((int128_t) (a) < 0) -#define _cairo_uint128_not(a) (~(a)) - -#define _cairo_uint128_to_int128(i) ((int128_t) (i)) -#define _cairo_int128_to_uint128(i) ((uint128_t) (i)) - -#define _cairo_int32_to_int128(i) ((int128_t) (i)) -#define _cairo_int64_to_int128(i) ((int128_t) (i)) -#define _cairo_int128_to_int64(i) ((int64_t) (i)) -#define _cairo_int128_to_int32(i) ((int32_t) (i)) -#define _cairo_int128_add(a,b) ((a) + (b)) -#define _cairo_int128_sub(a,b) ((a) - (b)) -#define _cairo_int128_mul(a,b) ((a) * (b)) -#define _cairo_int64x64_128_mul(a,b) ((int128_t) (a) * (b)) -#define _cairo_int128_lt(a,b) ((a) < (b)) -#define _cairo_int128_eq(a,b) ((a) == (b)) -#define _cairo_int128_lsl(a,b) ((a) << (b)) -#define _cairo_int128_rsl(a,b) ((int128_t) ((uint128_t) (a) >> (b))) -#define _cairo_int128_rsa(a,b) ((int128_t) (a) >> (b)) -#define _cairo_int128_negate(a) (-(a)) -#define _cairo_int128_negative(a) ((a) < 0) -#define _cairo_int128_not(a) (~(a)) - -#endif /* HAVE_UINT128_T */ - -cairo_uquorem128_t I -_cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den); - -cairo_quorem128_t I -_cairo_int128_divrem (cairo_int128_t num, cairo_int128_t den); - -cairo_uquorem64_t I -_cairo_uint_96by64_32x64_divrem (cairo_uint128_t num, - cairo_uint64_t den); - -cairo_quorem64_t I -_cairo_int_96by64_32x64_divrem (cairo_int128_t num, - cairo_int64_t den); - -#define _cairo_uint128_le(a,b) (!_cairo_uint128_gt(a,b)) -#define _cairo_uint128_ne(a,b) (!_cairo_uint128_eq(a,b)) -#define _cairo_uint128_ge(a,b) (!_cairo_uint128_lt(a,b)) -#define _cairo_uint128_gt(a,b) _cairo_uint128_lt(b,a) - -#define _cairo_int128_le(a,b) (!_cairo_int128_gt(a,b)) -#define _cairo_int128_ne(a,b) (!_cairo_int128_eq(a,b)) -#define _cairo_int128_ge(a,b) (!_cairo_int128_lt(a,b)) -#define _cairo_int128_gt(a,b) _cairo_int128_lt(b,a) - -#undef I - -#endif /* CAIRO_WIDEINT_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-wideint-type-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-wideint-type-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-wideint-type-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-wideint-type-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2004 Keith Packard - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Keith Packard - * - * Contributor(s): - * Keith R. Packard - * - */ - -#ifndef CAIRO_WIDEINT_TYPE_H -#define CAIRO_WIDEINT_TYPE_H - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#if HAVE_STDINT_H -# include -#elif HAVE_INTTYPES_H -# include -#elif HAVE_SYS_INT_TYPES_H -# include -#elif defined(_MSC_VER) - typedef __int8 int8_t; - typedef unsigned __int8 uint8_t; - typedef __int16 int16_t; - typedef unsigned __int16 uint16_t; - typedef __int32 int32_t; - typedef unsigned __int32 uint32_t; - typedef __int64 int64_t; - typedef unsigned __int64 uint64_t; -# ifndef HAVE_UINT64_T -# define HAVE_UINT64_T 1 -# endif -# ifndef INT16_MIN -# define INT16_MIN (-32767-1) -# endif -# ifndef INT16_MAX -# define INT16_MAX (32767) -# endif -# ifndef UINT16_MAX -# define UINT16_MAX (65535) -# endif -# ifndef INT32_MIN -# define INT32_MIN (-2147483647-1) -# endif -# ifndef INT32_MAX -# define INT32_MAX (2147483647) -# endif -#else -#error Cannot find definitions for fixed-width integral types (uint8_t, uint32_t, etc.) -#endif - - -#if !HAVE_UINT64_T - -typedef struct _cairo_uint64 { - uint32_t lo, hi; -} cairo_uint64_t, cairo_int64_t; - -#else - -typedef uint64_t cairo_uint64_t; -typedef int64_t cairo_int64_t; - -#endif - -typedef struct _cairo_uquorem64 { - cairo_uint64_t quo; - cairo_uint64_t rem; -} cairo_uquorem64_t; - -typedef struct _cairo_quorem64 { - cairo_int64_t quo; - cairo_int64_t rem; -} cairo_quorem64_t; - - -#if !HAVE_UINT128_T - -typedef struct cairo_uint128 { - cairo_uint64_t lo, hi; -} cairo_uint128_t, cairo_int128_t; - -#else - -typedef uint128_t cairo_uint128_t; -typedef int128_t cairo_int128_t; - -#endif - -typedef struct _cairo_uquorem128 { - cairo_uint128_t quo; - cairo_uint128_t rem; -} cairo_uquorem128_t; - -typedef struct _cairo_quorem128 { - cairo_int128_t quo; - cairo_int128_t rem; -} cairo_quorem128_t; - - -#endif /* CAIRO_WIDEINT_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-win32.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-win32.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Adrian Johnson. - * - * Contributor(s): - * Adrian Johnson - */ - -#define WIN32_LEAN_AND_MEAN -/* We require Windows 2000 features such as ETO_PDY */ -#if !defined(WINVER) || (WINVER < 0x0500) -# define WINVER 0x0500 -#endif -#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500) -# define _WIN32_WINNT 0x0500 -#endif - -#include "cairoint.h" - -#include -#include - -/* tmpfile() replacment for Windows. - * - * On Windows tmpfile() creates the file in the root directory. This - * may fail due to unsufficient privileges. - */ -FILE * -_cairo_win32_tmpfile (void) -{ - DWORD path_len; - WCHAR path_name[MAX_PATH + 1]; - WCHAR file_name[MAX_PATH + 1]; - HANDLE handle; - int fd; - FILE *fp; - - path_len = GetTempPathW (MAX_PATH, path_name); - if (path_len <= 0 || path_len >= MAX_PATH) - return NULL; - - if (GetTempFileNameW (path_name, L"ps_", 0, file_name) == 0) - return NULL; - - handle = CreateFileW (file_name, - GENERIC_READ | GENERIC_WRITE, - 0, - NULL, - CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, - NULL); - if (handle == INVALID_HANDLE_VALUE) { - DeleteFileW (file_name); - return NULL; - } - - fd = _open_osfhandle((intptr_t) handle, 0); - if (fd < 0) { - CloseHandle (handle); - return NULL; - } - - fp = fdopen(fd, "w+b"); - if (fp == NULL) { - _close(fd); - return NULL; - } - - return fp; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-font.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-font.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-font.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-font.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2048 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - */ - -#define WIN32_LEAN_AND_MEAN -/* We require Windows 2000 features such as GetGlyphIndices */ -#if !defined(WINVER) || (WINVER < 0x0500) -# define WINVER 0x0500 -#endif -#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500) -# define _WIN32_WINNT 0x0500 -#endif - -#include "cairoint.h" - -#include "cairo-win32-private.h" - -#ifndef SPI_GETFONTSMOOTHINGTYPE -#define SPI_GETFONTSMOOTHINGTYPE 0x200a -#endif -#ifndef FE_FONTSMOOTHINGCLEARTYPE -#define FE_FONTSMOOTHINGCLEARTYPE 2 -#endif -#ifndef CLEARTYPE_QUALITY -#define CLEARTYPE_QUALITY 5 -#endif -#ifndef TT_PRIM_CSPLINE -#define TT_PRIM_CSPLINE 3 -#endif - -#define CMAP_TAG 0x70616d63 - -const cairo_scaled_font_backend_t cairo_win32_scaled_font_backend; - -typedef struct { - cairo_scaled_font_t base; - - LOGFONTW logfont; - - BYTE quality; - - /* We do drawing and metrics computation in a "logical space" which - * is similar to font space, except that it is scaled by a factor - * of the (desired font size) * (WIN32_FONT_LOGICAL_SCALE). The multiplication - * by WIN32_FONT_LOGICAL_SCALE allows for sub-pixel precision. - */ - double logical_scale; - - /* The size we should actually request the font at from Windows; differs - * from the logical_scale because it is quantized for orthogonal - * transformations - */ - double logical_size; - - /* Transformations from device <=> logical space - */ - cairo_matrix_t logical_to_device; - cairo_matrix_t device_to_logical; - - /* We special case combinations of 90-degree-rotations, scales and - * flips ... that is transformations that take the axes to the - * axes. If preserve_axes is true, then swap_axes/swap_x/swap_y - * encode the 8 possibilities for orientation (4 rotation angles with - * and without a flip), and scale_x, scale_y the scale components. - */ - cairo_bool_t preserve_axes; - cairo_bool_t swap_axes; - cairo_bool_t swap_x; - cairo_bool_t swap_y; - double x_scale; - double y_scale; - - /* The size of the design unit of the font - */ - int em_square; - - HFONT scaled_hfont; - HFONT unscaled_hfont; - - cairo_bool_t is_bitmap; - cairo_bool_t is_type1; - cairo_bool_t delete_scaled_hfont; -} cairo_win32_scaled_font_t; - -static cairo_status_t -_cairo_win32_scaled_font_set_metrics (cairo_win32_scaled_font_t *scaled_font); - -static cairo_status_t -_cairo_win32_scaled_font_init_glyph_metrics (cairo_win32_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph); - -static cairo_status_t -_cairo_win32_scaled_font_init_glyph_surface (cairo_win32_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph); - -static cairo_status_t -_cairo_win32_scaled_font_init_glyph_path (cairo_win32_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph); - -#define NEARLY_ZERO(d) (fabs(d) < (1. / 65536.)) - -static cairo_status_t -_compute_transform (cairo_win32_scaled_font_t *scaled_font, - cairo_matrix_t *sc) -{ - cairo_status_t status; - - if (NEARLY_ZERO (sc->yx) && NEARLY_ZERO (sc->xy)) { - scaled_font->preserve_axes = TRUE; - scaled_font->x_scale = sc->xx; - scaled_font->swap_x = (sc->xx < 0); - scaled_font->y_scale = sc->yy; - scaled_font->swap_y = (sc->yy < 0); - scaled_font->swap_axes = FALSE; - - } else if (NEARLY_ZERO (sc->xx) && NEARLY_ZERO (sc->yy)) { - scaled_font->preserve_axes = TRUE; - scaled_font->x_scale = sc->yx; - scaled_font->swap_x = (sc->yx < 0); - scaled_font->y_scale = sc->xy; - scaled_font->swap_y = (sc->xy < 0); - scaled_font->swap_axes = TRUE; - - } else { - scaled_font->preserve_axes = FALSE; - scaled_font->swap_x = scaled_font->swap_y = scaled_font->swap_axes = FALSE; - } - - if (scaled_font->preserve_axes) { - if (scaled_font->swap_x) - scaled_font->x_scale = - scaled_font->x_scale; - if (scaled_font->swap_y) - scaled_font->y_scale = - scaled_font->y_scale; - - scaled_font->logical_scale = WIN32_FONT_LOGICAL_SCALE * scaled_font->y_scale; - scaled_font->logical_size = WIN32_FONT_LOGICAL_SCALE * - _cairo_lround (scaled_font->y_scale); - } - - /* The font matrix has x and y "scale" components which we extract and - * use as character scale values. - */ - cairo_matrix_init (&scaled_font->logical_to_device, - sc->xx, sc->yx, sc->xy, sc->yy, 0, 0); - - if (!scaled_font->preserve_axes) { - status = _cairo_matrix_compute_scale_factors (&scaled_font->logical_to_device, - &scaled_font->x_scale, &scaled_font->y_scale, - TRUE); /* XXX: Handle vertical text */ - if (status) - return status; - - scaled_font->logical_size = _cairo_lround (WIN32_FONT_LOGICAL_SCALE * - scaled_font->y_scale); - scaled_font->logical_scale = WIN32_FONT_LOGICAL_SCALE * scaled_font->y_scale; - } - - cairo_matrix_scale (&scaled_font->logical_to_device, - 1.0 / scaled_font->logical_scale, 1.0 / scaled_font->logical_scale); - - scaled_font->device_to_logical = scaled_font->logical_to_device; - - status = cairo_matrix_invert (&scaled_font->device_to_logical); - if (status) - cairo_matrix_init_identity (&scaled_font->device_to_logical); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_bool_t -_have_cleartype_quality (void) -{ - OSVERSIONINFO version_info; - - version_info.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); - - if (!GetVersionEx (&version_info)) { - _cairo_win32_print_gdi_error ("_have_cleartype_quality"); - return FALSE; - } - - return (version_info.dwMajorVersion > 5 || - (version_info.dwMajorVersion == 5 && - version_info.dwMinorVersion >= 1)); /* XP or newer */ -} - -static BYTE -_get_system_quality (void) -{ - BOOL font_smoothing; - UINT smoothing_type; - - if (!SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &font_smoothing, 0)) { - _cairo_win32_print_gdi_error ("_get_system_quality"); - return DEFAULT_QUALITY; - } - - if (font_smoothing) { - if (_have_cleartype_quality ()) { - if (!SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE, - 0, &smoothing_type, 0)) { - _cairo_win32_print_gdi_error ("_get_system_quality"); - return DEFAULT_QUALITY; - } - - if (smoothing_type == FE_FONTSMOOTHINGCLEARTYPE) - return CLEARTYPE_QUALITY; - } - - return ANTIALIASED_QUALITY; - } else { - return DEFAULT_QUALITY; - } -} - -/* If face_hfont is non-%NULL then font_matrix must be a simple scale by some - * factor S, ctm must be the identity, logfont->lfHeight must be -S, - * logfont->lfWidth, logfont->lfEscapement, logfont->lfOrientation must - * all be 0, and face_hfont is the result of calling CreateFontIndirectW on - * logfont. - */ -static cairo_status_t -_win32_scaled_font_create (LOGFONTW *logfont, - HFONT face_hfont, - cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **font_out) -{ - cairo_win32_scaled_font_t *f; - cairo_matrix_t scale; - cairo_status_t status; - - f = malloc (sizeof(cairo_win32_scaled_font_t)); - if (f == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - f->logfont = *logfont; - - /* We don't have any control over the hinting style or subpixel - * order in the Win32 font API, so we ignore those parts of - * cairo_font_options_t. We use the 'antialias' field to set - * the 'quality'. - * - * XXX: The other option we could pay attention to, but don't - * here is the hint_metrics options. - */ - if (options->antialias == CAIRO_ANTIALIAS_DEFAULT) - f->quality = _get_system_quality (); - else { - switch (options->antialias) { - case CAIRO_ANTIALIAS_NONE: - f->quality = NONANTIALIASED_QUALITY; - break; - case CAIRO_ANTIALIAS_GRAY: - f->quality = ANTIALIASED_QUALITY; - break; - case CAIRO_ANTIALIAS_SUBPIXEL: - if (_have_cleartype_quality ()) - f->quality = CLEARTYPE_QUALITY; - else - f->quality = ANTIALIASED_QUALITY; - break; - case CAIRO_ANTIALIAS_DEFAULT: - ASSERT_NOT_REACHED; - } - } - - f->em_square = 0; - f->scaled_hfont = NULL; - f->unscaled_hfont = NULL; - - if (f->quality == logfont->lfQuality || - (logfont->lfQuality == DEFAULT_QUALITY && - options->antialias == CAIRO_ANTIALIAS_DEFAULT)) { - /* If face_hfont is non-NULL, then we can use it to avoid creating our - * own --- because the constraints on face_hfont mentioned above - * guarantee it was created in exactly the same way that - * _win32_scaled_font_get_scaled_hfont would create it. - */ - f->scaled_hfont = face_hfont; - } - /* don't delete the hfont if we're using the one passed in to us */ - f->delete_scaled_hfont = !f->scaled_hfont; - - cairo_matrix_multiply (&scale, font_matrix, ctm); - status = _compute_transform (f, &scale); - if (status) - goto FAIL; - - status = _cairo_scaled_font_init (&f->base, font_face, - font_matrix, ctm, options, - &cairo_win32_scaled_font_backend); - if (status) - goto FAIL; - - status = _cairo_win32_scaled_font_set_metrics (f); - if (status) { - _cairo_scaled_font_fini (&f->base); - goto FAIL; - } - - *font_out = &f->base; - return CAIRO_STATUS_SUCCESS; - - FAIL: - free (f); - return status; -} - -static cairo_status_t -_win32_scaled_font_set_world_transform (cairo_win32_scaled_font_t *scaled_font, - HDC hdc) -{ - XFORM xform; - - _cairo_matrix_to_win32_xform (&scaled_font->logical_to_device, &xform); - - if (!SetWorldTransform (hdc, &xform)) - return _cairo_win32_print_gdi_error ("_win32_scaled_font_set_world_transform"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_win32_scaled_font_set_identity_transform (HDC hdc) -{ - if (!ModifyWorldTransform (hdc, NULL, MWT_IDENTITY)) - return _cairo_win32_print_gdi_error ("_win32_scaled_font_set_identity_transform"); - - return CAIRO_STATUS_SUCCESS; -} - -static HDC -_get_global_font_dc (void) -{ - static HDC hdc; - - if (!hdc) { - hdc = CreateCompatibleDC (NULL); - if (!hdc) { - _cairo_win32_print_gdi_error ("_get_global_font_dc"); - return NULL; - } - - if (!SetGraphicsMode (hdc, GM_ADVANCED)) { - _cairo_win32_print_gdi_error ("_get_global_font_dc"); - DeleteDC (hdc); - return NULL; - } - } - - return hdc; -} - -static HFONT -_win32_scaled_font_get_scaled_hfont (cairo_win32_scaled_font_t *scaled_font) -{ - if (!scaled_font->scaled_hfont) { - LOGFONTW logfont = scaled_font->logfont; - logfont.lfHeight = -scaled_font->logical_size; - logfont.lfWidth = 0; - logfont.lfEscapement = 0; - logfont.lfOrientation = 0; - logfont.lfQuality = scaled_font->quality; - - scaled_font->scaled_hfont = CreateFontIndirectW (&logfont); - if (!scaled_font->scaled_hfont) { - _cairo_win32_print_gdi_error ("_win32_scaled_font_get_scaled_hfont"); - return NULL; - } - } - - return scaled_font->scaled_hfont; -} - -static HFONT -_win32_scaled_font_get_unscaled_hfont (cairo_win32_scaled_font_t *scaled_font, - HDC hdc) -{ - if (!scaled_font->unscaled_hfont) { - OUTLINETEXTMETRIC *otm; - unsigned int otm_size; - HFONT scaled_hfont; - LOGFONTW logfont; - - scaled_hfont = _win32_scaled_font_get_scaled_hfont (scaled_font); - if (!scaled_hfont) - return NULL; - - if (!SelectObject (hdc, scaled_hfont)) { - _cairo_win32_print_gdi_error ("_win32_scaled_font_get_unscaled_hfont:SelectObject"); - return NULL; - } - - otm_size = GetOutlineTextMetrics (hdc, 0, NULL); - if (!otm_size) { - _cairo_win32_print_gdi_error ("_win32_scaled_font_get_unscaled_hfont:GetOutlineTextMetrics"); - return NULL; - } - - otm = malloc (otm_size); - if (!otm) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return NULL; - } - - if (!GetOutlineTextMetrics (hdc, otm_size, otm)) { - _cairo_win32_print_gdi_error ("_win32_scaled_font_get_unscaled_hfont:GetOutlineTextMetrics"); - free (otm); - return NULL; - } - - scaled_font->em_square = otm->otmEMSquare; - free (otm); - - logfont = scaled_font->logfont; - logfont.lfHeight = -scaled_font->em_square; - logfont.lfWidth = 0; - logfont.lfEscapement = 0; - logfont.lfOrientation = 0; - logfont.lfQuality = scaled_font->quality; - - scaled_font->unscaled_hfont = CreateFontIndirectW (&logfont); - if (!scaled_font->unscaled_hfont) { - _cairo_win32_print_gdi_error ("_win32_scaled_font_get_unscaled_hfont:CreateIndirect"); - return NULL; - } - } - - return scaled_font->unscaled_hfont; -} - -static cairo_status_t -_cairo_win32_scaled_font_select_unscaled_font (cairo_scaled_font_t *scaled_font, - HDC hdc) -{ - cairo_status_t status; - HFONT hfont; - HFONT old_hfont = NULL; - - hfont = _win32_scaled_font_get_unscaled_hfont ((cairo_win32_scaled_font_t *)scaled_font, hdc); - if (!hfont) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - old_hfont = SelectObject (hdc, hfont); - if (!old_hfont) - return _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_select_unscaled_font"); - - status = _win32_scaled_font_set_identity_transform (hdc); - if (status) { - SelectObject (hdc, old_hfont); - return status; - } - - SetMapMode (hdc, MM_TEXT); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_win32_scaled_font_done_unscaled_font (cairo_scaled_font_t *scaled_font) -{ -} - -/* implement the font backend interface */ - -static cairo_status_t -_cairo_win32_scaled_font_create_toy (cairo_toy_font_face_t *toy_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **scaled_font_out) -{ - LOGFONTW logfont; - uint16_t *face_name; - int face_name_len; - cairo_status_t status; - - status = _cairo_utf8_to_utf16 (toy_face->family, -1, - &face_name, &face_name_len); - if (status) - return status; - - if (face_name_len > LF_FACESIZE - 1) { - free (face_name); - return _cairo_error (CAIRO_STATUS_INVALID_STRING); - } - - memcpy (logfont.lfFaceName, face_name, sizeof (uint16_t) * (face_name_len + 1)); - free (face_name); - - logfont.lfHeight = 0; /* filled in later */ - logfont.lfWidth = 0; /* filled in later */ - logfont.lfEscapement = 0; /* filled in later */ - logfont.lfOrientation = 0; /* filled in later */ - - switch (toy_face->weight) { - case CAIRO_FONT_WEIGHT_NORMAL: - default: - logfont.lfWeight = FW_NORMAL; - break; - case CAIRO_FONT_WEIGHT_BOLD: - logfont.lfWeight = FW_BOLD; - break; - } - - switch (toy_face->slant) { - case CAIRO_FONT_SLANT_NORMAL: - default: - logfont.lfItalic = FALSE; - break; - case CAIRO_FONT_SLANT_ITALIC: - case CAIRO_FONT_SLANT_OBLIQUE: - logfont.lfItalic = TRUE; - break; - } - - logfont.lfUnderline = FALSE; - logfont.lfStrikeOut = FALSE; - /* The docs for LOGFONT discourage using this, since the - * interpretation is locale-specific, but it's not clear what - * would be a better alternative. - */ - logfont.lfCharSet = DEFAULT_CHARSET; - logfont.lfOutPrecision = OUT_DEFAULT_PRECIS; - logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS; - logfont.lfQuality = DEFAULT_QUALITY; /* filled in later */ - logfont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; - - if (!logfont.lfFaceName) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - return _win32_scaled_font_create (&logfont, NULL, &toy_face->base, - font_matrix, ctm, options, - scaled_font_out); -} - -static void -_cairo_win32_scaled_font_fini (void *abstract_font) -{ - cairo_win32_scaled_font_t *scaled_font = abstract_font; - - if (scaled_font == NULL) - return; - - if (scaled_font->scaled_hfont && scaled_font->delete_scaled_hfont) - DeleteObject (scaled_font->scaled_hfont); - - if (scaled_font->unscaled_hfont) - DeleteObject (scaled_font->unscaled_hfont); -} - -static cairo_int_status_t -_cairo_win32_scaled_font_type1_text_to_glyphs (cairo_win32_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - cairo_glyph_t **glyphs, - int *num_glyphs) -{ - uint16_t *utf16; - int n16; - int i; - WORD *glyph_indices = NULL; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - double x_pos, y_pos; - HDC hdc = NULL; - cairo_matrix_t mat; - - status = _cairo_utf8_to_utf16 (utf8, -1, &utf16, &n16); - if (status) - return status; - - glyph_indices = _cairo_malloc_ab (n16 + 1, sizeof (WORD)); - if (!glyph_indices) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL1; - } - - hdc = _get_global_font_dc (); - if (!hdc) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL2; - } - - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (status) - goto FAIL2; - - if (GetGlyphIndicesW (hdc, utf16, n16, glyph_indices, 0) == GDI_ERROR) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_type1_text_to_glyphs:GetGlyphIndicesW"); - goto FAIL2; - } - - *num_glyphs = n16; - *glyphs = _cairo_malloc_ab (n16, sizeof (cairo_glyph_t)); - if (!*glyphs) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL2; - } - - x_pos = x; - y_pos = y; - mat = scaled_font->base.ctm; - cairo_matrix_invert (&mat); - for (i = 0; i < n16; i++) { - cairo_scaled_glyph_t *scaled_glyph; - - (*glyphs)[i].index = glyph_indices[i]; - (*glyphs)[i].x = x_pos; - (*glyphs)[i].y = y_pos; - - status = _cairo_scaled_glyph_lookup (&scaled_font->base, - glyph_indices[i], - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - if (status) { - free (*glyphs); - goto FAIL2; - } - - x = scaled_glyph->x_advance; - y = scaled_glyph->y_advance; - cairo_matrix_transform_distance (&mat, &x, &y); - x_pos += x; - y_pos += y; - } - - cairo_win32_scaled_font_done_font (&scaled_font->base); - -FAIL2: - free (glyph_indices); -FAIL1: - free (utf16); - - return status; -} - -static cairo_int_status_t -_cairo_win32_scaled_font_text_to_glyphs (void *abstract_font, - double x, - double y, - const char *utf8, - cairo_glyph_t **glyphs, - int *num_glyphs) -{ - cairo_win32_scaled_font_t *scaled_font = abstract_font; - uint16_t *utf16; - int n16; - GCP_RESULTSW gcp_results; - unsigned int buffer_size, i; - WCHAR *glyph_indices = NULL; - int *dx = NULL; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - double x_pos, y_pos; - double x_incr, y_incr; - HDC hdc = NULL; - - /* GetCharacterPlacement() returns utf16 instead of glyph indices - * for Type 1 fonts. Use GetGlyphIndices for Type 1 fonts. */ - if (scaled_font->is_type1) - return _cairo_win32_scaled_font_type1_text_to_glyphs (scaled_font, - x, - y, - utf8, - glyphs, - num_glyphs); - - /* Compute a vector in user space along the baseline of length one logical space unit */ - x_incr = 1; - y_incr = 0; - cairo_matrix_transform_distance (&scaled_font->base.font_matrix, &x_incr, &y_incr); - x_incr /= scaled_font->logical_scale; - y_incr /= scaled_font->logical_scale; - - status = _cairo_utf8_to_utf16 (utf8, -1, &utf16, &n16); - if (status) - return status; - - gcp_results.lStructSize = sizeof (GCP_RESULTS); - gcp_results.lpOutString = NULL; - gcp_results.lpOrder = NULL; - gcp_results.lpCaretPos = NULL; - gcp_results.lpClass = NULL; - - buffer_size = MAX (n16 * 1.2, 16); /* Initially guess number of chars plus a few */ - if (buffer_size > INT_MAX) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL1; - } - - hdc = _get_global_font_dc (); - if (!hdc) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL1; - } - - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (status) - goto FAIL1; - - while (TRUE) { - if (glyph_indices) { - free (glyph_indices); - glyph_indices = NULL; - } - if (dx) { - free (dx); - dx = NULL; - } - - glyph_indices = _cairo_malloc_ab (buffer_size, sizeof (WCHAR)); - dx = _cairo_malloc_ab (buffer_size, sizeof (int)); - if (!glyph_indices || !dx) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL2; - } - - gcp_results.nGlyphs = buffer_size; - gcp_results.lpDx = dx; - gcp_results.lpGlyphs = glyph_indices; - - if (!GetCharacterPlacementW (hdc, utf16, n16, - 0, - &gcp_results, - GCP_DIACRITIC | GCP_LIGATE | GCP_GLYPHSHAPE | GCP_REORDER)) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_text_to_glyphs"); - goto FAIL2; - } - - if (gcp_results.lpDx && gcp_results.lpGlyphs) - break; - - /* Too small a buffer, try again */ - - buffer_size *= 1.5; - if (buffer_size > INT_MAX) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL2; - } - } - - *num_glyphs = gcp_results.nGlyphs; - *glyphs = _cairo_malloc_ab (gcp_results.nGlyphs, sizeof (cairo_glyph_t)); - if (!*glyphs) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL2; - } - - x_pos = x; - y_pos = y; - - for (i = 0; i < gcp_results.nGlyphs; i++) { - (*glyphs)[i].index = glyph_indices[i]; - (*glyphs)[i].x = x_pos ; - (*glyphs)[i].y = y_pos; - - x_pos += x_incr * dx[i]; - y_pos += y_incr * dx[i]; - } - - FAIL2: - if (glyph_indices) - free (glyph_indices); - if (dx) - free (dx); - - cairo_win32_scaled_font_done_font (&scaled_font->base); - - FAIL1: - free (utf16); - - return status; -} - -static cairo_status_t -_cairo_win32_scaled_font_set_metrics (cairo_win32_scaled_font_t *scaled_font) -{ - cairo_status_t status; - cairo_font_extents_t extents; - - TEXTMETRIC metrics; - HDC hdc; - - hdc = _get_global_font_dc (); - if (!hdc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (scaled_font->preserve_axes || scaled_font->base.options.hint_metrics == CAIRO_HINT_METRICS_OFF) { - /* For 90-degree rotations (including 0), we get the metrics - * from the GDI in logical space, then convert back to font space - */ - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (status) - return status; - GetTextMetrics (hdc, &metrics); - cairo_win32_scaled_font_done_font (&scaled_font->base); - - extents.ascent = metrics.tmAscent / scaled_font->logical_scale; - extents.descent = metrics.tmDescent / scaled_font->logical_scale; - - extents.height = (metrics.tmHeight + metrics.tmExternalLeading) / scaled_font->logical_scale; - extents.max_x_advance = metrics.tmMaxCharWidth / scaled_font->logical_scale; - extents.max_y_advance = 0; - - } else { - /* For all other transformations, we use the design metrics - * of the font. The GDI results from GetTextMetrics() on a - * transformed font are inexplicably large and we want to - * avoid them. - */ - status = _cairo_win32_scaled_font_select_unscaled_font (&scaled_font->base, hdc); - if (status) - return status; - GetTextMetrics (hdc, &metrics); - _cairo_win32_scaled_font_done_unscaled_font (&scaled_font->base); - - extents.ascent = (double)metrics.tmAscent / scaled_font->em_square; - extents.descent = (double)metrics.tmDescent / scaled_font->em_square; - extents.height = (double)(metrics.tmHeight + metrics.tmExternalLeading) / scaled_font->em_square; - extents.max_x_advance = (double)(metrics.tmMaxCharWidth) / scaled_font->em_square; - extents.max_y_advance = 0; - - } - - scaled_font->is_bitmap = !(metrics.tmPitchAndFamily & TMPF_VECTOR); - - /* Need to determine if this is a Type 1 font for the special - * handling in _text_to_glyphs. Unlike TrueType or OpenType, - * Type1 fonts do not have a "cmap" table (or any other table). - * However GetFontData() will retrieve a Type1 font when - * requesting that GetFontData() retrieve data from the start of - * the file. This is to distinguish Type1 from stroke fonts such - * as "Script" and "Modern". The TMPF_TRUETYPE test is redundant - * but improves performance for the most common fonts. - */ - scaled_font->is_type1 = FALSE; - if (!(metrics.tmPitchAndFamily & TMPF_TRUETYPE) && - (metrics.tmPitchAndFamily & TMPF_VECTOR)) - { - if ((GetFontData (hdc, CMAP_TAG, 0, NULL, 0) == GDI_ERROR) && - (GetFontData (hdc, 0, 0, NULL, 0) != GDI_ERROR)) - { - scaled_font->is_type1 = TRUE; - } - } - - return _cairo_scaled_font_set_metrics (&scaled_font->base, &extents); -} - -static cairo_status_t -_cairo_win32_scaled_font_init_glyph_metrics (cairo_win32_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph) -{ - static const MAT2 matrix = { { 0, 1 }, { 0, 0 }, { 0, 0 }, { 0, 1 } }; - GLYPHMETRICS metrics; - cairo_status_t status; - cairo_text_extents_t extents; - HDC hdc; - - hdc = _get_global_font_dc (); - if (!hdc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (scaled_font->is_bitmap) { - /* GetGlyphOutline will not work. Assume that the glyph does not extend outside the font box. */ - cairo_font_extents_t font_extents; - INT width = 0; - UINT charIndex = _cairo_scaled_glyph_index (scaled_glyph); - - cairo_scaled_font_extents (&scaled_font->base, &font_extents); - - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (!status) { - if (!GetCharWidth32(hdc, charIndex, charIndex, &width)) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_init_glyph_metrics:GetCharWidth32"); - width = 0; - } - } - cairo_win32_scaled_font_done_font (&scaled_font->base); - - extents.x_bearing = 0; - extents.y_bearing = -font_extents.ascent / scaled_font->y_scale; - extents.width = width / scaled_font->x_scale; - extents.height = (font_extents.ascent + font_extents.descent) / scaled_font->y_scale; - extents.x_advance = extents.width; - extents.y_advance = 0; - } else if (scaled_font->preserve_axes && scaled_font->base.options.hint_style != CAIRO_HINT_METRICS_OFF) { - /* If we aren't rotating / skewing the axes, then we get the metrics - * from the GDI in device space and convert to font space. - */ - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (status) - return status; - if (GetGlyphOutlineW (hdc, _cairo_scaled_glyph_index (scaled_glyph), - GGO_METRICS | GGO_GLYPH_INDEX, - &metrics, 0, NULL, &matrix) == GDI_ERROR) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_init_glyph_metrics:GetGlyphOutlineW"); - memset (&metrics, 0, sizeof (GLYPHMETRICS)); - } - cairo_win32_scaled_font_done_font (&scaled_font->base); - - if (scaled_font->swap_axes) { - extents.x_bearing = - metrics.gmptGlyphOrigin.y / scaled_font->y_scale; - extents.y_bearing = metrics.gmptGlyphOrigin.x / scaled_font->x_scale; - extents.width = metrics.gmBlackBoxY / scaled_font->y_scale; - extents.height = metrics.gmBlackBoxX / scaled_font->x_scale; - extents.x_advance = metrics.gmCellIncY / scaled_font->x_scale; - extents.y_advance = metrics.gmCellIncX / scaled_font->y_scale; - } else { - extents.x_bearing = metrics.gmptGlyphOrigin.x / scaled_font->x_scale; - extents.y_bearing = - metrics.gmptGlyphOrigin.y / scaled_font->y_scale; - extents.width = metrics.gmBlackBoxX / scaled_font->x_scale; - extents.height = metrics.gmBlackBoxY / scaled_font->y_scale; - extents.x_advance = metrics.gmCellIncX / scaled_font->x_scale; - extents.y_advance = metrics.gmCellIncY / scaled_font->y_scale; - } - - if (scaled_font->swap_x) { - extents.x_bearing = (- extents.x_bearing - extents.width); - extents.x_advance = - extents.x_advance; - } - - if (scaled_font->swap_y) { - extents.y_bearing = (- extents.y_bearing - extents.height); - extents.y_advance = - extents.y_advance; - } - - } else { - /* For all other transformations, we use the design metrics - * of the font. - */ - status = _cairo_win32_scaled_font_select_unscaled_font (&scaled_font->base, hdc); - if (GetGlyphOutlineW (hdc, _cairo_scaled_glyph_index (scaled_glyph), - GGO_METRICS | GGO_GLYPH_INDEX, - &metrics, 0, NULL, &matrix) == GDI_ERROR) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_init_glyph_metrics:GetGlyphOutlineW"); - memset (&metrics, 0, sizeof (GLYPHMETRICS)); - } - _cairo_win32_scaled_font_done_unscaled_font (&scaled_font->base); - - extents.x_bearing = (double)metrics.gmptGlyphOrigin.x / scaled_font->em_square; - extents.y_bearing = - (double)metrics.gmptGlyphOrigin.y / scaled_font->em_square; - extents.width = (double)metrics.gmBlackBoxX / scaled_font->em_square; - extents.height = (double)metrics.gmBlackBoxY / scaled_font->em_square; - extents.x_advance = (double)metrics.gmCellIncX / scaled_font->em_square; - extents.y_advance = (double)metrics.gmCellIncY / scaled_font->em_square; - } - - _cairo_scaled_glyph_set_metrics (scaled_glyph, - &scaled_font->base, - &extents); - - return CAIRO_STATUS_SUCCESS; -} - -/* Not currently used code, but may be useful in the future if we add - * back the capability to the scaled font backend interface to get the - * actual device space bbox rather than computing it from the - * font-space metrics. - */ -#if 0 -static cairo_status_t -_cairo_win32_scaled_font_glyph_bbox (void *abstract_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_box_t *bbox) -{ - static const MAT2 matrix = { { 0, 1 }, { 0, 0 }, { 0, 0 }, { 0, 1 } }; - cairo_win32_scaled_font_t *scaled_font = abstract_font; - int x1 = 0, x2 = 0, y1 = 0, y2 = 0; - - if (num_glyphs > 0) { - HDC hdc = _get_global_font_dc (); - GLYPHMETRICS metrics; - cairo_status_t status; - int i; - - if (!hdc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (status) - return status; - - for (i = 0; i < num_glyphs; i++) { - int x = _cairo_lround (glyphs[i].x); - int y = _cairo_lround (glyphs[i].y); - - GetGlyphOutlineW (hdc, glyphs[i].index, GGO_METRICS | GGO_GLYPH_INDEX, - &metrics, 0, NULL, &matrix); - - if (i == 0 || x1 > x + metrics.gmptGlyphOrigin.x) - x1 = x + metrics.gmptGlyphOrigin.x; - if (i == 0 || y1 > y - metrics.gmptGlyphOrigin.y) - y1 = y - metrics.gmptGlyphOrigin.y; - if (i == 0 || x2 < x + metrics.gmptGlyphOrigin.x + (int)metrics.gmBlackBoxX) - x2 = x + metrics.gmptGlyphOrigin.x + (int)metrics.gmBlackBoxX; - if (i == 0 || y2 < y - metrics.gmptGlyphOrigin.y + (int)metrics.gmBlackBoxY) - y2 = y - metrics.gmptGlyphOrigin.y + (int)metrics.gmBlackBoxY; - } - - cairo_win32_scaled_font_done_font (&scaled_font->base); - } - - bbox->p1.x = _cairo_fixed_from_int (x1); - bbox->p1.y = _cairo_fixed_from_int (y1); - bbox->p2.x = _cairo_fixed_from_int (x2); - bbox->p2.y = _cairo_fixed_from_int (y2); - - return CAIRO_STATUS_SUCCESS; -} -#endif - -typedef struct { - cairo_win32_scaled_font_t *scaled_font; - HDC hdc; - - cairo_array_t glyphs; - cairo_array_t dx; - - int start_x; - int last_x; - int last_y; -} cairo_glyph_state_t; - -static void -_start_glyphs (cairo_glyph_state_t *state, - cairo_win32_scaled_font_t *scaled_font, - HDC hdc) -{ - state->hdc = hdc; - state->scaled_font = scaled_font; - - _cairo_array_init (&state->glyphs, sizeof (WCHAR)); - _cairo_array_init (&state->dx, sizeof (int)); -} - -static cairo_status_t -_flush_glyphs (cairo_glyph_state_t *state) -{ - cairo_status_t status; - int dx = 0; - WCHAR * elements; - int * dx_elements; - - status = _cairo_array_append (&state->dx, &dx); - if (status) - return status; - - elements = _cairo_array_index (&state->glyphs, 0); - dx_elements = _cairo_array_index (&state->dx, 0); - if (!ExtTextOutW (state->hdc, - state->start_x, state->last_y, - ETO_GLYPH_INDEX, - NULL, - elements, - state->glyphs.num_elements, - dx_elements)) { - return _cairo_win32_print_gdi_error ("_flush_glyphs"); - } - - _cairo_array_truncate (&state->glyphs, 0); - _cairo_array_truncate (&state->dx, 0); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_add_glyph (cairo_glyph_state_t *state, - unsigned long index, - double device_x, - double device_y) -{ - cairo_status_t status; - double user_x = device_x; - double user_y = device_y; - WCHAR glyph_index = index; - int logical_x, logical_y; - - cairo_matrix_transform_point (&state->scaled_font->device_to_logical, &user_x, &user_y); - - logical_x = _cairo_lround (user_x); - logical_y = _cairo_lround (user_y); - - if (state->glyphs.num_elements > 0) { - int dx; - - if (logical_y != state->last_y) { - status = _flush_glyphs (state); - if (status) - return status; - state->start_x = logical_x; - } - - dx = logical_x - state->last_x; - status = _cairo_array_append (&state->dx, &dx); - if (status) - return status; - } else { - state->start_x = logical_x; - } - - state->last_x = logical_x; - state->last_y = logical_y; - - status = _cairo_array_append (&state->glyphs, &glyph_index); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_finish_glyphs (cairo_glyph_state_t *state) -{ - /* ignore errors as we only call _finish_glyphs on the error path */ - _flush_glyphs (state); - - _cairo_array_fini (&state->glyphs); - _cairo_array_fini (&state->dx); -} - -static cairo_status_t -_draw_glyphs_on_surface (cairo_win32_surface_t *surface, - cairo_win32_scaled_font_t *scaled_font, - COLORREF color, - int x_offset, - int y_offset, - const cairo_glyph_t *glyphs, - int num_glyphs) -{ - cairo_glyph_state_t state; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - int i; - - if (!SaveDC (surface->dc)) - return _cairo_win32_print_gdi_error ("_draw_glyphs_on_surface:SaveDC"); - - status = cairo_win32_scaled_font_select_font (&scaled_font->base, surface->dc); - if (status) - goto FAIL1; - - SetTextColor (surface->dc, color); - SetTextAlign (surface->dc, TA_BASELINE | TA_LEFT); - SetBkMode (surface->dc, TRANSPARENT); - - _start_glyphs (&state, scaled_font, surface->dc); - - for (i = 0; i < num_glyphs; i++) { - status = _add_glyph (&state, glyphs[i].index, - glyphs[i].x - x_offset, glyphs[i].y - y_offset); - if (status) - goto FAIL2; - } - - FAIL2: - _finish_glyphs (&state); - cairo_win32_scaled_font_done_font (&scaled_font->base); - FAIL1: - RestoreDC (surface->dc, -1); - - return status; -} - -/* Duplicate the green channel of a 4-channel mask in the alpha channel, then - * invert the whole mask. - */ -static void -_compute_argb32_mask_alpha (cairo_win32_surface_t *mask_surface) -{ - cairo_image_surface_t *image = (cairo_image_surface_t *)mask_surface->image; - int i, j; - - for (i = 0; i < image->height; i++) { - uint32_t *p = (uint32_t *) (image->data + i * image->stride); - for (j = 0; j < image->width; j++) { - *p = 0xffffffff ^ (*p | ((*p & 0x0000ff00) << 16)); - p++; - } - } -} - -/* Invert a mask - */ -static void -_invert_argb32_mask (cairo_win32_surface_t *mask_surface) -{ - cairo_image_surface_t *image = (cairo_image_surface_t *)mask_surface->image; - int i, j; - - for (i = 0; i < image->height; i++) { - uint32_t *p = (uint32_t *) (image->data + i * image->stride); - for (j = 0; j < image->width; j++) { - *p = 0xffffffff ^ *p; - p++; - } - } -} - -/* Compute an alpha-mask from a monochrome RGB24 image - */ -static cairo_surface_t * -_compute_a8_mask (cairo_win32_surface_t *mask_surface) -{ - cairo_image_surface_t *image24 = (cairo_image_surface_t *)mask_surface->image; - cairo_image_surface_t *image8; - int i, j; - - image8 = (cairo_image_surface_t *)cairo_image_surface_create (CAIRO_FORMAT_A8, - image24->width, image24->height); - if (image8->base.status) - return NULL; - - for (i = 0; i < image24->height; i++) { - uint32_t *p = (uint32_t *) (image24->data + i * image24->stride); - unsigned char *q = (unsigned char *) (image8->data + i * image8->stride); - - for (j = 0; j < image24->width; j++) { - *q = 255 - ((*p & 0x0000ff00) >> 8); - p++; - q++; - } - } - - return &image8->base; -} - -static cairo_int_status_t -_cairo_win32_scaled_font_glyph_init (void *abstract_font, - cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_glyph_info_t info) -{ - cairo_win32_scaled_font_t *scaled_font = abstract_font; - cairo_status_t status; - - if ((info & CAIRO_SCALED_GLYPH_INFO_METRICS) != 0) { - status = _cairo_win32_scaled_font_init_glyph_metrics (scaled_font, scaled_glyph); - if (status) - return status; - } - - if (info & CAIRO_SCALED_GLYPH_INFO_SURFACE) { - status = _cairo_win32_scaled_font_init_glyph_surface (scaled_font, scaled_glyph); - if (status) - return status; - } - - if ((info & CAIRO_SCALED_GLYPH_INFO_PATH) != 0) { - status = _cairo_win32_scaled_font_init_glyph_path (scaled_font, scaled_glyph); - if (status) - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_win32_scaled_font_show_glyphs (void *abstract_font, - cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_surface_t *generic_surface, - int source_x, - int source_y, - int dest_x, - int dest_y, - unsigned int width, - unsigned int height, - cairo_glyph_t *glyphs, - int num_glyphs) -{ - cairo_win32_scaled_font_t *scaled_font = abstract_font; - cairo_win32_surface_t *surface = (cairo_win32_surface_t *)generic_surface; - cairo_status_t status; - - if (width == 0 || height == 0) - return CAIRO_STATUS_SUCCESS; - - if (_cairo_surface_is_win32 (generic_surface) && - surface->format == CAIRO_FORMAT_RGB24 && - op == CAIRO_OPERATOR_OVER && - _cairo_pattern_is_opaque_solid (pattern)) { - - cairo_solid_pattern_t *solid_pattern = (cairo_solid_pattern_t *)pattern; - - /* When compositing OVER on a GDI-understood surface, with a - * solid opaque color, we can just call ExtTextOut directly. - */ - COLORREF new_color; - - new_color = RGB (((int)solid_pattern->color.red_short) >> 8, - ((int)solid_pattern->color.green_short) >> 8, - ((int)solid_pattern->color.blue_short) >> 8); - - status = _draw_glyphs_on_surface (surface, scaled_font, new_color, - 0, 0, - glyphs, num_glyphs); - - return status; - } else { - /* Otherwise, we need to draw using software fallbacks. We create a mask - * surface by drawing the the glyphs onto a DIB, black-on-white then - * inverting. GDI outputs gamma-corrected images so inverted black-on-white - * is very different from white-on-black. We favor the more common - * case where the final output is dark-on-light. - */ - cairo_win32_surface_t *tmp_surface; - cairo_surface_t *mask_surface; - cairo_surface_pattern_t mask; - RECT r; - - tmp_surface = (cairo_win32_surface_t *)cairo_win32_surface_create_with_dib (CAIRO_FORMAT_ARGB32, width, height); - if (tmp_surface->base.status) - return tmp_surface->base.status; - - r.left = 0; - r.top = 0; - r.right = width; - r.bottom = height; - FillRect (tmp_surface->dc, &r, GetStockObject (WHITE_BRUSH)); - - status = _draw_glyphs_on_surface (tmp_surface, - scaled_font, RGB (0, 0, 0), - dest_x, dest_y, - glyphs, num_glyphs); - if (status) { - cairo_surface_destroy (&tmp_surface->base); - return status; - } - - if (scaled_font->quality == CLEARTYPE_QUALITY) { - /* For ClearType, we need a 4-channel mask. If we are compositing on - * a surface with alpha, we need to compute the alpha channel of - * the mask (we just copy the green channel). But for a destination - * surface without alpha the alpha channel of the mask is ignored - */ - - if (surface->format != CAIRO_FORMAT_RGB24) - _compute_argb32_mask_alpha (tmp_surface); - else - _invert_argb32_mask (tmp_surface); - - mask_surface = &tmp_surface->base; - - /* XXX: Hacky, should expose this in cairo_image_surface */ - pixman_image_set_component_alpha (((cairo_image_surface_t *)tmp_surface->image)->pixman_image, TRUE); - - } else { - mask_surface = _compute_a8_mask (tmp_surface); - cairo_surface_destroy (&tmp_surface->base); - if (!mask_surface) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* For op == OVER, no-cleartype, a possible optimization here is to - * draw onto an intermediate ARGB32 surface and alpha-blend that with the - * destination - */ - _cairo_pattern_init_for_surface (&mask, mask_surface); - - status = _cairo_surface_composite (op, pattern, - &mask.base, - &surface->base, - source_x, source_y, - 0, 0, - dest_x, dest_y, - width, height); - - _cairo_pattern_fini (&mask.base); - - cairo_surface_destroy (mask_surface); - - return status; - } -} - -static cairo_int_status_t -_cairo_win32_scaled_font_load_truetype_table (void *abstract_font, - unsigned long tag, - long offset, - unsigned char *buffer, - unsigned long *length) -{ - HDC hdc; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - cairo_win32_scaled_font_t *scaled_font = abstract_font; - hdc = _get_global_font_dc (); - if (!hdc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - tag = (tag&0x000000ff)<<24 | (tag&0x0000ff00)<<8 | (tag&0x00ff0000)>>8 | (tag&0xff000000)>>24; - status = _cairo_win32_scaled_font_select_unscaled_font (&scaled_font->base, hdc); - - *length = GetFontData (hdc, tag, offset, buffer, *length); - if (*length == GDI_ERROR) - status = CAIRO_INT_STATUS_UNSUPPORTED; - - _cairo_win32_scaled_font_done_unscaled_font (&scaled_font->base); - - return status; -} - -static cairo_int_status_t -_cairo_win32_scaled_font_map_glyphs_to_unicode (void *abstract_font, - cairo_scaled_font_subset_t *font_subset) -{ - cairo_win32_scaled_font_t *scaled_font = abstract_font; - GLYPHSET *glyph_set; - uint16_t *utf16 = NULL; - WORD *glyph_indices = NULL; - HDC hdc = NULL; - int res; - unsigned int i, j, k, count, num_glyphs; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - hdc = _get_global_font_dc (); - if (!hdc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (status) - return status; - - res = GetFontUnicodeRanges(hdc, NULL); - if (res == 0) { - status = _cairo_win32_print_gdi_error ( - "_cairo_win32_scaled_font_map_glyphs_to_unicode:GetFontUnicodeRanges"); - goto fail1; - } - - glyph_set = malloc (res); - if (glyph_set == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail1; - } - - res = GetFontUnicodeRanges(hdc, glyph_set); - if (res == 0) { - status = _cairo_win32_print_gdi_error ( - "_cairo_win32_scaled_font_map_glyphs_to_unicode:GetFontUnicodeRanges"); - goto fail2; - } - - count = font_subset->num_glyphs; - for (i = 0; i < glyph_set->cRanges && count > 0; i++) { - num_glyphs = glyph_set->ranges[i].cGlyphs; - - utf16 = _cairo_malloc_ab (num_glyphs + 1, sizeof (uint16_t)); - if (utf16 == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - - glyph_indices = _cairo_malloc_ab (num_glyphs + 1, sizeof (WORD)); - if (glyph_indices == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto fail2; - } - - for (j = 0; j < num_glyphs; j++) - utf16[j] = glyph_set->ranges[i].wcLow + j; - utf16[j] = 0; - - if (GetGlyphIndicesW (hdc, utf16, num_glyphs, glyph_indices, 0) == GDI_ERROR) { - status = _cairo_win32_print_gdi_error ( - "_cairo_win32_scaled_font_map_glyphs_to_unicode:GetGlyphIndicesW"); - goto fail2; - } - - for (j = 0; j < num_glyphs; j++) { - for (k = 0; k < font_subset->num_glyphs; k++) { - if (font_subset->glyphs[k] == glyph_indices[j]) { - font_subset->to_unicode[k] = utf16[j]; - count--; - break; - } - } - } - - free (glyph_indices); - glyph_indices = NULL; - free (utf16); - utf16= NULL; - } - -fail2: - if (glyph_indices) - free (glyph_indices); - if (utf16) - free (utf16); - free (glyph_set); -fail1: - cairo_win32_scaled_font_done_font (&scaled_font->base); - - return status; -} - -static cairo_status_t -_cairo_win32_scaled_font_init_glyph_surface (cairo_win32_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_glyph_t glyph; - cairo_win32_surface_t *surface; - cairo_t *cr; - cairo_surface_t *image; - int width, height; - int x1, y1, x2, y2; - - x1 = _cairo_fixed_integer_floor (scaled_glyph->bbox.p1.x); - y1 = _cairo_fixed_integer_floor (scaled_glyph->bbox.p1.y); - x2 = _cairo_fixed_integer_ceil (scaled_glyph->bbox.p2.x); - y2 = _cairo_fixed_integer_ceil (scaled_glyph->bbox.p2.y); - width = x2 - x1; - height = y2 - y1; - - surface = (cairo_win32_surface_t *) - cairo_win32_surface_create_with_dib (CAIRO_FORMAT_RGB24, width, height); - - cr = cairo_create((cairo_surface_t *)surface); - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - cairo_destroy(cr); - - glyph.index = _cairo_scaled_glyph_index (scaled_glyph); - glyph.x = -x1; - glyph.y = -y1; - status = _draw_glyphs_on_surface (surface, scaled_font, RGB(0,0,0), - 0, 0, &glyph, 1); - GdiFlush(); - - image = _compute_a8_mask (surface); - cairo_surface_set_device_offset ((cairo_surface_t *)image, -x1, -y1); - _cairo_scaled_glyph_set_surface (scaled_glyph, - &scaled_font->base, - (cairo_image_surface_t*)image); - cairo_surface_destroy (&surface->base); - - return status; -} - -static void -_cairo_win32_transform_FIXED_to_fixed (cairo_matrix_t *matrix, - FIXED Fx, FIXED Fy, - cairo_fixed_t *fx, cairo_fixed_t *fy) -{ - double x = Fx.value + Fx.fract / 65536.0; - double y = Fy.value + Fy.fract / 65536.0; - cairo_matrix_transform_point (matrix, &x, &y); - *fx = _cairo_fixed_from_double (x); - *fy = _cairo_fixed_from_double (y); -} - -static cairo_status_t -_cairo_win32_scaled_font_init_glyph_path (cairo_win32_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph) -{ - static const MAT2 matrix = { { 0, 1 }, { 0, 0 }, { 0, 0 }, { 0, -1 } }; - cairo_status_t status; - GLYPHMETRICS metrics; - HDC hdc; - DWORD bytesGlyph; - unsigned char *buffer, *ptr; - cairo_path_fixed_t *path; - cairo_matrix_t transform; - cairo_fixed_t x, y; - - if (scaled_font->is_bitmap) - return CAIRO_INT_STATUS_UNSUPPORTED; - - hdc = _get_global_font_dc (); - if (!hdc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - path = _cairo_path_fixed_create (); - if (!path) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (scaled_font->base.options.hint_style == CAIRO_HINT_STYLE_NONE) { - status = _cairo_win32_scaled_font_select_unscaled_font (&scaled_font->base, hdc); - transform = scaled_font->base.scale; - cairo_matrix_scale (&transform, 1.0/scaled_font->em_square, 1.0/scaled_font->em_square); - } else { - status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - cairo_matrix_init_identity(&transform); - } - if (status) - goto CLEANUP_PATH; - - bytesGlyph = GetGlyphOutlineW (hdc, _cairo_scaled_glyph_index (scaled_glyph), - GGO_NATIVE | GGO_GLYPH_INDEX, - &metrics, 0, NULL, &matrix); - - if (bytesGlyph == GDI_ERROR) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_glyph_path"); - goto CLEANUP_FONT; - } - - ptr = buffer = malloc (bytesGlyph); - - if (!buffer) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP_FONT; - } - - if (GetGlyphOutlineW (hdc, _cairo_scaled_glyph_index (scaled_glyph), - GGO_NATIVE | GGO_GLYPH_INDEX, - &metrics, bytesGlyph, buffer, &matrix) == GDI_ERROR) { - status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_glyph_path"); - goto CLEANUP_BUFFER; - } - - while (ptr < buffer + bytesGlyph) { - TTPOLYGONHEADER *header = (TTPOLYGONHEADER *)ptr; - unsigned char *endPoly = ptr + header->cb; - - ptr += sizeof (TTPOLYGONHEADER); - - _cairo_win32_transform_FIXED_to_fixed (&transform, - header->pfxStart.x, - header->pfxStart.y, - &x, &y); - status = _cairo_path_fixed_move_to (path, x, y); - if (status) - goto CLEANUP_BUFFER; - - while (ptr < endPoly) { - TTPOLYCURVE *curve = (TTPOLYCURVE *)ptr; - POINTFX *points = curve->apfx; - int i; - switch (curve->wType) { - case TT_PRIM_LINE: - for (i = 0; i < curve->cpfx; i++) { - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i].x, - points[i].y, - &x, &y); - status = _cairo_path_fixed_line_to (path, x, y); - if (status) - goto CLEANUP_BUFFER; - } - break; - case TT_PRIM_QSPLINE: - for (i = 0; i < curve->cpfx - 1; i++) { - cairo_fixed_t p1x, p1y, p2x, p2y, cx, cy, c1x, c1y, c2x, c2y; - if (! _cairo_path_fixed_get_current_point (path, &p1x, &p1y)) - goto CLEANUP_BUFFER; - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i].x, - points[i].y, - &cx, &cy); - - if (i + 1 == curve->cpfx - 1) { - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i + 1].x, - points[i + 1].y, - &p2x, &p2y); - } else { - /* records with more than one curve use interpolation for - control points, per http://support.microsoft.com/kb/q87115/ */ - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i + 1].x, - points[i + 1].y, - &x, &y); - p2x = (cx + x) / 2; - p2y = (cy + y) / 2; - } - - c1x = 2 * cx / 3 + p1x / 3; - c1y = 2 * cy / 3 + p1y / 3; - c2x = 2 * cx / 3 + p2x / 3; - c2y = 2 * cy / 3 + p2y / 3; - - status = _cairo_path_fixed_curve_to (path, c1x, c1y, c2x, c2y, p2x, p2y); - if (status) - goto CLEANUP_BUFFER; - } - break; - case TT_PRIM_CSPLINE: - for (i = 0; i < curve->cpfx - 2; i += 2) { - cairo_fixed_t x1, y1, x2, y2; - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i].x, - points[i].y, - &x, &y); - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i + 1].x, - points[i + 1].y, - &x1, &y1); - _cairo_win32_transform_FIXED_to_fixed (&transform, - points[i + 2].x, - points[i + 2].y, - &x2, &y2); - status = _cairo_path_fixed_curve_to (path, x, y, x1, y1, x2, y2); - if (status) - goto CLEANUP_BUFFER; - } - break; - } - ptr += sizeof(TTPOLYCURVE) + sizeof (POINTFX) * (curve->cpfx - 1); - } - status = _cairo_path_fixed_close_path (path); - if (status) - goto CLEANUP_BUFFER; - } - - _cairo_scaled_glyph_set_path (scaled_glyph, - &scaled_font->base, - path); - - CLEANUP_BUFFER: - free (buffer); - - CLEANUP_FONT: - cairo_win32_scaled_font_done_font (&scaled_font->base); - - CLEANUP_PATH: - if (status != CAIRO_STATUS_SUCCESS) - _cairo_path_fixed_destroy (path); - - return status; -} - -const cairo_scaled_font_backend_t cairo_win32_scaled_font_backend = { - CAIRO_FONT_TYPE_WIN32, - _cairo_win32_scaled_font_create_toy, - _cairo_win32_scaled_font_fini, - _cairo_win32_scaled_font_glyph_init, - _cairo_win32_scaled_font_text_to_glyphs, - NULL, /* ucs4_to_index */ - _cairo_win32_scaled_font_show_glyphs, - _cairo_win32_scaled_font_load_truetype_table, - _cairo_win32_scaled_font_map_glyphs_to_unicode, -}; - -/* #cairo_win32_font_face_t */ - -typedef struct _cairo_win32_font_face cairo_win32_font_face_t; - -/* If hfont is non-%NULL then logfont->lfHeight must be -S for some S, - * logfont->lfWidth, logfont->lfEscapement, logfont->lfOrientation must - * all be 0, and hfont is the result of calling CreateFontIndirectW on - * logfont. - */ -struct _cairo_win32_font_face { - cairo_font_face_t base; - LOGFONTW logfont; - HFONT hfont; -}; - -/* implement the platform-specific interface */ - -static void -_cairo_win32_font_face_destroy (void *abstract_face) -{ -} - -static cairo_bool_t -_is_scale (const cairo_matrix_t *matrix, double scale) -{ - return matrix->xx == scale && matrix->yy == scale && - matrix->xy == 0. && matrix->yx == 0. && - matrix->x0 == 0. && matrix->y0 == 0.; -} - -static cairo_status_t -_cairo_win32_font_face_scaled_font_create (void *abstract_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options, - cairo_scaled_font_t **font) -{ - HFONT hfont = NULL; - - cairo_win32_font_face_t *font_face = abstract_face; - - if (font_face->hfont) { - /* Check whether it's OK to go ahead and use the font-face's HFONT. */ - if (_is_scale (ctm, 1.) && - _is_scale (font_matrix, -font_face->logfont.lfHeight)) { - hfont = font_face->hfont; - } - } - - return _win32_scaled_font_create (&font_face->logfont, - hfont, - &font_face->base, - font_matrix, ctm, options, - font); -} - -static const cairo_font_face_backend_t _cairo_win32_font_face_backend = { - CAIRO_FONT_TYPE_WIN32, - _cairo_win32_font_face_destroy, - _cairo_win32_font_face_scaled_font_create -}; - -/** - * cairo_win32_font_face_create_for_logfontw_hfont: - * @logfont: A #LOGFONTW structure specifying the font to use. - * If hfont is null then the lfHeight, lfWidth, lfOrientation and lfEscapement - * fields of this structure are ignored. Otherwise lfWidth, lfOrientation and - * lfEscapement must be zero. - * @font: An #HFONT that can be used when the font matrix is a scale by - * -lfHeight and the CTM is identity. - * - * Creates a new font for the Win32 font backend based on a - * #LOGFONT. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). - * The #cairo_scaled_font_t - * returned from cairo_scaled_font_create() is also for the Win32 backend - * and can be used with functions such as cairo_win32_scaled_font_select_font(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - **/ -cairo_font_face_t * -cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, HFONT font) -{ - cairo_win32_font_face_t *font_face; - - font_face = malloc (sizeof (cairo_win32_font_face_t)); - if (!font_face) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_font_face_t *)&_cairo_font_face_nil; - } - - font_face->logfont = *logfont; - font_face->hfont = font; - - _cairo_font_face_init (&font_face->base, &_cairo_win32_font_face_backend); - - return &font_face->base; -} - -/** - * cairo_win32_font_face_create_for_logfontw: - * @logfont: A #LOGFONTW structure specifying the font to use. - * The lfHeight, lfWidth, lfOrientation and lfEscapement - * fields of this structure are ignored. - * - * Creates a new font for the Win32 font backend based on a - * #LOGFONT. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). - * The #cairo_scaled_font_t - * returned from cairo_scaled_font_create() is also for the Win32 backend - * and can be used with functions such as cairo_win32_scaled_font_select_font(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - **/ -cairo_font_face_t * -cairo_win32_font_face_create_for_logfontw (LOGFONTW *logfont) -{ - return cairo_win32_font_face_create_for_logfontw_hfont (logfont, NULL); -} - -/** - * cairo_win32_font_face_create_for_hfont: - * @font: An #HFONT structure specifying the font to use. - * - * Creates a new font for the Win32 font backend based on a - * #HFONT. This font can then be used with - * cairo_set_font_face() or cairo_scaled_font_create(). - * The #cairo_scaled_font_t - * returned from cairo_scaled_font_create() is also for the Win32 backend - * and can be used with functions such as cairo_win32_scaled_font_select_font(). - * - * Return value: a newly created #cairo_font_face_t. Free with - * cairo_font_face_destroy() when you are done using it. - **/ -cairo_font_face_t * -cairo_win32_font_face_create_for_hfont (HFONT font) -{ - LOGFONTW logfont; - GetObjectW (font, sizeof(logfont), &logfont); - - if (logfont.lfEscapement != 0 || logfont.lfOrientation != 0 || - logfont.lfWidth != 0) { - /* We can't use this font because that optimization requires that - * lfEscapement, lfOrientation and lfWidth be zero. */ - font = NULL; - } - - return cairo_win32_font_face_create_for_logfontw_hfont (&logfont, font); -} - -/** - * cairo_win32_scaled_font_select_font: - * @scaled_font: A #cairo_scaled_font_t from the Win32 font backend. Such an - * object can be created with cairo_win32_scaled_font_create_for_logfontw(). - * @hdc: a device context - * - * Selects the font into the given device context and changes the - * map mode and world transformation of the device context to match - * that of the font. This function is intended for use when using - * layout APIs such as Uniscribe to do text layout with the - * cairo font. After finishing using the device context, you must call - * cairo_win32_scaled_font_done_font() to release any resources allocated - * by this function. - * - * See cairo_win32_scaled_font_get_metrics_factor() for converting logical - * coordinates from the device context to font space. - * - * Normally, calls to SaveDC() and RestoreDC() would be made around - * the use of this function to preserve the original graphics state. - * - * Return value: %CAIRO_STATUS_SUCCESS if the operation succeeded. - * otherwise an error such as %CAIRO_STATUS_NO_MEMORY and - * the device context is unchanged. - **/ -cairo_status_t -cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, - HDC hdc) -{ - cairo_status_t status; - HFONT hfont; - HFONT old_hfont = NULL; - int old_mode; - - if (scaled_font->status) - return scaled_font->status; - - hfont = _win32_scaled_font_get_scaled_hfont ((cairo_win32_scaled_font_t *)scaled_font); - if (!hfont) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - old_hfont = SelectObject (hdc, hfont); - if (!old_hfont) - return _cairo_win32_print_gdi_error ("cairo_win32_scaled_font_select_font:SelectObject"); - - old_mode = SetGraphicsMode (hdc, GM_ADVANCED); - if (!old_mode) { - status = _cairo_win32_print_gdi_error ("cairo_win32_scaled_font_select_font:SetGraphicsMode"); - SelectObject (hdc, old_hfont); - return status; - } - - status = _win32_scaled_font_set_world_transform ((cairo_win32_scaled_font_t *)scaled_font, hdc); - if (status) { - SetGraphicsMode (hdc, old_mode); - SelectObject (hdc, old_hfont); - return status; - } - - SetMapMode (hdc, MM_TEXT); - - return CAIRO_STATUS_SUCCESS; -} - -/** - * cairo_win32_scaled_font_done_font: - * @scaled_font: A scaled font from the Win32 font backend. - * - * Releases any resources allocated by cairo_win32_scaled_font_select_font() - **/ -void -cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font) -{ -} - -/** - * cairo_win32_scaled_font_get_metrics_factor: - * @scaled_font: a scaled font from the Win32 font backend - * - * Gets a scale factor between logical coordinates in the coordinate - * space used by cairo_win32_scaled_font_select_font() (that is, the - * coordinate system used by the Windows functions to return metrics) and - * font space coordinates. - * - * Return value: factor to multiply logical units by to get font space - * coordinates. - **/ -double -cairo_win32_scaled_font_get_metrics_factor (cairo_scaled_font_t *scaled_font) -{ - return 1. / ((cairo_win32_scaled_font_t *)scaled_font)->logical_scale; -} - -/** - * cairo_win32_scaled_font_get_logical_to_device: - * @scaled_font: a scaled font from the Win32 font backend - * @logical_to_device: matrix to return - * - * Gets the transformation mapping the logical space used by @scaled_font - * to device space. - * - * Since: 1.4 - **/ -void -cairo_win32_scaled_font_get_logical_to_device (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *logical_to_device) -{ - cairo_win32_scaled_font_t *win_font = (cairo_win32_scaled_font_t *)scaled_font; - *logical_to_device = win_font->logical_to_device; -} - -/** - * cairo_win32_scaled_font_get_device_to_logical: - * @scaled_font: a scaled font from the Win32 font backend - * @device_to_logical: matrix to return - * - * Gets the transformation mapping device space to the logical space - * used by @scaled_font. - * - * Since: 1.4 - **/ -void -cairo_win32_scaled_font_get_device_to_logical (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *device_to_logical) -{ - cairo_win32_scaled_font_t *win_font = (cairo_win32_scaled_font_t *)scaled_font; - *device_to_logical = win_font->device_to_logical; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-win32.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-win32.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Owen Taylor - */ - -#ifndef _CAIRO_WIN32_H_ -#define _CAIRO_WIN32_H_ - -#include - -#if CAIRO_HAS_WIN32_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_win32_surface_create (HDC hdc); - -cairo_public cairo_surface_t * -cairo_win32_printing_surface_create (HDC hdc); - -cairo_public cairo_surface_t * -cairo_win32_surface_create_with_ddb (HDC hdc, - cairo_format_t format, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_win32_surface_create_with_dib (cairo_format_t format, - int width, - int height); - -cairo_public HDC -cairo_win32_surface_get_dc (cairo_surface_t *surface); - -cairo_public cairo_surface_t * -cairo_win32_surface_get_image (cairo_surface_t *surface); - -cairo_public cairo_font_face_t * -cairo_win32_font_face_create_for_logfontw (LOGFONTW *logfont); - -cairo_public cairo_font_face_t * -cairo_win32_font_face_create_for_hfont (HFONT font); - -cairo_public cairo_font_face_t * -cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, HFONT font); - -cairo_public cairo_status_t -cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, - HDC hdc); - -cairo_public void -cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font); - -cairo_public double -cairo_win32_scaled_font_get_metrics_factor (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_win32_scaled_font_get_logical_to_device (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *logical_to_device); - -cairo_public void -cairo_win32_scaled_font_get_device_to_logical (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *device_to_logical); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_WIN32_SURFACE */ -# error Cairo was not compiled with support for the win32 backend -#endif /* CAIRO_HAS_WIN32_SURFACE */ - -#endif /* _CAIRO_WIN32_H_ */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-printing-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-printing-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-printing-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-printing-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1572 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Adrian Johnson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Adrian Johnson. - * - * Contributor(s): - * Adrian Johnson - * Vladimir Vukicevic - */ - -#define WIN32_LEAN_AND_MEAN -/* We require Windows 2000 features such as ETO_PDY */ -#if !defined(WINVER) || (WINVER < 0x0500) -# define WINVER 0x0500 -#endif -#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500) -# define _WIN32_WINNT 0x0500 -#endif - -#include "cairoint.h" - -#include "cairo-paginated-private.h" - -#include "cairo-clip-private.h" -#include "cairo-win32-private.h" -#include "cairo-meta-surface-private.h" - -#include - -#if !defined(POSTSCRIPT_IDENTIFY) -# define POSTSCRIPT_IDENTIFY 0x1015 -#endif - -#if !defined(PSIDENT_GDICENTRIC) -# define PSIDENT_GDICENTRIC 0x0000 -#endif - -#if !defined(GET_PS_FEATURESETTING) -# define GET_PS_FEATURESETTING 0x1019 -#endif - -#if !defined(FEATURESETTING_PSLEVEL) -# define FEATURESETTING_PSLEVEL 0x0002 -#endif - -#if !defined(GRADIENT_FILL_RECT_H) -# define GRADIENT_FILL_RECT_H 0x00 -#endif - -#define PELS_72DPI ((LONG)(72. / 0.0254)) - -static const cairo_surface_backend_t cairo_win32_printing_surface_backend; -static const cairo_paginated_surface_backend_t cairo_win32_surface_paginated_backend; - -static void -_cairo_win32_printing_surface_init_ps_mode (cairo_win32_surface_t *surface) -{ - DWORD word; - INT ps_feature, ps_level; - - word = PSIDENT_GDICENTRIC; - if (ExtEscape (surface->dc, POSTSCRIPT_IDENTIFY, sizeof(DWORD), (char *)&word, 0, (char *)NULL) <= 0) - return; - - ps_feature = FEATURESETTING_PSLEVEL; - if (ExtEscape (surface->dc, GET_PS_FEATURESETTING, sizeof(INT), - (char *)&ps_feature, sizeof(INT), (char *)&ps_level) <= 0) - return; - - if (ps_level >= 3) - surface->flags |= CAIRO_WIN32_SURFACE_CAN_RECT_GRADIENT; -} - -static cairo_int_status_t -analyze_surface_pattern_transparency (cairo_surface_pattern_t *pattern) -{ - cairo_image_surface_t *image; - void *image_extra; - cairo_int_status_t status; - int x, y; - - status = _cairo_surface_acquire_source_image (pattern->surface, - &image, - &image_extra); - if (status) - return status; - - if (image->base.status) - return image->base.status; - - if (image->format == CAIRO_FORMAT_RGB24) { - status = CAIRO_STATUS_SUCCESS; - goto RELEASE_SOURCE; - } - - if (image->format != CAIRO_FORMAT_ARGB32) { - /* If the surface does not support the image format, assume - * that it does have alpha. The image will be converted to - * rgb24 when the surface blends the image into the page - * color to remove the transparency. */ - status = CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - goto RELEASE_SOURCE; - } - - for (y = 0; y < image->height; y++) { - int a; - uint32_t *pixel = (uint32_t *) (image->data + y * image->stride); - - for (x = 0; x < image->width; x++, pixel++) { - a = (*pixel & 0xff000000) >> 24; - if (a != 255) { - status = CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; - goto RELEASE_SOURCE; - } - } - } - status = CAIRO_STATUS_SUCCESS; - -RELEASE_SOURCE: - _cairo_surface_release_source_image (pattern->surface, image, image_extra); - - return status; -} - -static cairo_bool_t -surface_pattern_supported (const cairo_surface_pattern_t *pattern) -{ - cairo_extend_t extend; - - if (_cairo_surface_is_meta (pattern->surface)) - return TRUE; - - if (cairo_surface_get_type (pattern->surface) != CAIRO_SURFACE_TYPE_WIN32 && - pattern->surface->backend->acquire_source_image == NULL) - { - return FALSE; - } - - extend = cairo_pattern_get_extend ((cairo_pattern_t*)&pattern->base); - switch (extend) { - case CAIRO_EXTEND_NONE: - case CAIRO_EXTEND_REPEAT: - case CAIRO_EXTEND_REFLECT: - /* There's no point returning FALSE for EXTEND_PAD, as the image - * surface does not currently implement it either */ - case CAIRO_EXTEND_PAD: - return TRUE; - } - - ASSERT_NOT_REACHED; - return FALSE; -} - -static cairo_bool_t -pattern_supported (cairo_win32_surface_t *surface, const cairo_pattern_t *pattern) -{ - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) - return TRUE; - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - return surface_pattern_supported ((const cairo_surface_pattern_t *) pattern); - - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR) - return surface->flags & CAIRO_WIN32_SURFACE_CAN_RECT_GRADIENT; - - return FALSE; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_analyze_operation (cairo_win32_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *pattern) -{ - if (! pattern_supported (surface, pattern)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (!(op == CAIRO_OPERATOR_SOURCE || - op == CAIRO_OPERATOR_OVER || - op == CAIRO_OPERATOR_CLEAR)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - if ( _cairo_surface_is_meta (surface_pattern->surface)) - return CAIRO_INT_STATUS_ANALYZE_META_SURFACE_PATTERN; - } - - if (op == CAIRO_OPERATOR_SOURCE || - op == CAIRO_OPERATOR_CLEAR) - return CAIRO_STATUS_SUCCESS; - - /* CAIRO_OPERATOR_OVER is only supported for opaque patterns. If - * the pattern contains transparency, we return - * CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY to the analysis - * surface. If the analysis surface determines that there is - * anything drawn under this operation, a fallback image will be - * used. Otherwise the operation will be replayed during the - * render stage and we blend the transarency into the white - * background to convert the pattern to opaque. - */ - - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - return analyze_surface_pattern_transparency (surface_pattern); - } - - if (_cairo_pattern_is_opaque (pattern)) - return CAIRO_STATUS_SUCCESS; - else - return CAIRO_INT_STATUS_FLATTEN_TRANSPARENCY; -} - -static cairo_bool_t -_cairo_win32_printing_surface_operation_supported (cairo_win32_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *pattern) -{ - if (_cairo_win32_printing_surface_analyze_operation (surface, op, pattern) != CAIRO_INT_STATUS_UNSUPPORTED) - return TRUE; - else - return FALSE; -} - -static void -_cairo_win32_printing_surface_init_clear_color (cairo_win32_surface_t *surface, - cairo_solid_pattern_t *color) -{ - if (surface->content == CAIRO_CONTENT_COLOR_ALPHA) - _cairo_pattern_init_solid (color, CAIRO_COLOR_WHITE, CAIRO_CONTENT_COLOR); - else - _cairo_pattern_init_solid (color, CAIRO_COLOR_BLACK, CAIRO_CONTENT_COLOR); -} - -static COLORREF -_cairo_win32_printing_surface_flatten_transparency (cairo_win32_surface_t *surface, - const cairo_color_t *color) -{ - COLORREF c; - BYTE red, green, blue; - - red = color->red_short >> 8; - green = color->green_short >> 8; - blue = color->blue_short >> 8; - - if (!CAIRO_COLOR_IS_OPAQUE(color)) { - if (surface->content == CAIRO_CONTENT_COLOR_ALPHA) { - /* Blend into white */ - uint8_t one_minus_alpha = 255 - (color->alpha_short >> 8); - - red = (color->red_short >> 8) + one_minus_alpha; - green = (color->green_short >> 8) + one_minus_alpha; - blue = (color->blue_short >> 8) + one_minus_alpha; - } else { - /* Blend into black */ - red = (color->red_short >> 8); - green = (color->green_short >> 8); - blue = (color->blue_short >> 8); - } - } - c = RGB (red, green, blue); - - return c; -} - -static cairo_status_t -_cairo_win32_printing_surface_select_solid_brush (cairo_win32_surface_t *surface, - cairo_pattern_t *source) -{ - cairo_solid_pattern_t *pattern = (cairo_solid_pattern_t *) source; - COLORREF color; - - color = _cairo_win32_printing_surface_flatten_transparency (surface, - &pattern->color); - surface->brush = CreateSolidBrush (color); - if (!surface->brush) - return _cairo_win32_print_gdi_error ("_cairo_win32_surface_select_solid_brush(CreateSolidBrush)"); - surface->old_brush = SelectObject (surface->dc, surface->brush); - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_win32_printing_surface_done_solid_brush (cairo_win32_surface_t *surface) -{ - if (surface->old_brush) { - SelectObject (surface->dc, surface->old_brush); - DeleteObject (surface->brush); - surface->old_brush = NULL; - } -} - -static cairo_status_t -_cairo_win32_printing_surface_get_ctm_clip_box (cairo_win32_surface_t *surface, - RECT *clip) -{ - XFORM xform; - - _cairo_matrix_to_win32_xform (&surface->ctm, &xform); - if (!SetWorldTransform (surface->dc, &xform)) - return _cairo_win32_print_gdi_error ("_cairo_win32_printing_surface_get_clip_box:SetWorldTransform"); - GetClipBox (surface->dc, clip); - if (!ModifyWorldTransform (surface->dc, &xform, MWT_IDENTITY)) - return _cairo_win32_print_gdi_error ("_cairo_win32_printing_surface_get_clip_box:ModifyWorldTransform"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_printing_surface_paint_solid_pattern (cairo_win32_surface_t *surface, - cairo_pattern_t *pattern) -{ - RECT clip; - cairo_status_t status; - - GetClipBox (surface->dc, &clip); - status = _cairo_win32_printing_surface_select_solid_brush (surface, pattern); - if (status) - return status; - - FillRect (surface->dc, &clip, surface->brush); - _cairo_win32_printing_surface_done_solid_brush (surface); - - return 0; -} - -static cairo_status_t -_cairo_win32_printing_surface_paint_meta_pattern (cairo_win32_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - cairo_content_t old_content; - cairo_matrix_t old_ctm; - cairo_bool_t old_has_ctm; - cairo_rectangle_int_t meta_extents; - cairo_status_t status; - cairo_extend_t extend; - cairo_matrix_t p2d; - XFORM xform; - int x_tile, y_tile, left, right, top, bottom; - RECT clip; - cairo_surface_t *meta_surface = pattern->surface; - - extend = cairo_pattern_get_extend (&pattern->base); - - p2d = pattern->base.matrix; - status = cairo_matrix_invert (&p2d); - /* _cairo_pattern_set_matrix guarantees invertibility */ - assert (status == CAIRO_STATUS_SUCCESS); - - old_ctm = surface->ctm; - old_has_ctm = surface->has_ctm; - cairo_matrix_multiply (&p2d, &p2d, &surface->ctm); - surface->ctm = p2d; - SaveDC (surface->dc); - _cairo_matrix_to_win32_xform (&p2d, &xform); - - status = _cairo_surface_get_extents (meta_surface, &meta_extents); - if (status) - return status; - - status = _cairo_win32_printing_surface_get_ctm_clip_box (surface, &clip); - if (status) - return status; - - if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) { - left = (int) floor((double)clip.left/meta_extents.width); - right = (int) ceil((double)clip.right/meta_extents.width); - top = (int) floor((double)clip.top/meta_extents.height); - bottom = (int) ceil((double)clip.bottom/meta_extents.height); - } else { - left = 0; - right = 1; - top = 0; - bottom = 1; - } - - old_content = surface->content; - if (cairo_surface_get_content (meta_surface) == CAIRO_CONTENT_COLOR) { - cairo_pattern_t *source; - cairo_solid_pattern_t black; - - surface->content = CAIRO_CONTENT_COLOR; - _cairo_pattern_init_solid (&black, CAIRO_COLOR_BLACK, CAIRO_CONTENT_COLOR); - source = (cairo_pattern_t*) &black; - _cairo_win32_printing_surface_paint_solid_pattern (surface, source); - } - - for (y_tile = top; y_tile < bottom; y_tile++) { - for (x_tile = left; x_tile < right; x_tile++) { - cairo_matrix_t m; - double x, y; - - SaveDC (surface->dc); - m = p2d; - cairo_matrix_translate (&m, - x_tile*meta_extents.width, - y_tile*meta_extents.height); - if (extend == CAIRO_EXTEND_REFLECT) { - if (x_tile % 2) { - cairo_matrix_translate (&m, meta_extents.width, 0); - cairo_matrix_scale (&m, -1, 1); - } - if (y_tile % 2) { - cairo_matrix_translate (&m, 0, meta_extents.height); - cairo_matrix_scale (&m, 1, -1); - } - } - surface->ctm = m; - surface->has_ctm = !_cairo_matrix_is_identity (&surface->ctm); - - /* Set clip path around bbox of the pattern. */ - BeginPath (surface->dc); - - x = 0; - y = 0; - cairo_matrix_transform_point (&surface->ctm, &x, &y); - MoveToEx (surface->dc, (int) x, (int) y, NULL); - - x = meta_extents.width; - y = 0; - cairo_matrix_transform_point (&surface->ctm, &x, &y); - LineTo (surface->dc, (int) x, (int) y); - - x = meta_extents.width; - y = meta_extents.height; - cairo_matrix_transform_point (&surface->ctm, &x, &y); - LineTo (surface->dc, (int) x, (int) y); - - x = 0; - y = meta_extents.height; - cairo_matrix_transform_point (&surface->ctm, &x, &y); - LineTo (surface->dc, (int) x, (int) y); - - CloseFigure (surface->dc); - EndPath (surface->dc); - SelectClipPath (surface->dc, RGN_AND); - - SaveDC (surface->dc); /* Allow clip path to be reset during replay */ - status = _cairo_meta_surface_replay_region (meta_surface, &surface->base, - CAIRO_META_REGION_NATIVE); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - /* Restore both the clip save and our earlier path SaveDC */ - RestoreDC (surface->dc, -2); - - if (status) - return status; - } - } - - surface->content = old_content; - surface->ctm = old_ctm; - surface->has_ctm = old_has_ctm; - RestoreDC (surface->dc, -1); - - return status; -} - -static cairo_status_t -_cairo_win32_printing_surface_paint_image_pattern (cairo_win32_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - cairo_status_t status; - cairo_extend_t extend; - cairo_surface_t *pat_surface; - cairo_surface_attributes_t pat_attr; - cairo_image_surface_t *image; - void *image_extra; - cairo_surface_t *opaque_surface; - cairo_pattern_union_t opaque_pattern; - cairo_image_surface_t *opaque_image = NULL; - BITMAPINFO bi; - cairo_matrix_t m; - int oldmode; - XFORM xform; - int x_tile, y_tile, left, right, top, bottom; - RECT clip; - const cairo_color_t *background_color; - - /* If we can't use StretchDIBits with this surface, we can't do anything - * here. - */ - if (!(surface->flags & CAIRO_WIN32_SURFACE_CAN_STRETCHDIB)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (surface->content == CAIRO_CONTENT_COLOR_ALPHA) - background_color = CAIRO_COLOR_WHITE; - else - background_color = CAIRO_COLOR_BLACK; - - extend = cairo_pattern_get_extend (&pattern->base); - status = _cairo_pattern_acquire_surface ((cairo_pattern_t *)pattern, - (cairo_surface_t *)surface, - 0, 0, -1, -1, - &pat_surface, &pat_attr); - if (status) - return status; - - status = _cairo_surface_acquire_source_image (pat_surface, &image, &image_extra); - if (status) - goto FINISH; - - if (image->base.status) { - status = image->base.status; - goto FINISH2; - } - - if (image->width == 0 || image->height == 0) { - status = CAIRO_STATUS_SUCCESS; - goto FINISH2; - } - - if (image->format != CAIRO_FORMAT_RGB24) { - opaque_surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, - image->width, - image->height); - if (opaque_surface->status) { - status = opaque_surface->status; - goto FINISH3; - } - - _cairo_pattern_init_for_surface (&opaque_pattern.surface, &image->base); - - status = _cairo_surface_fill_rectangle (opaque_surface, - CAIRO_OPERATOR_SOURCE, - background_color, - 0, 0, - image->width, image->height); - if (status) { - _cairo_pattern_fini (&opaque_pattern.base); - goto FINISH3; - } - - status = _cairo_surface_composite (CAIRO_OPERATOR_OVER, - &opaque_pattern.base, - NULL, - opaque_surface, - 0, 0, - 0, 0, - 0, 0, - image->width, - image->height); - if (status) { - _cairo_pattern_fini (&opaque_pattern.base); - goto FINISH3; - } - - _cairo_pattern_fini (&opaque_pattern.base); - opaque_image = (cairo_image_surface_t *) opaque_surface; - } else { - opaque_surface = &image->base; - opaque_image = image; - } - - bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bi.bmiHeader.biWidth = opaque_image->width; - bi.bmiHeader.biHeight = -opaque_image->height; - bi.bmiHeader.biSizeImage = 0; - bi.bmiHeader.biXPelsPerMeter = PELS_72DPI; - bi.bmiHeader.biYPelsPerMeter = PELS_72DPI; - bi.bmiHeader.biPlanes = 1; - bi.bmiHeader.biBitCount = 32; - bi.bmiHeader.biCompression = BI_RGB; - bi.bmiHeader.biClrUsed = 0; - bi.bmiHeader.biClrImportant = 0; - - m = pattern->base.matrix; - status = cairo_matrix_invert (&m); - /* _cairo_pattern_set_matrix guarantees invertibility */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&m, &m, &surface->ctm); - SaveDC (surface->dc); - _cairo_matrix_to_win32_xform (&m, &xform); - - if (!SetWorldTransform (surface->dc, &xform)) - return _cairo_win32_print_gdi_error ("_win32_scaled_font_set_world_transform"); - - oldmode = SetStretchBltMode(surface->dc, HALFTONE); - - GetClipBox (surface->dc, &clip); - if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) { - left = (int) floor((double)clip.left/opaque_image->width); - right = (int) ceil((double)clip.right/opaque_image->width); - top = (int) floor((double)clip.top/opaque_image->height); - bottom = (int) ceil((double)clip.bottom/opaque_image->height); - } else { - left = 0; - right = 1; - top = 0; - bottom = 1; - } - - for (y_tile = top; y_tile < bottom; y_tile++) { - for (x_tile = left; x_tile < right; x_tile++) { - if (!StretchDIBits (surface->dc, - x_tile*opaque_image->width, - y_tile*opaque_image->height, - opaque_image->width, - opaque_image->height, - 0, - 0, - opaque_image->width, - opaque_image->height, - opaque_image->data, - &bi, - DIB_RGB_COLORS, - SRCCOPY)) - return _cairo_win32_print_gdi_error ("_cairo_win32_printing_surface_paint(StretchDIBits)"); - } - } - SetStretchBltMode(surface->dc, oldmode); - RestoreDC (surface->dc, -1); - -FINISH3: - if (opaque_image != image) - cairo_surface_destroy (opaque_surface); -FINISH2: - _cairo_surface_release_source_image (pat_surface, image, image_extra); -FINISH: - _cairo_pattern_release_surface ((cairo_pattern_t *)pattern, pat_surface, &pat_attr); - - return status; -} - -static cairo_status_t -_cairo_win32_printing_surface_paint_surface_pattern (cairo_win32_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - if (_cairo_surface_is_meta (pattern->surface)) { - return _cairo_win32_printing_surface_paint_meta_pattern (surface, - pattern); - } else { - return _cairo_win32_printing_surface_paint_image_pattern (surface, - pattern); - } -} - -static void -vertex_set_color (TRIVERTEX *vert, cairo_color_t *color) -{ - /* MSDN says that the range here is 0x0000 .. 0xff00; - * that may well be a typo, but just chop the low bits - * here. */ - vert->Alpha = 0xff00; - vert->Red = color->red_short & 0xff00; - vert->Green = color->green_short & 0xff00; - vert->Blue = color->blue_short & 0xff00; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_paint_linear_pattern (cairo_win32_surface_t *surface, - cairo_linear_pattern_t *pattern) -{ - TRIVERTEX *vert; - GRADIENT_RECT *rect; - RECT clip; - XFORM xform; - int i, num_stops; - cairo_matrix_t mat, rot; - double p1x, p1y, p2x, p2y, xd, yd, d, sn, cs; - cairo_extend_t extend; - int range_start, range_stop, num_ranges, num_rects, stop; - int total_verts, total_rects; - cairo_status_t status; - - extend = cairo_pattern_get_extend (&pattern->base.base); - SaveDC (surface->dc); - - mat = pattern->base.base.matrix; - status = cairo_matrix_invert (&mat); - /* _cairo_pattern_set_matrix guarantees invertibility */ - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&mat, &surface->ctm, &mat); - - p1x = _cairo_fixed_to_double (pattern->p1.x); - p1y = _cairo_fixed_to_double (pattern->p1.y); - p2x = _cairo_fixed_to_double (pattern->p2.x); - p2y = _cairo_fixed_to_double (pattern->p2.y); - cairo_matrix_translate (&mat, p1x, p1y); - - xd = p2x - p1x; - yd = p2y - p1y; - d = sqrt (xd*xd + yd*yd); - sn = yd/d; - cs = xd/d; - cairo_matrix_init (&rot, - cs, sn, - -sn, cs, - 0, 0); - cairo_matrix_multiply (&mat, &rot, &mat); - - _cairo_matrix_to_win32_xform (&mat, &xform); - - if (!SetWorldTransform (surface->dc, &xform)) - return _cairo_win32_print_gdi_error ("_win32_printing_surface_paint_linear_pattern:SetWorldTransform2"); - - GetClipBox (surface->dc, &clip); - - if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) { - range_start = (int) floor(clip.left/d); - range_stop = (int) ceil(clip.right/d); - } else { - range_start = 0; - range_stop = 1; - } - num_ranges = range_stop - range_start; - num_stops = pattern->base.n_stops; - num_rects = num_stops - 1; - - /* Add an extra four points and two rectangles for EXTEND_PAD */ - vert = malloc (sizeof (TRIVERTEX) * (num_rects*2*num_ranges + 4)); - rect = malloc (sizeof (GRADIENT_RECT) * (num_rects*num_ranges + 2)); - - for (i = 0; i < num_ranges*num_rects; i++) { - vert[i*2].y = (LONG) clip.top; - if (i%num_rects == 0) { - stop = 0; - if (extend == CAIRO_EXTEND_REFLECT && (range_start+(i/num_rects))%2) - stop = num_rects; - vert[i*2].x = (LONG)(d*(range_start + i/num_rects)); - vertex_set_color (&vert[i*2], &pattern->base.stops[stop].color); - } else { - vert[i*2].x = vert[i*2-1].x; - vert[i*2].Red = vert[i*2-1].Red; - vert[i*2].Green = vert[i*2-1].Green; - vert[i*2].Blue = vert[i*2-1].Blue; - vert[i*2].Alpha = vert[i*2-1].Alpha; - } - - stop = i%num_rects + 1; - vert[i*2+1].x = (LONG)(d*(range_start + i/num_rects + pattern->base.stops[stop].offset)); - vert[i*2+1].y = (LONG) clip.bottom; - if (extend == CAIRO_EXTEND_REFLECT && (range_start+(i/num_rects))%2) - stop = num_rects - stop; - vertex_set_color (&vert[i*2+1], &pattern->base.stops[stop].color); - - rect[i].UpperLeft = i*2; - rect[i].LowerRight = i*2 + 1; - } - total_verts = 2*num_ranges*num_rects; - total_rects = num_ranges*num_rects; - - if (extend == CAIRO_EXTEND_PAD) { - vert[i*2].x = vert[i*2-1].x; - vert[i*2].y = (LONG) clip.top; - vert[i*2].Red = vert[i*2-1].Red; - vert[i*2].Green = vert[i*2-1].Green; - vert[i*2].Blue = vert[i*2-1].Blue; - vert[i*2].Alpha = 0xff00; - vert[i*2+1].x = clip.right; - vert[i*2+1].y = (LONG) clip.bottom; - vert[i*2+1].Red = vert[i*2-1].Red; - vert[i*2+1].Green = vert[i*2-1].Green; - vert[i*2+1].Blue = vert[i*2-1].Blue; - vert[i*2+1].Alpha = 0xff00; - rect[i].UpperLeft = i*2; - rect[i].LowerRight = i*2 + 1; - - i++; - - vert[i*2].x = clip.left; - vert[i*2].y = (LONG) clip.top; - vert[i*2].Red = vert[0].Red; - vert[i*2].Green = vert[0].Green; - vert[i*2].Blue = vert[0].Blue; - vert[i*2].Alpha = 0xff00; - vert[i*2+1].x = vert[0].x; - vert[i*2+1].y = (LONG) clip.bottom; - vert[i*2+1].Red = vert[0].Red; - vert[i*2+1].Green = vert[0].Green; - vert[i*2+1].Blue = vert[0].Blue; - vert[i*2+1].Alpha = 0xff00; - rect[i].UpperLeft = i*2; - rect[i].LowerRight = i*2 + 1; - - total_verts += 4; - total_rects += 2; - } - - if (!GradientFill (surface->dc, - vert, total_verts, - rect, total_rects, - GRADIENT_FILL_RECT_H)) - return _cairo_win32_print_gdi_error ("_win32_printing_surface_paint_linear_pattern:GradientFill"); - - free (rect); - free (vert); - RestoreDC (surface->dc, -1); - - return 0; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_paint_pattern (cairo_win32_surface_t *surface, - cairo_pattern_t *pattern) -{ - cairo_status_t status; - - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SOLID: - status = _cairo_win32_printing_surface_paint_solid_pattern (surface, pattern); - if (status) - return status; - break; - - case CAIRO_PATTERN_TYPE_SURFACE: - status = _cairo_win32_printing_surface_paint_surface_pattern (surface, - (cairo_surface_pattern_t *) pattern); - if (status) - return status; - break; - - case CAIRO_PATTERN_TYPE_LINEAR: - status = _cairo_win32_printing_surface_paint_linear_pattern (surface, (cairo_linear_pattern_t *) pattern); - if (status) - return status; - break; - - case CAIRO_PATTERN_TYPE_RADIAL: - return CAIRO_INT_STATUS_UNSUPPORTED; - break; - } - - return CAIRO_STATUS_SUCCESS; -} - -typedef struct _win32_print_path_info { - cairo_win32_surface_t *surface; -} win32_path_info_t; - -static cairo_status_t -_cairo_win32_printing_surface_path_move_to (void *closure, cairo_point_t *point) -{ - win32_path_info_t *path_info = closure; - - if (path_info->surface->has_ctm) { - double x, y; - - x = _cairo_fixed_to_double (point->x); - y = _cairo_fixed_to_double (point->y); - cairo_matrix_transform_point (&path_info->surface->ctm, &x, &y); - MoveToEx (path_info->surface->dc, (int) x, (int) y, NULL); - } else { - MoveToEx (path_info->surface->dc, - _cairo_fixed_integer_part (point->x), - _cairo_fixed_integer_part (point->y), - NULL); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_printing_surface_path_line_to (void *closure, cairo_point_t *point) -{ - win32_path_info_t *path_info = closure; - - path_info->surface->path_empty = FALSE; - if (path_info->surface->has_ctm) { - double x, y; - - x = _cairo_fixed_to_double (point->x); - y = _cairo_fixed_to_double (point->y); - cairo_matrix_transform_point (&path_info->surface->ctm, &x, &y); - LineTo (path_info->surface->dc, (int) x, (int) y); - } else { - LineTo (path_info->surface->dc, - _cairo_fixed_integer_part (point->x), - _cairo_fixed_integer_part (point->y)); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_printing_surface_path_curve_to (void *closure, - cairo_point_t *b, - cairo_point_t *c, - cairo_point_t *d) -{ - win32_path_info_t *path_info = closure; - POINT points[3]; - - path_info->surface->path_empty = FALSE; - if (path_info->surface->has_ctm) { - double x, y; - - x = _cairo_fixed_to_double (b->x); - y = _cairo_fixed_to_double (b->y); - cairo_matrix_transform_point (&path_info->surface->ctm, &x, &y); - points[0].x = (LONG) x; - points[0].y = (LONG) y; - - x = _cairo_fixed_to_double (c->x); - y = _cairo_fixed_to_double (c->y); - cairo_matrix_transform_point (&path_info->surface->ctm, &x, &y); - points[1].x = (LONG) x; - points[1].y = (LONG) y; - - x = _cairo_fixed_to_double (d->x); - y = _cairo_fixed_to_double (d->y); - cairo_matrix_transform_point (&path_info->surface->ctm, &x, &y); - points[2].x = (LONG) x; - points[2].y = (LONG) y; - } else { - points[0].x = _cairo_fixed_integer_part (b->x); - points[0].y = _cairo_fixed_integer_part (b->y); - points[1].x = _cairo_fixed_integer_part (c->x); - points[1].y = _cairo_fixed_integer_part (c->y); - points[2].x = _cairo_fixed_integer_part (d->x); - points[2].y = _cairo_fixed_integer_part (d->y); - } - PolyBezierTo (path_info->surface->dc, points, 3); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_printing_surface_path_close_path (void *closure) -{ - win32_path_info_t *path_info = closure; - - CloseFigure (path_info->surface->dc); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_printing_surface_emit_path (cairo_win32_surface_t *surface, - cairo_path_fixed_t *path) -{ - win32_path_info_t path_info; - cairo_status_t status; - - path_info.surface = surface; - status = _cairo_path_fixed_interpret (path, - CAIRO_DIRECTION_FORWARD, - _cairo_win32_printing_surface_path_move_to, - _cairo_win32_printing_surface_path_line_to, - _cairo_win32_printing_surface_path_curve_to, - _cairo_win32_printing_surface_path_close_path, - &path_info); - return status; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_show_page (void *abstract_surface) -{ - cairo_win32_surface_t *surface = abstract_surface; - - /* Undo both SaveDC's that we did in start_page */ - RestoreDC (surface->dc, -2); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - if (path == NULL) { - RestoreDC (surface->dc, -1); - SaveDC (surface->dc); - - return CAIRO_STATUS_SUCCESS; - } - - BeginPath (surface->dc); - status = _cairo_win32_printing_surface_emit_path (surface, path); - EndPath (surface->dc); - - switch (fill_rule) { - case CAIRO_FILL_RULE_WINDING: - SetPolyFillMode (surface->dc, WINDING); - break; - case CAIRO_FILL_RULE_EVEN_ODD: - SetPolyFillMode (surface->dc, ALTERNATE); - break; - default: - ASSERT_NOT_REACHED; - } - - SelectClipPath (surface->dc, RGN_AND); - - return status; -} - -static void -_cairo_win32_printing_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - _cairo_font_options_init_default (options); - - cairo_font_options_set_hint_style (options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (options, CAIRO_ANTIALIAS_GRAY); -} - -static cairo_int_status_t -_cairo_win32_printing_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_solid_pattern_t clear; - - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_win32_printing_surface_init_clear_color (surface, &clear); - source = (cairo_pattern_t*) &clear; - op = CAIRO_OPERATOR_SOURCE; - } - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); - - assert (_cairo_win32_printing_surface_operation_supported (surface, op, source)); - - return _cairo_win32_printing_surface_paint_pattern (surface, source); -} - -static int -_cairo_win32_line_cap (cairo_line_cap_t cap) -{ - switch (cap) { - case CAIRO_LINE_CAP_BUTT: - return PS_ENDCAP_FLAT; - case CAIRO_LINE_CAP_ROUND: - return PS_ENDCAP_ROUND; - case CAIRO_LINE_CAP_SQUARE: - return PS_ENDCAP_SQUARE; - default: - ASSERT_NOT_REACHED; - return 0; - } -} - -static int -_cairo_win32_line_join (cairo_line_join_t join) -{ - switch (join) { - case CAIRO_LINE_JOIN_MITER: - return PS_JOIN_MITER; - case CAIRO_LINE_JOIN_ROUND: - return PS_JOIN_ROUND; - case CAIRO_LINE_JOIN_BEVEL: - return PS_JOIN_BEVEL; - default: - ASSERT_NOT_REACHED; - return 0; - } -} - -static void -_cairo_matrix_factor_out_scale (cairo_matrix_t *m, double *scale) -{ - double s; - - s = fabs (m->xx); - if (fabs (m->xy) > s) - s = fabs (m->xy); - if (fabs (m->yx) > s) - s = fabs (m->yx); - if (fabs (m->yy) > s) - s = fabs (m->yy); - *scale = s; - s = 1.0/s; - cairo_matrix_scale (m, s, s); -} - -static cairo_int_status_t -_cairo_win32_printing_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *stroke_ctm, - cairo_matrix_t *stroke_ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_int_status_t status; - HPEN pen; - LOGBRUSH brush; - COLORREF color; - XFORM xform; - DWORD pen_style; - DWORD *dash_array; - HGDIOBJ obj; - unsigned int i; - cairo_solid_pattern_t clear; - cairo_matrix_t mat; - double scale; - - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_win32_printing_surface_init_clear_color (surface, &clear); - source = (cairo_pattern_t*) &clear; - op = CAIRO_OPERATOR_SOURCE; - } - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { - /* Win32 does not support a dash offset. */ - if (style->num_dashes > 0 && style->dash_offset != 0.0) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); - } - - assert (_cairo_win32_printing_surface_operation_supported (surface, op, source)); - assert (!(style->num_dashes > 0 && style->dash_offset != 0.0)); - - cairo_matrix_multiply (&mat, stroke_ctm, &surface->ctm); - _cairo_matrix_factor_out_scale (&mat, &scale); - - pen_style = PS_GEOMETRIC; - dash_array = NULL; - if (style->num_dashes) { - pen_style |= PS_USERSTYLE; - dash_array = calloc (sizeof (DWORD), style->num_dashes); - for (i = 0; i < style->num_dashes; i++) { - dash_array[i] = (DWORD) (scale * style->dash[i]); - } - } else { - pen_style |= PS_SOLID; - } - - SetMiterLimit (surface->dc, (FLOAT) (style->miter_limit), NULL); - if (source->type == CAIRO_PATTERN_TYPE_SOLID) { - cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) source; - - - color = _cairo_win32_printing_surface_flatten_transparency (surface, - &solid->color); - } else { - /* Color not used as the pen will only be used by WidenPath() */ - color = RGB (0,0,0); - } - brush.lbStyle = BS_SOLID; - brush.lbColor = color; - brush.lbHatch = 0; - pen_style |= _cairo_win32_line_cap (style->line_cap); - pen_style |= _cairo_win32_line_join (style->line_join); - pen = ExtCreatePen(pen_style, - scale * style->line_width, - &brush, - style->num_dashes, - dash_array); - if (pen == NULL) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:ExtCreatePen"); - obj = SelectObject (surface->dc, pen); - if (obj == NULL) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:SelectObject"); - - BeginPath (surface->dc); - status = _cairo_win32_printing_surface_emit_path (surface, path); - EndPath (surface->dc); - if (status) - return status; - - /* - * Switch to user space to set line parameters - */ - SaveDC (surface->dc); - - _cairo_matrix_to_win32_xform (&mat, &xform); - xform.eDx = 0.0f; - xform.eDy = 0.0f; - - if (!SetWorldTransform (surface->dc, &xform)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:SetWorldTransform"); - - if (source->type == CAIRO_PATTERN_TYPE_SOLID) { - StrokePath (surface->dc); - } else { - if (!WidenPath (surface->dc)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:WidenPath"); - if (!SelectClipPath (surface->dc, RGN_AND)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:SelectClipPath"); - - /* Return to device space to paint the pattern */ - if (!ModifyWorldTransform (surface->dc, &xform, MWT_IDENTITY)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:ModifyWorldTransform"); - status = _cairo_win32_printing_surface_paint_pattern (surface, source); - } - RestoreDC (surface->dc, -1); - DeleteObject (pen); - if (dash_array) - free (dash_array); - - return status; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_int_status_t status; - cairo_solid_pattern_t clear; - - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_win32_printing_surface_init_clear_color (surface, &clear); - source = (cairo_pattern_t*) &clear; - op = CAIRO_OPERATOR_SOURCE; - } - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); - - assert (_cairo_win32_printing_surface_operation_supported (surface, op, source)); - - surface->path_empty = TRUE; - BeginPath (surface->dc); - status = _cairo_win32_printing_surface_emit_path (surface, path); - EndPath (surface->dc); - - switch (fill_rule) { - case CAIRO_FILL_RULE_WINDING: - SetPolyFillMode (surface->dc, WINDING); - break; - case CAIRO_FILL_RULE_EVEN_ODD: - SetPolyFillMode (surface->dc, ALTERNATE); - break; - default: - ASSERT_NOT_REACHED; - } - - if (source->type == CAIRO_PATTERN_TYPE_SOLID) { - status = _cairo_win32_printing_surface_select_solid_brush (surface, source); - if (status) - return status; - - FillPath (surface->dc); - _cairo_win32_printing_surface_done_solid_brush (surface); - } else if (surface->path_empty == FALSE) { - SaveDC (surface->dc); - SelectClipPath (surface->dc, RGN_AND); - status = _cairo_win32_printing_surface_paint_pattern (surface, source); - RestoreDC (surface->dc, -1); - } - - fflush(stderr); - - return status; -} - -static cairo_int_status_t -_cairo_win32_printing_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_scaled_glyph_t *scaled_glyph; - cairo_pattern_t *opaque = NULL; - int i; - cairo_matrix_t old_ctm; - cairo_bool_t old_has_ctm; - cairo_solid_pattern_t clear; - - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_win32_printing_surface_init_clear_color (surface, &clear); - source = (cairo_pattern_t*) &clear; - op = CAIRO_OPERATOR_SOURCE; - } - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { - if (!(cairo_scaled_font_get_type (scaled_font) == CAIRO_FONT_TYPE_WIN32 && - source->type == CAIRO_PATTERN_TYPE_SOLID)) { - for (i = 0; i < num_glyphs; i++) { - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_PATH, - &scaled_glyph); - if (status) - return status; - } - } - - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); - } - - if (source->type == CAIRO_PATTERN_TYPE_SOLID) { - cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) source; - COLORREF color; - - color = _cairo_win32_printing_surface_flatten_transparency (surface, - &solid->color); - opaque = cairo_pattern_create_rgb (GetRValue (color) / 255.0, - GetGValue (color) / 255.0, - GetBValue (color) / 255.0); - if (opaque->status) - return opaque->status; - source = opaque; - } - - if (cairo_scaled_font_get_type (scaled_font) == CAIRO_FONT_TYPE_WIN32 && - source->type == CAIRO_PATTERN_TYPE_SOLID) - { - cairo_matrix_t ctm; - - if (surface->has_ctm) { - for (i = 0; i < num_glyphs; i++) - cairo_matrix_transform_point (&surface->ctm, &glyphs[i].x, &glyphs[i].y); - cairo_matrix_multiply (&ctm, &scaled_font->ctm, &surface->ctm); - scaled_font = cairo_scaled_font_create (scaled_font->font_face, - &scaled_font->font_matrix, - &ctm, - &scaled_font->options); - } - status = _cairo_win32_surface_show_glyphs (surface, op, - source, glyphs, - num_glyphs, scaled_font); - if (surface->has_ctm) - cairo_scaled_font_destroy (scaled_font); - - return status; - } - - SaveDC (surface->dc); - old_ctm = surface->ctm; - old_has_ctm = surface->has_ctm; - surface->has_ctm = TRUE; - surface->path_empty = TRUE; - BeginPath (surface->dc); - for (i = 0; i < num_glyphs; i++) { - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_PATH, - &scaled_glyph); - if (status) - break; - surface->ctm = old_ctm; - cairo_matrix_translate (&surface->ctm, glyphs[i].x, glyphs[i].y); - status = _cairo_win32_printing_surface_emit_path (surface, scaled_glyph->path); - } - EndPath (surface->dc); - surface->ctm = old_ctm; - surface->has_ctm = old_has_ctm; - if (status == CAIRO_STATUS_SUCCESS && surface->path_empty == FALSE) { - if (source->type == CAIRO_PATTERN_TYPE_SOLID) { - status = _cairo_win32_printing_surface_select_solid_brush (surface, source); - if (status) - return status; - - SetPolyFillMode (surface->dc, WINDING); - FillPath (surface->dc); - _cairo_win32_printing_surface_done_solid_brush (surface); - } else { - SelectClipPath (surface->dc, RGN_AND); - status = _cairo_win32_printing_surface_paint_pattern (surface, source); - } - } - RestoreDC (surface->dc, -1); - - if (opaque) - cairo_pattern_destroy (opaque); - - return status; -} - -static cairo_surface_t * -_cairo_win32_printing_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - return _cairo_meta_surface_create (content, width, height); -} - -static cairo_int_status_t -_cairo_win32_printing_surface_start_page (void *abstract_surface) -{ - cairo_win32_surface_t *surface = abstract_surface; - XFORM xform; - double x_res, y_res; - cairo_matrix_t inverse_ctm; - cairo_status_t status; - - SaveDC (surface->dc); /* Save application context first, before doing MWT */ - - SetGraphicsMode (surface->dc, GM_ADVANCED); - GetWorldTransform(surface->dc, &xform); - surface->ctm.xx = xform.eM11; - surface->ctm.xy = xform.eM21; - surface->ctm.yx = xform.eM12; - surface->ctm.yy = xform.eM22; - surface->ctm.x0 = xform.eDx; - surface->ctm.y0 = xform.eDy; - surface->has_ctm = !_cairo_matrix_is_identity (&surface->ctm); - - inverse_ctm = surface->ctm; - status = cairo_matrix_invert (&inverse_ctm); - if (status) - return status; - - x_res = (double) GetDeviceCaps(surface->dc, LOGPIXELSX); - y_res = (double) GetDeviceCaps(surface->dc, LOGPIXELSY); - cairo_matrix_transform_distance (&inverse_ctm, &x_res, &y_res); - _cairo_surface_set_resolution (&surface->base, x_res, y_res); - - if (!ModifyWorldTransform (surface->dc, NULL, MWT_IDENTITY)) - return _cairo_win32_print_gdi_error ("_cairo_win32_printing_surface_start_page:ModifyWorldTransform"); - - SaveDC (surface->dc); /* Then save Cairo's known-good clip state, so the clip path can be reset */ - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_win32_printing_surface_set_paginated_mode (void *abstract_surface, - cairo_paginated_mode_t paginated_mode) -{ - cairo_win32_surface_t *surface = abstract_surface; - - surface->paginated_mode = paginated_mode; -} - -/** - * cairo_win32_printing_surface_create: - * @hdc: the DC to create a surface for - * - * Creates a cairo surface that targets the given DC. The DC will be - * queried for its initial clip extents, and this will be used as the - * size of the cairo surface. The DC should be a printing DC; - * antialiasing will be ignored, and GDI will be used as much as - * possible to draw to the surface. - * - * The returned surface will be wrapped using the paginated surface to - * provide correct complex rendering behaviour; show_page() and - * associated methods must be used for correct output. - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_win32_printing_surface_create (HDC hdc) -{ - cairo_win32_surface_t *surface; - RECT rect; - - surface = malloc (sizeof (cairo_win32_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - if (_cairo_win32_save_initial_clip (hdc, surface) != CAIRO_STATUS_SUCCESS) { - free (surface); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - surface->image = NULL; - surface->format = CAIRO_FORMAT_RGB24; - surface->content = CAIRO_CONTENT_COLOR_ALPHA; - - surface->dc = hdc; - surface->bitmap = NULL; - surface->is_dib = FALSE; - surface->saved_dc_bitmap = NULL; - surface->brush = NULL; - surface->old_brush = NULL; - - GetClipBox(hdc, &rect); - surface->extents.x = rect.left; - surface->extents.y = rect.top; - surface->extents.width = rect.right - rect.left; - surface->extents.height = rect.bottom - rect.top; - - surface->flags = _cairo_win32_flags_for_dc (surface->dc); - surface->flags |= CAIRO_WIN32_SURFACE_FOR_PRINTING; - - _cairo_win32_printing_surface_init_ps_mode (surface); - _cairo_surface_init (&surface->base, &cairo_win32_printing_surface_backend, - CAIRO_CONTENT_COLOR_ALPHA); - - return _cairo_paginated_surface_create (&surface->base, - CAIRO_CONTENT_COLOR_ALPHA, - surface->extents.width, - surface->extents.height, - &cairo_win32_surface_paginated_backend); -} - -cairo_bool_t -_cairo_surface_is_win32_printing (cairo_surface_t *surface) -{ - return surface->backend == &cairo_win32_printing_surface_backend; -} - -static const cairo_surface_backend_t cairo_win32_printing_surface_backend = { - CAIRO_SURFACE_TYPE_WIN32_PRINTING, - _cairo_win32_printing_surface_create_similar, - _cairo_win32_surface_finish, - NULL, /* acquire_source_image */ - NULL, /* release_source_image */ - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - _cairo_win32_surface_clone_similar, - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - _cairo_win32_printing_surface_show_page, - NULL, /* set_clip_region */ - _cairo_win32_printing_surface_intersect_clip_path, - _cairo_win32_surface_get_extents, - NULL, /* old_show_glyphs */ - _cairo_win32_printing_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - _cairo_win32_printing_surface_paint, - NULL, /* mask */ - _cairo_win32_printing_surface_stroke, - _cairo_win32_printing_surface_fill, - _cairo_win32_printing_surface_show_glyphs, - NULL, /* snapshot */ - NULL, /* is_similar */ - NULL, /* reset */ - NULL, /* fill_stroke */ -}; - -static const cairo_paginated_surface_backend_t cairo_win32_surface_paginated_backend = { - _cairo_win32_printing_surface_start_page, - _cairo_win32_printing_surface_set_paginated_mode, - NULL, /* set_bounding_box */ -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,184 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Owen Taylor - */ - -#ifndef CAIRO_WIN32_PRIVATE_H -#define CAIRO_WIN32_PRIVATE_H - -#include -#include - -#ifndef SHADEBLENDCAPS -#define SHADEBLENDCAPS 120 -#endif -#ifndef SB_NONE -#define SB_NONE 0 -#endif - -#define WIN32_FONT_LOGICAL_SCALE 32 - -typedef struct _cairo_win32_surface { - cairo_surface_t base; - - cairo_format_t format; - - HDC dc; - - /* We create off-screen surfaces as DIBs or DDBs, based on what we created - * originally*/ - HBITMAP bitmap; - cairo_bool_t is_dib; - - /* Used to save the initial 1x1 monochrome bitmap for the DC to - * select back into the DC before deleting the DC and our - * bitmap. For Windows XP, this doesn't seem to be necessary - * ... we can just delete the DC and that automatically unselects - * out bitmap. But it's standard practice so apparently is needed - * on some versions of Windows. - */ - HBITMAP saved_dc_bitmap; - - cairo_surface_t *image; - - cairo_rectangle_int_t extents; - - /* Initial clip bits - * We need these kept around so that we maintain - * whatever clip was set on the original DC at creation - * time when cairo is asked to reset the surface clip. - */ - cairo_rectangle_int_t clip_rect; - HRGN initial_clip_rgn; - cairo_bool_t had_simple_clip; - - /* Surface DC flags */ - uint32_t flags; - - /* printing surface bits */ - cairo_paginated_mode_t paginated_mode; - cairo_content_t content; - cairo_bool_t path_empty; - cairo_bool_t has_ctm; - cairo_matrix_t ctm; - HBRUSH brush, old_brush; -} cairo_win32_surface_t; - -/* Surface DC flag values */ -enum { - /* If this is a surface created for printing or not */ - CAIRO_WIN32_SURFACE_FOR_PRINTING = (1<<0), - - /* Whether the DC is a display DC or not */ - CAIRO_WIN32_SURFACE_IS_DISPLAY = (1<<1), - - /* Whether we can use BitBlt with this surface */ - CAIRO_WIN32_SURFACE_CAN_BITBLT = (1<<2), - - /* Whether we can use AlphaBlend with this surface */ - CAIRO_WIN32_SURFACE_CAN_ALPHABLEND = (1<<3), - - /* Whether we can use StretchBlt with this surface */ - CAIRO_WIN32_SURFACE_CAN_STRETCHBLT = (1<<4), - - /* Whether we can use StretchDIBits with this surface */ - CAIRO_WIN32_SURFACE_CAN_STRETCHDIB = (1<<5), - - /* Whether we can use GradientFill rectangles with this surface */ - CAIRO_WIN32_SURFACE_CAN_RECT_GRADIENT = (1<<6), -}; - -cairo_status_t -_cairo_win32_print_gdi_error (const char *context); - -cairo_bool_t -_cairo_surface_is_win32 (cairo_surface_t *surface); - -cairo_bool_t -_cairo_surface_is_win32_printing (cairo_surface_t *surface); - -cairo_status_t -_cairo_win32_surface_finish (void *abstract_surface); - -cairo_int_status_t -_cairo_win32_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle); - -uint32_t -_cairo_win32_flags_for_dc (HDC dc); - -cairo_int_status_t -_cairo_win32_surface_show_glyphs (void *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - -cairo_surface_t * -_cairo_win32_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height); - -cairo_status_t -_cairo_win32_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out); - -static inline void -_cairo_matrix_to_win32_xform (const cairo_matrix_t *m, - XFORM *xform) -{ - xform->eM11 = (FLOAT) m->xx; - xform->eM21 = (FLOAT) m->xy; - xform->eM12 = (FLOAT) m->yx; - xform->eM22 = (FLOAT) m->yy; - xform->eDx = (FLOAT) m->x0; - xform->eDy = (FLOAT) m->y0; -} - -cairo_int_status_t -_cairo_win32_save_initial_clip (HDC dc, cairo_win32_surface_t *surface); - -cairo_int_status_t -_cairo_win32_restore_initial_clip (cairo_win32_surface_t *surface); - -void -_cairo_win32_debug_dump_hrgn (HRGN rgn, char *header); - -#endif /* CAIRO_WIN32_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-win32-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-win32-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2125 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Owen Taylor - * Stuart Parmenter - * Vladimir Vukicevic - */ - -#define WIN32_LEAN_AND_MEAN -/* We require Windows 2000 features such as ETO_PDY */ -#if !defined(WINVER) || (WINVER < 0x0500) -# define WINVER 0x0500 -#endif -#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500) -# define _WIN32_WINNT 0x0500 -#endif - -#include "cairoint.h" - -#include "cairo-clip-private.h" -#include "cairo-win32-private.h" - -#include - -#if defined(__MINGW32__) && !defined(ETO_PDY) -# define ETO_PDY 0x2000 -#endif - -#undef DEBUG_COMPOSITE - -/* for older SDKs */ -#ifndef SHADEBLENDCAPS -#define SHADEBLENDCAPS 120 -#endif -#ifndef SB_NONE -#define SB_NONE 0x00000000 -#endif - -#define PELS_72DPI ((LONG)(72. / 0.0254)) - -static const cairo_surface_backend_t cairo_win32_surface_backend; - -/** - * _cairo_win32_print_gdi_error: - * @context: context string to display along with the error - * - * Helper function to dump out a human readable form of the - * current error code. - * - * Return value: A cairo status code for the error code - **/ -cairo_status_t -_cairo_win32_print_gdi_error (const char *context) -{ - void *lpMsgBuf; - DWORD last_error = GetLastError (); - - if (!FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - last_error, - MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPSTR) &lpMsgBuf, - 0, NULL)) { - fprintf (stderr, "%s: Unknown GDI error", context); - } else { - fprintf (stderr, "%s: %s", context, (char *)lpMsgBuf); - - LocalFree (lpMsgBuf); - } - - /* We should switch off of last_status, but we'd either return - * CAIRO_STATUS_NO_MEMORY or CAIRO_STATUS_UNKNOWN_ERROR and there - * is no CAIRO_STATUS_UNKNOWN_ERROR. - */ - - return _cairo_error (CAIRO_STATUS_NO_MEMORY); -} - -uint32_t -_cairo_win32_flags_for_dc (HDC dc) -{ - uint32_t flags = 0; - - if (GetDeviceCaps(dc, TECHNOLOGY) == DT_RASDISPLAY) { - flags |= CAIRO_WIN32_SURFACE_IS_DISPLAY; - - /* These will always be possible, but the actual GetDeviceCaps - * calls will return whether they're accelerated or not. - * We may want to use our own (pixman) routines sometimes - * if they're eventually faster, but for now have GDI do - * everything. - */ - flags |= CAIRO_WIN32_SURFACE_CAN_BITBLT; - flags |= CAIRO_WIN32_SURFACE_CAN_ALPHABLEND; - flags |= CAIRO_WIN32_SURFACE_CAN_STRETCHBLT; - flags |= CAIRO_WIN32_SURFACE_CAN_STRETCHDIB; - } else { - int cap; - - cap = GetDeviceCaps(dc, SHADEBLENDCAPS); - if (cap != SB_NONE) - flags |= CAIRO_WIN32_SURFACE_CAN_ALPHABLEND; - - cap = GetDeviceCaps(dc, RASTERCAPS); - if (cap & RC_BITBLT) - flags |= CAIRO_WIN32_SURFACE_CAN_BITBLT; - if (cap & RC_STRETCHBLT) - flags |= CAIRO_WIN32_SURFACE_CAN_STRETCHBLT; - if (cap & RC_STRETCHDIB) - flags |= CAIRO_WIN32_SURFACE_CAN_STRETCHDIB; - } - - return flags; -} - -static cairo_status_t -_create_dc_and_bitmap (cairo_win32_surface_t *surface, - HDC original_dc, - cairo_format_t format, - int width, - int height, - unsigned char **bits_out, - int *rowstride_out) -{ - cairo_status_t status; - - BITMAPINFO *bitmap_info = NULL; - struct { - BITMAPINFOHEADER bmiHeader; - RGBQUAD bmiColors[2]; - } bmi_stack; - void *bits; - - int num_palette = 0; /* Quiet GCC */ - int i; - - surface->dc = NULL; - surface->bitmap = NULL; - surface->is_dib = FALSE; - - switch (format) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_RGB24: - num_palette = 0; - break; - - case CAIRO_FORMAT_A8: - num_palette = 256; - break; - - case CAIRO_FORMAT_A1: - num_palette = 2; - break; - } - - if (num_palette > 2) { - bitmap_info = _cairo_malloc_ab_plus_c (num_palette, sizeof(RGBQUAD), sizeof(BITMAPINFOHEADER)); - if (!bitmap_info) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } else { - bitmap_info = (BITMAPINFO *)&bmi_stack; - } - - bitmap_info->bmiHeader.biSize = sizeof (BITMAPINFOHEADER); - bitmap_info->bmiHeader.biWidth = width == 0 ? 1 : width; - bitmap_info->bmiHeader.biHeight = height == 0 ? -1 : - height; /* top-down */ - bitmap_info->bmiHeader.biSizeImage = 0; - bitmap_info->bmiHeader.biXPelsPerMeter = PELS_72DPI; /* unused here */ - bitmap_info->bmiHeader.biYPelsPerMeter = PELS_72DPI; /* unused here */ - bitmap_info->bmiHeader.biPlanes = 1; - - switch (format) { - /* We can't create real RGB24 bitmaps because something seems to - * break if we do, especially if we don't set up an image - * fallback. It could be a bug with using a 24bpp pixman image - * (and creating one with masks). So treat them like 32bpp. - * Note: This causes problems when using BitBlt/AlphaBlend/etc! - * see end of file. - */ - case CAIRO_FORMAT_RGB24: - case CAIRO_FORMAT_ARGB32: - bitmap_info->bmiHeader.biBitCount = 32; - bitmap_info->bmiHeader.biCompression = BI_RGB; - bitmap_info->bmiHeader.biClrUsed = 0; /* unused */ - bitmap_info->bmiHeader.biClrImportant = 0; - break; - - case CAIRO_FORMAT_A8: - bitmap_info->bmiHeader.biBitCount = 8; - bitmap_info->bmiHeader.biCompression = BI_RGB; - bitmap_info->bmiHeader.biClrUsed = 256; - bitmap_info->bmiHeader.biClrImportant = 0; - - for (i = 0; i < 256; i++) { - bitmap_info->bmiColors[i].rgbBlue = i; - bitmap_info->bmiColors[i].rgbGreen = i; - bitmap_info->bmiColors[i].rgbRed = i; - bitmap_info->bmiColors[i].rgbReserved = 0; - } - - break; - - case CAIRO_FORMAT_A1: - bitmap_info->bmiHeader.biBitCount = 1; - bitmap_info->bmiHeader.biCompression = BI_RGB; - bitmap_info->bmiHeader.biClrUsed = 2; - bitmap_info->bmiHeader.biClrImportant = 0; - - for (i = 0; i < 2; i++) { - bitmap_info->bmiColors[i].rgbBlue = i * 255; - bitmap_info->bmiColors[i].rgbGreen = i * 255; - bitmap_info->bmiColors[i].rgbRed = i * 255; - bitmap_info->bmiColors[i].rgbReserved = 0; - } - - break; - } - - surface->dc = CreateCompatibleDC (original_dc); - if (!surface->dc) - goto FAIL; - - surface->bitmap = CreateDIBSection (surface->dc, - bitmap_info, - DIB_RGB_COLORS, - &bits, - NULL, 0); - if (!surface->bitmap) - goto FAIL; - - surface->is_dib = TRUE; - - GdiFlush(); - - surface->saved_dc_bitmap = SelectObject (surface->dc, - surface->bitmap); - if (!surface->saved_dc_bitmap) - goto FAIL; - - if (bitmap_info && num_palette > 2) - free (bitmap_info); - - if (bits_out) - *bits_out = bits; - - if (rowstride_out) { - /* Windows bitmaps are padded to 32-bit (dword) boundaries */ - switch (format) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_RGB24: - *rowstride_out = 4 * width; - break; - - case CAIRO_FORMAT_A8: - *rowstride_out = (width + 3) & ~3; - break; - - case CAIRO_FORMAT_A1: - *rowstride_out = ((width + 31) & ~31) / 8; - break; - } - } - - surface->flags = _cairo_win32_flags_for_dc (surface->dc); - - return CAIRO_STATUS_SUCCESS; - - FAIL: - status = _cairo_win32_print_gdi_error ("_create_dc_and_bitmap"); - - if (bitmap_info && num_palette > 2) - free (bitmap_info); - - if (surface->saved_dc_bitmap) { - SelectObject (surface->dc, surface->saved_dc_bitmap); - surface->saved_dc_bitmap = NULL; - } - - if (surface->bitmap) { - DeleteObject (surface->bitmap); - surface->bitmap = NULL; - } - - if (surface->dc) { - DeleteDC (surface->dc); - surface->dc = NULL; - } - - return status; -} - -static cairo_surface_t * -_cairo_win32_surface_create_for_dc (HDC original_dc, - cairo_format_t format, - int width, - int height) -{ - cairo_status_t status; - cairo_win32_surface_t *surface; - unsigned char *bits; - int rowstride; - - surface = malloc (sizeof (cairo_win32_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - status = _create_dc_and_bitmap (surface, original_dc, format, - width, height, - &bits, &rowstride); - if (status) - goto FAIL; - - surface->image = cairo_image_surface_create_for_data (bits, format, - width, height, rowstride); - status = surface->image->status; - if (status) - goto FAIL; - - surface->format = format; - - surface->clip_rect.x = 0; - surface->clip_rect.y = 0; - surface->clip_rect.width = width; - surface->clip_rect.height = height; - - surface->initial_clip_rgn = NULL; - surface->had_simple_clip = FALSE; - - surface->extents = surface->clip_rect; - - _cairo_surface_init (&surface->base, &cairo_win32_surface_backend, - _cairo_content_from_format (format)); - - return &surface->base; - - FAIL: - if (surface->bitmap) { - SelectObject (surface->dc, surface->saved_dc_bitmap); - DeleteObject (surface->bitmap); - DeleteDC (surface->dc); - } - free (surface); - - return _cairo_surface_create_in_error (status); -} - -static cairo_surface_t * -_cairo_win32_surface_create_similar_internal (void *abstract_src, - cairo_content_t content, - int width, - int height, - cairo_bool_t force_dib) -{ - cairo_win32_surface_t *src = abstract_src; - cairo_format_t format = _cairo_format_from_content (content); - cairo_win32_surface_t *new_surf; - - /* We force a DIB always if: - * - we need alpha; or - * - the parent is a DIB; or - * - the parent is for printing (because we don't care about the bit depth at that point) - */ - if (src->is_dib || - (content & CAIRO_CONTENT_ALPHA) || - src->base.backend->type == CAIRO_SURFACE_TYPE_WIN32_PRINTING) - { - force_dib = TRUE; - } - - if (force_dib) { - new_surf = (cairo_win32_surface_t*) - _cairo_win32_surface_create_for_dc (src->dc, format, width, height); - } else { - /* otherwise, create a ddb */ - HBITMAP ddb = CreateCompatibleBitmap (src->dc, width, height); - HDC ddb_dc = CreateCompatibleDC (src->dc); - HBITMAP saved_dc_bitmap; - - saved_dc_bitmap = SelectObject (ddb_dc, ddb); - - new_surf = (cairo_win32_surface_t*) cairo_win32_surface_create (ddb_dc); - if (new_surf->base.status == CAIRO_STATUS_SUCCESS) { - new_surf->bitmap = ddb; - new_surf->saved_dc_bitmap = saved_dc_bitmap; - new_surf->is_dib = FALSE; - } else { - SelectObject (ddb_dc, saved_dc_bitmap); - DeleteDC (ddb_dc); - DeleteObject (ddb); - } - } - - return (cairo_surface_t*) new_surf; -} - -cairo_surface_t * -_cairo_win32_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - return _cairo_win32_surface_create_similar_internal (abstract_src, content, width, height, FALSE); -} - -cairo_status_t -_cairo_win32_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_content_t src_content; - cairo_surface_t *new_surface; - cairo_status_t status; - cairo_pattern_union_t pattern; - - src_content = cairo_surface_get_content(src); - new_surface = - _cairo_win32_surface_create_similar_internal (abstract_surface, src_content, width, height, FALSE); - - if (cairo_surface_status(new_surface)) - return cairo_surface_status(new_surface); - - _cairo_pattern_init_for_surface (&pattern.surface, src); - - status = _cairo_surface_composite (CAIRO_OPERATOR_SOURCE, - &pattern.base, - NULL, - new_surface, - src_x, src_y, - 0, 0, - 0, 0, - width, height); - - _cairo_pattern_fini (&pattern.base); - - if (status == CAIRO_STATUS_SUCCESS) - *clone_out = new_surface; - else - cairo_surface_destroy (new_surface); - - return status; -} - - -cairo_status_t -_cairo_win32_surface_finish (void *abstract_surface) -{ - cairo_win32_surface_t *surface = abstract_surface; - - if (surface->image) - cairo_surface_destroy (surface->image); - - /* If we created the Bitmap and DC, destroy them */ - if (surface->bitmap) { - SelectObject (surface->dc, surface->saved_dc_bitmap); - DeleteObject (surface->bitmap); - DeleteDC (surface->dc); - } else { - _cairo_win32_restore_initial_clip (surface); - } - - if (surface->initial_clip_rgn) - DeleteObject (surface->initial_clip_rgn); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_surface_get_subimage (cairo_win32_surface_t *surface, - int x, - int y, - int width, - int height, - cairo_win32_surface_t **local_out) -{ - cairo_win32_surface_t *local; - cairo_int_status_t status; - cairo_content_t content = _cairo_content_from_format (surface->format); - - local = - (cairo_win32_surface_t *) _cairo_win32_surface_create_similar_internal - (surface, content, width, height, TRUE); - if (local->base.status) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - status = CAIRO_INT_STATUS_UNSUPPORTED; - - /* Only BitBlt if the source surface supports it. */ - if ((surface->flags & CAIRO_WIN32_SURFACE_CAN_BITBLT) && - BitBlt (local->dc, - 0, 0, - width, height, - surface->dc, - x, y, - SRCCOPY)) - { - status = CAIRO_STATUS_SUCCESS; - } - - if (status) { - /* If we failed here, most likely the source or dest doesn't - * support BitBlt/AlphaBlend (e.g. a printer). - * You can't reliably get bits from a printer DC, so just fill in - * the surface as white (common case for printing). - */ - - RECT r; - r.left = r.top = 0; - r.right = width; - r.bottom = height; - FillRect(local->dc, &r, (HBRUSH)GetStockObject(WHITE_BRUSH)); - } - - *local_out = local; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_win32_surface_t *local = NULL; - cairo_status_t status; - - if (surface->image) { - *image_out = (cairo_image_surface_t *)surface->image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; - } - - status = _cairo_win32_surface_get_subimage (abstract_surface, 0, 0, - surface->extents.width, - surface->extents.height, &local); - if (status) - return status; - - *image_out = (cairo_image_surface_t *)local->image; - *image_extra = local; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_win32_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_win32_surface_t *local = image_extra; - - if (local) - cairo_surface_destroy ((cairo_surface_t *)local); -} - -static cairo_status_t -_cairo_win32_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect, - void **image_extra) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_win32_surface_t *local = NULL; - cairo_status_t status; - RECT clip_box; - int x1, y1, x2, y2; - - if (surface->image) { - GdiFlush(); - - image_rect->x = 0; - image_rect->y = 0; - image_rect->width = surface->extents.width; - image_rect->height = surface->extents.height; - - *image_out = (cairo_image_surface_t *)surface->image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; - } - - if (GetClipBox (surface->dc, &clip_box) == ERROR) - return _cairo_win32_print_gdi_error ("_cairo_win3_surface_acquire_dest_image"); - - x1 = clip_box.left; - x2 = clip_box.right; - y1 = clip_box.top; - y2 = clip_box.bottom; - - if (interest_rect->x > x1) - x1 = interest_rect->x; - if (interest_rect->y > y1) - y1 = interest_rect->y; - if (interest_rect->x + interest_rect->width < x2) - x2 = interest_rect->x + interest_rect->width; - if (interest_rect->y + interest_rect->height < y2) - y2 = interest_rect->y + interest_rect->height; - - if (x1 >= x2 || y1 >= y2) { - *image_out = NULL; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; - } - - status = _cairo_win32_surface_get_subimage (abstract_surface, - x1, y1, x2 - x1, y2 - y1, - &local); - if (status) - return status; - - *image_out = (cairo_image_surface_t *)local->image; - *image_extra = local; - - image_rect->x = x1; - image_rect->y = y1; - image_rect->width = x2 - x1; - image_rect->height = y2 - y1; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_win32_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_win32_surface_t *local = image_extra; - - if (!local) - return; - - if (!BitBlt (surface->dc, - image_rect->x, image_rect->y, - image_rect->width, image_rect->height, - local->dc, - 0, 0, - SRCCOPY)) - _cairo_win32_print_gdi_error ("_cairo_win32_surface_release_dest_image"); - - cairo_surface_destroy ((cairo_surface_t *)local); -} - -#if !defined(AC_SRC_OVER) -#define AC_SRC_OVER 0x00 -#pragma pack(1) -typedef struct { - BYTE BlendOp; - BYTE BlendFlags; - BYTE SourceConstantAlpha; - BYTE AlphaFormat; -}BLENDFUNCTION; -#pragma pack() -#endif - -/* for compatibility with VC++ 6 */ -#ifndef AC_SRC_ALPHA -#define AC_SRC_ALPHA 0x01 -#endif - -typedef BOOL (WINAPI *cairo_alpha_blend_func_t) (HDC hdcDest, - int nXOriginDest, - int nYOriginDest, - int nWidthDest, - int hHeightDest, - HDC hdcSrc, - int nXOriginSrc, - int nYOriginSrc, - int nWidthSrc, - int nHeightSrc, - BLENDFUNCTION blendFunction); - -static cairo_int_status_t -_composite_alpha_blend (cairo_win32_surface_t *dst, - cairo_win32_surface_t *src, - int alpha, - int src_x, - int src_y, - int src_w, - int src_h, - int dst_x, - int dst_y, - int dst_w, - int dst_h) -{ - static unsigned alpha_blend_checked = FALSE; - static cairo_alpha_blend_func_t alpha_blend = NULL; - - BLENDFUNCTION blend_function; - - /* Check for AlphaBlend dynamically to allow compiling on - * MSVC 6 and use on older windows versions - */ - if (!alpha_blend_checked) { - OSVERSIONINFO os; - - os.dwOSVersionInfoSize = sizeof (os); - GetVersionEx (&os); - - /* If running on Win98, disable using AlphaBlend() - * to avoid Win98 AlphaBlend() bug */ - if (VER_PLATFORM_WIN32_WINDOWS != os.dwPlatformId || - os.dwMajorVersion != 4 || os.dwMinorVersion != 10) - { - HMODULE msimg32_dll = LoadLibraryA ("msimg32"); - - if (msimg32_dll != NULL) - alpha_blend = (cairo_alpha_blend_func_t)GetProcAddress (msimg32_dll, - "AlphaBlend"); - } - - alpha_blend_checked = TRUE; - } - - if (alpha_blend == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - if (!(dst->flags & CAIRO_WIN32_SURFACE_CAN_ALPHABLEND)) - return CAIRO_INT_STATUS_UNSUPPORTED; - if (src->format == CAIRO_FORMAT_RGB24 && dst->format == CAIRO_FORMAT_ARGB32) - return CAIRO_INT_STATUS_UNSUPPORTED; - - blend_function.BlendOp = AC_SRC_OVER; - blend_function.BlendFlags = 0; - blend_function.SourceConstantAlpha = alpha; - blend_function.AlphaFormat = (src->format == CAIRO_FORMAT_ARGB32) ? AC_SRC_ALPHA : 0; - - if (!alpha_blend (dst->dc, - dst_x, dst_y, - dst_w, dst_h, - src->dc, - src_x, src_y, - src_w, src_h, - blend_function)) - return _cairo_win32_print_gdi_error ("_cairo_win32_surface_composite(AlphaBlend)"); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_win32_surface_composite_inner (cairo_win32_surface_t *src, - cairo_image_surface_t *src_image, - cairo_win32_surface_t *dst, - cairo_rectangle_int_t src_extents, - cairo_rectangle_int_t src_r, - cairo_rectangle_int_t dst_r, - int alpha, - cairo_bool_t needs_alpha, - cairo_bool_t needs_scale) -{ - /* Then do BitBlt, StretchDIBits, StretchBlt, AlphaBlend, or MaskBlt */ - if (src_image) { - if (needs_alpha || needs_scale) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (dst->flags & CAIRO_WIN32_SURFACE_CAN_STRETCHBLT) { - BITMAPINFO bi; - bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bi.bmiHeader.biWidth = src_image->width; - bi.bmiHeader.biHeight = - src_image->height; - bi.bmiHeader.biSizeImage = 0; - bi.bmiHeader.biXPelsPerMeter = PELS_72DPI; - bi.bmiHeader.biYPelsPerMeter = PELS_72DPI; - bi.bmiHeader.biPlanes = 1; - bi.bmiHeader.biBitCount = 32; - bi.bmiHeader.biCompression = BI_RGB; - bi.bmiHeader.biClrUsed = 0; - bi.bmiHeader.biClrImportant = 0; - - /* StretchDIBits is broken with top-down dibs; you need to do some - * special munging to make the coordinate space work (basically, - * need to address everything based on the bottom left, instead of top left, - * and need to tell it to flip the resulting image. - * - * See http://blog.vlad1.com/archives/2006/10/26/134/ and comments. - */ - if (!StretchDIBits (dst->dc, - /* dst x,y,w,h */ - dst_r.x, dst_r.y + dst_r.height - 1, - dst_r.width, - (int) dst_r.height, - /* src x,y,w,h */ - src_r.x, src_extents.height - src_r.y + 1, - src_r.width, - (int) src_r.height, - src_image->data, - &bi, - DIB_RGB_COLORS, - SRCCOPY)) - return _cairo_win32_print_gdi_error ("_cairo_win32_surface_composite(StretchDIBits)"); - } - } else if (!needs_alpha) { - /* BitBlt or StretchBlt? */ - if (!needs_scale && (dst->flags & CAIRO_WIN32_SURFACE_CAN_BITBLT)) { - if (!BitBlt (dst->dc, - dst_r.x, dst_r.y, - dst_r.width, dst_r.height, - src->dc, - src_r.x, src_r.y, - SRCCOPY)) - return _cairo_win32_print_gdi_error ("_cairo_win32_surface_composite(BitBlt)"); - } else if (dst->flags & CAIRO_WIN32_SURFACE_CAN_STRETCHBLT) { - /* StretchBlt? */ - /* XXX check if we want HALFTONE, based on the src filter */ - BOOL success; - int oldmode = SetStretchBltMode(dst->dc, HALFTONE); - success = StretchBlt(dst->dc, - dst_r.x, dst_r.y, - dst_r.width, dst_r.height, - src->dc, - src_r.x, src_r.y, - src_r.width, src_r.height, - SRCCOPY); - SetStretchBltMode(dst->dc, oldmode); - - if (!success) - return _cairo_win32_print_gdi_error ("StretchBlt"); - } - } else if (needs_alpha && !needs_scale) { - return _composite_alpha_blend (dst, src, alpha, - src_r.x, src_r.y, src_r.width, src_r.height, - dst_r.x, dst_r.y, dst_r.width, dst_r.height); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_win32_surface_composite (cairo_operator_t op, - cairo_pattern_t *pattern, - cairo_pattern_t *mask_pattern, - void *abstract_dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_win32_surface_t *dst = abstract_dst; - cairo_win32_surface_t *src; - cairo_surface_pattern_t *src_surface_pattern; - int alpha; - double scalex, scaley; - cairo_fixed_t x0_fixed, y0_fixed; - cairo_int_status_t status; - - cairo_bool_t needs_alpha, needs_scale, needs_repeat; - cairo_image_surface_t *src_image = NULL; - - cairo_format_t src_format; - cairo_rectangle_int_t src_extents; - - cairo_rectangle_int_t src_r = { src_x, src_y, width, height }; - cairo_rectangle_int_t dst_r = { dst_x, dst_y, width, height }; - -#ifdef DEBUG_COMPOSITE - fprintf (stderr, "+++ composite: %d %p %p %p [%d %d] [%d %d] [%d %d] %dx%d\n", - op, pattern, mask_pattern, abstract_dst, src_x, src_y, mask_x, mask_y, dst_x, dst_y, width, height); -#endif - - /* If the destination can't do any of these, then - * we may as well give up, since this is what we'll - * look to for optimization. - */ - if ((dst->flags & (CAIRO_WIN32_SURFACE_CAN_BITBLT | - CAIRO_WIN32_SURFACE_CAN_ALPHABLEND | - CAIRO_WIN32_SURFACE_CAN_STRETCHBLT | - CAIRO_WIN32_SURFACE_CAN_STRETCHDIB)) - == 0) - { - goto UNSUPPORTED; - } - - if (pattern->type != CAIRO_PATTERN_TYPE_SURFACE) - goto UNSUPPORTED; - - if (pattern->extend != CAIRO_EXTEND_NONE && - pattern->extend != CAIRO_EXTEND_REPEAT) - goto UNSUPPORTED; - - if (mask_pattern) { - /* FIXME: When we fully support RENDER style 4-channel - * masks we need to check r/g/b != 1.0. - */ - if (mask_pattern->type != CAIRO_PATTERN_TYPE_SOLID) - return CAIRO_INT_STATUS_UNSUPPORTED; - - alpha = ((cairo_solid_pattern_t *)mask_pattern)->color.alpha_short >> 8; - } else { - alpha = 255; - } - - src_surface_pattern = (cairo_surface_pattern_t *)pattern; - src = (cairo_win32_surface_t *)src_surface_pattern->surface; - - if (src->base.type == CAIRO_SURFACE_TYPE_IMAGE && - dst->flags & (CAIRO_WIN32_SURFACE_CAN_STRETCHDIB)) - { - /* In some very limited cases, we can use StretchDIBits to draw - * an image surface directly: - * - source is CAIRO_FORMAT_ARGB32 - * - dest is CAIRO_FORMAT_ARGB32 - * - alpha is 255 - * - operator is SOURCE or OVER - * - image stride is 4*width - */ - src_image = (cairo_image_surface_t*) src; - - if (src_image->format != CAIRO_FORMAT_RGB24 || - dst->format != CAIRO_FORMAT_RGB24 || - alpha != 255 || - (op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER) || - src_image->stride != (src_image->width * 4)) - { - goto UNSUPPORTED; - } - - src_format = src_image->format; - src_extents.x = 0; - src_extents.y = 0; - src_extents.width = src_image->width; - src_extents.height = src_image->height; - } else if (src->base.backend != dst->base.backend) { - goto UNSUPPORTED; - } else { - src_format = src->format; - src_extents = src->extents; - } - - -#ifdef DEBUG_COMPOSITE - fprintf (stderr, "Before check: src size: (%d %d) xy [%d %d] -> dst [%d %d %d %d] {srcmat %f %f %f %f}\n", - src_extents.width, src_extents.height, - src_x, src_y, - dst_x, dst_y, width, height, - pattern->matrix.x0, pattern->matrix.y0, pattern->matrix.xx, pattern->matrix.yy); -#endif - - /* We can only use GDI functions if the source and destination rectangles - * are on integer pixel boundaries. Figure that out here. - */ - x0_fixed = _cairo_fixed_from_double(pattern->matrix.x0 / pattern->matrix.xx); - y0_fixed = _cairo_fixed_from_double(pattern->matrix.y0 / pattern->matrix.yy); - - if (pattern->matrix.yx != 0.0 || - pattern->matrix.xy != 0.0 || - !_cairo_fixed_is_integer(x0_fixed) || - !_cairo_fixed_is_integer(y0_fixed)) - { - goto UNSUPPORTED; - } - - scalex = pattern->matrix.xx; - scaley = pattern->matrix.yy; - - src_r.x += _cairo_fixed_integer_part(x0_fixed); - src_r.y += _cairo_fixed_integer_part(y0_fixed); - - /* Success, right? */ - if (scalex == 0.0 || scaley == 0.0) - return CAIRO_STATUS_SUCCESS; - - if (scalex != 1.0 || scaley != 1.0) - goto UNSUPPORTED; - - /* If the src coordinates are outside of the source surface bounds, - * we have to fix them up, because this is an error for the GDI - * functions. - */ - -#ifdef DEBUG_COMPOSITE - fprintf (stderr, "before: [%d %d %d %d] -> [%d %d %d %d]\n", - src_r.x, src_r.y, src_r.width, src_r.height, - dst_r.x, dst_r.y, dst_r.width, dst_r.height); - fflush (stderr); -#endif - - /* If the src recangle doesn't wholly lie within the src extents, - * fudge things. We really need to do fixup on the unpainted - * region -- e.g. the SOURCE operator is broken for areas outside - * of the extents, because it won't clear that area to transparent - * black. - */ - - if (pattern->extend != CAIRO_EXTEND_REPEAT) { - needs_repeat = FALSE; - - /* If the src rect and the extents of the source image don't overlap at all, - * we can't do anything useful here. - */ - if (src_r.x > src_extents.width || src_r.y > src_extents.height || - (src_r.x + src_r.width) < 0 || (src_r.y + src_r.height) < 0) - { - if (op == CAIRO_OPERATOR_OVER) - return CAIRO_STATUS_SUCCESS; - goto UNSUPPORTED; - } - - if (src_r.x < 0) { - src_r.width += src_r.x; - src_r.x = 0; - - dst_r.width += src_r.x; - dst_r.x -= src_r.x; - } - - if (src_r.y < 0) { - src_r.height += src_r.y; - src_r.y = 0; - - dst_r.height += dst_r.y; - dst_r.y -= src_r.y; - } - - if (src_r.x + src_r.width > src_extents.width) { - src_r.width = src_extents.width - src_r.x; - dst_r.width = src_r.width; - } - - if (src_r.y + src_r.height > src_extents.height) { - src_r.height = src_extents.height - src_r.y; - dst_r.height = src_r.height; - } - } else { - needs_repeat = TRUE; - } - - /* - * Operations that we can do: - * - * RGB OVER RGB -> BitBlt (same as SOURCE) - * RGB OVER ARGB -> UNSUPPORTED (AlphaBlend treats this as a BitBlt, even with SCA 255 and no AC_SRC_ALPHA) - * ARGB OVER ARGB -> AlphaBlend, with AC_SRC_ALPHA - * ARGB OVER RGB -> AlphaBlend, with AC_SRC_ALPHA; we'll have junk in the dst A byte - * - * RGB OVER RGB + mask -> AlphaBlend, no AC_SRC_ALPHA - * RGB OVER ARGB + mask -> UNSUPPORTED - * ARGB OVER ARGB + mask -> AlphaBlend, with AC_SRC_ALPHA - * ARGB OVER RGB + mask -> AlphaBlend, with AC_SRC_ALPHA; junk in the dst A byte - * - * RGB SOURCE RGB -> BitBlt - * RGB SOURCE ARGB -> UNSUPPORTED (AlphaBlend treats this as a BitBlt, even with SCA 255 and no AC_SRC_ALPHA) - * ARGB SOURCE ARGB -> BitBlt - * ARGB SOURCE RGB -> BitBlt - * - * RGB SOURCE RGB + mask -> unsupported - * RGB SOURCE ARGB + mask -> unsupported - * ARGB SOURCE ARGB + mask -> unsupported - * ARGB SOURCE RGB + mask -> unsupported - */ - - /* - * Figure out what action to take. - */ - if (op == CAIRO_OPERATOR_OVER) { - if (alpha == 0) - return CAIRO_STATUS_SUCCESS; - - if (src_format == dst->format) { - if (alpha == 255 && src_format == CAIRO_FORMAT_RGB24) { - needs_alpha = FALSE; - } else { - needs_alpha = TRUE; - } - } else if (src_format == CAIRO_FORMAT_ARGB32 && - dst->format == CAIRO_FORMAT_RGB24) - { - needs_alpha = TRUE; - } else { - goto UNSUPPORTED; - } - } else if (alpha == 255 && op == CAIRO_OPERATOR_SOURCE) { - if ((src_format == dst->format) || - (src_format == CAIRO_FORMAT_ARGB32 && dst->format == CAIRO_FORMAT_RGB24)) - { - needs_alpha = FALSE; - } else { - goto UNSUPPORTED; - } - } else { - goto UNSUPPORTED; - } - - if (scalex == 1.0 && scaley == 1.0) { - needs_scale = FALSE; - } else { - /* Should never be reached until we turn StretchBlt back on */ - needs_scale = TRUE; - } - -#ifdef DEBUG_COMPOSITE - fprintf (stderr, "action: [%d %d %d %d] -> [%d %d %d %d]\n", - src_r.x, src_r.y, src_r.width, src_r.height, - dst_r.x, dst_r.y, dst_r.width, dst_r.height); - fflush (stderr); -#endif - - /* If we need to repeat, we turn the repeated blit into - * a bunch of piece-by-piece blits. - */ - if (needs_repeat) { - cairo_rectangle_int_t piece_src_r, piece_dst_r; - uint32_t rendered_width = 0, rendered_height = 0; - uint32_t to_render_height, to_render_width; - int32_t piece_x, piece_y; - int32_t src_start_x = src_r.x % src_extents.width; - int32_t src_start_y = src_r.y % src_extents.height; - - if (needs_scale) - goto UNSUPPORTED; - - /* If both the src and dest have an image, we may as well fall - * back, because it will be faster than our separate blits. - * Our blit code will be fastest when the src is a DDB and the - * destination is a DDB. - */ - if ((src_image || src->image) && dst->image) - goto UNSUPPORTED; - - /* If the src is not a bitmap but an on-screen (or unknown) - * DC, chances are that fallback will be faster. - */ - if (src->bitmap == NULL) - goto UNSUPPORTED; - - /* If we can use PatBlt, just do so */ - if (!src_image && !needs_alpha) - { - HBRUSH brush; - HGDIOBJ old_brush; - POINT old_brush_origin; - - /* Set up the brush with our bitmap */ - brush = CreatePatternBrush (src->bitmap); - - /* SetBrushOrgEx sets the coordinates in the destination DC of where the - * pattern should start. - */ - SetBrushOrgEx (dst->dc, dst_r.x - src_start_x, - dst_r.y - src_start_y, &old_brush_origin); - - old_brush = SelectObject (dst->dc, brush); - - PatBlt (dst->dc, dst_r.x, dst_r.y, dst_r.width, dst_r.height, PATCOPY); - - /* Restore the old brush and pen */ - SetBrushOrgEx (dst->dc, old_brush_origin.x, old_brush_origin.y, NULL); - SelectObject (dst->dc, old_brush); - DeleteObject (brush); - - return CAIRO_STATUS_SUCCESS; - } - - /* If we were not able to use PatBlt, then manually expand out the blit */ - - /* Arbitrary factor; we think that going through - * fallback will be faster if we have to do more - * than this amount of blits in either direction. - */ - if (dst_r.width / src_extents.width > 5 || - dst_r.height / src_extents.height > 5) - goto UNSUPPORTED; - - for (rendered_height = 0; - rendered_height < dst_r.height; - rendered_height += to_render_height) - { - piece_y = (src_start_y + rendered_height) % src_extents.height; - to_render_height = src_extents.height - piece_y; - - if (rendered_height + to_render_height > dst_r.height) - to_render_height = dst_r.height - rendered_height; - - for (rendered_width = 0; - rendered_width < dst_r.width; - rendered_width += to_render_width) - { - piece_x = (src_start_x + rendered_width) % src_extents.width; - to_render_width = src_extents.width - piece_x; - - if (rendered_width + to_render_width > dst_r.width) - to_render_width = dst_r.width - rendered_width; - - piece_src_r.x = piece_x; - piece_src_r.y = piece_y; - piece_src_r.width = to_render_width; - piece_src_r.height = to_render_height; - - piece_dst_r.x = dst_r.x + rendered_width; - piece_dst_r.y = dst_r.y + rendered_height; - piece_dst_r.width = to_render_width; - piece_dst_r.height = to_render_height; - - status = _cairo_win32_surface_composite_inner (src, src_image, dst, - src_extents, piece_src_r, piece_dst_r, - alpha, needs_alpha, needs_scale); - if (status != CAIRO_STATUS_SUCCESS) { - /* Uh oh. If something failed, and it's the first - * piece, then we can jump to UNSUPPORTED. - * Otherwise, this is bad times, because part of the - * rendering was already done. */ - if (rendered_width == 0 && - rendered_height == 0) - { - goto UNSUPPORTED; - } - - return status; - } - } - } - } else { - status = _cairo_win32_surface_composite_inner (src, src_image, dst, - src_extents, src_r, dst_r, - alpha, needs_alpha, needs_scale); - } - - if (status == CAIRO_STATUS_SUCCESS) - return status; - -UNSUPPORTED: - /* Fall back to image surface directly, if this is a DIB surface */ - if (dst->image) { - GdiFlush(); - - return dst->image->backend->composite (op, pattern, mask_pattern, - dst->image, - src_x, src_y, - mask_x, mask_y, - dst_x, dst_y, - width, height); - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -/* This big function tells us how to optimize operators for the - * case of solid destination and constant-alpha source - * - * Note: This function needs revisiting if we add support for - * super-luminescent colors (a == 0, r,g,b > 0) - */ -static enum { DO_CLEAR, DO_SOURCE, DO_NOTHING, DO_UNSUPPORTED } -categorize_solid_dest_operator (cairo_operator_t op, - unsigned short alpha) -{ - enum { SOURCE_TRANSPARENT, SOURCE_LIGHT, SOURCE_SOLID, SOURCE_OTHER } source; - - if (alpha >= 0xff00) - source = SOURCE_SOLID; - else if (alpha < 0x100) - source = SOURCE_TRANSPARENT; - else - source = SOURCE_OTHER; - - switch (op) { - case CAIRO_OPERATOR_CLEAR: /* 0 0 */ - case CAIRO_OPERATOR_OUT: /* 1 - Ab 0 */ - return DO_CLEAR; - break; - - case CAIRO_OPERATOR_SOURCE: /* 1 0 */ - case CAIRO_OPERATOR_IN: /* Ab 0 */ - return DO_SOURCE; - break; - - case CAIRO_OPERATOR_OVER: /* 1 1 - Aa */ - case CAIRO_OPERATOR_ATOP: /* Ab 1 - Aa */ - if (source == SOURCE_SOLID) - return DO_SOURCE; - else if (source == SOURCE_TRANSPARENT) - return DO_NOTHING; - else - return DO_UNSUPPORTED; - break; - - case CAIRO_OPERATOR_DEST_OUT: /* 0 1 - Aa */ - case CAIRO_OPERATOR_XOR: /* 1 - Ab 1 - Aa */ - if (source == SOURCE_SOLID) - return DO_CLEAR; - else if (source == SOURCE_TRANSPARENT) - return DO_NOTHING; - else - return DO_UNSUPPORTED; - break; - - case CAIRO_OPERATOR_DEST: /* 0 1 */ - case CAIRO_OPERATOR_DEST_OVER:/* 1 - Ab 1 */ - case CAIRO_OPERATOR_SATURATE: /* min(1,(1-Ab)/Aa) 1 */ - return DO_NOTHING; - break; - - case CAIRO_OPERATOR_DEST_IN: /* 0 Aa */ - case CAIRO_OPERATOR_DEST_ATOP:/* 1 - Ab Aa */ - if (source == SOURCE_SOLID) - return DO_NOTHING; - else if (source == SOURCE_TRANSPARENT) - return DO_CLEAR; - else - return DO_UNSUPPORTED; - break; - - case CAIRO_OPERATOR_ADD: /* 1 1 */ - if (source == SOURCE_TRANSPARENT) - return DO_NOTHING; - else - return DO_UNSUPPORTED; - break; - } - - ASSERT_NOT_REACHED; - return DO_UNSUPPORTED; -} - -static cairo_int_status_t -_cairo_win32_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_status_t status; - COLORREF new_color; - HBRUSH new_brush; - int i; - - /* XXXperf If it's not RGB24, we need to do a little more checking - * to figure out when we can use GDI. We don't have that checking - * anywhere at the moment, so just bail and use the fallback - * paths. */ - if (surface->format != CAIRO_FORMAT_RGB24) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Optimize for no destination alpha (surface->pixman_image is non-NULL for all - * surfaces with alpha.) - */ - switch (categorize_solid_dest_operator (op, color->alpha_short)) { - case DO_CLEAR: - new_color = RGB (0, 0, 0); - break; - case DO_SOURCE: - new_color = RGB (color->red_short >> 8, color->green_short >> 8, color->blue_short >> 8); - break; - case DO_NOTHING: - return CAIRO_STATUS_SUCCESS; - case DO_UNSUPPORTED: - default: - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - new_brush = CreateSolidBrush (new_color); - if (!new_brush) - return _cairo_win32_print_gdi_error ("_cairo_win32_surface_fill_rectangles"); - - for (i = 0; i < num_rects; i++) { - RECT rect; - - rect.left = rects[i].x; - rect.top = rects[i].y; - rect.right = rects[i].x + rects[i].width; - rect.bottom = rects[i].y + rects[i].height; - - if (!FillRect (surface->dc, &rect, new_brush)) - goto FAIL; - } - - DeleteObject (new_brush); - - return CAIRO_STATUS_SUCCESS; - - FAIL: - status = _cairo_win32_print_gdi_error ("_cairo_win32_surface_fill_rectangles"); - - DeleteObject (new_brush); - - return status; -} - -static cairo_int_status_t -_cairo_win32_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - /* If we are in-memory, then we set the clip on the image surface - * as well as on the underlying GDI surface. - */ - if (surface->image) { - unsigned int serial; - - serial = _cairo_surface_allocate_clip_serial (surface->image); - status = _cairo_surface_set_clip_region (surface->image, region, serial); - if (status) - return status; - } - - /* The semantics we want is that any clip set by cairo combines - * is intersected with the clip on device context that the - * surface was created for. To implement this, we need to - * save the original clip when first setting a clip on surface. - */ - - /* Clear any clip set by cairo, return to the original first */ - status = _cairo_win32_restore_initial_clip (surface); - - /* Then combine any new region with it */ - if (region) { - cairo_rectangle_int_t extents; - cairo_box_int_t *boxes; - int num_boxes; - RGNDATA *data; - size_t data_size; - RECT *rects; - int i; - HRGN gdi_region; - - /* Create a GDI region for the cairo region */ - - _cairo_region_get_extents (region, &extents); - status = _cairo_region_get_boxes (region, &num_boxes, &boxes); - if (status) - return status; - - if (num_boxes == 1 && - boxes[0].p1.x == 0 && - boxes[0].p1.y == 0 && - boxes[0].p2.x == surface->extents.width && - boxes[0].p2.y == surface->extents.height) - { - gdi_region = NULL; - - SelectClipRgn (surface->dc, NULL); - IntersectClipRect (surface->dc, - boxes[0].p1.x, - boxes[0].p1.y, - boxes[0].p2.x, - boxes[0].p2.y); - - _cairo_region_boxes_fini (region, boxes); - } else { - /* XXX see notes in _cairo_win32_save_initial_clip -- - * this code will interact badly with a HDC which had an initial - * world transform -- we should probably manually transform the - * region rects, because SelectClipRgn takes device units, not - * logical units (unlike IntersectClipRect). - */ - - data_size = sizeof (RGNDATAHEADER) + num_boxes * sizeof (RECT); - data = malloc (data_size); - if (!data) { - _cairo_region_boxes_fini (region, boxes); - return _cairo_error(CAIRO_STATUS_NO_MEMORY); - } - rects = (RECT *)data->Buffer; - - data->rdh.dwSize = sizeof (RGNDATAHEADER); - data->rdh.iType = RDH_RECTANGLES; - data->rdh.nCount = num_boxes; - data->rdh.nRgnSize = num_boxes * sizeof (RECT); - data->rdh.rcBound.left = extents.x; - data->rdh.rcBound.top = extents.y; - data->rdh.rcBound.right = extents.x + extents.width; - data->rdh.rcBound.bottom = extents.y + extents.height; - - for (i = 0; i < num_boxes; i++) { - rects[i].left = boxes[i].p1.x; - rects[i].top = boxes[i].p1.y; - rects[i].right = boxes[i].p2.x; - rects[i].bottom = boxes[i].p2.y; - } - - _cairo_region_boxes_fini (region, boxes); - - gdi_region = ExtCreateRegion (NULL, data_size, data); - free (data); - - if (!gdi_region) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - /* AND the new region into our DC */ - if (ExtSelectClipRgn (surface->dc, gdi_region, RGN_AND) == ERROR) - status = _cairo_win32_print_gdi_error ("_cairo_win32_surface_set_clip_region"); - - DeleteObject (gdi_region); - } - } - - return status; -} - -cairo_int_status_t -_cairo_win32_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_win32_surface_t *surface = abstract_surface; - - *rectangle = surface->extents; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_win32_surface_flush (void *abstract_surface) -{ - return _cairo_surface_reset_clip (abstract_surface); -} - -#define STACK_GLYPH_SIZE 256 - -cairo_int_status_t -_cairo_win32_surface_show_glyphs (void *surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ -#if CAIRO_HAS_WIN32_FONT - cairo_win32_surface_t *dst = surface; - - WORD glyph_buf_stack[STACK_GLYPH_SIZE]; - WORD *glyph_buf = glyph_buf_stack; - int dxy_buf_stack[2 * STACK_GLYPH_SIZE]; - int *dxy_buf = dxy_buf_stack; - - BOOL win_result = 0; - int i, j; - - cairo_solid_pattern_t *solid_pattern; - COLORREF color; - - cairo_matrix_t device_to_logical; - - int start_x, start_y; - double user_x, user_y; - int logical_x, logical_y; - - /* We can only handle win32 fonts */ - if (cairo_scaled_font_get_type (scaled_font) != CAIRO_FONT_TYPE_WIN32) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* We can only handle opaque solid color sources */ - if (!_cairo_pattern_is_opaque_solid(source)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* We can only handle operator SOURCE or OVER with the destination - * having no alpha */ - if ((op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER) || - (dst->format != CAIRO_FORMAT_RGB24)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* If we have a fallback mask clip set on the dst, we have - * to go through the fallback path, but only if we're not - * doing this for printing */ - if (dst->base.clip && - !(dst->flags & CAIRO_WIN32_SURFACE_FOR_PRINTING) && - (dst->base.clip->mode != CAIRO_CLIP_MODE_REGION || - dst->base.clip->surface != NULL)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - solid_pattern = (cairo_solid_pattern_t *)source; - color = RGB(((int)solid_pattern->color.red_short) >> 8, - ((int)solid_pattern->color.green_short) >> 8, - ((int)solid_pattern->color.blue_short) >> 8); - - cairo_win32_scaled_font_get_device_to_logical(scaled_font, &device_to_logical); - - SaveDC(dst->dc); - - cairo_win32_scaled_font_select_font(scaled_font, dst->dc); - SetTextColor(dst->dc, color); - SetTextAlign(dst->dc, TA_BASELINE | TA_LEFT); - SetBkMode(dst->dc, TRANSPARENT); - - if (num_glyphs > STACK_GLYPH_SIZE) { - glyph_buf = (WORD *) _cairo_malloc_ab (num_glyphs, sizeof(WORD)); - dxy_buf = (int *) _cairo_malloc_abc (num_glyphs, sizeof(int), 2); - } - - /* It is vital that dx values for dxy_buf are calculated from the delta of - * _logical_ x coordinates (not user x coordinates) or else the sum of all - * previous dx values may start to diverge from the current glyph's x - * coordinate due to accumulated rounding error. As a result strings could - * be painted shorter or longer than expected. */ - - user_x = glyphs[0].x; - user_y = glyphs[0].y; - - cairo_matrix_transform_point(&device_to_logical, - &user_x, &user_y); - - logical_x = _cairo_lround (user_x); - logical_y = _cairo_lround (user_y); - - start_x = logical_x; - start_y = logical_y; - - for (i = 0, j = 0; i < num_glyphs; ++i, j = 2 * i) { - glyph_buf[i] = (WORD) glyphs[i].index; - if (i == num_glyphs - 1) { - dxy_buf[j] = 0; - dxy_buf[j+1] = 0; - } else { - double next_user_x = glyphs[i+1].x; - double next_user_y = glyphs[i+1].y; - int next_logical_x, next_logical_y; - - cairo_matrix_transform_point(&device_to_logical, - &next_user_x, &next_user_y); - - next_logical_x = _cairo_lround (next_user_x); - next_logical_y = _cairo_lround (next_user_y); - - dxy_buf[j] = _cairo_lround (next_logical_x - logical_x); - dxy_buf[j+1] = _cairo_lround (next_logical_y - logical_y); - - logical_x = next_logical_x; - logical_y = next_logical_y; - } - } - - win_result = ExtTextOutW(dst->dc, - start_x, - start_y, - ETO_GLYPH_INDEX | ETO_PDY, - NULL, - glyph_buf, - num_glyphs, - dxy_buf); - if (!win_result) { - _cairo_win32_print_gdi_error("_cairo_win32_surface_show_glyphs(ExtTextOutW failed)"); - } - - RestoreDC(dst->dc, -1); - - if (glyph_buf != glyph_buf_stack) { - free(glyph_buf); - free(dxy_buf); - } - return (win_result) ? CAIRO_STATUS_SUCCESS : CAIRO_INT_STATUS_UNSUPPORTED; -#else - return CAIRO_INT_STATUS_UNSUPPORTED; -#endif -} - -#undef STACK_GLYPH_SIZE - -/** - * cairo_win32_surface_create: - * @hdc: the DC to create a surface for - * - * Creates a cairo surface that targets the given DC. The DC will be - * queried for its initial clip extents, and this will be used as the - * size of the cairo surface. The resulting surface will always be of - * format %CAIRO_FORMAT_RGB24; should you need another surface format, - * you will need to create one through - * cairo_win32_surface_create_with_dib(). - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_win32_surface_create (HDC hdc) -{ - cairo_win32_surface_t *surface; - - int depth; - cairo_format_t format; - RECT rect; - - /* Assume that everything coming in as a HDC is RGB24 */ - format = CAIRO_FORMAT_RGB24; - - surface = malloc (sizeof (cairo_win32_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - if (_cairo_win32_save_initial_clip (hdc, surface) != CAIRO_STATUS_SUCCESS) { - free (surface); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - surface->image = NULL; - surface->format = format; - - surface->dc = hdc; - surface->bitmap = NULL; - surface->is_dib = FALSE; - surface->saved_dc_bitmap = NULL; - surface->brush = NULL; - surface->old_brush = NULL; - - GetClipBox(hdc, &rect); - surface->extents.x = rect.left; - surface->extents.y = rect.top; - surface->extents.width = rect.right - rect.left; - surface->extents.height = rect.bottom - rect.top; - - surface->flags = _cairo_win32_flags_for_dc (surface->dc); - - _cairo_surface_init (&surface->base, &cairo_win32_surface_backend, - _cairo_content_from_format (format)); - - return (cairo_surface_t *)surface; -} - -/** - * cairo_win32_surface_create_with_dib: - * @format: format of pixels in the surface to create - * @width: width of the surface, in pixels - * @height: height of the surface, in pixels - * - * Creates a device-independent-bitmap surface not associated with - * any particular existing surface or device context. The created - * bitmap will be uninitialized. - * - * Return value: the newly created surface - * - * Since: 1.2 - **/ -cairo_surface_t * -cairo_win32_surface_create_with_dib (cairo_format_t format, - int width, - int height) -{ - return _cairo_win32_surface_create_for_dc (NULL, format, width, height); -} - -/** - * cairo_win32_surface_create_with_ddb: - * @hdc: the DC to create a surface for - * @format: format of pixels in the surface to create - * @width: width of the surface, in pixels - * @height: height of the surface, in pixels - * - * Creates a device-independent-bitmap surface not associated with - * any particular existing surface or device context. The created - * bitmap will be uninitialized. - * - * Return value: the newly created surface - * - * Since: 1.4 - **/ -cairo_surface_t * -cairo_win32_surface_create_with_ddb (HDC hdc, - cairo_format_t format, - int width, - int height) -{ - cairo_win32_surface_t *new_surf; - HBITMAP ddb; - HDC screen_dc, ddb_dc; - HBITMAP saved_dc_bitmap; - - if (format != CAIRO_FORMAT_RGB24) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); -/* XXX handle these eventually - format != CAIRO_FORMAT_A8 || - format != CAIRO_FORMAT_A1) -*/ - - if (!hdc) { - screen_dc = GetDC (NULL); - hdc = screen_dc; - } else { - screen_dc = NULL; - } - - ddb_dc = CreateCompatibleDC (hdc); - if (ddb_dc == NULL) { - _cairo_win32_print_gdi_error("CreateCompatibleDC"); - new_surf = (cairo_win32_surface_t*) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - goto FINISH; - } - - ddb = CreateCompatibleBitmap (hdc, width, height); - if (ddb == NULL) { - DeleteDC (ddb_dc); - - /* Note that if an app actually does hit this out of memory - * condition, it's going to have lots of other issues, as - * video memory is probably exhausted. - */ - _cairo_win32_print_gdi_error("CreateCompatibleBitmap"); - new_surf = (cairo_win32_surface_t*) _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - goto FINISH; - } - - saved_dc_bitmap = SelectObject (ddb_dc, ddb); - - new_surf = (cairo_win32_surface_t*) cairo_win32_surface_create (ddb_dc); - new_surf->bitmap = ddb; - new_surf->saved_dc_bitmap = saved_dc_bitmap; - new_surf->is_dib = FALSE; - -FINISH: - if (screen_dc) - ReleaseDC (NULL, screen_dc); - - return (cairo_surface_t*) new_surf; -} - -/** - * _cairo_surface_is_win32: - * @surface: a #cairo_surface_t - * - * Checks if a surface is a win32 surface. This will - * return False if this is a win32 printing surface; use - * _cairo_surface_is_win32_printing() to check for that. - * - * Return value: True if the surface is an win32 surface - **/ -int -_cairo_surface_is_win32 (cairo_surface_t *surface) -{ - return surface->backend == &cairo_win32_surface_backend; -} - -/** - * cairo_win32_surface_get_dc - * @surface: a #cairo_surface_t - * - * Returns the HDC associated with this surface, or %NULL if none. - * Also returns %NULL if the surface is not a win32 surface. - * - * Return value: HDC or %NULL if no HDC available. - * - * Since: 1.2 - **/ -HDC -cairo_win32_surface_get_dc (cairo_surface_t *surface) -{ - cairo_win32_surface_t *winsurf; - - if (!_cairo_surface_is_win32(surface) && - !_cairo_surface_is_win32_printing(surface)) - return NULL; - - winsurf = (cairo_win32_surface_t *) surface; - - return winsurf->dc; -} - -/** - * cairo_win32_surface_get_image - * @surface: a #cairo_surface_t - * - * Returns a #cairo_surface_t image surface that refers to the same bits - * as the DIB of the Win32 surface. If the passed-in win32 surface - * is not a DIB surface, %NULL is returned. - * - * Return value: a #cairo_surface_t (owned by the win32 #cairo_surface_t), - * or %NULL if the win32 surface is not a DIB. - * - * Since: 1.4 - */ -cairo_surface_t * -cairo_win32_surface_get_image (cairo_surface_t *surface) -{ - if (!_cairo_surface_is_win32(surface)) - return NULL; - - return ((cairo_win32_surface_t*)surface)->image; -} - -static cairo_bool_t -_cairo_win32_surface_is_similar (void *surface_a, - void *surface_b, - cairo_content_t content) -{ - cairo_win32_surface_t *a = surface_a; - cairo_win32_surface_t *b = surface_b; - - return a->dc == b->dc; -} - -static cairo_status_t -_cairo_win32_surface_reset (void *abstract_surface) -{ - cairo_win32_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _cairo_win32_surface_set_clip_region (surface, NULL); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static const cairo_surface_backend_t cairo_win32_surface_backend = { - CAIRO_SURFACE_TYPE_WIN32, - _cairo_win32_surface_create_similar, - _cairo_win32_surface_finish, - _cairo_win32_surface_acquire_source_image, - _cairo_win32_surface_release_source_image, - _cairo_win32_surface_acquire_dest_image, - _cairo_win32_surface_release_dest_image, - _cairo_win32_surface_clone_similar, - _cairo_win32_surface_composite, - _cairo_win32_surface_fill_rectangles, - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - _cairo_win32_surface_set_clip_region, - NULL, /* intersect_clip_path */ - _cairo_win32_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - _cairo_win32_surface_flush, - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - _cairo_win32_surface_show_glyphs, - - NULL, /* snapshot */ - _cairo_win32_surface_is_similar, - - _cairo_win32_surface_reset -}; - -/* Notes: - * - * Win32 alpha-understanding functions - * - * BitBlt - will copy full 32 bits from a 32bpp DIB to result - * (so it's safe to use for ARGB32->ARGB32 SOURCE blits) - * (but not safe going RGB24->ARGB32, if RGB24 is also represented - * as a 32bpp DIB, since the alpha isn't discarded!) - * - * AlphaBlend - if both the source and dest have alpha, even if AC_SRC_ALPHA isn't set, - * it will still copy over the src alpha, because the SCA value (255) will be - * multiplied by all the src components. - */ - - -#if !defined(CAIRO_WIN32_STATIC_BUILD) - -/* declare to avoid "no previous prototype for 'DllMain'" warning */ -BOOL WINAPI -DllMain (HINSTANCE hinstDLL, - DWORD fdwReason, - LPVOID lpvReserved); - -BOOL WINAPI -DllMain (HINSTANCE hinstDLL, - DWORD fdwReason, - LPVOID lpvReserved) -{ - switch (fdwReason) { - case DLL_PROCESS_ATTACH: - CAIRO_MUTEX_INITIALIZE (); - break; - - case DLL_PROCESS_DETACH: - CAIRO_MUTEX_FINALIZE (); - break; - } - - return TRUE; -} - -#endif - -cairo_int_status_t -_cairo_win32_save_initial_clip (HDC hdc, cairo_win32_surface_t *surface) -{ - RECT rect; - int clipBoxType; - int gm; - XFORM saved_xform; - - /* GetClipBox/GetClipRgn and friends interact badly with a world transform - * set. GetClipBox returns values in logical (transformed) coordinates; - * it's unclear what GetClipRgn returns, because the region is empty in the - * case of a SIMPLEREGION clip, but I assume device (untransformed) coordinates. - * Similarily, IntersectClipRect works in logical units, whereas SelectClipRgn - * works in device units. - * - * So, avoid the whole mess and get rid of the world transform - * while we store our initial data and when we restore initial coordinates. - * - * XXX we may need to modify x/y by the ViewportOrg or WindowOrg - * here in GM_COMPATIBLE; unclear. - */ - gm = GetGraphicsMode (hdc); - if (gm == GM_ADVANCED) { - GetWorldTransform (hdc, &saved_xform); - ModifyWorldTransform (hdc, NULL, MWT_IDENTITY); - } - - clipBoxType = GetClipBox (hdc, &rect); - if (clipBoxType == ERROR) { - _cairo_win32_print_gdi_error ("cairo_win32_surface_create"); - SetGraphicsMode (hdc, gm); - /* XXX: Can we make a more reasonable guess at the error cause here? */ - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - surface->clip_rect.x = rect.left; - surface->clip_rect.y = rect.top; - surface->clip_rect.width = rect.right - rect.left; - surface->clip_rect.height = rect.bottom - rect.top; - - surface->initial_clip_rgn = NULL; - surface->had_simple_clip = FALSE; - - if (clipBoxType == COMPLEXREGION) { - surface->initial_clip_rgn = CreateRectRgn (0, 0, 0, 0); - if (GetClipRgn (hdc, surface->initial_clip_rgn) <= 0) { - DeleteObject(surface->initial_clip_rgn); - surface->initial_clip_rgn = NULL; - } - } else if (clipBoxType == SIMPLEREGION) { - surface->had_simple_clip = TRUE; - } - - if (gm == GM_ADVANCED) - SetWorldTransform (hdc, &saved_xform); - - return CAIRO_STATUS_SUCCESS; -} - -cairo_int_status_t -_cairo_win32_restore_initial_clip (cairo_win32_surface_t *surface) -{ - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - - XFORM saved_xform; - int gm = GetGraphicsMode (surface->dc); - if (gm == GM_ADVANCED) { - GetWorldTransform (surface->dc, &saved_xform); - ModifyWorldTransform (surface->dc, NULL, MWT_IDENTITY); - } - - /* initial_clip_rgn will either be a real region or NULL (which means reset to no clip region) */ - SelectClipRgn (surface->dc, surface->initial_clip_rgn); - - if (surface->had_simple_clip) { - /* then if we had a simple clip, intersect */ - IntersectClipRect (surface->dc, - surface->clip_rect.x, - surface->clip_rect.y, - surface->clip_rect.x + surface->clip_rect.width, - surface->clip_rect.y + surface->clip_rect.height); - } - - if (gm == GM_ADVANCED) - SetWorldTransform (surface->dc, &saved_xform); - - return status; -} - -void -_cairo_win32_debug_dump_hrgn (HRGN rgn, char *header) -{ - RGNDATA *rd; - int z; - - if (header) - fprintf (stderr, "%s\n", header); - - if (rgn == NULL) { - fprintf (stderr, " NULL\n"); - } - - z = GetRegionData(rgn, 0, NULL); - rd = (RGNDATA*) malloc(z); - z = GetRegionData(rgn, z, rd); - - fprintf (stderr, " %d rects, bounds: %d %d %d %d\n", rd->rdh.nCount, rd->rdh.rcBound.left, rd->rdh.rcBound.top, rd->rdh.rcBound.right - rd->rdh.rcBound.left, rd->rdh.rcBound.bottom - rd->rdh.rcBound.top); - - for (z = 0; z < rd->rdh.nCount; z++) { - RECT r = ((RECT*)rd->Buffer)[z]; - fprintf (stderr, " [%d]: [%d %d %d %d]\n", z, r.left, r.top, r.right - r.left, r.bottom - r.top); - } - - free(rd); - fflush (stderr); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xcb.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xcb.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xcb.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xcb.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_XCB_H -#define CAIRO_XCB_H - -#include - -#if CAIRO_HAS_XCB_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_xcb_surface_create (xcb_connection_t *c, - xcb_drawable_t drawable, - xcb_visualtype_t *visual, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_xcb_surface_create_for_bitmap (xcb_connection_t *c, - xcb_pixmap_t bitmap, - xcb_screen_t *screen, - int width, - int height); - -cairo_public void -cairo_xcb_surface_set_size (cairo_surface_t *surface, - int width, - int height); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_XCB_SURFACE */ -# error Cairo was not compiled with support for the xcb backend -#endif /* CAIRO_HAS_XCB_SURFACE */ - -#endif /* CAIRO_XCB_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xcb-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xcb-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xcb-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xcb-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2502 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" -#include "cairo-xcb.h" -#include "cairo-xcb-xrender.h" -#include "cairo-clip-private.h" -#include - -#define AllPlanes ((unsigned long)~0L) - -slim_hidden_proto (cairo_xcb_surface_create_with_xrender_format); - -/* - * Instead of taking two round trips for each blending request, - * assume that if a particular drawable fails GetImage that it will - * fail for a "while"; use temporary pixmaps to avoid the errors - */ - -#define CAIRO_ASSUME_PIXMAP 20 - -typedef struct cairo_xcb_surface { - cairo_surface_t base; - - xcb_connection_t *dpy; - xcb_screen_t *screen; - - xcb_gcontext_t gc; - xcb_drawable_t drawable; - cairo_bool_t owns_pixmap; - xcb_visualtype_t *visual; - - int use_pixmap; - - int render_major; - int render_minor; - - int width; - int height; - int depth; - - cairo_bool_t have_clip_rects; - xcb_rectangle_t *clip_rects; - int num_clip_rects; - - xcb_render_picture_t src_picture, dst_picture; - xcb_render_pictforminfo_t xrender_format; -} cairo_xcb_surface_t; - -#define CAIRO_SURFACE_RENDER_AT_LEAST(surface, major, minor) \ - (((surface)->render_major > major) || \ - (((surface)->render_major == major) && ((surface)->render_minor >= minor))) - -#define CAIRO_SURFACE_RENDER_HAS_CREATE_PICTURE(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 0) -#define CAIRO_SURFACE_RENDER_HAS_COMPOSITE(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 0) -#define CAIRO_SURFACE_RENDER_HAS_COMPOSITE_TEXT(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 0) - -#define CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLE(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 1) -#define CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLES(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 1) - -#define CAIRO_SURFACE_RENDER_HAS_DISJOINT(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 2) -#define CAIRO_SURFACE_RENDER_HAS_CONJOINT(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 2) - -#define CAIRO_SURFACE_RENDER_HAS_TRAPEZOIDS(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) -#define CAIRO_SURFACE_RENDER_HAS_TRIANGLES(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) -#define CAIRO_SURFACE_RENDER_HAS_TRISTRIP(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) -#define CAIRO_SURFACE_RENDER_HAS_TRIFAN(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) - -#define CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) -#define CAIRO_SURFACE_RENDER_HAS_FILTERS(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) - -static void -_cairo_xcb_surface_ensure_gc (cairo_xcb_surface_t *surface); - -static int -_CAIRO_FORMAT_DEPTH (cairo_format_t format) -{ - switch (format) { - case CAIRO_FORMAT_A1: - return 1; - case CAIRO_FORMAT_A8: - return 8; - case CAIRO_FORMAT_RGB24: - return 24; - case CAIRO_FORMAT_ARGB32: - default: - return 32; - } -} - -static xcb_render_pictforminfo_t * -_CAIRO_FORMAT_TO_XRENDER_FORMAT(xcb_connection_t *dpy, cairo_format_t format) -{ - xcb_pict_standard_t std_format; - switch (format) { - case CAIRO_FORMAT_A1: - std_format = XCB_PICT_STANDARD_A_1; break; - case CAIRO_FORMAT_A8: - std_format = XCB_PICT_STANDARD_A_8; break; - case CAIRO_FORMAT_RGB24: - std_format = XCB_PICT_STANDARD_RGB_24; break; - case CAIRO_FORMAT_ARGB32: - default: - std_format = XCB_PICT_STANDARD_ARGB_32; break; - } - return xcb_render_util_find_standard_format (xcb_render_util_query_formats (dpy), std_format); -} - -static cairo_content_t -_xcb_render_format_to_content (xcb_render_pictforminfo_t *xrender_format) -{ - cairo_bool_t xrender_format_has_alpha; - cairo_bool_t xrender_format_has_color; - - /* This only happens when using a non-Render server. Let's punt - * and say there's no alpha here. */ - if (xrender_format == NULL) - return CAIRO_CONTENT_COLOR; - - xrender_format_has_alpha = (xrender_format->direct.alpha_mask != 0); - xrender_format_has_color = (xrender_format->direct.red_mask != 0 || - xrender_format->direct.green_mask != 0 || - xrender_format->direct.blue_mask != 0); - - if (xrender_format_has_alpha) - if (xrender_format_has_color) - return CAIRO_CONTENT_COLOR_ALPHA; - else - return CAIRO_CONTENT_ALPHA; - else - return CAIRO_CONTENT_COLOR; -} - -static cairo_surface_t * -_cairo_xcb_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - cairo_xcb_surface_t *src = abstract_src; - xcb_connection_t *dpy = src->dpy; - xcb_pixmap_t pixmap; - cairo_xcb_surface_t *surface; - cairo_format_t format = _cairo_format_from_content (content); - xcb_render_pictforminfo_t *xrender_format; - - /* As a good first approximation, if the display doesn't have COMPOSITE, - * we're better off using image surfaces for all temporary operations - */ - if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE (src)) { - return cairo_image_surface_create (format, width, height); - } - - pixmap = xcb_generate_id (dpy); - xcb_create_pixmap (dpy, _CAIRO_FORMAT_DEPTH (format), - pixmap, src->drawable, - width <= 0 ? 1 : width, - height <= 0 ? 1 : height); - - xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT (dpy, format); - /* XXX: what to do if xrender_format is null? */ - surface = (cairo_xcb_surface_t *) - cairo_xcb_surface_create_with_xrender_format (dpy, pixmap, src->screen, - xrender_format, - width, height); - if (surface->base.status) - return surface; - - surface->owns_pixmap = TRUE; - - return &surface->base; -} - -static cairo_status_t -_cairo_xcb_surface_finish (void *abstract_surface) -{ - cairo_xcb_surface_t *surface = abstract_surface; - if (surface->dst_picture != XCB_NONE) - xcb_render_free_picture (surface->dpy, surface->dst_picture); - - if (surface->src_picture != XCB_NONE) - xcb_render_free_picture (surface->dpy, surface->src_picture); - - if (surface->owns_pixmap) - xcb_free_pixmap (surface->dpy, surface->drawable); - - if (surface->gc != XCB_NONE) - xcb_free_gc (surface->dpy, surface->gc); - - free (surface->clip_rects); - - surface->dpy = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static int -_bits_per_pixel(xcb_connection_t *c, int depth) -{ - xcb_format_t *fmt = xcb_setup_pixmap_formats(xcb_get_setup(c)); - xcb_format_t *fmtend = fmt + xcb_setup_pixmap_formats_length(xcb_get_setup(c)); - - for(; fmt != fmtend; ++fmt) - if(fmt->depth == depth) - return fmt->bits_per_pixel; - - if(depth <= 4) - return 4; - if(depth <= 8) - return 8; - if(depth <= 16) - return 16; - return 32; -} - -static int -_bytes_per_line(xcb_connection_t *c, int width, int bpp) -{ - int bitmap_pad = xcb_get_setup(c)->bitmap_format_scanline_pad; - return ((bpp * width + bitmap_pad - 1) & -bitmap_pad) >> 3; -} - -static cairo_bool_t -_CAIRO_MASK_FORMAT (cairo_format_masks_t *masks, cairo_format_t *format) -{ - switch (masks->bpp) { - case 32: - if (masks->alpha_mask == 0xff000000 && - masks->red_mask == 0x00ff0000 && - masks->green_mask == 0x0000ff00 && - masks->blue_mask == 0x000000ff) - { - *format = CAIRO_FORMAT_ARGB32; - return TRUE; - } - if (masks->alpha_mask == 0x00000000 && - masks->red_mask == 0x00ff0000 && - masks->green_mask == 0x0000ff00 && - masks->blue_mask == 0x000000ff) - { - *format = CAIRO_FORMAT_RGB24; - return TRUE; - } - break; - case 8: - if (masks->alpha_mask == 0xff) - { - *format = CAIRO_FORMAT_A8; - return TRUE; - } - break; - case 1: - if (masks->alpha_mask == 0x1) - { - *format = CAIRO_FORMAT_A1; - return TRUE; - } - break; - } - return FALSE; -} - -static cairo_status_t -_get_image_surface (cairo_xcb_surface_t *surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect) -{ - cairo_image_surface_t *image; - xcb_get_image_reply_t *imagerep; - int bpp, bytes_per_line; - short x1, y1, x2, y2; - unsigned char *data; - cairo_format_masks_t masks; - cairo_format_t format; - - x1 = 0; - y1 = 0; - x2 = surface->width; - y2 = surface->height; - - if (interest_rect) { - cairo_rectangle_int_t rect; - - rect.x = interest_rect->x; - rect.y = interest_rect->y; - rect.width = interest_rect->width; - rect.height = interest_rect->height; - - if (rect.x > x1) - x1 = rect.x; - if (rect.y > y1) - y1 = rect.y; - if (rect.x + rect.width < x2) - x2 = rect.x + rect.width; - if (rect.y + rect.height < y2) - y2 = rect.y + rect.height; - - if (x1 >= x2 || y1 >= y2) { - *image_out = NULL; - return CAIRO_STATUS_SUCCESS; - } - } - - if (image_rect) { - image_rect->x = x1; - image_rect->y = y1; - image_rect->width = x2 - x1; - image_rect->height = y2 - y1; - } - - /* XXX: This should try to use the XShm extension if available */ - - if (surface->use_pixmap == 0) - { - xcb_generic_error_t *error; - imagerep = xcb_get_image_reply(surface->dpy, - xcb_get_image(surface->dpy, XCB_IMAGE_FORMAT_Z_PIXMAP, - surface->drawable, - x1, y1, - x2 - x1, y2 - y1, - AllPlanes), &error); - - /* If we get an error, the surface must have been a window, - * so retry with the safe code path. - */ - if (error) - surface->use_pixmap = CAIRO_ASSUME_PIXMAP; - } - else - { - surface->use_pixmap--; - imagerep = NULL; - } - - if (!imagerep) - { - /* xcb_get_image_t from a window is dangerous because it can - * produce errors if the window is unmapped or partially - * outside the screen. We could check for errors and - * retry, but to keep things simple, we just create a - * temporary pixmap - */ - xcb_pixmap_t pixmap; - pixmap = xcb_generate_id (surface->dpy); - xcb_create_pixmap (surface->dpy, - surface->depth, - pixmap, - surface->drawable, - x2 - x1, y2 - y1); - _cairo_xcb_surface_ensure_gc (surface); - - xcb_copy_area (surface->dpy, surface->drawable, pixmap, surface->gc, - x1, y1, 0, 0, x2 - x1, y2 - y1); - - imagerep = xcb_get_image_reply(surface->dpy, - xcb_get_image(surface->dpy, XCB_IMAGE_FORMAT_Z_PIXMAP, - pixmap, - x1, y1, - x2 - x1, y2 - y1, - AllPlanes), 0); - xcb_free_pixmap (surface->dpy, pixmap); - - } - if (!imagerep) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - bpp = _bits_per_pixel(surface->dpy, imagerep->depth); - bytes_per_line = _bytes_per_line(surface->dpy, surface->width, bpp); - - data = _cairo_malloc_ab (surface->height, bytes_per_line); - if (data == NULL) { - free (imagerep); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - memcpy (data, xcb_get_image_data (imagerep), bytes_per_line * surface->height); - free (imagerep); - - /* - * Compute the pixel format masks from either an xcb_visualtype_t or - * a xcb_render_pctforminfo_t, failing we assume the drawable is an - * alpha-only pixmap as it could only have been created that way - * through the cairo_xlib_surface_create_for_bitmap function. - */ - if (surface->visual) { - masks.bpp = bpp; - masks.alpha_mask = 0; - masks.red_mask = surface->visual->red_mask; - masks.green_mask = surface->visual->green_mask; - masks.blue_mask = surface->visual->blue_mask; - } else if (surface->xrender_format.id != XCB_NONE) { - masks.bpp = bpp; - masks.red_mask = (unsigned long)surface->xrender_format.direct.red_mask << surface->xrender_format.direct.red_shift; - masks.green_mask = (unsigned long)surface->xrender_format.direct.green_mask << surface->xrender_format.direct.green_shift; - masks.blue_mask = (unsigned long)surface->xrender_format.direct.blue_mask << surface->xrender_format.direct.blue_shift; - masks.alpha_mask = (unsigned long)surface->xrender_format.direct.alpha_mask << surface->xrender_format.direct.alpha_shift; - } else { - masks.bpp = bpp; - masks.red_mask = 0; - masks.green_mask = 0; - masks.blue_mask = 0; - if (surface->depth < 32) - masks.alpha_mask = (1 << surface->depth) - 1; - else - masks.alpha_mask = 0xffffffff; - } - - /* - * Prefer to use a standard pixman format instead of the - * general masks case. - */ - if (_CAIRO_MASK_FORMAT (&masks, &format)) { - image = (cairo_image_surface_t *) - cairo_image_surface_create_for_data (data, - format, - x2 - x1, - y2 - y1, - bytes_per_line); - if (image->base.status) - goto FAIL; - } else { - /* - * XXX This can't work. We must convert the data to one of the - * supported pixman formats. Pixman needs another function - * which takes data in an arbitrary format and converts it - * to something supported by that library. - */ - image = (cairo_image_surface_t *) - _cairo_image_surface_create_with_masks (data, - &masks, - x2 - x1, - y2 - y1, - bytes_per_line); - if (image->base.status) - goto FAIL; - } - - /* Let the surface take ownership of the data */ - _cairo_image_surface_assume_ownership_of_data (image); - - *image_out = image; - return CAIRO_STATUS_SUCCESS; - - FAIL: - free (data); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); -} - -static void -_cairo_xcb_surface_ensure_src_picture (cairo_xcb_surface_t *surface) -{ - if (!surface->src_picture) { - surface->src_picture = xcb_generate_id(surface->dpy); - xcb_render_create_picture (surface->dpy, - surface->src_picture, - surface->drawable, - surface->xrender_format.id, - 0, NULL); - } -} - -static void -_cairo_xcb_surface_set_picture_clip_rects (cairo_xcb_surface_t *surface) -{ - if (surface->have_clip_rects) - xcb_render_set_picture_clip_rectangles (surface->dpy, surface->dst_picture, - 0, 0, - surface->num_clip_rects, - surface->clip_rects); -} - -static void -_cairo_xcb_surface_set_gc_clip_rects (cairo_xcb_surface_t *surface) -{ - if (surface->have_clip_rects) - xcb_set_clip_rectangles(surface->dpy, XCB_CLIP_ORDERING_YX_SORTED, surface->gc, - 0, 0, - surface->num_clip_rects, - surface->clip_rects ); -} - -static void -_cairo_xcb_surface_ensure_dst_picture (cairo_xcb_surface_t *surface) -{ - if (!surface->dst_picture) { - surface->dst_picture = xcb_generate_id(surface->dpy); - xcb_render_create_picture (surface->dpy, - surface->dst_picture, - surface->drawable, - surface->xrender_format.id, - 0, NULL); - _cairo_xcb_surface_set_picture_clip_rects (surface); - } - -} - -static void -_cairo_xcb_surface_ensure_gc (cairo_xcb_surface_t *surface) -{ - if (surface->gc) - return; - - surface->gc = xcb_generate_id(surface->dpy); - xcb_create_gc (surface->dpy, surface->gc, surface->drawable, 0, 0); - _cairo_xcb_surface_set_gc_clip_rects(surface); -} - -static cairo_status_t -_draw_image_surface (cairo_xcb_surface_t *surface, - cairo_image_surface_t *image, - int src_x, - int src_y, - int width, - int height, - int dst_x, - int dst_y) -{ - int bpp, bpl; - uint32_t data_len; - uint8_t *data, left_pad=0; - - /* equivalent of XPutImage(..., src_x,src_y, dst_x,dst_y, width,height); */ - /* XXX: assumes image and surface formats and depths are the same */ - /* XXX: assumes depth is a multiple of 8 (not bitmap) */ - - /* fit src_{x,y,width,height} within image->{0,0,width,height} */ - if (src_x < 0) { - width += src_x; - src_x = 0; - } - if (src_y < 0) { - height += src_y; - src_y = 0; - } - if (width + src_x > image->width) - width = image->width - src_x; - if (height + src_y > image->height) - height = image->height - src_y; - if (width <= 0 || height <= 0) - return CAIRO_STATUS_SUCCESS; - - bpp = _bits_per_pixel(surface->dpy, image->depth); - /* XXX: could use bpl = image->stride? */ - bpl = _bytes_per_line(surface->dpy, image->width, bpp); - - if (src_x == 0 && width == image->width) { - /* can work in-place */ - data_len = height * bpl; - data = image->data + src_y * bpl; - } else { - /* must copy {src_x,src_y,width,height} into new data */ - int line = 0; - uint8_t *data_line, *image_line; - int data_bpl = _bytes_per_line(surface->dpy, width, bpp); - data_len = height * data_bpl; - data_line = data = malloc(data_len); - if (data == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - image_line = image->data + src_y * bpl + (src_x * bpp / 8); - while (line++ < height) { - memcpy(data_line, image_line, data_bpl); - data_line += data_bpl; - image_line += bpl; - } - } - _cairo_xcb_surface_ensure_gc (surface); - xcb_put_image (surface->dpy, XCB_IMAGE_FORMAT_Z_PIXMAP, - surface->drawable, surface->gc, - width, height, - dst_x, dst_y, - left_pad, image->depth, - data_len, data); - - if (data < image->data || data >= image->data + image->height * bpl) - free(data); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xcb_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_xcb_surface_t *surface = abstract_surface; - cairo_image_surface_t *image; - cairo_status_t status; - - status = _get_image_surface (surface, NULL, &image, NULL); - if (status) - return status; - - *image_out = image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xcb_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_cairo_xcb_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra) -{ - cairo_xcb_surface_t *surface = abstract_surface; - cairo_image_surface_t *image; - cairo_status_t status; - - status = _get_image_surface (surface, interest_rect, &image, image_rect_out); - if (status) - return status; - - *image_out = image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xcb_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - cairo_xcb_surface_t *surface = abstract_surface; - - /* ignore errors */ - _draw_image_surface (surface, image, 0, 0, image->width, image->height, - image_rect->x, image_rect->y); - - cairo_surface_destroy (&image->base); -} - -/* - * Return whether two xcb surfaces share the same - * screen. Both core and Render drawing require this - * when using multiple drawables in an operation. - */ -static cairo_bool_t -_cairo_xcb_surface_same_screen (cairo_xcb_surface_t *dst, - cairo_xcb_surface_t *src) -{ - return dst->dpy == src->dpy && dst->screen == src->screen; -} - -static cairo_status_t -_cairo_xcb_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_xcb_surface_t *surface = abstract_surface; - cairo_xcb_surface_t *clone; - - if (src->backend == surface->base.backend ) { - cairo_xcb_surface_t *xcb_src = (cairo_xcb_surface_t *)src; - - if (_cairo_xcb_surface_same_screen(surface, xcb_src)) { - *clone_out = cairo_surface_reference (src); - - return CAIRO_STATUS_SUCCESS; - } - } else if (_cairo_surface_is_image (src)) { - cairo_image_surface_t *image_src = (cairo_image_surface_t *)src; - cairo_content_t content = _cairo_content_from_format (image_src->format); - - if (surface->base.status) - return surface->base.status; - - clone = (cairo_xcb_surface_t *) - _cairo_xcb_surface_create_similar (surface, content, - image_src->width, image_src->height); - if (clone->base.status) - return clone->base.status; - - _draw_image_surface (clone, image_src, src_x, src_y, - width, height, src_x, src_y); - - *clone_out = &clone->base; - - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_status_t -_cairo_xcb_surface_set_matrix (cairo_xcb_surface_t *surface, - cairo_matrix_t *matrix) -{ - xcb_render_transform_t xtransform; - - if (!surface->src_picture) - return CAIRO_STATUS_SUCCESS; - - xtransform.matrix11 = _cairo_fixed_16_16_from_double (matrix->xx); - xtransform.matrix12 = _cairo_fixed_16_16_from_double (matrix->xy); - xtransform.matrix13 = _cairo_fixed_16_16_from_double (matrix->x0); - - xtransform.matrix21 = _cairo_fixed_16_16_from_double (matrix->yx); - xtransform.matrix22 = _cairo_fixed_16_16_from_double (matrix->yy); - xtransform.matrix23 = _cairo_fixed_16_16_from_double (matrix->y0); - - xtransform.matrix31 = 0; - xtransform.matrix32 = 0; - xtransform.matrix33 = 1 << 16; - - if (!CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM (surface)) - { - static const xcb_render_transform_t identity = { - 1 << 16, 0x00000, 0x00000, - 0x00000, 1 << 16, 0x00000, - 0x00000, 0x00000, 1 << 16 - }; - - if (memcmp (&xtransform, &identity, sizeof (xcb_render_transform_t)) == 0) - return CAIRO_STATUS_SUCCESS; - - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - xcb_render_set_picture_transform (surface->dpy, surface->src_picture, xtransform); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xcb_surface_set_filter (cairo_xcb_surface_t *surface, - cairo_filter_t filter) -{ - const char *render_filter; - - if (!surface->src_picture) - return CAIRO_STATUS_SUCCESS; - - if (!CAIRO_SURFACE_RENDER_HAS_FILTERS (surface)) - { - if (filter == CAIRO_FILTER_FAST || filter == CAIRO_FILTER_NEAREST) - return CAIRO_STATUS_SUCCESS; - - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - switch (filter) { - case CAIRO_FILTER_FAST: - render_filter = "fast"; - break; - case CAIRO_FILTER_GOOD: - render_filter = "good"; - break; - case CAIRO_FILTER_BEST: - render_filter = "best"; - break; - case CAIRO_FILTER_NEAREST: - render_filter = "nearest"; - break; - case CAIRO_FILTER_BILINEAR: - render_filter = "bilinear"; - break; - case CAIRO_FILTER_GAUSSIAN: - default: - render_filter = "best"; - break; - } - - xcb_render_set_picture_filter(surface->dpy, surface->src_picture, - strlen(render_filter), render_filter, 0, NULL); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xcb_surface_set_repeat (cairo_xcb_surface_t *surface, int repeat) -{ - uint32_t mask = XCB_RENDER_CP_REPEAT; - uint32_t pa[] = { repeat }; - - if (!surface->src_picture) - return CAIRO_STATUS_SUCCESS; - - xcb_render_change_picture (surface->dpy, surface->src_picture, mask, pa); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_xcb_surface_set_attributes (cairo_xcb_surface_t *surface, - cairo_surface_attributes_t *attributes) -{ - cairo_int_status_t status; - - _cairo_xcb_surface_ensure_src_picture (surface); - - status = _cairo_xcb_surface_set_matrix (surface, &attributes->matrix); - if (status) - return status; - - switch (attributes->extend) { - case CAIRO_EXTEND_NONE: - _cairo_xcb_surface_set_repeat (surface, 0); - break; - case CAIRO_EXTEND_REPEAT: - _cairo_xcb_surface_set_repeat (surface, 1); - break; - case CAIRO_EXTEND_REFLECT: - case CAIRO_EXTEND_PAD: - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - status = _cairo_xcb_surface_set_filter (surface, attributes->filter); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -/* Checks whether we can can directly draw from src to dst with - * the core protocol: either with CopyArea or using src as a - * a tile in a GC. - */ -static cairo_bool_t -_surfaces_compatible (cairo_xcb_surface_t *dst, - cairo_xcb_surface_t *src) -{ - /* same screen */ - if (!_cairo_xcb_surface_same_screen (dst, src)) - return FALSE; - - /* same depth (for core) */ - if (src->depth != dst->depth) - return FALSE; - - /* if Render is supported, match picture formats */ - if (src->xrender_format.id != XCB_NONE && src->xrender_format.id == dst->xrender_format.id) - return TRUE; - - /* Without Render, match visuals instead */ - if (src->visual == dst->visual) - return TRUE; - - return FALSE; -} - -static cairo_bool_t -_surface_has_alpha (cairo_xcb_surface_t *surface) -{ - if (surface->xrender_format.id != XCB_NONE) { - if (surface->xrender_format.type == XCB_RENDER_PICT_TYPE_DIRECT && - surface->xrender_format.direct.alpha_mask != 0) - return TRUE; - else - return FALSE; - } else { - - /* In the no-render case, we never have alpha */ - return FALSE; - } -} - -/* Returns true if the given operator and source-alpha combination - * requires alpha compositing to complete. - */ -static cairo_bool_t -_operator_needs_alpha_composite (cairo_operator_t op, - cairo_bool_t surface_has_alpha) -{ - if (op == CAIRO_OPERATOR_SOURCE || - (!surface_has_alpha && - (op == CAIRO_OPERATOR_OVER || - op == CAIRO_OPERATOR_ATOP || - op == CAIRO_OPERATOR_IN))) - return FALSE; - - return TRUE; -} - -/* There is a bug in most older X servers with compositing using a - * untransformed repeating source pattern when the source is in off-screen - * video memory, and another with repeated transformed images using a - * general transform matrix. When these bugs could be triggered, we need a - * fallback: in the common case where we have no transformation and the - * source and destination have the same format/visual, we can do the - * operation using the core protocol for the first bug, otherwise, we need - * a software fallback. - * - * We can also often optimize a compositing operation by calling XCopyArea - * for some common cases where there is no alpha compositing to be done. - * We figure that out here as well. - */ -typedef enum { - DO_RENDER, /* use render */ - DO_XCOPYAREA, /* core protocol XCopyArea optimization/fallback */ - DO_XTILE, /* core protocol XSetTile optimization/fallback */ - DO_UNSUPPORTED /* software fallback */ -} composite_operation_t; - -/* Initial check for the render bugs; we need to recheck for the - * offscreen-memory bug after we turn patterns into surfaces, since that - * may introduce a repeating pattern for gradient patterns. We don't need - * to check for the repeat+transform bug because gradient surfaces aren't - * transformed. - * - * All we do here is reject cases where we *know* are going to - * hit the bug and won't be able to use a core protocol fallback. - */ -static composite_operation_t -_categorize_composite_operation (cairo_xcb_surface_t *dst, - cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_bool_t have_mask) - -{ -#if XXX_BUGGY_REPEAT - if (!dst->buggy_repeat) - return DO_RENDER; - - if (src_pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *)src_pattern; - - if (_cairo_matrix_is_integer_translation (&src_pattern->matrix, NULL, NULL) && - src_pattern->extend == CAIRO_EXTEND_REPEAT) - { - /* This is the case where we have the bug involving - * untransformed repeating source patterns with off-screen - * video memory; reject some cases where a core protocol - * fallback is impossible. - */ - if (have_mask || - !(op == CAIRO_OPERATOR_SOURCE || op == CAIRO_OPERATOR_OVER)) - return DO_UNSUPPORTED; - - if (_cairo_surface_is_xcb (surface_pattern->surface)) { - cairo_xcb_surface_t *src = (cairo_xcb_surface_t *)surface_pattern->surface; - - if (op == CAIRO_OPERATOR_OVER && _surface_has_alpha (src)) - return DO_UNSUPPORTED; - - /* If these are on the same screen but otherwise incompatible, - * make a copy as core drawing can't cross depths and doesn't - * work rightacross visuals of the same depth - */ - if (_cairo_xcb_surface_same_screen (dst, src) && - !_surfaces_compatible (dst, src)) - return DO_UNSUPPORTED; - } - } - - /* Check for the other bug involving repeat patterns with general - * transforms. */ - if (!_cairo_matrix_is_integer_translation (&src_pattern->matrix, NULL, NULL) && - src_pattern->extend == CAIRO_EXTEND_REPEAT) - return DO_UNSUPPORTED; - } -#endif - return DO_RENDER; -} - -/* Recheck for composite-repeat once we've turned patterns into Xlib surfaces - * If we end up returning DO_UNSUPPORTED here, we're throwing away work we - * did to turn gradients into a pattern, but most of the time we can handle - * that case with core protocol fallback. - * - * Also check here if we can just use XCopyArea, instead of going through - * Render. - */ -static composite_operation_t -_recategorize_composite_operation (cairo_xcb_surface_t *dst, - cairo_operator_t op, - cairo_xcb_surface_t *src, - cairo_surface_attributes_t *src_attr, - cairo_bool_t have_mask) -{ - cairo_bool_t is_integer_translation = - _cairo_matrix_is_integer_translation (&src_attr->matrix, NULL, NULL); - cairo_bool_t needs_alpha_composite = - _operator_needs_alpha_composite (op, _surface_has_alpha (src)); - - if (!have_mask && - is_integer_translation && - src_attr->extend == CAIRO_EXTEND_NONE && - !needs_alpha_composite && - _surfaces_compatible(src, dst)) - { - return DO_XCOPYAREA; - } -#if XXX_BUGGY_REPEAT - if (!dst->buggy_repeat) - return DO_RENDER; - - if (is_integer_translation && - src_attr->extend == CAIRO_EXTEND_REPEAT && - (src->width != 1 || src->height != 1)) - { - if (!have_mask && - !needs_alpha_composite && - _surfaces_compatible (dst, src)) - { - return DO_XTILE; - } - - return DO_UNSUPPORTED; - } -#endif - return DO_RENDER; -} - -static int -_render_operator (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - return XCB_RENDER_PICT_OP_CLEAR; - case CAIRO_OPERATOR_SOURCE: - return XCB_RENDER_PICT_OP_SRC; - case CAIRO_OPERATOR_DEST: - return XCB_RENDER_PICT_OP_DST; - case CAIRO_OPERATOR_OVER: - return XCB_RENDER_PICT_OP_OVER; - case CAIRO_OPERATOR_DEST_OVER: - return XCB_RENDER_PICT_OP_OVER_REVERSE; - case CAIRO_OPERATOR_IN: - return XCB_RENDER_PICT_OP_IN; - case CAIRO_OPERATOR_DEST_IN: - return XCB_RENDER_PICT_OP_IN_REVERSE; - case CAIRO_OPERATOR_OUT: - return XCB_RENDER_PICT_OP_OUT; - case CAIRO_OPERATOR_DEST_OUT: - return XCB_RENDER_PICT_OP_OUT_REVERSE; - case CAIRO_OPERATOR_ATOP: - return XCB_RENDER_PICT_OP_ATOP; - case CAIRO_OPERATOR_DEST_ATOP: - return XCB_RENDER_PICT_OP_ATOP_REVERSE; - case CAIRO_OPERATOR_XOR: - return XCB_RENDER_PICT_OP_XOR; - case CAIRO_OPERATOR_ADD: - return XCB_RENDER_PICT_OP_ADD; - case CAIRO_OPERATOR_SATURATE: - return XCB_RENDER_PICT_OP_SATURATE; - default: - return XCB_RENDER_PICT_OP_OVER; - } -} - -static cairo_int_status_t -_cairo_xcb_surface_composite (cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_pattern_t *mask_pattern, - void *abstract_dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_surface_attributes_t src_attr, mask_attr; - cairo_xcb_surface_t *dst = abstract_dst; - cairo_xcb_surface_t *src; - cairo_xcb_surface_t *mask; - cairo_int_status_t status; - composite_operation_t operation; - int itx, ity; - - if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE (dst)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - operation = _categorize_composite_operation (dst, op, src_pattern, - mask_pattern != NULL); - if (operation == DO_UNSUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_pattern_acquire_surfaces (src_pattern, mask_pattern, - &dst->base, - src_x, src_y, - mask_x, mask_y, - width, height, - (cairo_surface_t **) &src, - (cairo_surface_t **) &mask, - &src_attr, &mask_attr); - if (status) - return status; - - operation = _recategorize_composite_operation (dst, op, src, &src_attr, - mask_pattern != NULL); - if (operation == DO_UNSUPPORTED) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - status = _cairo_xcb_surface_set_attributes (src, &src_attr); - if (status) - goto BAIL; - - switch (operation) - { - case DO_RENDER: - _cairo_xcb_surface_ensure_dst_picture (dst); - if (mask) { - status = _cairo_xcb_surface_set_attributes (mask, &mask_attr); - if (status) - goto BAIL; - - xcb_render_composite (dst->dpy, - _render_operator (op), - src->src_picture, - mask->src_picture, - dst->dst_picture, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - mask_x + mask_attr.x_offset, - mask_y + mask_attr.y_offset, - dst_x, dst_y, - width, height); - } else { - static xcb_render_picture_t maskpict = { XCB_NONE }; - - xcb_render_composite (dst->dpy, - _render_operator (op), - src->src_picture, - maskpict, - dst->dst_picture, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - } - break; - - case DO_XCOPYAREA: - _cairo_xcb_surface_ensure_gc (dst); - xcb_copy_area (dst->dpy, - src->drawable, - dst->drawable, - dst->gc, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - dst_x, dst_y, - width, height); - break; - - case DO_XTILE: - /* This case is only used for bug fallbacks, though it is theoretically - * applicable to the case where we don't have the RENDER extension as - * well. - * - * We've checked that we have a repeating unscaled source in - * _recategorize_composite_operation. - */ - - _cairo_xcb_surface_ensure_gc (dst); - _cairo_matrix_is_integer_translation (&src_attr.matrix, &itx, &ity); - { - uint32_t mask = XCB_GC_FILL_STYLE | XCB_GC_TILE - | XCB_GC_TILE_STIPPLE_ORIGIN_X - | XCB_GC_TILE_STIPPLE_ORIGIN_Y; - uint32_t values[] = { - XCB_FILL_STYLE_TILED, src->drawable, - - (itx + src_attr.x_offset), - - (ity + src_attr.y_offset) - }; - xcb_rectangle_t rect = { dst_x, dst_y, width, height }; - - xcb_change_gc( dst->dpy, dst->gc, mask, values ); - xcb_poly_fill_rectangle(dst->dpy, dst->drawable, dst->gc, 1, &rect); - } - break; - - case DO_UNSUPPORTED: - default: - ASSERT_NOT_REACHED; - } - - if (!_cairo_operator_bounded_by_source (op)) - status = _cairo_surface_composite_fixup_unbounded (&dst->base, - &src_attr, src->width, src->height, - mask ? &mask_attr : NULL, - mask ? mask->width : 0, - mask ? mask->height : 0, - src_x, src_y, - mask_x, mask_y, - dst_x, dst_y, width, height); - - BAIL: - if (mask) - _cairo_pattern_release_surface (mask_pattern, &mask->base, &mask_attr); - - _cairo_pattern_release_surface (src_pattern, &src->base, &src_attr); - - return status; -} - -static cairo_int_status_t -_cairo_xcb_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t * color, - cairo_rectangle_int_t *rects, - int num_rects) -{ - cairo_xcb_surface_t *surface = abstract_surface; - xcb_render_color_t render_color; - xcb_rectangle_t static_xrects[16]; - xcb_rectangle_t *xrects = static_xrects; - int i; - - if (!CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLE (surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - render_color.red = color->red_short; - render_color.green = color->green_short; - render_color.blue = color->blue_short; - render_color.alpha = color->alpha_short; - - if (num_rects > ARRAY_LENGTH(static_xrects)) { - xrects = _cairo_malloc_ab (num_rects, sizeof(xcb_rectangle_t)); - if (xrects == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < num_rects; i++) { - xrects[i].x = rects[i].x; - xrects[i].y = rects[i].y; - xrects[i].width = rects[i].width; - xrects[i].height = rects[i].height; - } - - _cairo_xcb_surface_ensure_dst_picture (surface); - xcb_render_fill_rectangles (surface->dpy, - _render_operator (op), - surface->dst_picture, - render_color, num_rects, xrects); - - if (xrects != static_xrects) - free(xrects); - - return CAIRO_STATUS_SUCCESS; -} - -/* Creates an A8 picture of size @width x @height, initialized with @color - */ -static xcb_render_picture_t -_create_a8_picture (cairo_xcb_surface_t *surface, - xcb_render_color_t *color, - int width, - int height, - cairo_bool_t repeat) -{ - uint32_t values[] = { TRUE }; - uint32_t mask = repeat ? XCB_RENDER_CP_REPEAT : 0; - - xcb_pixmap_t pixmap = xcb_generate_id (surface->dpy); - xcb_render_picture_t picture = xcb_generate_id (surface->dpy); - - xcb_render_pictforminfo_t *format - = _CAIRO_FORMAT_TO_XRENDER_FORMAT (surface->dpy, CAIRO_FORMAT_A8); - xcb_rectangle_t rect = { 0, 0, width, height }; - - xcb_create_pixmap (surface->dpy, 8, pixmap, surface->drawable, - width <= 0 ? 1 : width, - height <= 0 ? 1 : height); - xcb_render_create_picture (surface->dpy, picture, pixmap, format->id, mask, values); - xcb_render_fill_rectangles (surface->dpy, XCB_RENDER_PICT_OP_SRC, picture, *color, 1, &rect); - xcb_free_pixmap (surface->dpy, pixmap); - - return picture; -} - -/* Creates a temporary mask for the trapezoids covering the area - * [@dst_x, @dst_y, @width, @height] of the destination surface. - */ -static xcb_render_picture_t -_create_trapezoid_mask (cairo_xcb_surface_t *dst, - cairo_trapezoid_t *traps, - int num_traps, - int dst_x, - int dst_y, - int width, - int height, - xcb_render_pictforminfo_t *pict_format) -{ - xcb_render_color_t transparent = { 0, 0, 0, 0 }; - xcb_render_color_t solid = { 0xffff, 0xffff, 0xffff, 0xffff }; - xcb_render_picture_t mask_picture, solid_picture; - xcb_render_trapezoid_t *offset_traps; - int i; - - /* This would be considerably simpler using XRenderAddTraps(), but since - * we are only using this in the unbounded-operator case, we stick with - * XRenderCompositeTrapezoids, which is available on older versions - * of RENDER rather than conditionalizing. We should still hit an - * optimization that avoids creating another intermediate surface on - * the servers that have XRenderAddTraps(). - */ - mask_picture = _create_a8_picture (dst, &transparent, width, height, FALSE); - solid_picture = _create_a8_picture (dst, &solid, width, height, TRUE); - - offset_traps = _cairo_malloc_ab (num_traps, sizeof (xcb_render_trapezoid_t)); - if (!offset_traps) { - _cairo_error (CAIRO_STATUS_NO_MEMORY); - return XCB_NONE; - } - - for (i = 0; i < num_traps; i++) { - offset_traps[i].top = _cairo_fixed_to_16_16(traps[i].top) - 0x10000 * dst_y; - offset_traps[i].bottom = _cairo_fixed_to_16_16(traps[i].bottom) - 0x10000 * dst_y; - offset_traps[i].left.p1.x = _cairo_fixed_to_16_16(traps[i].left.p1.x) - 0x10000 * dst_x; - offset_traps[i].left.p1.y = _cairo_fixed_to_16_16(traps[i].left.p1.y) - 0x10000 * dst_y; - offset_traps[i].left.p2.x = _cairo_fixed_to_16_16(traps[i].left.p2.x) - 0x10000 * dst_x; - offset_traps[i].left.p2.y = _cairo_fixed_to_16_16(traps[i].left.p2.y) - 0x10000 * dst_y; - offset_traps[i].right.p1.x = _cairo_fixed_to_16_16(traps[i].right.p1.x) - 0x10000 * dst_x; - offset_traps[i].right.p1.y = _cairo_fixed_to_16_16(traps[i].right.p1.y) - 0x10000 * dst_y; - offset_traps[i].right.p2.x = _cairo_fixed_to_16_16(traps[i].right.p2.x) - 0x10000 * dst_x; - offset_traps[i].right.p2.y = _cairo_fixed_to_16_16(traps[i].right.p2.y) - 0x10000 * dst_y; - } - - xcb_render_trapezoids (dst->dpy, XCB_RENDER_PICT_OP_ADD, - solid_picture, mask_picture, - pict_format->id, - 0, 0, - num_traps, offset_traps); - - xcb_render_free_picture (dst->dpy, solid_picture); - free (offset_traps); - - return mask_picture; -} - -static cairo_int_status_t -_cairo_xcb_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - void *abstract_dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps) -{ - cairo_surface_attributes_t attributes; - cairo_xcb_surface_t *dst = abstract_dst; - cairo_xcb_surface_t *src; - cairo_int_status_t status; - composite_operation_t operation; - int render_reference_x, render_reference_y; - int render_src_x, render_src_y; - int cairo_format; - xcb_render_pictforminfo_t *render_format; - - if (!CAIRO_SURFACE_RENDER_HAS_TRAPEZOIDS (dst)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - operation = _categorize_composite_operation (dst, op, pattern, TRUE); - if (operation == DO_UNSUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_pattern_acquire_surface (pattern, &dst->base, - src_x, src_y, width, height, - (cairo_surface_t **) &src, - &attributes); - if (status) - return status; - - operation = _recategorize_composite_operation (dst, op, src, &attributes, TRUE); - if (operation == DO_UNSUPPORTED) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - switch (antialias) { - case CAIRO_ANTIALIAS_NONE: - cairo_format = CAIRO_FORMAT_A1; - break; - case CAIRO_ANTIALIAS_GRAY: - case CAIRO_ANTIALIAS_SUBPIXEL: - case CAIRO_ANTIALIAS_DEFAULT: - default: - cairo_format = CAIRO_FORMAT_A8; - break; - } - render_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT (dst->dpy, cairo_format); - /* XXX: what to do if render_format is null? */ - - if (traps[0].left.p1.y < traps[0].left.p2.y) { - render_reference_x = _cairo_fixed_integer_floor (traps[0].left.p1.x); - render_reference_y = _cairo_fixed_integer_floor (traps[0].left.p1.y); - } else { - render_reference_x = _cairo_fixed_integer_floor (traps[0].left.p2.x); - render_reference_y = _cairo_fixed_integer_floor (traps[0].left.p2.y); - } - - render_src_x = src_x + render_reference_x - dst_x; - render_src_y = src_y + render_reference_y - dst_y; - - _cairo_xcb_surface_ensure_dst_picture (dst); - status = _cairo_xcb_surface_set_attributes (src, &attributes); - if (status) - goto BAIL; - - if (!_cairo_operator_bounded_by_mask (op)) { - /* xcb_render_composite+trapezoids() creates a mask only large enough for the - * trapezoids themselves, but if the operator is unbounded, then we need - * to actually composite all the way out to the bounds, so we create - * the mask and composite ourselves. There actually would - * be benefit to doing this in all cases, since RENDER implementations - * will frequently create a too temporary big mask, ignoring destination - * bounds and clip. (xcb_render_add_traps() could be used to make creating - * the mask somewhat cheaper.) - */ - xcb_render_picture_t mask_picture = _create_trapezoid_mask (dst, traps, num_traps, - dst_x, dst_y, width, height, - render_format); - if (!mask_picture) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - - xcb_render_composite (dst->dpy, - _render_operator (op), - src->src_picture, - mask_picture, - dst->dst_picture, - src_x + attributes.x_offset, - src_y + attributes.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - - xcb_render_free_picture (dst->dpy, mask_picture); - - status = _cairo_surface_composite_shape_fixup_unbounded (&dst->base, - &attributes, src->width, src->height, - width, height, - src_x, src_y, - 0, 0, - dst_x, dst_y, width, height); - - } else { - xcb_render_trapezoid_t xtraps_stack[16]; - xcb_render_trapezoid_t *xtraps = xtraps_stack; - int i; - - if (num_traps > ARRAY_LENGTH(xtraps_stack)) { - xtraps = _cairo_malloc_ab (num_traps, sizeof(xcb_render_trapezoid_t)); - if (xtraps == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - } - - for (i = 0; i < num_traps; i++) { - xtraps[i].top = _cairo_fixed_to_16_16(traps[i].top); - xtraps[i].bottom = _cairo_fixed_to_16_16(traps[i].bottom); - xtraps[i].left.p1.x = _cairo_fixed_to_16_16(traps[i].left.p1.x); - xtraps[i].left.p1.y = _cairo_fixed_to_16_16(traps[i].left.p1.y); - xtraps[i].left.p2.x = _cairo_fixed_to_16_16(traps[i].left.p2.x); - xtraps[i].left.p2.y = _cairo_fixed_to_16_16(traps[i].left.p2.y); - xtraps[i].right.p1.x = _cairo_fixed_to_16_16(traps[i].right.p1.x); - xtraps[i].right.p1.y = _cairo_fixed_to_16_16(traps[i].right.p1.y); - xtraps[i].right.p2.x = _cairo_fixed_to_16_16(traps[i].right.p2.x); - xtraps[i].right.p2.y = _cairo_fixed_to_16_16(traps[i].right.p2.y); - } - - xcb_render_trapezoids (dst->dpy, - _render_operator (op), - src->src_picture, dst->dst_picture, - render_format->id, - render_src_x + attributes.x_offset, - render_src_y + attributes.y_offset, - num_traps, xtraps); - - if (xtraps != xtraps_stack) - free(xtraps); - } - - BAIL: - _cairo_pattern_release_surface (pattern, &src->base, &attributes); - - return status; -} - -static cairo_int_status_t -_cairo_xcb_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - cairo_xcb_surface_t *surface = abstract_surface; - - if (surface->clip_rects) { - free (surface->clip_rects); - surface->clip_rects = NULL; - } - - surface->have_clip_rects = FALSE; - surface->num_clip_rects = 0; - - if (region == NULL) { - uint32_t none[] = { XCB_NONE }; - if (surface->gc) - xcb_change_gc (surface->dpy, surface->gc, XCB_GC_CLIP_MASK, none); - - if (surface->xrender_format.id != XCB_NONE && surface->dst_picture) - xcb_render_change_picture (surface->dpy, surface->dst_picture, - XCB_RENDER_CP_CLIP_MASK, none); - } else { - cairo_box_int_t *boxes; - cairo_status_t status; - xcb_rectangle_t *rects = NULL; - int n_boxes, i; - - status = _cairo_region_get_boxes (region, &n_boxes, &boxes); - if (status) - return status; - - if (n_boxes > 0) { - rects = _cairo_malloc_ab (n_boxes, sizeof(xcb_rectangle_t)); - if (rects == NULL) { - _cairo_region_boxes_fini (region, boxes); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } else { - rects = NULL; - } - - for (i = 0; i < n_boxes; i++) { - rects[i].x = boxes[i].p1.x; - rects[i].y = boxes[i].p1.y; - rects[i].width = boxes[i].p2.x - boxes[i].p1.x; - rects[i].height = boxes[i].p2.y - boxes[i].p1.y; - } - - _cairo_region_boxes_fini (region, boxes); - - surface->have_clip_rects = TRUE; - surface->clip_rects = rects; - surface->num_clip_rects = n_boxes; - - if (surface->gc) - _cairo_xcb_surface_set_gc_clip_rects (surface); - - if (surface->dst_picture) - _cairo_xcb_surface_set_picture_clip_rects (surface); - } - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_xcb_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_xcb_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - - rectangle->width = surface->width; - rectangle->height = surface->height; - - return CAIRO_STATUS_SUCCESS; -} - -/* XXX: _cairo_xcb_surface_get_font_options */ - -static void -_cairo_xcb_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font); - -static void -_cairo_xcb_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font); - -static cairo_int_status_t -_cairo_xcb_surface_show_glyphs (void *abstract_dst, - cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - -static cairo_bool_t -_cairo_xcb_surface_is_similar (void *surface_a, - void *surface_b, - cairo_content_t content) -{ - cairo_xcb_surface_t *a = surface_a; - cairo_xcb_surface_t *b = surface_b; - xcb_render_pictforminfo_t *xrender_format; - - if (! _cairo_xcb_surface_same_screen (a, b)) - return FALSE; - - /* now check that the target is a similar format */ - xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT (b->dpy, - _cairo_format_from_content (content)); - - return a->xrender_format.id == xrender_format->id; -} - -static cairo_status_t -_cairo_xcb_surface_reset (void *abstract_surface) -{ - cairo_xcb_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _cairo_xcb_surface_set_clip_region (surface, NULL); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - - -/* XXX: move this to the bottom of the file, XCB and Xlib */ - -static const cairo_surface_backend_t cairo_xcb_surface_backend = { - CAIRO_SURFACE_TYPE_XCB, - _cairo_xcb_surface_create_similar, - _cairo_xcb_surface_finish, - _cairo_xcb_surface_acquire_source_image, - _cairo_xcb_surface_release_source_image, - _cairo_xcb_surface_acquire_dest_image, - _cairo_xcb_surface_release_dest_image, - _cairo_xcb_surface_clone_similar, - _cairo_xcb_surface_composite, - _cairo_xcb_surface_fill_rectangles, - _cairo_xcb_surface_composite_trapezoids, - NULL, /* copy_page */ - NULL, /* show_page */ - _cairo_xcb_surface_set_clip_region, - NULL, /* intersect_clip_path */ - _cairo_xcb_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - _cairo_xcb_surface_scaled_font_fini, - _cairo_xcb_surface_scaled_glyph_fini, - - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - _cairo_xcb_surface_show_glyphs, - NULL, /* snapshot */ - - _cairo_xcb_surface_is_similar, - - _cairo_xcb_surface_reset -}; - -/** - * _cairo_surface_is_xcb: - * @surface: a #cairo_surface_t - * - * Checks if a surface is a #cairo_xcb_surface_t - * - * Return value: True if the surface is an xcb surface - **/ -static cairo_bool_t -_cairo_surface_is_xcb (cairo_surface_t *surface) -{ - return surface->backend == &cairo_xcb_surface_backend; -} - -static cairo_surface_t * -_cairo_xcb_surface_create_internal (xcb_connection_t *dpy, - xcb_drawable_t drawable, - xcb_screen_t *screen, - xcb_visualtype_t *visual, - xcb_render_pictforminfo_t *xrender_format, - int width, - int height, - int depth) -{ - cairo_xcb_surface_t *surface; - const xcb_render_query_version_reply_t *r; - - surface = malloc (sizeof (cairo_xcb_surface_t)); - if (surface == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - if (xrender_format) { - depth = xrender_format->depth; - } else if (visual) { - xcb_depth_iterator_t depths; - xcb_visualtype_iterator_t visuals; - - /* This is ugly, but we have to walk over all visuals - * for the screen to find the depth. - */ - depths = xcb_screen_allowed_depths_iterator(screen); - for(; depths.rem; xcb_depth_next(&depths)) - { - visuals = xcb_depth_visuals_iterator(depths.data); - for(; visuals.rem; xcb_visualtype_next(&visuals)) - { - if(visuals.data->visual_id == visual->visual_id) - { - depth = depths.data->depth; - goto found; - } - } - } - found: - ; - } - - r = xcb_render_util_query_version(dpy); - if (r) { - surface->render_major = r->major_version; - surface->render_minor = r->minor_version; - } else { - surface->render_major = -1; - surface->render_minor = -1; - } - - if (CAIRO_SURFACE_RENDER_HAS_CREATE_PICTURE (surface)) { - if (!xrender_format) { - if (visual) { - const xcb_render_query_pict_formats_reply_t *formats; - xcb_render_pictvisual_t *pict_visual; - formats = xcb_render_util_query_formats (dpy); - pict_visual = xcb_render_util_find_visual_format (formats, visual->visual_id); - if (pict_visual) { - xcb_render_pictforminfo_t template; - template.id = pict_visual->format; - xrender_format = xcb_render_util_find_format (formats, XCB_PICT_FORMAT_ID, &template, 0); - } - } else if (depth == 1) { - xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT (dpy, CAIRO_FORMAT_A1); - } - } - } else { - xrender_format = NULL; - } - - _cairo_surface_init (&surface->base, &cairo_xcb_surface_backend, - _xcb_render_format_to_content (xrender_format)); - - surface->dpy = dpy; - - surface->gc = XCB_NONE; - surface->drawable = drawable; - surface->screen = screen; - surface->owns_pixmap = FALSE; - surface->use_pixmap = 0; - surface->width = width; - surface->height = height; - - /* XXX: set buggy_repeat based on ServerVendor and VendorRelease */ - - surface->dst_picture = XCB_NONE; - surface->src_picture = XCB_NONE; - - surface->visual = visual; - surface->xrender_format.id = XCB_NONE; - if (xrender_format) surface->xrender_format = *xrender_format; - surface->depth = depth; - - surface->have_clip_rects = FALSE; - surface->clip_rects = NULL; - surface->num_clip_rects = 0; - - return (cairo_surface_t *) surface; -} - -static xcb_screen_t * -_cairo_xcb_screen_from_visual (xcb_connection_t *c, xcb_visualtype_t *visual) -{ - xcb_depth_iterator_t d; - xcb_screen_iterator_t s = xcb_setup_roots_iterator(xcb_get_setup(c)); - for (; s.rem; xcb_screen_next(&s)) - { - if (s.data->root_visual == visual->visual_id) - return s.data; - - d = xcb_screen_allowed_depths_iterator(s.data); - for (; d.rem; xcb_depth_next(&d)) - { - xcb_visualtype_iterator_t v = xcb_depth_visuals_iterator(d.data); - for (; v.rem; xcb_visualtype_next(&v)) - { - if (v.data->visual_id == visual->visual_id) - return s.data; - } - } - } - return NULL; -} - -/** - * cairo_xcb_surface_create: - * @c: an XCB connection - * @drawable: an XCB drawable - * @visual: the visual to use for drawing to @drawable. The depth - * of the visual must match the depth of the drawable. - * Currently, only TrueColor visuals are fully supported. - * @width: the current width of @drawable. - * @height: the current height of @drawable. - * - * Creates an XCB surface that draws to the given drawable. - * The way that colors are represented in the drawable is specified - * by the provided visual. - * - * Note: If @drawable is a window, then the function - * cairo_xcb_surface_set_size must be called whenever the size of the - * window changes. - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_xcb_surface_create (xcb_connection_t *c, - xcb_drawable_t drawable, - xcb_visualtype_t *visual, - int width, - int height) -{ - xcb_screen_t *screen = _cairo_xcb_screen_from_visual (c, visual); - - if (screen == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_VISUAL)); - - return _cairo_xcb_surface_create_internal (c, drawable, screen, - visual, NULL, - width, height, 0); -} - -/** - * cairo_xcb_surface_create_for_bitmap: - * @c: an XCB connection - * @bitmap: an XCB Pixmap (a depth-1 pixmap) - * @screen: an XCB Screen - * @width: the current width of @bitmap - * @height: the current height of @bitmap - * - * Creates an XCB surface that draws to the given bitmap. - * This will be drawn to as a %CAIRO_FORMAT_A1 object. - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_xcb_surface_create_for_bitmap (xcb_connection_t *c, - xcb_pixmap_t bitmap, - xcb_screen_t *screen, - int width, - int height) -{ - return _cairo_xcb_surface_create_internal (c, bitmap, screen, - NULL, NULL, - width, height, 1); -} - -/** - * cairo_xcb_surface_create_with_xrender_format: - * @c: an XCB connection - * @drawable: an XCB drawable - * @screen: the XCB screen associated with @drawable - * @format: the picture format to use for drawing to @drawable. The - * depth of @format mush match the depth of the drawable. - * @width: the current width of @drawable - * @height: the current height of @drawable - * - * Creates an XCB surface that draws to the given drawable. - * The way that colors are represented in the drawable is specified - * by the provided picture format. - * - * Note: If @drawable is a Window, then the function - * cairo_xcb_surface_set_size must be called whenever the size of the - * window changes. - * - * Return value: the newly created surface. - **/ -cairo_surface_t * -cairo_xcb_surface_create_with_xrender_format (xcb_connection_t *c, - xcb_drawable_t drawable, - xcb_screen_t *screen, - xcb_render_pictforminfo_t *format, - int width, - int height) -{ - return _cairo_xcb_surface_create_internal (c, drawable, screen, - NULL, format, - width, height, 0); -} -slim_hidden_def (cairo_xcb_surface_create_with_xrender_format); - -/** - * cairo_xcb_surface_set_size: - * @surface: a #cairo_surface_t for the XCB backend - * @width: the new width of the surface - * @height: the new height of the surface - * - * Informs cairo of the new size of the XCB drawable underlying the - * surface. For a surface created for a window (rather than a pixmap), - * this function must be called each time the size of the window - * changes. (For a subwindow, you are normally resizing the window - * yourself, but for a toplevel window, it is necessary to listen for - * ConfigureNotify events.) - * - * A pixmap can never change size, so it is never necessary to call - * this function on a surface created for a pixmap. - **/ -void -cairo_xcb_surface_set_size (cairo_surface_t *abstract_surface, - int width, - int height) -{ - cairo_xcb_surface_t *surface = (cairo_xcb_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xcb (abstract_surface)) { - _cairo_surface_set_error (abstract_surface, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return; - } - - surface->width = width; - surface->height = height; -} - -/* - * Glyph rendering support - */ - -typedef struct _cairo_xcb_surface_font_private { - xcb_connection_t *dpy; - xcb_render_glyphset_t glyphset; - cairo_format_t format; - xcb_render_pictforminfo_t *xrender_format; -} cairo_xcb_surface_font_private_t; - -static cairo_status_t -_cairo_xcb_surface_font_init (xcb_connection_t *dpy, - cairo_scaled_font_t *scaled_font, - cairo_format_t format) -{ - cairo_xcb_surface_font_private_t *font_private; - - font_private = malloc (sizeof (cairo_xcb_surface_font_private_t)); - if (!font_private) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - font_private->dpy = dpy; - font_private->format = format; - font_private->xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT(dpy, format); - font_private->glyphset = xcb_generate_id(dpy); - xcb_render_create_glyph_set (dpy, font_private->glyphset, font_private->xrender_format->id); - - scaled_font->surface_private = font_private; - scaled_font->surface_backend = &cairo_xcb_surface_backend; - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xcb_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font) -{ - cairo_xcb_surface_font_private_t *font_private = scaled_font->surface_private; - - if (font_private) { - xcb_render_free_glyph_set (font_private->dpy, font_private->glyphset); - free (font_private); - } -} - -static void -_cairo_xcb_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font) -{ - cairo_xcb_surface_font_private_t *font_private = scaled_font->surface_private; - - if (font_private != NULL && scaled_glyph->surface_private != NULL) { - xcb_render_glyph_t glyph_index = _cairo_scaled_glyph_index(scaled_glyph); - xcb_render_free_glyphs (font_private->dpy, - font_private->glyphset, - 1, &glyph_index); - } -} - -static cairo_bool_t -_native_byte_order_lsb (void) -{ - int x = 1; - - return *((char *) &x) == 1; -} - -static cairo_status_t -_cairo_xcb_surface_add_glyph (xcb_connection_t *dpy, - cairo_scaled_font_t *scaled_font, - cairo_scaled_glyph_t *scaled_glyph) -{ - xcb_render_glyphinfo_t glyph_info; - xcb_render_glyph_t glyph_index; - unsigned char *data; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_xcb_surface_font_private_t *font_private; - cairo_image_surface_t *glyph_surface = scaled_glyph->surface; - - if (scaled_font->surface_private == NULL) { - status = _cairo_xcb_surface_font_init (dpy, scaled_font, - glyph_surface->format); - if (status) - return status; - } - font_private = scaled_font->surface_private; - - /* If the glyph format does not match the font format, then we - * create a temporary surface for the glyph image with the font's - * format. - */ - if (glyph_surface->format != font_private->format) { - cairo_t *cr; - cairo_surface_t *tmp_surface; - double x_offset, y_offset; - - tmp_surface = cairo_image_surface_create (font_private->format, - glyph_surface->width, - glyph_surface->height); - cr = cairo_create (tmp_surface); - cairo_surface_get_device_offset (&glyph_surface->base, &x_offset, &y_offset); - cairo_set_source_surface (cr, &glyph_surface->base, x_offset, y_offset); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - - status = cairo_status (cr); - - cairo_destroy (cr); - - tmp_surface->device_transform = glyph_surface->base.device_transform; - tmp_surface->device_transform_inverse = glyph_surface->base.device_transform_inverse; - - glyph_surface = (cairo_image_surface_t *) tmp_surface; - - if (status) - goto BAIL; - } - - /* XXX: FRAGILE: We're ignore device_transform scaling here. A bug? */ - glyph_info.x = _cairo_lround (glyph_surface->base.device_transform.x0); - glyph_info.y = _cairo_lround (glyph_surface->base.device_transform.y0); - glyph_info.width = glyph_surface->width; - glyph_info.height = glyph_surface->height; - glyph_info.x_off = 0; - glyph_info.y_off = 0; - - data = glyph_surface->data; - - /* flip formats around */ - switch (scaled_glyph->surface->format) { - case CAIRO_FORMAT_A1: - /* local bitmaps are always stored with bit == byte */ - if (_native_byte_order_lsb() != (xcb_get_setup(dpy)->bitmap_format_bit_order == XCB_IMAGE_ORDER_LSB_FIRST)) { - int c = glyph_surface->stride * glyph_surface->height; - unsigned char *d; - unsigned char *new, *n; - - new = malloc (c); - if (!new) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - n = new; - d = data; - while (c--) - { - char b = *d++; - b = ((b << 1) & 0xaa) | ((b >> 1) & 0x55); - b = ((b << 2) & 0xcc) | ((b >> 2) & 0x33); - b = ((b << 4) & 0xf0) | ((b >> 4) & 0x0f); - *n++ = b; - } - data = new; - } - break; - case CAIRO_FORMAT_A8: - break; - case CAIRO_FORMAT_ARGB32: - if (_native_byte_order_lsb() != (xcb_get_setup(dpy)->image_byte_order == XCB_IMAGE_ORDER_LSB_FIRST)) { - unsigned int c = glyph_surface->stride * glyph_surface->height; - unsigned char *d; - unsigned char *new, *n; - - new = malloc (c); - if (new == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - n = new; - d = data; - while (c >= 4) - { - n[3] = d[0]; - n[2] = d[1]; - n[1] = d[2]; - n[0] = d[3]; - d += 4; - n += 4; - c -= 4; - } - data = new; - } - break; - case CAIRO_FORMAT_RGB24: - default: - ASSERT_NOT_REACHED; - break; - } - /* XXX assume X server wants pixman padding. Xft assumes this as well */ - - glyph_index = _cairo_scaled_glyph_index (scaled_glyph); - - xcb_render_add_glyphs (dpy, font_private->glyphset, - 1, &glyph_index, &glyph_info, - glyph_surface->stride * glyph_surface->height, - data); - - if (data != glyph_surface->data) - free (data); - - BAIL: - if (glyph_surface != scaled_glyph->surface) - cairo_surface_destroy (&glyph_surface->base); - - return status; -} - -#define N_STACK_BUF 1024 - -static cairo_status_t -_cairo_xcb_surface_show_glyphs_8 (cairo_xcb_surface_t *dst, - cairo_operator_t op, - cairo_xcb_surface_t *src, - int src_x_offset, int src_y_offset, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_xcb_surface_font_private_t *font_private = scaled_font->surface_private; - xcb_render_util_composite_text_stream_t *stream; - int i; - int thisX, thisY; - int lastX = 0, lastY = 0; - uint8_t glyph; - - stream = xcb_render_util_composite_text_stream (font_private->glyphset, num_glyphs, 0); - - for (i = 0; i < num_glyphs; ++i) { - thisX = _cairo_lround (glyphs[i].x); - thisY = _cairo_lround (glyphs[i].y); - glyph = glyphs[i].index; - xcb_render_util_glyphs_8 (stream, thisX - lastX, thisY - lastY, 1, &glyph); - lastX = thisX; - lastY = thisY; - } - - xcb_render_util_composite_text (dst->dpy, - _render_operator (op), - src->src_picture, - dst->dst_picture, - font_private->xrender_format->id, - src_x_offset + _cairo_lround (glyphs[0].x), - src_y_offset + _cairo_lround (glyphs[0].y), - stream); - - xcb_render_util_composite_text_free (stream); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xcb_surface_show_glyphs_16 (cairo_xcb_surface_t *dst, - cairo_operator_t op, - cairo_xcb_surface_t *src, - int src_x_offset, int src_y_offset, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_xcb_surface_font_private_t *font_private = scaled_font->surface_private; - xcb_render_util_composite_text_stream_t *stream; - int i; - int thisX, thisY; - int lastX = 0, lastY = 0; - uint16_t glyph; - - stream = xcb_render_util_composite_text_stream (font_private->glyphset, num_glyphs, 0); - - for (i = 0; i < num_glyphs; ++i) { - thisX = _cairo_lround (glyphs[i].x); - thisY = _cairo_lround (glyphs[i].y); - glyph = glyphs[i].index; - xcb_render_util_glyphs_16 (stream, thisX - lastX, thisY - lastY, 1, &glyph); - lastX = thisX; - lastY = thisY; - } - - xcb_render_util_composite_text (dst->dpy, - _render_operator (op), - src->src_picture, - dst->dst_picture, - font_private->xrender_format->id, - src_x_offset + _cairo_lround (glyphs[0].x), - src_y_offset + _cairo_lround (glyphs[0].y), - stream); - - xcb_render_util_composite_text_free (stream); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xcb_surface_show_glyphs_32 (cairo_xcb_surface_t *dst, - cairo_operator_t op, - cairo_xcb_surface_t *src, - int src_x_offset, int src_y_offset, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_xcb_surface_font_private_t *font_private = scaled_font->surface_private; - xcb_render_util_composite_text_stream_t *stream; - int i; - int thisX, thisY; - int lastX = 0, lastY = 0; - uint32_t glyph; - - stream = xcb_render_util_composite_text_stream (font_private->glyphset, num_glyphs, 0); - - for (i = 0; i < num_glyphs; ++i) { - thisX = _cairo_lround (glyphs[i].x); - thisY = _cairo_lround (glyphs[i].y); - glyph = glyphs[i].index; - xcb_render_util_glyphs_32 (stream, thisX - lastX, thisY - lastY, 1, &glyph); - lastX = thisX; - lastY = thisY; - } - - xcb_render_util_composite_text (dst->dpy, - _render_operator (op), - src->src_picture, - dst->dst_picture, - font_private->xrender_format->id, - src_x_offset + _cairo_lround (glyphs[0].x), - src_y_offset + _cairo_lround (glyphs[0].y), - stream); - - xcb_render_util_composite_text_free (stream); - - return CAIRO_STATUS_SUCCESS; -} - -typedef cairo_status_t (*cairo_xcb_surface_show_glyphs_func_t) - (cairo_xcb_surface_t *, cairo_operator_t, cairo_xcb_surface_t *, int, int, - const cairo_glyph_t *, int, cairo_scaled_font_t *); - -static cairo_int_status_t -_cairo_xcb_surface_show_glyphs (void *abstract_dst, - cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - cairo_xcb_surface_t *dst = abstract_dst; - - composite_operation_t operation; - cairo_surface_attributes_t attributes; - cairo_xcb_surface_t *src = NULL; - - cairo_glyph_t *output_glyphs; - const cairo_glyph_t *glyphs_chunk; - int glyphs_remaining, chunk_size, max_chunk_size; - cairo_scaled_glyph_t *scaled_glyph; - cairo_xcb_surface_font_private_t *font_private; - - int i, o; - unsigned long max_index = 0; - - cairo_xcb_surface_show_glyphs_func_t show_glyphs_func; - - cairo_pattern_union_t solid_pattern; - - if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE_TEXT (dst) || dst->xrender_format.id == XCB_NONE) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Just let unbounded operators go through the fallback code - * instead of trying to do the fixups here */ - if (!_cairo_operator_bounded_by_mask (op)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Render <= 0.10 seems to have a bug with PictOpSrc and glyphs -- - * the solid source seems to be multiplied by the glyph mask, and - * then the entire thing is copied to the destination surface, - * including the fully transparent "background" of the rectangular - * glyph surface. */ - if (op == CAIRO_OPERATOR_SOURCE && - !CAIRO_SURFACE_RENDER_AT_LEAST(dst, 0, 11)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* We can only use our code if we either have no clip or - * have a real native clip region set. If we're using - * fallback clip masking, we have to go through the full - * fallback path. - */ - if (dst->base.clip && - (dst->base.clip->mode != CAIRO_CLIP_MODE_REGION || - dst->base.clip->surface != NULL)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - operation = _categorize_composite_operation (dst, op, src_pattern, TRUE); - if (operation == DO_UNSUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - font_private = scaled_font->surface_private; - if ((scaled_font->surface_backend != NULL && - scaled_font->surface_backend != &cairo_xcb_surface_backend) || - (font_private != NULL && font_private->dpy != dst->dpy)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* We make a copy of the glyphs so that we can elide any size-zero - * glyphs to workaround an X server bug, (present in at least Xorg - * 7.1 without EXA). */ - output_glyphs = _cairo_malloc_ab (num_glyphs, sizeof (cairo_glyph_t)); - if (output_glyphs == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - /* After passing all those tests, we're now committed to rendering - * these glyphs or to fail trying. We first upload any glyphs to - * the X server that it doesn't have already, then we draw - * them. We tie into the scaled_font's glyph cache and remove - * glyphs from the X server when they are ejected from the - * scaled_font cache. Because of this we first freeze the - * scaled_font's cache so that we don't cause any of our glyphs to - * be ejected and removed from the X server before we have a - * chance to render them. */ - _cairo_scaled_font_freeze_cache (scaled_font); - - /* PictOpClear doesn't seem to work with CompositeText; it seems to ignore - * the mask (the glyphs). This code below was executed as a side effect - * of going through the _clip_and_composite fallback code for old_show_glyphs, - * so PictOpClear was never used with CompositeText before. - */ - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_pattern_init_solid (&solid_pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - src_pattern = &solid_pattern.base; - op = CAIRO_OPERATOR_DEST_OUT; - } - - if (src_pattern->type == CAIRO_PATTERN_TYPE_SOLID) { - status = _cairo_pattern_acquire_surface (src_pattern, &dst->base, - 0, 0, 1, 1, - (cairo_surface_t **) &src, - &attributes); - } else { - cairo_rectangle_int_t glyph_extents; - - status = _cairo_scaled_font_glyph_device_extents (scaled_font, - glyphs, - num_glyphs, - &glyph_extents); - if (status) - goto BAIL; - - status = _cairo_pattern_acquire_surface (src_pattern, &dst->base, - glyph_extents.x, glyph_extents.y, - glyph_extents.width, glyph_extents.height, - (cairo_surface_t **) &src, - &attributes); - } - - if (status) - goto BAIL; - - operation = _recategorize_composite_operation (dst, op, src, &attributes, TRUE); - if (operation == DO_UNSUPPORTED) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - status = _cairo_xcb_surface_set_attributes (src, &attributes); - if (status) - goto BAIL; - - /* Send all unsent glyphs to the server, and count the max of the glyph indices */ - for (i = 0, o = 0; i < num_glyphs; i++) { - if (glyphs[i].index > max_index) - max_index = glyphs[i].index; - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_SURFACE, - &scaled_glyph); - if (status != CAIRO_STATUS_SUCCESS) - goto BAIL; - /* Don't put any size-zero glyphs into output_glyphs to avoid - * an X server bug which stops rendering glyphs after the - * first size-zero glyph. */ - if (scaled_glyph->surface->width && scaled_glyph->surface->height) { - output_glyphs[o++] = glyphs[i]; - if (scaled_glyph->surface_private == NULL) { - _cairo_xcb_surface_add_glyph (dst->dpy, scaled_font, scaled_glyph); - scaled_glyph->surface_private = (void *) 1; - } - } - } - num_glyphs = o; - - _cairo_xcb_surface_ensure_dst_picture (dst); - - max_chunk_size = xcb_get_maximum_request_length (dst->dpy); - if (max_index < 256) { - /* XXX: these are all the same size! (28) */ - max_chunk_size -= sizeof(xcb_render_composite_glyphs_8_request_t); - show_glyphs_func = _cairo_xcb_surface_show_glyphs_8; - } else if (max_index < 65536) { - max_chunk_size -= sizeof(xcb_render_composite_glyphs_16_request_t); - show_glyphs_func = _cairo_xcb_surface_show_glyphs_16; - } else { - max_chunk_size -= sizeof(xcb_render_composite_glyphs_32_request_t); - show_glyphs_func = _cairo_xcb_surface_show_glyphs_32; - } - /* XXX: I think this is wrong; this is only the header size (2 longs) */ - /* but should also include the glyph (1 long) */ - /* max_chunk_size /= sz_xGlyphElt; */ - max_chunk_size /= 3*sizeof(uint32_t); - - for (glyphs_remaining = num_glyphs, glyphs_chunk = output_glyphs; - glyphs_remaining; - glyphs_remaining -= chunk_size, glyphs_chunk += chunk_size) - { - chunk_size = MIN (glyphs_remaining, max_chunk_size); - - status = show_glyphs_func (dst, op, src, - attributes.x_offset, attributes.y_offset, - glyphs_chunk, chunk_size, scaled_font); - if (status != CAIRO_STATUS_SUCCESS) - break; - } - - BAIL: - _cairo_scaled_font_thaw_cache (scaled_font); - free (output_glyphs); - - if (src) - _cairo_pattern_release_surface (src_pattern, &src->base, &attributes); - if (src_pattern == &solid_pattern.base) - _cairo_pattern_fini (&solid_pattern.base); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xcb-xrender.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xcb-xrender.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xcb-xrender.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xcb-xrender.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_XCB_XRENDER_H -#define CAIRO_XCB_XRENDER_H - -#include - -#if CAIRO_HAS_XCB_SURFACE - -#include -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_xcb_surface_create_with_xrender_format (xcb_connection_t *c, - xcb_drawable_t drawable, - xcb_screen_t *screen, - xcb_render_pictforminfo_t *format, - int width, - int height); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_XCB_SURFACE */ -# error Cairo was not compiled with support for the xcb backend -#endif /* CAIRO_HAS_XCB_SURFACE */ - -#endif /* CAIRO_XCB_XRENDER_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-display.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-display.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-display.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-display.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,487 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Chris Wilson. - * - */ - -#include "cairoint.h" - -#include "cairo-xlib-private.h" -#include "cairo-xlib-xrender-private.h" - -#include - -#include /* For XESetCloseDisplay */ - -typedef int (*cairo_xlib_error_func_t) (Display *display, - XErrorEvent *event); - -struct _cairo_xlib_job { - cairo_xlib_job_t *next; - enum { - RESOURCE, - WORK - } type; - union { - struct { - cairo_xlib_notify_resource_func notify; - XID xid; - } resource; - struct { - cairo_xlib_notify_func notify; - void *data; - void (*destroy) (void *); - } work; - } func; -}; - -static cairo_xlib_display_t *_cairo_xlib_display_list; - -static void -_cairo_xlib_call_close_display_hooks (cairo_xlib_display_t *display) -{ - cairo_xlib_screen_info_t *screen; - cairo_xlib_hook_t *hooks, *list; - - /* call all registered shutdown routines */ - CAIRO_MUTEX_LOCK (display->mutex); - - for (screen = display->screens; screen != NULL; screen = screen->next) - _cairo_xlib_screen_info_close_display (screen); - - hooks = display->close_display_hooks; - while (hooks != NULL) { - display->close_display_hooks = NULL; - CAIRO_MUTEX_UNLOCK (display->mutex); - - list = hooks; - do { - cairo_xlib_hook_t *hook = list; - list = hook->next; - - hook->func (display->display, hook->data); - } while (list != NULL); - - CAIRO_MUTEX_LOCK (display->mutex); - do { - cairo_xlib_hook_t *hook = hooks; - hooks = hook->next; - - _cairo_freelist_free (&display->hook_freelist, hook); - } while (hooks != NULL); - - hooks = display->close_display_hooks; - } - display->closed = TRUE; - - CAIRO_MUTEX_UNLOCK (display->mutex); -} - -static void -_cairo_xlib_display_discard_screens (cairo_xlib_display_t *display) -{ - cairo_xlib_screen_info_t *screens; - - CAIRO_MUTEX_LOCK (display->mutex); - screens = display->screens; - display->screens = NULL; - CAIRO_MUTEX_UNLOCK (display->mutex); - - while (screens != NULL) { - cairo_xlib_screen_info_t *screen = screens; - screens = screen->next; - - _cairo_xlib_screen_info_destroy (screen); - } -} - -cairo_xlib_display_t * -_cairo_xlib_display_reference (cairo_xlib_display_t *display) -{ - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&display->ref_count)); - - _cairo_reference_count_inc (&display->ref_count); - - return display; -} - -void -_cairo_xlib_display_destroy (cairo_xlib_display_t *display) -{ - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&display->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&display->ref_count)) - return; - - /* destroy all outstanding notifies */ - while (display->workqueue != NULL) { - cairo_xlib_job_t *job = display->workqueue; - display->workqueue = job->next; - - if (job->type == WORK && job->func.work.destroy != NULL) - job->func.work.destroy (job->func.work.data); - - _cairo_freelist_free (&display->wq_freelist, job); - } - _cairo_freelist_fini (&display->wq_freelist); - _cairo_freelist_fini (&display->hook_freelist); - - CAIRO_MUTEX_FINI (display->mutex); - - free (display); -} - -static int -_noop_error_handler (Display *display, - XErrorEvent *event) -{ - return False; /* return value is ignored */ -} -static int -_cairo_xlib_close_display (Display *dpy, XExtCodes *codes) -{ - cairo_xlib_display_t *display, **prev, *next; - cairo_xlib_error_func_t old_handler; - - CAIRO_MUTEX_LOCK (_cairo_xlib_display_mutex); - for (display = _cairo_xlib_display_list; display; display = display->next) - if (display->display == dpy) - break; - CAIRO_MUTEX_UNLOCK (_cairo_xlib_display_mutex); - if (display == NULL) - return 0; - - /* protect the notifies from triggering XErrors */ - XSync (dpy, False); - old_handler = XSetErrorHandler (_noop_error_handler); - - _cairo_xlib_display_notify (display); - _cairo_xlib_call_close_display_hooks (display); - _cairo_xlib_display_discard_screens (display); - - /* catch any that arrived before marking the display as closed */ - _cairo_xlib_display_notify (display); - - XSync (dpy, False); - XSetErrorHandler (old_handler); - - /* - * Unhook from the global list - */ - CAIRO_MUTEX_LOCK (_cairo_xlib_display_mutex); - prev = &_cairo_xlib_display_list; - for (display = _cairo_xlib_display_list; display; display = next) { - next = display->next; - if (display->display == dpy) { - *prev = next; - break; - } else - prev = &display->next; - } - CAIRO_MUTEX_UNLOCK (_cairo_xlib_display_mutex); - - assert (display != NULL); - _cairo_xlib_display_destroy (display); - - /* Return value in accordance with requirements of - * XESetCloseDisplay */ - return 0; -} - -cairo_xlib_display_t * -_cairo_xlib_display_get (Display *dpy) -{ - cairo_xlib_display_t *display; - cairo_xlib_display_t **prev; - XExtCodes *codes; - int major_unused, minor_unused; - - /* There is an apparent deadlock between this mutex and the - * mutex for the display, but it's actually safe. For the - * app to call XCloseDisplay() while any other thread is - * inside this function would be an error in the logic - * app, and the CloseDisplay hook is the only other place we - * acquire this mutex. - */ - CAIRO_MUTEX_LOCK (_cairo_xlib_display_mutex); - - for (prev = &_cairo_xlib_display_list; (display = *prev); prev = &(*prev)->next) - { - if (display->display == dpy) { - /* - * MRU the list - */ - if (prev != &_cairo_xlib_display_list) { - *prev = display->next; - display->next = _cairo_xlib_display_list; - _cairo_xlib_display_list = display; - } - break; - } - } - - if (display != NULL) { - display = _cairo_xlib_display_reference (display); - goto UNLOCK; - } - - display = malloc (sizeof (cairo_xlib_display_t)); - if (display == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - goto UNLOCK; - } - - /* Xlib calls out to the extension close_display hooks in LIFO - * order. So we have to ensure that all extensions that we depend - * on in our close_display hook are properly initialized before we - * add our hook. For now, that means Render, so we call into its - * QueryVersion function to ensure it gets initialized. - */ - XRenderQueryVersion (dpy, &major_unused, &minor_unused); - - codes = XAddExtension (dpy); - if (codes == NULL) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - free (display); - display = NULL; - goto UNLOCK; - } - - XESetCloseDisplay (dpy, codes->extension, _cairo_xlib_close_display); - - _cairo_freelist_init (&display->wq_freelist, sizeof (cairo_xlib_job_t)); - _cairo_freelist_init (&display->hook_freelist, sizeof (cairo_xlib_hook_t)); - - CAIRO_REFERENCE_COUNT_INIT (&display->ref_count, 2); /* add one for the CloseDisplay */ - CAIRO_MUTEX_INIT (display->mutex); - display->display = dpy; - display->screens = NULL; - display->workqueue = NULL; - display->close_display_hooks = NULL; - display->closed = FALSE; - - display->buggy_repeat = FALSE; - if (strstr (ServerVendor (dpy), "X.Org") != NULL) { - /* When modularized, the X.Org server VendorRelease was - * bogusly reset to a very small number, without any change in - * the ServerVendor string. We avoid considering the new - * servers with the small number as buggy by restricting the - * test to known bad releases. But there could be a problem - * again in the future if X.Org server versions ever climb - * back up to 6.7 or 6.8. */ - if (VendorRelease (dpy) >= 60700000 && VendorRelease (dpy) <= 60802000) - display->buggy_repeat = TRUE; - - /* But even the new modular server has bugs, (bad enough to - * crash the X server), that it so happens we can avoid with - * the exact same buggy_repeat workaround. We've verified that - * this bug exists as least as late as version 1.3.0.0, (which - * is in Fedora 8), and is gone again in version 1.4.99.901 - * (from a Fedora 9 Beta). Versions between those are still - * unknown, but until we learn more, we'll assume that any 1.3 - * version is buggy. */ - if (VendorRelease (dpy) < 10400000) - display->buggy_repeat = TRUE; - } else if (strstr (ServerVendor (dpy), "XFree86") != NULL) { - if (VendorRelease (dpy) <= 40500000) - display->buggy_repeat = TRUE; - } - - display->next = _cairo_xlib_display_list; - _cairo_xlib_display_list = display; - -UNLOCK: - CAIRO_MUTEX_UNLOCK (_cairo_xlib_display_mutex); - return display; -} - -cairo_bool_t -_cairo_xlib_add_close_display_hook (Display *dpy, void (*func) (Display *, void *), void *data, const void *key) -{ - cairo_xlib_display_t *display; - cairo_xlib_hook_t *hook; - cairo_bool_t ret = FALSE; - - display = _cairo_xlib_display_get (dpy); - if (display == NULL) - return FALSE; - - CAIRO_MUTEX_LOCK (display->mutex); - if (display->closed == FALSE) { - hook = _cairo_freelist_alloc (&display->hook_freelist); - if (hook != NULL) { - hook->func = func; - hook->data = data; - hook->key = key; - - hook->next = display->close_display_hooks; - display->close_display_hooks = hook; - ret = TRUE; - } - } - CAIRO_MUTEX_UNLOCK (display->mutex); - - _cairo_xlib_display_destroy (display); - - return ret; -} - -void -_cairo_xlib_remove_close_display_hooks (Display *dpy, const void *key) -{ - cairo_xlib_display_t *display; - cairo_xlib_hook_t *hook, *next, **prev; - - display = _cairo_xlib_display_get (dpy); - if (display == NULL) - return; - - CAIRO_MUTEX_LOCK (display->mutex); - prev = &display->close_display_hooks; - for (hook = display->close_display_hooks; hook != NULL; hook = next) { - next = hook->next; - if (hook->key == key) { - *prev = hook->next; - _cairo_freelist_free (&display->hook_freelist, hook); - } else - prev = &hook->next; - } - *prev = NULL; - CAIRO_MUTEX_UNLOCK (display->mutex); - - _cairo_xlib_display_destroy (display); -} - -cairo_status_t -_cairo_xlib_display_queue_resource (cairo_xlib_display_t *display, - cairo_xlib_notify_resource_func notify, - XID xid) -{ - cairo_xlib_job_t *job; - cairo_status_t status = CAIRO_STATUS_NO_MEMORY; - - CAIRO_MUTEX_LOCK (display->mutex); - if (display->closed == FALSE) { - job = _cairo_freelist_alloc (&display->wq_freelist); - if (job != NULL) { - job->type = RESOURCE; - job->func.resource.xid = xid; - job->func.resource.notify = notify; - - job->next = display->workqueue; - display->workqueue = job; - - status = CAIRO_STATUS_SUCCESS; - } - } - CAIRO_MUTEX_UNLOCK (display->mutex); - - return status; -} - -cairo_status_t -_cairo_xlib_display_queue_work (cairo_xlib_display_t *display, - cairo_xlib_notify_func notify, - void *data, - void (*destroy) (void *)) -{ - cairo_xlib_job_t *job; - cairo_status_t status = CAIRO_STATUS_NO_MEMORY; - - CAIRO_MUTEX_LOCK (display->mutex); - if (display->closed == FALSE) { - job = _cairo_freelist_alloc (&display->wq_freelist); - if (job != NULL) { - job->type = WORK; - job->func.work.data = data; - job->func.work.notify = notify; - job->func.work.destroy = destroy; - - job->next = display->workqueue; - display->workqueue = job; - - status = CAIRO_STATUS_SUCCESS; - } - } - CAIRO_MUTEX_UNLOCK (display->mutex); - - return status; -} - -void -_cairo_xlib_display_notify (cairo_xlib_display_t *display) -{ - cairo_xlib_job_t *jobs, *job, *freelist; - Display *dpy = display->display; - - CAIRO_MUTEX_LOCK (display->mutex); - jobs = display->workqueue; - while (jobs != NULL) { - display->workqueue = NULL; - CAIRO_MUTEX_UNLOCK (display->mutex); - - /* reverse the list to obtain FIFO order */ - job = NULL; - do { - cairo_xlib_job_t *next = jobs->next; - jobs->next = job; - job = jobs; - jobs = next; - } while (jobs != NULL); - freelist = jobs = job; - - do { - job = jobs; - jobs = job->next; - - switch (job->type){ - case WORK: - job->func.work.notify (dpy, job->func.work.data); - if (job->func.work.destroy != NULL) - job->func.work.destroy (job->func.work.data); - break; - - case RESOURCE: - job->func.resource.notify (dpy, job->func.resource.xid); - break; - } - } while (jobs != NULL); - - CAIRO_MUTEX_LOCK (display->mutex); - do { - job = freelist; - freelist = job->next; - _cairo_freelist_free (&display->wq_freelist, job); - } while (freelist != NULL); - - jobs = display->workqueue; - } - CAIRO_MUTEX_UNLOCK (display->mutex); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_XLIB_H -#define CAIRO_XLIB_H - -#include - -#if CAIRO_HAS_XLIB_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_xlib_surface_create (Display *dpy, - Drawable drawable, - Visual *visual, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_xlib_surface_create_for_bitmap (Display *dpy, - Pixmap bitmap, - Screen *screen, - int width, - int height); - -cairo_public void -cairo_xlib_surface_set_size (cairo_surface_t *surface, - int width, - int height); - -cairo_public void -cairo_xlib_surface_set_drawable (cairo_surface_t *surface, - Drawable drawable, - int width, - int height); - -cairo_public Display * -cairo_xlib_surface_get_display (cairo_surface_t *surface); - -cairo_public Drawable -cairo_xlib_surface_get_drawable (cairo_surface_t *surface); - -cairo_public Screen * -cairo_xlib_surface_get_screen (cairo_surface_t *surface); - -cairo_public Visual * -cairo_xlib_surface_get_visual (cairo_surface_t *surface); - -cairo_public int -cairo_xlib_surface_get_depth (cairo_surface_t *surface); - -cairo_public int -cairo_xlib_surface_get_width (cairo_surface_t *surface); - -cairo_public int -cairo_xlib_surface_get_height (cairo_surface_t *surface); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_XLIB_SURFACE */ -# error Cairo was not compiled with support for the xlib backend -#endif /* CAIRO_HAS_XLIB_SURFACE */ - -#endif /* CAIRO_XLIB_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,150 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - */ - -#ifndef CAIRO_XLIB_PRIVATE_H -#define CAIRO_XLIB_PRIVATE_H - -#include "cairo-xlib.h" - -#include "cairo-compiler-private.h" -#include "cairo-freelist-private.h" -#include "cairo-mutex-private.h" -#include "cairo-reference-count-private.h" - -typedef struct _cairo_xlib_display cairo_xlib_display_t; -typedef struct _cairo_xlib_hook cairo_xlib_hook_t; -typedef struct _cairo_xlib_job cairo_xlib_job_t; -typedef void (*cairo_xlib_notify_func) (Display *, void *); -typedef void (*cairo_xlib_notify_resource_func) (Display *, XID); - -struct _cairo_xlib_hook { - cairo_xlib_hook_t *next; - void (*func) (Display *display, void *data); - void *data; - const void *key; -}; - -struct _cairo_xlib_display { - cairo_xlib_display_t *next; - cairo_reference_count_t ref_count; - cairo_mutex_t mutex; - - Display *display; - cairo_xlib_screen_info_t *screens; - - cairo_xlib_job_t *workqueue; - cairo_freelist_t wq_freelist; - - cairo_freelist_t hook_freelist; - cairo_xlib_hook_t *close_display_hooks; - unsigned int buggy_repeat :1; - unsigned int closed :1; -}; - -typedef struct _cairo_xlib_visual_info { - VisualID visualid; - XColor colors[256]; - unsigned long rgb333_to_pseudocolor[512]; -} cairo_xlib_visual_info_t; - -struct _cairo_xlib_screen_info { - cairo_xlib_screen_info_t *next; - cairo_reference_count_t ref_count; - - cairo_xlib_display_t *display; - Screen *screen; - cairo_bool_t has_render; - - cairo_font_options_t font_options; - - GC gc[9]; - unsigned int gc_needs_clip_reset; - - cairo_array_t visuals; -}; - -cairo_private cairo_xlib_display_t * -_cairo_xlib_display_get (Display *display); - -cairo_private cairo_xlib_display_t * -_cairo_xlib_display_reference (cairo_xlib_display_t *info); -cairo_private void -_cairo_xlib_display_destroy (cairo_xlib_display_t *info); - -cairo_private cairo_bool_t -_cairo_xlib_add_close_display_hook (Display *display, void (*func) (Display *, void *), void *data, const void *key); -cairo_private void -_cairo_xlib_remove_close_display_hooks (Display *display, const void *key); - -cairo_private cairo_status_t -_cairo_xlib_display_queue_work (cairo_xlib_display_t *display, - cairo_xlib_notify_func notify, - void *data, - void (*destroy)(void *)); -cairo_private cairo_status_t -_cairo_xlib_display_queue_resource (cairo_xlib_display_t *display, - cairo_xlib_notify_resource_func notify, - XID resource); -cairo_private void -_cairo_xlib_display_notify (cairo_xlib_display_t *display); - -cairo_private cairo_xlib_screen_info_t * -_cairo_xlib_screen_info_get (Display *display, Screen *screen); - -cairo_private cairo_xlib_screen_info_t * -_cairo_xlib_screen_info_reference (cairo_xlib_screen_info_t *info); -cairo_private void -_cairo_xlib_screen_info_destroy (cairo_xlib_screen_info_t *info); - -cairo_private void -_cairo_xlib_screen_info_close_display (cairo_xlib_screen_info_t *info); - -cairo_private GC -_cairo_xlib_screen_get_gc (cairo_xlib_screen_info_t *info, int depth); -cairo_private cairo_status_t -_cairo_xlib_screen_put_gc (cairo_xlib_screen_info_t *info, int depth, GC gc, cairo_bool_t reset_clip); - -cairo_private cairo_status_t -_cairo_xlib_screen_get_visual_info (cairo_xlib_screen_info_t *info, - Visual *visual, - cairo_xlib_visual_info_t **out); - -cairo_private cairo_status_t -_cairo_xlib_visual_info_create (Display *dpy, - int screen, - VisualID visualid, - cairo_xlib_visual_info_t **out); - -cairo_private void -_cairo_xlib_visual_info_destroy (Display *dpy, cairo_xlib_visual_info_t *info); - -#endif /* CAIRO_XLIB_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-screen.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-screen.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-screen.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-screen.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,482 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Partially on code from xftdpy.c - * - * Copyright © 2000 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "cairoint.h" - -#include "cairo-xlib-private.h" -#include "cairo-xlib-xrender-private.h" - -#include - -static int -parse_boolean (const char *v) -{ - char c0, c1; - - c0 = *v; - if (c0 == 't' || c0 == 'T' || c0 == 'y' || c0 == 'Y' || c0 == '1') - return 1; - if (c0 == 'f' || c0 == 'F' || c0 == 'n' || c0 == 'N' || c0 == '0') - return 0; - if (c0 == 'o') - { - c1 = v[1]; - if (c1 == 'n' || c1 == 'N') - return 1; - if (c1 == 'f' || c1 == 'F') - return 0; - } - - return -1; -} - -static cairo_bool_t -get_boolean_default (Display *dpy, - const char *option, - cairo_bool_t *value) -{ - char *v; - int i; - - v = XGetDefault (dpy, "Xft", option); - if (v) { - i = parse_boolean (v); - if (i >= 0) { - *value = i; - return TRUE; - } - } - - return FALSE; -} - -static cairo_bool_t -get_integer_default (Display *dpy, - const char *option, - int *value) -{ - int i; - char *v, *e; - - v = XGetDefault (dpy, "Xft", option); - if (v) { - if (FcNameConstant ((FcChar8 *) v, value)) - return TRUE; - - i = strtol (v, &e, 0); - if (e != v) - return TRUE; - } - - return FALSE; -} - -/* Old versions of fontconfig didn't have these options */ -#ifndef FC_HINT_NONE -#define FC_HINT_NONE 0 -#define FC_HINT_SLIGHT 1 -#define FC_HINT_MEDIUM 2 -#define FC_HINT_FULL 3 -#endif - -static void -_cairo_xlib_init_screen_font_options (Display *dpy, cairo_xlib_screen_info_t *info) -{ - cairo_bool_t xft_hinting; - cairo_bool_t xft_antialias; - int xft_hintstyle; - int xft_rgba; - cairo_antialias_t antialias; - cairo_subpixel_order_t subpixel_order; - cairo_hint_style_t hint_style; - - if (!get_boolean_default (dpy, "antialias", &xft_antialias)) - xft_antialias = TRUE; - - if (!get_boolean_default (dpy, "hinting", &xft_hinting)) - xft_hinting = TRUE; - - if (!get_integer_default (dpy, "hintstyle", &xft_hintstyle)) - xft_hintstyle = FC_HINT_FULL; - - if (!get_integer_default (dpy, "rgba", &xft_rgba)) - { - xft_rgba = FC_RGBA_UNKNOWN; - -#if RENDER_MAJOR > 0 || RENDER_MINOR >= 6 - if (info->has_render) - { - int render_order = XRenderQuerySubpixelOrder (dpy, - XScreenNumberOfScreen (info->screen)); - - switch (render_order) - { - default: - case SubPixelUnknown: - xft_rgba = FC_RGBA_UNKNOWN; - break; - case SubPixelHorizontalRGB: - xft_rgba = FC_RGBA_RGB; - break; - case SubPixelHorizontalBGR: - xft_rgba = FC_RGBA_BGR; - break; - case SubPixelVerticalRGB: - xft_rgba = FC_RGBA_VRGB; - break; - case SubPixelVerticalBGR: - xft_rgba = FC_RGBA_VBGR; - break; - case SubPixelNone: - xft_rgba = FC_RGBA_NONE; - break; - } - } -#endif - } - - if (xft_hinting) { - switch (xft_hintstyle) { - case FC_HINT_NONE: - hint_style = CAIRO_HINT_STYLE_NONE; - break; - case FC_HINT_SLIGHT: - hint_style = CAIRO_HINT_STYLE_SLIGHT; - break; - case FC_HINT_MEDIUM: - hint_style = CAIRO_HINT_STYLE_MEDIUM; - break; - case FC_HINT_FULL: - hint_style = CAIRO_HINT_STYLE_FULL; - break; - default: - hint_style = CAIRO_HINT_STYLE_DEFAULT; - } - } else { - hint_style = CAIRO_HINT_STYLE_NONE; - } - - switch (xft_rgba) { - case FC_RGBA_RGB: - subpixel_order = CAIRO_SUBPIXEL_ORDER_RGB; - break; - case FC_RGBA_BGR: - subpixel_order = CAIRO_SUBPIXEL_ORDER_BGR; - break; - case FC_RGBA_VRGB: - subpixel_order = CAIRO_SUBPIXEL_ORDER_VRGB; - break; - case FC_RGBA_VBGR: - subpixel_order = CAIRO_SUBPIXEL_ORDER_VBGR; - break; - case FC_RGBA_UNKNOWN: - case FC_RGBA_NONE: - default: - subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT; - } - - if (xft_antialias) { - if (subpixel_order == CAIRO_SUBPIXEL_ORDER_DEFAULT) - antialias = CAIRO_ANTIALIAS_GRAY; - else - antialias = CAIRO_ANTIALIAS_SUBPIXEL; - } else { - antialias = CAIRO_ANTIALIAS_NONE; - } - - cairo_font_options_set_hint_style (&info->font_options, hint_style); - cairo_font_options_set_antialias (&info->font_options, antialias); - cairo_font_options_set_subpixel_order (&info->font_options, subpixel_order); - cairo_font_options_set_hint_metrics (&info->font_options, CAIRO_HINT_METRICS_ON); -} - -cairo_xlib_screen_info_t * -_cairo_xlib_screen_info_reference (cairo_xlib_screen_info_t *info) -{ - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&info->ref_count)); - - _cairo_reference_count_inc (&info->ref_count); - - return info; -} - -void -_cairo_xlib_screen_info_close_display (cairo_xlib_screen_info_t *info) -{ - int i; - - for (i = 0; i < ARRAY_LENGTH (info->gc); i++) { - if (info->gc[i] != NULL) { - XFreeGC (info->display->display, info->gc[i]); - info->gc[i] = NULL; - } - } -} - -void -_cairo_xlib_screen_info_destroy (cairo_xlib_screen_info_t *info) -{ - cairo_xlib_screen_info_t **prev; - cairo_xlib_screen_info_t *list; - cairo_xlib_visual_info_t **visuals; - int i; - - assert (CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&info->ref_count)); - - if (! _cairo_reference_count_dec_and_test (&info->ref_count)) - return; - - CAIRO_MUTEX_LOCK (info->display->mutex); - for (prev = &info->display->screens; (list = *prev); prev = &list->next) { - if (list == info) { - *prev = info->next; - break; - } - } - visuals = _cairo_array_index (&info->visuals, 0); - for (i = 0; i < _cairo_array_num_elements (&info->visuals); i++) - _cairo_xlib_visual_info_destroy (info->display->display, visuals[i]); - CAIRO_MUTEX_UNLOCK (info->display->mutex); - - _cairo_xlib_screen_info_close_display (info); - - _cairo_xlib_display_destroy (info->display); - - _cairo_array_fini (&info->visuals); - - free (info); -} - -cairo_xlib_screen_info_t * -_cairo_xlib_screen_info_get (Display *dpy, Screen *screen) -{ - cairo_xlib_display_t *display; - cairo_xlib_screen_info_t *info = NULL, **prev; - - display = _cairo_xlib_display_get (dpy); - if (display == NULL) - return NULL; - - CAIRO_MUTEX_LOCK (display->mutex); - if (display->closed) { - CAIRO_MUTEX_UNLOCK (display->mutex); - goto DONE; - } - - for (prev = &display->screens; (info = *prev); prev = &(*prev)->next) { - if (info->screen == screen) { - /* - * MRU the list - */ - if (prev != &display->screens) { - *prev = info->next; - info->next = display->screens; - display->screens = info; - } - break; - } - } - CAIRO_MUTEX_UNLOCK (display->mutex); - - if (info != NULL) { - info = _cairo_xlib_screen_info_reference (info); - } else { - info = malloc (sizeof (cairo_xlib_screen_info_t)); - if (info != NULL) { - CAIRO_REFERENCE_COUNT_INIT (&info->ref_count, 2); /* Add one for display cache */ - info->display = _cairo_xlib_display_reference (display); - info->screen = screen; - info->has_render = FALSE; - _cairo_font_options_init_default (&info->font_options); - memset (info->gc, 0, sizeof (info->gc)); - info->gc_needs_clip_reset = 0; - - _cairo_array_init (&info->visuals, - sizeof (cairo_xlib_visual_info_t*)); - - if (screen) { - int event_base, error_base; - info->has_render = (XRenderQueryExtension (dpy, &event_base, &error_base) && - (XRenderFindVisualFormat (dpy, DefaultVisual (dpy, DefaultScreen (dpy))) != 0)); - _cairo_xlib_init_screen_font_options (dpy, info); - } - - CAIRO_MUTEX_LOCK (display->mutex); - info->next = display->screens; - display->screens = info; - CAIRO_MUTEX_UNLOCK (display->mutex); - } - } - -DONE: - _cairo_xlib_display_destroy (display); - - return info; -} - -static int -depth_to_index (int depth) -{ - switch(depth){ - case 1: return 1; - case 8: return 2; - case 12: return 3; - case 15: return 4; - case 16: return 5; - case 24: return 6; - case 30: return 7; - case 32: return 8; - } - return 0; -} - -GC -_cairo_xlib_screen_get_gc (cairo_xlib_screen_info_t *info, int depth) -{ - GC gc; - - depth = depth_to_index (depth); - - gc = info->gc[depth]; - info->gc[depth] = NULL; - - if (info->gc_needs_clip_reset & (1 << depth)) { - XSetClipMask(info->display->display, gc, None); - info->gc_needs_clip_reset &= ~(1 << depth); - } - - return gc; -} - -cairo_status_t -_cairo_xlib_screen_put_gc (cairo_xlib_screen_info_t *info, int depth, GC gc, cairo_bool_t reset_clip) -{ - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - depth = depth_to_index (depth); - - if (info->gc[depth] != NULL) { - status = _cairo_xlib_display_queue_work (info->display, - (cairo_xlib_notify_func) XFreeGC, - info->gc[depth], - NULL); - } - - info->gc[depth] = gc; - if (reset_clip) - info->gc_needs_clip_reset |= 1 << depth; - else - info->gc_needs_clip_reset &= ~(1 << depth); - - return status; -} - -cairo_status_t -_cairo_xlib_screen_get_visual_info (cairo_xlib_screen_info_t *info, - Visual *visual, - cairo_xlib_visual_info_t **out) -{ - cairo_xlib_visual_info_t **visuals, *ret = NULL; - cairo_status_t status; - int i, n_visuals; - - CAIRO_MUTEX_LOCK (info->display->mutex); - visuals = _cairo_array_index (&info->visuals, 0); - n_visuals = _cairo_array_num_elements (&info->visuals); - for (i = 0; i < n_visuals; i++) { - if (visuals[i]->visualid == visual->visualid) { - ret = visuals[i]; - break; - } - } - CAIRO_MUTEX_UNLOCK (info->display->mutex); - - if (ret != NULL) { - *out = ret; - return CAIRO_STATUS_SUCCESS; - } - - status = _cairo_xlib_visual_info_create (info->display->display, - XScreenNumberOfScreen (info->screen), - visual->visualid, - &ret); - if (status) - return status; - - CAIRO_MUTEX_LOCK (info->display->mutex); - if (n_visuals != _cairo_array_num_elements (&info->visuals)) { - /* check that another thread has not added our visual */ - int new_visuals = _cairo_array_num_elements (&info->visuals); - visuals = _cairo_array_index (&info->visuals, 0); - for (i = n_visuals; i < new_visuals; i++) { - if (visuals[i]->visualid == visual->visualid) { - _cairo_xlib_visual_info_destroy (info->display->display, ret); - ret = visuals[i]; - break; - } - } - if (i == new_visuals) - status = _cairo_array_append (&info->visuals, &ret); - } else - status = _cairo_array_append (&info->visuals, &ret); - CAIRO_MUTEX_UNLOCK (info->display->mutex); - - if (status) { - _cairo_xlib_visual_info_destroy (info->display->display, ret); - return status; - } - - *out = ret; - return CAIRO_STATUS_SUCCESS; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3525 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - * Behdad Esfahbod - */ - -#include "cairoint.h" - -#include "cairo-xlib-private.h" -#include "cairo-xlib-surface-private.h" -#include "cairo-clip-private.h" - -#include /* for XDestroyImage */ - -/* Xlib doesn't define a typedef, so define one ourselves */ -typedef int (*cairo_xlib_error_func_t) (Display *display, - XErrorEvent *event); - -static cairo_surface_t * -_cairo_xlib_surface_create_internal (Display *dpy, - Drawable drawable, - Screen *screen, - Visual *visual, - XRenderPictFormat *xrender_format, - int width, - int height, - int depth); - -static cairo_status_t -_cairo_xlib_surface_ensure_gc (cairo_xlib_surface_t *surface); - -static void -_cairo_xlib_surface_ensure_src_picture (cairo_xlib_surface_t *surface); - -static void -_cairo_xlib_surface_ensure_dst_picture (cairo_xlib_surface_t *surface); - -static cairo_bool_t -_cairo_surface_is_xlib (cairo_surface_t *surface); - -static cairo_bool_t -_native_byte_order_lsb (void); - -static cairo_int_status_t -_cairo_xlib_surface_show_glyphs (void *abstract_dst, - cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font); - -/* - * Instead of taking two round trips for each blending request, - * assume that if a particular drawable fails GetImage that it will - * fail for a "while"; use temporary pixmaps to avoid the errors - */ - -#define CAIRO_ASSUME_PIXMAP 20 - -static const XTransform identity = { { - { 1 << 16, 0x00000, 0x00000 }, - { 0x00000, 1 << 16, 0x00000 }, - { 0x00000, 0x00000, 1 << 16 }, -} }; - -#define CAIRO_SURFACE_RENDER_AT_LEAST(surface, major, minor) \ - (((surface)->render_major > major) || \ - (((surface)->render_major == major) && ((surface)->render_minor >= minor))) - -#define CAIRO_SURFACE_RENDER_HAS_CREATE_PICTURE(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 0) -#define CAIRO_SURFACE_RENDER_HAS_COMPOSITE(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 0) -#define CAIRO_SURFACE_RENDER_HAS_COMPOSITE_TEXT(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 0) - -#define CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLE(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 1) -#define CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLES(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 1) - -#define CAIRO_SURFACE_RENDER_HAS_DISJOINT(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 2) -#define CAIRO_SURFACE_RENDER_HAS_CONJOINT(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 2) - -#define CAIRO_SURFACE_RENDER_HAS_TRAPEZOIDS(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) -#define CAIRO_SURFACE_RENDER_HAS_TRIANGLES(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) -#define CAIRO_SURFACE_RENDER_HAS_TRISTRIP(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) -#define CAIRO_SURFACE_RENDER_HAS_TRIFAN(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 4) - -#define CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) -#define CAIRO_SURFACE_RENDER_HAS_FILTERS(surface) CAIRO_SURFACE_RENDER_AT_LEAST((surface), 0, 6) - -static XRenderPictFormat * -_CAIRO_FORMAT_TO_XRENDER_FORMAT(Display *dpy, cairo_format_t format) -{ - int pict_format; - switch (format) { - case CAIRO_FORMAT_A1: - pict_format = PictStandardA1; break; - case CAIRO_FORMAT_A8: - pict_format = PictStandardA8; break; - case CAIRO_FORMAT_RGB24: - pict_format = PictStandardRGB24; break; - case CAIRO_FORMAT_ARGB32: - default: - pict_format = PictStandardARGB32; break; - } - return XRenderFindStandardFormat (dpy, pict_format); -} - -static cairo_surface_t * -_cairo_xlib_surface_create_similar_with_format (void *abstract_src, - cairo_format_t format, - int width, - int height) -{ - cairo_xlib_surface_t *src = abstract_src; - Display *dpy = src->dpy; - Pixmap pix; - cairo_xlib_surface_t *surface; - XRenderPictFormat *xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT (dpy, - format); - - /* As a good first approximation, if the display doesn't have even - * the most elementary RENDER operation, then we're better off - * using image surfaces for all temporary operations, so return NULL - * and let the fallback code happen. - */ - if (xrender_format == NULL || ! CAIRO_SURFACE_RENDER_HAS_COMPOSITE (src)) - return NULL; - - pix = XCreatePixmap (dpy, src->drawable, - width <= 0 ? 1 : width, height <= 0 ? 1 : height, - xrender_format->depth); - - surface = (cairo_xlib_surface_t *) - _cairo_xlib_surface_create_internal (dpy, pix, - src->screen, NULL, - xrender_format, - width, height, - xrender_format->depth); - if (surface->base.status) { - XFreePixmap (dpy, pix); - return &surface->base; - } - - surface->owns_pixmap = TRUE; - - return &surface->base; -} - -static cairo_content_t -_xrender_format_to_content (XRenderPictFormat *xrender_format) -{ - cairo_bool_t xrender_format_has_alpha; - cairo_bool_t xrender_format_has_color; - - /* This only happens when using a non-Render server. Let's punt - * and say there's no alpha here. */ - if (xrender_format == NULL) - return CAIRO_CONTENT_COLOR; - - xrender_format_has_alpha = (xrender_format->direct.alphaMask != 0); - xrender_format_has_color = (xrender_format->direct.redMask != 0 || - xrender_format->direct.greenMask != 0 || - xrender_format->direct.blueMask != 0); - - if (xrender_format_has_alpha) - if (xrender_format_has_color) - return CAIRO_CONTENT_COLOR_ALPHA; - else - return CAIRO_CONTENT_ALPHA; - else - return CAIRO_CONTENT_COLOR; -} - -static cairo_surface_t * -_cairo_xlib_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - cairo_xlib_surface_t *src = abstract_src; - XRenderPictFormat *xrender_format = src->xrender_format; - cairo_xlib_surface_t *surface; - Pixmap pix; - - _cairo_xlib_display_notify (src->screen_info->display); - - /* Start by examining the surface's XRenderFormat, or if it - * doesn't have one, then look one up through its visual (in the - * case of a bitmap, it won't even have that). */ - if (xrender_format == NULL && src->visual != NULL) - xrender_format = XRenderFindVisualFormat (src->dpy, src->visual); - - /* If we never found an XRenderFormat or if it isn't compatible - * with the content being requested, then we fallback to just - * constructing a cairo_format_t instead, (which will fairly - * arbitrarily pick a visual/depth for the similar surface. - */ - if (xrender_format == NULL || - _xrender_format_to_content (xrender_format) != content) - { - return _cairo_xlib_surface_create_similar_with_format (abstract_src, - _cairo_format_from_content (content), - width, height); - } - - /* We've got a compatible XRenderFormat now, which means the - * similar surface will match the existing surface as closely in - * visual/depth etc. as possible. */ - pix = XCreatePixmap (src->dpy, src->drawable, - width <= 0 ? 1 : width, height <= 0 ? 1 : height, - xrender_format->depth); - - surface = (cairo_xlib_surface_t *) - _cairo_xlib_surface_create_internal (src->dpy, pix, - src->screen, src->visual, - xrender_format, - width, height, - xrender_format->depth); - if (surface->base.status != CAIRO_STATUS_SUCCESS) { - XFreePixmap (src->dpy, pix); - return &surface->base; - } - - surface->owns_pixmap = TRUE; - - return &surface->base; -} - -static cairo_status_t -_cairo_xlib_surface_finish (void *abstract_surface) -{ - cairo_xlib_surface_t *surface = abstract_surface; - cairo_xlib_display_t *display = surface->screen_info ? - surface->screen_info->display : - NULL; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - if (surface->owns_pixmap) { - cairo_status_t status2; - - if (surface->dst_picture != None) { - status2 = _cairo_xlib_display_queue_resource (display, - XRenderFreePicture, - surface->dst_picture); - if (status2 == CAIRO_STATUS_SUCCESS) - surface->dst_picture = None; - else if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - - if (surface->src_picture != None) { - status2 = _cairo_xlib_display_queue_resource (display, - XRenderFreePicture, - surface->src_picture); - if (status2 == CAIRO_STATUS_SUCCESS) - surface->src_picture = None; - else if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - - status2 = _cairo_xlib_display_queue_resource (display, - (cairo_xlib_notify_resource_func) XFreePixmap, - surface->drawable); - if (status2 == CAIRO_STATUS_SUCCESS) { - surface->owns_pixmap = FALSE; - surface->drawable = None; - } else if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } else { - if (surface->dst_picture != None) - XRenderFreePicture (surface->dpy, surface->dst_picture); - - if (surface->src_picture != None) - XRenderFreePicture (surface->dpy, surface->src_picture); - } - - if (surface->gc != NULL) { - cairo_status_t status2; - status2 = _cairo_xlib_screen_put_gc (surface->screen_info, - surface->depth, - surface->gc, - surface->have_clip_rects); - surface->gc = NULL; - if (status == CAIRO_STATUS_SUCCESS) - status = status2; - } - - if (surface->clip_rects != surface->embedded_clip_rects) - free (surface->clip_rects); - - if (surface->screen_info != NULL) - _cairo_xlib_screen_info_destroy (surface->screen_info); - - if (surface->dpy != NULL) { - _cairo_xlib_remove_close_display_hooks (surface->dpy, surface); - surface->dpy = NULL; - } - - return status; -} - -static int -_noop_error_handler (Display *display, - XErrorEvent *event) -{ - return False; /* return value is ignored */ -} - -static void -_swap_ximage_2bytes (XImage *ximage) -{ - int i, j; - char *line = ximage->data; - - for (j = ximage->height; j; j--) { - uint16_t *p = (uint16_t *)line; - for (i = ximage->width; i; i--) { - *p = (((*p & 0x00ff) << 8) | - ((*p) >> 8)); - p++; - } - - line += ximage->bytes_per_line; - } -} - -static void -_swap_ximage_4bytes (XImage *ximage) -{ - int i, j; - char *line = ximage->data; - - for (j = ximage->height; j; j--) { - uint32_t *p = (uint32_t *)line; - for (i = ximage->width; i; i--) { - *p = (((*p & 0x000000ff) << 24) | - ((*p & 0x0000ff00) << 8) | - ((*p & 0x00ff0000) >> 8) | - ((*p) >> 24)); - p++; - } - - line += ximage->bytes_per_line; - } -} - -static void -_swap_ximage_bits (XImage *ximage) -{ - int i, j; - char *line = ximage->data; - int unit = ximage->bitmap_unit; - int line_bytes = ((ximage->width + unit - 1) & ~(unit - 1)) / 8; - - for (j = ximage->height; j; j--) { - char *p = line; - - for (i = line_bytes; i; i--) { - char b = *p; - b = ((b << 1) & 0xaa) | ((b >> 1) & 0x55); - b = ((b << 2) & 0xcc) | ((b >> 2) & 0x33); - b = ((b << 4) & 0xf0) | ((b >> 4) & 0x0f); - *p = b; - - p++; - } - - line += ximage->bytes_per_line; - } -} - -static void -_swap_ximage_to_native (XImage *ximage) -{ - int unit_bytes = 0; - int native_byte_order = _native_byte_order_lsb () ? LSBFirst : MSBFirst; - - if (ximage->bits_per_pixel == 1 && - ximage->bitmap_bit_order != native_byte_order) { - _swap_ximage_bits (ximage); - if (ximage->bitmap_bit_order == ximage->byte_order) - return; - } - - if (ximage->byte_order == native_byte_order) - return; - - switch (ximage->bits_per_pixel) { - case 1: - unit_bytes = ximage->bitmap_unit / 8; - break; - case 8: - case 16: - case 32: - unit_bytes = ximage->bits_per_pixel / 8; - break; - default: - /* This could be hit on some uncommon but possible cases, - * such as bpp=4. These are cases that libpixman can't deal - * with in any case. - */ - ASSERT_NOT_REACHED; - } - - switch (unit_bytes) { - case 1: - return; - case 2: - _swap_ximage_2bytes (ximage); - break; - case 4: - _swap_ximage_4bytes (ximage); - break; - default: - ASSERT_NOT_REACHED; - } -} - -/* Given a mask, (with a single sequence of contiguous 1 bits), return - * the number of 1 bits in 'width' and the number of 0 bits to its - * right in 'shift'. */ -static inline void -_characterize_field (uint32_t mask, int *width, int *shift) -{ - *width = _cairo_popcount (mask); - /* The final '& 31' is to force a 0 mask to result in 0 shift. */ - *shift = _cairo_popcount ((mask - 1) & ~mask) & 31; -} - -/* Convert a field of 'width' bits to 'new_width' bits with correct - * rounding. */ -static inline uint32_t -_resize_field (uint32_t field, int width, int new_width) -{ - if (width == 0) - return 0; - - if (width >= new_width) { - return field >> (width - new_width); - } else { - uint32_t result = field << (new_width - width); - - while (width < new_width) { - result |= result >> width; - width <<= 1; - } - return result; - } -} - -/* Given a shifted field value, (described by 'width' and 'shift), - * resize it 8-bits and return that value. - * - * Note that the original field value must not have any non-field bits - * set. - */ -static inline uint32_t -_field_to_8 (uint32_t field, int width, int shift) -{ - return _resize_field (field >> shift, width, 8); -} - -/* Given an 8-bit value, convert it to a field of 'width', shift it up - * to 'shift, and return it. */ -static inline uint32_t -_field_from_8 (uint32_t field, int width, int shift) -{ - return _resize_field (field, 8, width) << shift; -} - -static cairo_status_t -_get_image_surface (cairo_xlib_surface_t *surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect) -{ - cairo_int_status_t status; - cairo_image_surface_t *image; - XImage *ximage; - unsigned short x1, y1, x2, y2; - pixman_format_code_t pixman_format; - cairo_format_masks_t xlib_masks; - - x1 = 0; - y1 = 0; - x2 = surface->width; - y2 = surface->height; - - if (interest_rect) { - cairo_rectangle_int_t rect; - - rect.x = interest_rect->x; - rect.y = interest_rect->y; - rect.width = interest_rect->width; - rect.height = interest_rect->height; - - if (rect.x > x1) - x1 = rect.x; - if (rect.y > y1) - y1 = rect.y; - if (rect.x + rect.width < x2) - x2 = rect.x + rect.width; - if (rect.y + rect.height < y2) - y2 = rect.y + rect.height; - - if (x1 >= x2 || y1 >= y2) { - *image_out = NULL; - return CAIRO_STATUS_SUCCESS; - } - } - - if (image_rect) { - image_rect->x = x1; - image_rect->y = y1; - image_rect->width = x2 - x1; - image_rect->height = y2 - y1; - } - - /* XXX: This should try to use the XShm extension if available */ - - if (surface->use_pixmap == 0) - { - cairo_xlib_error_func_t old_handler; - - old_handler = XSetErrorHandler (_noop_error_handler); - - ximage = XGetImage (surface->dpy, - surface->drawable, - x1, y1, - x2 - x1, y2 - y1, - AllPlanes, ZPixmap); - - XSetErrorHandler (old_handler); - - /* If we get an error, the surface must have been a window, - * so retry with the safe code path. - */ - if (!ximage) - surface->use_pixmap = CAIRO_ASSUME_PIXMAP; - } - else - { - surface->use_pixmap--; - ximage = NULL; - } - - if (!ximage) - { - - /* XGetImage from a window is dangerous because it can - * produce errors if the window is unmapped or partially - * outside the screen. We could check for errors and - * retry, but to keep things simple, we just create a - * temporary pixmap - */ - Pixmap pixmap; - cairo_status_t status = _cairo_xlib_surface_ensure_gc (surface); - if (status) - return status; - - pixmap = XCreatePixmap (surface->dpy, - surface->drawable, - x2 - x1, y2 - y1, - surface->depth); - if (pixmap) { - XCopyArea (surface->dpy, surface->drawable, pixmap, surface->gc, - x1, y1, x2 - x1, y2 - y1, 0, 0); - - ximage = XGetImage (surface->dpy, - pixmap, - 0, 0, - x2 - x1, y2 - y1, - AllPlanes, ZPixmap); - - XFreePixmap (surface->dpy, pixmap); - } - } - if (!ximage) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - _swap_ximage_to_native (ximage); - - xlib_masks.bpp = ximage->bits_per_pixel; - xlib_masks.alpha_mask = surface->a_mask; - xlib_masks.red_mask = surface->r_mask; - xlib_masks.green_mask = surface->g_mask; - xlib_masks.blue_mask = surface->b_mask; - - status = _pixman_format_from_masks (&xlib_masks, &pixman_format); - if (status == CAIRO_STATUS_SUCCESS) { - image = (cairo_image_surface_t*) - _cairo_image_surface_create_with_pixman_format ((unsigned char *) ximage->data, - pixman_format, - ximage->width, - ximage->height, - ximage->bytes_per_line); - status = image->base.status; - if (status) { - XDestroyImage (ximage); - return status; - } - - /* Let the surface take ownership of the data */ - _cairo_image_surface_assume_ownership_of_data (image); - ximage->data = NULL; - } else { - cairo_format_t format; - unsigned char *data; - uint32_t *row; - uint32_t in_pixel, out_pixel; - unsigned int rowstride; - uint32_t a_mask=0, r_mask=0, g_mask=0, b_mask=0; - int a_width=0, r_width=0, g_width=0, b_width=0; - int a_shift=0, r_shift=0, g_shift=0, b_shift=0; - int x, y; - XColor *colors = NULL; - - /* The visual we are dealing with is not supported by the - * standard pixman formats. So we must first convert the data - * to a supported format. */ - if (surface->visual->class == TrueColor) { - cairo_bool_t has_color; - cairo_bool_t has_alpha; - - has_color = (surface->r_mask || - surface->g_mask || - surface->b_mask); - has_alpha = surface->a_mask; - - if (has_color) { - if (has_alpha) { - format = CAIRO_FORMAT_ARGB32; - } else { - format = CAIRO_FORMAT_RGB24; - } - } else { - /* XXX: Using CAIRO_FORMAT_A8 here would be more - * efficient, but would require slightly different code in - * the image conversion to put the alpha channel values - * into the right place. */ - format = CAIRO_FORMAT_ARGB32; - } - - a_mask = surface->a_mask; - r_mask = surface->r_mask; - g_mask = surface->g_mask; - b_mask = surface->b_mask; - - _characterize_field (a_mask, &a_width, &a_shift); - _characterize_field (r_mask, &r_width, &r_shift); - _characterize_field (g_mask, &g_width, &g_shift); - _characterize_field (b_mask, &b_width, &b_shift); - - } else { - cairo_xlib_visual_info_t *visual_info; - - format = CAIRO_FORMAT_RGB24; - - status = _cairo_xlib_screen_get_visual_info (surface->screen_info, - surface->visual, - &visual_info); - if (status) { - XDestroyImage (ximage); - return status; - } - - colors = visual_info->colors; - } - - image = (cairo_image_surface_t *) cairo_image_surface_create - (format, ximage->width, ximage->height); - status = image->base.status; - if (status) { - XDestroyImage (ximage); - return status; - } - - data = cairo_image_surface_get_data (&image->base); - rowstride = cairo_image_surface_get_stride (&image->base) >> 2; - row = (uint32_t *) data; - for (y = 0; y < ximage->height; y++) { - for (x = 0; x < ximage->width; x++) { - in_pixel = XGetPixel (ximage, x, y); - if (surface->visual->class == TrueColor) { - out_pixel = ( - _field_to_8 (in_pixel & a_mask, a_width, a_shift) << 24 | - _field_to_8 (in_pixel & r_mask, r_width, r_shift) << 16 | - _field_to_8 (in_pixel & g_mask, g_width, g_shift) << 8 | - _field_to_8 (in_pixel & b_mask, b_width, b_shift)); - } else { - XColor *color; - color = &colors[in_pixel & 0xff]; - out_pixel = ( - _field_to_8 (color->red, 16, 0) << 16 | - _field_to_8 (color->green, 16, 0) << 8 | - _field_to_8 (color->blue, 16, 0)); - } - row[x] = out_pixel; - } - row += rowstride; - } - } - - XDestroyImage (ximage); - - *image_out = image; - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xlib_surface_ensure_src_picture (cairo_xlib_surface_t *surface) -{ - if (!surface->src_picture) - { - XRenderPictureAttributes pa; - int mask = 0; - - pa.subwindow_mode = IncludeInferiors; - mask |= CPSubwindowMode; - - surface->src_picture = XRenderCreatePicture (surface->dpy, - surface->drawable, - surface->xrender_format, - mask, &pa); - } -} - -static void -_cairo_xlib_surface_set_picture_clip_rects (cairo_xlib_surface_t *surface) -{ - if (surface->have_clip_rects) { - XRenderSetPictureClipRectangles (surface->dpy, surface->dst_picture, - 0, 0, - surface->clip_rects, - surface->num_clip_rects); - } else { - XRenderPictureAttributes pa; - pa.clip_mask = None; - XRenderChangePicture (surface->dpy, surface->dst_picture, - CPClipMask, &pa); - } - - surface->clip_dirty &= ~CAIRO_XLIB_SURFACE_CLIP_DIRTY_PICTURE; -} - -static void -_cairo_xlib_surface_set_gc_clip_rects (cairo_xlib_surface_t *surface) -{ - if (surface->have_clip_rects) { - XSetClipRectangles(surface->dpy, surface->gc, - 0, 0, - surface->clip_rects, - surface->num_clip_rects, YXSorted); - } else - XSetClipMask (surface->dpy, surface->gc, None); - - surface->clip_dirty &= ~CAIRO_XLIB_SURFACE_CLIP_DIRTY_GC; -} - -static void -_cairo_xlib_surface_ensure_dst_picture (cairo_xlib_surface_t *surface) -{ - if (!surface->dst_picture) { - surface->dst_picture = XRenderCreatePicture (surface->dpy, - surface->drawable, - surface->xrender_format, - 0, NULL); - _cairo_xlib_surface_set_picture_clip_rects (surface); - } else if (surface->clip_dirty & CAIRO_XLIB_SURFACE_CLIP_DIRTY_PICTURE) - _cairo_xlib_surface_set_picture_clip_rects (surface); -} - -static cairo_status_t -_cairo_xlib_surface_ensure_gc (cairo_xlib_surface_t *surface) -{ - XGCValues gcv; - - if (surface->gc == NULL) { - surface->gc = _cairo_xlib_screen_get_gc (surface->screen_info, - surface->depth); - if (surface->gc == NULL) { - gcv.graphics_exposures = False; - surface->gc = XCreateGC (surface->dpy, surface->drawable, - GCGraphicsExposures, &gcv); - if (!surface->gc) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - _cairo_xlib_surface_set_gc_clip_rects (surface); - } else if (surface->clip_dirty & CAIRO_XLIB_SURFACE_CLIP_DIRTY_GC) - _cairo_xlib_surface_set_gc_clip_rects (surface); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_draw_image_surface (cairo_xlib_surface_t *surface, - cairo_image_surface_t *image, - int src_x, - int src_y, - int width, - int height, - int dst_x, - int dst_y) -{ - XImage ximage; - cairo_format_masks_t image_masks; - int native_byte_order = _native_byte_order_lsb () ? LSBFirst : MSBFirst; - cairo_status_t status; - cairo_bool_t own_data; - unsigned long *rgb333_to_pseudocolor = NULL; - - _pixman_format_to_masks (image->pixman_format, &image_masks); - - ximage.width = image->width; - ximage.height = image->height; - ximage.format = ZPixmap; - ximage.byte_order = native_byte_order; - ximage.bitmap_unit = 32; /* always for libpixman */ - ximage.bitmap_bit_order = native_byte_order; - ximage.bitmap_pad = 32; /* always for libpixman */ - ximage.depth = surface->depth; - ximage.red_mask = surface->r_mask; - ximage.green_mask = surface->g_mask; - ximage.blue_mask = surface->b_mask; - ximage.xoffset = 0; - - if (image_masks.red_mask == surface->r_mask && - image_masks.green_mask == surface->g_mask && - image_masks.blue_mask == surface->b_mask) - { - ximage.bits_per_pixel = image_masks.bpp; - ximage.bytes_per_line = image->stride; - ximage.data = (char *)image->data; - own_data = FALSE; - XInitImage (&ximage); - } else { - unsigned int stride, rowstride; - int x, y; - uint32_t in_pixel, out_pixel, *row; - int a_width=0, r_width=0, g_width=0, b_width=0; - int a_shift=0, r_shift=0, g_shift=0, b_shift=0; - - if (surface->depth > 16) { - ximage.bits_per_pixel = 32; - } else if (surface->depth > 8) { - ximage.bits_per_pixel = 16; - } else if (surface->depth > 1) { - ximage.bits_per_pixel = 8; - } else { - ximage.bits_per_pixel = 1; - } - stride = CAIRO_STRIDE_FOR_WIDTH_BPP (ximage.width, - ximage.bits_per_pixel); - ximage.bytes_per_line = stride; - ximage.data = _cairo_malloc_ab (stride, ximage.height); - if (ximage.data == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - own_data = TRUE; - - XInitImage (&ximage); - - if (surface->visual->class == TrueColor) { - _characterize_field (surface->a_mask, &a_width, &a_shift); - _characterize_field (surface->r_mask, &r_width, &r_shift); - _characterize_field (surface->g_mask, &g_width, &g_shift); - _characterize_field (surface->b_mask, &b_width, &b_shift); - } else { - cairo_xlib_visual_info_t *visual_info; - - status = _cairo_xlib_screen_get_visual_info (surface->screen_info, - surface->visual, - &visual_info); - if (status) - goto BAIL; - - rgb333_to_pseudocolor = visual_info->rgb333_to_pseudocolor; - } - - rowstride = cairo_image_surface_get_stride (&image->base) >> 2; - row = (uint32_t *) cairo_image_surface_get_data (&image->base); - for (y = 0; y < ximage.height; y++) { - for (x = 0; x < ximage.width; x++) { - int a, r, g, b; - in_pixel = row[x]; - a = (in_pixel >> 24) & 0xff; - r = (in_pixel >> 16) & 0xff; - g = (in_pixel >> 8) & 0xff; - b = (in_pixel ) & 0xff; - if (surface->visual->class == TrueColor) - out_pixel = (_field_from_8 (a, a_width, a_shift) | - _field_from_8 (r, r_width, r_shift) | - _field_from_8 (g, g_width, g_shift) | - _field_from_8 (b, b_width, b_shift)); - else - out_pixel = rgb333_to_pseudocolor[_field_from_8 (r, 3, 6) | - _field_from_8 (g, 3, 3) | - _field_from_8 (b, 3, 0)]; - XPutPixel (&ximage, x, y, out_pixel); - } - row += rowstride; - } - } - - status = _cairo_xlib_surface_ensure_gc (surface); - if (status) - goto BAIL; - - XPutImage(surface->dpy, surface->drawable, surface->gc, - &ximage, src_x, src_y, dst_x, dst_y, - width, height); - - BAIL: - if (own_data) - free (ximage.data); - - return status; -} - -static cairo_status_t -_cairo_xlib_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - cairo_xlib_surface_t *surface = abstract_surface; - cairo_image_surface_t *image; - cairo_status_t status; - - _cairo_xlib_display_notify (surface->screen_info->display); - - status = _get_image_surface (surface, NULL, &image, NULL); - if (status) - return status; - - *image_out = image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xlib_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - cairo_surface_destroy (&image->base); -} - -static cairo_status_t -_cairo_xlib_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra) -{ - cairo_xlib_surface_t *surface = abstract_surface; - cairo_image_surface_t *image; - cairo_status_t status; - - _cairo_xlib_display_notify (surface->screen_info->display); - - status = _get_image_surface (surface, interest_rect, &image, image_rect_out); - if (status) - return status; - - *image_out = image; - *image_extra = NULL; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xlib_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - cairo_xlib_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _draw_image_surface (surface, image, - 0, 0, image->width, image->height, - image_rect->x, image_rect->y); - status = _cairo_surface_set_error (&surface->base, status); - - cairo_surface_destroy (&image->base); -} - -/* - * Return whether two xlib surfaces share the same - * screen. Both core and Render drawing require this - * when using multiple drawables in an operation. - */ -static cairo_bool_t -_cairo_xlib_surface_same_screen (cairo_xlib_surface_t *dst, - cairo_xlib_surface_t *src) -{ - return dst->dpy == src->dpy && dst->screen == src->screen; -} - -static cairo_status_t -_cairo_xlib_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - cairo_xlib_surface_t *surface = abstract_surface; - cairo_xlib_surface_t *clone; - cairo_status_t status; - - _cairo_xlib_display_notify (surface->screen_info->display); - - if (src->backend == surface->base.backend ) { - cairo_xlib_surface_t *xlib_src = (cairo_xlib_surface_t *)src; - - if (_cairo_xlib_surface_same_screen (surface, xlib_src)) { - *clone_out = cairo_surface_reference (src); - - return CAIRO_STATUS_SUCCESS; - } - } else if (_cairo_surface_is_image (src)) { - cairo_image_surface_t *image_src = (cairo_image_surface_t *)src; - - if (! CAIRO_FORMAT_VALID (image_src->format)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - clone = (cairo_xlib_surface_t *) - _cairo_xlib_surface_create_similar_with_format (surface, image_src->format, - image_src->width, image_src->height); - if (clone == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - if (clone->base.status) - return clone->base.status; - - status = _draw_image_surface (clone, image_src, src_x, src_y, - width, height, src_x, src_y); - if (status) { - cairo_surface_destroy (&clone->base); - return status; - } - - *clone_out = &clone->base; - - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_status_t -_cairo_xlib_surface_set_matrix (cairo_xlib_surface_t *surface, - cairo_matrix_t *matrix) -{ - XTransform xtransform; - - if (!surface->src_picture) - return CAIRO_STATUS_SUCCESS; - - xtransform.matrix[0][0] = _cairo_fixed_16_16_from_double (matrix->xx); - xtransform.matrix[0][1] = _cairo_fixed_16_16_from_double (matrix->xy); - xtransform.matrix[0][2] = _cairo_fixed_16_16_from_double (matrix->x0); - - xtransform.matrix[1][0] = _cairo_fixed_16_16_from_double (matrix->yx); - xtransform.matrix[1][1] = _cairo_fixed_16_16_from_double (matrix->yy); - xtransform.matrix[1][2] = _cairo_fixed_16_16_from_double (matrix->y0); - - xtransform.matrix[2][0] = 0; - xtransform.matrix[2][1] = 0; - xtransform.matrix[2][2] = 1 << 16; - - if (memcmp (&xtransform, &surface->xtransform, sizeof (XTransform)) == 0) - return CAIRO_STATUS_SUCCESS; - - if (!CAIRO_SURFACE_RENDER_HAS_PICTURE_TRANSFORM (surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - XRenderSetPictureTransform (surface->dpy, surface->src_picture, &xtransform); - surface->xtransform = xtransform; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xlib_surface_set_filter (cairo_xlib_surface_t *surface, - cairo_filter_t filter) -{ - const char *render_filter; - - if (!surface->src_picture) - return CAIRO_STATUS_SUCCESS; - - if (surface->filter == filter) - return CAIRO_STATUS_SUCCESS; - - if (!CAIRO_SURFACE_RENDER_HAS_FILTERS (surface)) - { - if (filter == CAIRO_FILTER_FAST || filter == CAIRO_FILTER_NEAREST) - return CAIRO_STATUS_SUCCESS; - - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - switch (filter) { - case CAIRO_FILTER_FAST: - render_filter = FilterFast; - break; - case CAIRO_FILTER_GOOD: - render_filter = FilterGood; - break; - case CAIRO_FILTER_BEST: - render_filter = FilterBest; - break; - case CAIRO_FILTER_NEAREST: - render_filter = FilterNearest; - break; - case CAIRO_FILTER_BILINEAR: - render_filter = FilterBilinear; - break; - case CAIRO_FILTER_GAUSSIAN: - /* XXX: The GAUSSIAN value has no implementation in cairo - * whatsoever, so it was really a mistake to have it in the - * API. We could fix this by officially deprecating it, or - * else inventing semantics and providing an actual - * implementation for it. */ - default: - render_filter = FilterBest; - break; - } - - XRenderSetPictureFilter (surface->dpy, surface->src_picture, - (char *) render_filter, NULL, 0); - surface->filter = filter; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xlib_surface_set_repeat (cairo_xlib_surface_t *surface, int repeat) -{ - XRenderPictureAttributes pa; - unsigned long mask; - - if (!surface->src_picture) - return CAIRO_STATUS_SUCCESS; - - if (surface->repeat == repeat) - return CAIRO_STATUS_SUCCESS; - - mask = CPRepeat; - pa.repeat = repeat; - - XRenderChangePicture (surface->dpy, surface->src_picture, mask, &pa); - surface->repeat = repeat; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_xlib_surface_set_attributes (cairo_xlib_surface_t *surface, - cairo_surface_attributes_t *attributes) -{ - cairo_int_status_t status; - - _cairo_xlib_surface_ensure_src_picture (surface); - - status = _cairo_xlib_surface_set_matrix (surface, &attributes->matrix); - if (status) - return status; - - switch (attributes->extend) { - case CAIRO_EXTEND_NONE: - status = _cairo_xlib_surface_set_repeat (surface, 0); - break; - case CAIRO_EXTEND_REPEAT: - status = _cairo_xlib_surface_set_repeat (surface, 1); - break; - case CAIRO_EXTEND_REFLECT: - case CAIRO_EXTEND_PAD: - default: - status = CAIRO_INT_STATUS_UNSUPPORTED; - } - if (status) - return status; - - status = _cairo_xlib_surface_set_filter (surface, attributes->filter); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -/* Checks whether we can can directly draw from src to dst with - * the core protocol: either with CopyArea or using src as a - * a tile in a GC. - */ -static cairo_bool_t -_surfaces_compatible (cairo_xlib_surface_t *dst, - cairo_xlib_surface_t *src) -{ - /* same screen */ - if (!_cairo_xlib_surface_same_screen (dst, src)) - return FALSE; - - /* same depth (for core) */ - if (src->depth != dst->depth) - return FALSE; - - /* if Render is supported, match picture formats */ - if (src->xrender_format != NULL && src->xrender_format == dst->xrender_format) - return TRUE; - - /* Without Render, match visuals instead */ - if (src->visual == dst->visual) - return TRUE; - - return FALSE; -} - -static cairo_bool_t -_surface_has_alpha (cairo_xlib_surface_t *surface) -{ - if (surface->xrender_format) { - if (surface->xrender_format->type == PictTypeDirect && - surface->xrender_format->direct.alphaMask != 0) - return TRUE; - else - return FALSE; - } else { - - /* In the no-render case, we never have alpha */ - return FALSE; - } -} - -/* Returns true if the given operator and source-alpha combination - * requires alpha compositing to complete. - */ -static cairo_bool_t -_operator_needs_alpha_composite (cairo_operator_t op, - cairo_bool_t surface_has_alpha) -{ - if (op == CAIRO_OPERATOR_SOURCE || - (!surface_has_alpha && - (op == CAIRO_OPERATOR_OVER || - op == CAIRO_OPERATOR_ATOP || - op == CAIRO_OPERATOR_IN))) - return FALSE; - - return TRUE; -} - -/* There is a bug in most older X servers with compositing using a - * untransformed repeating source pattern when the source is in off-screen - * video memory, and another with repeated transformed images using a - * general transform matrix. When these bugs could be triggered, we need a - * fallback: in the common case where we have no transformation and the - * source and destination have the same format/visual, we can do the - * operation using the core protocol for the first bug, otherwise, we need - * a software fallback. - * - * We can also often optimize a compositing operation by calling XCopyArea - * for some common cases where there is no alpha compositing to be done. - * We figure that out here as well. - */ -typedef enum { - DO_RENDER, /* use render */ - DO_XCOPYAREA, /* core protocol XCopyArea optimization/fallback */ - DO_XTILE, /* core protocol XSetTile optimization/fallback */ - DO_UNSUPPORTED /* software fallback */ -} composite_operation_t; - -/* Initial check for the render bugs; we need to recheck for the - * offscreen-memory bug after we turn patterns into surfaces, since that - * may introduce a repeating pattern for gradient patterns. We don't need - * to check for the repeat+transform bug because gradient surfaces aren't - * transformed. - * - * All we do here is reject cases where we *know* are going to - * hit the bug and won't be able to use a core protocol fallback. - */ -static composite_operation_t -_categorize_composite_operation (cairo_xlib_surface_t *dst, - cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_bool_t have_mask) - -{ - if (!dst->buggy_repeat) - return DO_RENDER; - - if (src_pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *)src_pattern; - - if (_cairo_matrix_is_integer_translation (&src_pattern->matrix, NULL, NULL) && - src_pattern->extend == CAIRO_EXTEND_REPEAT) - { - /* This is the case where we have the bug involving - * untransformed repeating source patterns with off-screen - * video memory; reject some cases where a core protocol - * fallback is impossible. - */ - if (have_mask || - !(op == CAIRO_OPERATOR_SOURCE || op == CAIRO_OPERATOR_OVER)) - return DO_UNSUPPORTED; - - if (_cairo_surface_is_xlib (surface_pattern->surface)) { - cairo_xlib_surface_t *src = (cairo_xlib_surface_t *)surface_pattern->surface; - - if (op == CAIRO_OPERATOR_OVER && _surface_has_alpha (src)) - return DO_UNSUPPORTED; - - /* If these are on the same screen but otherwise incompatible, - * make a copy as core drawing can't cross depths and doesn't - * work right across visuals of the same depth - */ - if (_cairo_xlib_surface_same_screen (dst, src) && - !_surfaces_compatible (dst, src)) - return DO_UNSUPPORTED; - } - } - - /* Check for the other bug involving repeat patterns with general - * transforms. */ - if (!_cairo_matrix_is_integer_translation (&src_pattern->matrix, NULL, NULL) && - src_pattern->extend == CAIRO_EXTEND_REPEAT) - return DO_UNSUPPORTED; - } - - return DO_RENDER; -} - -/* Recheck for composite-repeat once we've turned patterns into Xlib surfaces - * If we end up returning DO_UNSUPPORTED here, we're throwing away work we - * did to turn gradients into a pattern, but most of the time we can handle - * that case with core protocol fallback. - * - * Also check here if we can just use XCopyArea, instead of going through - * Render. - */ -static composite_operation_t -_recategorize_composite_operation (cairo_xlib_surface_t *dst, - cairo_operator_t op, - cairo_xlib_surface_t *src, - cairo_surface_attributes_t *src_attr, - cairo_bool_t have_mask) -{ - cairo_bool_t is_integer_translation = - _cairo_matrix_is_integer_translation (&src_attr->matrix, NULL, NULL); - cairo_bool_t needs_alpha_composite; - - if (!_cairo_surface_is_xlib (&src->base)) - return DO_UNSUPPORTED; - - needs_alpha_composite = - _operator_needs_alpha_composite (op, _surface_has_alpha (src)); - - if (!have_mask && - is_integer_translation && - src_attr->extend == CAIRO_EXTEND_NONE && - !needs_alpha_composite && - _surfaces_compatible(src, dst)) - { - return DO_XCOPYAREA; - } - - if (dst->buggy_repeat && - is_integer_translation && - src_attr->extend == CAIRO_EXTEND_REPEAT && - (src->width != 1 || src->height != 1)) - { - if (!have_mask && - !needs_alpha_composite && - _surfaces_compatible (dst, src)) - { - return DO_XTILE; - } - - return DO_UNSUPPORTED; - } - - if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE (src)) - return DO_UNSUPPORTED; - - return DO_RENDER; -} - -static int -_render_operator (cairo_operator_t op) -{ - switch (op) { - case CAIRO_OPERATOR_CLEAR: - return PictOpClear; - - case CAIRO_OPERATOR_SOURCE: - return PictOpSrc; - case CAIRO_OPERATOR_OVER: - return PictOpOver; - case CAIRO_OPERATOR_IN: - return PictOpIn; - case CAIRO_OPERATOR_OUT: - return PictOpOut; - case CAIRO_OPERATOR_ATOP: - return PictOpAtop; - - case CAIRO_OPERATOR_DEST: - return PictOpDst; - case CAIRO_OPERATOR_DEST_OVER: - return PictOpOverReverse; - case CAIRO_OPERATOR_DEST_IN: - return PictOpInReverse; - case CAIRO_OPERATOR_DEST_OUT: - return PictOpOutReverse; - case CAIRO_OPERATOR_DEST_ATOP: - return PictOpAtopReverse; - - case CAIRO_OPERATOR_XOR: - return PictOpXor; - case CAIRO_OPERATOR_ADD: - return PictOpAdd; - case CAIRO_OPERATOR_SATURATE: - return PictOpSaturate; - default: - return PictOpOver; - } -} - -static cairo_int_status_t -_cairo_xlib_surface_composite (cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_pattern_t *mask_pattern, - void *abstract_dst, - int src_x, - int src_y, - int mask_x, - int mask_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height) -{ - cairo_surface_attributes_t src_attr, mask_attr; - cairo_xlib_surface_t *dst = abstract_dst; - cairo_xlib_surface_t *src; - cairo_xlib_surface_t *mask; - cairo_int_status_t status; - composite_operation_t operation; - int itx, ity; - cairo_bool_t is_integer_translation; - - _cairo_xlib_display_notify (dst->screen_info->display); - - if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE (dst)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - operation = _categorize_composite_operation (dst, op, src_pattern, - mask_pattern != NULL); - if (operation == DO_UNSUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_pattern_acquire_surfaces (src_pattern, mask_pattern, - &dst->base, - src_x, src_y, - mask_x, mask_y, - width, height, - (cairo_surface_t **) &src, - (cairo_surface_t **) &mask, - &src_attr, &mask_attr); - if (status) - return status; - - /* check for fallback surfaces that we cannot handle ... */ - if (!_cairo_surface_is_xlib (&src->base)) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - if (mask != NULL && !_cairo_surface_is_xlib (&mask->base)) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - operation = _recategorize_composite_operation (dst, op, src, &src_attr, - mask_pattern != NULL); - if (operation == DO_UNSUPPORTED) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - switch (operation) - { - case DO_RENDER: - status = _cairo_xlib_surface_set_attributes (src, &src_attr); - if (status) - goto BAIL; - - _cairo_xlib_surface_ensure_dst_picture (dst); - if (mask) { - status = _cairo_xlib_surface_set_attributes (mask, &mask_attr); - if (status) - goto BAIL; - - XRenderComposite (dst->dpy, - _render_operator (op), - src->src_picture, - mask->src_picture, - dst->dst_picture, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - mask_x + mask_attr.x_offset, - mask_y + mask_attr.y_offset, - dst_x, dst_y, - width, height); - } else { - XRenderComposite (dst->dpy, - _render_operator (op), - src->src_picture, - 0, - dst->dst_picture, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - } - - break; - - case DO_XCOPYAREA: - status = _cairo_xlib_surface_ensure_gc (dst); - if (status) - goto BAIL; - XCopyArea (dst->dpy, - src->drawable, - dst->drawable, - dst->gc, - src_x + src_attr.x_offset, - src_y + src_attr.y_offset, - width, height, - dst_x, dst_y); - break; - - case DO_XTILE: - /* This case is only used for bug fallbacks, though it is theoretically - * applicable to the case where we don't have the RENDER extension as - * well. - * - * We've checked that we have a repeating unscaled source in - * _recategorize_composite_operation. - */ - - status = _cairo_xlib_surface_ensure_gc (dst); - if (status) - goto BAIL; - is_integer_translation = _cairo_matrix_is_integer_translation (&src_attr.matrix, - &itx, &ity); - /* This is a pre-condition for DO_XTILE. */ - assert (is_integer_translation); - - XSetTSOrigin (dst->dpy, dst->gc, - - (itx + src_attr.x_offset), - (ity + src_attr.y_offset)); - XSetTile (dst->dpy, dst->gc, src->drawable); - XSetFillStyle (dst->dpy, dst->gc, FillTiled); - - XFillRectangle (dst->dpy, dst->drawable, dst->gc, - dst_x, dst_y, width, height); - break; - - case DO_UNSUPPORTED: - default: - ASSERT_NOT_REACHED; - } - - if (!_cairo_operator_bounded_by_source (op)) - status = _cairo_surface_composite_fixup_unbounded (&dst->base, - &src_attr, src->width, src->height, - mask ? &mask_attr : NULL, - mask ? mask->width : 0, - mask ? mask->height : 0, - src_x, src_y, - mask_x, mask_y, - dst_x, dst_y, width, height); - - BAIL: - if (mask) - _cairo_pattern_release_surface (mask_pattern, &mask->base, &mask_attr); - - _cairo_pattern_release_surface (src_pattern, &src->base, &src_attr); - - return status; -} - -static cairo_int_status_t -_cairo_xlib_surface_fill_rectangles (void *abstract_surface, - cairo_operator_t op, - const cairo_color_t *color, - cairo_rectangle_int_t *rects, - int num_rects) -{ - cairo_xlib_surface_t *surface = abstract_surface; - XRenderColor render_color; - XRectangle static_xrects[16]; - XRectangle *xrects = static_xrects; - int i; - - _cairo_xlib_display_notify (surface->screen_info->display); - - if (!CAIRO_SURFACE_RENDER_HAS_FILL_RECTANGLE (surface)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - render_color.red = color->red_short; - render_color.green = color->green_short; - render_color.blue = color->blue_short; - render_color.alpha = color->alpha_short; - - if (num_rects > ARRAY_LENGTH(static_xrects)) { - xrects = _cairo_malloc_ab (num_rects, sizeof(XRectangle)); - if (xrects == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - for (i = 0; i < num_rects; i++) { - xrects[i].x = rects[i].x; - xrects[i].y = rects[i].y; - xrects[i].width = rects[i].width; - xrects[i].height = rects[i].height; - } - - _cairo_xlib_surface_ensure_dst_picture (surface); - XRenderFillRectangles (surface->dpy, - _render_operator (op), - surface->dst_picture, - &render_color, xrects, num_rects); - - if (xrects != static_xrects) - free(xrects); - - return CAIRO_STATUS_SUCCESS; -} - -/* Creates an A8 picture of size @width x @height, initialized with @color - */ -static Picture -_create_a8_picture (cairo_xlib_surface_t *surface, - XRenderColor *color, - int width, - int height, - cairo_bool_t repeat) -{ - XRenderPictureAttributes pa; - unsigned long mask = 0; - - Pixmap pixmap = XCreatePixmap (surface->dpy, surface->drawable, - width <= 0 ? 1 : width, - height <= 0 ? 1 : height, - 8); - Picture picture; - - if (repeat) { - pa.repeat = TRUE; - mask = CPRepeat; - } - - picture = XRenderCreatePicture (surface->dpy, pixmap, - XRenderFindStandardFormat (surface->dpy, PictStandardA8), - mask, &pa); - XRenderFillRectangle (surface->dpy, PictOpSrc, picture, color, - 0, 0, width, height); - XFreePixmap (surface->dpy, pixmap); - - return picture; -} - -/* Creates a temporary mask for the trapezoids covering the area - * [@dst_x, @dst_y, @width, @height] of the destination surface. - */ -static Picture -_create_trapezoid_mask (cairo_xlib_surface_t *dst, - cairo_trapezoid_t *traps, - int num_traps, - int dst_x, - int dst_y, - int width, - int height, - XRenderPictFormat *pict_format) -{ - XRenderColor transparent = { 0, 0, 0, 0 }; - XRenderColor solid = { 0xffff, 0xffff, 0xffff, 0xffff }; - Picture mask_picture, solid_picture; - XTrapezoid *offset_traps; - int i; - - /* This would be considerably simpler using XRenderAddTraps(), but since - * we are only using this in the unbounded-operator case, we stick with - * XRenderCompositeTrapezoids, which is available on older versions - * of RENDER rather than conditionalizing. We should still hit an - * optimization that avoids creating another intermediate surface on - * the servers that have XRenderAddTraps(). - */ - mask_picture = _create_a8_picture (dst, &transparent, width, height, FALSE); - if (num_traps == 0) - return mask_picture; - - offset_traps = _cairo_malloc_ab (num_traps, sizeof (XTrapezoid)); - if (!offset_traps) { - XRenderFreePicture (dst->dpy, mask_picture); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return None; - } - - for (i = 0; i < num_traps; i++) { - offset_traps[i].top = _cairo_fixed_to_16_16(traps[i].top) - 0x10000 * dst_y; - offset_traps[i].bottom = _cairo_fixed_to_16_16(traps[i].bottom) - 0x10000 * dst_y; - offset_traps[i].left.p1.x = _cairo_fixed_to_16_16(traps[i].left.p1.x) - 0x10000 * dst_x; - offset_traps[i].left.p1.y = _cairo_fixed_to_16_16(traps[i].left.p1.y) - 0x10000 * dst_y; - offset_traps[i].left.p2.x = _cairo_fixed_to_16_16(traps[i].left.p2.x) - 0x10000 * dst_x; - offset_traps[i].left.p2.y = _cairo_fixed_to_16_16(traps[i].left.p2.y) - 0x10000 * dst_y; - offset_traps[i].right.p1.x = _cairo_fixed_to_16_16(traps[i].right.p1.x) - 0x10000 * dst_x; - offset_traps[i].right.p1.y = _cairo_fixed_to_16_16(traps[i].right.p1.y) - 0x10000 * dst_y; - offset_traps[i].right.p2.x = _cairo_fixed_to_16_16(traps[i].right.p2.x) - 0x10000 * dst_x; - offset_traps[i].right.p2.y = _cairo_fixed_to_16_16(traps[i].right.p2.y) - 0x10000 * dst_y; - } - - solid_picture = _create_a8_picture (dst, &solid, width, height, TRUE); - - XRenderCompositeTrapezoids (dst->dpy, PictOpAdd, - solid_picture, mask_picture, - pict_format, - 0, 0, - offset_traps, num_traps); - - XRenderFreePicture (dst->dpy, solid_picture); - free (offset_traps); - - return mask_picture; -} - -static cairo_int_status_t -_cairo_xlib_surface_composite_trapezoids (cairo_operator_t op, - cairo_pattern_t *pattern, - void *abstract_dst, - cairo_antialias_t antialias, - int src_x, - int src_y, - int dst_x, - int dst_y, - unsigned int width, - unsigned int height, - cairo_trapezoid_t *traps, - int num_traps) -{ - cairo_surface_attributes_t attributes; - cairo_xlib_surface_t *dst = abstract_dst; - cairo_xlib_surface_t *src; - cairo_int_status_t status; - composite_operation_t operation; - int render_reference_x, render_reference_y; - int render_src_x, render_src_y; - XRenderPictFormat *pict_format; - - _cairo_xlib_display_notify (dst->screen_info->display); - - if (!CAIRO_SURFACE_RENDER_HAS_TRAPEZOIDS (dst)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - operation = _categorize_composite_operation (dst, op, pattern, TRUE); - if (operation == DO_UNSUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - status = _cairo_pattern_acquire_surface (pattern, &dst->base, - src_x, src_y, width, height, - (cairo_surface_t **) &src, - &attributes); - if (status) - return status; - - operation = _recategorize_composite_operation (dst, op, src, &attributes, TRUE); - if (operation == DO_UNSUPPORTED) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL; - } - - switch (antialias) { - case CAIRO_ANTIALIAS_NONE: - pict_format = XRenderFindStandardFormat (dst->dpy, PictStandardA1); - break; - case CAIRO_ANTIALIAS_GRAY: - case CAIRO_ANTIALIAS_SUBPIXEL: - case CAIRO_ANTIALIAS_DEFAULT: - default: - pict_format = XRenderFindStandardFormat (dst->dpy, PictStandardA8); - break; - } - - if (traps[0].left.p1.y < traps[0].left.p2.y) { - render_reference_x = _cairo_fixed_integer_floor (traps[0].left.p1.x); - render_reference_y = _cairo_fixed_integer_floor (traps[0].left.p1.y); - } else { - render_reference_x = _cairo_fixed_integer_floor (traps[0].left.p2.x); - render_reference_y = _cairo_fixed_integer_floor (traps[0].left.p2.y); - } - - render_src_x = src_x + render_reference_x - dst_x; - render_src_y = src_y + render_reference_y - dst_y; - - _cairo_xlib_surface_ensure_dst_picture (dst); - status = _cairo_xlib_surface_set_attributes (src, &attributes); - if (status) - goto BAIL; - - if (!_cairo_operator_bounded_by_mask (op)) { - /* XRenderCompositeTrapezoids() creates a mask only large enough for the - * trapezoids themselves, but if the operator is unbounded, then we need - * to actually composite all the way out to the bounds, so we create - * the mask and composite ourselves. There actually would - * be benefit to doing this in all cases, since RENDER implementations - * will frequently create a too temporary big mask, ignoring destination - * bounds and clip. (XRenderAddTraps() could be used to make creating - * the mask somewhat cheaper.) - */ - Picture mask_picture = _create_trapezoid_mask (dst, traps, num_traps, - dst_x, dst_y, width, height, - pict_format); - if (!mask_picture) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - - XRenderComposite (dst->dpy, - _render_operator (op), - src->src_picture, - mask_picture, - dst->dst_picture, - src_x + attributes.x_offset, - src_y + attributes.y_offset, - 0, 0, - dst_x, dst_y, - width, height); - - XRenderFreePicture (dst->dpy, mask_picture); - - status = _cairo_surface_composite_shape_fixup_unbounded (&dst->base, - &attributes, src->width, src->height, - width, height, - src_x, src_y, - 0, 0, - dst_x, dst_y, width, height); - - } else { - XTrapezoid xtraps_stack[16]; - XTrapezoid *xtraps = xtraps_stack; - int i; - - if (num_traps > ARRAY_LENGTH(xtraps_stack)) { - xtraps = _cairo_malloc_ab (num_traps, sizeof(XTrapezoid)); - if (xtraps == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - } - - for (i = 0; i < num_traps; i++) { - xtraps[i].top = _cairo_fixed_to_16_16(traps[i].top); - xtraps[i].bottom = _cairo_fixed_to_16_16(traps[i].bottom); - xtraps[i].left.p1.x = _cairo_fixed_to_16_16(traps[i].left.p1.x); - xtraps[i].left.p1.y = _cairo_fixed_to_16_16(traps[i].left.p1.y); - xtraps[i].left.p2.x = _cairo_fixed_to_16_16(traps[i].left.p2.x); - xtraps[i].left.p2.y = _cairo_fixed_to_16_16(traps[i].left.p2.y); - xtraps[i].right.p1.x = _cairo_fixed_to_16_16(traps[i].right.p1.x); - xtraps[i].right.p1.y = _cairo_fixed_to_16_16(traps[i].right.p1.y); - xtraps[i].right.p2.x = _cairo_fixed_to_16_16(traps[i].right.p2.x); - xtraps[i].right.p2.y = _cairo_fixed_to_16_16(traps[i].right.p2.y); - } - - XRenderCompositeTrapezoids (dst->dpy, - _render_operator (op), - src->src_picture, dst->dst_picture, - pict_format, - render_src_x + attributes.x_offset, - render_src_y + attributes.y_offset, - xtraps, num_traps); - - if (xtraps != xtraps_stack) - free(xtraps); - } - - BAIL: - _cairo_pattern_release_surface (pattern, &src->base, &attributes); - - return status; -} - -static cairo_int_status_t -_cairo_xlib_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - cairo_xlib_surface_t *surface = abstract_surface; - - if (surface->have_clip_rects == FALSE && region == NULL) - return CAIRO_STATUS_SUCCESS; - - if (surface->clip_rects != surface->embedded_clip_rects) { - free (surface->clip_rects); - surface->clip_rects = surface->embedded_clip_rects; - } - - surface->have_clip_rects = FALSE; - surface->num_clip_rects = 0; - - if (region != NULL) { - cairo_box_int_t *boxes; - cairo_status_t status; - XRectangle *rects = NULL; - int n_boxes, i; - - status = _cairo_region_get_boxes (region, &n_boxes, &boxes); - if (status) - return status; - - if (n_boxes > ARRAY_LENGTH (surface->embedded_clip_rects)) { - rects = _cairo_malloc_ab (n_boxes, sizeof(XRectangle)); - if (rects == NULL) { - _cairo_region_boxes_fini (region, boxes); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - } else { - rects = surface->embedded_clip_rects; - } - - for (i = 0; i < n_boxes; i++) { - rects[i].x = boxes[i].p1.x; - rects[i].y = boxes[i].p1.y; - rects[i].width = boxes[i].p2.x - boxes[i].p1.x; - rects[i].height = boxes[i].p2.y - boxes[i].p1.y; - } - - _cairo_region_boxes_fini (region, boxes); - - surface->have_clip_rects = TRUE; - surface->clip_rects = rects; - surface->num_clip_rects = n_boxes; - } - - surface->clip_dirty = CAIRO_XLIB_SURFACE_CLIP_DIRTY_ALL; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_cairo_xlib_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - cairo_xlib_surface_t *surface = abstract_surface; - - rectangle->x = 0; - rectangle->y = 0; - - rectangle->width = surface->width; - rectangle->height = surface->height; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xlib_surface_get_font_options (void *abstract_surface, - cairo_font_options_t *options) -{ - cairo_xlib_surface_t *surface = abstract_surface; - - *options = surface->screen_info->font_options; -} - -static void -_cairo_xlib_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font); - -static void -_cairo_xlib_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font); - -static cairo_bool_t -_cairo_xlib_surface_is_similar (void *surface_a, - void *surface_b, - cairo_content_t content) -{ - cairo_xlib_surface_t *a = surface_a; - cairo_xlib_surface_t *b = surface_b; - XRenderPictFormat *xrender_format = b->xrender_format; - - if (!_cairo_xlib_surface_same_screen (a, b)) - return FALSE; - - /* now inspect the content to check that a is similar to b */ - if (xrender_format == NULL && b->visual != NULL) - xrender_format = XRenderFindVisualFormat (b->dpy, b->visual); - - if (xrender_format == NULL || - _xrender_format_to_content (xrender_format) != content) - { - xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT (b->dpy, - _cairo_format_from_content (content)); - } - - - return a->xrender_format == xrender_format; -} - -static cairo_status_t -_cairo_xlib_surface_reset (void *abstract_surface) -{ - cairo_xlib_surface_t *surface = abstract_surface; - cairo_status_t status; - - status = _cairo_xlib_surface_set_clip_region (surface, NULL); - if (status) - return status; - - return CAIRO_STATUS_SUCCESS; -} - -static const cairo_surface_backend_t cairo_xlib_surface_backend = { - CAIRO_SURFACE_TYPE_XLIB, - _cairo_xlib_surface_create_similar, - _cairo_xlib_surface_finish, - _cairo_xlib_surface_acquire_source_image, - _cairo_xlib_surface_release_source_image, - _cairo_xlib_surface_acquire_dest_image, - _cairo_xlib_surface_release_dest_image, - _cairo_xlib_surface_clone_similar, - _cairo_xlib_surface_composite, - _cairo_xlib_surface_fill_rectangles, - _cairo_xlib_surface_composite_trapezoids, - NULL, /* copy_page */ - NULL, /* show_page */ - _cairo_xlib_surface_set_clip_region, - NULL, /* intersect_clip_path */ - _cairo_xlib_surface_get_extents, - NULL, /* old_show_glyphs */ - _cairo_xlib_surface_get_font_options, - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - _cairo_xlib_surface_scaled_font_fini, - _cairo_xlib_surface_scaled_glyph_fini, - - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - _cairo_xlib_surface_show_glyphs, - NULL, /* snapshot */ - _cairo_xlib_surface_is_similar, - - _cairo_xlib_surface_reset -}; - -/** - * _cairo_surface_is_xlib: - * @surface: a #cairo_surface_t - * - * Checks if a surface is a #cairo_xlib_surface_t - * - * Return value: True if the surface is an xlib surface - **/ -static cairo_bool_t -_cairo_surface_is_xlib (cairo_surface_t *surface) -{ - return surface->backend == &cairo_xlib_surface_backend; -} - -static void -_cairo_xlib_surface_detach_display (Display *dpy, void *data) -{ - cairo_xlib_surface_t *surface = data; - - surface->dpy = NULL; - - if (surface->dst_picture != None) { - XRenderFreePicture (dpy, surface->dst_picture); - surface->dst_picture = None; - } - - if (surface->src_picture != None) { - XRenderFreePicture (dpy, surface->src_picture); - surface->src_picture = None; - } - - if (surface->owns_pixmap) { - XFreePixmap (dpy, surface->drawable); - surface->drawable = None; - surface->owns_pixmap = FALSE; - } - - if (surface->gc != NULL) { - XFreeGC (dpy, surface->gc); - surface->gc = NULL; - } -} - -static cairo_surface_t * -_cairo_xlib_surface_create_internal (Display *dpy, - Drawable drawable, - Screen *screen, - Visual *visual, - XRenderPictFormat *xrender_format, - int width, - int height, - int depth) -{ - cairo_xlib_surface_t *surface; - cairo_xlib_screen_info_t *screen_info; - - CAIRO_MUTEX_INITIALIZE (); - - screen_info = _cairo_xlib_screen_info_get (dpy, screen); - if (screen_info == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - surface = malloc (sizeof (cairo_xlib_surface_t)); - if (surface == NULL) { - _cairo_xlib_screen_info_destroy (screen_info); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - if (! _cairo_xlib_add_close_display_hook (dpy, - _cairo_xlib_surface_detach_display, surface, surface)) { - free (surface); - _cairo_xlib_screen_info_destroy (screen_info); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - if (xrender_format) { - depth = xrender_format->depth; - } else if (visual) { - int j, k; - - /* This is ugly, but we have to walk over all visuals - * for the display to find the depth. - */ - for (j = 0; j < screen->ndepths; j++) { - Depth *d = &screen->depths[j]; - for (k = 0; k < d->nvisuals; k++) { - if (&d->visuals[k] == visual) { - depth = d->depth; - goto found; - } - } - } - found: - ; - } - - if (! XRenderQueryVersion (dpy, &surface->render_major, &surface->render_minor)) { - surface->render_major = -1; - surface->render_minor = -1; - } - - if (CAIRO_SURFACE_RENDER_HAS_CREATE_PICTURE (surface)) { - if (!xrender_format) { - if (visual) - xrender_format = XRenderFindVisualFormat (dpy, visual); - else if (depth == 1) - xrender_format = XRenderFindStandardFormat (dpy, PictStandardA1); - } - } else { - xrender_format = NULL; - } - - _cairo_surface_init (&surface->base, &cairo_xlib_surface_backend, - _xrender_format_to_content (xrender_format)); - - surface->dpy = dpy; - surface->screen_info = screen_info; - - surface->gc = NULL; - surface->drawable = drawable; - surface->screen = screen; - surface->owns_pixmap = FALSE; - surface->use_pixmap = 0; - surface->width = width; - surface->height = height; - - surface->buggy_repeat = screen_info->display->buggy_repeat; - - surface->dst_picture = None; - surface->src_picture = None; - - surface->visual = visual; - surface->xrender_format = xrender_format; - surface->depth = depth; - surface->filter = CAIRO_FILTER_NEAREST; - surface->repeat = FALSE; - surface->xtransform = identity; - - surface->have_clip_rects = FALSE; - surface->clip_rects = surface->embedded_clip_rects; - surface->num_clip_rects = 0; - - /* - * Compute the pixel format masks from either a XrenderFormat or - * else from a visual; failing that we assume the drawable is an - * alpha-only pixmap as it could only have been created that way - * through the cairo_xlib_surface_create_for_bitmap function. - */ - if (xrender_format) { - surface->a_mask = (unsigned long) - surface->xrender_format->direct.alphaMask - << surface->xrender_format->direct.alpha; - surface->r_mask = (unsigned long) - surface->xrender_format->direct.redMask - << surface->xrender_format->direct.red; - surface->g_mask = (unsigned long) - surface->xrender_format->direct.greenMask - << surface->xrender_format->direct.green; - surface->b_mask = (unsigned long) - surface->xrender_format->direct.blueMask - << surface->xrender_format->direct.blue; - } else if (visual) { - surface->a_mask = 0; - surface->r_mask = visual->red_mask; - surface->g_mask = visual->green_mask; - surface->b_mask = visual->blue_mask; - } else { - if (depth < 32) - surface->a_mask = (1 << depth) - 1; - else - surface->a_mask = 0xffffffff; - surface->r_mask = 0; - surface->g_mask = 0; - surface->b_mask = 0; - } - - return (cairo_surface_t *) surface; -} - -static Screen * -_cairo_xlib_screen_from_visual (Display *dpy, Visual *visual) -{ - int s; - int d; - int v; - Screen *screen; - Depth *depth; - - for (s = 0; s < ScreenCount (dpy); s++) { - screen = ScreenOfDisplay (dpy, s); - if (visual == DefaultVisualOfScreen (screen)) - return screen; - for (d = 0; d < screen->ndepths; d++) { - depth = &screen->depths[d]; - for (v = 0; v < depth->nvisuals; v++) - if (visual == &depth->visuals[v]) - return screen; - } - } - return NULL; -} - -/** - * cairo_xlib_surface_create: - * @dpy: an X Display - * @drawable: an X Drawable, (a Pixmap or a Window) - * @visual: the visual to use for drawing to @drawable. The depth - * of the visual must match the depth of the drawable. - * Currently, only TrueColor visuals are fully supported. - * @width: the current width of @drawable. - * @height: the current height of @drawable. - * - * Creates an Xlib surface that draws to the given drawable. - * The way that colors are represented in the drawable is specified - * by the provided visual. - * - * Note: If @drawable is a Window, then the function - * cairo_xlib_surface_set_size must be called whenever the size of the - * window changes. - * - * When @drawable is a Window containing child windows then drawing to - * the created surface will be clipped by those child windows. When - * the created surface is used as a source, the contents of the - * children will be included. - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_xlib_surface_create (Display *dpy, - Drawable drawable, - Visual *visual, - int width, - int height) -{ - Screen *screen = _cairo_xlib_screen_from_visual (dpy, visual); - - if (screen == NULL) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_VISUAL)); - - return _cairo_xlib_surface_create_internal (dpy, drawable, screen, - visual, NULL, width, height, 0); -} - -/** - * cairo_xlib_surface_create_for_bitmap: - * @dpy: an X Display - * @bitmap: an X Drawable, (a depth-1 Pixmap) - * @screen: the X Screen associated with @bitmap - * @width: the current width of @bitmap. - * @height: the current height of @bitmap. - * - * Creates an Xlib surface that draws to the given bitmap. - * This will be drawn to as a %CAIRO_FORMAT_A1 object. - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_xlib_surface_create_for_bitmap (Display *dpy, - Pixmap bitmap, - Screen *screen, - int width, - int height) -{ - return _cairo_xlib_surface_create_internal (dpy, bitmap, screen, - NULL, NULL, width, height, 1); -} - -#if CAIRO_HAS_XLIB_XRENDER_SURFACE -/** - * cairo_xlib_surface_create_with_xrender_format: - * @dpy: an X Display - * @drawable: an X Drawable, (a Pixmap or a Window) - * @screen: the X Screen associated with @drawable - * @format: the picture format to use for drawing to @drawable. The depth - * of @format must match the depth of the drawable. - * @width: the current width of @drawable. - * @height: the current height of @drawable. - * - * Creates an Xlib surface that draws to the given drawable. - * The way that colors are represented in the drawable is specified - * by the provided picture format. - * - * Note: If @drawable is a Window, then the function - * cairo_xlib_surface_set_size must be called whenever the size of the - * window changes. - * - * Return value: the newly created surface - **/ -cairo_surface_t * -cairo_xlib_surface_create_with_xrender_format (Display *dpy, - Drawable drawable, - Screen *screen, - XRenderPictFormat *format, - int width, - int height) -{ - return _cairo_xlib_surface_create_internal (dpy, drawable, screen, - NULL, format, width, height, 0); -} - -/** - * cairo_xlib_surface_get_xrender_format: - * @surface: an xlib surface - * - * Gets the X Render picture format that @surface uses for rendering with the - * X Render extension. If the surface was created by - * cairo_xlib_surface_create_with_xrender_format() originally, the return - * value is the format passed to that constructor. - * - * Return value: the XRenderPictFormat* associated with @surface, - * or %NULL if the surface is not an xlib surface - * or if the X Render extension is not available. - * - * Since: 1.6 - **/ -XRenderPictFormat * -cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface) -{ - cairo_xlib_surface_t *xlib_surface = (cairo_xlib_surface_t *) surface; - - /* Throw an error for a non-xlib surface */ - if (! _cairo_surface_is_xlib (surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return NULL; - } - - return xlib_surface->xrender_format; -} -#endif - -/** - * cairo_xlib_surface_set_size: - * @surface: a #cairo_surface_t for the XLib backend - * @width: the new width of the surface - * @height: the new height of the surface - * - * Informs cairo of the new size of the X Drawable underlying the - * surface. For a surface created for a Window (rather than a Pixmap), - * this function must be called each time the size of the window - * changes. (For a subwindow, you are normally resizing the window - * yourself, but for a toplevel window, it is necessary to listen for - * ConfigureNotify events.) - * - * A Pixmap can never change size, so it is never necessary to call - * this function on a surface created for a Pixmap. - **/ -void -cairo_xlib_surface_set_size (cairo_surface_t *abstract_surface, - int width, - int height) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - cairo_status_t status; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - status = _cairo_surface_set_error (abstract_surface, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return; - } - - surface->width = width; - surface->height = height; -} -/** - * cairo_xlib_surface_set_drawable: - * @surface: a #cairo_surface_t for the XLib backend - * @drawable: the new drawable for the surface - * @width: the width of the new drawable - * @height: the height of the new drawable - * - * Informs cairo of a new X Drawable underlying the - * surface. The drawable must match the display, screen - * and format of the existing drawable or the application - * will get X protocol errors and will probably terminate. - * No checks are done by this function to ensure this - * compatibility. - **/ -void -cairo_xlib_surface_set_drawable (cairo_surface_t *abstract_surface, - Drawable drawable, - int width, - int height) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *)abstract_surface; - cairo_status_t status; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - status = _cairo_surface_set_error (abstract_surface, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return; - } - - /* XXX: and what about this case? */ - if (surface->owns_pixmap) - return; - - if (surface->drawable != drawable) { - if (surface->dst_picture != None) { - status = _cairo_xlib_display_queue_resource ( - surface->screen_info->display, - XRenderFreePicture, - surface->dst_picture); - if (status) { - status = _cairo_surface_set_error (&surface->base, status); - return; - } - - surface->dst_picture = None; - } - - if (surface->src_picture != None) { - status = _cairo_xlib_display_queue_resource ( - surface->screen_info->display, - XRenderFreePicture, - surface->src_picture); - if (status) { - status = _cairo_surface_set_error (&surface->base, status); - return; - } - - surface->src_picture = None; - } - - surface->drawable = drawable; - } - surface->width = width; - surface->height = height; -} - -/** - * cairo_xlib_surface_get_display: - * @surface: a #cairo_xlib_surface_t - * - * Get the X Display for the underlying X Drawable. - * - * Return value: the display. - * - * Since: 1.2 - **/ -Display * -cairo_xlib_surface_get_display (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return NULL; - } - - return surface->dpy; -} - -/** - * cairo_xlib_surface_get_drawable: - * @surface: a #cairo_xlib_surface_t - * - * Get the underlying X Drawable used for the surface. - * - * Return value: the drawable. - * - * Since: 1.2 - **/ -Drawable -cairo_xlib_surface_get_drawable (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return 0; - } - - return surface->drawable; -} - -/** - * cairo_xlib_surface_get_screen: - * @surface: a #cairo_xlib_surface_t - * - * Get the X Screen for the underlying X Drawable. - * - * Return value: the screen. - * - * Since: 1.2 - **/ -Screen * -cairo_xlib_surface_get_screen (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return NULL; - } - - return surface->screen; -} - -/** - * cairo_xlib_surface_get_visual: - * @surface: a #cairo_xlib_surface_t - * - * Get the X Visual used for underlying X Drawable. - * - * Return value: the visual. - * - * Since: 1.2 - **/ -Visual * -cairo_xlib_surface_get_visual (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return NULL; - } - - return surface->visual; -} - -/** - * cairo_xlib_surface_get_depth: - * @surface: a #cairo_xlib_surface_t - * - * Get the number of bits used to represent each pixel value. - * - * Return value: the depth of the surface in bits. - * - * Since: 1.2 - **/ -int -cairo_xlib_surface_get_depth (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return 0; - } - - return surface->depth; -} - -/** - * cairo_xlib_surface_get_width: - * @surface: a #cairo_xlib_surface_t - * - * Get the width of the X Drawable underlying the surface in pixels. - * - * Return value: the width of the surface in pixels. - * - * Since: 1.2 - **/ -int -cairo_xlib_surface_get_width (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return -1; - } - - return surface->width; -} - -/** - * cairo_xlib_surface_get_height: - * @surface: a #cairo_xlib_surface_t - * - * Get the height of the X Drawable underlying the surface in pixels. - * - * Return value: the height of the surface in pixels. - * - * Since: 1.2 - **/ -int -cairo_xlib_surface_get_height (cairo_surface_t *abstract_surface) -{ - cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *) abstract_surface; - - if (! _cairo_surface_is_xlib (abstract_surface)) { - _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); - return -1; - } - - return surface->height; -} - -enum { - GLYPHSET_INDEX_ARGB32, - GLYPHSET_INDEX_A8, - GLYPHSET_INDEX_A1, - NUM_GLYPHSETS -}; - -typedef struct _cairo_xlib_font_glyphset_info { - GlyphSet glyphset; - cairo_format_t format; - XRenderPictFormat *xrender_format; -} cairo_xlib_font_glyphset_info_t; - -typedef struct _cairo_xlib_surface_font_private { - Display *dpy; - cairo_xlib_font_glyphset_info_t glyphset_info[NUM_GLYPHSETS]; -} cairo_xlib_surface_font_private_t; - -static void -_cairo_xlib_surface_remove_scaled_font (Display *dpy, - void *data) -{ - cairo_scaled_font_t *scaled_font = data; - cairo_xlib_surface_font_private_t *font_private; - - CAIRO_MUTEX_LOCK (scaled_font->mutex); - font_private = scaled_font->surface_private; - scaled_font->surface_private = NULL; - - _cairo_scaled_font_reset_cache (scaled_font); - CAIRO_MUTEX_UNLOCK (scaled_font->mutex); - - if (font_private != NULL) { - int i; - for (i = 0; i < NUM_GLYPHSETS; i++) { - cairo_xlib_font_glyphset_info_t *glyphset_info = &font_private->glyphset_info[i]; - if (glyphset_info->glyphset) { - XRenderFreeGlyphSet (font_private->dpy, glyphset_info->glyphset); - } - } - free (font_private); - } -} - -static cairo_status_t -_cairo_xlib_surface_font_init (Display *dpy, - cairo_scaled_font_t *scaled_font) -{ - cairo_xlib_surface_font_private_t *font_private; - int i; - - font_private = malloc (sizeof (cairo_xlib_surface_font_private_t)); - if (!font_private) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - if (!_cairo_xlib_add_close_display_hook (dpy, - _cairo_xlib_surface_remove_scaled_font, - scaled_font, scaled_font)) { - free (font_private); - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - - font_private->dpy = dpy; - for (i = 0; i < NUM_GLYPHSETS; i++) { - cairo_xlib_font_glyphset_info_t *glyphset_info = &font_private->glyphset_info[i]; - switch (i) { - case GLYPHSET_INDEX_ARGB32: glyphset_info->format = CAIRO_FORMAT_ARGB32; break; - case GLYPHSET_INDEX_A8: glyphset_info->format = CAIRO_FORMAT_A8; break; - case GLYPHSET_INDEX_A1: glyphset_info->format = CAIRO_FORMAT_A1; break; - default: ASSERT_NOT_REACHED; break; - } - glyphset_info->xrender_format = NULL; - glyphset_info->glyphset = None; - } - - scaled_font->surface_private = font_private; - scaled_font->surface_backend = &cairo_xlib_surface_backend; - - return CAIRO_STATUS_SUCCESS; -} - -static void -_cairo_xlib_surface_scaled_font_fini (cairo_scaled_font_t *scaled_font) -{ - cairo_xlib_surface_font_private_t *font_private = scaled_font->surface_private; - - if (font_private) { - cairo_xlib_display_t *display; - - _cairo_xlib_remove_close_display_hooks (font_private->dpy, scaled_font); - - display = _cairo_xlib_display_get (font_private->dpy); - if (display != NULL) { - int i; - - for (i = 0; i < NUM_GLYPHSETS; i++) { - cairo_xlib_font_glyphset_info_t *glyphset_info = &font_private->glyphset_info[i]; - if (glyphset_info->glyphset) { - cairo_status_t status; - status = _cairo_xlib_display_queue_resource (display, - XRenderFreeGlyphSet, - glyphset_info->glyphset); - (void) status; /* XXX cannot propagate failure */ - } - } - - _cairo_xlib_display_destroy (display); - } - - free (font_private); - } -} - -struct _cairo_xlib_render_free_glyphs { - GlyphSet glyphset; - unsigned long glyph_index; -}; -static void _cairo_xlib_render_free_glyphs (Display *dpy, struct _cairo_xlib_render_free_glyphs *arg) -{ - XRenderFreeGlyphs (dpy, - arg->glyphset, - &arg->glyph_index, 1); -} - -static cairo_xlib_font_glyphset_info_t * -_cairo_xlib_scaled_glyph_get_glyphset_info (cairo_scaled_glyph_t *scaled_glyph) -{ - return scaled_glyph->surface_private; -} - -static void -_cairo_xlib_scaled_glyph_set_glyphset_info (cairo_scaled_glyph_t *scaled_glyph, - cairo_xlib_font_glyphset_info_t *glyphset_info) -{ - scaled_glyph->surface_private = glyphset_info; -} - -static void -_cairo_xlib_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph, - cairo_scaled_font_t *scaled_font) -{ - cairo_xlib_surface_font_private_t *font_private = scaled_font->surface_private; - - if (font_private != NULL && scaled_glyph->surface_private != NULL) { - cairo_xlib_display_t *display = _cairo_xlib_display_get (font_private->dpy); - if (display != NULL) { - struct _cairo_xlib_render_free_glyphs *arg = malloc (sizeof (*arg)); - if (arg != NULL) { - cairo_status_t status; - arg->glyphset = _cairo_xlib_scaled_glyph_get_glyphset_info (scaled_glyph)->glyphset; - arg->glyph_index = _cairo_scaled_glyph_index (scaled_glyph); - status = _cairo_xlib_display_queue_work (display, - (cairo_xlib_notify_func) _cairo_xlib_render_free_glyphs, - arg, - free); - if (status) { - /* XXX cannot propagate failure */ - free (arg); - } - } - - _cairo_xlib_display_destroy (display); - - } - } -} - -static cairo_bool_t -_native_byte_order_lsb (void) -{ - int x = 1; - - return *((char *) &x) == 1; -} - -static cairo_xlib_font_glyphset_info_t * -_cairo_xlib_scaled_font_get_glyphset_info_for_format (cairo_scaled_font_t *scaled_font, - cairo_format_t format) -{ - cairo_xlib_surface_font_private_t *font_private = scaled_font->surface_private; - cairo_xlib_font_glyphset_info_t *glyphset_info; - int glyphset_index; - - switch (format) { - default: - case CAIRO_FORMAT_RGB24: - case CAIRO_FORMAT_ARGB32: glyphset_index = GLYPHSET_INDEX_ARGB32; break; - case CAIRO_FORMAT_A8: glyphset_index = GLYPHSET_INDEX_A8; break; - case CAIRO_FORMAT_A1: glyphset_index = GLYPHSET_INDEX_A1; break; - } - - glyphset_info = &font_private->glyphset_info[glyphset_index]; - - if (glyphset_info->glyphset == None) { - glyphset_info->xrender_format = _CAIRO_FORMAT_TO_XRENDER_FORMAT(font_private->dpy, glyphset_info->format); - glyphset_info->glyphset = XRenderCreateGlyphSet (font_private->dpy, glyphset_info->xrender_format); - } - - return glyphset_info; -} - -static cairo_status_t -_cairo_xlib_surface_add_glyph (Display *dpy, - cairo_scaled_font_t *scaled_font, - cairo_scaled_glyph_t **pscaled_glyph) -{ - XGlyphInfo glyph_info; - unsigned long glyph_index; - unsigned char *data; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_xlib_surface_font_private_t *font_private; - cairo_scaled_glyph_t *scaled_glyph = *pscaled_glyph; - cairo_image_surface_t *glyph_surface = scaled_glyph->surface; - cairo_bool_t already_had_glyph_surface; - cairo_xlib_font_glyphset_info_t *glyphset_info; - - if (!glyph_surface) { - status = _cairo_scaled_glyph_lookup (scaled_font, - _cairo_scaled_glyph_index (scaled_glyph), - CAIRO_SCALED_GLYPH_INFO_METRICS | - CAIRO_SCALED_GLYPH_INFO_SURFACE, - pscaled_glyph); - if (status != CAIRO_STATUS_SUCCESS) - return status; - - scaled_glyph = *pscaled_glyph; - glyph_surface = scaled_glyph->surface; - already_had_glyph_surface = FALSE; - } else { - already_had_glyph_surface = TRUE; - } - - /* XXX XRenderAddGlyph does not handle a glyph surface larger than the - * maximum XRequest size. - */ - { - /* pessimistic length estimation in case we need to change formats */ - int len = 4 * glyph_surface->width * glyph_surface->height; - int max_request_size = XMaxRequestSize (dpy) - - sz_xRenderAddGlyphsReq - - sz_xGlyphInfo - - 4; - if (len >= max_request_size) - return CAIRO_INT_STATUS_UNSUPPORTED; - } - - if (scaled_font->surface_private == NULL) { - status = _cairo_xlib_surface_font_init (dpy, scaled_font); - if (status) - return status; - } - font_private = scaled_font->surface_private; - - glyphset_info = _cairo_xlib_scaled_font_get_glyphset_info_for_format (scaled_font, - glyph_surface->format); - - /* If the glyph surface has zero height or width, we create - * a clear 1x1 surface, to avoid various X server bugs. - */ - if (glyph_surface->width == 0 || glyph_surface->height == 0) { - cairo_t *cr; - cairo_surface_t *tmp_surface; - - tmp_surface = cairo_image_surface_create (glyphset_info->format, 1, 1); - if (tmp_surface->status) - goto BAIL; - - cr = cairo_create (tmp_surface); - cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR); - cairo_paint (cr); - status = cairo_status (cr); - cairo_destroy (cr); - - tmp_surface->device_transform = glyph_surface->base.device_transform; - tmp_surface->device_transform_inverse = glyph_surface->base.device_transform_inverse; - - glyph_surface = (cairo_image_surface_t *) tmp_surface; - - if (status) - goto BAIL; - } - - /* If the glyph format does not match the font format, then we - * create a temporary surface for the glyph image with the font's - * format. - */ - if (glyph_surface->format != glyphset_info->format) { - cairo_t *cr; - cairo_surface_t *tmp_surface; - - tmp_surface = cairo_image_surface_create (glyphset_info->format, - glyph_surface->width, - glyph_surface->height); - if (tmp_surface->status) - goto BAIL; - - tmp_surface->device_transform = glyph_surface->base.device_transform; - tmp_surface->device_transform_inverse = glyph_surface->base.device_transform_inverse; - - cr = cairo_create (tmp_surface); - cairo_set_source_surface (cr, &glyph_surface->base, 0, 0); - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_paint (cr); - status = cairo_status (cr); - cairo_destroy (cr); - - glyph_surface = (cairo_image_surface_t *) tmp_surface; - - if (status) - goto BAIL; - } - - /* XXX: FRAGILE: We're ignore device_transform scaling here. A bug? */ - glyph_info.x = _cairo_lround (glyph_surface->base.device_transform.x0); - glyph_info.y = _cairo_lround (glyph_surface->base.device_transform.y0); - glyph_info.width = glyph_surface->width; - glyph_info.height = glyph_surface->height; - glyph_info.xOff = scaled_glyph->x_advance; - glyph_info.yOff = scaled_glyph->y_advance; - - data = glyph_surface->data; - - /* flip formats around */ - switch (scaled_glyph->surface->format) { - case CAIRO_FORMAT_A1: - /* local bitmaps are always stored with bit == byte */ - if (_native_byte_order_lsb() != (BitmapBitOrder (dpy) == LSBFirst)) { - int c = glyph_surface->stride * glyph_surface->height; - unsigned char *d; - unsigned char *new, *n; - - new = malloc (c); - if (!new) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - n = new; - d = data; - while (c--) - { - char b = *d++; - b = ((b << 1) & 0xaa) | ((b >> 1) & 0x55); - b = ((b << 2) & 0xcc) | ((b >> 2) & 0x33); - b = ((b << 4) & 0xf0) | ((b >> 4) & 0x0f); - *n++ = b; - } - data = new; - } - break; - case CAIRO_FORMAT_A8: - break; - case CAIRO_FORMAT_ARGB32: - if (_native_byte_order_lsb() != (ImageByteOrder (dpy) == LSBFirst)) { - unsigned int c = glyph_surface->stride * glyph_surface->height; - unsigned char *d; - unsigned char *new, *n; - - new = malloc (c); - if (new == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto BAIL; - } - n = new; - d = data; - while (c >= 4) - { - n[3] = d[0]; - n[2] = d[1]; - n[1] = d[2]; - n[0] = d[3]; - d += 4; - n += 4; - c -= 4; - } - data = new; - } - break; - case CAIRO_FORMAT_RGB24: - default: - ASSERT_NOT_REACHED; - break; - } - /* XXX assume X server wants pixman padding. Xft assumes this as well */ - - glyph_index = _cairo_scaled_glyph_index (scaled_glyph); - - XRenderAddGlyphs (dpy, glyphset_info->glyphset, - &glyph_index, &glyph_info, 1, - (char *) data, - glyph_surface->stride * glyph_surface->height); - - _cairo_xlib_scaled_glyph_set_glyphset_info (scaled_glyph, glyphset_info); - - if (data != glyph_surface->data) - free (data); - - BAIL: - if (glyph_surface != scaled_glyph->surface) - cairo_surface_destroy (&glyph_surface->base); - - /* if the scaled glyph didn't already have a surface attached - * to it, release the created surface now that we have it - * uploaded to the X server. If the surface has already been - * there (eg. because image backend requested it), leave it in - * the cache - */ - if (!already_had_glyph_surface) - _cairo_scaled_glyph_set_surface (scaled_glyph, scaled_font, NULL); - - return status; -} - -typedef void (*cairo_xrender_composite_text_func_t) - (Display *dpy, - int op, - Picture src, - Picture dst, - _Xconst XRenderPictFormat *maskFormat, - int xSrc, - int ySrc, - int xDst, - int yDst, - _Xconst XGlyphElt8 *elts, - int nelt); - -/* Build a struct of the same size of #cairo_glyph_t that can be used both as - * an input glyph with double coordinates, and as "working" glyph with - * integer from-current-point offsets. */ -typedef struct { - unsigned long index; - union { - struct { - double x; - double y; - } d; - struct { - int x; - int y; - } i; - } p; -} cairo_xlib_glyph_t; - -/* compile-time assert that #cairo_xlib_glyph_t is the same size as #cairo_glyph_t */ -typedef int cairo_xlib_glyph_t_size_assertion [sizeof (cairo_xlib_glyph_t) == sizeof (cairo_glyph_t) ? 1 : -1]; - -#define GLYPH_INDEX_SKIP ((unsigned long) -1) - -static cairo_status_t -_cairo_xlib_surface_emit_glyphs_chunk (cairo_xlib_surface_t *dst, - cairo_xlib_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_xlib_surface_t *src, - cairo_surface_attributes_t *attributes, - /* info for this chunk */ - int num_elts, - int width, - cairo_xlib_font_glyphset_info_t *glyphset_info) -{ - /* Which XRenderCompositeText function to use */ - cairo_xrender_composite_text_func_t composite_text_func; - int size; - - /* Element buffer stuff */ - XGlyphElt8 *elts; - XGlyphElt8 stack_elts[CAIRO_STACK_ARRAY_LENGTH (XGlyphElt8)]; - - /* Reuse the input glyph array for output char generation */ - char *char8 = (char *) glyphs; - unsigned short *char16 = (unsigned short *) glyphs; - unsigned int *char32 = (unsigned int *) glyphs; - - int i; - int nelt; /* Element index */ - int n; /* Num output glyphs in current element */ - int j; /* Num output glyphs so far */ - - switch (width) { - case 1: - /* don't cast the 8-variant, to catch possible mismatches */ - composite_text_func = XRenderCompositeText8; - size = sizeof (char); - break; - case 2: - composite_text_func = (cairo_xrender_composite_text_func_t) XRenderCompositeText16; - size = sizeof (unsigned short); - break; - default: - case 4: - composite_text_func = (cairo_xrender_composite_text_func_t) XRenderCompositeText32; - size = sizeof (unsigned int); - } - - /* Allocate element array */ - if (num_elts <= ARRAY_LENGTH (stack_elts)) { - elts = stack_elts; - } else { - elts = _cairo_malloc_ab (num_elts, sizeof (XGlyphElt8)); - if (elts == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - } - - /* Fill them in */ - nelt = 0; - n = 0; - j = 0; - for (i = 0; i < num_glyphs; i++) { - - /* Skip glyphs marked so */ - if (glyphs[i].index == GLYPH_INDEX_SKIP) - continue; - - /* Start a new element for first output glyph, and for glyphs with - * unexpected position */ - if (!j || glyphs[i].p.i.x || glyphs[i].p.i.y) { - if (j) { - elts[nelt].nchars = n; - nelt++; - n = 0; - } - elts[nelt].chars = char8 + size * j; - elts[nelt].glyphset = glyphset_info->glyphset; - elts[nelt].xOff = glyphs[i].p.i.x; - elts[nelt].yOff = glyphs[i].p.i.y; - } - - switch (width) { - case 1: char8 [j] = (char) glyphs[i].index; break; - case 2: char16[j] = (unsigned short) glyphs[i].index; break; - default: - case 4: char32[j] = (unsigned int) glyphs[i].index; break; - } - - n++; - j++; - } - - if (n) { - elts[nelt].nchars = n; - nelt++; - n = 0; - } - - composite_text_func (dst->dpy, - _render_operator (op), - src->src_picture, - dst->dst_picture, - glyphset_info->xrender_format, - attributes->x_offset + elts[0].xOff, - attributes->y_offset + elts[0].yOff, - elts[0].xOff, elts[0].yOff, - (XGlyphElt8 *) elts, nelt); - - if (elts != stack_elts) - free (elts); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_cairo_xlib_surface_emit_glyphs (cairo_xlib_surface_t *dst, - cairo_xlib_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font, - cairo_operator_t op, - cairo_xlib_surface_t *src, - cairo_surface_attributes_t *attributes) -{ - int i; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - cairo_scaled_glyph_t *scaled_glyph; - cairo_fixed_t x = 0, y = 0; - cairo_xlib_font_glyphset_info_t *glyphset_info = NULL, *this_glyphset_info; - - unsigned long max_index = 0; - int width = 1; - int num_elts = 0; - int num_out_glyphs = 0; - - int max_request_size = XMaxRequestSize (dst->dpy) - - MAX (sz_xRenderCompositeGlyphs8Req, - MAX(sz_xRenderCompositeGlyphs16Req, - sz_xRenderCompositeGlyphs32Req)); - int request_size = 0; - - _cairo_xlib_surface_ensure_dst_picture (dst); - _cairo_xlib_display_notify (dst->screen_info->display); - - for (i = 0; i < num_glyphs; i++) { - int this_x, this_y; - int old_width; - - status = _cairo_scaled_glyph_lookup (scaled_font, - glyphs[i].index, - CAIRO_SCALED_GLYPH_INFO_METRICS, - &scaled_glyph); - if (status != CAIRO_STATUS_SUCCESS) - return status; - - this_x = _cairo_lround (glyphs[i].p.d.x); - this_y = _cairo_lround (glyphs[i].p.d.y); - - /* Glyph skipping: - * - * We skip any glyphs that have troublesome coordinates. We want - * to make sure that (glyph2.x - (glyph1.x + glyph1.width)) fits in - * a signed 16bit integer, otherwise it will overflow in the render - * protocol. - * To ensure this, we'll make sure that (glyph2.x - glyph1.x) fits in - * a signed 15bit integer. The trivial option would be to allow - * coordinates -8192..8192, but that's kinda dull. It probably will - * take a decade or so to get monitors 8192x4096 or something. A - * negative value of -8192 on the other hand, is absolutely useless. - * Note that we do want to allow some negative positions. The glyph - * may start off the screen but part of it make it to the screen. - * Anyway, we will allow positions in the range -1024..15359. That - * will buy us a few more years before this stops working. - */ - if (((this_x+1024)|(this_y+1024))&~0x3fffu) { - glyphs[i].index = GLYPH_INDEX_SKIP; - continue; - } - - /* Send unsent glyphs to the server */ - if (_cairo_xlib_scaled_glyph_get_glyphset_info (scaled_glyph) == NULL) { - status = _cairo_xlib_surface_add_glyph (dst->dpy, - scaled_font, - &scaled_glyph); - if (status) - return status; - } - - this_glyphset_info = _cairo_xlib_scaled_glyph_get_glyphset_info (scaled_glyph); - if (!glyphset_info) - glyphset_info = this_glyphset_info; - - old_width = width; - - /* Update max glyph index */ - if (glyphs[i].index > max_index) { - max_index = glyphs[i].index; - if (max_index >= 65536) - width = 4; - else if (max_index >= 256) - width = 2; - if (width != old_width) - request_size += (width - old_width) * num_out_glyphs; - } - - /* If we will pass the max request size by adding this glyph, - * flush current glyphs. Note that we account for a - * possible element being added below. - * - * Also flush if changing glyphsets, as Xrender limits one mask - * format per request, so we can either break up, or use a - * wide-enough mask format. We do the former. One reason to - * prefer the latter is the fact that Xserver ADDs all glyphs - * to the mask first, and then composes that to final surface, - * though it's not a big deal. - */ - if (request_size + width > max_request_size - sz_xGlyphElt || - (this_glyphset_info != glyphset_info)) { - status = _cairo_xlib_surface_emit_glyphs_chunk (dst, glyphs, i, - scaled_font, op, src, attributes, - num_elts, old_width, glyphset_info); - if (status != CAIRO_STATUS_SUCCESS) - return status; - - glyphs += i; - num_glyphs -= i; - i = 0; - max_index = glyphs[i].index; - width = max_index < 256 ? 1 : max_index < 65536 ? 2 : 4; - request_size = 0; - num_elts = 0; - num_out_glyphs = 0; - x = y = 0; - glyphset_info = this_glyphset_info; - } - - /* Convert absolute glyph position to relative-to-current-point - * position */ - glyphs[i].p.i.x = this_x - x; - glyphs[i].p.i.y = this_y - y; - - /* Start a new element for the first glyph, or for any glyph that - * has unexpected position */ - if (!num_out_glyphs || glyphs[i].p.i.x || glyphs[i].p.i.y) { - num_elts++; - request_size += sz_xGlyphElt; - } - - /* adjust current-position */ - x = this_x + scaled_glyph->x_advance; - y = this_y + scaled_glyph->y_advance; - - num_out_glyphs++; - request_size += width; - } - - if (num_elts) - status = _cairo_xlib_surface_emit_glyphs_chunk (dst, glyphs, num_glyphs, - scaled_font, op, src, attributes, - num_elts, width, glyphset_info); - - return status; -} - -#undef GLYPH_INDEX_SKIP - -static cairo_int_status_t -_cairo_xlib_surface_show_glyphs (void *abstract_dst, - cairo_operator_t op, - cairo_pattern_t *src_pattern, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - cairo_int_status_t status = CAIRO_STATUS_SUCCESS; - cairo_xlib_surface_t *dst = (cairo_xlib_surface_t*) abstract_dst; - - composite_operation_t operation; - cairo_surface_attributes_t attributes; - cairo_xlib_surface_t *src = NULL; - - cairo_xlib_surface_font_private_t *font_private; - - cairo_pattern_union_t solid_pattern; - - if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE_TEXT (dst) || !dst->xrender_format) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Just let unbounded operators go through the fallback code - * instead of trying to do the fixups here */ - if (!_cairo_operator_bounded_by_mask (op)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* Render <= 0.10 seems to have a bug with PictOpSrc and glyphs -- - * the solid source seems to be multiplied by the glyph mask, and - * then the entire thing is copied to the destination surface, - * including the fully transparent "background" of the rectangular - * glyph surface. */ - if (op == CAIRO_OPERATOR_SOURCE && - !CAIRO_SURFACE_RENDER_AT_LEAST(dst, 0, 11)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* We can only use our code if we either have no clip or - * have a real native clip region set. If we're using - * fallback clip masking, we have to go through the full - * fallback path. - */ - if (dst->base.clip && - (dst->base.clip->mode != CAIRO_CLIP_MODE_REGION || - dst->base.clip->surface != NULL)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - operation = _categorize_composite_operation (dst, op, src_pattern, TRUE); - if (operation == DO_UNSUPPORTED) - return CAIRO_INT_STATUS_UNSUPPORTED; - - font_private = scaled_font->surface_private; - if ((scaled_font->surface_backend != NULL && - scaled_font->surface_backend != &cairo_xlib_surface_backend) || - (font_private != NULL && font_private->dpy != dst->dpy)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - /* After passing all those tests, we're now committed to rendering - * these glyphs or to fail trying. We first upload any glyphs to - * the X server that it doesn't have already, then we draw - * them. We tie into the scaled_font's glyph cache and remove - * glyphs from the X server when they are ejected from the - * scaled_font cache. Because of this we first freeze the - * scaled_font's cache so that we don't cause any of our glyphs to - * be ejected and removed from the X server before we have a - * chance to render them. */ - _cairo_scaled_font_freeze_cache (scaled_font); - - /* PictOpClear doesn't seem to work with CompositeText; it seems to ignore - * the mask (the glyphs). This code below was executed as a side effect - * of going through the _clip_and_composite fallback code for old_show_glyphs, - * so PictOpClear was never used with CompositeText before. - */ - if (op == CAIRO_OPERATOR_CLEAR) { - _cairo_pattern_init_solid (&solid_pattern.solid, CAIRO_COLOR_WHITE, - CAIRO_CONTENT_COLOR); - src_pattern = &solid_pattern.base; - op = CAIRO_OPERATOR_DEST_OUT; - } - - if (src_pattern->type == CAIRO_PATTERN_TYPE_SOLID) { - status = _cairo_pattern_acquire_surface (src_pattern, &dst->base, - 0, 0, 1, 1, - (cairo_surface_t **) &src, - &attributes); - if (status) - goto BAIL0; - } else { - cairo_rectangle_int_t glyph_extents; - - status = _cairo_scaled_font_glyph_device_extents (scaled_font, - glyphs, - num_glyphs, - &glyph_extents); - if (status) - goto BAIL0; - - status = _cairo_pattern_acquire_surface (src_pattern, &dst->base, - glyph_extents.x, glyph_extents.y, - glyph_extents.width, glyph_extents.height, - (cairo_surface_t **) &src, - &attributes); - if (status) - goto BAIL0; - } - - operation = _recategorize_composite_operation (dst, op, src, &attributes, TRUE); - if (operation == DO_UNSUPPORTED) { - status = CAIRO_INT_STATUS_UNSUPPORTED; - goto BAIL1; - } - - status = _cairo_xlib_surface_set_attributes (src, &attributes); - if (status) - goto BAIL1; - - status = _cairo_xlib_surface_emit_glyphs (dst, - (cairo_xlib_glyph_t *) glyphs, - num_glyphs, - scaled_font, - op, - src, - &attributes); - - BAIL1: - if (src) - _cairo_pattern_release_surface (src_pattern, &src->base, &attributes); - if (src_pattern == &solid_pattern.base) - _cairo_pattern_fini (&solid_pattern.base); - BAIL0: - _cairo_scaled_font_thaw_cache (scaled_font); - _cairo_xlib_display_notify (dst->screen_info->display); - - return status; -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-surface-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-surface-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-surface-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-surface-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - */ - -#ifndef CAIRO_XLIB_SURFACE_PRIVATE_H -#define CAIRO_XLIB_SURFACE_PRIVATE_H - -#include "cairo-xlib.h" -#include "cairo-xlib-private.h" -#include "cairo-xlib-xrender-private.h" - -#include "cairo-surface-private.h" - -typedef struct _cairo_xlib_surface cairo_xlib_surface_t; - -struct _cairo_xlib_surface { - cairo_surface_t base; - - Display *dpy; - cairo_xlib_screen_info_t *screen_info; - - GC gc; - Drawable drawable; - Screen *screen; - cairo_bool_t owns_pixmap; - Visual *visual; - - int use_pixmap; - - int render_major; - int render_minor; - - /* TRUE if the server has a bug with repeating pictures - * - * https://bugs.freedesktop.org/show_bug.cgi?id=3566 - * - * We can't test for this because it depends on whether the - * picture is in video memory or not. - * - * We also use this variable as a guard against a second - * independent bug with transformed repeating pictures: - * - * http://lists.freedesktop.org/archives/cairo/2004-September/001839.html - * - * Both are fixed in xorg >= 6.9 and hopefully in > 6.8.2, so - * we can reuse the test for now. - */ - cairo_bool_t buggy_repeat; - - int width; - int height; - int depth; - - Picture dst_picture, src_picture; - - unsigned int clip_dirty; - cairo_bool_t have_clip_rects; - XRectangle embedded_clip_rects[4]; - XRectangle *clip_rects; - int num_clip_rects; - - XRenderPictFormat *xrender_format; - cairo_filter_t filter; - int repeat; - XTransform xtransform; - - uint32_t a_mask; - uint32_t r_mask; - uint32_t g_mask; - uint32_t b_mask; -}; - -enum { - CAIRO_XLIB_SURFACE_CLIP_DIRTY_GC = 0x01, - CAIRO_XLIB_SURFACE_CLIP_DIRTY_PICTURE = 0x02, - CAIRO_XLIB_SURFACE_CLIP_DIRTY_ALL = 0x03 -}; - -#endif /* CAIRO_XLIB_SURFACE_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-visual.c libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-visual.c --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-visual.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-visual.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,148 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2008 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#include "cairoint.h" - -#include "cairo-xlib-private.h" - -/* A perceptual distance metric between two colors. No sqrt needed - * since the square of the distance is still a valid metric. */ - -/* XXX: This is currently using linear distance in RGB space which is - * decidedly not perceptually linear. If someone cared a lot about the - * quality, they might choose something else here. Then again, they - * might also choose not to use a PseudoColor visual... */ -static inline int -_color_distance (unsigned short r1, unsigned short g1, unsigned short b1, - unsigned short r2, unsigned short g2, unsigned short b2) -{ - r1 >>= 8; g1 >>= 8; b1 >>= 8; - r2 >>= 8; g2 >>= 8; b2 >>= 8; - - return ((r2 - r1) * (r2 - r1) + - (g2 - g1) * (g2 - g1) + - (b2 - b1) * (b2 - b1)); -} - -cairo_status_t -_cairo_xlib_visual_info_create (Display *dpy, - int screen, - VisualID visualid, - cairo_xlib_visual_info_t **out) -{ - cairo_xlib_visual_info_t *info; - Colormap colormap = DefaultColormap (dpy, screen); - XColor color; - int gray, red, green, blue; - int i, index, distance, min_distance = 0; - - const unsigned short index5_to_short[5] = { - 0x0000, 0x4000, 0x8000, 0xc000, 0xffff - }; - const unsigned short index8_to_short[8] = { - 0x0000, 0x2492, 0x4924, 0x6db6, - 0x9249, 0xb6db, 0xdb6d, 0xffff - }; - - info = malloc (sizeof (cairo_xlib_visual_info_t)); - if (info == NULL) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); - - info->visualid = visualid; - - /* Allocate a 16-entry gray ramp and a 5x5x5 color cube. Give up - * as soon as failures start. */ - for (gray = 0; gray < 16; gray++) { - color.red = (gray << 12) | (gray << 8) | (gray << 4) | gray; - color.green = (gray << 12) | (gray << 8) | (gray << 4) | gray; - color.blue = (gray << 12) | (gray << 8) | (gray << 4) | gray; - if (! XAllocColor (dpy, colormap, &color)) - goto DONE_ALLOCATE; - } - - /* XXX: Could do this in a more clever order to have the best - * possible results from early failure. Could also choose a cube - * uniformly distributed in a better space than RGB. */ - for (red = 0; red < 5; red++) { - for (green = 0; green < 5; green++) { - for (blue = 0; blue < 5; blue++) { - color.red = index5_to_short[red]; - color.green = index5_to_short[green]; - color.blue = index5_to_short[blue]; - color.pixel = 0; - color.flags = 0; - color.pad = 0; - if (! XAllocColor (dpy, colormap, &color)) - goto DONE_ALLOCATE; - } - } - } - DONE_ALLOCATE: - - for (i = 0; i < ARRAY_LENGTH (info->colors); i++) - info->colors[i].pixel = i; - XQueryColors (dpy, colormap, info->colors, ARRAY_LENGTH (info->colors)); - - /* Search for nearest colors within allocated colormap. */ - for (red = 0; red < 8; red++) { - for (green = 0; green < 8; green++) { - for (blue = 0; blue < 8; blue++) { - index = (red << 6) | (green << 3) | (blue); - for (i = 0; i < 256; i++) { - distance = _color_distance (index8_to_short[red], - index8_to_short[green], - index8_to_short[blue], - info->colors[i].red, - info->colors[i].green, - info->colors[i].blue); - if (i == 0 || distance < min_distance) { - info->rgb333_to_pseudocolor[index] = info->colors[i].pixel; - min_distance = distance; - } - } - } - } - } - - *out = info; - return CAIRO_STATUS_SUCCESS; -} - -void -_cairo_xlib_visual_info_destroy (Display *dpy, cairo_xlib_visual_info_t *info) -{ - /* No need for XFreeColors() whilst using DefaultColormap */ - free (info); -} diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-xrender.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-xrender.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-xrender.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-xrender.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_XLIB_XRENDER_H -#define CAIRO_XLIB_XRENDER_H - -#include - -#if CAIRO_HAS_XLIB_XRENDER_SURFACE - -#include -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_xlib_surface_create_with_xrender_format (Display *dpy, - Drawable drawable, - Screen *screen, - XRenderPictFormat *format, - int width, - int height); - -cairo_public XRenderPictFormat * -cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_XLIB_XRENDER_SURFACE */ -# error Cairo was not compiled with support for the xlib XRender backend -#endif /* CAIRO_HAS_XLIB_XRENDER_SURFACE */ - -#endif /* CAIRO_XLIB_XRENDER_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-xrender-private.h libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-xrender-private.h --- libgdiplus-4.0-2.10.9/cairo/src/cairo-xlib-xrender-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/cairo-xlib-xrender-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,1078 +0,0 @@ -/* Cairo - a vector graphics library with display and print output - * - * Copyright © 2007 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - */ - -#ifndef CAIRO_XLIB_XRENDER_PRIVATE_H -#define CAIRO_XLIB_XRENDER_PRIVATE_H - -#if CAIRO_HAS_XLIB_XRENDER_SURFACE - -#include "cairo-xlib-xrender.h" - -#include -#include - -#else /* !CAIRO_HAS_XLIB_XRENDER_SURFACE */ - -/* Provide dummy symbols and macros to get it compile and take the fallback - * route, just like as if Xrender is not available in the server at run-time. */ - - -/* Functions */ - -#define CONSUME(a) +(((void)(a)),0) -#define CONSUME2(a,b) CONSUME((a,b)) -#define CONSUME3(a,b,c) CONSUME((a,b,c)) -#define CONSUME4(a,b,c,d) CONSUME((a,b,c,d)) -#define CONSUME5(a,b,c,d,e) CONSUME((a,b,c,d,e)) -#define CONSUME6(a,b,c,d,e,f) CONSUME((a,b,c,d,e,f)) -#define CONSUME7(a,b,c,d,e,f,g) CONSUME((a,b,c,d,e,f,g)) -#define CONSUME8(a,b,c,d,e,f,g,h) CONSUME((a,b,c,d,e,f,g,h)) -#define CONSUME9(a,b,c,d,e,f,g,h,i) CONSUME((a,b,c,d,e,f,g,h,i)) -#define CONSUME10(a,b,c,d,e,f,g,h,i,j) CONSUME((a,b,c,d,e,f,g,h,i,j)) -#define CONSUME11(a,b,c,d,e,f,g,h,i,j,k) CONSUME((a,b,c,d,e,f,g,h,i,j,k)) -#define CONSUME12(a,b,c,d,e,f,g,h,i,j,k,l) CONSUME((a,b,c,d,e,f,g,h,i,j,k,l)) -#define CONSUME13(a,b,c,d,e,f,g,h,i,j,k,l,m) CONSUME((a,b,c,d,e,f,g,h,i,j,k,l,m)) - -/* for when functions are not called */ -static void (CONSUME2)() {} -static void (CONSUME4)() {} -static void (CONSUME11)() {} - -#define XRenderQueryExtension 0 CONSUME3 -#define XRenderQueryVersion 0 CONSUME3 -#define XRenderQueryFormats 0 CONSUME1 -#define XRenderQuerySubpixelOrder 0 CONSUME2 -#define XRenderSetSubpixelOrder 0 CONSUME3 -#define XRenderFindVisualFormat NULL CONSUME2 -#define XRenderFindFormat NULL CONSUME4 -#define XRenderFindStandardFormat NULL CONSUME2 -#define XRenderQueryPictIndexValues NULL CONSUME2 -#define XRenderCreatePicture 0 CONSUME5 -#define XRenderChangePicture CONSUME4 -#define XRenderSetPictureClipRectangles CONSUME6 -#define XRenderSetPictureClipRegion CONSUME3 -#define XRenderSetPictureTransform CONSUME3 -#define XRenderFreePicture CONSUME2 -#define XRenderComposite CONSUME13 -#define XRenderCreateGlyphSet 0 CONSUME2 -#define XRenderReferenceGlyphSet 0 CONSUME2 -#define XRenderFreeGlyphSet CONSUME2 -#define XRenderAddGlyphs CONSUME7 -#define XRenderFreeGlyphs CONSUME4 -#define XRenderCompositeString8 CONSUME12 -#define XRenderCompositeString16 CONSUME12 -#define XRenderCompositeString32 CONSUME12 -#define XRenderCompositeText8 CONSUME11 -#define XRenderCompositeText16 CONSUME11 -#define XRenderCompositeText32 CONSUME11 -#define XRenderFillRectangle CONSUME8 -#define XRenderFillRectangles CONSUME6 -#define XRenderCompositeTrapezoids CONSUME9 -#define XRenderCompositeTriangles CONSUME9 -#define XRenderCompositeTriStrip CONSUME9 -#define XRenderCompositeTriFan CONSUME9 -#define XRenderCompositeDoublePoly CONSUME12 -#define XRenderParseColor 0 CONSUME3 -#define XRenderCreateCursor 0 CONSUME4 -#define XRenderQueryFilters NULL CONSUME2 -#define XRenderSetPictureFilter CONSUME5 -#define XRenderCreateAnimCursor 0 CONSUME3 -#define XRenderAddTraps CONSUME6 -#define XRenderCreateSolidFill 0 CONSUME2 -#define XRenderCreateLinearGradient 0 CONSUME5 -#define XRenderCreateRadialGradient 0 CONSUME5 -#define XRenderCreateConicalGradient 0 CONSUME5 - -#define cairo_xlib_surface_create_with_xrender_format NULL CONSUME6 - - - -/* The rest of this file is copied from various Xrender header files, with - * the following copyright/license information: - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - - -/* Copied from X11/extensions/render.h */ - -typedef unsigned long Glyph; -typedef unsigned long GlyphSet; -typedef unsigned long Picture; -typedef unsigned long PictFormat; - -#define BadPictFormat 0 -#define BadPicture 1 -#define BadPictOp 2 -#define BadGlyphSet 3 -#define BadGlyph 4 -#define RenderNumberErrors (BadGlyph+1) - -#define PictTypeIndexed 0 -#define PictTypeDirect 1 - -#define PictOpMinimum 0 -#define PictOpClear 0 -#define PictOpSrc 1 -#define PictOpDst 2 -#define PictOpOver 3 -#define PictOpOverReverse 4 -#define PictOpIn 5 -#define PictOpInReverse 6 -#define PictOpOut 7 -#define PictOpOutReverse 8 -#define PictOpAtop 9 -#define PictOpAtopReverse 10 -#define PictOpXor 11 -#define PictOpAdd 12 -#define PictOpSaturate 13 -#define PictOpMaximum 13 - -/* - * Operators only available in version 0.2 - */ -#define PictOpDisjointMinimum 0x10 -#define PictOpDisjointClear 0x10 -#define PictOpDisjointSrc 0x11 -#define PictOpDisjointDst 0x12 -#define PictOpDisjointOver 0x13 -#define PictOpDisjointOverReverse 0x14 -#define PictOpDisjointIn 0x15 -#define PictOpDisjointInReverse 0x16 -#define PictOpDisjointOut 0x17 -#define PictOpDisjointOutReverse 0x18 -#define PictOpDisjointAtop 0x19 -#define PictOpDisjointAtopReverse 0x1a -#define PictOpDisjointXor 0x1b -#define PictOpDisjointMaximum 0x1b - -#define PictOpConjointMinimum 0x20 -#define PictOpConjointClear 0x20 -#define PictOpConjointSrc 0x21 -#define PictOpConjointDst 0x22 -#define PictOpConjointOver 0x23 -#define PictOpConjointOverReverse 0x24 -#define PictOpConjointIn 0x25 -#define PictOpConjointInReverse 0x26 -#define PictOpConjointOut 0x27 -#define PictOpConjointOutReverse 0x28 -#define PictOpConjointAtop 0x29 -#define PictOpConjointAtopReverse 0x2a -#define PictOpConjointXor 0x2b -#define PictOpConjointMaximum 0x2b - -#define PolyEdgeSharp 0 -#define PolyEdgeSmooth 1 - -#define PolyModePrecise 0 -#define PolyModeImprecise 1 - -#define CPRepeat (1 << 0) -#define CPAlphaMap (1 << 1) -#define CPAlphaXOrigin (1 << 2) -#define CPAlphaYOrigin (1 << 3) -#define CPClipXOrigin (1 << 4) -#define CPClipYOrigin (1 << 5) -#define CPClipMask (1 << 6) -#define CPGraphicsExposure (1 << 7) -#define CPSubwindowMode (1 << 8) -#define CPPolyEdge (1 << 9) -#define CPPolyMode (1 << 10) -#define CPDither (1 << 11) -#define CPComponentAlpha (1 << 12) -#define CPLastBit 12 - -/* Filters included in 0.6 */ -#define FilterNearest "nearest" -#define FilterBilinear "bilinear" -/* Filters included in 0.10 */ -#define FilterConvolution "convolution" - -#define FilterFast "fast" -#define FilterGood "good" -#define FilterBest "best" - -#define FilterAliasNone -1 - -/* Subpixel orders included in 0.6 */ -#define SubPixelUnknown 0 -#define SubPixelHorizontalRGB 1 -#define SubPixelHorizontalBGR 2 -#define SubPixelVerticalRGB 3 -#define SubPixelVerticalBGR 4 -#define SubPixelNone 5 - -/* Extended repeat attributes included in 0.10 */ -#define RepeatNone 0 -#define RepeatNormal 1 -#define RepeatPad 2 -#define RepeatReflect 3 - - - -/* Copied from X11/extensions/Xrender.h */ - -typedef struct { - short red; - short redMask; - short green; - short greenMask; - short blue; - short blueMask; - short alpha; - short alphaMask; -} XRenderDirectFormat; - -typedef struct { - PictFormat id; - int type; - int depth; - XRenderDirectFormat direct; - Colormap colormap; -} XRenderPictFormat; - -#define PictFormatID (1 << 0) -#define PictFormatType (1 << 1) -#define PictFormatDepth (1 << 2) -#define PictFormatRed (1 << 3) -#define PictFormatRedMask (1 << 4) -#define PictFormatGreen (1 << 5) -#define PictFormatGreenMask (1 << 6) -#define PictFormatBlue (1 << 7) -#define PictFormatBlueMask (1 << 8) -#define PictFormatAlpha (1 << 9) -#define PictFormatAlphaMask (1 << 10) -#define PictFormatColormap (1 << 11) - -typedef struct _XRenderPictureAttributes { - int repeat; - Picture alpha_map; - int alpha_x_origin; - int alpha_y_origin; - int clip_x_origin; - int clip_y_origin; - Pixmap clip_mask; - Bool graphics_exposures; - int subwindow_mode; - int poly_edge; - int poly_mode; - Atom dither; - Bool component_alpha; -} XRenderPictureAttributes; - -typedef struct { - unsigned short red; - unsigned short green; - unsigned short blue; - unsigned short alpha; -} XRenderColor; - -typedef struct _XGlyphInfo { - unsigned short width; - unsigned short height; - short x; - short y; - short xOff; - short yOff; -} XGlyphInfo; - -typedef struct _XGlyphElt8 { - GlyphSet glyphset; - _Xconst char *chars; - int nchars; - int xOff; - int yOff; -} XGlyphElt8; - -typedef struct _XGlyphElt16 { - GlyphSet glyphset; - _Xconst unsigned short *chars; - int nchars; - int xOff; - int yOff; -} XGlyphElt16; - -typedef struct _XGlyphElt32 { - GlyphSet glyphset; - _Xconst unsigned int *chars; - int nchars; - int xOff; - int yOff; -} XGlyphElt32; - -typedef double XDouble; - -typedef struct _XPointDouble { - XDouble x, y; -} XPointDouble; - -#define XDoubleToFixed(f) ((XFixed) ((f) * 65536)) -#define XFixedToDouble(f) (((XDouble) (f)) / 65536) - -typedef int XFixed; - -typedef struct _XPointFixed { - XFixed x, y; -} XPointFixed; - -typedef struct _XLineFixed { - XPointFixed p1, p2; -} XLineFixed; - -typedef struct _XTriangle { - XPointFixed p1, p2, p3; -} XTriangle; - -typedef struct _XCircle { - XFixed x; - XFixed y; - XFixed radius; -} XCircle; - -typedef struct _XTrapezoid { - XFixed top, bottom; - XLineFixed left, right; -} XTrapezoid; - -typedef struct _XTransform { - XFixed matrix[3][3]; -} XTransform; - -typedef struct _XFilters { - int nfilter; - char **filter; - int nalias; - short *alias; -} XFilters; - -typedef struct _XIndexValue { - unsigned long pixel; - unsigned short red, green, blue, alpha; -} XIndexValue; - -typedef struct _XAnimCursor { - Cursor cursor; - unsigned long delay; -} XAnimCursor; - -typedef struct _XSpanFix { - XFixed left, right, y; -} XSpanFix; - -typedef struct _XTrap { - XSpanFix top, bottom; -} XTrap; - -typedef struct _XLinearGradient { - XPointFixed p1; - XPointFixed p2; -} XLinearGradient; - -typedef struct _XRadialGradient { - XCircle inner; - XCircle outer; -} XRadialGradient; - -typedef struct _XConicalGradient { - XPointFixed center; - XFixed angle; /* in degrees */ -} XConicalGradient; - -#define PictStandardARGB32 0 -#define PictStandardRGB24 1 -#define PictStandardA8 2 -#define PictStandardA4 3 -#define PictStandardA1 4 -#define PictStandardNUM 5 - - - -/* Copied from X11/extensions/renderproto.h */ - -#include - -#define Window CARD32 -#define Drawable CARD32 -#define Font CARD32 -#define Pixmap CARD32 -#define Cursor CARD32 -#define Colormap CARD32 -#define GContext CARD32 -#define Atom CARD32 -#define VisualID CARD32 -#define Time CARD32 -#define KeyCode CARD8 -#define KeySym CARD32 - -#define Picture CARD32 -#define PictFormat CARD32 -#define Fixed INT32 -#define Glyphset CARD32 -#define Glyph CARD32 - -/* - * data structures - */ - -typedef struct { - CARD16 red B16; - CARD16 redMask B16; - CARD16 green B16; - CARD16 greenMask B16; - CARD16 blue B16; - CARD16 blueMask B16; - CARD16 alpha B16; - CARD16 alphaMask B16; -} xDirectFormat; - -#define sz_xDirectFormat 16 - -typedef struct { - PictFormat id B32; - CARD8 type; - CARD8 depth; - CARD16 pad1 B16; - xDirectFormat direct; - Colormap colormap; -} xPictFormInfo; - -#define sz_xPictFormInfo 28 - -typedef struct { - VisualID visual; - PictFormat format; -} xPictVisual; - -#define sz_xPictVisual 8 - -typedef struct { - CARD8 depth; - CARD8 pad1; - CARD16 nPictVisuals B16; - CARD32 pad2 B32; -} xPictDepth; - -#define sz_xPictDepth 8 - -typedef struct { - CARD32 nDepth B32; - PictFormat fallback B32; -} xPictScreen; - -#define sz_xPictScreen 8 - -typedef struct { - CARD32 pixel B32; - CARD16 red B16; - CARD16 green B16; - CARD16 blue B16; - CARD16 alpha B16; -} xIndexValue; - -#define sz_xIndexValue 12 - -typedef struct { - CARD16 red B16; - CARD16 green B16; - CARD16 blue B16; - CARD16 alpha B16; -} xRenderColor; - -#define sz_xRenderColor 8 - -typedef struct { - Fixed x B32; - Fixed y B32; -} xPointFixed; - -#define sz_xPointFixed 8 - -typedef struct { - xPointFixed p1; - xPointFixed p2; -} xLineFixed; - -#define sz_xLineFixed 16 - -typedef struct { - xPointFixed p1, p2, p3; -} xTriangle; - -#define sz_xTriangle 24 - -typedef struct { - Fixed top B32; - Fixed bottom B32; - xLineFixed left; - xLineFixed right; -} xTrapezoid; - -#define sz_xTrapezoid 40 - -typedef struct { - CARD16 width B16; - CARD16 height B16; - INT16 x B16; - INT16 y B16; - INT16 xOff B16; - INT16 yOff B16; -} xGlyphInfo; - -#define sz_xGlyphInfo 12 - -typedef struct { - CARD8 len; - CARD8 pad1; - CARD16 pad2; - INT16 deltax; - INT16 deltay; -} xGlyphElt; - -#define sz_xGlyphElt 8 - -typedef struct { - Fixed l, r, y; -} xSpanFix; - -#define sz_xSpanFix 12 - -typedef struct { - xSpanFix top, bot; -} xTrap; - -#define sz_xTrap 24 - -/* - * requests and replies - */ -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD32 majorVersion B32; - CARD32 minorVersion B32; -} xRenderQueryVersionReq; - -#define sz_xRenderQueryVersionReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 majorVersion B32; - CARD32 minorVersion B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xRenderQueryVersionReply; - -#define sz_xRenderQueryVersionReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; -} xRenderQueryPictFormatsReq; - -#define sz_xRenderQueryPictFormatsReq 4 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 numFormats B32; - CARD32 numScreens B32; - CARD32 numDepths B32; - CARD32 numVisuals B32; - CARD32 numSubpixel B32; /* Version 0.6 */ - CARD32 pad5 B32; -} xRenderQueryPictFormatsReply; - -#define sz_xRenderQueryPictFormatsReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - PictFormat format B32; -} xRenderQueryPictIndexValuesReq; - -#define sz_xRenderQueryPictIndexValuesReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 numIndexValues; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xRenderQueryPictIndexValuesReply; - -#define sz_xRenderQueryPictIndexValuesReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - Drawable drawable B32; - PictFormat format B32; - CARD32 mask B32; -} xRenderCreatePictureReq; - -#define sz_xRenderCreatePictureReq 20 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - CARD32 mask B32; -} xRenderChangePictureReq; - -#define sz_xRenderChangePictureReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - INT16 xOrigin B16; - INT16 yOrigin B16; -} xRenderSetPictureClipRectanglesReq; - -#define sz_xRenderSetPictureClipRectanglesReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; -} xRenderFreePictureReq; - -#define sz_xRenderFreePictureReq 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture mask B32; - Picture dst B32; - INT16 xSrc B16; - INT16 ySrc B16; - INT16 xMask B16; - INT16 yMask B16; - INT16 xDst B16; - INT16 yDst B16; - CARD16 width B16; - CARD16 height B16; -} xRenderCompositeReq; - -#define sz_xRenderCompositeReq 36 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture src B32; - Picture dst B32; - CARD32 colorScale B32; - CARD32 alphaScale B32; - INT16 xSrc B16; - INT16 ySrc B16; - INT16 xDst B16; - INT16 yDst B16; - CARD16 width B16; - CARD16 height B16; -} xRenderScaleReq; - -#define sz_xRenderScaleReq 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTrapezoidsReq; - -#define sz_xRenderTrapezoidsReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTrianglesReq; - -#define sz_xRenderTrianglesReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTriStripReq; - -#define sz_xRenderTriStripReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderTriFanReq; - -#define sz_xRenderTriFanReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset gsid B32; - PictFormat format B32; -} xRenderCreateGlyphSetReq; - -#define sz_xRenderCreateGlyphSetReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset gsid B32; - Glyphset existing B32; -} xRenderReferenceGlyphSetReq; - -#define sz_xRenderReferenceGlyphSetReq 24 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset glyphset B32; -} xRenderFreeGlyphSetReq; - -#define sz_xRenderFreeGlyphSetReq 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset glyphset B32; - CARD32 nglyphs; -} xRenderAddGlyphsReq; - -#define sz_xRenderAddGlyphsReq 12 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Glyphset glyphset B32; -} xRenderFreeGlyphsReq; - -#define sz_xRenderFreeGlyphsReq 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture src B32; - Picture dst B32; - PictFormat maskFormat B32; - Glyphset glyphset B32; - INT16 xSrc B16; - INT16 ySrc B16; -} xRenderCompositeGlyphsReq, xRenderCompositeGlyphs8Req, -xRenderCompositeGlyphs16Req, xRenderCompositeGlyphs32Req; - -#define sz_xRenderCompositeGlyphs8Req 28 -#define sz_xRenderCompositeGlyphs16Req 28 -#define sz_xRenderCompositeGlyphs32Req 28 - -/* 0.1 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - CARD8 op; - CARD8 pad1; - CARD16 pad2 B16; - Picture dst B32; - xRenderColor color; -} xRenderFillRectanglesReq; - -#define sz_xRenderFillRectanglesReq 20 - -/* 0.5 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Cursor cid B32; - Picture src B32; - CARD16 x B16; - CARD16 y B16; -} xRenderCreateCursorReq; - -#define sz_xRenderCreateCursorReq 16 - -/* 0.6 and higher */ - -/* - * This can't use an array because 32-bit values may be in bitfields - */ -typedef struct { - Fixed matrix11 B32; - Fixed matrix12 B32; - Fixed matrix13 B32; - Fixed matrix21 B32; - Fixed matrix22 B32; - Fixed matrix23 B32; - Fixed matrix31 B32; - Fixed matrix32 B32; - Fixed matrix33 B32; -} xRenderTransform; - -#define sz_xRenderTransform 36 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - xRenderTransform transform; -} xRenderSetPictureTransformReq; - -#define sz_xRenderSetPictureTransformReq 44 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Drawable drawable B32; -} xRenderQueryFiltersReq; - -#define sz_xRenderQueryFiltersReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 numAliases B32; /* LISTofCARD16 */ - CARD32 numFilters B32; /* LISTofSTRING8 */ - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xRenderQueryFiltersReply; - -#define sz_xRenderQueryFiltersReply 32 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture B32; - CARD16 nbytes B16; /* number of bytes in name */ - CARD16 pad B16; -} xRenderSetPictureFilterReq; - -#define sz_xRenderSetPictureFilterReq 12 - -/* 0.8 and higher */ - -typedef struct { - Cursor cursor B32; - CARD32 delay B32; -} xAnimCursorElt; - -#define sz_xAnimCursorElt 8 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Cursor cid B32; -} xRenderCreateAnimCursorReq; - -#define sz_xRenderCreateAnimCursorReq 8 - -/* 0.9 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture picture; - INT16 xOff B16; - INT16 yOff B16; -} xRenderAddTrapsReq; - -#define sz_xRenderAddTrapsReq 12 - -/* 0.10 and higher */ - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xRenderColor color; -} xRenderCreateSolidFillReq; - -#define sz_xRenderCreateSolidFillReq 16 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xPointFixed p1; - xPointFixed p2; - CARD32 nStops; -} xRenderCreateLinearGradientReq; - -#define sz_xRenderCreateLinearGradientReq 28 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xPointFixed inner; - xPointFixed outer; - Fixed inner_radius; - Fixed outer_radius; - CARD32 nStops; -} xRenderCreateRadialGradientReq; - -#define sz_xRenderCreateRadialGradientReq 36 - -typedef struct { - CARD8 reqType; - CARD8 renderReqType; - CARD16 length B16; - Picture pid B32; - xPointFixed center; - Fixed angle; /* in degrees */ - CARD32 nStops; -} xRenderCreateConicalGradientReq; - -#define sz_xRenderCreateConicalGradientReq 24 - -#undef Window -#undef Drawable -#undef Font -#undef Pixmap -#undef Cursor -#undef Colormap -#undef GContext -#undef Atom -#undef VisualID -#undef Time -#undef KeyCode -#undef KeySym - -#undef Picture -#undef PictFormat -#undef Fixed -#undef Glyphset -#undef Glyph - - -#endif /* CAIRO_HAS_XLIB_XRENDER_SURFACE */ - -#endif /* CAIRO_XLIB_XRENDER_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/check-cairoint.sh libgdiplus-4.0-4.2.3+precise1/cairo/src/check-cairoint.sh --- libgdiplus-4.0-2.10.9/cairo/src/check-cairoint.sh 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/check-cairoint.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -#!/bin/sh - -LANG=C - -test -z "$srcdir" && srcdir=. -status=0 - -echo 'Checking source files for missing or misplaced #include "cairoint.h"' - -find "$srcdir" -name '*.c' -or -name '*.cpp' | -while read x; do - grep '\' "$x" /dev/null | head -n 1 -done | -grep -v '"cairoint.h"' | -grep . && status=1 - -exit $status diff -Nru libgdiplus-4.0-2.10.9/cairo/src/check-def.sh libgdiplus-4.0-4.2.3+precise1/cairo/src/check-def.sh --- libgdiplus-4.0-2.10.9/cairo/src/check-def.sh 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/check-def.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -#!/bin/sh - -LANG=C - -if ! which nm 2>/dev/null >/dev/null; then - echo "'nm' not found; skipping test" - exit 0 -fi - -test -z "$srcdir" && srcdir=. -test -z "$MAKE" && MAKE=make -status=0 - -$MAKE check-has-hidden-symbols.i > /dev/null || exit 1 -if tail -1 check-has-hidden-symbols.i | grep CAIRO_HAS_HIDDEN_SYMBOLS >/dev/null; then - echo "Compiler doesn't support symbol visibility; skipping test" - exit 0 -fi - -get_cairo_syms='nm "$so" | grep " T " | cut -d" " -f3' -if [ "`uname -s`" = "Linux" ]; then - get_cairo_syms='objdump -t "$so" | sed -n "/.*g *F *\.\(opd\|text\).* \(.*cairo_.*\)$/s//\2/p"' -fi - -defs="cairo.def" -$MAKE $defs > /dev/null -for def in $defs; do - lib=`echo "$def" | sed 's/[.]def$//'` - lib=`echo "$lib" | sed 's@.*/@@'` - so=.libs/lib${lib}.so - - test -f "$so" || continue - echo Checking $def - - { - echo EXPORTS - eval $get_cairo_syms | grep -v '^_cairo_test_\|^_fini\|^_init' | sort -u - # cheat: copy the last line from the def file! - tail -n1 "$def" - } | diff "$def" - || status=1 -done - -exit $status diff -Nru libgdiplus-4.0-2.10.9/cairo/src/check-doc-syntax.sh libgdiplus-4.0-4.2.3+precise1/cairo/src/check-doc-syntax.sh --- libgdiplus-4.0-2.10.9/cairo/src/check-doc-syntax.sh 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/check-doc-syntax.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -#!/bin/sh - -LANG=C - -if ! grep --version 2>/dev/null | grep GNU >/dev/null; then - echo "GNU grep not found; skipping test" - exit 0 -fi - -test -z "$srcdir" && srcdir=. -status=0 - -echo Checking documentation for incorrect syntax - -# Note: this test is also run from doc/public/ to check the SGML files - -if test "x$SGML_DOCS" = x; then - FILES=`find "$srcdir" -name '*.h' -or -name '*.c' -or -name '*.cpp'` -fi - -# Note: This test reports false positives on non-gtk-doc comments and -# non-public enum values, (such as CAIRO_FIXED_FRAC_BITS in the comment -# for _cairo_output_stream_init). I'm opposed to uglifying those comments -# with % just to shut this warning up. So instead, I'm turning this check -# off. (cworth 2008-03-02) -# -# Meanwhile, I'd love to see a system that would just link things like -# enums up without any decoration. -# -#enum_regexp='\([^%@]\|^\)\<\(FALSE\|TRUE\|NULL\|CAIRO_[0-9A-Z_]*[^(0-9A-Z_]\)' -#if test "x$SGML_DOCS" = x; then -# enum_regexp='^[/ ][*] .*'$enum_regexp -#fi -#if grep "$enum_regexp" $FILES | grep -v '#####'; then -# status=1 -# echo Error: some macros in the docs are not prefixed by percent sign. -# echo Fix this by searching for the following regexp in the above files: -# echo " '$enum_regexp'" -#fi - -type_regexp='\( .*[^#]\| \|^\)\\($\|[^:]$\|[^:].\)' -if test "x$SGML_DOCS" = x; then - type_regexp='^[/ ][*]'$type_regexp -else - type_regexp='\(.'$type_regexp'\)\|\('$type_regexp'.\)' -fi -if grep "$type_regexp" $FILES | grep -v '#####'; then - status=1 - echo Error: some type names in the docs are not prefixed by hash sign, - echo neither are the only token in the doc line followed by colon. - echo Fix this by searching for the following regexp in the above files: - echo " '$type_regexp'" -fi - -func_regexp='\([^#]\|^\)\<\(cairo_[][<>/0-9a-z_]*\> \?[^][ <>(]\)' -if test "x$SGML_DOCS" = x; then - func_regexp='^[/ ][*] .*'$func_regexp -fi -if grep "$func_regexp" $FILES | grep -v '#####'; then - status=1 - echo Error: some function names in the docs are not followed by parentheses. - echo Fix this by searching for the following regexp in the above files: - echo " '$func_regexp'" -fi - -note_regexp='NOTE' -if grep "$note_regexp" $FILES; then - status=1 - echo Error: some source files contain the string 'NOTE'. - echo Be civil and replace it by 'Note' please. -fi - -exit $status diff -Nru libgdiplus-4.0-2.10.9/cairo/src/check-has-hidden-symbols.c libgdiplus-4.0-4.2.3+precise1/cairo/src/check-has-hidden-symbols.c --- libgdiplus-4.0-2.10.9/cairo/src/check-has-hidden-symbols.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/check-has-hidden-symbols.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -#include "cairoint.h" - -CAIRO_HAS_HIDDEN_SYMBOLS diff -Nru libgdiplus-4.0-2.10.9/cairo/src/check-headers.sh libgdiplus-4.0-4.2.3+precise1/cairo/src/check-headers.sh --- libgdiplus-4.0-2.10.9/cairo/src/check-headers.sh 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/check-headers.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -#!/bin/sh - -LANG=C - -test -z "$srcdir" && srcdir=. -status=0 - -echo Checking public headers for missing cairo_public decorators - -find "$srcdir" -name '*.h' ! -name '*-private.h' ! -name '*-test.h' ! -name 'cairoint.h' ! -name 'cairo-no-features.h' | -xargs grep -B 1 '^cairo_.*[ ]\+(' | -awk ' -/^--$/ { context=""; public=0; next; } -/:cairo_.*[ ]+\(/ { if (!public) {print context; print; print "--";} next; } -/-cairo_public.*[ ]/ {public=1;} -{ context=$0; } -' | -sed 's/[.]h-/.h:/' | -grep . && status=1 - -exit $status diff -Nru libgdiplus-4.0-2.10.9/cairo/src/check-plt.sh libgdiplus-4.0-4.2.3+precise1/cairo/src/check-plt.sh --- libgdiplus-4.0-2.10.9/cairo/src/check-plt.sh 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/check-plt.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -#!/bin/sh - -LANG=C - -if ! which readelf 2>/dev/null >/dev/null; then - echo "'readelf' not found; skipping test" - exit 0 -fi - -test -z "$srcdir" && srcdir=. -test -z "$MAKE" && MAKE=make -status=0 - -$MAKE check-has-hidden-symbols.i > /dev/null || exit 1 -if tail -1 check-has-hidden-symbols.i | grep CAIRO_HAS_HIDDEN_SYMBOLS >/dev/null; then - echo "Compiler doesn't support symbol visibility; skipping test" - exit 0 -fi - -for so in .libs/lib*.so; do - echo Checking "$so" for local PLT entries - readelf -W -r "$so" | grep 'JU\?MP_SLO' | grep 'cairo' && status=1 -done - -exit $status diff -Nru libgdiplus-4.0-2.10.9/cairo/src/Makefile.am libgdiplus-4.0-4.2.3+precise1/cairo/src/Makefile.am --- libgdiplus-4.0-2.10.9/cairo/src/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,379 +0,0 @@ -backend_pkgconfigs = - -cairo_base_headers = cairo.h cairo-embed.h - -cairo_base_sources = \ - cairo.c \ - cairo.h \ - cairo-private.h \ - cairo-arc.c \ - cairo-arc-private.h \ - cairo-array.c \ - cairo-atomic.c \ - cairo-atomic-private.h \ - cairo-base85-stream.c \ - cairo-bentley-ottmann.c \ - cairo-cache.c \ - cairo-clip.c \ - cairo-clip-private.h \ - cairo-color.c \ - cairo-compiler-private.h \ - cairo-debug.c \ - cairo-fixed.c \ - cairo-font-face.c \ - cairo-font-options.c \ - cairo-freelist.c \ - cairo-freelist-private.h \ - cairo-gstate.c \ - cairo-gstate-private.h \ - cairo-hash.c \ - cairo-hash-private.h \ - cairo-hull.c \ - cairo-image-surface.c \ - cairo-lzw.c \ - cairo-misc.c \ - cairo-malloc-private.h \ - cairo-matrix.c \ - cairo-mutex.c \ - cairo-mutex-private.h \ - cairo-mutex-type-private.h \ - cairo-path.c \ - cairo-path-private.h \ - cairo-path-bounds.c \ - cairo-path-fill.c \ - cairo-path-fixed.c \ - cairo-path-fixed-private.h \ - cairo-path-stroke.c \ - cairo-pen.c \ - cairo-polygon.c \ - cairo-rectangle.c \ - cairo-reference-count-private.h \ - cairo-region.c \ - cairo-region-private.h \ - cairo-scaled-font.c \ - cairo-scaled-font-private.h \ - cairo-skiplist.c \ - cairo-skiplist-private.h \ - cairo-slope.c \ - cairo-spline.c \ - cairo-stroke-style.c \ - cairo-surface.c \ - cairo-surface-fallback.c \ - cairo-surface-fallback-private.h \ - cairo-surface-private.h \ - cairo-traps.c \ - cairo-pattern.c \ - cairo-unicode.c \ - cairo-output-stream.c \ - cairo-output-stream-private.h \ - cairo-wideint.c \ - cairo-wideint-private.h \ - cairo-wideint-type-private.h \ - cairo-meta-surface.c \ - cairo-meta-surface-private.h \ - cairo-paginated-private.h \ - cairo-paginated-surface.c \ - cairo-paginated-surface-private.h \ - cairo-analysis-surface.c \ - cairo-analysis-surface-private.h \ - cairoint.h -cairo_all_sources = $(cairo_base_sources) $(cairo_base_headers) -cairo_headers = $(cairo_base_headers) -cairo_sources = $(cairo_base_sources) - -font_subset_sources_base = \ - cairo-cff-subset.c \ - cairo-truetype-subset.c \ - cairo-type1-fallback.c \ - cairo-type1-private.h \ - cairo-truetype-subset-private.h \ - cairo-scaled-font-subsets.c \ - cairo-scaled-font-subsets-private.h -cairo_all_sources += $(font_subset_sources_base) - -font_subset_sources_ft = cairo-type1-subset.c -cairo_all_sources += $(font_subset_sources_ft) -font_subset_sources = $(font_subset_sources_base) -if CAIRO_HAS_FT_FONT -font_subset_sources += $(font_subset_sources_ft) -endif - -ps_headers = cairo-ps.h -ps_sources = cairo-ps-surface.c cairo-ps-surface-private.h -cairo_all_sources += $(ps_headers) $(ps_sources) -if CAIRO_HAS_PS_SURFACE -libcairo_font_subset_sources = $(font_subset_sources) -cairo_headers += $(ps_headers) -cairo_sources += $(ps_sources) -backend_pkgconfigs += cairo-ps.pc -endif - -pdf_headers = cairo-pdf.h -pdf_sources = cairo-pdf-surface.c cairo-pdf-surface-private.h \ - cairo-pdf-operators.c cairo-pdf-operators-private.h \ - cairo-deflate-stream.c -cairo_all_sources += $(pdf_headers) $(pdf_sources) -if CAIRO_HAS_PDF_SURFACE -libcairo_font_subset_sources = $(font_subset_sources) -cairo_headers += $(pdf_headers) -cairo_sources += $(pdf_sources) -backend_pkgconfigs += cairo-pdf.pc -endif - -png_sources = cairo-png.c -cairo_all_sources += $(png_sources) -if CAIRO_HAS_PNG_FUNCTIONS -cairo_sources += $(png_sources) -backend_pkgconfigs += cairo-png.pc -endif - -svg_headers = cairo-svg.h -svg_sources = cairo-svg-surface.c cairo-svg-surface-private.h -cairo_all_sources += $(svg_headers) $(svg_sources) -if CAIRO_HAS_SVG_SURFACE -libcairo_font_subset_sources = $(font_subset_sources) -cairo_headers += $(svg_headers) -cairo_sources += $(svg_sources) -backend_pkgconfigs += cairo-svg.pc -endif - -cairo_sources += $(libcairo_font_subset_sources) - -test_sources = test-fallback-surface.c test-fallback-surface.h \ - test-meta-surface.c test-meta-surface.h \ - test-paginated-surface.c test-paginated-surface.h -cairo_all_sources += $(test_sources) -if CAIRO_HAS_TEST_SURFACES -cairo_sources += $(test_sources) -endif - -xlib_headers = cairo-xlib.h -xlib_sources = cairo-xlib-surface.c \ - cairo-xlib-surface-private.h \ - cairo-xlib-display.c \ - cairo-xlib-screen.c \ - cairo-xlib-visual.c \ - cairo-xlib-private.h \ - cairo-xlib-xrender-private.h -cairo_all_sources += $(xlib_headers) $(xlib_sources) -if CAIRO_HAS_XLIB_SURFACE -cairo_headers += $(xlib_headers) -cairo_sources += $(xlib_sources) -backend_pkgconfigs += cairo-xlib.pc -endif - -xlib_xrender_headers = cairo-xlib-xrender.h -cairo_all_sources += $(xlib_xrender_headers) -if CAIRO_HAS_XLIB_XRENDER_SURFACE -cairo_headers += $(xlib_xrender_headers) -backend_pkgconfigs += cairo-xlib-xrender.pc -endif - -xcb_headers = cairo-xcb.h cairo-xcb-xrender.h -xcb_sources = cairo-xcb-surface.c -cairo_all_sources += $(xcb_headers) $(xcb_sources) -if CAIRO_HAS_XCB_SURFACE -cairo_headers += $(xcb_headers) -cairo_sources += $(xcb_sources) -backend_pkgconfigs += cairo-xcb.pc -endif - -quartz_headers = cairo-quartz.h -quartz_sources = cairo-quartz-surface.c cairo-quartz-image-surface.c cairo-quartz-private.h -cairo_all_sources += $(quartz_headers) $(quartz_sources) -if CAIRO_HAS_QUARTZ_SURFACE -cairo_headers += $(quartz_headers) -cairo_sources += $(quartz_sources) -backend_pkgconfigs += cairo-quartz.pc -endif -if CAIRO_HAS_QUARTZ_IMAGE_SURFACE -cairo_headers += cairo-quartz-image.h -backend_pkgconfigs += cairo-quartz-image.pc -endif - -quartz_font_sources = cairo-quartz-font.c -cairo_all_sources += $(quartz_font_sources) -if CAIRO_HAS_QUARTZ_FONT -cairo_sources += $(quartz_font_sources) -endif - -os_win32_sources = cairo-win32.c -cairo_all_sources += $(os_win32_sources) -if OS_WIN32 -cairo_sources += $(os_win32_sources) -export_symbols = -export-symbols cairo.def -cairo_def_dependency = cairo.def -endif - -win32_headers = cairo-win32.h -win32_sources = cairo-win32-surface.c cairo-win32-printing-surface.c cairo-win32-private.h -cairo_all_sources += $(win32_headers) $(win32_sources) -if CAIRO_HAS_WIN32_SURFACE -cairo_headers += $(win32_headers) -cairo_sources += $(win32_sources) -backend_pkgconfigs += cairo-win32.pc -endif - -win32_font_sources = cairo-win32-font.c -cairo_all_sources += $(win32_font_sources) -if CAIRO_HAS_WIN32_FONT -cairo_sources += $(win32_font_sources) -backend_pkgconfigs += cairo-win32-font.pc -endif - -os2_headers = cairo-os2.h -os2_sources = cairo-os2-surface.c cairo-os2-private.h -cairo_all_sources += $(os2_headers) $(os2_sources) -if CAIRO_HAS_OS2_SURFACE -cairo_headers += $(os2_headers) -cairo_sources += $(os2_sources) -backend_pkgconfigs += cairo-os2.pc -endif - -beos_headers = cairo-beos.h -beos_sources = cairo-beos-surface.cpp -cairo_all_sources += $(beos_headers) $(beos_sources) -if CAIRO_HAS_BEOS_SURFACE -cairo_headers += $(beos_headers) -backend_pkgconfigs += cairo-beos.pc - -#noinst_LTLIBRARIES = libcairo_beos.la -#libcairo_beos_la_SOURCES = $(libcairo_beos_sources) -# BeOS system headers trigger this warning -#libcairo_beos_la_CXXFLAGS = -Wno-multichar -endif - -glitz_headers = cairo-glitz.h -glitz_sources = cairo-glitz-surface.c cairo-glitz-private.h -cairo_all_sources += $(glitz_headers) $(glitz_sources) -if CAIRO_HAS_GLITZ_SURFACE -cairo_headers += $(glitz_headers) -cairo_sources += $(glitz_sources) -backend_pkgconfigs += cairo-glitz.pc -endif - -directfb_headers = cairo-directfb.h -directfb_sources = cairo-directfb-surface.c -cairo_all_sources += $(directfb_headers) $(directfb_sources) -if CAIRO_HAS_DIRECTFB_SURFACE -cairo_headers += $(directfb_headers) -cairo_sources += $(directfb_sources) -backend_pkgconfigs += cairo-directfb.pc -endif - -ft_headers = cairo-ft.h -ft_sources = cairo-ft-font.c cairo-ft-private.h -cairo_all_sources += $(ft_headers) $(ft_sources) -if CAIRO_HAS_FT_FONT -cairo_headers += $(ft_headers) -cairo_sources += $(ft_sources) -backend_pkgconfigs += cairo-ft.pc -endif - -# These names match automake style variable definition conventions so -# without these lines, automake will complain during the handling of -# the libcairo_la_LIBADD below. (The INCLUDES is an autoconf only -# term and automake does not care about it) -FONTCONFIG_LIBS=@FONTCONFIG_LIBS@ -XRENDER_LIBS=@XRENDER_LIBS@ - -cairoincludedir = $(includedir)/cairo -noinst_HEADERS = \ - cairo-deprecated.h \ - $(cairo_headers) - -nodist_noinst_HEADERS = \ - cairo-features.h - -noinst_LTLIBRARIES = libcairo.la - -# source files that cannot be passed to compiler directly. -# mostly when they depend recursively on cairoint.h. that is, -# cairoint.h includes them in the middle. -cairo_special_sources = \ - cairo-cache-private.h \ - cairo-fixed-private.h \ - cairo-fixed-type-private.h \ - cairo-mutex-list-private.h \ - cairo-types-private.h - -libcairo_la_SOURCES = \ - $(cairo_sources) \ - $(cairo_special_sources) - -cairo_all_source_file = \ - $(cairo_all_sources) \ - $(cairo_special_sources) - -libcairo_la_LDFLAGS = -version-info @VERSION_INFO@ -no-undefined $(export_symbols) - -libcairo_la_CFLAGS = -I$(srcdir) $(CAIRO_CFLAGS) - -libcairo_la_LIBADD = $(CAIRO_LIBS) $(CAIRO_LDADD) - -libcairo_la_DEPENDENCIES = $(cairo_def_dependency) - -pkgconfigdir = $(libdir)/pkgconfig -noinst_DATA = cairo.pc $(backend_pkgconfigs) -DISTCLEANFILES = $(backend_pkgconfigs) -EXTRA_DIST = cairo-backend.pc.in -$(backend_pkgconfigs): $(top_srcdir)/configure - cd $(top_builddir) && ./config.status --recheck - -$(top_builddir)/config.h: $(top_srcdir)/config.h.in - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) config.h - -DISTCLEANFILES += cairo-features.h cairo-no-features.h -cairo-features.h cairo-no-features.h: - cd $(top_builddir) && ./config.status src/$@ - -CLEANFILES = cairo.def -cairo.def: $(cairo_headers) cairo-features.h - @echo Generating $@ - @(echo EXPORTS; \ - (cd $(srcdir); cat $(cairo_headers) || echo 'cairo_ERROR ()' ) | \ - grep -v -E '^# *include' | \ - ( gcc -include cairo-features.h -E - || echo 'cairo_ERROR ()' ) | \ - grep -E '^cairo_.* \(' | \ - sed -e 's/[ ].*//' | \ - sort; \ - echo LIBRARY libcairo-$(LT_CURRENT_MINUS_AGE).dll; \ - ) >$@ - @ ! grep -q cairo_ERROR $@ || ($(RM) $@; false) - -install-data-local: - @if test -f "$(DESTDIR)$(includedir)/cairo.h" || test -f "$(DESTDIR)$(includedir)/cairo-features.h" ; then \ - echo "****************************************************************" ; \ - echo "*** Error: Old headers found. You should remove the following" ; \ - echo "*** files and then type 'make install' again." ; \ - ls $(includedir)/cairo*.h ; \ - echo "****************************************************************" ; \ - false ; \ - fi - -TESTS_ENVIRONMENT = srcdir="$(srcdir)" MAKE="$(MAKE)" cairo_all_source_file="$(cairo_all_source_file)" -TESTS = check-def.sh check-plt.sh check-headers.sh check-cairoint.sh check-doc-syntax.sh -EXTRA_DIST += $(TESTS) check-has-hidden-symbols.c -DISTCLEANFILES += check-has-hidden-symbols.i - -# The pre-processed result is used by check-{def,plt}.sh to determine whether -# cairo has been compiled with symbol hiding. -.c.i: $(noinst_HEADERS) $(nodist_noinst_HEADERS) cairoint.h $(top_builddir)/config.h - $(CPP) -DHAVE_CONFIG_H -I$(top_builddir) -I. $(libcairo_la_CFLAGS) $< -o $@ - -SPARSE = sparse -sparse: - @status=true; for f in $(cairo_sources); do \ - echo sparse $$f; \ - $(SPARSE) -I$(top_builddir) $(libcairo_la_CFLAGS) -DHAVE_CONFIG_H $$f || status=false; \ - done; $$status - -SPLINT = splint -badflag -splint: - @status=true; for f in $(cairo_sources); do \ - test "$$f" = "`echo "$$f" | sed 's/[.]h$$//'`" || continue; \ - echo sparse $$f; \ - $(SPLINT) -I$(top_builddir) $(libcairo_la_CFLAGS) -DHAVE_CONFIG_H $$f || status=false; \ - done; $$status - -EXTRA_DIST += Makefile.win32 diff -Nru libgdiplus-4.0-2.10.9/cairo/src/Makefile.in libgdiplus-4.0-4.2.3+precise1/cairo/src/Makefile.in --- libgdiplus-4.0-2.10.9/cairo/src/Makefile.in 2011-12-14 17:04:33.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,1699 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@CAIRO_HAS_FT_FONT_TRUE@am__append_1 = $(font_subset_sources_ft) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_2 = $(ps_headers) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_3 = $(ps_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_4 = cairo-ps.pc -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_5 = $(pdf_headers) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_6 = $(pdf_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_7 = cairo-pdf.pc -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_8 = $(png_sources) -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__append_9 = cairo-png.pc -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_10 = $(svg_headers) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_11 = $(svg_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_12 = cairo-svg.pc -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_13 = $(test_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_14 = $(xlib_headers) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_15 = $(xlib_sources) -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_16 = cairo-xlib.pc -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_17 = $(xlib_xrender_headers) -@CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__append_18 = cairo-xlib-xrender.pc -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_19 = $(xcb_headers) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_20 = $(xcb_sources) -@CAIRO_HAS_XCB_SURFACE_TRUE@am__append_21 = cairo-xcb.pc -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_22 = $(quartz_headers) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_23 = $(quartz_sources) -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__append_24 = cairo-quartz.pc -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_25 = cairo-quartz-image.h -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__append_26 = cairo-quartz-image.pc -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__append_27 = $(quartz_font_sources) -@OS_WIN32_TRUE@am__append_28 = $(os_win32_sources) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_29 = $(win32_headers) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_30 = $(win32_sources) -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_31 = cairo-win32.pc -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_32 = $(win32_font_sources) -@CAIRO_HAS_WIN32_FONT_TRUE@am__append_33 = cairo-win32-font.pc -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_34 = $(os2_headers) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_35 = $(os2_sources) -@CAIRO_HAS_OS2_SURFACE_TRUE@am__append_36 = cairo-os2.pc -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_37 = $(beos_headers) -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__append_38 = cairo-beos.pc -@CAIRO_HAS_GLITZ_SURFACE_TRUE@am__append_39 = $(glitz_headers) -@CAIRO_HAS_GLITZ_SURFACE_TRUE@am__append_40 = $(glitz_sources) -@CAIRO_HAS_GLITZ_SURFACE_TRUE@am__append_41 = cairo-glitz.pc -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_42 = $(directfb_headers) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_43 = $(directfb_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_44 = cairo-directfb.pc -@CAIRO_HAS_FT_FONT_TRUE@am__append_45 = $(ft_headers) -@CAIRO_HAS_FT_FONT_TRUE@am__append_46 = $(ft_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_47 = cairo-ft.pc -subdir = src -DIST_COMMON = $(am__noinst_HEADERS_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/cairo.pc.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = cairo.pc -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -am__DEPENDENCIES_1 = -am__libcairo_la_SOURCES_DIST = cairo.c cairo.h cairo-private.h \ - cairo-arc.c cairo-arc-private.h cairo-array.c cairo-atomic.c \ - cairo-atomic-private.h cairo-base85-stream.c \ - cairo-bentley-ottmann.c cairo-cache.c cairo-clip.c \ - cairo-clip-private.h cairo-color.c cairo-compiler-private.h \ - cairo-debug.c cairo-fixed.c cairo-font-face.c \ - cairo-font-options.c cairo-freelist.c cairo-freelist-private.h \ - cairo-gstate.c cairo-gstate-private.h cairo-hash.c \ - cairo-hash-private.h cairo-hull.c cairo-image-surface.c \ - cairo-lzw.c cairo-misc.c cairo-malloc-private.h cairo-matrix.c \ - cairo-mutex.c cairo-mutex-private.h cairo-mutex-type-private.h \ - cairo-path.c cairo-path-private.h cairo-path-bounds.c \ - cairo-path-fill.c cairo-path-fixed.c \ - cairo-path-fixed-private.h cairo-path-stroke.c cairo-pen.c \ - cairo-polygon.c cairo-rectangle.c \ - cairo-reference-count-private.h cairo-region.c \ - cairo-region-private.h cairo-scaled-font.c \ - cairo-scaled-font-private.h cairo-skiplist.c \ - cairo-skiplist-private.h cairo-slope.c cairo-spline.c \ - cairo-stroke-style.c cairo-surface.c cairo-surface-fallback.c \ - cairo-surface-fallback-private.h cairo-surface-private.h \ - cairo-traps.c cairo-pattern.c cairo-unicode.c \ - cairo-output-stream.c cairo-output-stream-private.h \ - cairo-wideint.c cairo-wideint-private.h \ - cairo-wideint-type-private.h cairo-meta-surface.c \ - cairo-meta-surface-private.h cairo-paginated-private.h \ - cairo-paginated-surface.c cairo-paginated-surface-private.h \ - cairo-analysis-surface.c cairo-analysis-surface-private.h \ - cairoint.h cairo-ps-surface.c cairo-ps-surface-private.h \ - cairo-pdf-surface.c cairo-pdf-surface-private.h \ - cairo-pdf-operators.c cairo-pdf-operators-private.h \ - cairo-deflate-stream.c cairo-png.c cairo-svg-surface.c \ - cairo-svg-surface-private.h cairo-cff-subset.c \ - cairo-truetype-subset.c cairo-type1-fallback.c \ - cairo-type1-private.h cairo-truetype-subset-private.h \ - cairo-scaled-font-subsets.c \ - cairo-scaled-font-subsets-private.h cairo-type1-subset.c \ - test-fallback-surface.c test-fallback-surface.h \ - test-meta-surface.c test-meta-surface.h \ - test-paginated-surface.c test-paginated-surface.h \ - cairo-xlib-surface.c cairo-xlib-surface-private.h \ - cairo-xlib-display.c cairo-xlib-screen.c cairo-xlib-visual.c \ - cairo-xlib-private.h cairo-xlib-xrender-private.h \ - cairo-xcb-surface.c cairo-quartz-surface.c \ - cairo-quartz-image-surface.c cairo-quartz-private.h \ - cairo-quartz-font.c cairo-win32.c cairo-win32-surface.c \ - cairo-win32-printing-surface.c cairo-win32-private.h \ - cairo-win32-font.c cairo-os2-surface.c cairo-os2-private.h \ - cairo-glitz-surface.c cairo-glitz-private.h \ - cairo-directfb-surface.c cairo-ft-font.c cairo-ft-private.h \ - cairo-cache-private.h cairo-fixed-private.h \ - cairo-fixed-type-private.h cairo-mutex-list-private.h \ - cairo-types-private.h -am__objects_1 = libcairo_la-cairo.lo libcairo_la-cairo-arc.lo \ - libcairo_la-cairo-array.lo libcairo_la-cairo-atomic.lo \ - libcairo_la-cairo-base85-stream.lo \ - libcairo_la-cairo-bentley-ottmann.lo \ - libcairo_la-cairo-cache.lo libcairo_la-cairo-clip.lo \ - libcairo_la-cairo-color.lo libcairo_la-cairo-debug.lo \ - libcairo_la-cairo-fixed.lo libcairo_la-cairo-font-face.lo \ - libcairo_la-cairo-font-options.lo \ - libcairo_la-cairo-freelist.lo libcairo_la-cairo-gstate.lo \ - libcairo_la-cairo-hash.lo libcairo_la-cairo-hull.lo \ - libcairo_la-cairo-image-surface.lo libcairo_la-cairo-lzw.lo \ - libcairo_la-cairo-misc.lo libcairo_la-cairo-matrix.lo \ - libcairo_la-cairo-mutex.lo libcairo_la-cairo-path.lo \ - libcairo_la-cairo-path-bounds.lo \ - libcairo_la-cairo-path-fill.lo libcairo_la-cairo-path-fixed.lo \ - libcairo_la-cairo-path-stroke.lo libcairo_la-cairo-pen.lo \ - libcairo_la-cairo-polygon.lo libcairo_la-cairo-rectangle.lo \ - libcairo_la-cairo-region.lo libcairo_la-cairo-scaled-font.lo \ - libcairo_la-cairo-skiplist.lo libcairo_la-cairo-slope.lo \ - libcairo_la-cairo-spline.lo libcairo_la-cairo-stroke-style.lo \ - libcairo_la-cairo-surface.lo \ - libcairo_la-cairo-surface-fallback.lo \ - libcairo_la-cairo-traps.lo libcairo_la-cairo-pattern.lo \ - libcairo_la-cairo-unicode.lo \ - libcairo_la-cairo-output-stream.lo \ - libcairo_la-cairo-wideint.lo libcairo_la-cairo-meta-surface.lo \ - libcairo_la-cairo-paginated-surface.lo \ - libcairo_la-cairo-analysis-surface.lo -am__objects_2 = libcairo_la-cairo-ps-surface.lo -@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_3 = $(am__objects_2) -am__objects_4 = libcairo_la-cairo-pdf-surface.lo \ - libcairo_la-cairo-pdf-operators.lo \ - libcairo_la-cairo-deflate-stream.lo -@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_5 = $(am__objects_4) -am__objects_6 = libcairo_la-cairo-png.lo -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__objects_7 = $(am__objects_6) -am__objects_8 = libcairo_la-cairo-svg-surface.lo -@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_9 = $(am__objects_8) -am__objects_10 = libcairo_la-cairo-cff-subset.lo \ - libcairo_la-cairo-truetype-subset.lo \ - libcairo_la-cairo-type1-fallback.lo \ - libcairo_la-cairo-scaled-font-subsets.lo -am__objects_11 = libcairo_la-cairo-type1-subset.lo -@CAIRO_HAS_FT_FONT_TRUE@am__objects_12 = $(am__objects_11) -am__objects_13 = $(am__objects_10) $(am__objects_12) -@CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_PS_SURFACE_FALSE@@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_14 = $(am__objects_13) -@CAIRO_HAS_PDF_SURFACE_FALSE@@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_14 = $(am__objects_13) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_14 = $(am__objects_13) -am__objects_15 = libcairo_la-test-fallback-surface.lo \ - libcairo_la-test-meta-surface.lo \ - libcairo_la-test-paginated-surface.lo -@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_16 = $(am__objects_15) -am__objects_17 = libcairo_la-cairo-xlib-surface.lo \ - libcairo_la-cairo-xlib-display.lo \ - libcairo_la-cairo-xlib-screen.lo \ - libcairo_la-cairo-xlib-visual.lo -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__objects_18 = $(am__objects_17) -am__objects_19 = libcairo_la-cairo-xcb-surface.lo -@CAIRO_HAS_XCB_SURFACE_TRUE@am__objects_20 = $(am__objects_19) -am__objects_21 = libcairo_la-cairo-quartz-surface.lo \ - libcairo_la-cairo-quartz-image-surface.lo -@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__objects_22 = $(am__objects_21) -am__objects_23 = libcairo_la-cairo-quartz-font.lo -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__objects_24 = $(am__objects_23) -am__objects_25 = libcairo_la-cairo-win32.lo -@OS_WIN32_TRUE@am__objects_26 = $(am__objects_25) -am__objects_27 = libcairo_la-cairo-win32-surface.lo \ - libcairo_la-cairo-win32-printing-surface.lo -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__objects_28 = $(am__objects_27) -am__objects_29 = libcairo_la-cairo-win32-font.lo -@CAIRO_HAS_WIN32_FONT_TRUE@am__objects_30 = $(am__objects_29) -am__objects_31 = libcairo_la-cairo-os2-surface.lo -@CAIRO_HAS_OS2_SURFACE_TRUE@am__objects_32 = $(am__objects_31) -am__objects_33 = libcairo_la-cairo-glitz-surface.lo -@CAIRO_HAS_GLITZ_SURFACE_TRUE@am__objects_34 = $(am__objects_33) -am__objects_35 = libcairo_la-cairo-directfb-surface.lo -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_36 = $(am__objects_35) -am__objects_37 = libcairo_la-cairo-ft-font.lo -@CAIRO_HAS_FT_FONT_TRUE@am__objects_38 = $(am__objects_37) -am__objects_39 = $(am__objects_1) $(am__objects_3) $(am__objects_5) \ - $(am__objects_7) $(am__objects_9) $(am__objects_14) \ - $(am__objects_16) $(am__objects_18) $(am__objects_20) \ - $(am__objects_22) $(am__objects_24) $(am__objects_26) \ - $(am__objects_28) $(am__objects_30) $(am__objects_32) \ - $(am__objects_34) $(am__objects_36) $(am__objects_38) -am__objects_40 = -am_libcairo_la_OBJECTS = $(am__objects_39) $(am__objects_40) -libcairo_la_OBJECTS = $(am_libcairo_la_OBJECTS) -libcairo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcairo_la_CFLAGS) \ - $(CFLAGS) $(libcairo_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/../depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libcairo_la_SOURCES) -DIST_SOURCES = $(am__libcairo_la_SOURCES_DIST) -DATA = $(noinst_DATA) -am__noinst_HEADERS_DIST = cairo-deprecated.h cairo.h cairo-embed.h \ - cairo-ps.h cairo-pdf.h cairo-svg.h cairo-xlib.h \ - cairo-xlib-xrender.h cairo-xcb.h cairo-xcb-xrender.h \ - cairo-quartz.h cairo-quartz-image.h cairo-win32.h cairo-os2.h \ - cairo-beos.h cairo-glitz.h cairo-directfb.h cairo-ft.h -HEADERS = $(nodist_noinst_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAIROPERF_LIBS = @CAIROPERF_LIBS@ -CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_LDADD = @CAIRO_LDADD@ -CAIRO_LIBS = @CAIRO_LIBS@ -CAIRO_NONPKGCONFIG_CFLAGS = @CAIRO_NONPKGCONFIG_CFLAGS@ -CAIRO_NONPKGCONFIG_LIBS = @CAIRO_NONPKGCONFIG_LIBS@ -CAIRO_REQUIRES = @CAIRO_REQUIRES@ -CAIRO_VERSION_MAJOR = @CAIRO_VERSION_MAJOR@ -CAIRO_VERSION_MICRO = @CAIRO_VERSION_MICRO@ -CAIRO_VERSION_MINOR = @CAIRO_VERSION_MINOR@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FIND = @FIND@ -FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ - -# These names match automake style variable definition conventions so -# without these lines, automake will complain during the handling of -# the libcairo_la_LIBADD below. (The INCLUDES is an autoconf only -# term and automake does not care about it) -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ -FREETYPE_CONFIG = @FREETYPE_CONFIG@ -FREETYPE_LIBS = @FREETYPE_LIBS@ -GLITZ_AGL_CFLAGS = @GLITZ_AGL_CFLAGS@ -GLITZ_AGL_LIBS = @GLITZ_AGL_LIBS@ -GLITZ_EGL_CFLAGS = @GLITZ_EGL_CFLAGS@ -GLITZ_EGL_LIBS = @GLITZ_EGL_LIBS@ -GLITZ_GLX_CFLAGS = @GLITZ_GLX_CFLAGS@ -GLITZ_GLX_LIBS = @GLITZ_GLX_LIBS@ -GLITZ_WGL_CFLAGS = @GLITZ_WGL_CFLAGS@ -GLITZ_WGL_LIBS = @GLITZ_WGL_LIBS@ -GREP = @GREP@ -GS = @GS@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBRSVG_CFLAGS = @LIBRSVG_CFLAGS@ -LIBRSVG_LIBS = @LIBRSVG_LIBS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LTP = @LTP@ -LTP_GENHTML = @LTP_GENHTML@ -LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POPPLER_CFLAGS = @POPPLER_CFLAGS@ -POPPLER_LIBS = @POPPLER_LIBS@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SHTOOL = @SHTOOL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VERSION_INFO = @VERSION_INFO@ -XARGS = @XARGS@ -XMKMF = @XMKMF@ -X_CFLAGS = @X_CFLAGS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -directfb_CFLAGS = @directfb_CFLAGS@ -directfb_LIBS = @directfb_LIBS@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -glitz_CFLAGS = @glitz_CFLAGS@ -glitz_LIBS = @glitz_LIBS@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -png_CFLAGS = @png_CFLAGS@ -png_LIBS = @png_LIBS@ -png_REQUIRES = @png_REQUIRES@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -xcb_CFLAGS = @xcb_CFLAGS@ -xcb_LIBS = @xcb_LIBS@ -xlib_CFLAGS = @xlib_CFLAGS@ -xlib_LIBS = @xlib_LIBS@ -xlib_xrender_CFLAGS = @xlib_xrender_CFLAGS@ -xlib_xrender_LIBS = @xlib_xrender_LIBS@ -backend_pkgconfigs = $(am__append_4) $(am__append_7) $(am__append_9) \ - $(am__append_12) $(am__append_16) $(am__append_18) \ - $(am__append_21) $(am__append_24) $(am__append_26) \ - $(am__append_31) $(am__append_33) $(am__append_36) \ - $(am__append_38) $(am__append_41) $(am__append_44) \ - $(am__append_47) -cairo_base_headers = cairo.h cairo-embed.h -cairo_base_sources = \ - cairo.c \ - cairo.h \ - cairo-private.h \ - cairo-arc.c \ - cairo-arc-private.h \ - cairo-array.c \ - cairo-atomic.c \ - cairo-atomic-private.h \ - cairo-base85-stream.c \ - cairo-bentley-ottmann.c \ - cairo-cache.c \ - cairo-clip.c \ - cairo-clip-private.h \ - cairo-color.c \ - cairo-compiler-private.h \ - cairo-debug.c \ - cairo-fixed.c \ - cairo-font-face.c \ - cairo-font-options.c \ - cairo-freelist.c \ - cairo-freelist-private.h \ - cairo-gstate.c \ - cairo-gstate-private.h \ - cairo-hash.c \ - cairo-hash-private.h \ - cairo-hull.c \ - cairo-image-surface.c \ - cairo-lzw.c \ - cairo-misc.c \ - cairo-malloc-private.h \ - cairo-matrix.c \ - cairo-mutex.c \ - cairo-mutex-private.h \ - cairo-mutex-type-private.h \ - cairo-path.c \ - cairo-path-private.h \ - cairo-path-bounds.c \ - cairo-path-fill.c \ - cairo-path-fixed.c \ - cairo-path-fixed-private.h \ - cairo-path-stroke.c \ - cairo-pen.c \ - cairo-polygon.c \ - cairo-rectangle.c \ - cairo-reference-count-private.h \ - cairo-region.c \ - cairo-region-private.h \ - cairo-scaled-font.c \ - cairo-scaled-font-private.h \ - cairo-skiplist.c \ - cairo-skiplist-private.h \ - cairo-slope.c \ - cairo-spline.c \ - cairo-stroke-style.c \ - cairo-surface.c \ - cairo-surface-fallback.c \ - cairo-surface-fallback-private.h \ - cairo-surface-private.h \ - cairo-traps.c \ - cairo-pattern.c \ - cairo-unicode.c \ - cairo-output-stream.c \ - cairo-output-stream-private.h \ - cairo-wideint.c \ - cairo-wideint-private.h \ - cairo-wideint-type-private.h \ - cairo-meta-surface.c \ - cairo-meta-surface-private.h \ - cairo-paginated-private.h \ - cairo-paginated-surface.c \ - cairo-paginated-surface-private.h \ - cairo-analysis-surface.c \ - cairo-analysis-surface-private.h \ - cairoint.h - -cairo_all_sources = $(cairo_base_sources) $(cairo_base_headers) \ - $(font_subset_sources_base) $(font_subset_sources_ft) \ - $(ps_headers) $(ps_sources) $(pdf_headers) $(pdf_sources) \ - $(png_sources) $(svg_headers) $(svg_sources) $(test_sources) \ - $(xlib_headers) $(xlib_sources) $(xlib_xrender_headers) \ - $(xcb_headers) $(xcb_sources) $(quartz_headers) \ - $(quartz_sources) $(quartz_font_sources) $(os_win32_sources) \ - $(win32_headers) $(win32_sources) $(win32_font_sources) \ - $(os2_headers) $(os2_sources) $(beos_headers) $(beos_sources) \ - $(glitz_headers) $(glitz_sources) $(directfb_headers) \ - $(directfb_sources) $(ft_headers) $(ft_sources) -cairo_headers = $(cairo_base_headers) $(am__append_2) $(am__append_5) \ - $(am__append_10) $(am__append_14) $(am__append_17) \ - $(am__append_19) $(am__append_22) $(am__append_25) \ - $(am__append_29) $(am__append_34) $(am__append_37) \ - $(am__append_39) $(am__append_42) $(am__append_45) -cairo_sources = $(cairo_base_sources) $(am__append_3) $(am__append_6) \ - $(am__append_8) $(am__append_11) \ - $(libcairo_font_subset_sources) $(am__append_13) \ - $(am__append_15) $(am__append_20) $(am__append_23) \ - $(am__append_27) $(am__append_28) $(am__append_30) \ - $(am__append_32) $(am__append_35) $(am__append_40) \ - $(am__append_43) $(am__append_46) -font_subset_sources_base = \ - cairo-cff-subset.c \ - cairo-truetype-subset.c \ - cairo-type1-fallback.c \ - cairo-type1-private.h \ - cairo-truetype-subset-private.h \ - cairo-scaled-font-subsets.c \ - cairo-scaled-font-subsets-private.h - -font_subset_sources_ft = cairo-type1-subset.c -font_subset_sources = $(font_subset_sources_base) $(am__append_1) -ps_headers = cairo-ps.h -ps_sources = cairo-ps-surface.c cairo-ps-surface-private.h -@CAIRO_HAS_PDF_SURFACE_TRUE@libcairo_font_subset_sources = $(font_subset_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@libcairo_font_subset_sources = $(font_subset_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@libcairo_font_subset_sources = $(font_subset_sources) -pdf_headers = cairo-pdf.h -pdf_sources = cairo-pdf-surface.c cairo-pdf-surface-private.h \ - cairo-pdf-operators.c cairo-pdf-operators-private.h \ - cairo-deflate-stream.c - -png_sources = cairo-png.c -svg_headers = cairo-svg.h -svg_sources = cairo-svg-surface.c cairo-svg-surface-private.h -test_sources = test-fallback-surface.c test-fallback-surface.h \ - test-meta-surface.c test-meta-surface.h \ - test-paginated-surface.c test-paginated-surface.h - -xlib_headers = cairo-xlib.h -xlib_sources = cairo-xlib-surface.c \ - cairo-xlib-surface-private.h \ - cairo-xlib-display.c \ - cairo-xlib-screen.c \ - cairo-xlib-visual.c \ - cairo-xlib-private.h \ - cairo-xlib-xrender-private.h - -xlib_xrender_headers = cairo-xlib-xrender.h -xcb_headers = cairo-xcb.h cairo-xcb-xrender.h -xcb_sources = cairo-xcb-surface.c -quartz_headers = cairo-quartz.h -quartz_sources = cairo-quartz-surface.c cairo-quartz-image-surface.c cairo-quartz-private.h -quartz_font_sources = cairo-quartz-font.c -os_win32_sources = cairo-win32.c -@OS_WIN32_TRUE@export_symbols = -export-symbols cairo.def -@OS_WIN32_TRUE@cairo_def_dependency = cairo.def -win32_headers = cairo-win32.h -win32_sources = cairo-win32-surface.c cairo-win32-printing-surface.c cairo-win32-private.h -win32_font_sources = cairo-win32-font.c -os2_headers = cairo-os2.h -os2_sources = cairo-os2-surface.c cairo-os2-private.h -beos_headers = cairo-beos.h -beos_sources = cairo-beos-surface.cpp - -#noinst_LTLIBRARIES = libcairo_beos.la -#libcairo_beos_la_SOURCES = $(libcairo_beos_sources) -# BeOS system headers trigger this warning -#libcairo_beos_la_CXXFLAGS = -Wno-multichar -glitz_headers = cairo-glitz.h -glitz_sources = cairo-glitz-surface.c cairo-glitz-private.h -directfb_headers = cairo-directfb.h -directfb_sources = cairo-directfb-surface.c -ft_headers = cairo-ft.h -ft_sources = cairo-ft-font.c cairo-ft-private.h -XRENDER_LIBS = @XRENDER_LIBS@ -cairoincludedir = $(includedir)/cairo -noinst_HEADERS = \ - cairo-deprecated.h \ - $(cairo_headers) - -nodist_noinst_HEADERS = \ - cairo-features.h - -noinst_LTLIBRARIES = libcairo.la - -# source files that cannot be passed to compiler directly. -# mostly when they depend recursively on cairoint.h. that is, -# cairoint.h includes them in the middle. -cairo_special_sources = \ - cairo-cache-private.h \ - cairo-fixed-private.h \ - cairo-fixed-type-private.h \ - cairo-mutex-list-private.h \ - cairo-types-private.h - -libcairo_la_SOURCES = \ - $(cairo_sources) \ - $(cairo_special_sources) - -cairo_all_source_file = \ - $(cairo_all_sources) \ - $(cairo_special_sources) - -libcairo_la_LDFLAGS = -version-info @VERSION_INFO@ -no-undefined $(export_symbols) -libcairo_la_CFLAGS = -I$(srcdir) $(CAIRO_CFLAGS) -libcairo_la_LIBADD = $(CAIRO_LIBS) $(CAIRO_LDADD) -libcairo_la_DEPENDENCIES = $(cairo_def_dependency) -pkgconfigdir = $(libdir)/pkgconfig -noinst_DATA = cairo.pc $(backend_pkgconfigs) -DISTCLEANFILES = $(backend_pkgconfigs) cairo-features.h \ - cairo-no-features.h check-has-hidden-symbols.i -EXTRA_DIST = cairo-backend.pc.in $(TESTS) check-has-hidden-symbols.c \ - Makefile.win32 -CLEANFILES = cairo.def -TESTS_ENVIRONMENT = srcdir="$(srcdir)" MAKE="$(MAKE)" cairo_all_source_file="$(cairo_all_source_file)" -TESTS = check-def.sh check-plt.sh check-headers.sh check-cairoint.sh check-doc-syntax.sh -SPARSE = sparse -SPLINT = splint -badflag -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .i .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -cairo.pc: $(top_builddir)/config.status $(srcdir)/cairo.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libcairo.la: $(libcairo_la_OBJECTS) $(libcairo_la_DEPENDENCIES) - $(libcairo_la_LINK) $(libcairo_la_OBJECTS) $(libcairo_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-analysis-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-arc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-array.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-atomic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-base85-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-bentley-ottmann.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-cache.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-cff-subset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-clip.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-color.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-debug.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-deflate-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-directfb-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-fixed.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-font-face.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-font-options.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-freelist.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-ft-font.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-glitz-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-gstate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-hash.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-hull.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-image-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-lzw.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-matrix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-meta-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-misc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-mutex.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-os2-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-output-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-paginated-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-path-bounds.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-path-fill.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-path-fixed.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-path-stroke.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-path.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-pattern.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-pdf-operators.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-pdf-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-pen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-png.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-polygon.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-ps-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-quartz-font.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-quartz-image-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-quartz-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-rectangle.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-region.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-scaled-font-subsets.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-scaled-font.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-skiplist.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-slope.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-spline.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-stroke-style.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-surface-fallback.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-svg-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-traps.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-truetype-subset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-type1-fallback.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-type1-subset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-unicode.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-wideint.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-win32-font.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-win32-printing-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-win32-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-win32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-xcb-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-xlib-display.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-xlib-screen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-xlib-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo-xlib-visual.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-cairo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-test-fallback-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-test-meta-surface.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcairo_la-test-paginated-surface.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libcairo_la-cairo.lo: cairo.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo.Tpo -c -o libcairo_la-cairo.lo `test -f 'cairo.c' || echo '$(srcdir)/'`cairo.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo.Tpo $(DEPDIR)/libcairo_la-cairo.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo.c' object='libcairo_la-cairo.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo.lo `test -f 'cairo.c' || echo '$(srcdir)/'`cairo.c - -libcairo_la-cairo-arc.lo: cairo-arc.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-arc.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-arc.Tpo -c -o libcairo_la-cairo-arc.lo `test -f 'cairo-arc.c' || echo '$(srcdir)/'`cairo-arc.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-arc.Tpo $(DEPDIR)/libcairo_la-cairo-arc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-arc.c' object='libcairo_la-cairo-arc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-arc.lo `test -f 'cairo-arc.c' || echo '$(srcdir)/'`cairo-arc.c - -libcairo_la-cairo-array.lo: cairo-array.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-array.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-array.Tpo -c -o libcairo_la-cairo-array.lo `test -f 'cairo-array.c' || echo '$(srcdir)/'`cairo-array.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-array.Tpo $(DEPDIR)/libcairo_la-cairo-array.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-array.c' object='libcairo_la-cairo-array.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-array.lo `test -f 'cairo-array.c' || echo '$(srcdir)/'`cairo-array.c - -libcairo_la-cairo-atomic.lo: cairo-atomic.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-atomic.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-atomic.Tpo -c -o libcairo_la-cairo-atomic.lo `test -f 'cairo-atomic.c' || echo '$(srcdir)/'`cairo-atomic.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-atomic.Tpo $(DEPDIR)/libcairo_la-cairo-atomic.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-atomic.c' object='libcairo_la-cairo-atomic.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-atomic.lo `test -f 'cairo-atomic.c' || echo '$(srcdir)/'`cairo-atomic.c - -libcairo_la-cairo-base85-stream.lo: cairo-base85-stream.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-base85-stream.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-base85-stream.Tpo -c -o libcairo_la-cairo-base85-stream.lo `test -f 'cairo-base85-stream.c' || echo '$(srcdir)/'`cairo-base85-stream.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-base85-stream.Tpo $(DEPDIR)/libcairo_la-cairo-base85-stream.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-base85-stream.c' object='libcairo_la-cairo-base85-stream.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-base85-stream.lo `test -f 'cairo-base85-stream.c' || echo '$(srcdir)/'`cairo-base85-stream.c - -libcairo_la-cairo-bentley-ottmann.lo: cairo-bentley-ottmann.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-bentley-ottmann.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-bentley-ottmann.Tpo -c -o libcairo_la-cairo-bentley-ottmann.lo `test -f 'cairo-bentley-ottmann.c' || echo '$(srcdir)/'`cairo-bentley-ottmann.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-bentley-ottmann.Tpo $(DEPDIR)/libcairo_la-cairo-bentley-ottmann.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-bentley-ottmann.c' object='libcairo_la-cairo-bentley-ottmann.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-bentley-ottmann.lo `test -f 'cairo-bentley-ottmann.c' || echo '$(srcdir)/'`cairo-bentley-ottmann.c - -libcairo_la-cairo-cache.lo: cairo-cache.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-cache.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-cache.Tpo -c -o libcairo_la-cairo-cache.lo `test -f 'cairo-cache.c' || echo '$(srcdir)/'`cairo-cache.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-cache.Tpo $(DEPDIR)/libcairo_la-cairo-cache.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-cache.c' object='libcairo_la-cairo-cache.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-cache.lo `test -f 'cairo-cache.c' || echo '$(srcdir)/'`cairo-cache.c - -libcairo_la-cairo-clip.lo: cairo-clip.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-clip.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-clip.Tpo -c -o libcairo_la-cairo-clip.lo `test -f 'cairo-clip.c' || echo '$(srcdir)/'`cairo-clip.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-clip.Tpo $(DEPDIR)/libcairo_la-cairo-clip.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-clip.c' object='libcairo_la-cairo-clip.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-clip.lo `test -f 'cairo-clip.c' || echo '$(srcdir)/'`cairo-clip.c - -libcairo_la-cairo-color.lo: cairo-color.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-color.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-color.Tpo -c -o libcairo_la-cairo-color.lo `test -f 'cairo-color.c' || echo '$(srcdir)/'`cairo-color.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-color.Tpo $(DEPDIR)/libcairo_la-cairo-color.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-color.c' object='libcairo_la-cairo-color.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-color.lo `test -f 'cairo-color.c' || echo '$(srcdir)/'`cairo-color.c - -libcairo_la-cairo-debug.lo: cairo-debug.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-debug.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-debug.Tpo -c -o libcairo_la-cairo-debug.lo `test -f 'cairo-debug.c' || echo '$(srcdir)/'`cairo-debug.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-debug.Tpo $(DEPDIR)/libcairo_la-cairo-debug.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-debug.c' object='libcairo_la-cairo-debug.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-debug.lo `test -f 'cairo-debug.c' || echo '$(srcdir)/'`cairo-debug.c - -libcairo_la-cairo-fixed.lo: cairo-fixed.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-fixed.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-fixed.Tpo -c -o libcairo_la-cairo-fixed.lo `test -f 'cairo-fixed.c' || echo '$(srcdir)/'`cairo-fixed.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-fixed.Tpo $(DEPDIR)/libcairo_la-cairo-fixed.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-fixed.c' object='libcairo_la-cairo-fixed.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-fixed.lo `test -f 'cairo-fixed.c' || echo '$(srcdir)/'`cairo-fixed.c - -libcairo_la-cairo-font-face.lo: cairo-font-face.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-font-face.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-font-face.Tpo -c -o libcairo_la-cairo-font-face.lo `test -f 'cairo-font-face.c' || echo '$(srcdir)/'`cairo-font-face.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-font-face.Tpo $(DEPDIR)/libcairo_la-cairo-font-face.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-font-face.c' object='libcairo_la-cairo-font-face.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-font-face.lo `test -f 'cairo-font-face.c' || echo '$(srcdir)/'`cairo-font-face.c - -libcairo_la-cairo-font-options.lo: cairo-font-options.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-font-options.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-font-options.Tpo -c -o libcairo_la-cairo-font-options.lo `test -f 'cairo-font-options.c' || echo '$(srcdir)/'`cairo-font-options.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-font-options.Tpo $(DEPDIR)/libcairo_la-cairo-font-options.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-font-options.c' object='libcairo_la-cairo-font-options.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-font-options.lo `test -f 'cairo-font-options.c' || echo '$(srcdir)/'`cairo-font-options.c - -libcairo_la-cairo-freelist.lo: cairo-freelist.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-freelist.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-freelist.Tpo -c -o libcairo_la-cairo-freelist.lo `test -f 'cairo-freelist.c' || echo '$(srcdir)/'`cairo-freelist.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-freelist.Tpo $(DEPDIR)/libcairo_la-cairo-freelist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-freelist.c' object='libcairo_la-cairo-freelist.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-freelist.lo `test -f 'cairo-freelist.c' || echo '$(srcdir)/'`cairo-freelist.c - -libcairo_la-cairo-gstate.lo: cairo-gstate.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-gstate.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-gstate.Tpo -c -o libcairo_la-cairo-gstate.lo `test -f 'cairo-gstate.c' || echo '$(srcdir)/'`cairo-gstate.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-gstate.Tpo $(DEPDIR)/libcairo_la-cairo-gstate.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-gstate.c' object='libcairo_la-cairo-gstate.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-gstate.lo `test -f 'cairo-gstate.c' || echo '$(srcdir)/'`cairo-gstate.c - -libcairo_la-cairo-hash.lo: cairo-hash.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-hash.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-hash.Tpo -c -o libcairo_la-cairo-hash.lo `test -f 'cairo-hash.c' || echo '$(srcdir)/'`cairo-hash.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-hash.Tpo $(DEPDIR)/libcairo_la-cairo-hash.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-hash.c' object='libcairo_la-cairo-hash.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-hash.lo `test -f 'cairo-hash.c' || echo '$(srcdir)/'`cairo-hash.c - -libcairo_la-cairo-hull.lo: cairo-hull.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-hull.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-hull.Tpo -c -o libcairo_la-cairo-hull.lo `test -f 'cairo-hull.c' || echo '$(srcdir)/'`cairo-hull.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-hull.Tpo $(DEPDIR)/libcairo_la-cairo-hull.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-hull.c' object='libcairo_la-cairo-hull.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-hull.lo `test -f 'cairo-hull.c' || echo '$(srcdir)/'`cairo-hull.c - -libcairo_la-cairo-image-surface.lo: cairo-image-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-image-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-image-surface.Tpo -c -o libcairo_la-cairo-image-surface.lo `test -f 'cairo-image-surface.c' || echo '$(srcdir)/'`cairo-image-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-image-surface.Tpo $(DEPDIR)/libcairo_la-cairo-image-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-image-surface.c' object='libcairo_la-cairo-image-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-image-surface.lo `test -f 'cairo-image-surface.c' || echo '$(srcdir)/'`cairo-image-surface.c - -libcairo_la-cairo-lzw.lo: cairo-lzw.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-lzw.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-lzw.Tpo -c -o libcairo_la-cairo-lzw.lo `test -f 'cairo-lzw.c' || echo '$(srcdir)/'`cairo-lzw.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-lzw.Tpo $(DEPDIR)/libcairo_la-cairo-lzw.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-lzw.c' object='libcairo_la-cairo-lzw.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-lzw.lo `test -f 'cairo-lzw.c' || echo '$(srcdir)/'`cairo-lzw.c - -libcairo_la-cairo-misc.lo: cairo-misc.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-misc.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-misc.Tpo -c -o libcairo_la-cairo-misc.lo `test -f 'cairo-misc.c' || echo '$(srcdir)/'`cairo-misc.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-misc.Tpo $(DEPDIR)/libcairo_la-cairo-misc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-misc.c' object='libcairo_la-cairo-misc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-misc.lo `test -f 'cairo-misc.c' || echo '$(srcdir)/'`cairo-misc.c - -libcairo_la-cairo-matrix.lo: cairo-matrix.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-matrix.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-matrix.Tpo -c -o libcairo_la-cairo-matrix.lo `test -f 'cairo-matrix.c' || echo '$(srcdir)/'`cairo-matrix.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-matrix.Tpo $(DEPDIR)/libcairo_la-cairo-matrix.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-matrix.c' object='libcairo_la-cairo-matrix.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-matrix.lo `test -f 'cairo-matrix.c' || echo '$(srcdir)/'`cairo-matrix.c - -libcairo_la-cairo-mutex.lo: cairo-mutex.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-mutex.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-mutex.Tpo -c -o libcairo_la-cairo-mutex.lo `test -f 'cairo-mutex.c' || echo '$(srcdir)/'`cairo-mutex.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-mutex.Tpo $(DEPDIR)/libcairo_la-cairo-mutex.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-mutex.c' object='libcairo_la-cairo-mutex.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-mutex.lo `test -f 'cairo-mutex.c' || echo '$(srcdir)/'`cairo-mutex.c - -libcairo_la-cairo-path.lo: cairo-path.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-path.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-path.Tpo -c -o libcairo_la-cairo-path.lo `test -f 'cairo-path.c' || echo '$(srcdir)/'`cairo-path.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-path.Tpo $(DEPDIR)/libcairo_la-cairo-path.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-path.c' object='libcairo_la-cairo-path.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-path.lo `test -f 'cairo-path.c' || echo '$(srcdir)/'`cairo-path.c - -libcairo_la-cairo-path-bounds.lo: cairo-path-bounds.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-path-bounds.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-path-bounds.Tpo -c -o libcairo_la-cairo-path-bounds.lo `test -f 'cairo-path-bounds.c' || echo '$(srcdir)/'`cairo-path-bounds.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-path-bounds.Tpo $(DEPDIR)/libcairo_la-cairo-path-bounds.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-path-bounds.c' object='libcairo_la-cairo-path-bounds.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-path-bounds.lo `test -f 'cairo-path-bounds.c' || echo '$(srcdir)/'`cairo-path-bounds.c - -libcairo_la-cairo-path-fill.lo: cairo-path-fill.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-path-fill.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-path-fill.Tpo -c -o libcairo_la-cairo-path-fill.lo `test -f 'cairo-path-fill.c' || echo '$(srcdir)/'`cairo-path-fill.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-path-fill.Tpo $(DEPDIR)/libcairo_la-cairo-path-fill.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-path-fill.c' object='libcairo_la-cairo-path-fill.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-path-fill.lo `test -f 'cairo-path-fill.c' || echo '$(srcdir)/'`cairo-path-fill.c - -libcairo_la-cairo-path-fixed.lo: cairo-path-fixed.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-path-fixed.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-path-fixed.Tpo -c -o libcairo_la-cairo-path-fixed.lo `test -f 'cairo-path-fixed.c' || echo '$(srcdir)/'`cairo-path-fixed.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-path-fixed.Tpo $(DEPDIR)/libcairo_la-cairo-path-fixed.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-path-fixed.c' object='libcairo_la-cairo-path-fixed.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-path-fixed.lo `test -f 'cairo-path-fixed.c' || echo '$(srcdir)/'`cairo-path-fixed.c - -libcairo_la-cairo-path-stroke.lo: cairo-path-stroke.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-path-stroke.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-path-stroke.Tpo -c -o libcairo_la-cairo-path-stroke.lo `test -f 'cairo-path-stroke.c' || echo '$(srcdir)/'`cairo-path-stroke.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-path-stroke.Tpo $(DEPDIR)/libcairo_la-cairo-path-stroke.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-path-stroke.c' object='libcairo_la-cairo-path-stroke.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-path-stroke.lo `test -f 'cairo-path-stroke.c' || echo '$(srcdir)/'`cairo-path-stroke.c - -libcairo_la-cairo-pen.lo: cairo-pen.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-pen.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-pen.Tpo -c -o libcairo_la-cairo-pen.lo `test -f 'cairo-pen.c' || echo '$(srcdir)/'`cairo-pen.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-pen.Tpo $(DEPDIR)/libcairo_la-cairo-pen.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-pen.c' object='libcairo_la-cairo-pen.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-pen.lo `test -f 'cairo-pen.c' || echo '$(srcdir)/'`cairo-pen.c - -libcairo_la-cairo-polygon.lo: cairo-polygon.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-polygon.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-polygon.Tpo -c -o libcairo_la-cairo-polygon.lo `test -f 'cairo-polygon.c' || echo '$(srcdir)/'`cairo-polygon.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-polygon.Tpo $(DEPDIR)/libcairo_la-cairo-polygon.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-polygon.c' object='libcairo_la-cairo-polygon.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-polygon.lo `test -f 'cairo-polygon.c' || echo '$(srcdir)/'`cairo-polygon.c - -libcairo_la-cairo-rectangle.lo: cairo-rectangle.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-rectangle.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-rectangle.Tpo -c -o libcairo_la-cairo-rectangle.lo `test -f 'cairo-rectangle.c' || echo '$(srcdir)/'`cairo-rectangle.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-rectangle.Tpo $(DEPDIR)/libcairo_la-cairo-rectangle.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-rectangle.c' object='libcairo_la-cairo-rectangle.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-rectangle.lo `test -f 'cairo-rectangle.c' || echo '$(srcdir)/'`cairo-rectangle.c - -libcairo_la-cairo-region.lo: cairo-region.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-region.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-region.Tpo -c -o libcairo_la-cairo-region.lo `test -f 'cairo-region.c' || echo '$(srcdir)/'`cairo-region.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-region.Tpo $(DEPDIR)/libcairo_la-cairo-region.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-region.c' object='libcairo_la-cairo-region.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-region.lo `test -f 'cairo-region.c' || echo '$(srcdir)/'`cairo-region.c - -libcairo_la-cairo-scaled-font.lo: cairo-scaled-font.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-scaled-font.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-scaled-font.Tpo -c -o libcairo_la-cairo-scaled-font.lo `test -f 'cairo-scaled-font.c' || echo '$(srcdir)/'`cairo-scaled-font.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-scaled-font.Tpo $(DEPDIR)/libcairo_la-cairo-scaled-font.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-scaled-font.c' object='libcairo_la-cairo-scaled-font.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-scaled-font.lo `test -f 'cairo-scaled-font.c' || echo '$(srcdir)/'`cairo-scaled-font.c - -libcairo_la-cairo-skiplist.lo: cairo-skiplist.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-skiplist.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-skiplist.Tpo -c -o libcairo_la-cairo-skiplist.lo `test -f 'cairo-skiplist.c' || echo '$(srcdir)/'`cairo-skiplist.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-skiplist.Tpo $(DEPDIR)/libcairo_la-cairo-skiplist.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-skiplist.c' object='libcairo_la-cairo-skiplist.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-skiplist.lo `test -f 'cairo-skiplist.c' || echo '$(srcdir)/'`cairo-skiplist.c - -libcairo_la-cairo-slope.lo: cairo-slope.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-slope.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-slope.Tpo -c -o libcairo_la-cairo-slope.lo `test -f 'cairo-slope.c' || echo '$(srcdir)/'`cairo-slope.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-slope.Tpo $(DEPDIR)/libcairo_la-cairo-slope.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-slope.c' object='libcairo_la-cairo-slope.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-slope.lo `test -f 'cairo-slope.c' || echo '$(srcdir)/'`cairo-slope.c - -libcairo_la-cairo-spline.lo: cairo-spline.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-spline.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-spline.Tpo -c -o libcairo_la-cairo-spline.lo `test -f 'cairo-spline.c' || echo '$(srcdir)/'`cairo-spline.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-spline.Tpo $(DEPDIR)/libcairo_la-cairo-spline.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-spline.c' object='libcairo_la-cairo-spline.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-spline.lo `test -f 'cairo-spline.c' || echo '$(srcdir)/'`cairo-spline.c - -libcairo_la-cairo-stroke-style.lo: cairo-stroke-style.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-stroke-style.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-stroke-style.Tpo -c -o libcairo_la-cairo-stroke-style.lo `test -f 'cairo-stroke-style.c' || echo '$(srcdir)/'`cairo-stroke-style.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-stroke-style.Tpo $(DEPDIR)/libcairo_la-cairo-stroke-style.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-stroke-style.c' object='libcairo_la-cairo-stroke-style.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-stroke-style.lo `test -f 'cairo-stroke-style.c' || echo '$(srcdir)/'`cairo-stroke-style.c - -libcairo_la-cairo-surface.lo: cairo-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-surface.Tpo -c -o libcairo_la-cairo-surface.lo `test -f 'cairo-surface.c' || echo '$(srcdir)/'`cairo-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-surface.Tpo $(DEPDIR)/libcairo_la-cairo-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-surface.c' object='libcairo_la-cairo-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-surface.lo `test -f 'cairo-surface.c' || echo '$(srcdir)/'`cairo-surface.c - -libcairo_la-cairo-surface-fallback.lo: cairo-surface-fallback.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-surface-fallback.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-surface-fallback.Tpo -c -o libcairo_la-cairo-surface-fallback.lo `test -f 'cairo-surface-fallback.c' || echo '$(srcdir)/'`cairo-surface-fallback.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-surface-fallback.Tpo $(DEPDIR)/libcairo_la-cairo-surface-fallback.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-surface-fallback.c' object='libcairo_la-cairo-surface-fallback.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-surface-fallback.lo `test -f 'cairo-surface-fallback.c' || echo '$(srcdir)/'`cairo-surface-fallback.c - -libcairo_la-cairo-traps.lo: cairo-traps.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-traps.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-traps.Tpo -c -o libcairo_la-cairo-traps.lo `test -f 'cairo-traps.c' || echo '$(srcdir)/'`cairo-traps.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-traps.Tpo $(DEPDIR)/libcairo_la-cairo-traps.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-traps.c' object='libcairo_la-cairo-traps.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-traps.lo `test -f 'cairo-traps.c' || echo '$(srcdir)/'`cairo-traps.c - -libcairo_la-cairo-pattern.lo: cairo-pattern.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-pattern.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-pattern.Tpo -c -o libcairo_la-cairo-pattern.lo `test -f 'cairo-pattern.c' || echo '$(srcdir)/'`cairo-pattern.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-pattern.Tpo $(DEPDIR)/libcairo_la-cairo-pattern.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-pattern.c' object='libcairo_la-cairo-pattern.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-pattern.lo `test -f 'cairo-pattern.c' || echo '$(srcdir)/'`cairo-pattern.c - -libcairo_la-cairo-unicode.lo: cairo-unicode.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-unicode.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-unicode.Tpo -c -o libcairo_la-cairo-unicode.lo `test -f 'cairo-unicode.c' || echo '$(srcdir)/'`cairo-unicode.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-unicode.Tpo $(DEPDIR)/libcairo_la-cairo-unicode.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-unicode.c' object='libcairo_la-cairo-unicode.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-unicode.lo `test -f 'cairo-unicode.c' || echo '$(srcdir)/'`cairo-unicode.c - -libcairo_la-cairo-output-stream.lo: cairo-output-stream.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-output-stream.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-output-stream.Tpo -c -o libcairo_la-cairo-output-stream.lo `test -f 'cairo-output-stream.c' || echo '$(srcdir)/'`cairo-output-stream.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-output-stream.Tpo $(DEPDIR)/libcairo_la-cairo-output-stream.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-output-stream.c' object='libcairo_la-cairo-output-stream.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-output-stream.lo `test -f 'cairo-output-stream.c' || echo '$(srcdir)/'`cairo-output-stream.c - -libcairo_la-cairo-wideint.lo: cairo-wideint.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-wideint.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-wideint.Tpo -c -o libcairo_la-cairo-wideint.lo `test -f 'cairo-wideint.c' || echo '$(srcdir)/'`cairo-wideint.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-wideint.Tpo $(DEPDIR)/libcairo_la-cairo-wideint.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-wideint.c' object='libcairo_la-cairo-wideint.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-wideint.lo `test -f 'cairo-wideint.c' || echo '$(srcdir)/'`cairo-wideint.c - -libcairo_la-cairo-meta-surface.lo: cairo-meta-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-meta-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-meta-surface.Tpo -c -o libcairo_la-cairo-meta-surface.lo `test -f 'cairo-meta-surface.c' || echo '$(srcdir)/'`cairo-meta-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-meta-surface.Tpo $(DEPDIR)/libcairo_la-cairo-meta-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-meta-surface.c' object='libcairo_la-cairo-meta-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-meta-surface.lo `test -f 'cairo-meta-surface.c' || echo '$(srcdir)/'`cairo-meta-surface.c - -libcairo_la-cairo-paginated-surface.lo: cairo-paginated-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-paginated-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-paginated-surface.Tpo -c -o libcairo_la-cairo-paginated-surface.lo `test -f 'cairo-paginated-surface.c' || echo '$(srcdir)/'`cairo-paginated-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-paginated-surface.Tpo $(DEPDIR)/libcairo_la-cairo-paginated-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-paginated-surface.c' object='libcairo_la-cairo-paginated-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-paginated-surface.lo `test -f 'cairo-paginated-surface.c' || echo '$(srcdir)/'`cairo-paginated-surface.c - -libcairo_la-cairo-analysis-surface.lo: cairo-analysis-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-analysis-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-analysis-surface.Tpo -c -o libcairo_la-cairo-analysis-surface.lo `test -f 'cairo-analysis-surface.c' || echo '$(srcdir)/'`cairo-analysis-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-analysis-surface.Tpo $(DEPDIR)/libcairo_la-cairo-analysis-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-analysis-surface.c' object='libcairo_la-cairo-analysis-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-analysis-surface.lo `test -f 'cairo-analysis-surface.c' || echo '$(srcdir)/'`cairo-analysis-surface.c - -libcairo_la-cairo-ps-surface.lo: cairo-ps-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-ps-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-ps-surface.Tpo -c -o libcairo_la-cairo-ps-surface.lo `test -f 'cairo-ps-surface.c' || echo '$(srcdir)/'`cairo-ps-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-ps-surface.Tpo $(DEPDIR)/libcairo_la-cairo-ps-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-ps-surface.c' object='libcairo_la-cairo-ps-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-ps-surface.lo `test -f 'cairo-ps-surface.c' || echo '$(srcdir)/'`cairo-ps-surface.c - -libcairo_la-cairo-pdf-surface.lo: cairo-pdf-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-pdf-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-pdf-surface.Tpo -c -o libcairo_la-cairo-pdf-surface.lo `test -f 'cairo-pdf-surface.c' || echo '$(srcdir)/'`cairo-pdf-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-pdf-surface.Tpo $(DEPDIR)/libcairo_la-cairo-pdf-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-pdf-surface.c' object='libcairo_la-cairo-pdf-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-pdf-surface.lo `test -f 'cairo-pdf-surface.c' || echo '$(srcdir)/'`cairo-pdf-surface.c - -libcairo_la-cairo-pdf-operators.lo: cairo-pdf-operators.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-pdf-operators.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-pdf-operators.Tpo -c -o libcairo_la-cairo-pdf-operators.lo `test -f 'cairo-pdf-operators.c' || echo '$(srcdir)/'`cairo-pdf-operators.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-pdf-operators.Tpo $(DEPDIR)/libcairo_la-cairo-pdf-operators.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-pdf-operators.c' object='libcairo_la-cairo-pdf-operators.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-pdf-operators.lo `test -f 'cairo-pdf-operators.c' || echo '$(srcdir)/'`cairo-pdf-operators.c - -libcairo_la-cairo-deflate-stream.lo: cairo-deflate-stream.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-deflate-stream.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-deflate-stream.Tpo -c -o libcairo_la-cairo-deflate-stream.lo `test -f 'cairo-deflate-stream.c' || echo '$(srcdir)/'`cairo-deflate-stream.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-deflate-stream.Tpo $(DEPDIR)/libcairo_la-cairo-deflate-stream.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-deflate-stream.c' object='libcairo_la-cairo-deflate-stream.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-deflate-stream.lo `test -f 'cairo-deflate-stream.c' || echo '$(srcdir)/'`cairo-deflate-stream.c - -libcairo_la-cairo-png.lo: cairo-png.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-png.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-png.Tpo -c -o libcairo_la-cairo-png.lo `test -f 'cairo-png.c' || echo '$(srcdir)/'`cairo-png.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-png.Tpo $(DEPDIR)/libcairo_la-cairo-png.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-png.c' object='libcairo_la-cairo-png.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-png.lo `test -f 'cairo-png.c' || echo '$(srcdir)/'`cairo-png.c - -libcairo_la-cairo-svg-surface.lo: cairo-svg-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-svg-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-svg-surface.Tpo -c -o libcairo_la-cairo-svg-surface.lo `test -f 'cairo-svg-surface.c' || echo '$(srcdir)/'`cairo-svg-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-svg-surface.Tpo $(DEPDIR)/libcairo_la-cairo-svg-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-svg-surface.c' object='libcairo_la-cairo-svg-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-svg-surface.lo `test -f 'cairo-svg-surface.c' || echo '$(srcdir)/'`cairo-svg-surface.c - -libcairo_la-cairo-cff-subset.lo: cairo-cff-subset.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-cff-subset.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-cff-subset.Tpo -c -o libcairo_la-cairo-cff-subset.lo `test -f 'cairo-cff-subset.c' || echo '$(srcdir)/'`cairo-cff-subset.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-cff-subset.Tpo $(DEPDIR)/libcairo_la-cairo-cff-subset.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-cff-subset.c' object='libcairo_la-cairo-cff-subset.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-cff-subset.lo `test -f 'cairo-cff-subset.c' || echo '$(srcdir)/'`cairo-cff-subset.c - -libcairo_la-cairo-truetype-subset.lo: cairo-truetype-subset.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-truetype-subset.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-truetype-subset.Tpo -c -o libcairo_la-cairo-truetype-subset.lo `test -f 'cairo-truetype-subset.c' || echo '$(srcdir)/'`cairo-truetype-subset.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-truetype-subset.Tpo $(DEPDIR)/libcairo_la-cairo-truetype-subset.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-truetype-subset.c' object='libcairo_la-cairo-truetype-subset.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-truetype-subset.lo `test -f 'cairo-truetype-subset.c' || echo '$(srcdir)/'`cairo-truetype-subset.c - -libcairo_la-cairo-type1-fallback.lo: cairo-type1-fallback.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-type1-fallback.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-type1-fallback.Tpo -c -o libcairo_la-cairo-type1-fallback.lo `test -f 'cairo-type1-fallback.c' || echo '$(srcdir)/'`cairo-type1-fallback.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-type1-fallback.Tpo $(DEPDIR)/libcairo_la-cairo-type1-fallback.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-type1-fallback.c' object='libcairo_la-cairo-type1-fallback.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-type1-fallback.lo `test -f 'cairo-type1-fallback.c' || echo '$(srcdir)/'`cairo-type1-fallback.c - -libcairo_la-cairo-scaled-font-subsets.lo: cairo-scaled-font-subsets.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-scaled-font-subsets.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-scaled-font-subsets.Tpo -c -o libcairo_la-cairo-scaled-font-subsets.lo `test -f 'cairo-scaled-font-subsets.c' || echo '$(srcdir)/'`cairo-scaled-font-subsets.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-scaled-font-subsets.Tpo $(DEPDIR)/libcairo_la-cairo-scaled-font-subsets.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-scaled-font-subsets.c' object='libcairo_la-cairo-scaled-font-subsets.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-scaled-font-subsets.lo `test -f 'cairo-scaled-font-subsets.c' || echo '$(srcdir)/'`cairo-scaled-font-subsets.c - -libcairo_la-cairo-type1-subset.lo: cairo-type1-subset.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-type1-subset.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-type1-subset.Tpo -c -o libcairo_la-cairo-type1-subset.lo `test -f 'cairo-type1-subset.c' || echo '$(srcdir)/'`cairo-type1-subset.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-type1-subset.Tpo $(DEPDIR)/libcairo_la-cairo-type1-subset.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-type1-subset.c' object='libcairo_la-cairo-type1-subset.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-type1-subset.lo `test -f 'cairo-type1-subset.c' || echo '$(srcdir)/'`cairo-type1-subset.c - -libcairo_la-test-fallback-surface.lo: test-fallback-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-test-fallback-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-test-fallback-surface.Tpo -c -o libcairo_la-test-fallback-surface.lo `test -f 'test-fallback-surface.c' || echo '$(srcdir)/'`test-fallback-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-test-fallback-surface.Tpo $(DEPDIR)/libcairo_la-test-fallback-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-fallback-surface.c' object='libcairo_la-test-fallback-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-test-fallback-surface.lo `test -f 'test-fallback-surface.c' || echo '$(srcdir)/'`test-fallback-surface.c - -libcairo_la-test-meta-surface.lo: test-meta-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-test-meta-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-test-meta-surface.Tpo -c -o libcairo_la-test-meta-surface.lo `test -f 'test-meta-surface.c' || echo '$(srcdir)/'`test-meta-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-test-meta-surface.Tpo $(DEPDIR)/libcairo_la-test-meta-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-meta-surface.c' object='libcairo_la-test-meta-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-test-meta-surface.lo `test -f 'test-meta-surface.c' || echo '$(srcdir)/'`test-meta-surface.c - -libcairo_la-test-paginated-surface.lo: test-paginated-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-test-paginated-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-test-paginated-surface.Tpo -c -o libcairo_la-test-paginated-surface.lo `test -f 'test-paginated-surface.c' || echo '$(srcdir)/'`test-paginated-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-test-paginated-surface.Tpo $(DEPDIR)/libcairo_la-test-paginated-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-paginated-surface.c' object='libcairo_la-test-paginated-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-test-paginated-surface.lo `test -f 'test-paginated-surface.c' || echo '$(srcdir)/'`test-paginated-surface.c - -libcairo_la-cairo-xlib-surface.lo: cairo-xlib-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-xlib-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-xlib-surface.Tpo -c -o libcairo_la-cairo-xlib-surface.lo `test -f 'cairo-xlib-surface.c' || echo '$(srcdir)/'`cairo-xlib-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-xlib-surface.Tpo $(DEPDIR)/libcairo_la-cairo-xlib-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-xlib-surface.c' object='libcairo_la-cairo-xlib-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-xlib-surface.lo `test -f 'cairo-xlib-surface.c' || echo '$(srcdir)/'`cairo-xlib-surface.c - -libcairo_la-cairo-xlib-display.lo: cairo-xlib-display.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-xlib-display.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-xlib-display.Tpo -c -o libcairo_la-cairo-xlib-display.lo `test -f 'cairo-xlib-display.c' || echo '$(srcdir)/'`cairo-xlib-display.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-xlib-display.Tpo $(DEPDIR)/libcairo_la-cairo-xlib-display.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-xlib-display.c' object='libcairo_la-cairo-xlib-display.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-xlib-display.lo `test -f 'cairo-xlib-display.c' || echo '$(srcdir)/'`cairo-xlib-display.c - -libcairo_la-cairo-xlib-screen.lo: cairo-xlib-screen.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-xlib-screen.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-xlib-screen.Tpo -c -o libcairo_la-cairo-xlib-screen.lo `test -f 'cairo-xlib-screen.c' || echo '$(srcdir)/'`cairo-xlib-screen.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-xlib-screen.Tpo $(DEPDIR)/libcairo_la-cairo-xlib-screen.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-xlib-screen.c' object='libcairo_la-cairo-xlib-screen.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-xlib-screen.lo `test -f 'cairo-xlib-screen.c' || echo '$(srcdir)/'`cairo-xlib-screen.c - -libcairo_la-cairo-xlib-visual.lo: cairo-xlib-visual.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-xlib-visual.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-xlib-visual.Tpo -c -o libcairo_la-cairo-xlib-visual.lo `test -f 'cairo-xlib-visual.c' || echo '$(srcdir)/'`cairo-xlib-visual.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-xlib-visual.Tpo $(DEPDIR)/libcairo_la-cairo-xlib-visual.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-xlib-visual.c' object='libcairo_la-cairo-xlib-visual.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-xlib-visual.lo `test -f 'cairo-xlib-visual.c' || echo '$(srcdir)/'`cairo-xlib-visual.c - -libcairo_la-cairo-xcb-surface.lo: cairo-xcb-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-xcb-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-xcb-surface.Tpo -c -o libcairo_la-cairo-xcb-surface.lo `test -f 'cairo-xcb-surface.c' || echo '$(srcdir)/'`cairo-xcb-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-xcb-surface.Tpo $(DEPDIR)/libcairo_la-cairo-xcb-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-xcb-surface.c' object='libcairo_la-cairo-xcb-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-xcb-surface.lo `test -f 'cairo-xcb-surface.c' || echo '$(srcdir)/'`cairo-xcb-surface.c - -libcairo_la-cairo-quartz-surface.lo: cairo-quartz-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-quartz-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-quartz-surface.Tpo -c -o libcairo_la-cairo-quartz-surface.lo `test -f 'cairo-quartz-surface.c' || echo '$(srcdir)/'`cairo-quartz-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-quartz-surface.Tpo $(DEPDIR)/libcairo_la-cairo-quartz-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-quartz-surface.c' object='libcairo_la-cairo-quartz-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-quartz-surface.lo `test -f 'cairo-quartz-surface.c' || echo '$(srcdir)/'`cairo-quartz-surface.c - -libcairo_la-cairo-quartz-image-surface.lo: cairo-quartz-image-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-quartz-image-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-quartz-image-surface.Tpo -c -o libcairo_la-cairo-quartz-image-surface.lo `test -f 'cairo-quartz-image-surface.c' || echo '$(srcdir)/'`cairo-quartz-image-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-quartz-image-surface.Tpo $(DEPDIR)/libcairo_la-cairo-quartz-image-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-quartz-image-surface.c' object='libcairo_la-cairo-quartz-image-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-quartz-image-surface.lo `test -f 'cairo-quartz-image-surface.c' || echo '$(srcdir)/'`cairo-quartz-image-surface.c - -libcairo_la-cairo-quartz-font.lo: cairo-quartz-font.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-quartz-font.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-quartz-font.Tpo -c -o libcairo_la-cairo-quartz-font.lo `test -f 'cairo-quartz-font.c' || echo '$(srcdir)/'`cairo-quartz-font.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-quartz-font.Tpo $(DEPDIR)/libcairo_la-cairo-quartz-font.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-quartz-font.c' object='libcairo_la-cairo-quartz-font.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-quartz-font.lo `test -f 'cairo-quartz-font.c' || echo '$(srcdir)/'`cairo-quartz-font.c - -libcairo_la-cairo-win32.lo: cairo-win32.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-win32.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-win32.Tpo -c -o libcairo_la-cairo-win32.lo `test -f 'cairo-win32.c' || echo '$(srcdir)/'`cairo-win32.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-win32.Tpo $(DEPDIR)/libcairo_la-cairo-win32.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-win32.c' object='libcairo_la-cairo-win32.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-win32.lo `test -f 'cairo-win32.c' || echo '$(srcdir)/'`cairo-win32.c - -libcairo_la-cairo-win32-surface.lo: cairo-win32-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-win32-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-win32-surface.Tpo -c -o libcairo_la-cairo-win32-surface.lo `test -f 'cairo-win32-surface.c' || echo '$(srcdir)/'`cairo-win32-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-win32-surface.Tpo $(DEPDIR)/libcairo_la-cairo-win32-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-win32-surface.c' object='libcairo_la-cairo-win32-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-win32-surface.lo `test -f 'cairo-win32-surface.c' || echo '$(srcdir)/'`cairo-win32-surface.c - -libcairo_la-cairo-win32-printing-surface.lo: cairo-win32-printing-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-win32-printing-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-win32-printing-surface.Tpo -c -o libcairo_la-cairo-win32-printing-surface.lo `test -f 'cairo-win32-printing-surface.c' || echo '$(srcdir)/'`cairo-win32-printing-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-win32-printing-surface.Tpo $(DEPDIR)/libcairo_la-cairo-win32-printing-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-win32-printing-surface.c' object='libcairo_la-cairo-win32-printing-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-win32-printing-surface.lo `test -f 'cairo-win32-printing-surface.c' || echo '$(srcdir)/'`cairo-win32-printing-surface.c - -libcairo_la-cairo-win32-font.lo: cairo-win32-font.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-win32-font.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-win32-font.Tpo -c -o libcairo_la-cairo-win32-font.lo `test -f 'cairo-win32-font.c' || echo '$(srcdir)/'`cairo-win32-font.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-win32-font.Tpo $(DEPDIR)/libcairo_la-cairo-win32-font.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-win32-font.c' object='libcairo_la-cairo-win32-font.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-win32-font.lo `test -f 'cairo-win32-font.c' || echo '$(srcdir)/'`cairo-win32-font.c - -libcairo_la-cairo-os2-surface.lo: cairo-os2-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-os2-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-os2-surface.Tpo -c -o libcairo_la-cairo-os2-surface.lo `test -f 'cairo-os2-surface.c' || echo '$(srcdir)/'`cairo-os2-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-os2-surface.Tpo $(DEPDIR)/libcairo_la-cairo-os2-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-os2-surface.c' object='libcairo_la-cairo-os2-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-os2-surface.lo `test -f 'cairo-os2-surface.c' || echo '$(srcdir)/'`cairo-os2-surface.c - -libcairo_la-cairo-glitz-surface.lo: cairo-glitz-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-glitz-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-glitz-surface.Tpo -c -o libcairo_la-cairo-glitz-surface.lo `test -f 'cairo-glitz-surface.c' || echo '$(srcdir)/'`cairo-glitz-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-glitz-surface.Tpo $(DEPDIR)/libcairo_la-cairo-glitz-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-glitz-surface.c' object='libcairo_la-cairo-glitz-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-glitz-surface.lo `test -f 'cairo-glitz-surface.c' || echo '$(srcdir)/'`cairo-glitz-surface.c - -libcairo_la-cairo-directfb-surface.lo: cairo-directfb-surface.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-directfb-surface.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-directfb-surface.Tpo -c -o libcairo_la-cairo-directfb-surface.lo `test -f 'cairo-directfb-surface.c' || echo '$(srcdir)/'`cairo-directfb-surface.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-directfb-surface.Tpo $(DEPDIR)/libcairo_la-cairo-directfb-surface.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-directfb-surface.c' object='libcairo_la-cairo-directfb-surface.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-directfb-surface.lo `test -f 'cairo-directfb-surface.c' || echo '$(srcdir)/'`cairo-directfb-surface.c - -libcairo_la-cairo-ft-font.lo: cairo-ft-font.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -MT libcairo_la-cairo-ft-font.lo -MD -MP -MF $(DEPDIR)/libcairo_la-cairo-ft-font.Tpo -c -o libcairo_la-cairo-ft-font.lo `test -f 'cairo-ft-font.c' || echo '$(srcdir)/'`cairo-ft-font.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libcairo_la-cairo-ft-font.Tpo $(DEPDIR)/libcairo_la-cairo-ft-font.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cairo-ft-font.c' object='libcairo_la-cairo-ft-font.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcairo_la_CFLAGS) $(CFLAGS) -c -o libcairo_la-cairo-ft-font.lo `test -f 'cairo-ft-font.c' || echo '$(srcdir)/'`cairo-ft-font.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ - else \ - echo "$$red$$dashes"; \ - fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-data-local - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-data-local install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - -$(backend_pkgconfigs): $(top_srcdir)/configure - cd $(top_builddir) && ./config.status --recheck - -$(top_builddir)/config.h: $(top_srcdir)/config.h.in - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) config.h -cairo-features.h cairo-no-features.h: - cd $(top_builddir) && ./config.status src/$@ -cairo.def: $(cairo_headers) cairo-features.h - @echo Generating $@ - @(echo EXPORTS; \ - (cd $(srcdir); cat $(cairo_headers) || echo 'cairo_ERROR ()' ) | \ - grep -v -E '^# *include' | \ - ( gcc -include cairo-features.h -E - || echo 'cairo_ERROR ()' ) | \ - grep -E '^cairo_.* \(' | \ - sed -e 's/[ ].*//' | \ - sort; \ - echo LIBRARY libcairo-$(LT_CURRENT_MINUS_AGE).dll; \ - ) >$@ - @ ! grep -q cairo_ERROR $@ || ($(RM) $@; false) - -install-data-local: - @if test -f "$(DESTDIR)$(includedir)/cairo.h" || test -f "$(DESTDIR)$(includedir)/cairo-features.h" ; then \ - echo "****************************************************************" ; \ - echo "*** Error: Old headers found. You should remove the following" ; \ - echo "*** files and then type 'make install' again." ; \ - ls $(includedir)/cairo*.h ; \ - echo "****************************************************************" ; \ - false ; \ - fi - -# The pre-processed result is used by check-{def,plt}.sh to determine whether -# cairo has been compiled with symbol hiding. -.c.i: $(noinst_HEADERS) $(nodist_noinst_HEADERS) cairoint.h $(top_builddir)/config.h - $(CPP) -DHAVE_CONFIG_H -I$(top_builddir) -I. $(libcairo_la_CFLAGS) $< -o $@ -sparse: - @status=true; for f in $(cairo_sources); do \ - echo sparse $$f; \ - $(SPARSE) -I$(top_builddir) $(libcairo_la_CFLAGS) -DHAVE_CONFIG_H $$f || status=false; \ - done; $$status -splint: - @status=true; for f in $(cairo_sources); do \ - test "$$f" = "`echo "$$f" | sed 's/[.]h$$//'`" || continue; \ - echo sparse $$f; \ - $(SPLINT) -I$(top_builddir) $(libcairo_la_CFLAGS) -DHAVE_CONFIG_H $$f || status=false; \ - done; $$status - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/cairo/src/Makefile.win32 libgdiplus-4.0-4.2.3+precise1/cairo/src/Makefile.win32 --- libgdiplus-4.0-2.10.9/cairo/src/Makefile.win32 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/Makefile.win32 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ - -SUBMAKEFILE = 1 - -include ../Makefile.win32 - -DEFFILE = cairo.def -srcdir = `pwd` - -SOURCES = \ - cairo-arc.c \ - cairo-array.c \ - cairo-atomic.c \ - cairo-bentley-ottmann.c \ - cairo-cache.c \ - cairo-clip.c \ - cairo-color.c \ - cairo-debug.c \ - cairo-deflate-stream.c \ - cairo-fixed.c \ - cairo-font-options.c \ - cairo-font-face.c \ - cairo-freelist.c \ - cairo-gstate.c \ - cairo-hash.c \ - cairo-hull.c \ - cairo-image-surface.c \ - cairo-lzw.c \ - cairo-matrix.c \ - cairo-meta-surface.c \ - cairo-misc.c \ - cairo-mutex.c \ - cairo-output-stream.c \ - cairo-path-bounds.c \ - cairo-path-fixed.c \ - cairo-path-fill.c \ - cairo-path-stroke.c \ - cairo-path.c \ - cairo-pattern.c \ - cairo-pdf-surface.c \ - cairo-pdf-operators.c \ - cairo-pen.c \ - cairo-polygon.c \ - cairo-png.c \ - cairo-rectangle.c \ - cairo-region.c \ - cairo-scaled-font.c \ - cairo-skiplist.c \ - cairo-slope.c \ - cairo-spline.c \ - cairo-stroke-style.c \ - cairo-surface-fallback.c \ - cairo-surface.c \ - cairo-traps.c \ - cairo-cff-subset.c \ - cairo-truetype-subset.c \ - cairo-type1-fallback.c \ - cairo-unicode.c \ - cairo-wideint.c \ - cairo-win32-font.c \ - cairo.c \ - cairo-svg-surface.c \ - cairo-ps-surface.c \ - cairo-pdf-surface.c \ - cairo-scaled-font-subsets.c \ - cairo-paginated-surface.c \ - cairo-analysis-surface.c \ - cairo-base85-stream.c \ - cairo-win32-printing-surface.c \ - cairo-win32.c \ - $(NULL) - -STATIC_SOURCES = cairo-win32-surface.c - -cairo_headers = \ - cairo.h \ - cairo-pdf.h \ - cairo-ps.h \ - cairo-svg.h \ - cairo-win32.h \ - cairo-pdf-test.h \ - cairo-ps-test.h \ - cairo-scaled-font-test.h \ - cairo-svg-test.h \ - $(NULL) - -OBJECTS = $(patsubst %.c, $(CFG)/%.obj, $(SOURCES)) -SHARED_OBJECTS = $(patsubst %.c, $(CFG)/%.obj, $(STATIC_SOURCES)) -STATIC_OBJECTS = $(patsubst %.c, $(CFG)/%-static.obj, $(STATIC_SOURCES)) - -all: inform $(CFG)/cairo.dll $(CFG)/cairo-static.lib -static: inform $(CFG)/cairo-static.lib -dynamic: inform $(CFG)/cairo.dll - -$(DEFFILE): - (echo EXPORTS; \ - (cd $(srcdir); cat $(cairo_headers) || echo 'cairo_ERROR ()' ) | \ - grep -v -E '^# *include' | \ - ( gcc -include cairo-features.h -E - || echo 'cairo_ERROR ()' ) | \ - grep -E '^_?cairo_.* \(' | \ - sed -e 's/[ ].*//' | \ - sort; \ - echo LIBRARY cairo.dll; \ - ) >$@ - @ ! grep -q cairo_ERROR $@ || ($(RM) $@; false) - -$(CFG)/cairo.dll: $(OBJECTS) $(SHARED_OBJECTS) $(DEFFILE) - $(CC) -MD -LD -Fe$@ $(PIXMAN_LIBS) $(OBJECTS) $(SHARED_OBJECTS) -link -DEF:$(DEFFILE) user32.lib gdi32.lib libpng.lib zdll.lib msimg32.lib - -$(CFG)/cairo-static.lib: $(OBJECTS) $(STATIC_OBJECTS) - lib -NOLOGO -OUT:$@ $(PIXMAN_LIBS) $(OBJECTS) $(STATIC_OBJECTS) - -clean: - @rm -f $(CFG)/*.obj $(CFG)/*.dll $(CFG)/*.lib $(CFG)/*.pdb $(CFG)/*.ilk || exit 0 - -inform: -ifneq ($(CFG),release) -ifneq ($(CFG),debug) - @echo "Invalid configuration "$(CFG)" specified." - @echo -n "You must specify a configuration when " - @echo "running make, e.g. make CFG=debug" - @echo - @echo -n "Possible choices for configuration are " - @echo "'release' and 'debug'" - @exit 1 -endif -endif diff -Nru libgdiplus-4.0-2.10.9/cairo/src/test-fallback-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/test-fallback-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/test-fallback-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/test-fallback-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,230 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -/* This isn't a "real" surface, but just something to be used by the - * test suite to test a mythical backend that uses nothing but - * fallbacks. - * - * The defining feature of this backend is that it has as many %NULL - * backend function entries as possible. The ones that aren't %NULL are - * simply those that must be implemented to have working fallbacks. - * (Except for create_similar---fallbacks would work fine without - * that---I implemented it here in order to create as many surfaces as - * possible of type test_fallback_surface_t during the test suite - * run). - * - * It's possible that this code might serve as a good starting point - * for someone working on bringing up a new backend, starting with the - * minimal all-fallbacks approach and working up gradually from - * there. - */ - -#include "cairoint.h" - -#include "test-fallback-surface.h" - -typedef struct _test_fallback_surface { - cairo_surface_t base; - - /* This is a cairo_image_surface to hold the actual contents. */ - cairo_surface_t *backing; -} test_fallback_surface_t; - -static const cairo_surface_backend_t test_fallback_surface_backend; - -slim_hidden_proto (_cairo_test_fallback_surface_create); - -cairo_surface_t * -_cairo_test_fallback_surface_create (cairo_content_t content, - int width, - int height) -{ - test_fallback_surface_t *surface; - cairo_surface_t *backing; - - backing = _cairo_image_surface_create_with_content (content, width, height); - if (cairo_surface_status (backing)) - return backing; - - surface = malloc (sizeof (test_fallback_surface_t)); - if (surface == NULL) { - cairo_surface_destroy (backing); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - _cairo_surface_init (&surface->base, &test_fallback_surface_backend, - content); - - surface->backing = backing; - - return &surface->base; -} -slim_hidden_def (_cairo_test_fallback_surface_create); - -static cairo_surface_t * -_test_fallback_surface_create_similar (void *abstract_surface, - cairo_content_t content, - int width, - int height) -{ - assert (CAIRO_CONTENT_VALID (content)); - - return _cairo_test_fallback_surface_create (content, - width, height); -} - -static cairo_status_t -_test_fallback_surface_finish (void *abstract_surface) -{ - test_fallback_surface_t *surface = abstract_surface; - - cairo_surface_destroy (surface->backing); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_test_fallback_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - test_fallback_surface_t *surface = abstract_surface; - - return _cairo_surface_acquire_source_image (surface->backing, - image_out, image_extra); -} - -static void -_test_fallback_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - test_fallback_surface_t *surface = abstract_surface; - - _cairo_surface_release_source_image (surface->backing, - image, image_extra); -} - -static cairo_status_t -_test_fallback_surface_acquire_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t **image_out, - cairo_rectangle_int_t *image_rect_out, - void **image_extra) -{ - test_fallback_surface_t *surface = abstract_surface; - - return _cairo_surface_acquire_dest_image (surface->backing, - interest_rect, - image_out, - image_rect_out, - image_extra); -} - -static void -_test_fallback_surface_release_dest_image (void *abstract_surface, - cairo_rectangle_int_t *interest_rect, - cairo_image_surface_t *image, - cairo_rectangle_int_t *image_rect, - void *image_extra) -{ - test_fallback_surface_t *surface = abstract_surface; - - _cairo_surface_release_dest_image (surface->backing, - interest_rect, - image, - image_rect, - image_extra); -} - -static cairo_status_t -_test_fallback_surface_clone_similar (void *abstract_surface, - cairo_surface_t *src, - int src_x, - int src_y, - int width, - int height, - cairo_surface_t **clone_out) -{ - test_fallback_surface_t *surface = abstract_surface; - - if (src->backend == surface->base.backend) { - *clone_out = cairo_surface_reference (src); - - return CAIRO_STATUS_SUCCESS; - } - - return CAIRO_INT_STATUS_UNSUPPORTED; -} - -static cairo_int_status_t -_test_fallback_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - test_fallback_surface_t *surface = abstract_surface; - - return _cairo_surface_get_extents (surface->backing, rectangle); -} - -static const cairo_surface_backend_t test_fallback_surface_backend = { - CAIRO_INTERNAL_SURFACE_TYPE_TEST_FALLBACK, - _test_fallback_surface_create_similar, - _test_fallback_surface_finish, - _test_fallback_surface_acquire_source_image, - _test_fallback_surface_release_source_image, - _test_fallback_surface_acquire_dest_image, - _test_fallback_surface_release_dest_image, - _test_fallback_surface_clone_similar, - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - NULL, /* set_clip_region */ - NULL, /* intersect_clip_path */ - _test_fallback_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - NULL, /* paint */ - NULL, /* mask */ - NULL, /* stroke */ - NULL, /* fill */ - NULL, /* show_glyphs */ - NULL /* snapshot */ -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/test-fallback-surface.h libgdiplus-4.0-4.2.3+precise1/cairo/src/test-fallback-surface.h --- libgdiplus-4.0-2.10.9/cairo/src/test-fallback-surface.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/test-fallback-surface.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -#ifndef TEST_FALLBACK_SURFACE_H -#define TEST_FALLBACK_SURFACE_H - -#include "cairo.h" - -CAIRO_BEGIN_DECLS - -cairo_surface_t * -_cairo_test_fallback_surface_create (cairo_content_t content, - int width, - int height); - -CAIRO_END_DECLS - -#endif /* TEST_FALLBACK_SURFACE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/test-meta-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/test-meta-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/test-meta-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/test-meta-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,362 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -/* This isn't a "real" surface, but just something to be used by the - * test suite to help exercise the meta-surface paths in cairo. - * - * The defining feature of this backend is that it uses a meta surface - * to record all operations, and then replays everything to an image - * surface. - * - * It's possible that this code might serve as a good starting point - * for someone working on bringing up a new meta-surface-based - * backend. - */ - -#include "cairoint.h" - -#include "test-meta-surface.h" - -#include "cairo-meta-surface-private.h" - -typedef struct _test_meta_surface { - cairo_surface_t base; - - /* This is a cairo_meta_surface to record all operations. */ - cairo_surface_t *meta; - - /* And this is a cairo_image_surface to hold the final result. */ - cairo_surface_t *image; - - cairo_bool_t image_reflects_meta; -} test_meta_surface_t; - -static const cairo_surface_backend_t test_meta_surface_backend; - -static cairo_int_status_t -_test_meta_surface_show_page (void *abstract_surface); - -cairo_surface_t * -_cairo_test_meta_surface_create (cairo_content_t content, - int width, - int height) -{ - test_meta_surface_t *surface; - cairo_status_t status; - - surface = malloc (sizeof (test_meta_surface_t)); - if (surface == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } - - _cairo_surface_init (&surface->base, &test_meta_surface_backend, - content); - - surface->meta = _cairo_meta_surface_create (content, width, height); - status = cairo_surface_status (surface->meta); - if (status) - goto FAIL_CLEANUP_SURFACE; - - surface->image = _cairo_image_surface_create_with_content (content, - width, height); - status = cairo_surface_status (surface->image); - if (status) - goto FAIL_CLEANUP_META; - - surface->image_reflects_meta = FALSE; - - return &surface->base; - - FAIL_CLEANUP_META: - cairo_surface_destroy (surface->meta); - FAIL_CLEANUP_SURFACE: - free (surface); - FAIL: - return _cairo_surface_create_in_error (status); -} - -static cairo_status_t -_test_meta_surface_finish (void *abstract_surface) -{ - test_meta_surface_t *surface = abstract_surface; - - cairo_surface_destroy (surface->meta); - cairo_surface_destroy (surface->image); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_status_t -_test_meta_surface_acquire_source_image (void *abstract_surface, - cairo_image_surface_t **image_out, - void **image_extra) -{ - test_meta_surface_t *surface = abstract_surface; - cairo_status_t status; - - if (! surface->image_reflects_meta) { - status = _test_meta_surface_show_page (abstract_surface); - if (status) - return status; - } - - return _cairo_surface_acquire_source_image (surface->image, - image_out, image_extra); -} - -static void -_test_meta_surface_release_source_image (void *abstract_surface, - cairo_image_surface_t *image, - void *image_extra) -{ - test_meta_surface_t *surface = abstract_surface; - - _cairo_surface_release_source_image (surface->image, - image, image_extra); -} - -static cairo_int_status_t -_test_meta_surface_show_page (void *abstract_surface) -{ - test_meta_surface_t *surface = abstract_surface; - cairo_status_t status; - - if (surface->image_reflects_meta) - return CAIRO_STATUS_SUCCESS; - - status = _cairo_meta_surface_replay (surface->meta, surface->image); - if (status) - return status; - - surface->image_reflects_meta = TRUE; - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_test_meta_surface_intersect_clip_path (void *abstract_surface, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - test_meta_surface_t *surface = abstract_surface; - - return _cairo_surface_intersect_clip_path (surface->meta, - path, fill_rule, - tolerance, antialias); -} - -static cairo_int_status_t -_test_meta_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - test_meta_surface_t *surface = abstract_surface; - - surface->image_reflects_meta = FALSE; - - return _cairo_surface_get_extents (surface->image, rectangle); -} - -static cairo_int_status_t -_test_meta_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - test_meta_surface_t *surface = abstract_surface; - - surface->image_reflects_meta = FALSE; - - return _cairo_surface_paint (surface->meta, op, source); -} - -static cairo_int_status_t -_test_meta_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - test_meta_surface_t *surface = abstract_surface; - - surface->image_reflects_meta = FALSE; - - return _cairo_surface_mask (surface->meta, op, source, mask); -} - -static cairo_int_status_t -_test_meta_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - test_meta_surface_t *surface = abstract_surface; - - surface->image_reflects_meta = FALSE; - - return _cairo_surface_stroke (surface->meta, op, source, - path, style, - ctm, ctm_inverse, - tolerance, antialias); -} - -static cairo_int_status_t -_test_meta_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - test_meta_surface_t *surface = abstract_surface; - - surface->image_reflects_meta = FALSE; - - return _cairo_surface_fill (surface->meta, op, source, - path, fill_rule, - tolerance, antialias); -} - -static cairo_int_status_t -_test_meta_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - test_meta_surface_t *surface = abstract_surface; - cairo_int_status_t status; - - surface->image_reflects_meta = FALSE; - - /* Since this is a "wrapping" surface, we're calling back into - * _cairo_surface_show_glyphs from within a call to the same. - * Since _cairo_surface_show_glyphs acquires a mutex, we release - * and re-acquire the mutex around this nested call. - * - * Yes, this is ugly, but we consider it pragmatic as compared to - * adding locking code to all 18 surface-backend-specific - * show_glyphs functions, (which would get less testing and likely - * lead to bugs). - */ - CAIRO_MUTEX_UNLOCK (scaled_font->mutex); - status = _cairo_surface_show_glyphs (surface->meta, op, source, - glyphs, num_glyphs, - scaled_font); - CAIRO_MUTEX_LOCK (scaled_font->mutex); - - return status; -} - -static cairo_surface_t * -_test_meta_surface_snapshot (void *abstract_other) -{ - test_meta_surface_t *other = abstract_other; - cairo_status_t status; - - /* XXX: Just making a snapshot of other->meta is what we really - * want. But this currently triggers a bug somewhere (the "mask" - * test from the test suite segfaults). - * - * For now, we'll create a new image surface and replay onto - * that. It would be tempting to replay into other->image and then - * return a snapshot of that, but that will cause the self-copy - * test to fail, (since our replay will be affected by a clip that - * should not have any effect on the use of the resulting snapshot - * as a source). - */ - -#if 0 - return _cairo_surface_snapshot (other->meta); -#else - cairo_rectangle_int_t extents; - cairo_surface_t *surface; - - status = _cairo_surface_get_extents (other->image, &extents); - if (status) - return _cairo_surface_create_in_error (status); - - surface = cairo_surface_create_similar (other->image, - CAIRO_CONTENT_COLOR_ALPHA, - extents.width, - extents.height); - - status = _cairo_meta_surface_replay (other->meta, surface); - if (status) { - cairo_surface_destroy (surface); - surface = _cairo_surface_create_in_error (status); - } - - return surface; -#endif -} - -static const cairo_surface_backend_t test_meta_surface_backend = { - CAIRO_INTERNAL_SURFACE_TYPE_TEST_META, - NULL, /* create_similar */ - _test_meta_surface_finish, - _test_meta_surface_acquire_source_image, - _test_meta_surface_release_source_image, - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - _test_meta_surface_show_page, - NULL, /* set_clip_region */ - _test_meta_surface_intersect_clip_path, - _test_meta_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - _test_meta_surface_paint, - _test_meta_surface_mask, - _test_meta_surface_stroke, - _test_meta_surface_fill, - _test_meta_surface_show_glyphs, - _test_meta_surface_snapshot -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/test-meta-surface.h libgdiplus-4.0-4.2.3+precise1/cairo/src/test-meta-surface.h --- libgdiplus-4.0-2.10.9/cairo/src/test-meta-surface.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/test-meta-surface.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -#ifndef TEST_META_SURFACE_H -#define TEST_META_SURFACE_H - -#include "cairo.h" - -CAIRO_BEGIN_DECLS - -cairo_surface_t * -_cairo_test_meta_surface_create (cairo_content_t content, - int width, - int height); - -CAIRO_END_DECLS - -#endif /* TEST_META_SURFACE_H */ diff -Nru libgdiplus-4.0-2.10.9/cairo/src/test-paginated-surface.c libgdiplus-4.0-4.2.3+precise1/cairo/src/test-paginated-surface.c --- libgdiplus-4.0-2.10.9/cairo/src/test-paginated-surface.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/test-paginated-surface.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,315 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -/* This isn't a "real" surface, but just something to be used by the - * test suite to help exercise the paginated-surface paths in cairo. - * - * The defining feature of this backend is that it uses a paginated - * surface to record all operations, and then replays everything to an - * image surface. - * - * It's possible that this code might serve as a good starting point - * for someone working on bringing up a new paginated-surface-based - * backend. - */ - -#include "cairoint.h" - -#include "test-paginated-surface.h" - -#include "cairo-paginated-private.h" - -typedef struct _test_paginated_surface { - cairo_surface_t base; - cairo_surface_t *target; - cairo_paginated_mode_t paginated_mode; -} test_paginated_surface_t; - -static const cairo_surface_backend_t test_paginated_surface_backend; -static const cairo_paginated_surface_backend_t test_paginated_surface_paginated_backend; - -cairo_surface_t * -_cairo_test_paginated_surface_create_for_data (unsigned char *data, - cairo_content_t content, - int width, - int height, - int stride) -{ - cairo_status_t status; - cairo_surface_t *target; - cairo_surface_t *paginated; - test_paginated_surface_t *surface; - - target = _cairo_image_surface_create_for_data_with_content (data, content, - width, height, - stride); - status = cairo_surface_status (target); - if (status) - return target; - - surface = malloc (sizeof (test_paginated_surface_t)); - if (surface == NULL) { - cairo_surface_destroy (target); - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - } - - _cairo_surface_init (&surface->base, &test_paginated_surface_backend, - content); - - surface->target = target; - - paginated = _cairo_paginated_surface_create (&surface->base, - content, width, height, - &test_paginated_surface_paginated_backend); - if (paginated->status) { - cairo_surface_destroy (target); - free (surface); - } - return paginated; -} - -static cairo_status_t -_test_paginated_surface_finish (void *abstract_surface) -{ - test_paginated_surface_t *surface = abstract_surface; - - cairo_surface_destroy (surface->target); - - return CAIRO_STATUS_SUCCESS; -} - -static cairo_int_status_t -_test_paginated_surface_set_clip_region (void *abstract_surface, - cairo_region_t *region) -{ - test_paginated_surface_t *surface = abstract_surface; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - /* XXX: The whole surface backend clipping interface is a giant - * disaster right now. In particular, its uncleanness shows up - * when trying to implement one surface that wraps another one (as - * we are doing here). - * - * Here are two of the problems that show up: - * - * 1. The most critical piece of information in all this stuff, - * the "clip" isn't getting passed to the backend - * functions. Instead the generic surface layer is caching that as - * surface->clip. This is a problem for surfaces like this one - * that do wrapping. Our base surface will have the clip set, but - * our target's surface will not. - * - * 2. We're here in our backend's set_clip_region function, and we - * want to call into our target surface's set_clip_region. - * Generally, we would do this by calling an equivalent - * _cairo_surface function, but _cairo_surface_set_clip_region - * does not have the same signature/semantics, (it has the - * clip_serial stuff as well). - * - * We kludge around each of these by manually copying the clip - * object from our base surface into the target's base surface - * (yuck!) and by reaching directly into the image surface's - * set_clip_region instead of calling into the generic - * _cairo_surface_set_clip_region (double yuck!). - */ - - surface->target->clip = surface->base.clip; - - return _cairo_image_surface_set_clip_region (surface->target, region); -} - -static cairo_int_status_t -_test_paginated_surface_get_extents (void *abstract_surface, - cairo_rectangle_int_t *rectangle) -{ - test_paginated_surface_t *surface = abstract_surface; - - return _cairo_surface_get_extents (surface->target, rectangle); -} - -static cairo_int_status_t -_test_paginated_surface_paint (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source) -{ - test_paginated_surface_t *surface = abstract_surface; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - return _cairo_surface_paint (surface->target, op, source); -} - -static cairo_int_status_t -_test_paginated_surface_mask (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_pattern_t *mask) -{ - test_paginated_surface_t *surface = abstract_surface; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - return _cairo_surface_mask (surface->target, op, source, mask); -} - -static cairo_int_status_t -_test_paginated_surface_stroke (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_stroke_style_t *style, - cairo_matrix_t *ctm, - cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias) -{ - test_paginated_surface_t *surface = abstract_surface; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - return _cairo_surface_stroke (surface->target, op, source, - path, style, - ctm, ctm_inverse, - tolerance, antialias); -} - -static cairo_int_status_t -_test_paginated_surface_fill (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_path_fixed_t *path, - cairo_fill_rule_t fill_rule, - double tolerance, - cairo_antialias_t antialias) -{ - test_paginated_surface_t *surface = abstract_surface; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - return _cairo_surface_fill (surface->target, op, source, - path, fill_rule, - tolerance, antialias); -} - -static cairo_int_status_t -_test_paginated_surface_show_glyphs (void *abstract_surface, - cairo_operator_t op, - cairo_pattern_t *source, - cairo_glyph_t *glyphs, - int num_glyphs, - cairo_scaled_font_t *scaled_font) -{ - test_paginated_surface_t *surface = abstract_surface; - cairo_int_status_t status; - - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return CAIRO_STATUS_SUCCESS; - - /* Since this is a "wrapping" surface, we're calling back into - * _cairo_surface_show_glyphs from within a call to the same. - * Since _cairo_surface_show_glyphs acquires a mutex, we release - * and re-acquire the mutex around this nested call. - * - * Yes, this is ugly, but we consider it pragmatic as compared to - * adding locking code to all 18 surface-backend-specific - * show_glyphs functions, (which would get less testing and likely - * lead to bugs). - */ - CAIRO_MUTEX_UNLOCK (scaled_font->mutex); - status = _cairo_surface_show_glyphs (surface->target, op, source, - glyphs, num_glyphs, scaled_font); - CAIRO_MUTEX_LOCK (scaled_font->mutex); - - return status; -} - -static void -_test_paginated_surface_set_paginated_mode (void *abstract_surface, - cairo_paginated_mode_t mode) -{ - test_paginated_surface_t *surface = abstract_surface; - - surface->paginated_mode = mode; -} - -static const cairo_surface_backend_t test_paginated_surface_backend = { - CAIRO_INTERNAL_SURFACE_TYPE_TEST_PAGINATED, - - /* Since we are a paginated user, we get to regard most of the - * surface backend interface as historical cruft and ignore it. */ - - NULL, /* create_similar */ - _test_paginated_surface_finish, - NULL, /* acquire_source_image */ - NULL, /* release_source_image */ - NULL, /* acquire_dest_image */ - NULL, /* release_dest_image */ - NULL, /* clone_similar */ - NULL, /* composite */ - NULL, /* fill_rectangles */ - NULL, /* composite_trapezoids */ - NULL, /* copy_page */ - NULL, /* show_page */ - _test_paginated_surface_set_clip_region, - NULL, /* intersect_clip_path */ - _test_paginated_surface_get_extents, - NULL, /* old_show_glyphs */ - NULL, /* get_font_options */ - NULL, /* flush */ - NULL, /* mark_dirty_rectangle */ - NULL, /* scaled_font_fini */ - NULL, /* scaled_glyph_fini */ - - /* Here is the more "modern" section of the surface backend - * interface which is mostly just drawing functions */ - - _test_paginated_surface_paint, - _test_paginated_surface_mask, - _test_paginated_surface_stroke, - _test_paginated_surface_fill, - _test_paginated_surface_show_glyphs, - NULL /* snapshot */ -}; - -static const cairo_paginated_surface_backend_t test_paginated_surface_paginated_backend = { - NULL, /* start_page */ - _test_paginated_surface_set_paginated_mode -}; diff -Nru libgdiplus-4.0-2.10.9/cairo/src/test-paginated-surface.h libgdiplus-4.0-4.2.3+precise1/cairo/src/test-paginated-surface.h --- libgdiplus-4.0-2.10.9/cairo/src/test-paginated-surface.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/cairo/src/test-paginated-surface.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl Worth - */ - -#ifndef TEST_PAGINATED_SURFACE_H -#define TEST_PAGINATED_SURFACE_H - -#include "cairo.h" - -CAIRO_BEGIN_DECLS - -cairo_surface_t * -_cairo_test_paginated_surface_create_for_data (unsigned char *data, - cairo_content_t content, - int width, - int height, - int stride); - -CAIRO_END_DECLS - -#endif /* TEST_PAGINATED_SURFACE_H */ diff -Nru libgdiplus-4.0-2.10.9/config.guess libgdiplus-4.0-4.2.3+precise1/config.guess --- libgdiplus-4.0-2.10.9/config.guess 2011-05-12 07:56:51.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/config.guess 1970-01-01 00:00:00.000000000 +0000 @@ -1,1517 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. - -timestamp='2011-05-11' - -# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, 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. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff -Nru libgdiplus-4.0-2.10.9/config.h.in libgdiplus-4.0-4.2.3+precise1/config.h.in --- libgdiplus-4.0-2.10.9/config.h.in 2012-01-31 17:28:34.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/config.h.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,140 +0,0 @@ -/* config.h.in. Generated from configure.in by autoheader. */ - -/* Define if building universal (internal helper macro) */ -#undef AC_APPLE_UNIVERSAL_BUILD - -/* OpenBSD */ -#undef BSDOS - -/* Win32 */ -#undef CYGWIN - -/* Define to 1 if you have the header file. */ -#undef HAVE_BYTESWAP_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `FcFini' function. */ -#undef HAVE_FCFINI - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define if libexif is available. */ -#undef HAVE_LIBEXIF - -/* Define to 1 if you have the `fontconfig' library (-lfontconfig). */ -#undef HAVE_LIBFONTCONFIG - -/* Define if gif support is available */ -#undef HAVE_LIBGIF - -/* Define to 1 if you have the `intl' library (-lintl). */ -#undef HAVE_LIBINTL - -/* Define if jpeg support is available */ -#undef HAVE_LIBJPEG - -/* Define if png support is available. Always defined. */ -#undef HAVE_LIBPNG - -/* Define to 1 if you have the `pthread' library (-lpthread). */ -#undef HAVE_LIBPTHREAD - -/* Define if tiff support is available */ -#undef HAVE_LIBTIFF - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* sigsetjmp is available */ -#undef HAVE_SIGSETJMP - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Support for the visibility ("hidden") attribute */ -#undef HAVE_VISIBILITY_HIDDEN - -/* Linux */ -#undef LINUX - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* OS X */ -#undef OSX - -/* Unknown */ -#undef OTHEROS - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Solaris */ -#undef SOLARIS - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Use Cairo/pixman bundled in libgdiplus */ -#undef USE_INCLUDED_CAIRO - -/* Use Pango to measure and draw text (INCOMPLETE and UNSUPPORTED) */ -#undef USE_PANGO_RENDERING - -/* Version number of package */ -#undef VERSION - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif - -/* For libc reentrancy */ -#undef _REENTRANT diff -Nru libgdiplus-4.0-2.10.9/config.sub libgdiplus-4.0-4.2.3+precise1/config.sub --- libgdiplus-4.0-2.10.9/config.sub 2011-05-12 07:56:51.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/config.sub 1970-01-01 00:00:00.000000000 +0000 @@ -1,1760 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. - -timestamp='2011-03-23' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, 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. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile-* | tilegx-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - # This must be matched before tile*. - tilegx*) - basic_machine=tilegx-unknown - os=-linux-gnu - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff -Nru libgdiplus-4.0-2.10.9/configure libgdiplus-4.0-4.2.3+precise1/configure --- libgdiplus-4.0-2.10.9/configure 2012-01-31 17:28:27.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/configure 1970-01-01 00:00:00.000000000 +0000 @@ -1,15959 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68. -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="README" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -enable_option_checking=no -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -CAIRO_DIR -GDIPLUS_PKG_REQ -GDIPLUS_PKG_CFLAGS -GDIPLUS_PKG_LIBS -GDIPLUS_CFLAGS -GDIPLUS_LIBS -HAVE_LIBEXIF_FALSE -HAVE_LIBEXIF_TRUE -LIBEXIF_LIBS -LIBEXIF_CFLAGS -FREETYPE_CONFIG -FREETYPE2_LIBS -FREETYPE2_CFLAGS -FONTCONFIG_CONFIG -FONTCONFIG_LIBS -FONTCONFIG_CFLAGS -PANGO_LIBS -PANGO_CFLAGS -subdirs -CAIRO_LIBS -CAIRO_CFLAGS -BASE_DEPENDENCIES_LIBS -BASE_DEPENDENCIES_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -LIBTOOL -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_maintainer_mode -enable_shared -enable_static -with_pic -enable_fast_install -enable_dependency_tracking -with_gnu_ld -with_sysroot -enable_libtool_lock -with_pango -with_libexif -with_libjpeg -with_libtiff -with_libgif -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -BASE_DEPENDENCIES_CFLAGS -BASE_DEPENDENCIES_LIBS -CAIRO_CFLAGS -CAIRO_LIBS -PANGO_CFLAGS -PANGO_LIBS -FONTCONFIG_CFLAGS -FONTCONFIG_LIBS -FREETYPE2_CFLAGS -FREETYPE2_LIBS -LIBEXIF_CFLAGS -LIBEXIF_LIBS' -ac_subdirs_all='pixman cairo' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - --with-pango - --without-libexif disable EXIF support - --with-libjpeg=PREFIX Prefix where libjpeg is installed, or 'no' to - disable - --with-libtiff=PREFIX Prefix where libtiff is installed, or 'no' to - disable - --with-libgif=PREFIX Prefix where libgif is installed, or 'no' to disable - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - BASE_DEPENDENCIES_CFLAGS - C compiler flags for BASE_DEPENDENCIES, overriding pkg-config - BASE_DEPENDENCIES_LIBS - linker flags for BASE_DEPENDENCIES, overriding pkg-config - CAIRO_CFLAGS - C compiler flags for CAIRO, overriding pkg-config - CAIRO_LIBS linker flags for CAIRO, overriding pkg-config - PANGO_CFLAGS - C compiler flags for PANGO, overriding pkg-config - PANGO_LIBS linker flags for PANGO, overriding pkg-config - FONTCONFIG_CFLAGS - C compiler flags for FONTCONFIG, overriding pkg-config - FONTCONFIG_LIBS - linker flags for FONTCONFIG, overriding pkg-config - FREETYPE2_CFLAGS - C compiler flags for FREETYPE2, overriding pkg-config - FREETYPE2_LIBS - linker flags for FREETYPE2, overriding pkg-config - LIBEXIF_CFLAGS - C compiler flags for LIBEXIF, overriding pkg-config - LIBEXIF_LIBS - linker flags for LIBEXIF, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -ac_config_headers="$ac_config_headers config.h" - -am__api_version='1.11' - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=libgdiplus - VERSION=2.10.9 - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -# Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test "x$PKG_CONFIG" = "xno"; then - as_fn_error $? "You need to install pkg-config" "$LINENO" 5 -fi -GLIB_REQUIRED_VERSION="2.2.3" - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASE_DEPENDENCIES" >&5 -$as_echo_n "checking for BASE_DEPENDENCIES... " >&6; } - -if test -n "$BASE_DEPENDENCIES_CFLAGS"; then - pkg_cv_BASE_DEPENDENCIES_CFLAGS="$BASE_DEPENDENCIES_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_BASE_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$BASE_DEPENDENCIES_LIBS"; then - pkg_cv_BASE_DEPENDENCIES_LIBS="$BASE_DEPENDENCIES_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= \$GLIB_REQUIRED_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_BASE_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - BASE_DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` - else - BASE_DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$BASE_DEPENDENCIES_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (glib-2.0 >= $GLIB_REQUIRED_VERSION) were not met: - -$BASE_DEPENDENCIES_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables BASE_DEPENDENCIES_CFLAGS -and BASE_DEPENDENCIES_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "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. - -Alternatively, you may set the environment variables BASE_DEPENDENCIES_CFLAGS -and BASE_DEPENDENCIES_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - BASE_DEPENDENCIES_CFLAGS=$pkg_cv_BASE_DEPENDENCIES_CFLAGS - BASE_DEPENDENCIES_LIBS=$pkg_cv_BASE_DEPENDENCIES_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - -GDIPLUS_LIBS="`pkg-config --libs glib-2.0 `" -GDIPLUS_CFLAGS="`pkg-config --cflags glib-2.0 `" - -# libgdiplus bundles its own cairo 1.6.4 but if the system cairo is more recent then we use it instead -CAIRO_BUNDLED_VERSION="1.6.4" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 -$as_echo_n "checking for CAIRO... " >&6; } - -if test -n "$CAIRO_CFLAGS"; then - pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo > \$CAIRO_BUNDLED_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "cairo > $CAIRO_BUNDLED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo > $CAIRO_BUNDLED_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$CAIRO_LIBS"; then - pkg_cv_CAIRO_LIBS="$CAIRO_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo > \$CAIRO_BUNDLED_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "cairo > $CAIRO_BUNDLED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo > $CAIRO_BUNDLED_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo > $CAIRO_BUNDLED_VERSION" 2>&1` - else - CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo > $CAIRO_BUNDLED_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$CAIRO_PKG_ERRORS" >&5 - - cairo_v=internal -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - cairo_v=internal -else - CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS - CAIRO_LIBS=$pkg_cv_CAIRO_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - cairo_v=system -fi - -# Optional use (experimental and unsupported) of Pango's text rendering on top of Cairo - -# Check whether --with-pango was given. -if test "${with_pango+set}" = set; then : - withval=$with_pango; text_v=pango -else - text_v=cairo -fi - - -if test $cairo_v = "internal"; then - # force subdirectories (cairo, specifically) to build their static - # libraries using position independent code. - ac_configure_args="$ac_configure_args --with-pic=yes" - - # disable the PNG, PDF and SVG surface backends of Cairo (unrequired for GDI+) -# cairo 1.6.4 bug - we can't disable PDF and keep PS backend - reported at https://bugs.freedesktop.org/show_bug.cgi?id=15532 -# ac_configure_args="$ac_configure_args --disable-png --disable-pdf --disable-svg" - ac_configure_args="$ac_configure_args --disable-png --disable-svg" -# gdiplus mac note; if we have quartz and ft fonts, quartz is the default and gdi+ assumes the latter everywhere, force it out -# of the internal build - ac_configure_args="$ac_configure_args --disable-quartz-font" - - - -subdirs="$subdirs pixman cairo" - - CAIRO_DIR="pixman cairo" - CAIRO_LIBS='$(top_builddir)/cairo/src/libcairo.la' - CAIRO_CFLAGS='-I$(top_builddir)/pixman/pixman -I$(top_srcdir)/pixman/pixman -I$(top_builddir)/cairo/src -I$(top_srcdir)/cairo/src' - cairo_info+="$CAIRO_BUNDLED_VERSION (internal)" - -$as_echo "#define USE_INCLUDED_CAIRO 1" >>confdefs.h - - - if test $text_v = "pango"; then - as_fn_error $? "\"Pango text rendering is only possible with --with-cairo=system\"" "$LINENO" 5 - fi -else - CAIRO_DIR="" - CAIRO_LIBS="`pkg-config --libs cairo `" - CAIRO_CFLAGS="`pkg-config --cflags cairo `" - cairo_info="`pkg-config --modversion cairo ` (system)" - GDIPLUS_PKG_REQ="cairo" - - if test $text_v = "pango"; then - PANGO_REQUIRED_VERSION="1.10" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGO" >&5 -$as_echo_n "checking for PANGO... " >&6; } - -if test -n "$PANGO_CFLAGS"; then - pkg_cv_PANGO_CFLAGS="$PANGO_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= \$PANGO_REQUIRED_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "pango >= $PANGO_REQUIRED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= $PANGO_REQUIRED_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$PANGO_LIBS"; then - pkg_cv_PANGO_LIBS="$PANGO_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= \$PANGO_REQUIRED_VERSION\""; } >&5 - ($PKG_CONFIG --exists --print-errors "pango >= $PANGO_REQUIRED_VERSION") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_PANGO_LIBS=`$PKG_CONFIG --libs "pango >= $PANGO_REQUIRED_VERSION" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - PANGO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pango >= $PANGO_REQUIRED_VERSION" 2>&1` - else - PANGO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pango >= $PANGO_REQUIRED_VERSION" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$PANGO_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (pango >= $PANGO_REQUIRED_VERSION) were not met: - -$PANGO_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables PANGO_CFLAGS -and PANGO_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "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. - -Alternatively, you may set the environment variables PANGO_CFLAGS -and PANGO_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - PANGO_CFLAGS=$pkg_cv_PANGO_CFLAGS - PANGO_LIBS=$pkg_cv_PANGO_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - PANGO_LIBS="`pkg-config --libs pangocairo `" - PANGO_CFLAGS="`pkg-config --cflags pangocairo `" - -$as_echo "#define USE_PANGO_RENDERING 1" >>confdefs.h - - GDIPLUS_PKG_REQ="$GDIPLUS_PKG_REQ pangocairo-1.0" - fi -fi - -GDIPLUS_LIBS="$GDIPLUS_LIBS $CAIRO_LIBS $PANGO_LIBS" -GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $CAIRO_CFLAGS $PANGO_CFLAGS" - -# Fall back to using fontconfig/freetype-config if their .pc is not found - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FONTCONFIG" >&5 -$as_echo_n "checking for FONTCONFIG... " >&6; } - -if test -n "$FONTCONFIG_CFLAGS"; then - pkg_cv_FONTCONFIG_CFLAGS="$FONTCONFIG_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5 - ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FONTCONFIG_CFLAGS=`$PKG_CONFIG --cflags "fontconfig" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FONTCONFIG_LIBS"; then - pkg_cv_FONTCONFIG_LIBS="$FONTCONFIG_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fontconfig\""; } >&5 - ($PKG_CONFIG --exists --print-errors "fontconfig") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FONTCONFIG_LIBS=`$PKG_CONFIG --libs "fontconfig" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fontconfig" 2>&1` - else - FONTCONFIG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fontconfig" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FONTCONFIG_PKG_ERRORS" >&5 - - fontconfig_pkgconfig=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fontconfig_pkgconfig=no -else - FONTCONFIG_CFLAGS=$pkg_cv_FONTCONFIG_CFLAGS - FONTCONFIG_LIBS=$pkg_cv_FONTCONFIG_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - fontconfig_pkgconfig=yes -fi -if test "x$FONTCONFIG" = "xno"; then - # Extract the first word of "fontconfig-config", so it can be a program name with args. -set dummy fontconfig-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FONTCONFIG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FONTCONFIG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_FONTCONFIG_CONFIG="$FONTCONFIG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_FONTCONFIG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_FONTCONFIG_CONFIG" && ac_cv_path_FONTCONFIG_CONFIG="no" - ;; -esac -fi -FONTCONFIG_CONFIG=$ac_cv_path_FONTCONFIG_CONFIG -if test -n "$FONTCONFIG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FONTCONFIG_CONFIG" >&5 -$as_echo "$FONTCONFIG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "x$FONTCONFIG_CONFIG" = "xyes"; then - FONTCONFIG_CFLAGS="`fontconfig-config --cflags`" - FONTCONFIG_LIBS="`fontconfig-config --libs`" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FcInit in -lfontconfig" >&5 -$as_echo_n "checking for FcInit in -lfontconfig... " >&6; } -if ${ac_cv_lib_fontconfig_FcInit+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lfontconfig $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char FcInit (); -int -main () -{ -return FcInit (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_fontconfig_FcInit=yes -else - ac_cv_lib_fontconfig_FcInit=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fontconfig_FcInit" >&5 -$as_echo "$ac_cv_lib_fontconfig_FcInit" >&6; } -if test "x$ac_cv_lib_fontconfig_FcInit" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBFONTCONFIG 1 -_ACEOF - - LIBS="-lfontconfig $LIBS" - -fi - -for ac_func in FcFini -do : - ac_fn_c_check_func "$LINENO" "FcFini" "ac_cv_func_FcFini" -if test "x$ac_cv_func_FcFini" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FCFINI 1 -_ACEOF - -fi -done - - - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FREETYPE2" >&5 -$as_echo_n "checking for FREETYPE2... " >&6; } - -if test -n "$FREETYPE2_CFLAGS"; then - pkg_cv_FREETYPE2_CFLAGS="$FREETYPE2_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FREETYPE2_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$FREETYPE2_LIBS"; then - pkg_cv_FREETYPE2_LIBS="$FREETYPE2_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 - ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_FREETYPE2_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - FREETYPE2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "freetype2" 2>&1` - else - FREETYPE2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "freetype2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$FREETYPE2_PKG_ERRORS" >&5 - - freetype2_pkgconfig=no] -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - freetype2_pkgconfig=no] -else - FREETYPE2_CFLAGS=$pkg_cv_FREETYPE2_CFLAGS - FREETYPE2_LIBS=$pkg_cv_FREETYPE2_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - freetype2_pkgconfig=yes -fi -if test "x$FREETYPE2" = "xno"; then - # Extract the first word of "freetype-config", so it can be a program name with args. -set dummy freetype-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FREETYPE_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FREETYPE_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_FREETYPE_CONFIG" && ac_cv_path_FREETYPE_CONFIG="no" - ;; -esac -fi -FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG -if test -n "$FREETYPE_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_CONFIG" >&5 -$as_echo "$FREETYPE_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "x$FREETYPE_CONFIG" = "xyes"; then - FREETYPE2_CFLAGS="`freetype-config --cflags`" - FREETYPE2_LIBS="`freetype-config --libs`" - fi -fi - -GDIPLUS_LIBS="$GDIPLUS_LIBS $FONTCONFIG_LIBS $FREETYPE2_LIBS" -GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $FONTCONFIG_CFLAGS $FREETYPE2_CFLAGS" - -for ac_header in byteswap.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "byteswap.h" "ac_cv_header_byteswap_h" "$ac_includes_default" -if test "x$ac_cv_header_byteswap_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_BYTESWAP_H 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host threading settings" >&5 -$as_echo_n "checking host threading settings... " >&6; } -case "$host" in - *-*-mingw*|*-*-cygwin*) - -cat >>confdefs.h <<_ACEOF -#define CYGWIN 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5 -$as_echo_n "checking for gettext in -lintl... " >&6; } -if ${ac_cv_lib_intl_gettext+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gettext (); -int -main () -{ -return gettext (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_gettext=yes -else - ac_cv_lib_intl_gettext=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_gettext" >&5 -$as_echo "$ac_cv_lib_intl_gettext" >&6; } -if test "x$ac_cv_lib_intl_gettext" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBINTL 1 -_ACEOF - - LIBS="-lintl $LIBS" - -fi - - ;; - - *-*-*netbsd*) - -cat >>confdefs.h <<_ACEOF -#define BSDOS 1 -_ACEOF - - ;; - - *-*-*freebsd*) - -cat >>confdefs.h <<_ACEOF -#define BSDOS 1 -_ACEOF - - CFLAGS="-D_THREAD_SAFE $CFLAGS" - ;; - - *-*-*openbsd*) - -cat >>confdefs.h <<_ACEOF -#define BSDOS 1 -_ACEOF - - CFLAGS="$CFLAGS" - LIBS="$LIBS" - ;; - - *-*-linux*) - -cat >>confdefs.h <<_ACEOF -#define LINUX 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_create=yes -else - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPTHREAD 1 -_ACEOF - - LIBS="-lpthread $LIBS" - -fi - - ;; - - *-*-solaris*) - -cat >>confdefs.h <<_ACEOF -#define SOLARIS 1 -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define _REENTRANT 1 -_ACEOF - - CFLAGS="-pthreads $CFLAGS" - ;; - - *-*-darwin*) - -cat >>confdefs.h <<_ACEOF -#define OSX 1 -_ACEOF - - CFLAGS="-no-cpp-precomp $CFLAGS" - LDFLAGS="-flat_namespace -undefined suppress $LDFLAGS" - no_x=yes - ;; - - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unrecognized host $host" >&5 -$as_echo "Unrecognized host $host" >&6; } - -cat >>confdefs.h <<_ACEOF -#define OTHEROS 1 -_ACEOF - - ;; -esac - -# Add xrender here so that we don't fail to find glib if we won't have xrender.pc -if test "x$no_x" != "xyes"; then - GDIPLUS_LIBS="$GDIPLUS_LIBS `pkg-config --libs xrender `" - GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS `pkg-config --cflags xrender `" -fi - -# Apparently for BSD special handling needs to happen -# See http://archives/neohapsis.com/archives/openbsd/2001-11/2142.html -# by Miod Vallat -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler recognizes -pthread" >&5 -$as_echo_n "checking if compiler recognizes -pthread... " >&6; } -if ${myapp_cv_gcc_pthread+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -pthread" - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *p = pthread_create; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - myapp_cv_gcc_pthread=yes -else - myapp_cv_gcc_pthread=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - CFLAGS=$ac_save_CFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $myapp_cv_gcc_pthread" >&5 -$as_echo "$myapp_cv_gcc_pthread" >&6; } -if test $myapp_cv_gcc_pthread = yes -then - myapp_threads="" - CFLAGS="$CFLAGS -pthread" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_create=yes -else - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : - myapp_threads=-lpthread -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lc_r" >&5 -$as_echo_n "checking for pthread_create in -lc_r... " >&6; } -if ${ac_cv_lib_c_r_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc_r $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_c_r_pthread_create=yes -else - ac_cv_lib_c_r_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_create" >&5 -$as_echo "$ac_cv_lib_c_r_pthread_create" >&6; } -if test "x$ac_cv_lib_c_r_pthread_create" = xyes; then : - myapp_threads=-lc_r -fi - -fi - -fi - - -# sigsetjmp is a macro on some platforms, so can't use AC_CHECK_FUNCS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigsetjmp" >&5 -$as_echo_n "checking for sigsetjmp... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -sigjmp_buf env; -sigsetjmp(env, 0); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gdip_ok=yes -else - gdip_ok=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdip_ok" >&5 -$as_echo "$gdip_ok" >&6; } -if test "$gdip_ok" = "yes"; then - -$as_echo "#define HAVE_SIGSETJMP 1" >>confdefs.h - -fi - - -# when possible hide stuff we don't want to export -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for visibility __attribute__" >&5 -$as_echo_n "checking for visibility __attribute__... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - void __attribute__ ((visibility ("hidden"))) doit (void) {} - void main () { doit (); } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - have_visibility_hidden=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - have_visibility_hidden=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -case "$host" in - i*86-*-*) - case $host_os in - solaris*) - # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. - have_visibility_hidden=no - esac - ;; -esac - -if test "x$have_visibility_hidden" = "xyes"; then - -$as_echo "#define HAVE_VISIBILITY_HIDDEN 1" >>confdefs.h - -fi - - - -# Check whether --with-libexif was given. -if test "${with_libexif+set}" = set; then : - withval=$with_libexif; -fi - - - -# Check whether --with-libjpeg was given. -if test "${with_libjpeg+set}" = set; then : - withval=$with_libjpeg; libjpeg_prefix="$withval" -else - libjpeg_prefix="${prefix}" -fi - - - if test x$with_libjpeg != xno && test -z "$LIBJPEG"; then - JPEG_CFLAGS="-I${libjpeg_prefix}/include" - JPEG_LIBS="-L${libjpeg_prefix}/lib" - save_cflags=$CFLAGS; CFLAGS=$JPEG_CFLAGS - save_libs=$LIBS; LIBS=$JPEG_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_destroy_decompress in -ljpeg" >&5 -$as_echo_n "checking for jpeg_destroy_decompress in -ljpeg... " >&6; } -if ${ac_cv_lib_jpeg_jpeg_destroy_decompress+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ljpeg $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char jpeg_destroy_decompress (); -int -main () -{ -return jpeg_destroy_decompress (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_jpeg_jpeg_destroy_decompress=yes -else - ac_cv_lib_jpeg_jpeg_destroy_decompress=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_destroy_decompress" >&5 -$as_echo "$ac_cv_lib_jpeg_jpeg_destroy_decompress" >&6; } -if test "x$ac_cv_lib_jpeg_jpeg_destroy_decompress" = xyes; then : - jpeg_ok=yes -else - jpeg_ok=no - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** JPEG loader will not be built (JPEG library not found) ***" >&5 -$as_echo "$as_me: WARNING: *** JPEG loader will not be built (JPEG library not found) ***" >&2;} -fi - - if test "$jpeg_ok" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeglib.h" >&5 -$as_echo_n "checking for jpeglib.h... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#undef PACKAGE -#undef VERSION -#undef HAVE_STDLIB_H -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - jpeg_ok=yes -else - jpeg_ok=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jpeg_ok" >&5 -$as_echo "$jpeg_ok" >&6; } - if test "$jpeg_ok" = yes; then - JPEG='jpeg'; LIBJPEG='-L${libjpeg_prefix}/lib -ljpeg' - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** JPEG loader will not be built (JPEG header file not found) ***" >&5 -$as_echo "$as_me: WARNING: *** JPEG loader will not be built (JPEG header file not found) ***" >&2;} - fi - fi - CFLAGS=$save_cflags - LIBS=$save_libs - fi - -if test x$JPEG != x; then - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBJPEG" - -$as_echo "#define HAVE_LIBJPEG 1" >>confdefs.h - -else - jpeg_ok="no (Get it from http://freshmeat.net/projects/libjpeg)" -fi - - -# Check whether --with-libtiff was given. -if test "${with_libtiff+set}" = set; then : - withval=$with_libtiff; libtiff_prefix="$withval" -else - libtiff_prefix="${prefix}" -fi - - - if test x$with_libtiff != xno && test -z "$LIBTIFF"; then - TIFF_CFLAGS="-I${libjpeg_prefix}/include -I${libtiff_prefix}/include" - TIFF_LIBS="-L${libjpeg_prefix}/lib -L${libtiff_prefix}/lib" - save_cflags=$CFLAGS; CFLAGS=$TIFF_CFLAGS - save_libs=$LIBS; LIBS=$TIFF_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFReadScanline in -ltiff" >&5 -$as_echo_n "checking for TIFFReadScanline in -ltiff... " >&6; } -if ${ac_cv_lib_tiff_TIFFReadScanline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ltiff -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char TIFFReadScanline (); -int -main () -{ -return TIFFReadScanline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_tiff_TIFFReadScanline=yes -else - ac_cv_lib_tiff_TIFFReadScanline=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFReadScanline" >&5 -$as_echo "$ac_cv_lib_tiff_TIFFReadScanline" >&6; } -if test "x$ac_cv_lib_tiff_TIFFReadScanline" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" -if test "x$ac_cv_header_tiffio_h" = xyes; then : - TIFF='tiff'; LIBTIFF='-ltiff'; tiff_ok=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** TIFF loader will not be built (TIFF header files not found) ***" >&5 -$as_echo "$as_me: WARNING: *** TIFF loader will not be built (TIFF header files not found) ***" >&2;} -fi - - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFWriteScanline in -ltiff" >&5 -$as_echo_n "checking for TIFFWriteScanline in -ltiff... " >&6; } -if ${ac_cv_lib_tiff_TIFFWriteScanline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ltiff -ljpeg -lz -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char TIFFWriteScanline (); -int -main () -{ -return TIFFWriteScanline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_tiff_TIFFWriteScanline=yes -else - ac_cv_lib_tiff_TIFFWriteScanline=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFWriteScanline" >&5 -$as_echo "$ac_cv_lib_tiff_TIFFWriteScanline" >&6; } -if test "x$ac_cv_lib_tiff_TIFFWriteScanline" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" -if test "x$ac_cv_header_tiffio_h" = xyes; then : - TIFF='tiff'; LIBTIFF='-ltiff -ljpeg -lz'; tiff_ok=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** TIFF loader will not be built (TIFF header files not found) ***" >&5 -$as_echo "$as_me: WARNING: *** TIFF loader will not be built (TIFF header files not found) ***" >&2;} -fi - - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFFlushData in -ltiff34" >&5 -$as_echo_n "checking for TIFFFlushData in -ltiff34... " >&6; } -if ${ac_cv_lib_tiff34_TIFFFlushData+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ltiff34 -lz -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char TIFFFlushData (); -int -main () -{ -return TIFFFlushData (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_tiff34_TIFFFlushData=yes -else - ac_cv_lib_tiff34_TIFFFlushData=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff34_TIFFFlushData" >&5 -$as_echo "$ac_cv_lib_tiff34_TIFFFlushData" >&6; } -if test "x$ac_cv_lib_tiff34_TIFFFlushData" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" -if test "x$ac_cv_header_tiffio_h" = xyes; then : - TIFF='tiff'; LIBTIFF='-ltiff34 -ljpeg -lz'; tiff_ok=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** TIFF loader will not be built (TIFF header files not found) ***" >&5 -$as_echo "$as_me: WARNING: *** TIFF loader will not be built (TIFF header files not found) ***" >&2;} -fi - - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** TIFF plug-in will not be built (TIFF library not found) ***" >&5 -$as_echo "$as_me: WARNING: *** TIFF plug-in will not be built (TIFF library not found) ***" >&2;} -fi - -fi - -fi - - CFLAGS=$save_cflags - LIBS=$save_libs - fi - -if test x$TIFF != x; then - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBTIFF" - -$as_echo "#define HAVE_LIBTIFF 1" >>confdefs.h - -else - tiff_ok="no (Get it from http://www.libtiff.org/)" -fi - - -# Check whether --with-libgif was given. -if test "${with_libgif+set}" = set; then : - withval=$with_libgif; libgif_prefix="$withval" -else - libgif_prefix="${prefix}" -fi - - - if test x$with_libgif != xno && test -z "$LIBGIF"; then - GIF_CFLAGS="-I${libgif_prefix}/include" - GIF_LIBS="-L${libgif_prefix}/lib" - save_cflags=$CFLAGS; CFLAGS=$GIF_CFLAGS - save_libs=$LIBS; LIBS=$GIF_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifOpenFileName in -lgif" >&5 -$as_echo_n "checking for DGifOpenFileName in -lgif... " >&6; } -if ${ac_cv_lib_gif_DGifOpenFileName+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgif $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char DGifOpenFileName (); -int -main () -{ -return DGifOpenFileName (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_gif_DGifOpenFileName=yes -else - ac_cv_lib_gif_DGifOpenFileName=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifOpenFileName" >&5 -$as_echo "$ac_cv_lib_gif_DGifOpenFileName" >&6; } -if test "x$ac_cv_lib_gif_DGifOpenFileName" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default" -if test "x$ac_cv_header_gif_lib_h" = xyes; then : - GIF='gif'; LIBGIF='-lgif'; gif_ok=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** GIF loader will not be built (giflibrary not found) ***" >&5 -$as_echo "$as_me: WARNING: *** GIF loader will not be built (giflibrary not found) ***" >&2;} -fi - - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** GIF loader will not be built (giflibrary not found) ***" >&5 -$as_echo "$as_me: WARNING: *** GIF loader will not be built (giflibrary not found) ***" >&2;} -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifOpenFileName in -lungif" >&5 -$as_echo_n "checking for DGifOpenFileName in -lungif... " >&6; } -if ${ac_cv_lib_ungif_DGifOpenFileName+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lungif $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char DGifOpenFileName (); -int -main () -{ -return DGifOpenFileName (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ungif_DGifOpenFileName=yes -else - ac_cv_lib_ungif_DGifOpenFileName=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ungif_DGifOpenFileName" >&5 -$as_echo "$ac_cv_lib_ungif_DGifOpenFileName" >&6; } -if test "x$ac_cv_lib_ungif_DGifOpenFileName" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default" -if test "x$ac_cv_header_gif_lib_h" = xyes; then : - GIF='ungif'; LIBGIF='-lungif'; gif_ok=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** GIF loader will not be built (ungiflibrary not found) ***" >&5 -$as_echo "$as_me: WARNING: *** GIF loader will not be built (ungiflibrary not found) ***" >&2;} -fi - - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** GIF loader will not be built (ungiflibrary not found) ***" >&5 -$as_echo "$as_me: WARNING: *** GIF loader will not be built (ungiflibrary not found) ***" >&2;} -fi - - CFLAGS=$save_cflags - LIBS=$save_libs - fi - -if test x$GIF != x; then - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBGIF" - -$as_echo "#define HAVE_LIBGIF 1" >>confdefs.h - -else - gif_ok="no (See http://sourceforge.net/projects/libgif)" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng14" >&5 -$as_echo_n "checking for libpng14... " >&6; } - if $PKG_CONFIG --exists libpng14 ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PNG='png' - PNG_DEP_CFLAGS_PACKAGES=libpng14 - LIBPNG=`$PKG_CONFIG --libs libpng14` - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng12" >&5 -$as_echo_n "checking for libpng12... " >&6; } - if $PKG_CONFIG --exists libpng12 ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - PNG='png' - PNG_DEP_CFLAGS_PACKAGES=libpng12 - LIBPNG=`$PKG_CONFIG --libs libpng12` - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_read_info in -lpng" >&5 -$as_echo_n "checking for png_read_info in -lpng... " >&6; } -if ${ac_cv_lib_png_png_read_info+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpng -lz -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char png_read_info (); -int -main () -{ -return png_read_info (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_png_png_read_info=yes -else - ac_cv_lib_png_png_read_info=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_read_info" >&5 -$as_echo "$ac_cv_lib_png_png_read_info" >&6; } -if test "x$ac_cv_lib_png_png_read_info" = xyes; then : - ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default" -if test "x$ac_cv_header_png_h" = xyes; then : - png_ok=yes -else - png_ok=no -fi - - -else - as_fn_error $? "*** libpng12 not found. See http://www.libpng.org/pub/png/libpng.html." "$LINENO" 5 -fi - - if test "$png_ok" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_structp in png.h" >&5 -$as_echo_n "checking for png_structp in png.h... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -png_structp pp; png_infop info; png_colorp cmap; png_create_read_struct; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - png_ok=yes -else - png_ok=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $png_ok" >&5 -$as_echo "$png_ok" >&6; } - if test "$png_ok" = yes; then - PNG='png'; LIBPNG='-lpng -lz' - else - as_fn_error but it is too old. See http://www.libpng.org/pub/png/libpng.html. "*** libpng12 found" "$LINENO" 5 - fi - else - as_fn_error $? "*** libpng12 not found. See http://www.libpng.org/pub/png/libpng.html." "$LINENO" 5 - fi - fi - fi - - -GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBPNG" - -$as_echo "#define HAVE_LIBPNG 1" >>confdefs.h - - -if test x$with_libexif != xno && test -z "$LIBEXIF"; then - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBEXIF" >&5 -$as_echo_n "checking for LIBEXIF... " >&6; } - -if test -n "$LIBEXIF_CFLAGS"; then - pkg_cv_LIBEXIF_CFLAGS="$LIBEXIF_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libexif") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBEXIF_CFLAGS=`$PKG_CONFIG --cflags "libexif" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$LIBEXIF_LIBS"; then - pkg_cv_LIBEXIF_LIBS="$LIBEXIF_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libexif") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_LIBEXIF_LIBS=`$PKG_CONFIG --libs "libexif" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - LIBEXIF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libexif" 2>&1` - else - LIBEXIF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libexif" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$LIBEXIF_PKG_ERRORS" >&5 - - libexif_pkgconfig=no] -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - libexif_pkgconfig=no] -else - LIBEXIF_CFLAGS=$pkg_cv_LIBEXIF_CFLAGS - LIBEXIF_LIBS=$pkg_cv_LIBEXIF_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - libexif_pkgconfig=yes -fi - if test x$libexif_pkgconfig = xyes ; then - GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $LIBEXIF_CFLAGS" - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBEXIF_LIBS" - -$as_echo "#define HAVE_LIBEXIF 1" >>confdefs.h - - else - libexif_pkgconfig="No. Get it from http://libexif.sourceforge.net/" - fi -else - libexif_pkgconfig="No. You disabled it." -fi - if test x$libexif_pkgconfig = xyes; then - HAVE_LIBEXIF_TRUE= - HAVE_LIBEXIF_FALSE='#' -else - HAVE_LIBEXIF_TRUE='#' - HAVE_LIBEXIF_FALSE= -fi - - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - x11_failed=false -else - x11_failed=true -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if $x11_failed; then - as_fn_error $? "\"Failed to compile with X11/Xlib.h include. You must fix your compiler paths\"" "$LINENO" 5 -fi - -GDIPLUS_PKG_LIBS="$GDIPLUS_LIBS" -GDIPLUS_PKG_CFLAGS="$GDIPLUS_CFLAGS" - - - - - - - - -ac_config_files="$ac_config_files Makefile libgdiplus.pc libgdiplus0.spec src/Makefile tests/Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${HAVE_LIBEXIF_TRUE}" && test -z "${HAVE_LIBEXIF_FALSE}"; then - as_fn_error $? "conditional \"HAVE_LIBEXIF\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "libgdiplus.pc") CONFIG_FILES="$CONFIG_FILES libgdiplus.pc" ;; - "libgdiplus0.spec") CONFIG_FILES="$CONFIG_FILES libgdiplus0.spec" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="" - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi - -# -# CONFIG_SUBDIRS section. -# -if test "$no_recursion" != yes; then - - # Remove --cache-file, --srcdir, and --disable-option-checking arguments - # so they do not pile up. - ac_sub_configure_args= - ac_prev= - eval "set x $ac_configure_args" - shift - for ac_arg - do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case $ac_arg in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ - | --c=*) - ;; - --config-cache | -C) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - ;; - --disable-option-checking) - ;; - *) - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_sub_configure_args " '$ac_arg'" ;; - esac - done - - # Always prepend --prefix to ensure using the same prefix - # in subdir configurations. - ac_arg="--prefix=$prefix" - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi - - # Always prepend --disable-option-checking to silence warnings, since - # different subdirs can have different --enable and --with options. - ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" - - ac_popdir=`pwd` - for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - test -d "$srcdir/$ac_dir" || continue - - ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 - $as_echo "$ac_msg" >&6 - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - cd "$ac_dir" - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f "$ac_srcdir/configure.gnu"; then - ac_sub_configure=$ac_srcdir/configure.gnu - elif test -f "$ac_srcdir/configure"; then - ac_sub_configure=$ac_srcdir/configure - elif test -f "$ac_srcdir/configure.in"; then - # This should be Cygnus configure. - ac_sub_configure=$ac_aux_dir/configure - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 -$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - # Make the cache file name correct relative to the subdirectory. - case $cache_file in - [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; - *) # Relative name. - ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} - # The eval makes quoting arguments work. - eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ - --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 - fi - - cd "$ac_popdir" - done -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -echo "---" -echo "Configuration summary" -echo "" -echo " * Installation prefix = $prefix" -echo " * Cairo = $cairo_info" -echo " * Text = $text_v" -echo " * EXIF tags = $libexif_pkgconfig" -echo " * Codecs supported:" -echo "" -echo " - TIFF: $tiff_ok" -echo " - JPEG: $jpeg_ok" -echo " - GIF: $gif_ok" -echo " - PNG: yes" -echo "" -echo " NOTE: if any of the above say 'no' you may install the" -echo " corresponding development packages for them, rerun" -echo " autogen.sh to include them in the build." -echo "" -echo "---" diff -Nru libgdiplus-4.0-2.10.9/configure.ac libgdiplus-4.0-4.2.3+precise1/configure.ac --- libgdiplus-4.0-2.10.9/configure.ac 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/configure.ac 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,410 @@ +AC_INIT(libgdiplus, [4.2], + [https://bugzilla.xamarin.com/enter_bug.cgi?product=Class%20Libraries&component=libgdiplus]) + AC_CONFIG_SRCDIR([README]) + +AC_CANONICAL_SYSTEM +AC_CANONICAL_HOST + +AM_INIT_AUTOMAKE +AC_CONFIG_HEADERS([config.h]) +AM_MAINTAINER_MODE +AM_PROG_LIBTOOL + +AC_C_BIGENDIAN + +AC_PATH_PROG(PKG_CONFIG, pkg-config, no) +if test "x$PKG_CONFIG" = "xno"; then + AC_MSG_ERROR([You need to install pkg-config]) +fi +GLIB_REQUIRED_VERSION="2.2.3" +PKG_CHECK_MODULES(BASE_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION) + +GDIPLUS_LIBS="`pkg-config --libs glib-2.0 `" +GDIPLUS_CFLAGS="`pkg-config --cflags glib-2.0 `" + +CAIRO_REQUIRED_VERSION="1.6.4" +PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_REQUIRED_VERSION) + +# Optional use (experimental and unsupported) of Pango's text rendering on top of Cairo +AC_ARG_WITH(pango, [ --with-pango],[text_v=pango],[text_v=cairo]) + +CAIRO_DIR="" +CAIRO_LIBS="`pkg-config --libs cairo `" +CAIRO_CFLAGS="`pkg-config --cflags cairo `" +cairo_info="`pkg-config --modversion cairo ` (system)" +GDIPLUS_PKG_REQ="cairo" + +if test $text_v = "pango"; then + PANGO_REQUIRED_VERSION="1.10" + PKG_CHECK_MODULES(PANGO, pango >= $PANGO_REQUIRED_VERSION) + PANGO_LIBS="`pkg-config --libs pangocairo `" + PANGO_CFLAGS="`pkg-config --cflags pangocairo `" + AC_DEFINE(USE_PANGO_RENDERING,1,[Use Pango to measure and draw text (INCOMPLETE and UNSUPPORTED)]) + GDIPLUS_PKG_REQ="$GDIPLUS_PKG_REQ pangocairo-1.0" +fi + +GDIPLUS_LIBS="$GDIPLUS_LIBS $CAIRO_LIBS $PANGO_LIBS" +GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $CAIRO_CFLAGS $PANGO_CFLAGS" + +# Fall back to using fontconfig/freetype-config if their .pc is not found +PKG_CHECK_MODULES(FONTCONFIG, fontconfig, + [fontconfig_pkgconfig=yes], [fontconfig_pkgconfig=no]) +if test "x$FONTCONFIG" = "xno"; then + AC_PATH_PROG(FONTCONFIG_CONFIG, fontconfig-config, no) + if test "x$FONTCONFIG_CONFIG" = "xyes"; then + FONTCONFIG_CFLAGS="`fontconfig-config --cflags`" + FONTCONFIG_LIBS="`fontconfig-config --libs`" + fi +fi +AC_CHECK_LIB(fontconfig, FcInit) +AC_CHECK_FUNCS(FcFini) + +PKG_CHECK_MODULES(FREETYPE2, freetype2, + [freetype2_pkgconfig=yes], freetype2_pkgconfig=no]) +if test "x$FREETYPE2" = "xno"; then + AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) + if test "x$FREETYPE_CONFIG" = "xyes"; then + FREETYPE2_CFLAGS="`freetype-config --cflags`" + FREETYPE2_LIBS="`freetype-config --libs`" + fi +fi + +GDIPLUS_LIBS="$GDIPLUS_LIBS $FONTCONFIG_LIBS $FREETYPE2_LIBS" +GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $FONTCONFIG_CFLAGS $FREETYPE2_CFLAGS" + +AC_CHECK_HEADERS(byteswap.h) + +AC_MSG_CHECKING([host threading settings]) +case "$host" in + *-*-mingw*|*-*-cygwin*) + AC_DEFINE_UNQUOTED(CYGWIN,1,[Win32]) + AC_CHECK_LIB(intl, gettext) + ;; + + *-*-*netbsd*) + AC_DEFINE_UNQUOTED(BSDOS,1,[NetBSD]) + ;; + + *-*-*freebsd*) + AC_DEFINE_UNQUOTED(BSDOS,1,[FreeBSD]) + CFLAGS="-D_THREAD_SAFE $CFLAGS" + ;; + + *-*-*openbsd*) + AC_DEFINE_UNQUOTED(BSDOS,1,[OpenBSD]) + CFLAGS="$CFLAGS" + LIBS="$LIBS" + ;; + + *-*-linux*) + AC_DEFINE_UNQUOTED(LINUX,1,[Linux]) + AC_CHECK_LIB(pthread, pthread_create) + ;; + + *-*-solaris*) + AC_DEFINE_UNQUOTED(SOLARIS,1,[Solaris]) + AC_DEFINE_UNQUOTED(_REENTRANT,1,[For libc reentrancy]) + CFLAGS="-pthreads $CFLAGS" + ;; + + *-*-darwin*) + AC_DEFINE_UNQUOTED(OSX,1,[OS X]) + CFLAGS="-no-cpp-precomp $CFLAGS" + LDFLAGS="-flat_namespace -undefined suppress $LDFLAGS" + no_x=yes + ;; + + *) + AC_MSG_RESULT(Unrecognized host $host) + AC_DEFINE_UNQUOTED(OTHEROS,1,[Unknown]) + ;; +esac + +# Add xrender here so that we don't fail to find glib if we won't have xrender.pc +if test "x$no_x" != "xyes"; then + GDIPLUS_LIBS="$GDIPLUS_LIBS `pkg-config --libs xrender `" + GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS `pkg-config --cflags xrender `" +fi + +# Apparently for BSD special handling needs to happen +# See http://archives/neohapsis.com/archives/openbsd/2001-11/2142.html +# by Miod Vallat +AC_CACHE_CHECK( + [if compiler recognizes -pthread], + myapp_cv_gcc_pthread, + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -pthread" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([#include ], + [void *p = pthread_create;], + myapp_cv_gcc_pthread=yes, + myapp_cv_gcc_pthread=no) + AC_LANG_RESTORE + CFLAGS=$ac_save_CFLAGS +) +if test $myapp_cv_gcc_pthread = yes +then + myapp_threads="" + CFLAGS="$CFLAGS -pthread" +else + AC_CHECK_LIB(pthread,pthread_create,myapp_threads=-lpthread, + [AC_CHECK_LIB(c_r,pthread_create,myapp_threads=-lc_r)]) +fi + + +# sigsetjmp is a macro on some platforms, so can't use AC_CHECK_FUNCS +AC_MSG_CHECKING(for sigsetjmp) +AC_TRY_LINK([#include ], [ +sigjmp_buf env; +sigsetjmp(env, 0); +], gdip_ok=yes, gdip_ok=no) +AC_MSG_RESULT($gdip_ok) +if test "$gdip_ok" = "yes"; then + AC_DEFINE(HAVE_SIGSETJMP, 1, sigsetjmp is available) +fi + + +# when possible hide stuff we don't want to export +AC_MSG_CHECKING(for visibility __attribute__) +AC_TRY_COMPILE([], [ + void __attribute__ ((visibility ("hidden"))) doit (void) {} + void main () { doit (); } +], [ + have_visibility_hidden=yes + AC_MSG_RESULT(yes) +], [ + have_visibility_hidden=no + AC_MSG_RESULT(no) +]) + +case "$host" in + i*86-*-*) + case $host_os in + solaris*) + # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. + have_visibility_hidden=no + esac + ;; +esac + +if test "x$have_visibility_hidden" = "xyes"; then + AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute]) +fi + + +AC_ARG_WITH(libexif, + [AC_HELP_STRING([--without-libexif], [disable EXIF support])]) + +dnl Test for libjpeg (this needs to be checked before libtiff, since libtiff depends on libjpeg) +AC_ARG_WITH([libjpeg], + AS_HELP_STRING([--with-libjpeg=PREFIX], + [Prefix where libjpeg is installed, or 'no' to disable]), + [libjpeg_prefix="$withval"], [libjpeg_prefix="${prefix}"]) + + if test x$with_libjpeg != xno && test -z "$LIBJPEG"; then + JPEG_CFLAGS="-I${libjpeg_prefix}/include" + JPEG_LIBS="-L${libjpeg_prefix}/lib" + save_cflags=$CFLAGS; CFLAGS=$JPEG_CFLAGS + save_libs=$LIBS; LIBS=$JPEG_LIBS + AC_CHECK_LIB(jpeg, jpeg_destroy_decompress, + jpeg_ok=yes, + jpeg_ok=no + AC_MSG_WARN(*** JPEG loader will not be built (JPEG library not found) ***)) + if test "$jpeg_ok" = yes; then + AC_MSG_CHECKING([for jpeglib.h]) + AC_TRY_CPP( +[#include +#undef PACKAGE +#undef VERSION +#undef HAVE_STDLIB_H +#include ], + jpeg_ok=yes, + jpeg_ok=no) + AC_MSG_RESULT($jpeg_ok) + if test "$jpeg_ok" = yes; then + JPEG='jpeg'; LIBJPEG='-L${libjpeg_prefix}/lib -ljpeg' + else + AC_MSG_WARN(*** JPEG loader will not be built (JPEG header file not found) ***) + fi + fi + CFLAGS=$save_cflags + LIBS=$save_libs + fi + +if test x$JPEG != x; then + GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBJPEG" + AC_DEFINE(HAVE_LIBJPEG, 1, Define if jpeg support is available) +else + jpeg_ok="no (Get it from http://freshmeat.net/projects/libjpeg)" +fi + +dnl Test for libtiff +AC_ARG_WITH([libtiff], + AS_HELP_STRING([--with-libtiff=PREFIX], + [Prefix where libtiff is installed, or 'no' to disable]), + [libtiff_prefix="$withval"], [libtiff_prefix="${prefix}"]) + + if test x$with_libtiff != xno && test -z "$LIBTIFF"; then + TIFF_CFLAGS="-I${libjpeg_prefix}/include -I${libtiff_prefix}/include" + TIFF_LIBS="-L${libjpeg_prefix}/lib -L${libtiff_prefix}/lib" + save_cflags=$CFLAGS; CFLAGS=$TIFF_CFLAGS + save_libs=$LIBS; LIBS=$TIFF_LIBS + AC_CHECK_LIB(tiff, TIFFReadScanline, + [AC_CHECK_HEADER(tiffio.h, + TIFF='tiff'; LIBTIFF='-ltiff'; tiff_ok=yes, + AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))], + [AC_CHECK_LIB(tiff, TIFFWriteScanline, + [AC_CHECK_HEADER(tiffio.h, + TIFF='tiff'; LIBTIFF='-ltiff -ljpeg -lz'; tiff_ok=yes, + AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))], + [AC_CHECK_LIB(tiff34, TIFFFlushData, + [AC_CHECK_HEADER(tiffio.h, + TIFF='tiff'; LIBTIFF='-ltiff34 -ljpeg -lz'; tiff_ok=yes, + AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))], + AC_MSG_WARN(*** TIFF plug-in will not be built (TIFF library not found) ***), -lz -lm)], -ljpeg -lz -lm)], -lm) + CFLAGS=$save_cflags + LIBS=$save_libs + fi + +if test x$TIFF != x; then + GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBTIFF" + AC_DEFINE(HAVE_LIBTIFF, 1, Define if tiff support is available) +else + tiff_ok="no (Get it from http://www.libtiff.org/)" +fi + +dnl Test for libgif or libungif +AC_ARG_WITH([libgif], + AS_HELP_STRING([--with-libgif=PREFIX], + [Prefix where libgif is installed, or 'no' to disable]), + [libgif_prefix="$withval"], [libgif_prefix="${prefix}"]) + + if test x$with_libgif != xno && test -z "$LIBGIF"; then + GIF_CFLAGS="-I${libgif_prefix}/include" + GIF_LIBS="-L${libgif_prefix}/lib" + save_cflags=$CFLAGS; CFLAGS=$GIF_CFLAGS + save_libs=$LIBS; LIBS=$GIF_LIBS + AC_CHECK_LIB(gif, DGifOpenFileName, + [AC_CHECK_HEADER(gif_lib.h, + GIF='gif'; LIBGIF='-lgif'; gif_ok=yes, + AC_MSG_WARN(*** GIF loader will not be built (giflibrary not found) ***))], + AC_MSG_WARN(*** GIF loader will not be built (giflibrary not found) ***)) + + AC_CHECK_LIB(ungif, DGifOpenFileName, + [AC_CHECK_HEADER(gif_lib.h, + GIF='ungif'; LIBGIF='-lungif'; gif_ok=yes, + AC_MSG_WARN(*** GIF loader will not be built (ungiflibrary not found) ***))], + AC_MSG_WARN(*** GIF loader will not be built (ungiflibrary not found) ***)) + CFLAGS=$save_cflags + LIBS=$save_libs + fi + +if test x$GIF != x; then + GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBGIF" + AC_DEFINE(HAVE_LIBGIF, 1, Define if gif support is available) +else + gif_ok="no (See http://sourceforge.net/projects/libgif)" +fi + +dnl Test for libpng + AC_MSG_CHECKING(for libpng14) + if $PKG_CONFIG --exists libpng14 ; then + AC_MSG_RESULT(yes) + PNG='png' + PNG_DEP_CFLAGS_PACKAGES=libpng14 + LIBPNG=`$PKG_CONFIG --libs libpng14` + else + AC_MSG_CHECKING(for libpng12) + if $PKG_CONFIG --exists libpng12 ; then + AC_MSG_RESULT(yes) + PNG='png' + PNG_DEP_CFLAGS_PACKAGES=libpng12 + LIBPNG=`$PKG_CONFIG --libs libpng12` + else + AC_MSG_RESULT(no) + AC_CHECK_LIB(png, png_read_info, + [AC_CHECK_HEADER(png.h, png_ok=yes, png_ok=no)], + AC_MSG_ERROR(*** libpng12 not found. See http://www.libpng.org/pub/png/libpng.html.), -lz -lm) + if test "$png_ok" = yes; then + AC_MSG_CHECKING([for png_structp in png.h]) + AC_TRY_COMPILE([#include ], + [png_structp pp; png_infop info; png_colorp cmap; png_create_read_struct;], + png_ok=yes, + png_ok=no) + AC_MSG_RESULT($png_ok) + if test "$png_ok" = yes; then + PNG='png'; LIBPNG='-lpng -lz' + else + AC_MSG_ERROR(*** libpng12 found, but it is too old. See http://www.libpng.org/pub/png/libpng.html.) + fi + else + AC_MSG_ERROR(*** libpng12 not found. See http://www.libpng.org/pub/png/libpng.html.) + fi + fi + fi + + +GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBPNG" +AC_DEFINE(HAVE_LIBPNG, 1, Define if png support is available. Always defined.) + +dnl Test for libexif +if test x$with_libexif != xno && test -z "$LIBEXIF"; then + PKG_CHECK_MODULES(LIBEXIF, libexif, [libexif_pkgconfig=yes], libexif_pkgconfig=no]) + if test x$libexif_pkgconfig = xyes ; then + GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $LIBEXIF_CFLAGS" + GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBEXIF_LIBS" + AC_DEFINE(HAVE_LIBEXIF, 1, Define if libexif is available.) + else + libexif_pkgconfig="No. Get it from http://libexif.sourceforge.net/" + fi +else + libexif_pkgconfig="No. You disabled it." +fi +AM_CONDITIONAL(HAVE_LIBEXIF, test x$libexif_pkgconfig = xyes) + +dnl +dnl Produce a diagnostic, to reduce support time +dnl +AC_TRY_COMPILE([#include ], + [],[x11_failed=false],[x11_failed=true]) +if $x11_failed; then + AC_ERROR("Failed to compile with X11/Xlib.h include. You must fix your compiler paths") +fi + +GDIPLUS_PKG_LIBS="$GDIPLUS_LIBS" +GDIPLUS_PKG_CFLAGS="$GDIPLUS_CFLAGS" + +AC_SUBST(GDIPLUS_LIBS) +AC_SUBST(GDIPLUS_CFLAGS) +AC_SUBST(GDIPLUS_PKG_LIBS) +AC_SUBST(GDIPLUS_PKG_CFLAGS) +AC_SUBST(GDIPLUS_PKG_REQ) +AC_SUBST(CAIRO_DIR) + +AC_OUTPUT([ +Makefile +libgdiplus.pc +libgdiplus0.spec +src/Makefile +tests/Makefile]) + +echo "---" +echo "Configuration summary" +echo "" +echo " * Installation prefix = $prefix" +echo " * Cairo = $cairo_info" +echo " * Text = $text_v" +echo " * EXIF tags = $libexif_pkgconfig" +echo " * Codecs supported:" +echo "" +echo " - TIFF: $tiff_ok" +echo " - JPEG: $jpeg_ok" +echo " - GIF: $gif_ok" +echo " - PNG: yes" +echo "" +echo " NOTE: if any of the above say 'no' you may install the" +echo " corresponding development packages for them, rerun" +echo " autogen.sh to include them in the build." +echo "" +echo "---" diff -Nru libgdiplus-4.0-2.10.9/configure.in libgdiplus-4.0-4.2.3+precise1/configure.in --- libgdiplus-4.0-2.10.9/configure.in 2012-01-31 17:27:38.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/configure.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,432 +0,0 @@ -AC_INIT(README) -AC_CANONICAL_SYSTEM -AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(libgdiplus,2.10.9) - -AM_MAINTAINER_MODE -AM_PROG_LIBTOOL - -AC_C_BIGENDIAN - -AC_PATH_PROG(PKG_CONFIG, pkg-config, no) -if test "x$PKG_CONFIG" = "xno"; then - AC_MSG_ERROR([You need to install pkg-config]) -fi -GLIB_REQUIRED_VERSION="2.2.3" -PKG_CHECK_MODULES(BASE_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION) - -GDIPLUS_LIBS="`pkg-config --libs glib-2.0 `" -GDIPLUS_CFLAGS="`pkg-config --cflags glib-2.0 `" - -# libgdiplus bundles its own cairo 1.6.4 but if the system cairo is more recent then we use it instead -CAIRO_BUNDLED_VERSION="1.6.4" -PKG_CHECK_MODULES(CAIRO, cairo > $CAIRO_BUNDLED_VERSION, [cairo_v=system], [cairo_v=internal]) - -# Optional use (experimental and unsupported) of Pango's text rendering on top of Cairo -AC_ARG_WITH(pango, [ --with-pango],[text_v=pango],[text_v=cairo]) - -if test $cairo_v = "internal"; then - # force subdirectories (cairo, specifically) to build their static - # libraries using position independent code. - ac_configure_args="$ac_configure_args --with-pic=yes" - - # disable the PNG, PDF and SVG surface backends of Cairo (unrequired for GDI+) -# cairo 1.6.4 bug - we can't disable PDF and keep PS backend - reported at https://bugs.freedesktop.org/show_bug.cgi?id=15532 -# ac_configure_args="$ac_configure_args --disable-png --disable-pdf --disable-svg" - ac_configure_args="$ac_configure_args --disable-png --disable-svg" -# gdiplus mac note; if we have quartz and ft fonts, quartz is the default and gdi+ assumes the latter everywhere, force it out -# of the internal build - ac_configure_args="$ac_configure_args --disable-quartz-font" - - AC_CONFIG_SUBDIRS([pixman cairo]) - CAIRO_DIR="pixman cairo" - CAIRO_LIBS='$(top_builddir)/cairo/src/libcairo.la' - CAIRO_CFLAGS='-I$(top_builddir)/pixman/pixman -I$(top_srcdir)/pixman/pixman -I$(top_builddir)/cairo/src -I$(top_srcdir)/cairo/src' - cairo_info+="$CAIRO_BUNDLED_VERSION (internal)" - AC_DEFINE(USE_INCLUDED_CAIRO,1,[Use Cairo/pixman bundled in libgdiplus]) - - if test $text_v = "pango"; then - AC_MSG_ERROR("Pango text rendering is only possible with --with-cairo=system") - fi -else - CAIRO_DIR="" - CAIRO_LIBS="`pkg-config --libs cairo `" - CAIRO_CFLAGS="`pkg-config --cflags cairo `" - cairo_info="`pkg-config --modversion cairo ` (system)" - GDIPLUS_PKG_REQ="cairo" - - if test $text_v = "pango"; then - PANGO_REQUIRED_VERSION="1.10" - PKG_CHECK_MODULES(PANGO, pango >= $PANGO_REQUIRED_VERSION) - PANGO_LIBS="`pkg-config --libs pangocairo `" - PANGO_CFLAGS="`pkg-config --cflags pangocairo `" - AC_DEFINE(USE_PANGO_RENDERING,1,[Use Pango to measure and draw text (INCOMPLETE and UNSUPPORTED)]) - GDIPLUS_PKG_REQ="$GDIPLUS_PKG_REQ pangocairo-1.0" - fi -fi - -GDIPLUS_LIBS="$GDIPLUS_LIBS $CAIRO_LIBS $PANGO_LIBS" -GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $CAIRO_CFLAGS $PANGO_CFLAGS" - -# Fall back to using fontconfig/freetype-config if their .pc is not found -PKG_CHECK_MODULES(FONTCONFIG, fontconfig, - [fontconfig_pkgconfig=yes], [fontconfig_pkgconfig=no]) -if test "x$FONTCONFIG" = "xno"; then - AC_PATH_PROG(FONTCONFIG_CONFIG, fontconfig-config, no) - if test "x$FONTCONFIG_CONFIG" = "xyes"; then - FONTCONFIG_CFLAGS="`fontconfig-config --cflags`" - FONTCONFIG_LIBS="`fontconfig-config --libs`" - fi -fi -AC_CHECK_LIB(fontconfig, FcInit) -AC_CHECK_FUNCS(FcFini) - -PKG_CHECK_MODULES(FREETYPE2, freetype2, - [freetype2_pkgconfig=yes], freetype2_pkgconfig=no]) -if test "x$FREETYPE2" = "xno"; then - AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) - if test "x$FREETYPE_CONFIG" = "xyes"; then - FREETYPE2_CFLAGS="`freetype-config --cflags`" - FREETYPE2_LIBS="`freetype-config --libs`" - fi -fi - -GDIPLUS_LIBS="$GDIPLUS_LIBS $FONTCONFIG_LIBS $FREETYPE2_LIBS" -GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $FONTCONFIG_CFLAGS $FREETYPE2_CFLAGS" - -AC_CHECK_HEADERS(byteswap.h) - -AC_MSG_CHECKING([host threading settings]) -case "$host" in - *-*-mingw*|*-*-cygwin*) - AC_DEFINE_UNQUOTED(CYGWIN,1,[Win32]) - AC_CHECK_LIB(intl, gettext) - ;; - - *-*-*netbsd*) - AC_DEFINE_UNQUOTED(BSDOS,1,[NetBSD]) - ;; - - *-*-*freebsd*) - AC_DEFINE_UNQUOTED(BSDOS,1,[FreeBSD]) - CFLAGS="-D_THREAD_SAFE $CFLAGS" - ;; - - *-*-*openbsd*) - AC_DEFINE_UNQUOTED(BSDOS,1,[OpenBSD]) - CFLAGS="$CFLAGS" - LIBS="$LIBS" - ;; - - *-*-linux*) - AC_DEFINE_UNQUOTED(LINUX,1,[Linux]) - AC_CHECK_LIB(pthread, pthread_create) - ;; - - *-*-solaris*) - AC_DEFINE_UNQUOTED(SOLARIS,1,[Solaris]) - AC_DEFINE_UNQUOTED(_REENTRANT,1,[For libc reentrancy]) - CFLAGS="-pthreads $CFLAGS" - ;; - - *-*-darwin*) - AC_DEFINE_UNQUOTED(OSX,1,[OS X]) - CFLAGS="-no-cpp-precomp $CFLAGS" - LDFLAGS="-flat_namespace -undefined suppress $LDFLAGS" - no_x=yes - ;; - - *) - AC_MSG_RESULT(Unrecognized host $host) - AC_DEFINE_UNQUOTED(OTHEROS,1,[Unknown]) - ;; -esac - -# Add xrender here so that we don't fail to find glib if we won't have xrender.pc -if test "x$no_x" != "xyes"; then - GDIPLUS_LIBS="$GDIPLUS_LIBS `pkg-config --libs xrender `" - GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS `pkg-config --cflags xrender `" -fi - -# Apparently for BSD special handling needs to happen -# See http://archives/neohapsis.com/archives/openbsd/2001-11/2142.html -# by Miod Vallat -AC_CACHE_CHECK( - [if compiler recognizes -pthread], - myapp_cv_gcc_pthread, - ac_save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -pthread" - AC_LANG_SAVE - AC_LANG_C - AC_TRY_LINK([#include ], - [void *p = pthread_create;], - myapp_cv_gcc_pthread=yes, - myapp_cv_gcc_pthread=no) - AC_LANG_RESTORE - CFLAGS=$ac_save_CFLAGS -) -if test $myapp_cv_gcc_pthread = yes -then - myapp_threads="" - CFLAGS="$CFLAGS -pthread" -else - AC_CHECK_LIB(pthread,pthread_create,myapp_threads=-lpthread, - [AC_CHECK_LIB(c_r,pthread_create,myapp_threads=-lc_r)]) -fi - - -# sigsetjmp is a macro on some platforms, so can't use AC_CHECK_FUNCS -AC_MSG_CHECKING(for sigsetjmp) -AC_TRY_LINK([#include ], [ -sigjmp_buf env; -sigsetjmp(env, 0); -], gdip_ok=yes, gdip_ok=no) -AC_MSG_RESULT($gdip_ok) -if test "$gdip_ok" = "yes"; then - AC_DEFINE(HAVE_SIGSETJMP, 1, sigsetjmp is available) -fi - - -# when possible hide stuff we don't want to export -AC_MSG_CHECKING(for visibility __attribute__) -AC_TRY_COMPILE([], [ - void __attribute__ ((visibility ("hidden"))) doit (void) {} - void main () { doit (); } -], [ - have_visibility_hidden=yes - AC_MSG_RESULT(yes) -], [ - have_visibility_hidden=no - AC_MSG_RESULT(no) -]) - -case "$host" in - i*86-*-*) - case $host_os in - solaris*) - # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. - have_visibility_hidden=no - esac - ;; -esac - -if test "x$have_visibility_hidden" = "xyes"; then - AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute]) -fi - - -AC_ARG_WITH(libexif, - [AC_HELP_STRING([--without-libexif], [disable EXIF support])]) - -dnl Test for libjpeg (this needs to be checked before libtiff, since libtiff depends on libjpeg) -AC_ARG_WITH([libjpeg], - AS_HELP_STRING([--with-libjpeg=PREFIX], - [Prefix where libjpeg is installed, or 'no' to disable]), - [libjpeg_prefix="$withval"], [libjpeg_prefix="${prefix}"]) - - if test x$with_libjpeg != xno && test -z "$LIBJPEG"; then - JPEG_CFLAGS="-I${libjpeg_prefix}/include" - JPEG_LIBS="-L${libjpeg_prefix}/lib" - save_cflags=$CFLAGS; CFLAGS=$JPEG_CFLAGS - save_libs=$LIBS; LIBS=$JPEG_LIBS - AC_CHECK_LIB(jpeg, jpeg_destroy_decompress, - jpeg_ok=yes, - jpeg_ok=no - AC_MSG_WARN(*** JPEG loader will not be built (JPEG library not found) ***)) - if test "$jpeg_ok" = yes; then - AC_MSG_CHECKING([for jpeglib.h]) - AC_TRY_CPP( -[#include -#undef PACKAGE -#undef VERSION -#undef HAVE_STDLIB_H -#include ], - jpeg_ok=yes, - jpeg_ok=no) - AC_MSG_RESULT($jpeg_ok) - if test "$jpeg_ok" = yes; then - JPEG='jpeg'; LIBJPEG='-L${libjpeg_prefix}/lib -ljpeg' - else - AC_MSG_WARN(*** JPEG loader will not be built (JPEG header file not found) ***) - fi - fi - CFLAGS=$save_cflags - LIBS=$save_libs - fi - -if test x$JPEG != x; then - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBJPEG" - AC_DEFINE(HAVE_LIBJPEG, 1, Define if jpeg support is available) -else - jpeg_ok="no (Get it from http://freshmeat.net/projects/libjpeg)" -fi - -dnl Test for libtiff -AC_ARG_WITH([libtiff], - AS_HELP_STRING([--with-libtiff=PREFIX], - [Prefix where libtiff is installed, or 'no' to disable]), - [libtiff_prefix="$withval"], [libtiff_prefix="${prefix}"]) - - if test x$with_libtiff != xno && test -z "$LIBTIFF"; then - TIFF_CFLAGS="-I${libjpeg_prefix}/include -I${libtiff_prefix}/include" - TIFF_LIBS="-L${libjpeg_prefix}/lib -L${libtiff_prefix}/lib" - save_cflags=$CFLAGS; CFLAGS=$TIFF_CFLAGS - save_libs=$LIBS; LIBS=$TIFF_LIBS - AC_CHECK_LIB(tiff, TIFFReadScanline, - [AC_CHECK_HEADER(tiffio.h, - TIFF='tiff'; LIBTIFF='-ltiff'; tiff_ok=yes, - AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))], - [AC_CHECK_LIB(tiff, TIFFWriteScanline, - [AC_CHECK_HEADER(tiffio.h, - TIFF='tiff'; LIBTIFF='-ltiff -ljpeg -lz'; tiff_ok=yes, - AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))], - [AC_CHECK_LIB(tiff34, TIFFFlushData, - [AC_CHECK_HEADER(tiffio.h, - TIFF='tiff'; LIBTIFF='-ltiff34 -ljpeg -lz'; tiff_ok=yes, - AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))], - AC_MSG_WARN(*** TIFF plug-in will not be built (TIFF library not found) ***), -lz -lm)], -ljpeg -lz -lm)], -lm) - CFLAGS=$save_cflags - LIBS=$save_libs - fi - -if test x$TIFF != x; then - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBTIFF" - AC_DEFINE(HAVE_LIBTIFF, 1, Define if tiff support is available) -else - tiff_ok="no (Get it from http://www.libtiff.org/)" -fi - -dnl Test for libgif or libungif -AC_ARG_WITH([libgif], - AS_HELP_STRING([--with-libgif=PREFIX], - [Prefix where libgif is installed, or 'no' to disable]), - [libgif_prefix="$withval"], [libgif_prefix="${prefix}"]) - - if test x$with_libgif != xno && test -z "$LIBGIF"; then - GIF_CFLAGS="-I${libgif_prefix}/include" - GIF_LIBS="-L${libgif_prefix}/lib" - save_cflags=$CFLAGS; CFLAGS=$GIF_CFLAGS - save_libs=$LIBS; LIBS=$GIF_LIBS - AC_CHECK_LIB(gif, DGifOpenFileName, - [AC_CHECK_HEADER(gif_lib.h, - GIF='gif'; LIBGIF='-lgif'; gif_ok=yes, - AC_MSG_WARN(*** GIF loader will not be built (giflibrary not found) ***))], - AC_MSG_WARN(*** GIF loader will not be built (giflibrary not found) ***)) - - AC_CHECK_LIB(ungif, DGifOpenFileName, - [AC_CHECK_HEADER(gif_lib.h, - GIF='ungif'; LIBGIF='-lungif'; gif_ok=yes, - AC_MSG_WARN(*** GIF loader will not be built (ungiflibrary not found) ***))], - AC_MSG_WARN(*** GIF loader will not be built (ungiflibrary not found) ***)) - CFLAGS=$save_cflags - LIBS=$save_libs - fi - -if test x$GIF != x; then - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBGIF" - AC_DEFINE(HAVE_LIBGIF, 1, Define if gif support is available) -else - gif_ok="no (See http://sourceforge.net/projects/libgif)" -fi - -dnl Test for libpng - AC_MSG_CHECKING(for libpng14) - if $PKG_CONFIG --exists libpng14 ; then - AC_MSG_RESULT(yes) - PNG='png' - PNG_DEP_CFLAGS_PACKAGES=libpng14 - LIBPNG=`$PKG_CONFIG --libs libpng14` - else - AC_MSG_CHECKING(for libpng12) - if $PKG_CONFIG --exists libpng12 ; then - AC_MSG_RESULT(yes) - PNG='png' - PNG_DEP_CFLAGS_PACKAGES=libpng12 - LIBPNG=`$PKG_CONFIG --libs libpng12` - else - AC_MSG_RESULT(no) - AC_CHECK_LIB(png, png_read_info, - [AC_CHECK_HEADER(png.h, png_ok=yes, png_ok=no)], - AC_MSG_ERROR(*** libpng12 not found. See http://www.libpng.org/pub/png/libpng.html.), -lz -lm) - if test "$png_ok" = yes; then - AC_MSG_CHECKING([for png_structp in png.h]) - AC_TRY_COMPILE([#include ], - [png_structp pp; png_infop info; png_colorp cmap; png_create_read_struct;], - png_ok=yes, - png_ok=no) - AC_MSG_RESULT($png_ok) - if test "$png_ok" = yes; then - PNG='png'; LIBPNG='-lpng -lz' - else - AC_MSG_ERROR(*** libpng12 found, but it is too old. See http://www.libpng.org/pub/png/libpng.html.) - fi - else - AC_MSG_ERROR(*** libpng12 not found. See http://www.libpng.org/pub/png/libpng.html.) - fi - fi - fi - - -GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBPNG" -AC_DEFINE(HAVE_LIBPNG, 1, Define if png support is available. Always defined.) - -dnl Test for libexif -if test x$with_libexif != xno && test -z "$LIBEXIF"; then - PKG_CHECK_MODULES(LIBEXIF, libexif, [libexif_pkgconfig=yes], libexif_pkgconfig=no]) - if test x$libexif_pkgconfig = xyes ; then - GDIPLUS_CFLAGS="$GDIPLUS_CFLAGS $LIBEXIF_CFLAGS" - GDIPLUS_LIBS="$GDIPLUS_LIBS $LIBEXIF_LIBS" - AC_DEFINE(HAVE_LIBEXIF, 1, Define if libexif is available.) - else - libexif_pkgconfig="No. Get it from http://libexif.sourceforge.net/" - fi -else - libexif_pkgconfig="No. You disabled it." -fi -AM_CONDITIONAL(HAVE_LIBEXIF, test x$libexif_pkgconfig = xyes) - -dnl -dnl Produce a diagnostic, to reduce support time -dnl -AC_TRY_COMPILE([#include ], - [],[x11_failed=false],[x11_failed=true]) -if $x11_failed; then - AC_ERROR("Failed to compile with X11/Xlib.h include. You must fix your compiler paths") -fi - -GDIPLUS_PKG_LIBS="$GDIPLUS_LIBS" -GDIPLUS_PKG_CFLAGS="$GDIPLUS_CFLAGS" - -AC_SUBST(GDIPLUS_LIBS) -AC_SUBST(GDIPLUS_CFLAGS) -AC_SUBST(GDIPLUS_PKG_LIBS) -AC_SUBST(GDIPLUS_PKG_CFLAGS) -AC_SUBST(GDIPLUS_PKG_REQ) -AC_SUBST(CAIRO_DIR) - -AC_OUTPUT([ -Makefile -libgdiplus.pc -libgdiplus0.spec -src/Makefile -tests/Makefile]) - -echo "---" -echo "Configuration summary" -echo "" -echo " * Installation prefix = $prefix" -echo " * Cairo = $cairo_info" -echo " * Text = $text_v" -echo " * EXIF tags = $libexif_pkgconfig" -echo " * Codecs supported:" -echo "" -echo " - TIFF: $tiff_ok" -echo " - JPEG: $jpeg_ok" -echo " - GIF: $gif_ok" -echo " - PNG: yes" -echo "" -echo " NOTE: if any of the above say 'no' you may install the" -echo " corresponding development packages for them, rerun" -echo " autogen.sh to include them in the build." -echo "" -echo "---" diff -Nru libgdiplus-4.0-2.10.9/debian/changelog libgdiplus-4.0-4.2.3+precise1/debian/changelog --- libgdiplus-4.0-2.10.9/debian/changelog 2014-04-23 19:31:08.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/changelog 2016-04-15 10:11:14.000000000 +0000 @@ -1,8 +1,26 @@ -libgdiplus-4.0 (2.10.9-1ubuntu1) precise; urgency=low +libgdiplus-4.0 (4.2.3+precise1) precise; urgency=medium - * Remove obsolete dependency on libtiff4 + * New upstream release 4.2.3 - -- Eberhard Beilharz Wed, 23 Apr 2014 21:30:41 +0200 + -- Eberhard Beilharz Fri, 15 Apr 2016 12:11:13 +0200 + +libgdiplus-4.0 (4.2.2) trusty; urgency=medium + + * New upstream release 4.2.2 + + -- Eberhard Beilharz Fri, 15 Apr 2016 11:55:25 +0200 + +libgdiplus-4.0 (4.2.1) trusty; urgency=medium + + * New upstream release 4.2.1 + + -- Eberhard Beilharz Fri, 15 Apr 2016 11:15:20 +0200 + +libgdiplus-4.0 (4.2) trusty; urgency=medium + + * New upstream release 4.2 + + -- Eberhard Beilharz Fri, 15 Apr 2016 11:13:31 +0200 libgdiplus-4.0 (2.10.9-1) precise; urgency=low diff -Nru libgdiplus-4.0-2.10.9/debian/control libgdiplus-4.0-4.2.3+precise1/debian/control --- libgdiplus-4.0-2.10.9/debian/control 2014-04-23 19:32:38.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/control 2016-04-15 10:11:13.000000000 +0000 @@ -15,11 +15,11 @@ autoconf, automake, dh-autoreconf, - python, + python, pkg-config, git-core, apache2, - apache2-threaded-dev, + apache2-dev, gettext, libpango1.0-dev, libatk1.0-dev, @@ -33,9 +33,9 @@ Package: libgdiplus-4.0 Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, +Depends: ${shlibs:Depends}, ${misc:Depends}, Replaces: libgdiplus-2.10 Description: interface library for System.Drawing of Mono This package contains a GDI+ API compatible implementation - needed by the System.Drawing library of Mono. + needed by the System.Drawing library of Mono. diff -Nru libgdiplus-4.0-2.10.9/debian/patches/debian-changes-2.10-1 libgdiplus-4.0-4.2.3+precise1/debian/patches/debian-changes-2.10-1 --- libgdiplus-4.0-2.10.9/debian/patches/debian-changes-2.10-1 2013-08-21 08:24:05.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/patches/debian-changes-2.10-1 1970-01-01 00:00:00.000000000 +0000 @@ -1,34474 +0,0 @@ -Description: Upstream changes introduced in version 2.10-1 - This patch has been created by dpkg-source during the package build. - Here's the last changelog entry, hopefully it gives details on why - those changes were made: - . - libgdiplus-2.10 (2.10-1) natty; urgency=low - . - * mono 2.10 release - . - The person named in the Author field signed this changelog entry. -Author: Eberhard Beilharz - ---- -The information above should follow the Patch Tagging Guidelines, please -checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here -are templates for supplementary fields that you might want to add: - -Origin: , -Bug: -Bug-Debian: http://bugs.debian.org/ -Bug-Ubuntu: https://launchpad.net/bugs/ -Forwarded: -Reviewed-By: -Last-Update: - ---- /dev/null -+++ libgdiplus-2.10-2.10/doltcompile -@@ -0,0 +1,40 @@ -+#!/bin/bash -+args=("$@") -+for ((arg=0; arg<${#args[@]}; arg++)) ; do -+ if test x"${args[$arg]}" = x-o ; then -+ objarg=$((arg+1)) -+ break -+ fi -+done -+if test x$objarg = x ; then -+ echo 'Error: no -o on compiler command line' 1>&2 -+ exit 1 -+fi -+lo="${args[$objarg]}" -+obj="${lo%.lo}" -+if test x"$lo" = x"$obj" ; then -+ echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2 -+ exit 1 -+fi -+objbase="${obj##*/}" -+libobjdir="${obj%$objbase}.libs" -+if test ! -d "$libobjdir" ; then -+ mkdir_out="$(mkdir "$libobjdir" 2>&1)" -+ mkdir_ret=$? -+ if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then -+ echo "$mkdir_out" 1>&2 -+ exit $mkdir_ret -+ fi -+fi -+pic_object="$libobjdir/$objbase.o" -+args[$objarg]="$pic_object" -+"${args[@]}" -fPIC -DPIC || exit $? -+non_pic_object="$obj.o" -+args[$objarg]="$non_pic_object" -+"${args[@]}" >/dev/null 2>&1 || exit $? -+{ -+echo "# $lo - a libtool object file" -+echo "# Generated by doltcompile, not libtool" -+echo "pic_object='.libs/${objbase}.o'" -+echo "non_pic_object='${objbase}.o'" -+} > "$lo" ---- /dev/null -+++ libgdiplus-2.10-2.10/doltlibtool -@@ -0,0 +1,19 @@ -+#!/bin/bash -+top_builddir_slash="${0%%doltlibtool}" -+: ${top_builddir_slash:=./} -+args=() -+modeok=false -+tagok=false -+for arg in "$@"; do -+ case "$arg" in -+ --mode=compile) modeok=true ;; -+ --tag=CC|--tag=CXX) tagok=true ;; -+ --quiet) ;; -+ *) args[${#args[@]}]="$arg" ;; -+ esac -+done -+if $modeok && $tagok ; then -+ . ${top_builddir_slash}doltcompile "${args[@]}" -+else -+ exec ${top_builddir_slash}libtool "$@" -+fi ---- /dev/null -+++ libgdiplus-2.10-2.10/libgc/doltcompile -@@ -0,0 +1,40 @@ -+#!/bin/bash -+args=("$@") -+for ((arg=0; arg<${#args[@]}; arg++)) ; do -+ if test x"${args[$arg]}" = x-o ; then -+ objarg=$((arg+1)) -+ break -+ fi -+done -+if test x$objarg = x ; then -+ echo 'Error: no -o on compiler command line' 1>&2 -+ exit 1 -+fi -+lo="${args[$objarg]}" -+obj="${lo%.lo}" -+if test x"$lo" = x"$obj" ; then -+ echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2 -+ exit 1 -+fi -+objbase="${obj##*/}" -+libobjdir="${obj%$objbase}.libs" -+if test ! -d "$libobjdir" ; then -+ mkdir_out="$(mkdir "$libobjdir" 2>&1)" -+ mkdir_ret=$? -+ if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then -+ echo "$mkdir_out" 1>&2 -+ exit $mkdir_ret -+ fi -+fi -+pic_object="$libobjdir/$objbase.o" -+args[$objarg]="$pic_object" -+"${args[@]}" -fPIC -DPIC || exit $? -+non_pic_object="$obj.o" -+args[$objarg]="$non_pic_object" -+"${args[@]}" >/dev/null 2>&1 || exit $? -+{ -+echo "# $lo - a libtool object file" -+echo "# Generated by doltcompile, not libtool" -+echo "pic_object='.libs/${objbase}.o'" -+echo "non_pic_object='${objbase}.o'" -+} > "$lo" ---- /dev/null -+++ libgdiplus-2.10-2.10/libgc/doltlibtool -@@ -0,0 +1,19 @@ -+#!/bin/bash -+top_builddir_slash="${0%%doltlibtool}" -+: ${top_builddir_slash:=./} -+args=() -+modeok=false -+tagok=false -+for arg in "$@"; do -+ case "$arg" in -+ --mode=compile) modeok=true ;; -+ --tag=CC|--tag=CXX) tagok=true ;; -+ --quiet) ;; -+ *) args[${#args[@]}]="$arg" ;; -+ esac -+done -+if $modeok && $tagok ; then -+ . ${top_builddir_slash}doltcompile "${args[@]}" -+else -+ exec ${top_builddir_slash}libtool "$@" -+fi ---- /dev/null -+++ libgdiplus-2.10-2.10/scripts/peverify -@@ -0,0 +1,2 @@ -+#!/bin/sh -+exec /opt/mono-2.10/bin/pedump $MONO_OPTIONS --verify metadata,code "$@" ---- /dev/null -+++ libgdiplus-2.10-2.10/scripts/mcs -@@ -0,0 +1,2 @@ -+#!/bin/sh -+exec /opt/mono-2.10/bin/mono $MONO_OPTIONS /opt/mono-2.10/lib/mono/2.0/mcs.exe -lib:/opt/mono-2.10/lib/mono/2.0 -lib:/opt/mono-2.10/lib/mono/3.5 "$@" ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/config.make -@@ -0,0 +1,11 @@ -+prefix=/opt/mono-2.10 -+exec_prefix=${prefix} -+sysconfdir=/etc -+mono_libdir=${exec_prefix}/lib -+MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS) -+IL_FLAGS = /debug -+RUNTIME = /home/eberhard/Develop/mono-2.10/package/mono-2.10.5/runtime/mono-wrapper -+ILDISASM = /home/eberhard/Develop/mono-2.10/package/mono-2.10.5/runtime/monodis-wrapper -+INSTALL = /usr/bin/install -c -+MONO_VERSION = 2.10.5.0 -+ENABLE_AOT = 1 ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_standalone-runner-support.dll.makefrag -@@ -0,0 +1,28 @@ -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/AssemblyInfo.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/crc32.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/Header.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlAttribute.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlDocument.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlEntity.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlNode.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlNodeNavigator.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlWeb.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/MixedCodeDocument.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/ParseReader.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/tools.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/NunitWebTest.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/MainsoftWebTest/XmlComparer.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/mainsoft/NunitWeb/NunitWeb/Response.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/Helpers.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/ITestCase.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/ITestRunner.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/StandaloneTest.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/TestCallback.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/TestCaseAttribute.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/TestCaseFailureException.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/TestRunItem.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/TestRunner.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/TestWorkerRequest.cs -+./../../class/lib/net_4_0/standalone-runner-support.dll: Test/standalone-runner-support/SerializableDictionary.cs ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.Web.dll.sources -@@ -0,0 +1,1276 @@ -+Assembly/AssemblyInfo.cs -+../../build/common/Consts.cs -+../../build/common/Locale.cs -+../../build/common/MonoTODOAttribute.cs -+../corlib/System.Collections.Concurrent/SplitOrderedList.cs -+../Managed.Windows.Forms/System.Resources/ResXDataNode.cs -+../Managed.Windows.Forms/System.Resources/ResXFileRef.cs -+../Managed.Windows.Forms/System.Resources/ResXNullRef.cs -+../Managed.Windows.Forms/System.Resources/ResXResourceReader.cs -+../Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs -+../System.Design/System.Data.Design/TypedDataSetGenerator.cs -+../System.Web.Abstractions/System.Web/HttpApplicationStateBase.cs -+../System.Web.Abstractions/System.Web/HttpApplicationStateWrapper.cs -+../System.Web.Abstractions/System.Web/HttpBrowserCapabilitiesBase.cs -+../System.Web.Abstractions/System.Web/HttpBrowserCapabilitiesWrapper.cs -+../System.Web.Abstractions/System.Web/HttpCachePolicyBase.cs -+../System.Web.Abstractions/System.Web/HttpCachePolicyWrapper.cs -+../System.Web.Abstractions/System.Web/HttpContextBase.cs -+../System.Web.Abstractions/System.Web/HttpContextWrapper.cs -+../System.Web.Abstractions/System.Web/HttpFileCollectionBase.cs -+../System.Web.Abstractions/System.Web/HttpFileCollectionWrapper.cs -+../System.Web.Abstractions/System.Web/HttpPostedFileBase.cs -+../System.Web.Abstractions/System.Web/HttpPostedFileWrapper.cs -+../System.Web.Abstractions/System.Web/HttpRequestBase.cs -+../System.Web.Abstractions/System.Web/HttpRequestWrapper.cs -+../System.Web.Abstractions/System.Web/HttpResponseBase.cs -+../System.Web.Abstractions/System.Web/HttpResponseWrapper.cs -+../System.Web.Abstractions/System.Web/HttpServerUtilityBase.cs -+../System.Web.Abstractions/System.Web/HttpServerUtilityWrapper.cs -+../System.Web.Abstractions/System.Web/HttpSessionStateBase.cs -+../System.Web.Abstractions/System.Web/HttpSessionStateWrapper.cs -+../System.Web.Abstractions/System.Web/HttpStaticObjectsCollectionBase.cs -+../System.Web.Abstractions/System.Web/HttpStaticObjectsCollectionWrapper.cs -+System.Web/ApplicationShutdownReason.cs -+System.Web/BaseParamsCollection.cs -+System.Web/BeginEventHandler.cs -+System.Web/BrowserCapabilities.cs -+System.Web.Caching/AggregateCacheDependency.cs -+System.Web.Caching/Cache.cs -+System.Web.Caching/CacheDependency.cs -+System.Web.Caching/CachedRawResponse.cs -+System.Web.Caching/CachedVaryBy.cs -+System.Web.Caching/CacheItem.cs -+System.Web.Caching/CacheItemEnumerator.cs -+System.Web.Caching/CacheItemLRU.cs -+System.Web.Caching/CacheItemPriority.cs -+System.Web.Caching/CacheItemPriorityQueue.cs -+System.Web.Caching/CacheItemPriorityQueueDebug.cs -+System.Web.Caching/CacheItemRemovedCallback.cs -+System.Web.Caching/CacheItemRemovedReason.cs -+System.Web.Caching/CacheItemUpdateCallback.cs -+System.Web.Caching/CacheItemUpdateReason.cs -+System.Web.Caching/DatabaseNotEnabledForNotificationException.cs -+System.Web.Caching/FileResponseElement.cs -+System.Web.Caching/HeaderElement.cs -+System.Web.Caching/InMemoryOutputCacheProvider.cs -+System.Web.Caching/IOutputCacheEntry.cs -+System.Web.Caching/MemoryResponseElement.cs -+System.Web.Caching/OutputCache.cs -+System.Web.Caching/OutputCacheModule.cs -+System.Web.Caching/OutputCacheProviderCollection.cs -+System.Web.Caching/OutputCacheProvider.cs -+System.Web.Caching/ResponseElement.cs -+System.Web.Caching/SqlCacheDependencyAdmin.cs -+System.Web.Caching/SqlCacheDependency.cs -+System.Web.Caching/SubstitutionResponseElement.cs -+System.Web.Caching/TableNotEnabledForNotificationException.cs -+System.Web/CapabilitiesLoader.cs -+System.Web.Compilation/AppCodeCompiler.cs -+System.Web.Compilation/ApplicationFileBuildProvider.cs -+System.Web.Compilation/AppResourceFileInfo.cs -+System.Web.Compilation/AppResourceFilesCollection.cs -+System.Web.Compilation/AppResourcesAssemblyBuilder.cs -+System.Web.Compilation/AppResourcesCompiler.cs -+System.Web.Compilation/AppSettingsExpressionBuilder.cs -+System.Web.Compilation/AppWebReferencesCompiler.cs -+System.Web.Compilation/AspComponent.cs -+System.Web.Compilation/AspComponentFoundry.cs -+System.Web.Compilation/AspGenerator.cs -+System.Web.Compilation/AspParser.cs -+System.Web.Compilation/AspTokenizer.cs -+System.Web.Compilation/AssemblyBuilder.cs -+System.Web.Compilation/BaseCompiler.cs -+System.Web.Compilation/BuildDependencySet.cs -+System.Web.Compilation/BuildManagerCacheItem.cs -+System.Web.Compilation/BuildManager.cs -+System.Web.Compilation/BuildManagerDirectoryBuilder.cs -+System.Web.Compilation/BuildManagerHostUnloadEventArgs.cs -+System.Web.Compilation/BuildManagerHostUnloadEventHandler.cs -+System.Web.Compilation/BuildManagerRemoveEntryEventHandler.cs -+System.Web.Compilation/BuildProviderAppliesToAttribute.cs -+System.Web.Compilation/BuildProviderAppliesTo.cs -+System.Web.Compilation/BuildProvider.cs -+System.Web.Compilation/BuildProviderGroup.cs -+System.Web.Compilation/BuildProviderResultFlags.cs -+System.Web.Compilation/CachingCompiler.cs -+System.Web.Compilation/ClientBuildManagerCallback.cs -+System.Web.Compilation/ClientBuildManager.cs -+System.Web.Compilation/ClientBuildManagerParameter.cs -+System.Web.Compilation/CompilationException.cs -+System.Web.Compilation/CompilerType.cs -+System.Web.Compilation/ConnectionStringsExpressionBuilder.cs -+System.Web.Compilation/DefaultResourceProvider.cs -+System.Web.Compilation/DefaultResourceProviderFactory.cs -+System.Web.Compilation/DesignTimeResourceProviderFactoryAttribute.cs -+System.Web.Compilation/Directive.cs -+System.Web.Compilation/ExpressionBuilderContext.cs -+System.Web.Compilation/ExpressionBuilder.cs -+System.Web.Compilation/ExpressionEditorAttribute.cs -+System.Web.Compilation/ExpressionPrefixAttribute.cs -+System.Web.Compilation/FolderLevelBuildProviderAppliesToAttribute.cs -+System.Web.Compilation/FolderLevelBuildProviderAppliesTo.cs -+System.Web.Compilation/ForceCopyBuildProvider.cs -+System.Web.Compilation/GenericBuildProvider.cs -+System.Web.Compilation/GlobalAsaxCompiler.cs -+System.Web.Compilation/IAssemblyPostProcessor.cs -+System.Web.Compilation/IgnoreFileBuildProvider.cs -+System.Web.Compilation/IImplicitResourceProvider.cs -+System.Web.Compilation/ILocation.cs -+System.Web.Compilation/ImplicitResourceKey.cs -+System.Web.Compilation/IResourceProvider.cs -+System.Web.Compilation/LinePragmaCodeInfo.cs -+System.Web.Compilation/Location.cs -+System.Web.Compilation/MasterPageBuildProvider.cs -+System.Web.Compilation/MasterPageCompiler.cs -+System.Web.Compilation/PageBuildProvider.cs -+System.Web.Compilation/PageCompiler.cs -+System.Web.Compilation/PageThemeCompiler.cs -+System.Web.Compilation/ParseException.cs -+System.Web.Compilation/PrecompilationFlags.cs -+System.Web.Compilation/PreservationFile.cs -+System.Web.Compilation/ResourceExpressionBuilder.cs -+System.Web.Compilation/ResourceExpressionFields.cs -+System.Web.Compilation/ResourceProviderFactory.cs -+System.Web.Compilation/RouteUrlExpressionBuilder.cs -+System.Web.Compilation/RouteValueExpressionBuilder.cs -+System.Web.Compilation/SimpleBuildProvider.cs -+System.Web.Compilation/TagAttributes.cs -+System.Web.Compilation/TagType.cs -+System.Web.Compilation/TemplateBuildProvider.cs -+System.Web.Compilation/TemplateControlCompiler.cs -+System.Web.Compilation/ThemeDirectoryBuildProvider.cs -+System.Web.Compilation/ThemeDirectoryCompiler.cs -+System.Web.Compilation/UserControlBuildProvider.cs -+System.Web.Compilation/UserControlCompiler.cs -+System.Web.Compilation/WebHandlerBuildProvider.cs -+System.Web.Compilation/WebServiceBuildProvider.cs -+System.Web.Compilation/WebServiceCompiler.cs -+System.Web.Compilation/WsdlBuildProvider.cs -+System.Web.Compilation/XsdBuildProvider.cs -+System.Web.Configuration_2.0/AdapterDictionary.cs -+System.Web.Configuration_2.0/AnonymousIdentificationSection.cs -+System.Web.Configuration_2.0/ApplicationSettingsConfigurationFileMap.cs -+System.Web.Configuration_2.0/AssemblyCollection.cs -+System.Web.Configuration_2.0/AssemblyInfo.cs -+System.Web.Configuration_2.0/AuthenticationMode.cs -+System.Web.Configuration_2.0/AuthenticationSection.cs -+System.Web.Configuration_2.0/AuthorizationRuleAction.cs -+System.Web.Configuration_2.0/AuthorizationRuleCollection.cs -+System.Web.Configuration_2.0/AuthorizationRule.cs -+System.Web.Configuration_2.0/AuthorizationSection.cs -+System.Web.Configuration_2.0/BufferModesCollection.cs -+System.Web.Configuration_2.0/BufferModeSettings.cs -+System.Web.Configuration_2.0/BuildProviderCollection.cs -+System.Web.Configuration_2.0/BuildProvider.cs -+System.Web.Configuration_2.0/CacheSection.cs -+System.Web.Configuration_2.0/CapabilitiesBuild.cs -+System.Web.Configuration_2.0/CapabilitiesResult.cs -+System.Web.Configuration_2.0/ClientTargetCollection.cs -+System.Web.Configuration_2.0/ClientTarget.cs -+System.Web.Configuration_2.0/ClientTargetSection.cs -+System.Web.Configuration_2.0/CodeSubDirectoriesCollection.cs -+System.Web.Configuration_2.0/CodeSubDirectory.cs -+System.Web.Configuration_2.0/CompilationSection.cs -+System.Web.Configuration_2.0/CompilerCollection.cs -+System.Web.Configuration_2.0/Compiler.cs -+System.Web.Configuration_2.0/CustomErrorCollection.cs -+System.Web.Configuration_2.0/CustomError.cs -+System.Web.Configuration_2.0/CustomErrorsMode.cs -+System.Web.Configuration_2.0/CustomErrorsRedirectMode.cs -+System.Web.Configuration_2.0/CustomErrorsSection.cs -+System.Web.Configuration_2.0/DeploymentSection.cs -+System.Web.Configuration_2.0/EventMappingSettingsCollection.cs -+System.Web.Configuration_2.0/EventMappingSettings.cs -+System.Web.Configuration_2.0/ExpressionBuilderCollection.cs -+System.Web.Configuration_2.0/ExpressionBuilder.cs -+System.Web.Configuration_2.0/FormsAuthenticationConfiguration.cs -+System.Web.Configuration_2.0/FormsAuthenticationCredentials.cs -+System.Web.Configuration_2.0/FormsAuthenticationUserCollection.cs -+System.Web.Configuration_2.0/FormsAuthenticationUser.cs -+System.Web.Configuration_2.0/FormsAuthPasswordFormat.cs -+System.Web.Configuration_2.0/FormsProtectionEnum.cs -+System.Web.Configuration_2.0/GlobalizationSection.cs -+System.Web.Configuration_2.0/HandlersUtil.cs -+System.Web.Configuration_2.0/HealthMonitoringSection.cs -+System.Web.Configuration_2.0/HostingEnvironmentSection.cs -+System.Web.Configuration_2.0/HttpCapabilitiesBase.cs -+System.Web.Configuration_2.0/HttpConfigurationContext.cs -+System.Web.Configuration_2.0/HttpConfigurationSystem.cs -+System.Web.Configuration_2.0/HttpCookiesSection.cs -+System.Web.Configuration_2.0/HttpHandlerActionCollection.cs -+System.Web.Configuration_2.0/HttpHandlerAction.cs -+System.Web.Configuration_2.0/HttpHandlersSection.cs -+System.Web.Configuration_2.0/HttpModuleActionCollection.cs -+System.Web.Configuration_2.0/HttpModuleAction.cs -+System.Web.Configuration_2.0/HttpModulesSection.cs -+System.Web.Configuration_2.0/HttpRuntimeSection.cs -+System.Web.Configuration_2.0/ICapabilitiesProcess.cs -+System.Web.Configuration_2.0/IConfigMapPath.cs -+System.Web.Configuration_2.0/IConfigMapPathFactory.cs -+System.Web.Configuration_2.0/IdentitySection.cs -+System.Web.Configuration_2.0/IRemoteWebConfigurationHostServer.cs -+System.Web.Configuration_2.0/LowerCaseStringConverter.cs -+System.Web.Configuration_2.0/MachineKeyCompatibilityMode.cs -+System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs -+System.Web.Configuration_2.0/MachineKeySection.cs -+System.Web.Configuration_2.0/MachineKeyValidationConverter.cs -+System.Web.Configuration_2.0/MachineKeyValidation.cs -+System.Web.Configuration_2.0/MembershipSection.cs -+System.Web.Configuration_2.0/MonoSettingsSection.cs -+System.Web.Configuration_2.0/NamespaceCollection.cs -+System.Web.Configuration_2.0/NamespaceInfo.cs -+System.Web.Configuration_2.0/nBrowser/Build.cs -+System.Web.Configuration_2.0/nBrowser/Exception.cs -+System.Web.Configuration_2.0/nBrowser/File.cs -+System.Web.Configuration_2.0/nBrowser/Identification.cs -+System.Web.Configuration_2.0/nBrowser/Node.cs -+System.Web.Configuration_2.0/nBrowser/NodeTypes.cs -+System.Web.Configuration_2.0/nBrowser/Result.cs -+System.Web.Configuration_2.0/NullableStringValidator.cs -+System.Web.Configuration_2.0/OutputCacheProfileCollection.cs -+System.Web.Configuration_2.0/OutputCacheProfile.cs -+System.Web.Configuration_2.0/OutputCacheSection.cs -+System.Web.Configuration_2.0/OutputCacheSettingsSection.cs -+System.Web.Configuration_2.0/PagesEnableSessionState.cs -+System.Web.Configuration_2.0/PagesSection.cs -+System.Web.Configuration_2.0/PassportAuthentication.cs -+System.Web.Configuration_2.0/PositiveTimeSpanValidator.cs -+System.Web.Configuration_2.0/ProcessModelComAuthenticationLevel.cs -+System.Web.Configuration_2.0/ProcessModelComImpersonationLevel.cs -+System.Web.Configuration_2.0/ProcessModelLogLevel.cs -+System.Web.Configuration_2.0/ProcessModelSection.cs -+System.Web.Configuration_2.0/ProfileGroupSettingsCollection.cs -+System.Web.Configuration_2.0/ProfileGroupSettings.cs -+System.Web.Configuration_2.0/ProfilePropertyNameValidator.cs -+System.Web.Configuration_2.0/ProfilePropertySettingsCollection.cs -+System.Web.Configuration_2.0/ProfilePropertySettings.cs -+System.Web.Configuration_2.0/ProfileSection.cs -+System.Web.Configuration_2.0/ProfileSettingsCollection.cs -+System.Web.Configuration_2.0/ProfileSettings.cs -+System.Web.Configuration_2.0/PropertyHelper.cs -+System.Web.Configuration_2.0/ProvidersHelper.cs -+System.Web.Configuration_2.0/RegexWorker.cs -+System.Web.Configuration_2.0/RoleManagerSection.cs -+System.Web.Configuration_2.0/RootProfilePropertySettingsCollection.cs -+System.Web.Configuration_2.0/RuleSettingsCollection.cs -+System.Web.Configuration_2.0/RuleSettings.cs -+System.Web.Configuration_2.0/SecurityPolicySection.cs -+System.Web.Configuration_2.0/SerializationMode.cs -+System.Web.Configuration_2.0/SessionPageStateSection.cs -+System.Web.Configuration_2.0/SessionStateSection.cs -+System.Web.Configuration_2.0/SiteMapSection.cs -+System.Web.Configuration_2.0/SqlCacheDependencyDatabaseCollection.cs -+System.Web.Configuration_2.0/SqlCacheDependencyDatabase.cs -+System.Web.Configuration_2.0/SqlCacheDependencySection.cs -+System.Web.Configuration_2.0/SystemWebCachingSectionGroup.cs -+System.Web.Configuration_2.0/SystemWebSectionGroup.cs -+System.Web.Configuration_2.0/TagMapCollection.cs -+System.Web.Configuration_2.0/TagMapInfo.cs -+System.Web.Configuration_2.0/TagPrefixCollection.cs -+System.Web.Configuration_2.0/TagPrefixInfo.cs -+System.Web.Configuration_2.0/TraceDisplayMode.cs -+System.Web.Configuration_2.0/TraceSection.cs -+System.Web.Configuration_2.0/TransformerInfoCollection.cs -+System.Web.Configuration_2.0/TransformerInfo.cs -+System.Web.Configuration_2.0/TrustLevelCollection.cs -+System.Web.Configuration_2.0/TrustLevel.cs -+System.Web.Configuration_2.0/TrustSection.cs -+System.Web.Configuration_2.0/UrlMappingCollection.cs -+System.Web.Configuration_2.0/UrlMapping.cs -+System.Web.Configuration_2.0/UrlMappingsSection.cs -+System.Web.Configuration_2.0/VersionConverter.cs -+System.Web.Configuration_2.0/VirtualDirectoryMappingCollection.cs -+System.Web.Configuration_2.0/VirtualDirectoryMapping.cs -+System.Web.Configuration_2.0/WebApplicationLevel.cs -+System.Web.Configuration_2.0/WebConfigurationFileMap.cs -+System.Web.Configuration_2.0/WebConfigurationHost.cs -+System.Web.Configuration_2.0/WebConfigurationManager.cs -+System.Web.Configuration_2.0/WebContext.cs -+System.Web.Configuration_2.0/WebControlsSection.cs -+System.Web.Configuration_2.0/WebPartsPersonalizationAuthorization.cs -+System.Web.Configuration_2.0/WebPartsPersonalization.cs -+System.Web.Configuration_2.0/WebPartsSection.cs -+System.Web.Configuration_2.0/XhtmlConformanceMode.cs -+System.Web.Configuration_2.0/XhtmlConformanceSection.cs -+System.Web.Configuration.Internal/IInternalConfigWebHost.cs -+System.Web/DefaultHttpHandler.cs -+System.Web/EndEventHandler.cs -+System.Web.Handlers/AssemblyResourceLoader.cs -+System.Web.Handlers/TraceHandler.cs -+System.Web/HeadersCollection.cs -+System.Web.Hosting/AppDomainFactory.cs -+System.Web.Hosting/ApplicationHost.cs -+System.Web.Hosting/ApplicationInfo.cs -+System.Web.Hosting/ApplicationManager.cs -+System.Web.Hosting/AppManagerAppDomainFactory.cs -+System.Web.Hosting/BareApplicationHost.cs -+System.Web.Hosting/DefaultVirtualDirectory.cs -+System.Web.Hosting/DefaultVirtualFile.cs -+System.Web.Hosting/DefaultVirtualPathProvider.cs -+System.Web.Hosting/HostingEnvironment.cs -+System.Web.Hosting/IAppDomainFactory.cs -+System.Web.Hosting/IApplicationHost.cs -+System.Web.Hosting/IAppManagerAppDomainFactory.cs -+System.Web.Hosting/IISAPIRuntime.cs -+System.Web.Hosting/IRegisteredObject.cs -+System.Web.Hosting/ISAPIRuntime.cs -+System.Web.Hosting/SimpleWorkerRequest.cs -+System.Web.Hosting/VirtualDirectory.cs -+System.Web.Hosting/VirtualFileBase.cs -+System.Web.Hosting/VirtualFile.cs -+System.Web.Hosting/VirtualPathProvider.cs -+System.Web/HtmlizedException.cs -+System.Web/HtmlString.cs -+System.Web/HttpApplication.cs -+System.Web/HttpApplicationFactory.cs -+System.Web/HttpApplicationState.cs -+System.Web/HttpBrowserCapabilities.cs -+System.Web/HttpCacheability.cs -+System.Web/HttpCachePolicy.cs -+System.Web/HttpCacheRevalidation.cs -+System.Web/HttpCacheValidateHandler.cs -+System.Web/HttpCacheVaryByContentEncodings.cs -+System.Web/HttpCacheVaryByHeaders.cs -+System.Web/HttpCacheVaryByParams.cs -+System.Web/HttpClientCertificate.cs -+System.Web/HttpCompileException.cs -+System.Web/HttpContext.cs -+System.Web/HttpCookieCollection.cs -+System.Web/HttpCookie.cs -+System.Web/HttpCookieMode.cs -+System.Web/HttpException.cs -+System.Web/HttpFileCollection.cs -+System.Web/HttpForbiddenHandler.cs -+System.Web/HttpHeaderCollection.cs -+System.Web/HttpMethodNotAllowedHandler.cs -+System.Web/HttpModuleCollection.cs -+System.Web/HttpNotFoundHandler.cs -+System.Web/HttpNotImplementedHandler.cs -+System.Web/HttpParamsCollection.cs -+System.Web/HttpParseException.cs -+System.Web/HttpPostedFile.cs -+System.Web/HttpRequest.cs -+System.Web/HttpRequestValidationException.cs -+System.Web/HttpResponse.cs -+System.Web/HttpResponseHeader.cs -+System.Web/HttpResponseStream.cs -+System.Web/HttpResponseSubstitutionCallback.cs -+System.Web/HttpRuntime.cs -+System.Web/HttpServerUtility.cs -+System.Web/HttpStaticObjectsCollection.cs -+System.Web/HttpUnhandledException.cs -+System.Web/HttpUtility.cs -+System.Web/HttpValidationStatus.cs -+System.Web/HttpWorkerRequest.cs -+System.Web/HttpWriter.cs -+System.Web/IHtmlString.cs -+System.Web/IHttpAsyncHandler.cs -+System.Web/IHttpHandler.cs -+System.Web/IHttpHandlerFactory.cs -+System.Web/IHttpMapPath.cs -+System.Web/IHttpModule.cs -+System.Web/IisTraceListener.cs -+System.Web/InputFilterStream.cs -+System.Web/IntPtrStream.cs -+System.Web/IPartitionResolver.cs -+System.Web.Mail/Base64AttachmentEncoder.cs -+System.Web.Mail/IAttachmentEncoder.cs -+System.Web.Mail/MailAddressCollection.cs -+System.Web.Mail/MailAddress.cs -+System.Web.Mail/MailAttachment.cs -+System.Web.Mail/MailEncoding.cs -+System.Web.Mail/MailFormat.cs -+System.Web.Mail/MailHeader.cs -+System.Web.Mail/MailMessage.cs -+System.Web.Mail/MailMessageWrapper.cs -+System.Web.Mail/MailPriority.cs -+System.Web.Mail/MailUtil.cs -+System.Web.Mail/RelatedBodyPart.cs -+System.Web.Mail/SmtpClient.cs -+System.Web.Mail/SmtpException.cs -+System.Web.Mail/SmtpMail.cs -+System.Web.Mail/SmtpResponse.cs -+System.Web.Mail/SmtpStream.cs -+System.Web.Mail/ToUUEncodingTransform.cs -+System.Web.Mail/UUAttachmentEncoder.cs -+System.Web.Management/EventNotificationType.cs -+System.Web.Management/IRegiisUtility.cs -+System.Web.Management/IWebEventCustomEvaluator.cs -+System.Web.Management/RuleFiringRecord.cs -+System.Web.Management/SessionStateType.cs -+System.Web.Management/SqlFeatures.cs -+System.Web.Management/WebApplicationInformation.cs -+System.Web.Management/WebBaseEvent.cs -+System.Web.Management/WebEventCodes.cs -+System.Web.Management/WebEventFormatter.cs -+System.Web/MimeTypes.cs -+System.Web/NoParamsInvoker.cs -+System.Web/OutputFilterStream.cs -+System.Web/ParserErrorCollection.cs -+System.Web/ParserError.cs -+System.Web/PreApplicationStartMethodAttribute.cs -+System.Web/ProcessInfo.cs -+System.Web/ProcessModelInfo.cs -+System.Web/ProcessShutdownReason.cs -+System.Web/ProcessStatus.cs -+System.Web.Profile/CustomProviderDataAttribute.cs -+System.Web.Profile/DefaultProfile.cs -+System.Web.Profile/ProfileAuthenticationOption.cs -+System.Web.Profile/ProfileAutoSaveEventArgs.cs -+System.Web.Profile/ProfileAutoSaveEventHandler.cs -+System.Web.Profile/ProfileBase.cs -+System.Web.Profile/ProfileEventArgs.cs -+System.Web.Profile/ProfileEventHandler.cs -+System.Web.Profile/ProfileGroupBase.cs -+System.Web.Profile/ProfileInfoCollection.cs -+System.Web.Profile/ProfileInfo.cs -+System.Web.Profile/ProfileManager.cs -+System.Web.Profile/ProfileMigrateEventArgs.cs -+System.Web.Profile/ProfileMigrateEventHandler.cs -+System.Web.Profile/ProfileModule.cs -+System.Web.Profile/ProfileParser.cs -+System.Web.Profile/ProfileProviderAttribute.cs -+System.Web.Profile/ProfileProviderCollection.cs -+System.Web.Profile/ProfileProvider.cs -+System.Web.Profile/SettingsAllowAnonymousAttribute.cs -+System.Web.Profile/SqliteProfileProvider.cs -+System.Web.Profile/SqlProfileProvider.cs -+System.Web.Properties/TranslationProperties.Designer.cs -+System.Web/QueueManager.cs -+System.Web/RequestNotification.cs -+System.Web/RequestNotificationStatus.cs -+System.Web.Routing/PageRouteHandler.cs -+../System.Web.Routing/System.Web.Routing/HttpMethodConstraint.cs -+../System.Web.Routing/System.Web.Routing/IRouteConstraint.cs -+../System.Web.Routing/System.Web.Routing/IRouteHandler.cs -+../System.Web.Routing/System.Web.Routing/PatternParser.cs -+../System.Web.Routing/System.Web.Routing/PatternToken.cs -+../System.Web.Routing/System.Web.Routing/PatternTokenType.cs -+../System.Web.Routing/System.Web.Routing/RequestContext.cs -+../System.Web.Routing/System.Web.Routing/RouteBase.cs -+../System.Web.Routing/System.Web.Routing/RouteCollection.cs -+../System.Web.Routing/System.Web.Routing/Route.cs -+../System.Web.Routing/System.Web.Routing/RouteData.cs -+../System.Web.Routing/System.Web.Routing/RouteDirection.cs -+../System.Web.Routing/System.Web.Routing/RouteTable.cs -+../System.Web.Routing/System.Web.Routing/RouteValueDictionary.cs -+../System.Web.Routing/System.Web.Routing/RouteValueDictionaryExtensions.cs -+../System.Web.Routing/System.Web.Routing/StopRoutingHandler.cs -+../System.Web.Routing/System.Web.Routing/UrlRoutingHandler.cs -+../System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs -+../System.Web.Routing/System.Web.Routing/VirtualPathData.cs -+System.Web.Security/ActiveDirectoryConnectionProtection.cs -+System.Web.Security/ActiveDirectoryMembershipProvider.cs -+System.Web.Security/AnonymousIdentificationEventArgs.cs -+System.Web.Security/AnonymousIdentificationEventHandler.cs -+System.Web.Security/AnonymousIdentificationModule.cs -+System.Web.Security/AspNetDBSchemaChecker.cs -+System.Web.Security/CookieProtection.cs -+System.Web.Security/DefaultAuthenticationEventArgs.cs -+System.Web.Security/DefaultAuthenticationEventHandler.cs -+System.Web.Security/DefaultAuthenticationModule.cs -+System.Web.Security/FileAuthorizationModule.cs -+System.Web.Security/FormsAuthentication.cs -+System.Web.Security/FormsAuthenticationEventArgs.cs -+System.Web.Security/FormsAuthenticationEventHandler.cs -+System.Web.Security/FormsAuthenticationModule.cs -+System.Web.Security/FormsAuthenticationTicket.cs -+System.Web.Security/FormsIdentity.cs -+System.Web.Security/MachineKey.cs -+System.Web.Security/MachineKeyProtection.cs -+System.Web.Security/Membership.cs -+System.Web.Security/MembershipHelper.cs -+System.Web.Security/PassportAuthenticationEventArgs.cs -+System.Web.Security/PassportAuthenticationEventHandler.cs -+System.Web.Security/PassportAuthenticationModule.cs -+System.Web.Security/PassportIdentity.cs -+System.Web.Security/RoleManagerEventArgs.cs -+System.Web.Security/RoleManagerEventHandler.cs -+System.Web.Security/RoleManagerModule.cs -+System.Web.Security/RolePrincipal.cs -+System.Web.Security/RoleProviderCollection.cs -+System.Web.Security/Roles.cs -+System.Web.Security/SqliteMembershipProvider.cs -+System.Web.Security/SqliteRoleProvider.cs -+System.Web.Security/SqlMembershipProvider.cs -+System.Web.Security/SqlRoleProvider.cs -+System.Web.Security/UrlAuthorizationModule.cs -+System.Web.Security/WindowsAuthenticationEventArgs.cs -+System.Web.Security/WindowsAuthenticationEventHandler.cs -+System.Web.Security/WindowsAuthenticationModule.cs -+System.Web/ServerVariablesCollection.cs -+System.Web.SessionState_2.0/HttpSessionStateContainer.cs -+System.Web.SessionState_2.0/HttpSessionState.cs -+System.Web.SessionState_2.0/IHttpSessionState.cs -+System.Web.SessionState_2.0/IReadOnlySessionState.cs -+System.Web.SessionState_2.0/IRequiresSessionState.cs -+System.Web.SessionState_2.0/ISessionIDManager.cs -+System.Web.SessionState_2.0/ISessionStateItemCollection.cs -+System.Web.SessionState_2.0/IStateRuntime.cs -+System.Web.SessionState_2.0/RemoteStateServer.cs -+System.Web.SessionState_2.0/SessionId.cs -+System.Web.SessionState_2.0/SessionIDManager.cs -+System.Web.SessionState_2.0/SessionInProcHandler.cs -+System.Web.SessionState_2.0/SessionSQLServerHandler.cs -+System.Web.SessionState_2.0/SessionStateActions.cs -+System.Web.SessionState_2.0/SessionStateBehavior.cs -+System.Web.SessionState_2.0/SessionStateItemCollection.cs -+System.Web.SessionState_2.0/SessionStateItemExpireCallback.cs -+System.Web.SessionState_2.0/SessionStateMode.cs -+System.Web.SessionState_2.0/SessionStateModule.cs -+System.Web.SessionState_2.0/SessionStateServerHandler.cs -+System.Web.SessionState_2.0/SessionStateStoreData.cs -+System.Web.SessionState_2.0/SessionStateStoreProviderBase.cs -+System.Web.SessionState_2.0/SessionStateUtility.cs -+System.Web.SessionState_2.0/StateRuntime.cs -+System.Web.SessionState_2.0/StateServerItem.cs -+System.Web/SiteMap.cs -+System.Web/SiteMapNodeCollection.cs -+System.Web/SiteMapNode.cs -+System.Web/SiteMapProviderCollection.cs -+System.Web/SiteMapProvider.cs -+System.Web/SiteMapResolveEventArgs.cs -+System.Web/StaticFileHandler.cs -+System.Web/StaticSiteMapProvider.cs -+System.Web/TempFileStream.cs -+System.Web/TraceContext.cs -+System.Web/TraceContextEventArgs.cs -+System.Web/TraceContextEventHandler.cs -+System.Web/TraceContextRecord.cs -+System.Web/TraceData.cs -+System.Web/TraceManager.cs -+System.Web/TraceMode.cs -+System.Web.UI.Adapters/ControlAdapter.cs -+System.Web.UI.Adapters/PageAdapter.cs -+System.Web.UI.Adapters/WmlPostFieldType.cs -+System.Web.UI/ApplicationFileParser.cs -+System.Web.UI/AttributeCollection.cs -+System.Web.UI/BaseParser.cs -+System.Web.UI/BasePartialCachingControl.cs -+System.Web.UI/BaseTemplateParser.cs -+System.Web.UI/BoundPropertyEntry.cs -+System.Web.UI/BuilderPropertyEntry.cs -+System.Web.UI/BuildMethod.cs -+System.Web.UI/BuildTemplateMethod.cs -+System.Web.UI/ChtmlTextWriter.cs -+System.Web.UI/ClientIDMode.cs -+System.Web.UI/ClientScriptManager.cs -+System.Web.UI/CodeBuilder.cs -+System.Web.UI/CodeConstructType.cs -+System.Web.UI/CodeRenderBuilder.cs -+System.Web.UI/CollectionBuilder.cs -+System.Web.UI/CompilationMode.cs -+System.Web.UI/CompiledBindableTemplateBuilder.cs -+System.Web.UI/CompiledTemplateBuilder.cs -+System.Web.UI/ComplexPropertyEntry.cs -+System.Web.UI/ConflictOptions.cs -+System.Web.UI/ConstructorNeedsTagAttribute.cs -+System.Web.UI/ControlBuilderAttribute.cs -+System.Web.UI/ControlBuilder.cs -+System.Web.UI/ControlCachePolicy.cs -+System.Web.UI/ControlCollection.cs -+System.Web.UI/Control.cs -+System.Web.UI/ControlSkin.cs -+System.Web.UI/ControlSkinDelegate.cs -+System.Web.UI/ControlValuePropertyAttribute.cs -+System.Web.UI/CssClassPropertyAttribute.cs -+System.Web.UI/CssStyleCollection.cs -+System.Web.UI/DataBinder.cs -+System.Web.UI/DataBindingBuilder.cs -+System.Web.UI/DataBindingCollection.cs -+System.Web.UI/DataBinding.cs -+System.Web.UI/DataBindingHandlerAttribute.cs -+System.Web.UI/DataBoundLiteralControl.cs -+System.Web.UI/DataKeyPropertyAttribute.cs -+System.Web.UI/DataSourceCacheDurationConverter.cs -+System.Web.UI/DataSourceCacheExpiry.cs -+System.Web.UI/DataSourceCapabilities.cs -+System.Web.UI/DataSourceControlBuilder.cs -+System.Web.UI/DataSourceControl.cs -+System.Web.UI/DataSourceOperation.cs -+System.Web.UI/DataSourceSelectArguments.cs -+System.Web.UI/DataSourceView.cs -+System.Web.UI/DataSourceViewOperationCallback.cs -+System.Web.UI/DataSourceViewSelectCallback.cs -+System.Web.UI/DesignerDataBoundLiteralControl.cs -+System.Web.UI/DesignTimeParseData.cs -+System.Web.UI/DesignTimeTemplateParser.cs -+System.Web.UI/EmptyControlCollection.cs -+System.Web.UI/EventEntry.cs -+System.Web.UI/ExpressionBindingCollection.cs -+System.Web.UI/ExpressionBinding.cs -+System.Web.UI/ExtractTemplateValuesMethod.cs -+System.Web.UI/FileLevelControlBuilderAttribute.cs -+System.Web.UI/FileLevelMasterPageControlBuilder.cs -+System.Web.UI/FileLevelPageControlBuilder.cs -+System.Web.UI/FileLevelUserControlBuilder.cs -+System.Web.UI/FilterableAttribute.cs -+System.Web.UI/HiddenFieldPageStatePersister.cs -+System.Web.UI/HierarchicalDataSourceControl.cs -+System.Web.UI/HierarchicalDataSourceView.cs -+System.Web.UI/Html32TextWriter.cs -+System.Web.UI/HtmlControlPersistableAttribute.cs -+System.Web.UI.HtmlControls/HtmlAnchor.cs -+System.Web.UI.HtmlControls/HtmlButton.cs -+System.Web.UI.HtmlControls/HtmlContainerControl.cs -+System.Web.UI.HtmlControls/HtmlControlBuilder.cs -+System.Web.UI.HtmlControls/HtmlControl.cs -+System.Web.UI.HtmlControls/HtmlEmptyTagControlBuilder.cs -+System.Web.UI.HtmlControls/HtmlForm.cs -+System.Web.UI.HtmlControls/HtmlGenericControl.cs -+System.Web.UI.HtmlControls/HtmlHeadBuilder.cs -+System.Web.UI.HtmlControls/HtmlHead.cs -+System.Web.UI.HtmlControls/HtmlImage.cs -+System.Web.UI.HtmlControls/HtmlInputButton.cs -+System.Web.UI.HtmlControls/HtmlInputCheckBox.cs -+System.Web.UI.HtmlControls/HtmlInputControl.cs -+System.Web.UI.HtmlControls/HtmlInputFile.cs -+System.Web.UI.HtmlControls/HtmlInputHidden.cs -+System.Web.UI.HtmlControls/HtmlInputImage.cs -+System.Web.UI.HtmlControls/HtmlInputPassword.cs -+System.Web.UI.HtmlControls/HtmlInputRadioButton.cs -+System.Web.UI.HtmlControls/HtmlInputReset.cs -+System.Web.UI.HtmlControls/HtmlInputSubmit.cs -+System.Web.UI.HtmlControls/HtmlInputText.cs -+System.Web.UI.HtmlControls/HtmlLink.cs -+System.Web.UI.HtmlControls/HtmlMeta.cs -+System.Web.UI.HtmlControls/HtmlSelectBuilder.cs -+System.Web.UI.HtmlControls/HtmlSelect.cs -+System.Web.UI.HtmlControls/HtmlTableCellCollection.cs -+System.Web.UI.HtmlControls/HtmlTableCell.cs -+System.Web.UI.HtmlControls/HtmlTable.cs -+System.Web.UI.HtmlControls/HtmlTableRowCollection.cs -+System.Web.UI.HtmlControls/HtmlTableRow.cs -+System.Web.UI.HtmlControls/HtmlTextArea.cs -+System.Web.UI.HtmlControls/HtmlTitle.cs -+System.Web.UI/HtmlTextWriterAttribute.cs -+System.Web.UI/HtmlTextWriter.cs -+System.Web.UI/HtmlTextWriterStyle.cs -+System.Web.UI/HtmlTextWriterTag.cs -+System.Web.UI/IAttributeAccessor.cs -+System.Web.UI/IAutoFieldGenerator.cs -+System.Web.UI/IBindableControl.cs -+System.Web.UI/IBindableTemplate.cs -+System.Web.UI/ICallbackEventHandler.cs -+System.Web.UI/ICheckBoxControl.cs -+System.Web.UI/IControlBuilderAccessor.cs -+System.Web.UI/IControlDesignerAccessor.cs -+System.Web.UI/IDataBindingsAccessor.cs -+System.Web.UI/IDataItemContainer.cs -+System.Web.UI/IDataKeysControl.cs -+System.Web.UI/IDataSource.cs -+System.Web.UI/IDataSourceViewSchemaAccessor.cs -+System.Web.UI/IDReferencePropertyAttribute.cs -+System.Web.UI/IEditableTextControl.cs -+System.Web.UI/IExpressionsAccessor.cs -+System.Web.UI/IFilterResolutionService.cs -+System.Web.UI/IgnoreUnknownContentAttribute.cs -+System.Web.UI/IHierarchicalDataSource.cs -+System.Web.UI/IHierarchicalEnumerable.cs -+System.Web.UI/IHierarchyData.cs -+System.Web.UI/ImageClickEventArgs.cs -+System.Web.UI/ImageClickEventHandler.cs -+System.Web.UI/INamingContainer.cs -+System.Web.UI/INavigateUIData.cs -+System.Web.UI/IndexedString.cs -+System.Web.UI/INonBindingContainer.cs -+System.Web.UI/IParserAccessor.cs -+System.Web.UI/IPostBackDataHandler.cs -+System.Web.UI/IPostBackEventHandler.cs -+System.Web.UI/IResourceUrlGenerator.cs -+System.Web.UI/IScriptManager.cs -+System.Web.UI/IStateFormatter.cs -+System.Web.UI/IStateManager.cs -+System.Web.UI/IStyleSheet.cs -+System.Web.UI/ITagNameToTypeMapper.cs -+System.Web.UI/ITemplate.cs -+System.Web.UI/ITextControl.cs -+System.Web.UI/IThemeResolutionService.cs -+System.Web.UI/IUrlResolutionService.cs -+System.Web.UI/IUserControlDesignerAccessor.cs -+System.Web.UI/IUserControlTypeResolutionService.cs -+System.Web.UI/IValidator.cs -+System.Web.UI/ListSourceHelper.cs -+System.Web.UI/LiteralControl.cs -+System.Web.UI/LosFormatter.cs -+System.Web.UI/MainDirectiveAttribute.cs -+System.Web.UI/MasterPageControlBuilder.cs -+System.Web.UI/MasterPage.cs -+System.Web.UI/MasterPageParser.cs -+System.Web.UI/MinimizableAttributeTypeConverter.cs -+System.Web.UI/NonVisualControlAttribute.cs -+System.Web.UI/ObjectConverter.cs -+System.Web.UI/ObjectPersistData.cs -+System.Web.UI/ObjectStateFormatter.cs -+System.Web.UI/ObjectTagBuilder.cs -+System.Web.UI/ObjectTag.cs -+System.Web.UI/OutputCacheLocation.cs -+System.Web.UI/OutputCacheParameters.cs -+System.Web.UI/PageAsyncTask.cs -+System.Web.UI/Page.cs -+System.Web.UI/PageHandlerFactory.cs -+System.Web.UI/PageLifeCycle.cs -+System.Web.UI/PageParser.cs -+System.Web.UI/PageParserFilter.cs -+System.Web.UI/PageStatePersister.cs -+System.Web.UI/PageThemeBuilder.cs -+System.Web.UI/PageTheme.cs -+System.Web.UI/PageThemeFileParser.cs -+System.Web.UI/PageThemeParser.cs -+System.Web.UI/Pair.cs -+System.Web.UI/ParseChildrenAttribute.cs -+System.Web.UI/PartialCachingAttribute.cs -+System.Web.UI/PartialCachingControl.cs -+System.Web.UI/PersistChildrenAttribute.cs -+System.Web.UI/PersistenceModeAttribute.cs -+System.Web.UI/PersistenceMode.cs -+System.Web.UI/PostBackOptions.cs -+System.Web.UI/PropertyConverter.cs -+System.Web.UI/PropertyEntry.cs -+System.Web.UI/ReadOnlyDataSourceView.cs -+System.Web.UI/RenderMethod.cs -+System.Web.UI/ResourceBasedLiteralControl.cs -+System.Web.UI/RootBuilder.cs -+System.Web.UI/SessionPageStatePersister.cs -+System.Web.UI/SimpleHandlerFactory.cs -+System.Web.UI/SimplePropertyEntry.cs -+System.Web.UI/SimpleWebHandlerParser.cs -+System.Web.UI/SkinBuilder.cs -+System.Web.UI/StateBag.cs -+System.Web.UI/StateItem.cs -+System.Web.UI/StateManagedCollection.cs -+System.Web.UI/StaticPartialCachingControl.cs -+System.Web.UI/StringPropertyBuilder.cs -+System.Web.UI/SupportsEventValidationAttribute.cs -+System.Web.UI/TagPrefixAttribute.cs -+System.Web.UI/TemplateBuilder.cs -+System.Web.UI/TemplateContainerAttribute.cs -+System.Web.UI/TemplateContentType.cs -+System.Web.UI/TemplateControl.cs -+System.Web.UI/TemplateControlParser.cs -+System.Web.UI/TemplateInstanceAttribute.cs -+System.Web.UI/TemplateInstance.cs -+System.Web.UI/TemplateParser.cs -+System.Web.UI/TemplatePropertyEntry.cs -+System.Web.UI/ThemeableAttribute.cs -+System.Web.UI/ThemeProvider.cs -+System.Web.UI/ToolboxDataAttribute.cs -+System.Web.UI/Triplet.cs -+System.Web.UI/UnknownAttributeDescriptor.cs -+System.Web.UI/UrlPropertyAttribute.cs -+System.Web.UI/UrlTypes.cs -+System.Web.UI/UserControlControlBuilder.cs -+System.Web.UI/UserControl.cs -+System.Web.UI/UserControlParser.cs -+System.Web.UI/ValidationPropertyAttribute.cs -+System.Web.UI/ValidatorCollection.cs -+System.Web.UI/VerificationAttribute.cs -+System.Web.UI/VerificationConditionalOperator.cs -+System.Web.UI/VerificationReportLevel.cs -+System.Web.UI/VerificationRule.cs -+System.Web.UI/ViewStateEncryptionMode.cs -+System.Web.UI/ViewStateException.cs -+System.Web.UI/ViewStateModeByIdAttribute.cs -+System.Web.UI/ViewStateMode.cs -+System.Web.UI/VirtualReferenceType.cs -+System.Web.UI.WebControls/AccessDataSource.cs -+System.Web.UI.WebControls/AccessDataSourceView.cs -+System.Web.UI.WebControls.Adapters/DataBoundControlAdapter.cs -+System.Web.UI.WebControls.Adapters/HideDisabledControlAdapter.cs -+System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapter.cs -+System.Web.UI.WebControls.Adapters/MenuAdapter.cs -+System.Web.UI.WebControls.Adapters/WebControlAdapter.cs -+System.Web.UI.WebControls/AdCreatedEventArgs.cs -+System.Web.UI.WebControls/AdCreatedEventHandler.cs -+System.Web.UI.WebControls/AdRotator.cs -+System.Web.UI.WebControls/AssociatedControlConverter.cs -+System.Web.UI.WebControls/AuthenticateEventArgs.cs -+System.Web.UI.WebControls/AuthenticateEventHandler.cs -+System.Web.UI.WebControls/AutoCompleteType.cs -+System.Web.UI.WebControls/AutoGeneratedField.cs -+System.Web.UI.WebControls/AutoGeneratedFieldProperties.cs -+System.Web.UI.WebControls/BaseCompareValidator.cs -+System.Web.UI.WebControls/BaseDataBoundControl.cs -+System.Web.UI.WebControls/BaseDataList.cs -+System.Web.UI.WebControls/BaseMenuRenderer.cs -+System.Web.UI.WebControls/BaseValidator.cs -+System.Web.UI.WebControls/BorderStyle.cs -+System.Web.UI.WebControls/BoundColumn.cs -+System.Web.UI.WebControls/BoundField.cs -+System.Web.UI.WebControls/BulletedList.cs -+System.Web.UI.WebControls/BulletedListDisplayMode.cs -+System.Web.UI.WebControls/BulletedListEventArgs.cs -+System.Web.UI.WebControls/BulletedListEventHandler.cs -+System.Web.UI.WebControls/BulletStyle.cs -+System.Web.UI.WebControls/ButtonColumn.cs -+System.Web.UI.WebControls/ButtonColumnType.cs -+System.Web.UI.WebControls/Button.cs -+System.Web.UI.WebControls/ButtonFieldBase.cs -+System.Web.UI.WebControls/ButtonField.cs -+System.Web.UI.WebControls/ButtonType.cs -+System.Web.UI.WebControls/Calendar.cs -+System.Web.UI.WebControls/CalendarDay.cs -+System.Web.UI.WebControls/CalendarSelectionMode.cs -+System.Web.UI.WebControls/ChangePassword.cs -+System.Web.UI.WebControls/CheckBox.cs -+System.Web.UI.WebControls/CheckBoxField.cs -+System.Web.UI.WebControls/CheckBoxList.cs -+System.Web.UI.WebControls/ChildTable.cs -+System.Web.UI.WebControls/CircleHotSpot.cs -+System.Web.UI.WebControls/CollectionDataSource.cs -+System.Web.UI.WebControls/CommandEventArgs.cs -+System.Web.UI.WebControls/CommandEventHandler.cs -+System.Web.UI.WebControls/CommandField.cs -+System.Web.UI.WebControls/CompareValidator.cs -+System.Web.UI.WebControls/CompleteWizardStep.cs -+System.Web.UI.WebControls/CompositeControl.cs -+System.Web.UI.WebControls/CompositeDataBoundControl.cs -+System.Web.UI.WebControls/ContainedTable.cs -+System.Web.UI.WebControls/ContentControlBuilderInternal.cs -+System.Web.UI.WebControls/Content.cs -+System.Web.UI.WebControls/ContentDirection.cs -+System.Web.UI.WebControls/ContentPlaceHolderBuilder.cs -+System.Web.UI.WebControls/ContentPlaceHolder.cs -+System.Web.UI.WebControls/ControlIDConverter.cs -+System.Web.UI.WebControls/ControlParameter.cs -+System.Web.UI.WebControls/ControlPropertyNameConverter.cs -+System.Web.UI.WebControls/CookieParameter.cs -+System.Web.UI.WebControls/CreateUserErrorEventArgs.cs -+System.Web.UI.WebControls/CreateUserErrorEventHandler.cs -+System.Web.UI.WebControls/CreateUserWizard.cs -+System.Web.UI.WebControls/CreateUserWizardStep.cs -+System.Web.UI.WebControls/CustomValidator.cs -+System.Web.UI.WebControls/DataBoundControl.cs -+System.Web.UI.WebControls/DataBoundControlMode.cs -+System.Web.UI.WebControls/DataControlButton.cs -+System.Web.UI.WebControls/DataControlCellType.cs -+System.Web.UI.WebControls/DataControlCommands.cs -+System.Web.UI.WebControls/DataControlFieldCell.cs -+System.Web.UI.WebControls/DataControlFieldCollection.cs -+System.Web.UI.WebControls/DataControlField.cs -+System.Web.UI.WebControls/DataControlFieldHeaderCell.cs -+System.Web.UI.WebControls/DataControlRowState.cs -+System.Web.UI.WebControls/DataControlRowType.cs -+System.Web.UI.WebControls/DataGridColumnCollection.cs -+System.Web.UI.WebControls/DataGridColumn.cs -+System.Web.UI.WebControls/DataGridCommandEventArgs.cs -+System.Web.UI.WebControls/DataGridCommandEventHandler.cs -+System.Web.UI.WebControls/DataGrid.cs -+System.Web.UI.WebControls/DataGridItemCollection.cs -+System.Web.UI.WebControls/DataGridItem.cs -+System.Web.UI.WebControls/DataGridItemEventArgs.cs -+System.Web.UI.WebControls/DataGridItemEventHandler.cs -+System.Web.UI.WebControls/DataGridPageChangedEventArgs.cs -+System.Web.UI.WebControls/DataGridPageChangedEventHandler.cs -+System.Web.UI.WebControls/DataGridPagerStyle.cs -+System.Web.UI.WebControls/DataGridSortCommandEventArgs.cs -+System.Web.UI.WebControls/DataGridSortCommandEventHandler.cs -+System.Web.UI.WebControls/DataKeyArray.cs -+System.Web.UI.WebControls/DataKeyCollection.cs -+System.Web.UI.WebControls/DataKey.cs -+System.Web.UI.WebControls/DataListCommandEventArgs.cs -+System.Web.UI.WebControls/DataListCommandEventHandler.cs -+System.Web.UI.WebControls/DataList.cs -+System.Web.UI.WebControls/DataListItemCollection.cs -+System.Web.UI.WebControls/DataListItem.cs -+System.Web.UI.WebControls/DataListItemEventArgs.cs -+System.Web.UI.WebControls/DataListItemEventHandler.cs -+System.Web.UI.WebControls/DataSourceCacheManager.cs -+System.Web.UI.WebControls/DayNameFormat.cs -+System.Web.UI.WebControls/DayRenderEventArgs.cs -+System.Web.UI.WebControls/DayRenderEventHandler.cs -+System.Web.UI.WebControls/DetailsViewCommandEventArgs.cs -+System.Web.UI.WebControls/DetailsViewCommandEventHandler.cs -+System.Web.UI.WebControls/DetailsView.cs -+System.Web.UI.WebControls/DetailsViewDeletedEventArgs.cs -+System.Web.UI.WebControls/DetailsViewDeletedEventHandler.cs -+System.Web.UI.WebControls/DetailsViewDeleteEventArgs.cs -+System.Web.UI.WebControls/DetailsViewDeleteEventHandler.cs -+System.Web.UI.WebControls/DetailsViewInsertedEventArgs.cs -+System.Web.UI.WebControls/DetailsViewInsertedEventHandler.cs -+System.Web.UI.WebControls/DetailsViewInsertEventArgs.cs -+System.Web.UI.WebControls/DetailsViewInsertEventHandler.cs -+System.Web.UI.WebControls/DetailsViewMode.cs -+System.Web.UI.WebControls/DetailsViewModeEventArgs.cs -+System.Web.UI.WebControls/DetailsViewModeEventHandler.cs -+System.Web.UI.WebControls/DetailsViewPageEventArgs.cs -+System.Web.UI.WebControls/DetailsViewPageEventHandler.cs -+System.Web.UI.WebControls/DetailsViewPagerRow.cs -+System.Web.UI.WebControls/DetailsViewRowCollection.cs -+System.Web.UI.WebControls/DetailsViewRow.cs -+System.Web.UI.WebControls/DetailsViewUpdatedEventArgs.cs -+System.Web.UI.WebControls/DetailsViewUpdatedEventHandler.cs -+System.Web.UI.WebControls/DetailsViewUpdateEventArgs.cs -+System.Web.UI.WebControls/DetailsViewUpdateEventHandler.cs -+System.Web.UI.WebControls/DropDownList.cs -+System.Web.UI.WebControls/EditCommandColumn.cs -+System.Web.UI.WebControls/EmbeddedMailObject.cs -+System.Web.UI.WebControls/EmbeddedMailObjectsCollection.cs -+System.Web.UI.WebControls/FileUpload.cs -+System.Web.UI.WebControls/FirstDayOfWeek.cs -+System.Web.UI.WebControls/FontInfo.cs -+System.Web.UI.WebControls/FontNamesConverter.cs -+System.Web.UI.WebControls/FontSize.cs -+System.Web.UI.WebControls/FontUnitConverter.cs -+System.Web.UI.WebControls/FontUnit.cs -+System.Web.UI.WebControls/FormParameter.cs -+System.Web.UI.WebControls/FormViewCommandEventArgs.cs -+System.Web.UI.WebControls/FormViewCommandEventHandler.cs -+System.Web.UI.WebControls/FormView.cs -+System.Web.UI.WebControls/FormViewDeletedEventArgs.cs -+System.Web.UI.WebControls/FormViewDeletedEventHandler.cs -+System.Web.UI.WebControls/FormViewDeleteEventArgs.cs -+System.Web.UI.WebControls/FormViewDeleteEventHandler.cs -+System.Web.UI.WebControls/FormViewInsertedEventArgs.cs -+System.Web.UI.WebControls/FormViewInsertedEventHandler.cs -+System.Web.UI.WebControls/FormViewInsertEventArgs.cs -+System.Web.UI.WebControls/FormViewInsertEventHandler.cs -+System.Web.UI.WebControls/FormViewMode.cs -+System.Web.UI.WebControls/FormViewModeEventArgs.cs -+System.Web.UI.WebControls/FormViewModeEventHandler.cs -+System.Web.UI.WebControls/FormViewPageEventArgs.cs -+System.Web.UI.WebControls/FormViewPageEventHandler.cs -+System.Web.UI.WebControls/FormViewPagerRow.cs -+System.Web.UI.WebControls/FormViewRow.cs -+System.Web.UI.WebControls/FormViewUpdatedEventArgs.cs -+System.Web.UI.WebControls/FormViewUpdatedEventHandler.cs -+System.Web.UI.WebControls/FormViewUpdateEventArgs.cs -+System.Web.UI.WebControls/FormViewUpdateEventHandler.cs -+System.Web.UI.WebControls/GridLines.cs -+System.Web.UI.WebControls/GridViewCancelEditEventArgs.cs -+System.Web.UI.WebControls/GridViewCancelEditEventHandler.cs -+System.Web.UI.WebControls/GridViewCommandEventArgs.cs -+System.Web.UI.WebControls/GridViewCommandEventHandler.cs -+System.Web.UI.WebControls/GridView.cs -+System.Web.UI.WebControls/GridViewDeletedEventArgs.cs -+System.Web.UI.WebControls/GridViewDeletedEventHandler.cs -+System.Web.UI.WebControls/GridViewDeleteEventArgs.cs -+System.Web.UI.WebControls/GridViewDeleteEventHandler.cs -+System.Web.UI.WebControls/GridViewEditEventArgs.cs -+System.Web.UI.WebControls/GridViewEditEventHandler.cs -+System.Web.UI.WebControls/GridViewPageEventArgs.cs -+System.Web.UI.WebControls/GridViewPageEventHandler.cs -+System.Web.UI.WebControls/GridViewRowCollection.cs -+System.Web.UI.WebControls/GridViewRow.cs -+System.Web.UI.WebControls/GridViewRowEventArgs.cs -+System.Web.UI.WebControls/GridViewRowEventHandler.cs -+System.Web.UI.WebControls/GridViewSelectEventArgs.cs -+System.Web.UI.WebControls/GridViewSelectEventHandler.cs -+System.Web.UI.WebControls/GridViewSortEventArgs.cs -+System.Web.UI.WebControls/GridViewSortEventHandler.cs -+System.Web.UI.WebControls/GridViewUpdatedEventArgs.cs -+System.Web.UI.WebControls/GridViewUpdatedEventHandler.cs -+System.Web.UI.WebControls/GridViewUpdateEventArgs.cs -+System.Web.UI.WebControls/GridViewUpdateEventHandler.cs -+System.Web.UI.WebControls/HiddenField.cs -+System.Web.UI.WebControls/HierarchicalDataBoundControl.cs -+System.Web.UI.WebControls/HorizontalAlignConverter.cs -+System.Web.UI.WebControls/HorizontalAlign.cs -+System.Web.UI.WebControls/HotSpotCollection.cs -+System.Web.UI.WebControls/HotSpot.cs -+System.Web.UI.WebControls/HotSpotMode.cs -+System.Web.UI.WebControls/HyperLinkColumn.cs -+System.Web.UI.WebControls/HyperLinkControlBuilder.cs -+System.Web.UI.WebControls/HyperLink.cs -+System.Web.UI.WebControls/HyperLinkField.cs -+System.Web.UI.WebControls/IButtonControl.cs -+System.Web.UI.WebControls/ICallbackContainer.cs -+System.Web.UI.WebControls/ICompositeControlDesignerAccessor.cs -+System.Web.UI.WebControls/IDataBoundControl.cs -+System.Web.UI.WebControls/IDataBoundItemControl.cs -+System.Web.UI.WebControls/IDataBoundListControl.cs -+System.Web.UI.WebControls/IFieldControl.cs -+System.Web.UI.WebControls/ImageAlign.cs -+System.Web.UI.WebControls/ImageButton.cs -+System.Web.UI.WebControls/Image.cs -+System.Web.UI.WebControls/ImageField.cs -+System.Web.UI.WebControls/ImageMap.cs -+System.Web.UI.WebControls/ImageMapEventArgs.cs -+System.Web.UI.WebControls/ImageMapEventHandler.cs -+System.Web.UI.WebControls/IMenuRenderer.cs -+System.Web.UI.WebControls/IPersistedSelector.cs -+System.Web.UI.WebControls/IPostBackContainer.cs -+System.Web.UI.WebControls/IRenderOuterTable.cs -+System.Web.UI.WebControls/IRepeatInfoUser.cs -+System.Web.UI.WebControls/LabelControlBuilder.cs -+System.Web.UI.WebControls/Label.cs -+System.Web.UI.WebControls/LinkButtonControlBuilder.cs -+System.Web.UI.WebControls/LinkButton.cs -+System.Web.UI.WebControls/ListBox.cs -+System.Web.UI.WebControls/ListControl.cs -+System.Web.UI.WebControls/ListItemCollection.cs -+System.Web.UI.WebControls/ListItemControlBuilder.cs -+System.Web.UI.WebControls/ListItem.cs -+System.Web.UI.WebControls/ListItemType.cs -+System.Web.UI.WebControls/ListSelectionMode.cs -+System.Web.UI.WebControls/LiteralControlBuilder.cs -+System.Web.UI.WebControls/Literal.cs -+System.Web.UI.WebControls/LiteralMode.cs -+System.Web.UI.WebControls/Localize.cs -+System.Web.UI.WebControls/LoginCancelEventArgs.cs -+System.Web.UI.WebControls/LoginCancelEventHandler.cs -+System.Web.UI.WebControls/Login.cs -+System.Web.UI.WebControls/LoginFailureAction.cs -+System.Web.UI.WebControls/LoginName.cs -+System.Web.UI.WebControls/LoginStatus.cs -+System.Web.UI.WebControls/LoginTextLayout.cs -+System.Web.UI.WebControls/LoginView.cs -+System.Web.UI.WebControls/LogoutAction.cs -+System.Web.UI.WebControls/MailDefinition.cs -+System.Web.UI.WebControls/MailMessageEventArgs.cs -+System.Web.UI.WebControls/MailMessageEventHandler.cs -+System.Web.UI.WebControls/Menu.cs -+System.Web.UI.WebControls/MenuEventArgs.cs -+System.Web.UI.WebControls/MenuEventHandler.cs -+System.Web.UI.WebControls/MenuItemBindingCollection.cs -+System.Web.UI.WebControls/MenuItemBinding.cs -+System.Web.UI.WebControls/MenuItemCollection.cs -+System.Web.UI.WebControls/MenuItem.cs -+System.Web.UI.WebControls/MenuItemStyleCollection.cs -+System.Web.UI.WebControls/MenuItemStyle.cs -+System.Web.UI.WebControls/MenuItemTemplateContainer.cs -+System.Web.UI.WebControls/MenuListRenderer.cs -+System.Web.UI.WebControls/MenuRenderingMode.cs -+System.Web.UI.WebControls/MenuTableRenderer.cs -+System.Web.UI.WebControls/MonthChangedEventArgs.cs -+System.Web.UI.WebControls/MonthChangedEventHandler.cs -+System.Web.UI.WebControls/MultiViewControlBuilder.cs -+System.Web.UI.WebControls/MultiView.cs -+System.Web.UI.WebControls/NamedCssStyleCollection.cs -+System.Web.UI.WebControls/NextPrevFormat.cs -+System.Web.UI.WebControls/ObjectDataSource.cs -+System.Web.UI.WebControls/ObjectDataSourceDisposingEventArgs.cs -+System.Web.UI.WebControls/ObjectDataSourceDisposingEventHandler.cs -+System.Web.UI.WebControls/ObjectDataSourceEventArgs.cs -+System.Web.UI.WebControls/ObjectDataSourceEventHandler.cs -+System.Web.UI.WebControls/ObjectDataSourceFilteringEventArgs.cs -+System.Web.UI.WebControls/ObjectDataSourceFilteringEventHandler.cs -+System.Web.UI.WebControls/ObjectDataSourceMethodEventArgs.cs -+System.Web.UI.WebControls/ObjectDataSourceMethodEventHandler.cs -+System.Web.UI.WebControls/ObjectDataSourceSelectingEventArgs.cs -+System.Web.UI.WebControls/ObjectDataSourceSelectingEventHandler.cs -+System.Web.UI.WebControls/ObjectDataSourceStatusEventArgs.cs -+System.Web.UI.WebControls/ObjectDataSourceStatusEventHandler.cs -+System.Web.UI.WebControls/ObjectDataSourceView.cs -+System.Web.UI.WebControls/Orientation.cs -+System.Web.UI.WebControls/PagedDataSource.cs -+System.Web.UI.WebControls/PagerButtons.cs -+System.Web.UI.WebControls/PagerMode.cs -+System.Web.UI.WebControls/PagerPosition.cs -+System.Web.UI.WebControls/PagerSettings.cs -+System.Web.UI.WebControls/Panel.cs -+System.Web.UI.WebControls/PanelStyle.cs -+System.Web.UI.WebControls/ParameterCollection.cs -+System.Web.UI.WebControls/Parameter.cs -+System.Web.UI.WebControls/PasswordRecovery.cs -+System.Web.UI.WebControls/PathDirection.cs -+System.Web.UI.WebControls/PlaceHolderControlBuilder.cs -+System.Web.UI.WebControls/PlaceHolder.cs -+System.Web.UI.WebControls/PolygonHotSpot.cs -+System.Web.UI.WebControls/ProfileParameter.cs -+System.Web.UI.WebControls/QueryStringParameter.cs -+System.Web.UI.WebControls/RadioButton.cs -+System.Web.UI.WebControls/RadioButtonList.cs -+System.Web.UI.WebControls/RangeValidator.cs -+System.Web.UI.WebControls/RectangleHotSpot.cs -+System.Web.UI.WebControls/RegularExpressionValidator.cs -+System.Web.UI.WebControls/RepeatDirection.cs -+System.Web.UI.WebControls/RepeaterCommandEventArgs.cs -+System.Web.UI.WebControls/RepeaterCommandEventHandler.cs -+System.Web.UI.WebControls/Repeater.cs -+System.Web.UI.WebControls/RepeaterItemCollection.cs -+System.Web.UI.WebControls/RepeaterItem.cs -+System.Web.UI.WebControls/RepeaterItemEventArgs.cs -+System.Web.UI.WebControls/RepeaterItemEventHandler.cs -+System.Web.UI.WebControls/RepeatInfo.cs -+System.Web.UI.WebControls/RepeatLayout.cs -+System.Web.UI.WebControls/RequiredFieldValidator.cs -+System.Web.UI.WebControls/RoleGroupCollection.cs -+System.Web.UI.WebControls/RoleGroup.cs -+System.Web.UI.WebControls/RouteParameter.cs -+System.Web.UI.WebControls/ScrollBars.cs -+System.Web.UI.WebControls/SelectedDatesCollection.cs -+System.Web.UI.WebControls/SendMailErrorEventArgs.cs -+System.Web.UI.WebControls/SendMailErrorEventHandler.cs -+System.Web.UI.WebControls/ServerValidateEventArgs.cs -+System.Web.UI.WebControls/ServerValidateEventHandler.cs -+System.Web.UI.WebControls/SessionParameter.cs -+System.Web.UI.WebControls/SiteMapDataSource.cs -+System.Web.UI.WebControls/SiteMapDataSourceView.cs -+System.Web.UI.WebControls/SiteMapHierarchicalDataSourceView.cs -+System.Web.UI.WebControls/SiteMapNodeItem.cs -+System.Web.UI.WebControls/SiteMapNodeItemEventArgs.cs -+System.Web.UI.WebControls/SiteMapNodeItemEventHandler.cs -+System.Web.UI.WebControls/SiteMapNodeItemType.cs -+System.Web.UI.WebControls/SiteMapPath.cs -+System.Web.UI.WebControls/SiteMapViewType.cs -+System.Web.UI.WebControls/SortDirection.cs -+System.Web.UI.WebControls/SqlDataSourceCommandEventArgs.cs -+System.Web.UI.WebControls/SqlDataSourceCommandEventHandler.cs -+System.Web.UI.WebControls/SqlDataSourceCommandType.cs -+System.Web.UI.WebControls/SqlDataSource.cs -+System.Web.UI.WebControls/SqlDataSourceFilteringEventArgs.cs -+System.Web.UI.WebControls/SqlDataSourceFilteringEventHandler.cs -+System.Web.UI.WebControls/SqlDataSourceMode.cs -+System.Web.UI.WebControls/SqlDataSourceSelectingEventArgs.cs -+System.Web.UI.WebControls/SqlDataSourceSelectingEventHandler.cs -+System.Web.UI.WebControls/SqlDataSourceStatusEventArgs.cs -+System.Web.UI.WebControls/SqlDataSourceStatusEventHandler.cs -+System.Web.UI.WebControls/SqlDataSourceView.cs -+System.Web.UI.WebControls/StringArrayConverter.cs -+System.Web.UI.WebControls/StyleBlock.cs -+System.Web.UI.WebControls/StyleCollection.cs -+System.Web.UI.WebControls/Style.cs -+System.Web.UI.WebControls/SubMenuStyleCollection.cs -+System.Web.UI.WebControls/SubMenuStyle.cs -+System.Web.UI.WebControls/Substitution.cs -+System.Web.UI.WebControls/TableCaptionAlign.cs -+System.Web.UI.WebControls/TableCellCollection.cs -+System.Web.UI.WebControls/TableCellControlBuilder.cs -+System.Web.UI.WebControls/TableCell.cs -+System.Web.UI.WebControls/Table.cs -+System.Web.UI.WebControls/TableFooterRow.cs -+System.Web.UI.WebControls/TableHeaderCell.cs -+System.Web.UI.WebControls/TableHeaderRow.cs -+System.Web.UI.WebControls/TableHeaderScope.cs -+System.Web.UI.WebControls/TableItemStyle.cs -+System.Web.UI.WebControls/TableRowCollection.cs -+System.Web.UI.WebControls/TableRow.cs -+System.Web.UI.WebControls/TableRowSection.cs -+System.Web.UI.WebControls/TableSectionStyle.cs -+System.Web.UI.WebControls/TableStyle.cs -+System.Web.UI.WebControls/TargetConverter.cs -+System.Web.UI.WebControls/TemplateColumn.cs -+System.Web.UI.WebControls/TemplatedWizardStep.cs -+System.Web.UI.WebControls/TemplateField.cs -+System.Web.UI.WebControls/TextAlign.cs -+System.Web.UI.WebControls/TextBoxControlBuilder.cs -+System.Web.UI.WebControls/TextBox.cs -+System.Web.UI.WebControls/TextBoxMode.cs -+System.Web.UI.WebControls/TitleFormat.cs -+System.Web.UI.WebControls/TreeNodeBindingCollection.cs -+System.Web.UI.WebControls/TreeNodeBinding.cs -+System.Web.UI.WebControls/TreeNodeCollection.cs -+System.Web.UI.WebControls/TreeNode.cs -+System.Web.UI.WebControls/TreeNodeEventArgs.cs -+System.Web.UI.WebControls/TreeNodeEventHandler.cs -+System.Web.UI.WebControls/TreeNodeSelectAction.cs -+System.Web.UI.WebControls/TreeNodeStyleCollection.cs -+System.Web.UI.WebControls/TreeNodeStyle.cs -+System.Web.UI.WebControls/TreeNodeTypes.cs -+System.Web.UI.WebControls/TreeView.cs -+System.Web.UI.WebControls/TreeViewImageSet.cs -+System.Web.UI.WebControls/UnitConverter.cs -+System.Web.UI.WebControls/Unit.cs -+System.Web.UI.WebControls/UnitType.cs -+System.Web.UI.WebControls/ValidatedControlConverter.cs -+System.Web.UI.WebControls/ValidationCompareOperator.cs -+System.Web.UI.WebControls/ValidationDataType.cs -+System.Web.UI.WebControls/ValidationSummary.cs -+System.Web.UI.WebControls/ValidationSummaryDisplayMode.cs -+System.Web.UI.WebControls/ValidatorDisplay.cs -+System.Web.UI.WebControls/VerticalAlignConverter.cs -+System.Web.UI.WebControls/VerticalAlign.cs -+System.Web.UI.WebControls/ViewCollection.cs -+System.Web.UI.WebControls/View.cs -+System.Web.UI.WebControls/WebColorConverter.cs -+System.Web.UI.WebControls/WebControl.cs -+System.Web.UI.WebControls.WebParts/ConnectionConsumerCallback.cs -+System.Web.UI.WebControls.WebParts/ConnectionInterfaceCollection.cs -+System.Web.UI.WebControls.WebParts/ConnectionPoint.cs -+System.Web.UI.WebControls.WebParts/ConnectionPointType.cs -+System.Web.UI.WebControls.WebParts/ConnectionProviderCallback.cs -+System.Web.UI.WebControls.WebParts/ConsumerConnectionPoint.cs -+System.Web.UI.WebControls.WebParts/EditorPartCollection.cs -+System.Web.UI.WebControls.WebParts/EditorPart.cs -+System.Web.UI.WebControls.WebParts/IPersonalizable.cs -+System.Web.UI.WebControls.WebParts/ITrackingPersonalizable.cs -+System.Web.UI.WebControls.WebParts/ITransformerConfigurationControl.cs -+System.Web.UI.WebControls.WebParts/IVersioningPersonalizable.cs -+System.Web.UI.WebControls.WebParts/IWebActionable.cs -+System.Web.UI.WebControls.WebParts/IWebEditable.cs -+System.Web.UI.WebControls.WebParts/IWebPart.cs -+System.Web.UI.WebControls.WebParts/IWebPartField.cs -+System.Web.UI.WebControls.WebParts/IWebPartHttpHandler.cs -+System.Web.UI.WebControls.WebParts/IWebPartParameters.cs -+System.Web.UI.WebControls.WebParts/IWebPartRow.cs -+System.Web.UI.WebControls.WebParts/IWebPartTable.cs -+System.Web.UI.WebControls.WebParts/PartChromeState.cs -+System.Web.UI.WebControls.WebParts/PartChromeType.cs -+System.Web.UI.WebControls.WebParts/Part.cs -+System.Web.UI.WebControls.WebParts/PersonalizableAttribute.cs -+System.Web.UI.WebControls.WebParts/PersonalizationScope.cs -+System.Web.UI.WebControls.WebParts/ProviderConnectionPoint.cs -+System.Web.UI.WebControls.WebParts/TypeCollection.cs -+System.Web.UI.WebControls.WebParts/WebPartAuthorizationEventArgs.cs -+System.Web.UI.WebControls.WebParts/WebPartAuthorizationEventHandler.cs -+System.Web.UI.WebControls.WebParts/WebPartCancelEventArgs.cs -+System.Web.UI.WebControls.WebParts/WebPartCancelEventHandler.cs -+System.Web.UI.WebControls.WebParts/WebPart.cs -+System.Web.UI.WebControls.WebParts/WebPartEventArgs.cs -+System.Web.UI.WebControls.WebParts/WebPartEventHandler.cs -+System.Web.UI.WebControls.WebParts/WebPartExportMode.cs -+System.Web.UI.WebControls.WebParts/WebPartHelpMode.cs -+System.Web.UI.WebControls.WebParts/WebPartPageMenuMode.cs -+System.Web.UI.WebControls.WebParts/WebPartVerbCollection.cs -+System.Web.UI.WebControls.WebParts/WebPartVerb.cs -+System.Web.UI.WebControls.WebParts/WebPartVerbsEventArgs.cs -+System.Web.UI.WebControls.WebParts/WebPartVerbsEventHandler.cs -+System.Web.UI.WebControls/Wizard.cs -+System.Web.UI.WebControls/WizardLayoutContainer.cs -+System.Web.UI.WebControls/WizardLayoutNavigationContainer.cs -+System.Web.UI.WebControls/WizardNavigationEventArgs.cs -+System.Web.UI.WebControls/WizardNavigationEventHandler.cs -+System.Web.UI.WebControls/WizardStepBase.cs -+System.Web.UI.WebControls/WizardStepCollection.cs -+System.Web.UI.WebControls/WizardStepControlBuilder.cs -+System.Web.UI.WebControls/WizardStep.cs -+System.Web.UI.WebControls/WizardStepType.cs -+System.Web.UI.WebControls/XmlBuilder.cs -+System.Web.UI.WebControls/Xml.cs -+System.Web.UI.WebControls/XmlDataSource.cs -+System.Web.UI.WebControls/XmlDataSourceNodeDescriptor.cs -+System.Web.UI.WebControls/XmlDataSourcePropertyDescriptor.cs -+System.Web.UI.WebControls/XmlDataSourceView.cs -+System.Web.UI.WebControls/XmlHierarchicalDataSourceView.cs -+System.Web.UI.WebControls/XmlHierarchicalEnumerable.cs -+System.Web.UI.WebControls/XmlHierarchyData.cs -+System.Web.UI/WebHandlerParser.cs -+System.Web.UI/WebResourceAttribute.cs -+System.Web.UI/WebServiceParser.cs -+System.Web.UI/XhtmlMobileDocType.cs -+System.Web.UI/XhtmlTextWriter.cs -+System.Web.UI/XPathBinder.cs -+System.Web.Util/AltSerialization.cs -+System.Web.Util/DataSourceHelper.cs -+System.Web.Util/DataSourceResolver.cs -+System.Web.Util/FileUtils.cs -+System.Web.Util/Helpers.cs -+System.Web.Util/HttpEncoder.cs -+System.Web.Util/ICalls.cs -+System.Web.Util/IWebObjectFactory.cs -+System.Web.Util/IWebPropertyAccessor.cs -+System.Web.Util/MachineKeySectionUtils.cs -+System.Web.Util/RequestValidationSource.cs -+System.Web.Util/RequestValidator.cs -+System.Web.Util/RuntimeHelpers.cs -+System.Web.Util/SearchPattern.cs -+System.Web.Util/SerializationHelper.cs -+System.Web.Util/SimpleWebObjectFactory.cs -+System.Web.Util/StrUtils.cs -+System.Web.Util/TimeUtil.cs -+System.Web.Util/TransactedCallback.cs -+System.Web.Util/Transactions.cs -+System.Web.Util/UrlUtils.cs -+System.Web.Util/WebEncoding.cs -+System.Web.Util/WebTrace.cs -+System.Web.Util/WorkItemCallback.cs -+System.Web.Util/WorkItem.cs -+System.Web/VirtualPath.cs -+System.Web/VirtualPathUtility.cs -+System.Web/WebCategoryAttribute.cs -+System.Web/WebPageTraceListener.cs -+System.Web/WebROCollection.cs -+System.Web/WebSysDescriptionAttribute.cs -+System.Web/XmlSiteMapProvider.cs ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.Web.dll.makefrag -@@ -0,0 +1,1280 @@ -+./../../class/lib/net_4_0/tmp/System.Web.dll: Assembly/AssemblyInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../../build/common/Consts.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../../build/common/Locale.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../../build/common/MonoTODOAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../corlib/System.Collections.Concurrent/SplitOrderedList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../Managed.Windows.Forms/System.Resources/ResXDataNode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../Managed.Windows.Forms/System.Resources/ResXFileRef.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../Managed.Windows.Forms/System.Resources/ResXNullRef.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../Managed.Windows.Forms/System.Resources/ResXResourceReader.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../Managed.Windows.Forms/System.Resources/ResXResourceWriter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Design/System.Data.Design/TypedDataSetGenerator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpApplicationStateBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpApplicationStateWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpBrowserCapabilitiesBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpBrowserCapabilitiesWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpCachePolicyBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpCachePolicyWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpContextBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpContextWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpFileCollectionBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpFileCollectionWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpPostedFileBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpPostedFileWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpRequestBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpRequestWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpResponseBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpResponseWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpServerUtilityBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpServerUtilityWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpSessionStateBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpSessionStateWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpStaticObjectsCollectionBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Abstractions/System.Web/HttpStaticObjectsCollectionWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ApplicationShutdownReason.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/BaseParamsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/BeginEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/BrowserCapabilities.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/AggregateCacheDependency.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/Cache.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheDependency.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CachedRawResponse.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CachedVaryBy.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemEnumerator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemLRU.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemPriority.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemPriorityQueue.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemPriorityQueueDebug.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemRemovedCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemRemovedReason.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemUpdateCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/CacheItemUpdateReason.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/DatabaseNotEnabledForNotificationException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/FileResponseElement.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/HeaderElement.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/InMemoryOutputCacheProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/IOutputCacheEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/MemoryResponseElement.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/OutputCache.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/OutputCacheModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/OutputCacheProviderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/OutputCacheProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/ResponseElement.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/SqlCacheDependencyAdmin.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/SqlCacheDependency.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/SubstitutionResponseElement.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Caching/TableNotEnabledForNotificationException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/CapabilitiesLoader.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppCodeCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ApplicationFileBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppResourceFileInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppResourceFilesCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppResourcesAssemblyBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppResourcesCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppSettingsExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AppWebReferencesCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AspComponent.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AspComponentFoundry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AspGenerator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AspParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AspTokenizer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/AssemblyBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BaseCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildDependencySet.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildManagerCacheItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildManagerDirectoryBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildManagerHostUnloadEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildManagerHostUnloadEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildManagerRemoveEntryEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildProviderAppliesToAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildProviderAppliesTo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildProviderGroup.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/BuildProviderResultFlags.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/CachingCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ClientBuildManagerCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ClientBuildManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ClientBuildManagerParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/CompilationException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/CompilerType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ConnectionStringsExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/DefaultResourceProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/DefaultResourceProviderFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/DesignTimeResourceProviderFactoryAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/Directive.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ExpressionBuilderContext.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ExpressionEditorAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ExpressionPrefixAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/FolderLevelBuildProviderAppliesToAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/FolderLevelBuildProviderAppliesTo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ForceCopyBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/GenericBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/GlobalAsaxCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/IAssemblyPostProcessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/IgnoreFileBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/IImplicitResourceProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ILocation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ImplicitResourceKey.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/IResourceProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/LinePragmaCodeInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/Location.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/MasterPageBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/MasterPageCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/PageBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/PageCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/PageThemeCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ParseException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/PrecompilationFlags.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/PreservationFile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ResourceExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ResourceExpressionFields.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ResourceProviderFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/RouteUrlExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/RouteValueExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/SimpleBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/TagAttributes.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/TagType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/TemplateBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/TemplateControlCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ThemeDirectoryBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/ThemeDirectoryCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/UserControlBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/UserControlCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/WebHandlerBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/WebServiceBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/WebServiceCompiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/WsdlBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Compilation/XsdBuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AdapterDictionary.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AnonymousIdentificationSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ApplicationSettingsConfigurationFileMap.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AssemblyCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AssemblyInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AuthenticationMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AuthenticationSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AuthorizationRuleAction.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AuthorizationRuleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AuthorizationRule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/AuthorizationSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/BufferModesCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/BufferModeSettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/BuildProviderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/BuildProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CacheSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CapabilitiesBuild.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CapabilitiesResult.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ClientTargetCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ClientTarget.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ClientTargetSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CodeSubDirectoriesCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CodeSubDirectory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CompilationSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CompilerCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/Compiler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CustomErrorCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CustomError.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CustomErrorsMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CustomErrorsRedirectMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/CustomErrorsSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/DeploymentSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/EventMappingSettingsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/EventMappingSettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ExpressionBuilderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ExpressionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/FormsAuthenticationConfiguration.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/FormsAuthenticationCredentials.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/FormsAuthenticationUserCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/FormsAuthenticationUser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/FormsAuthPasswordFormat.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/FormsProtectionEnum.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/GlobalizationSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HandlersUtil.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HealthMonitoringSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HostingEnvironmentSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpCapabilitiesBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpConfigurationContext.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpConfigurationSystem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpCookiesSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpHandlerActionCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpHandlerAction.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpHandlersSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpModuleActionCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpModuleAction.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpModulesSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/HttpRuntimeSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ICapabilitiesProcess.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/IConfigMapPath.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/IConfigMapPathFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/IdentitySection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/IRemoteWebConfigurationHostServer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/LowerCaseStringConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MachineKeyCompatibilityMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MachineKeySection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MachineKeyValidationConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MachineKeyValidation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MembershipSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/MonoSettingsSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/NamespaceCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/NamespaceInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/Build.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/Exception.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/File.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/Identification.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/Node.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/NodeTypes.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/nBrowser/Result.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/NullableStringValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/OutputCacheProfileCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/OutputCacheProfile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/OutputCacheSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/OutputCacheSettingsSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/PagesEnableSessionState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/PagesSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/PassportAuthentication.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/PositiveTimeSpanValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProcessModelComAuthenticationLevel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProcessModelComImpersonationLevel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProcessModelLogLevel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProcessModelSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfileGroupSettingsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfileGroupSettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfilePropertyNameValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfilePropertySettingsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfilePropertySettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfileSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfileSettingsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProfileSettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/PropertyHelper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/ProvidersHelper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/RegexWorker.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/RoleManagerSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/RootProfilePropertySettingsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/RuleSettingsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/RuleSettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SecurityPolicySection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SerializationMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SessionPageStateSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SessionStateSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SiteMapSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SqlCacheDependencyDatabaseCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SqlCacheDependencyDatabase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SqlCacheDependencySection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SystemWebCachingSectionGroup.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/SystemWebSectionGroup.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TagMapCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TagMapInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TagPrefixCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TagPrefixInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TraceDisplayMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TraceSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TransformerInfoCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TransformerInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TrustLevelCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TrustLevel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/TrustSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/UrlMappingCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/UrlMapping.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/UrlMappingsSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/VersionConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/VirtualDirectoryMappingCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/VirtualDirectoryMapping.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebApplicationLevel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebConfigurationFileMap.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebConfigurationHost.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebConfigurationManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebContext.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebControlsSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebPartsPersonalizationAuthorization.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebPartsPersonalization.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/WebPartsSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/XhtmlConformanceMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration_2.0/XhtmlConformanceSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Configuration.Internal/IInternalConfigWebHost.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/DefaultHttpHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/EndEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Handlers/AssemblyResourceLoader.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Handlers/TraceHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HeadersCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/AppDomainFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/ApplicationHost.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/ApplicationInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/ApplicationManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/AppManagerAppDomainFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/BareApplicationHost.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/DefaultVirtualDirectory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/DefaultVirtualFile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/DefaultVirtualPathProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/HostingEnvironment.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/IAppDomainFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/IApplicationHost.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/IAppManagerAppDomainFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/IISAPIRuntime.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/IRegisteredObject.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/ISAPIRuntime.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/SimpleWorkerRequest.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/VirtualDirectory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/VirtualFileBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/VirtualFile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Hosting/VirtualPathProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HtmlizedException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HtmlString.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpApplication.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpApplicationFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpApplicationState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpBrowserCapabilities.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCacheability.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCachePolicy.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCacheRevalidation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCacheValidateHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCacheVaryByContentEncodings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCacheVaryByHeaders.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCacheVaryByParams.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpClientCertificate.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCompileException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpContext.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCookieCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCookie.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpCookieMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpFileCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpForbiddenHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpHeaderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpMethodNotAllowedHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpModuleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpNotFoundHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpNotImplementedHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpParamsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpParseException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpPostedFile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpRequest.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpRequestValidationException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpResponse.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpResponseHeader.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpResponseStream.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpResponseSubstitutionCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpRuntime.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpServerUtility.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpStaticObjectsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpUnhandledException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpUtility.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpValidationStatus.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpWorkerRequest.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/HttpWriter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IHtmlString.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IHttpAsyncHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IHttpHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IHttpHandlerFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IHttpMapPath.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IHttpModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IisTraceListener.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/InputFilterStream.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IntPtrStream.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/IPartitionResolver.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/Base64AttachmentEncoder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/IAttachmentEncoder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailAddressCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailAddress.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailAttachment.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailEncoding.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailFormat.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailHeader.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailMessage.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailMessageWrapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailPriority.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/MailUtil.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/RelatedBodyPart.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/SmtpClient.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/SmtpException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/SmtpMail.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/SmtpResponse.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/SmtpStream.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/ToUUEncodingTransform.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Mail/UUAttachmentEncoder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/EventNotificationType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/IRegiisUtility.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/IWebEventCustomEvaluator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/RuleFiringRecord.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/SessionStateType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/SqlFeatures.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/WebApplicationInformation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/WebBaseEvent.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/WebEventCodes.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Management/WebEventFormatter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/MimeTypes.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/NoParamsInvoker.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/OutputFilterStream.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ParserErrorCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ParserError.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/PreApplicationStartMethodAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ProcessInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ProcessModelInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ProcessShutdownReason.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ProcessStatus.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/CustomProviderDataAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/DefaultProfile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileAuthenticationOption.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileAutoSaveEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileAutoSaveEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileGroupBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileInfoCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileMigrateEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileMigrateEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileProviderAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileProviderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/ProfileProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/SettingsAllowAnonymousAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/SqliteProfileProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Profile/SqlProfileProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Properties/TranslationProperties.Designer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/QueueManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/RequestNotification.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/RequestNotificationStatus.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Routing/PageRouteHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/HttpMethodConstraint.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/IRouteConstraint.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/IRouteHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/PatternParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/PatternToken.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/PatternTokenType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RequestContext.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/Route.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteDirection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteTable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteValueDictionary.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/RouteValueDictionaryExtensions.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/StopRoutingHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/UrlRoutingHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/UrlRoutingModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: ../System.Web.Routing/System.Web.Routing/VirtualPathData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/ActiveDirectoryConnectionProtection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/ActiveDirectoryMembershipProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/AnonymousIdentificationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/AnonymousIdentificationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/AnonymousIdentificationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/AspNetDBSchemaChecker.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/CookieProtection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/DefaultAuthenticationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/DefaultAuthenticationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/DefaultAuthenticationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FileAuthorizationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FormsAuthentication.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FormsAuthenticationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FormsAuthenticationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FormsAuthenticationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FormsAuthenticationTicket.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/FormsIdentity.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/MachineKey.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/MachineKeyProtection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/Membership.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/MembershipHelper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/PassportAuthenticationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/PassportAuthenticationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/PassportAuthenticationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/PassportIdentity.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/RoleManagerEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/RoleManagerEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/RoleManagerModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/RolePrincipal.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/RoleProviderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/Roles.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/SqliteMembershipProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/SqliteRoleProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/SqlMembershipProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/SqlRoleProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/UrlAuthorizationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/WindowsAuthenticationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/WindowsAuthenticationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Security/WindowsAuthenticationModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/ServerVariablesCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/HttpSessionStateContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/HttpSessionState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/IHttpSessionState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/IReadOnlySessionState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/IRequiresSessionState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/ISessionIDManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/ISessionStateItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/IStateRuntime.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/RemoteStateServer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionId.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionIDManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionInProcHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionSQLServerHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateActions.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateBehavior.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateItemExpireCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateModule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateServerHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateStoreData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateStoreProviderBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/SessionStateUtility.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/StateRuntime.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.SessionState_2.0/StateServerItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/SiteMap.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/SiteMapNodeCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/SiteMapNode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/SiteMapProviderCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/SiteMapProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/SiteMapResolveEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/StaticFileHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/StaticSiteMapProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TempFileStream.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceContext.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceContextEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceContextEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceContextRecord.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/TraceMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.Adapters/ControlAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.Adapters/PageAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.Adapters/WmlPostFieldType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ApplicationFileParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/AttributeCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BaseParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BasePartialCachingControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BaseTemplateParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BoundPropertyEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BuilderPropertyEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BuildMethod.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/BuildTemplateMethod.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ChtmlTextWriter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ClientIDMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ClientScriptManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CodeBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CodeConstructType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CodeRenderBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CollectionBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CompilationMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CompiledBindableTemplateBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CompiledTemplateBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ComplexPropertyEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ConflictOptions.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ConstructorNeedsTagAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlBuilderAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlCachePolicy.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/Control.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlSkin.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlSkinDelegate.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ControlValuePropertyAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CssClassPropertyAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/CssStyleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataBinder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataBindingBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataBindingCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataBinding.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataBindingHandlerAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataBoundLiteralControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataKeyPropertyAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceCacheDurationConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceCacheExpiry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceCapabilities.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceOperation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceSelectArguments.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceViewOperationCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DataSourceViewSelectCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DesignerDataBoundLiteralControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DesignTimeParseData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/DesignTimeTemplateParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/EmptyControlCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/EventEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ExpressionBindingCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ExpressionBinding.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ExtractTemplateValuesMethod.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/FileLevelControlBuilderAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/FileLevelMasterPageControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/FileLevelPageControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/FileLevelUserControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/FilterableAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HiddenFieldPageStatePersister.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HierarchicalDataSourceControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HierarchicalDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/Html32TextWriter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HtmlControlPersistableAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlAnchor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlContainerControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlEmptyTagControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlForm.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlGenericControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlHeadBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlHead.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlImage.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputCheckBox.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputFile.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputHidden.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputImage.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputPassword.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputRadioButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputReset.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputSubmit.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlInputText.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlLink.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlMeta.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlSelectBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlSelect.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTableCellCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTableCell.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTableRowCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTableRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTextArea.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.HtmlControls/HtmlTitle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HtmlTextWriterAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HtmlTextWriter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HtmlTextWriterStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/HtmlTextWriterTag.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IAttributeAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IAutoFieldGenerator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IBindableControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IBindableTemplate.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ICallbackEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ICheckBoxControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IControlBuilderAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IControlDesignerAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IDataBindingsAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IDataItemContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IDataKeysControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IDataSourceViewSchemaAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IDReferencePropertyAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IEditableTextControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IExpressionsAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IFilterResolutionService.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IgnoreUnknownContentAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IHierarchicalDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IHierarchicalEnumerable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IHierarchyData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ImageClickEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ImageClickEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/INamingContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/INavigateUIData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IndexedString.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/INonBindingContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IParserAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IPostBackDataHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IPostBackEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IResourceUrlGenerator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IScriptManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IStateFormatter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IStateManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IStyleSheet.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ITagNameToTypeMapper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ITemplate.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ITextControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IThemeResolutionService.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IUrlResolutionService.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IUserControlDesignerAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IUserControlTypeResolutionService.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/IValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ListSourceHelper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/LiteralControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/LosFormatter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/MainDirectiveAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/MasterPageControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/MasterPage.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/MasterPageParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/MinimizableAttributeTypeConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/NonVisualControlAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ObjectConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ObjectPersistData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ObjectStateFormatter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ObjectTagBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ObjectTag.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/OutputCacheLocation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/OutputCacheParameters.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageAsyncTask.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/Page.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageHandlerFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageLifeCycle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageParserFilter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageStatePersister.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageThemeBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageTheme.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageThemeFileParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PageThemeParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/Pair.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ParseChildrenAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PartialCachingAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PartialCachingControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PersistChildrenAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PersistenceModeAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PersistenceMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PostBackOptions.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PropertyConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/PropertyEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ReadOnlyDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/RenderMethod.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ResourceBasedLiteralControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/RootBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/SessionPageStatePersister.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/SimpleHandlerFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/SimplePropertyEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/SimpleWebHandlerParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/SkinBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/StateBag.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/StateItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/StateManagedCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/StaticPartialCachingControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/StringPropertyBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/SupportsEventValidationAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TagPrefixAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateContainerAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateContentType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateControlParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateInstanceAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateInstance.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplateParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/TemplatePropertyEntry.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ThemeableAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ThemeProvider.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ToolboxDataAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/Triplet.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/UnknownAttributeDescriptor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/UrlPropertyAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/UrlTypes.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/UserControlControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/UserControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/UserControlParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ValidationPropertyAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ValidatorCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/VerificationAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/VerificationConditionalOperator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/VerificationReportLevel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/VerificationRule.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ViewStateEncryptionMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ViewStateException.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ViewStateModeByIdAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/ViewStateMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/VirtualReferenceType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AccessDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AccessDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.Adapters/DataBoundControlAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.Adapters/HideDisabledControlAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.Adapters/MenuAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.Adapters/WebControlAdapter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AdCreatedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AdCreatedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AdRotator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AssociatedControlConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AuthenticateEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AuthenticateEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AutoCompleteType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AutoGeneratedField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/AutoGeneratedFieldProperties.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BaseCompareValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BaseDataBoundControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BaseDataList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BaseMenuRenderer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BaseValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BorderStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BoundColumn.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BoundField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BulletedList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BulletedListDisplayMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BulletedListEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BulletedListEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/BulletStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ButtonColumn.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ButtonColumnType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Button.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ButtonFieldBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ButtonField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ButtonType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Calendar.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CalendarDay.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CalendarSelectionMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ChangePassword.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CheckBox.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CheckBoxField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CheckBoxList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ChildTable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CircleHotSpot.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CollectionDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CommandField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CompareValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CompleteWizardStep.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CompositeControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CompositeDataBoundControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ContainedTable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ContentControlBuilderInternal.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Content.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ContentDirection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ContentPlaceHolderBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ContentPlaceHolder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ControlIDConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ControlParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ControlPropertyNameConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CookieParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CreateUserErrorEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CreateUserErrorEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CreateUserWizard.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CreateUserWizardStep.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/CustomValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataBoundControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataBoundControlMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlCellType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlCommands.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlFieldCell.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlFieldCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlFieldHeaderCell.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlRowState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataControlRowType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridColumnCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridColumn.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGrid.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridItemEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridItemEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridPageChangedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridPageChangedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridPagerStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridSortCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataGridSortCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataKeyArray.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataKeyCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataKey.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataListCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataListCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataListItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataListItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataListItemEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataListItemEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DataSourceCacheManager.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DayNameFormat.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DayRenderEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DayRenderEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewDeletedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewDeletedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewDeleteEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewDeleteEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewInsertedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewInsertedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewInsertEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewInsertEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewModeEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewModeEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewPageEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewPageEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewPagerRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewRowCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewUpdatedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewUpdatedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewUpdateEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DetailsViewUpdateEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/DropDownList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/EditCommandColumn.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/EmbeddedMailObject.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/EmbeddedMailObjectsCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FileUpload.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FirstDayOfWeek.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FontInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FontNamesConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FontSize.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FontUnitConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FontUnit.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewDeletedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewDeletedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewDeleteEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewDeleteEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewInsertedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewInsertedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewInsertEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewInsertEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewModeEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewModeEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewPageEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewPageEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewPagerRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewUpdatedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewUpdatedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewUpdateEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/FormViewUpdateEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridLines.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewCancelEditEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewCancelEditEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewDeletedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewDeletedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewDeleteEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewDeleteEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewEditEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewEditEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewPageEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewPageEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewRowCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewRowEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewRowEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewSelectEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewSelectEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewSortEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewSortEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewUpdatedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewUpdatedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewUpdateEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/GridViewUpdateEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HiddenField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HierarchicalDataBoundControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HorizontalAlignConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HorizontalAlign.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HotSpotCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HotSpot.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HotSpotMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HyperLinkColumn.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HyperLinkControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HyperLink.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/HyperLinkField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IButtonControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ICallbackContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ICompositeControlDesignerAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IDataBoundControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IDataBoundItemControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IDataBoundListControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IFieldControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ImageAlign.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ImageButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Image.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ImageField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ImageMap.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ImageMapEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ImageMapEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IMenuRenderer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IPersistedSelector.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IPostBackContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IRenderOuterTable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/IRepeatInfoUser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LabelControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Label.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LinkButtonControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LinkButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListBox.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListItemControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListItemType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ListSelectionMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LiteralControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Literal.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LiteralMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Localize.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginCancelEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginCancelEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Login.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginFailureAction.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginName.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginStatus.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginTextLayout.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LoginView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/LogoutAction.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MailDefinition.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MailMessageEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MailMessageEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Menu.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItemBindingCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItemBinding.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItemStyleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItemStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuItemTemplateContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuListRenderer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuRenderingMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MenuTableRenderer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MonthChangedEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MonthChangedEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MultiViewControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/MultiView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/NamedCssStyleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/NextPrevFormat.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceDisposingEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceDisposingEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceFilteringEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceFilteringEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceMethodEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceMethodEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceSelectingEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceSelectingEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceStatusEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceStatusEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ObjectDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Orientation.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PagedDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PagerButtons.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PagerMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PagerPosition.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PagerSettings.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Panel.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PanelStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ParameterCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Parameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PasswordRecovery.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PathDirection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PlaceHolderControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PlaceHolder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/PolygonHotSpot.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ProfileParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/QueryStringParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RadioButton.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RadioButtonList.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RangeValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RectangleHotSpot.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RegularExpressionValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeatDirection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeaterCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeaterCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Repeater.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeaterItemCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeaterItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeaterItemEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeaterItemEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeatInfo.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RepeatLayout.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RequiredFieldValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RoleGroupCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RoleGroup.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/RouteParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ScrollBars.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SelectedDatesCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SendMailErrorEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SendMailErrorEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ServerValidateEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ServerValidateEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SessionParameter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapHierarchicalDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapNodeItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapNodeItemEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapNodeItemEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapNodeItemType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapPath.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SiteMapViewType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SortDirection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceCommandEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceCommandEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceCommandType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceFilteringEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceFilteringEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceSelectingEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceSelectingEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceStatusEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceStatusEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SqlDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/StringArrayConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/StyleBlock.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/StyleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Style.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SubMenuStyleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/SubMenuStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Substitution.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableCaptionAlign.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableCellCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableCellControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableCell.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Table.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableFooterRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableHeaderCell.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableHeaderRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableHeaderScope.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableItemStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableRowCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableRowSection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableSectionStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TableStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TargetConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TemplateColumn.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TemplatedWizardStep.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TemplateField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TextAlign.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TextBoxControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TextBox.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TextBoxMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TitleFormat.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeBindingCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeBinding.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeSelectAction.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeStyleCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeStyle.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeNodeTypes.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/TreeViewImageSet.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/UnitConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Unit.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/UnitType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ValidatedControlConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ValidationCompareOperator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ValidationDataType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ValidationSummary.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ValidationSummaryDisplayMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ValidatorDisplay.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/VerticalAlignConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/VerticalAlign.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/ViewCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/View.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WebColorConverter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WebControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ConnectionConsumerCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ConnectionInterfaceCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ConnectionPoint.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ConnectionPointType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ConnectionProviderCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ConsumerConnectionPoint.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/EditorPartCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/EditorPart.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IPersonalizable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ITrackingPersonalizable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ITransformerConfigurationControl.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IVersioningPersonalizable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebActionable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebEditable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebPart.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebPartField.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebPartHttpHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebPartParameters.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebPartRow.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/IWebPartTable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/PartChromeState.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/PartChromeType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/Part.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/PersonalizableAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/PersonalizationScope.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/ProviderConnectionPoint.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/TypeCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartAuthorizationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartAuthorizationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartCancelEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartCancelEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPart.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartExportMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartHelpMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartPageMenuMode.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartVerbCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartVerb.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartVerbsEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls.WebParts/WebPartVerbsEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Wizard.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardLayoutContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardLayoutNavigationContainer.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardNavigationEventArgs.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardNavigationEventHandler.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardStepBase.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardStepCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardStepControlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardStep.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/WizardStepType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlBuilder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/Xml.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlDataSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlDataSourceNodeDescriptor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlDataSourcePropertyDescriptor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlHierarchicalDataSourceView.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlHierarchicalEnumerable.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI.WebControls/XmlHierarchyData.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/WebHandlerParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/WebResourceAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/WebServiceParser.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/XhtmlMobileDocType.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/XhtmlTextWriter.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.UI/XPathBinder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/AltSerialization.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/DataSourceHelper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/DataSourceResolver.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/FileUtils.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/Helpers.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/HttpEncoder.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/ICalls.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/IWebObjectFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/IWebPropertyAccessor.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/MachineKeySectionUtils.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/RequestValidationSource.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/RequestValidator.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/RuntimeHelpers.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/SearchPattern.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/SerializationHelper.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/SimpleWebObjectFactory.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/StrUtils.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/TimeUtil.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/TransactedCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/Transactions.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/UrlUtils.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/WebEncoding.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/WebTrace.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/WorkItemCallback.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web.Util/WorkItem.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/VirtualPath.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/VirtualPathUtility.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/WebCategoryAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/WebPageTraceListener.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/WebROCollection.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/WebSysDescriptionAttribute.cs -+./../../class/lib/net_4_0/tmp/System.Web.dll: System.Web/XmlSiteMapProvider.cs -+../../build/deps/net_4_0_System.Web.dll.sources: System.Web.dll.sources -+System.Web.dll.sources: -+../../build/deps/net_4_0_System.Web.dll.makefrag: ./../../build/deps/net_4_0_System.Web.dll.sources.makefrag -+./../../build/deps/net_4_0_System.Web.dll.sources.makefrag: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.ServiceModel.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.ServiceModel.dll.sources: System.ServiceModel.dll.sources -+System.ServiceModel.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.Web.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.Web.dll.sources: System.Web.dll.sources -+System.Web.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.Data.Services.Client.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.Data.Services.Client.dll.sources: System.Data.Services.Client.dll.sources -+System.Data.Services.Client.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/System.Web_test_net_4_0.dll.response -@@ -0,0 +1,562 @@ -+Test/../../System.Web.DynamicData/Test/Common/AssertExtensions.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/AssemblyInfo.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/crc32.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/Header.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlAttribute.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlDocument.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlEntity.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlNode.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlNodeNavigator.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlWeb.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/MixedCodeDocument.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/ParseReader.cs -+Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/tools.cs -+Test/mainsoft/MainsoftWebTest/NunitWebTest.cs -+Test/mainsoft/MainsoftWebTest/XmlComparer.cs -+Test/mainsoft/NunitWeb/NunitWeb/BaseControl.cs -+Test/mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs -+Test/mainsoft/NunitWeb/NunitWeb/BaseInvoker.cs -+Test/mainsoft/NunitWeb/NunitWeb/BaseRequest.cs -+Test/mainsoft/NunitWeb/NunitWeb/BaseWorkerRequest.cs -+Test/mainsoft/NunitWeb/NunitWeb/CustomSection.cs -+Test/mainsoft/NunitWeb/NunitWeb/FakeMembershipProvider.cs -+Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs -+Test/mainsoft/NunitWeb/NunitWeb/Global.asax.cs -+Test/mainsoft/NunitWeb/NunitWeb/IForeignData.cs -+Test/mainsoft/NunitWeb/NunitWeb/HandlerInvoker.cs -+Test/mainsoft/NunitWeb/NunitWeb/MyHandler.cs -+Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs -+Test/mainsoft/NunitWeb/NunitWeb/MyPageHandlerFactory.cs -+Test/mainsoft/NunitWeb/NunitWeb/MyTemplateControls.cs -+Test/mainsoft/NunitWeb/NunitWeb/PageDelegates.cs -+Test/mainsoft/NunitWeb/NunitWeb/PageInvoker.cs -+Test/mainsoft/NunitWeb/NunitWeb/PostableRequest.cs -+Test/mainsoft/NunitWeb/NunitWeb/PostableWorkerRequest.cs -+Test/mainsoft/NunitWeb/NunitWeb/Response.cs -+Test/mainsoft/NunitWeb/NunitWeb/StandardUrl.cs -+Test/mainsoft/NunitWeb/NunitWeb/TestRoleProvider.cs -+Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs -+Test/mainsoft/NunitWeb/NunitWeb/WebTestLocal.cs -+Test/mainsoft/NunitWeb/NunitWeb/WebTestResourcesSetupAttribute.cs -+Test/mainsoft/NunitWeb/NunitWeb/Tests/TagsNestedInClientTag.cs -+Test/mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs -+Test/mainsoft/NunitWeb/NunitWeb/Tests/Author.cs -+Test/mainsoft/NunitWeb/NunitWeb/Tests/AuthorConverter.cs -+Test/mainsoft/NunitWeb/NunitWeb/Tests/Book.cs -+Test/mainsoft/NunitWeb/NunitWeb/Tests/BookType.cs -+Test/System.Web/AppBrowsersTest.cs -+Test/System.Web/HttpApplicationTest.cs -+Test/System.Web/HttpBrowserCapabilitiesTest.cs -+Test/System.Web/HttpCacheVaryByContentEncodingsTest.cs -+Test/System.Web/HttpCacheVaryByHeadersTest.cs -+Test/System.Web/HttpCacheVaryByParamsTest.cs -+Test/System.Web/HttpClientCertificateTest.cs -+Test/System.Web/HttpContext.cs -+Test/System.Web/HttpCookieCollectionTest.cs -+Test/System.Web/HttpCookieTest.cs -+Test/System.Web/HttpRequestTest.cs -+Test/System.Web/HttpResponseTest.cs -+Test/System.Web/HttpRuntimeTest.cs -+Test/System.Web/HttpServerUtilityTest.cs -+Test/System.Web/HttpUtilityTest.cs -+Test/System.Web/SiteMapProviderTest.cs -+Test/System.Web/SiteMapNodeTest.cs -+Test/System.Web/StaticSiteMapProviderTest.cs -+Test/System.Web/TraceContextRecordTest.cs -+Test/System.Web.Compilation/BuildManagerTest.cs -+Test/System.Web.Compilation/ClientBuildManagerParameterTest.cs -+Test/System.Web.Compilation/TemplateControlCompilerTest.cs -+Test/System.Web.Compilation/AppSettingsExpressionBuilderTest.cs -+Test/System.Web.Compilation/AppResourcesCompilerTest.cs -+Test/System.Web.Compilation/RouteUrlExpressionBuilderTest.cs -+Test/System.Web.Compilation/BuildProviderTest.cs -+Test/System.Web.Configuration/AnonymousIdentificationSectionTest.cs -+Test/System.Web.Configuration/AssemblyCollectionTest.cs -+Test/System.Web.Configuration/AssemblyInfoTest.cs -+Test/System.Web.Configuration/AuthenticationSectionTest.cs -+Test/System.Web.Configuration/AuthorizationRuleCollectionTest.cs -+Test/System.Web.Configuration/AuthorizationRuleTest.cs -+Test/System.Web.Configuration/AuthorizationSectionTest.cs -+Test/System.Web.Configuration/BufferModeSettingsTest.cs -+Test/System.Web.Configuration/BuildProviderTest.cs -+Test/System.Web.Configuration/CacheSectionTest.cs -+Test/System.Web.Configuration/ClientTargetTest.cs -+Test/System.Web.Configuration/ClientTargetSectionTest.cs -+Test/System.Web.Configuration/CodeSubDirectoryTest.cs -+Test/System.Web.Configuration/CompilationSectionTest.cs -+Test/System.Web.Configuration/CustomErrorsSectionTest.cs -+Test/System.Web.Configuration/CustomErrorCollectionTest.cs -+Test/System.Web.Configuration/DeploymentSectionTest.cs -+Test/System.Web.Configuration/GlobalizationSectionTest.cs -+Test/System.Web.Configuration/HostingEnvironmentSectionTest.cs -+Test/System.Web.Configuration/MachineKeySectionTest.cs -+Test/System.Web.Configuration/MachineKeyValidationConverterTest.cs -+Test/System.Web.Configuration/NullableStringValidatorTest.cs -+Test/System.Web.Configuration/ProfilePropertySettingsTest.cs -+Test/System.Web.Configuration/SiteMapSectionTest.cs -+Test/System.Web.Configuration/WebConfigurationManagerTest.cs -+Test/System.Web.Hosting/ApplicationHostTest.cs -+Test/System.Web.Hosting/HostingEnvironmentTest.cs -+Test/System.Web.Hosting/SimpleWorkerRequestTest.cs -+Test/System.Web.Hosting/VirtualPathProviderTest.cs -+Test/System.Web.Profile/ProfileInfoTest.cs -+Test/System.Web.Security/FormsAuthenticationTest.cs -+Test/System.Web.Security/FormsIdentityTest.cs -+Test/System.Web.Security/MembershipTest.cs -+Test/System.Web.Security/MembershipProviderCollectionTest.cs -+Test/System.Web.Security/MembershipProviderTest.cs -+Test/System.Web.Security/MembershipUserCollectionTest.cs -+Test/System.Web.Security/RolePrincipalTest.cs -+Test/System.Web.Security/RolesTest.cs -+Test/System.Web.UI/AttributeCollectionTest.cs -+Test/System.Web.UI/ChtmlTextWriterTest.cs -+Test/System.Web.UI/CleanHtmlTextWriter.cs -+Test/System.Web.UI/ClientScriptManagerTest.cs -+Test/System.Web.UI/ControlTest.cs -+Test/System.Web.UI/ControlCollectionTest.cs -+Test/System.Web.UI/DataKeyPropertyAttributeTest.cs -+Test/System.Web.UI/CssStyleCollectionTest.cs -+Test/System.Web.UI/DataBindingCollectionTest.cs -+Test/System.Web.UI/DataBindingHandlerAttributeTest.cs -+Test/System.Web.UI/DataSourceCacheDurationConverterTest.cs -+Test/System.Web.UI/LiteralControlTest.cs -+Test/System.Web.UI.Adapters/ControlAdapterTest.cs -+Test/System.Web.UI.Adapters/PageAdapterTest.cs -+Test/System.Web.UI.HtmlControls/HtmlAnchorTest.cs -+Test/System.Web.UI.HtmlControls/HtmlButtonTest.cs -+Test/System.Web.UI.HtmlControls/HtmlContainerControlTest.cs -+Test/System.Web.UI.HtmlControls/HtmlFormTest.cs -+Test/System.Web.UI.HtmlControls/HtmlHeadTest.cs -+Test/System.Web.UI.HtmlControls/HtmlImageTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputButtonTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputCheckBoxTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputControlTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputFileTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputHiddenTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputPasswordTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputRadioButtonTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputResetTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputSubmitTest.cs -+Test/System.Web.UI.HtmlControls/HtmlInputTextTest.cs -+Test/System.Web.UI.HtmlControls/HtmlLinkTest.cs -+Test/System.Web.UI.HtmlControls/HtmlMetaTest.cs -+Test/System.Web.UI.HtmlControls/HtmlSelectTest.cs -+Test/System.Web.UI.HtmlControls/HtmlTableCellTest.cs -+Test/System.Web.UI.HtmlControls/HtmlTableRowTest.cs -+Test/System.Web.UI.HtmlControls/HtmlTableTest.cs -+Test/System.Web.UI.HtmlControls/HtmlTextAreaTest.cs -+Test/System.Web.UI/DataSourceSelectArgumentsTest.cs -+Test/System.Web.UI/HtmlTextWriterTest.cs -+Test/System.Web.UI/MinimizableAttributeTypeConverterTest.cs -+Test/System.Web.UI/ObjectStateFormatterTest.cs -+Test/System.Web.UI/OutputCacheParametersTest.cs -+Test/System.Web.UI/PageParserTest.cs -+Test/System.Web.UI/PageParserFilterTest.cs -+Test/System.Web.UI/PageTest.cs -+Test/System.Web.UI/PostBackOptionsTest.cs -+Test/System.Web.UI/PropertyConverterTest.cs -+Test/System.Web.UI/StateBagTest.cs -+Test/System.Web.UI/TemplateControlTest.cs -+Test/System.Web.UI/TemplateInstanceAttributeTest.cs -+Test/System.Web.UI/TestUrlPropertyAttribute.cs -+Test/System.Web.UI/ToolboxDataAttributeTest.cs -+Test/System.Web.UI/XhtmlTextWriterTest.cs -+Test/System.Web.UI.WebControls.Adapters/DataBoundControlAdapterTest.cs -+Test/System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapterTest.cs -+Test/System.Web.UI.WebControls.Adapters/WebControlAdapterTest.cs -+Test/System.Web.UI.WebControls.Adapters/HideDisabledControlAdapterTest.cs -+Test/System.Web.UI.WebControls.Adapters/MenuAdapterTest.cs -+Test/System.Web.UI.WebControls/AccessDataSourceTest.cs -+Test/System.Web.UI.WebControls/AdCreatedEventArgsTest.cs -+Test/System.Web.UI.WebControls/AutoGeneratedFieldTest.cs -+Test/System.Web.UI.WebControls/BaseCompareValidatorTest.cs -+Test/System.Web.UI.WebControls/BaseDataBoundControlTest.cs -+Test/System.Web.UI.WebControls/BaseDataListTest.cs -+Test/System.Web.UI.WebControls/BaseValidatorTest.cs -+Test/System.Web.UI.WebControls/BoundColumnTest.cs -+Test/System.Web.UI.WebControls/BoundFieldTest.cs -+Test/System.Web.UI.WebControls/BulletedListTest.cs -+Test/System.Web.UI.WebControls/ButtonColumnTest.cs -+Test/System.Web.UI.WebControls/ButtonFieldBaseTest.cs -+Test/System.Web.UI.WebControls/ButtonFieldTest.cs -+Test/System.Web.UI.WebControls/ButtonTest.cs -+Test/System.Web.UI.WebControls/CalendarDayTest.cs -+Test/System.Web.UI.WebControls/CalendarTest.cs -+Test/System.Web.UI.WebControls/CallBackTest.cs -+Test/System.Web.UI.WebControls/ChangePasswordTest.cs -+Test/System.Web.UI.WebControls/CheckBoxFieldTest.cs -+Test/System.Web.UI.WebControls/CheckBoxListTest.cs -+Test/System.Web.UI.WebControls/CheckBoxTest.cs -+Test/System.Web.UI.WebControls/CircleHotSpotTest.cs -+Test/System.Web.UI.WebControls/CommandFieldTest.cs -+Test/System.Web.UI.WebControls/CompareValidatorTest.cs -+Test/System.Web.UI.WebControls/CompleteWizardStepTest.cs -+Test/System.Web.UI.WebControls/CompositeControlTest.cs -+Test/System.Web.UI.WebControls/CompositeDataBoundControlTest.cs -+Test/System.Web.UI.WebControls/ContentTest.cs -+Test/System.Web.UI.WebControls/ControlParameterTest.cs -+Test/System.Web.UI.WebControls/CookieParameterTest.cs -+Test/System.Web.UI.WebControls/CreateUserWizardStepTest.cs -+Test/System.Web.UI.WebControls/CreateUserWizardTest.cs -+Test/System.Web.UI.WebControls/CrossPagePostingTest.cs -+Test/System.Web.UI.WebControls/CustomValidatorTest.cs -+Test/System.Web.UI.WebControls/DataBoundControlTest.cs -+Test/System.Web.UI.WebControls/DataControlFieldCollectionTest.cs -+Test/System.Web.UI.WebControls/DataControlFieldTest.cs -+Test/System.Web.UI.WebControls/DataGridColumnTest.cs -+Test/System.Web.UI.WebControls/DataGridItemCollectionTest.cs -+Test/System.Web.UI.WebControls/DataGridItemTest.cs -+Test/System.Web.UI.WebControls/DataGridPagerStyleTest.cs -+Test/System.Web.UI.WebControls/DataGridTest.cs -+Test/System.Web.UI.WebControls/DataKeyArrayTest.cs -+Test/System.Web.UI.WebControls/DataKeyCollectionTest.cs -+Test/System.Web.UI.WebControls/DataKeyTest.cs -+Test/System.Web.UI.WebControls/DataListItemCollectionTest.cs -+Test/System.Web.UI.WebControls/DataListItemTest.cs -+Test/System.Web.UI.WebControls/DataListTest.cs -+Test/System.Web.UI.WebControls/DataSourceControlTest.cs -+Test/System.Web.UI.WebControls/DataSourceViewTest.cs -+Test/System.Web.UI.WebControls/DetailsViewTest.cs -+Test/System.Web.UI.WebControls/DetailsViewRowTest.cs -+Test/System.Web.UI.WebControls/DetailsViewRowCollectionTest.cs -+Test/System.Web.UI.WebControls/DropDownListTest.cs -+Test/System.Web.UI.WebControls/EditCommandColumnTest.cs -+Test/System.Web.UI.WebControls/FileUploadTest.cs -+Test/System.Web.UI.WebControls/FontInfoTest.cs -+Test/System.Web.UI.WebControls/FontNamesConverterTest.cs -+Test/System.Web.UI.WebControls/FontUnitTest.cs -+Test/System.Web.UI.WebControls/FormParameterTest.cs -+Test/System.Web.UI.WebControls/FormViewTest.cs -+Test/System.Web.UI.WebControls/FormViewRowTest.cs -+Test/System.Web.UI.WebControls/GridViewTest.cs -+Test/System.Web.UI.WebControls/GridViewRowCollectionTest.cs -+Test/System.Web.UI.WebControls/GridViewRowTest.cs -+Test/System.Web.UI.WebControls/HyperLinkColumnTest.cs -+Test/System.Web.UI.WebControls/HotSpotCollectionTest.cs -+Test/System.Web.UI.WebControls/HotSpotTest.cs -+Test/System.Web.UI.WebControls/HyperLinkFieldTest.cs -+Test/System.Web.UI.WebControls/HyperLinkTest.cs -+Test/System.Web.UI.WebControls/ImageButtonTest.cs -+Test/System.Web.UI.WebControls/ImageFieldTest.cs -+Test/System.Web.UI.WebControls/ImageMapTest.cs -+Test/System.Web.UI.WebControls/ImageTest.cs -+Test/System.Web.UI.WebControls/LabelTest.cs -+Test/System.Web.UI.WebControls/LinkButtonTest.cs -+Test/System.Web.UI.WebControls/ListBoxTest.cs -+Test/System.Web.UI.WebControls/ListControlTest.cs -+Test/System.Web.UI.WebControls/ListItemTest.cs -+Test/System.Web.UI.WebControls/ListItemCollectionTest.cs -+Test/System.Web.UI.WebControls/LiteralTest.cs -+Test/System.Web.UI.WebControls/LoginNameTest.cs -+Test/System.Web.UI.WebControls/LoginStatusTest.cs -+Test/System.Web.UI.WebControls/LoginTest.cs -+Test/System.Web.UI.WebControls/MappingUrlTest.cs -+Test/System.Web.UI.WebControls/MasterPageTest.cs -+Test/System.Web.UI.WebControls/MonthChangedEventArgsTest.cs -+Test/System.Web.UI.WebControls/MultiViewTest.cs -+Test/System.Web.UI.WebControls/MultiViewControlBuilderTest.cs -+Test/System.Web.UI.WebControls/PagedDataSourceTest.cs -+Test/System.Web.UI.WebControls/PagerSettingsTest.cs -+Test/System.Web.UI.WebControls/PanelTest.cs -+Test/System.Web.UI.WebControls/ParameterTest.cs -+Test/System.Web.UI.WebControls/PasswordRecoveryTest.cs -+Test/System.Web.UI.WebControls/PolygonHotSpotTest.cs -+Test/System.Web.UI.WebControls/QueryStringParameterTest.cs -+Test/System.Web.UI.WebControls/RadioButtonListTest.cs -+Test/System.Web.UI.WebControls/RadioButtonTest.cs -+Test/System.Web.UI.WebControls/RangeValidatorTest.cs -+Test/System.Web.UI.WebControls/RectangleHotSpotTest.cs -+Test/System.Web.UI.WebControls/RegularExpressionValidatorTest.cs -+Test/System.Web.UI.WebControls/RepeatInfoTest.auto.cs -+Test/System.Web.UI.WebControls/RepeatInfoTest.auto.2.0.cs -+Test/System.Web.UI.WebControls/RepeatInfoTest.auto.4.0.cs -+Test/System.Web.UI.WebControls/RepeatInfoTest.cs -+Test/System.Web.UI.WebControls/RepeatInfoUser.cs -+Test/System.Web.UI.WebControls/RepeaterItemCollectionTest.cs -+Test/System.Web.UI.WebControls/RepeaterTest.cs -+Test/System.Web.UI.WebControls/RoleGroupCollectionTest.cs -+Test/System.Web.UI.WebControls/RoleGroupTest.cs -+Test/System.Web.UI.WebControls/SelectedDatesCollectionTest.cs -+Test/System.Web.UI.WebControls/SqlDataSourceTest.cs -+Test/System.Web.UI.WebControls/SqlDataSourceViewTest.cs -+Test/System.Web.UI.WebControls/ObjectDataSourceTest.cs -+Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs -+Test/System.Web.UI.WebControls/SessionParameterTest.cs -+Test/System.Web.UI.WebControls/StyleTest.cs -+Test/System.Web.UI.WebControls/TableCellTest.cs -+Test/System.Web.UI.WebControls/TableFooterRowTest.cs -+Test/System.Web.UI.WebControls/TableHeaderCellTest.cs -+Test/System.Web.UI.WebControls/TableHeaderRowTest.cs -+Test/System.Web.UI.WebControls/TableItemStyleTest.cs -+Test/System.Web.UI.WebControls/TableRowTest.cs -+Test/System.Web.UI.WebControls/TableSectionStyleTest.cs -+Test/System.Web.UI.WebControls/TableStyleTest.cs -+Test/System.Web.UI.WebControls/TableTest.cs -+Test/System.Web.UI.WebControls/TemplateFieldTest.cs -+Test/System.Web.UI.WebControls/TargetConverterTest.cs -+Test/System.Web.UI.WebControls/TestControlIDConverter.cs -+Test/System.Web.UI.WebControls/TextBoxTest.cs -+Test/System.Web.UI.WebControls/TreeViewTest.cs -+Test/System.Web.UI.WebControls/UnitConverterTest.cs -+Test/System.Web.UI.WebControls/UnitTest.cs -+Test/System.Web.UI.WebControls/ValidatedControlConverterTest.cs -+Test/System.Web.UI.WebControls/ValidationSummaryTest.cs -+Test/System.Web.UI.WebControls/ValidatorTest.cs -+Test/System.Web.UI.WebControls/ViewTest.cs -+Test/System.Web.UI.WebControls/WebColorConverterTest.cs -+Test/System.Web.UI.WebControls/WebControlTest.cs -+Test/System.Web.UI.WebControls/WizardTest.cs -+Test/System.Web.UI.WebControls/WizardStepBaseTest.cs -+Test/System.Web.UI.WebControls/WizardStepCollectionTest.cs -+Test/System.Web.UI.WebControls/WizardStepTest.cs -+Test/System.Web.UI.WebControls/XmlTest.cs -+Test/System.Web.UI.WebControls/XmlDataSourceTest.cs -+Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs -+Test/System.Web.UI.WebControls.WebParts/ConnectionInterfaceCollectionTest.cs -+Test/System.Web.UI.WebControls.WebParts/WebPartTest.cs -+Test/System.Web/VirtualPathUtilityTest.cs -+Test/Cas/AspNetHostingPermissionHelper.cs -+Test/Cas/AspNetHostingMinimal.cs -+Test/Cas/AspNetHostingNone.cs -+Test/System.Web/HttpApplicationCas.cs -+Test/System.Web/HttpApplicationStateCas.cs -+Test/System.Web/HttpBrowserCapabilitiesCas.cs -+Test/System.Web/HttpCachePolicyCas.cs -+Test/System.Web/HttpCacheVaryByHeadersCas.cs -+Test/System.Web/HttpCacheVaryByParamsCas.cs -+Test/System.Web/HttpClientCertificateCas.cs -+Test/System.Web/HttpCompileExceptionCas.cs -+Test/System.Web/HttpContextCas.cs -+Test/System.Web/HttpCookieCas.cs -+Test/System.Web/HttpCookieCollectionCas.cs -+Test/System.Web/HttpExceptionCas.cs -+Test/System.Web/HttpExceptionTest.cs -+Test/System.Web/HttpFileCollectionCas.cs -+Test/System.Web/HttpModuleCollectionCas.cs -+Test/System.Web/HttpParseExceptionCas.cs -+Test/System.Web/HttpRequestCas.cs -+Test/System.Web/HttpRequestValidationExceptionCas.cs -+Test/System.Web/HttpResponseCas.cs -+Test/System.Web/HttpRuntimeCas.cs -+Test/System.Web/HttpServerUtilityCas.cs -+Test/System.Web/HttpStaticObjectsCollectionCas.cs -+Test/System.Web/HttpUnhandledExceptionCas.cs -+Test/System.Web/HttpUtilityCas.cs -+Test/System.Web/HttpWorkerRequestCas.cs -+Test/System.Web/HttpWriter.cs -+Test/System.Web/HttpWriterCas.cs -+Test/System.Web/ProcessInfoCas.cs -+Test/System.Web/ProcessModelInfoCas.cs -+Test/System.Web/TraceContextCas.cs -+Test/System.Web.Caching/AggregateCacheDependencyTest.cs -+Test/System.Web.Caching/CacheCas.cs -+Test/System.Web.Caching/CacheDependencyCas.cs -+Test/System.Web.Caching/CacheItemPriorityQueueTest.cs -+Test/System.Web.Caching/CacheItemPriorityQueueTestSupport.cs -+Test/System.Web.Caching/CacheItemPriorityQueueTest_generated.cs -+Test/System.Web.Caching/FileResponseElementTest.cs -+Test/System.Web.Caching/HeaderElementTest.cs -+Test/System.Web.Caching/MemoryResponseElementTest.cs -+Test/System.Web.Caching/OutputCacheTest.cs -+Test/System.Web.Caching/SubstitutionResponseElementTest.cs -+Test/System.Web.Caching/SqlCacheDependencyTest.cs -+Test/System.Web.Configuration/HttpCapabilitiesBaseCas.cs -+Test/System.Web.Handlers/TraceHandlerCas.cs -+Test/System.Web.Hosting/AppDomainFactoryCas.cs -+Test/System.Web.Hosting/ApplicationHostCas.cs -+Test/System.Web.Hosting/ISAPIRuntimeCas.cs -+Test/System.Web.Hosting/SimpleWorkerRequestCas.cs -+Test/System.Web.Mail/MailAttachmentCas.cs -+Test/System.Web.Mail/MailMessageCas.cs -+Test/System.Web.Mail/SmtpMailCas.cs -+Test/System.Web.SessionState/StateRuntimeCas.cs -+Test/System.Web.SessionState/SessionStateModuleCas.cs -+Test/System.Web.Security/DefaultAuthenticationEventArgsCas.cs -+Test/System.Web.Security/DefaultAuthenticationModuleCas.cs -+Test/System.Web.Security/FileAuthorizationModuleCas.cs -+Test/System.Web.Security/FormsAuthenticationCas.cs -+Test/System.Web.Security/FormsAuthenticationEventArgsCas.cs -+Test/System.Web.Security/FormsAuthenticationModuleCas.cs -+Test/System.Web.Security/FormsAuthenticationTicketCas.cs -+Test/System.Web.Security/FormsIdentityCas.cs -+Test/System.Web.Security/MachineKeyTest.cs -+Test/System.Web.Security/PassportAuthenticationEventArgsCas.cs -+Test/System.Web.Security/PassportAuthenticationModuleCas.cs -+Test/System.Web.Security/PassportIdentityCas.cs -+Test/System.Web.Security/UrlAuthorizationModuleCas.cs -+Test/System.Web.Security/WindowsAuthenticationEventArgsCas.cs -+Test/System.Web.Security/WindowsAuthenticationModuleCas.cs -+Test/System.Web.UI/AttributeCollectionCas.cs -+Test/System.Web.UI/BaseParserCas.cs -+Test/System.Web.UI/CompiledTemplateBuilderCas.cs -+Test/System.Web.UI/ConstructorNeedsTagAttributeCas.cs -+Test/System.Web.UI/ControlBuilderAttributeCas.cs -+Test/System.Web.UI/ControlBuilderCas.cs -+Test/System.Web.UI/ControlCas.cs -+Test/System.Web.UI/ControlCollectionCas.cs -+Test/System.Web.UI/CssStyleCollectionCas.cs -+Test/System.Web.UI/DataBinderCas.cs -+Test/System.Web.UI/DataBinderTest.cs -+Test/System.Web.UI/DataBindingCas.cs -+Test/System.Web.UI/DataBindingCollectionCas.cs -+Test/System.Web.UI/DataBindingHandlerAttributeCas.cs -+Test/System.Web.UI/DataBoundLiteralControlCas.cs -+Test/System.Web.UI/DesignerDataBoundLiteralControlCas.cs -+Test/System.Web.UI/DesignTimeParseDataCas.cs -+Test/System.Web.UI/DesignTimeTemplateParserCas.cs -+Test/System.Web.UI/EmptyCollectionCas.cs -+Test/System.Web.UI/Html32TextWriterCas.cs -+Test/System.Web.UI/HtmlTextWriterCas.cs -+Test/System.Web.UI/ImageClickEventArgsCas.cs -+Test/System.Web.UI/LiteralControlCas.cs -+Test/System.Web.UI/LosFormatterCas.cs -+Test/System.Web.UI/LosFormatterTest.cs -+Test/System.Web.UI/ObjectConverterCas.cs -+Test/System.Web.UI/ObjectTagBuilderCas.cs -+Test/System.Web.UI/PageCas.cs -+Test/System.Web.UI/PairCas.cs -+Test/System.Web.UI/ParseChildrenAttributeCas.cs -+Test/System.Web.UI/PartialCachingAttributeCas.cs -+Test/System.Web.UI/PersistChildrenAttributeCas.cs -+Test/System.Web.UI/PersistenceModeAttributeCas.cs -+Test/System.Web.UI/PropertyConverterCas.cs -+Test/System.Web.UI/RootBuilderCas.cs -+Test/System.Web.UI/StateBagCas.cs -+Test/System.Web.UI/StateItemCas.cs -+Test/System.Web.UI/StaticPartialCachingControlCas.cs -+Test/System.Web.UI/TagPrefixAttributeCas.cs -+Test/System.Web.UI/TemplateBuilderCas.cs -+Test/System.Web.UI/TemplateContainerAttributeCas.cs -+Test/System.Web.UI/TemplateControlCas.cs -+Test/System.Web.UI/ToolboxDataAttributeCas.cs -+Test/System.Web.UI/TripletCas.cs -+Test/System.Web.UI/UserControlCas.cs -+Test/System.Web.UI/UserControlControlBuilderCas.cs -+Test/System.Web.UI/ValidationPropertyAttributeCas.cs -+Test/System.Web.UI/ValidatorCollectionCas.cs -+Test/System.Web.UI.HtmlControls/HtmlAnchorCas.cs -+Test/System.Web.UI.HtmlControls/HtmlButtonCas.cs -+Test/System.Web.UI.HtmlControls/HtmlContainerControlCas.cs -+Test/System.Web.UI.HtmlControls/HtmlEmptyTagControlBuilderCas.cs -+Test/System.Web.UI.HtmlControls/HtmlFormCas.cs -+Test/System.Web.UI.HtmlControls/HtmlGenericControlCas.cs -+Test/System.Web.UI.HtmlControls/HtmlHeadBuilderCas.cs -+Test/System.Web.UI.HtmlControls/HtmlHeadCas.cs -+Test/System.Web.UI.HtmlControls/HtmlImageCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputButtonCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputCheckBoxCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputControlCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputFileCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputHiddenCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputImageCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputPasswordCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputRadioButtonCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputResetCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputSubmitCas.cs -+Test/System.Web.UI.HtmlControls/HtmlInputTextCas.cs -+Test/System.Web.UI.HtmlControls/HtmlLinkCas.cs -+Test/System.Web.UI.HtmlControls/HtmlMetaCas.cs -+Test/System.Web.UI.HtmlControls/HtmlSelectBuilderCas.cs -+Test/System.Web.UI.HtmlControls/HtmlSelectCas.cs -+Test/System.Web.UI.HtmlControls/HtmlTableCas.cs -+Test/System.Web.UI.HtmlControls/HtmlTableCellCas.cs -+Test/System.Web.UI.HtmlControls/HtmlTableRowCas.cs -+Test/System.Web.UI.HtmlControls/HtmlTextAreaCas.cs -+Test/System.Web.UI.HtmlControls/HtmlTitleCas.cs -+Test/System.Web.UI.WebControls/AdCreatedEventArgsCas.cs -+Test/System.Web.UI.WebControls/BaseCompareValidatorCas.cs -+Test/System.Web.UI.WebControls/BaseDataBoundControlCas.cs -+Test/System.Web.UI.WebControls/BaseDataListCas.cs -+Test/System.Web.UI.WebControls/BaseValidatorCas.cs -+Test/System.Web.UI.WebControls/BoundColumnCas.cs -+Test/System.Web.UI.WebControls/ButtonColumnCas.cs -+Test/System.Web.UI.WebControls/CalandarCas.cs -+Test/System.Web.UI.WebControls/CalendarDayCas.cs -+Test/System.Web.UI.WebControls/CheckBoxCas.cs -+Test/System.Web.UI.WebControls/CheckBoxListCas.cs -+Test/System.Web.UI.WebControls/CompareValidatorCas.cs -+Test/System.Web.UI.WebControls/CompositeControlCas.cs -+Test/System.Web.UI.WebControls/CustomValidatorCas.cs -+Test/System.Web.UI.WebControls/DataBoundControlCas.cs -+Test/System.Web.UI.WebControls/DataGridCas.cs -+Test/System.Web.UI.WebControls/DataGridColumnCas.cs -+Test/System.Web.UI.WebControls/DataGridItemCas.cs -+Test/System.Web.UI.WebControls/DataGridItemCollectionCas.cs -+Test/System.Web.UI.WebControls/DataGridPagerStyleCas.cs -+Test/System.Web.UI.WebControls/DataKeyCollectionCas.cs -+Test/System.Web.UI.WebControls/DataListCas.cs -+Test/System.Web.UI.WebControls/DataListItemCas.cs -+Test/System.Web.UI.WebControls/DataListItemCollectionCas.cs -+Test/System.Web.UI.WebControls/DropDownListCas.cs -+Test/System.Web.UI.WebControls/EditCommandColumnCas.cs -+Test/System.Web.UI.WebControls/FontInfoCas.cs -+Test/System.Web.UI.WebControls/FontNamesConverterCas.cs -+Test/System.Web.UI.WebControls/FontUnitCas.cs -+Test/System.Web.UI.WebControls/FormViewCas.cs -+Test/System.Web.UI.WebControls/HierarchicalDataBoundControlTest.cs -+Test/System.Web.UI.WebControls/HyperLinkCas.cs -+Test/System.Web.UI.WebControls/HyperLinkColumnCas.cs -+Test/System.Web.UI.WebControls/ImageButtonCas.cs -+Test/System.Web.UI.WebControls/ImageCas.cs -+Test/System.Web.UI.WebControls/LabelCas.cs -+Test/System.Web.UI.WebControls/LinkButtonCas.cs -+Test/System.Web.UI.WebControls/ListBoxCas.cs -+Test/System.Web.UI.WebControls/ListControlCas.cs -+Test/System.Web.UI.WebControls/ListItemCas.cs -+Test/System.Web.UI.WebControls/ListItemCollectionCas.cs -+Test/System.Web.UI.WebControls/LiteralCas.cs -+Test/System.Web.UI.WebControls/LoginCas.cs -+Test/System.Web.UI.WebControls/LoginNameCas.cs -+Test/System.Web.UI.WebControls/LoginStatusCas.cs -+Test/System.Web.UI.WebControls/MenuTest.cs -+Test/System.Web.UI.WebControls/MenuItemBindingTest.cs -+Test/System.Web.UI.WebControls/MonthChangedEventArgsCas.cs -+Test/System.Web.UI.WebControls/PagedDataSourceCas.cs -+Test/System.Web.UI.WebControls/PanelCas.cs -+Test/System.Web.UI.WebControls/RadioButtonCas.cs -+Test/System.Web.UI.WebControls/RadioButtonListCas.cs -+Test/System.Web.UI.WebControls/RangeValidatorCas.cs -+Test/System.Web.UI.WebControls/RegularExpressionValidatorCas.cs -+Test/System.Web.UI.WebControls/RepeaterCas.cs -+Test/System.Web.UI.WebControls/RepeatInfoCas.cs -+Test/System.Web.UI.WebControls/RequiredFieldValidatorCas.cs -+Test/System.Web.UI.WebControls/RoleGroupCas.cs -+Test/System.Web.UI.WebControls/RoleGroupCollectionCas.cs -+Test/System.Web.UI.WebControls/RouteParameterTest.cs -+Test/System.Web.UI.WebControls/SelectedDatesCollectionCas.cs -+Test/System.Web.UI.WebControls/SiteMapPathTest.cs -+Test/System.Web.UI.WebControls/StyleCas.cs -+Test/System.Web.UI.WebControls/TableCas.cs -+Test/System.Web.UI.WebControls/TableCellCas.cs -+Test/System.Web.UI.WebControls/TableFooterRowCas.cs -+Test/System.Web.UI.WebControls/TableHeaderCellCas.cs -+Test/System.Web.UI.WebControls/TableHeaderRowCas.cs -+Test/System.Web.UI.WebControls/TableItemStyleCas.cs -+Test/System.Web.UI.WebControls/TableRowCas.cs -+Test/System.Web.UI.WebControls/TableSectionStyleCas.cs -+Test/System.Web.UI.WebControls/TableStyleCas.cs -+Test/System.Web.UI.WebControls/TargetConverterCas.cs -+Test/System.Web.UI.WebControls/TextBoxCas.cs -+Test/System.Web.UI.WebControls/ThemeTest.cs -+Test/System.Web.UI.WebControls/TreeViewCas.cs -+Test/System.Web.UI.WebControls/TreeNodeBindingTest.cs -+Test/System.Web.UI.WebControls/TreeNodeBindingCollectionTest.cs -+Test/System.Web.UI.WebControls/TreeNodeCollectionTest.cs -+Test/System.Web.UI.WebControls/TreeNodeStyleCollectionTest.cs -+Test/System.Web.UI.WebControls/TreeNodeStyleTest.cs -+Test/System.Web.UI.WebControls/TreeNodeTest.cs -+Test/System.Web.UI.WebControls/UnitCas.cs -+Test/System.Web.UI.WebControls/UnitConverterCas.cs -+Test/System.Web.UI.WebControls/ValidatedControlConverterCas.cs -+Test/System.Web.UI.WebControls/ValidationSummaryCas.cs -+Test/System.Web.UI.WebControls/WebColorConverterCas.cs -+Test/System.Web.UI.WebControls/WebControlCas.cs -+Test/System.Web.UI.WebControls/XmlCas.cs -+Test/System.Web.UI.WebControls/XmlDataSourceCas.cs -+Test/System.Web.Util/HttpEncoderTest.cs -+Test/System.Web.Util/MachineKeySectionUtilsTest.cs -+Test/System.Web.Util/RequestValidatorTest.cs -+Test/System.Web.Util/TransactionsCas.cs -+Test/System.Web.Util/UrlUtilsTest.cs -+Test/System.Web.Util/WorkItemCas.cs -+Test/System.Web/XmlSiteMapProviderTest.cs ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/System.Web_standalone_test_net_4_0.dll.makefrag -@@ -0,0 +1,27 @@ -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/Consts.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/Locations.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/OutputCacheProvider.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/RequestValidator.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/RequestValidatorTestGenerated.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/SiteMapDuplicateEntries_Bug570194.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/Unhandled_Exception_Global_Asax.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/BuildManagerCacheFiles.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/ApplicationPreStartMethods.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/Control_GetUniqueIDRelativeTo.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/RegisterBuildProvider.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/PageMetaAttributes.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/FormViewUpdateParameters_Bug607722.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/RootBuilderChildControlTypes_Bug603541.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/MD5PasswordAuth_Bug601727.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/WebControlsMustUseIsEnabled_Bug571715.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/ControlRenderingCompatibilityVersion.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/DisabledAttributeRendering.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/GridViewShowHeaderWhenEmpty.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/GridViewSortingStyles.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/SiteMapPathRendering.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/PageParserDefaultTypeProperties.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/ChildrenAsProperties.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/Menu_4.0_List.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/EnableFormsAuthentication.cs -+System.Web_standalone_test_net_4_0.dll: Test/standalone-tests/XmlSiteMapProvider_ReturnsRootNode_Bug684803.cs -+System.Web_standalone_test_net_4_0.dll: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.Runtime.Serialization.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.Runtime.Serialization.dll.sources: System.Runtime.Serialization.dll.sources -+System.Runtime.Serialization.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.Web.ApplicationServices.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.Web.ApplicationServices.dll.sources: System.Web.ApplicationServices.dll.sources -+System.Web.ApplicationServices.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.ServiceModel.Web.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.ServiceModel.Web.dll.sources: common_System.ServiceModel.Web.dll.sources -+common_System.ServiceModel.Web.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/net_4_0_System.ComponentModel.DataAnnotations.dll.sources.makefrag -@@ -0,0 +1,2 @@ -+../../build/deps/net_4_0_System.ComponentModel.DataAnnotations.dll.sources: System.ComponentModel.DataAnnotations.dll.sources -+System.ComponentModel.DataAnnotations.dll.sources: ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/System.Web.Extensions_standalone_test_net_4_0.dll.makefrag -@@ -0,0 +1,2 @@ -+System.Web.Extensions_standalone_test_net_4_0.dll: Test/standalone-tests/Consts.cs -+System.Web.Extensions_standalone_test_net_4_0.dll: Test/standalone-tests/DataPager_NumericPagerField_Bug615315.cs ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/build/deps/System.Web_test_net_4_0.dll.makefrag -@@ -0,0 +1,562 @@ -+System.Web_test_net_4_0.dll: Test/../../System.Web.DynamicData/Test/Common/AssertExtensions.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/AssemblyInfo.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/crc32.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/Header.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlAttribute.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlDocument.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlEntity.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlNode.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlNodeNavigator.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/HtmlWeb.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/MixedCodeDocument.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/ParseReader.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/HtmlAgilityPack/tools.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/NunitWebTest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/MainsoftWebTest/XmlComparer.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/BaseControl.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/BaseControlCollection.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/BaseInvoker.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/BaseRequest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/BaseWorkerRequest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/CustomSection.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/FakeMembershipProvider.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/FormRequest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Global.asax.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/IForeignData.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/HandlerInvoker.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/MyHandler.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/MyHost.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/MyPageHandlerFactory.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/MyTemplateControls.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/PageDelegates.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/PageInvoker.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/PostableRequest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/PostableWorkerRequest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Response.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/StandardUrl.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/TestRoleProvider.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/WebTest.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/WebTestLocal.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/WebTestResourcesSetupAttribute.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Tests/TagsNestedInClientTag.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Tests/TestSiteMapProvider.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Tests/Author.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Tests/AuthorConverter.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Tests/Book.cs -+System.Web_test_net_4_0.dll: Test/mainsoft/NunitWeb/NunitWeb/Tests/BookType.cs -+System.Web_test_net_4_0.dll: Test/System.Web/AppBrowsersTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpApplicationTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpBrowserCapabilitiesTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCacheVaryByContentEncodingsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCacheVaryByHeadersTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCacheVaryByParamsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpClientCertificateTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpContext.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCookieCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCookieTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpRequestTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpResponseTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpRuntimeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpServerUtilityTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpUtilityTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/SiteMapProviderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/SiteMapNodeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/StaticSiteMapProviderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/TraceContextRecordTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/BuildManagerTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/ClientBuildManagerParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/TemplateControlCompilerTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/AppSettingsExpressionBuilderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/AppResourcesCompilerTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/RouteUrlExpressionBuilderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Compilation/BuildProviderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AnonymousIdentificationSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AssemblyCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AssemblyInfoTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AuthenticationSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AuthorizationRuleCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AuthorizationRuleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/AuthorizationSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/BufferModeSettingsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/BuildProviderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/CacheSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/ClientTargetTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/ClientTargetSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/CodeSubDirectoryTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/CompilationSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/CustomErrorsSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/CustomErrorCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/DeploymentSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/GlobalizationSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/HostingEnvironmentSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/MachineKeySectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/MachineKeyValidationConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/NullableStringValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/ProfilePropertySettingsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/SiteMapSectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/WebConfigurationManagerTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/ApplicationHostTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/HostingEnvironmentTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/SimpleWorkerRequestTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/VirtualPathProviderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Profile/ProfileInfoTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsAuthenticationTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsIdentityTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/MembershipTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/MembershipProviderCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/MembershipProviderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/MembershipUserCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/RolePrincipalTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/RolesTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/AttributeCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ChtmlTextWriterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/CleanHtmlTextWriter.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ClientScriptManagerTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ControlCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataKeyPropertyAttributeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/CssStyleCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBindingCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBindingHandlerAttributeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataSourceCacheDurationConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/LiteralControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.Adapters/ControlAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.Adapters/PageAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlAnchorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlContainerControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlFormTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlHeadTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlImageTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputCheckBoxTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputFileTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputHiddenTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputPasswordTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputRadioButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputResetTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputSubmitTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputTextTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlLinkTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlMetaTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlSelectTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTableCellTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTableRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTableTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTextAreaTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataSourceSelectArgumentsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/HtmlTextWriterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/MinimizableAttributeTypeConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ObjectStateFormatterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/OutputCacheParametersTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PageParserTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PageParserFilterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PageTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PostBackOptionsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PropertyConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/StateBagTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TemplateControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TemplateInstanceAttributeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TestUrlPropertyAttribute.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ToolboxDataAttributeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/XhtmlTextWriterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.Adapters/DataBoundControlAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.Adapters/WebControlAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.Adapters/HideDisabledControlAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.Adapters/MenuAdapterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/AccessDataSourceTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/AdCreatedEventArgsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/AutoGeneratedFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseCompareValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseDataBoundControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseDataListTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BoundColumnTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BoundFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BulletedListTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ButtonColumnTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ButtonFieldBaseTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ButtonFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CalendarDayTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CalendarTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CallBackTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ChangePasswordTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CheckBoxFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CheckBoxListTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CheckBoxTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CircleHotSpotTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CommandFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CompareValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CompleteWizardStepTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CompositeControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CompositeDataBoundControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ContentTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ControlParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CookieParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CreateUserWizardStepTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CreateUserWizardTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CrossPagePostingTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CustomValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataBoundControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataControlFieldCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataControlFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridColumnTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridItemCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridItemTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridPagerStyleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataKeyArrayTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataKeyCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataKeyTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataListItemCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataListItemTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataListTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataSourceControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataSourceViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DetailsViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DetailsViewRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DetailsViewRowCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DropDownListTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/EditCommandColumnTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FileUploadTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FontInfoTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FontNamesConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FontUnitTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FormParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FormViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FormViewRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/GridViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/GridViewRowCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/GridViewRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HyperLinkColumnTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HotSpotCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HotSpotTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HyperLinkFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HyperLinkTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ImageButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ImageFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ImageMapTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ImageTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LabelTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LinkButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListBoxTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListItemTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListItemCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LiteralTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LoginNameTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LoginStatusTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LoginTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MappingUrlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MasterPageTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MonthChangedEventArgsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MultiViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MultiViewControlBuilderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PagedDataSourceTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PagerSettingsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PanelTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PasswordRecoveryTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PolygonHotSpotTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/QueryStringParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RadioButtonListTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RadioButtonTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RangeValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RectangleHotSpotTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RegularExpressionValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeatInfoTest.auto.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeatInfoTest.auto.2.0.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeatInfoTest.auto.4.0.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeatInfoTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeatInfoUser.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeaterItemCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeaterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RoleGroupCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RoleGroupTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SelectedDatesCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SqlDataSourceTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SqlDataSourceViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ObjectDataSourceTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ObjectDataSourceViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SessionParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/StyleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableCellTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableFooterRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableHeaderCellTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableHeaderRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableItemStyleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableRowTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableSectionStyleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableStyleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TemplateFieldTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TargetConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TestControlIDConverter.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TextBoxTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/UnitConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/UnitTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ValidatedControlConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ValidationSummaryTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ViewTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WebColorConverterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WebControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WizardTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WizardStepBaseTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WizardStepCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WizardStepTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/XmlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/XmlDataSourceTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SiteMapDataSourceTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.WebParts/ConnectionInterfaceCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls.WebParts/WebPartTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/VirtualPathUtilityTest.cs -+System.Web_test_net_4_0.dll: Test/Cas/AspNetHostingPermissionHelper.cs -+System.Web_test_net_4_0.dll: Test/Cas/AspNetHostingMinimal.cs -+System.Web_test_net_4_0.dll: Test/Cas/AspNetHostingNone.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpApplicationCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpApplicationStateCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpBrowserCapabilitiesCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCachePolicyCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCacheVaryByHeadersCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCacheVaryByParamsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpClientCertificateCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCompileExceptionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpContextCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCookieCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpCookieCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpExceptionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpExceptionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpFileCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpModuleCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpParseExceptionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpRequestCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpRequestValidationExceptionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpResponseCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpRuntimeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpServerUtilityCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpStaticObjectsCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpUnhandledExceptionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpUtilityCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpWorkerRequestCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpWriter.cs -+System.Web_test_net_4_0.dll: Test/System.Web/HttpWriterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/ProcessInfoCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/ProcessModelInfoCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/TraceContextCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/AggregateCacheDependencyTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/CacheCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/CacheDependencyCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/CacheItemPriorityQueueTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/CacheItemPriorityQueueTestSupport.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/CacheItemPriorityQueueTest_generated.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/FileResponseElementTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/HeaderElementTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/MemoryResponseElementTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/OutputCacheTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/SubstitutionResponseElementTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Caching/SqlCacheDependencyTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Configuration/HttpCapabilitiesBaseCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Handlers/TraceHandlerCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/AppDomainFactoryCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/ApplicationHostCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/ISAPIRuntimeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Hosting/SimpleWorkerRequestCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Mail/MailAttachmentCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Mail/MailMessageCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Mail/SmtpMailCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.SessionState/StateRuntimeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.SessionState/SessionStateModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/DefaultAuthenticationEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/DefaultAuthenticationModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FileAuthorizationModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsAuthenticationCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsAuthenticationEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsAuthenticationModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsAuthenticationTicketCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/FormsIdentityCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/MachineKeyTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/PassportAuthenticationEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/PassportAuthenticationModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/PassportIdentityCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/UrlAuthorizationModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/WindowsAuthenticationEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Security/WindowsAuthenticationModuleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/AttributeCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/BaseParserCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/CompiledTemplateBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ConstructorNeedsTagAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ControlBuilderAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ControlBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ControlCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/CssStyleCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBinderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBinderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBindingCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBindingCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBindingHandlerAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DataBoundLiteralControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DesignerDataBoundLiteralControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DesignTimeParseDataCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/DesignTimeTemplateParserCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/EmptyCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/Html32TextWriterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/HtmlTextWriterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ImageClickEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/LiteralControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/LosFormatterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/LosFormatterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ObjectConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ObjectTagBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PageCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PairCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ParseChildrenAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PartialCachingAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PersistChildrenAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PersistenceModeAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/PropertyConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/RootBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/StateBagCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/StateItemCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/StaticPartialCachingControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TagPrefixAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TemplateBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TemplateContainerAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TemplateControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ToolboxDataAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/TripletCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/UserControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/UserControlControlBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ValidationPropertyAttributeCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI/ValidatorCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlAnchorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlButtonCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlContainerControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlEmptyTagControlBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlFormCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlGenericControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlHeadBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlHeadCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlImageCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputButtonCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputCheckBoxCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputFileCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputHiddenCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputImageCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputPasswordCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputRadioButtonCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputResetCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputSubmitCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlInputTextCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlLinkCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlMetaCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlSelectBuilderCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlSelectCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTableCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTableCellCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTableRowCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTextAreaCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.HtmlControls/HtmlTitleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/AdCreatedEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseCompareValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseDataBoundControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseDataListCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BaseValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/BoundColumnCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ButtonColumnCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CalandarCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CalendarDayCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CheckBoxCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CheckBoxListCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CompareValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CompositeControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/CustomValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataBoundControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridColumnCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridItemCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridItemCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataGridPagerStyleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataKeyCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataListCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataListItemCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DataListItemCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/DropDownListCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/EditCommandColumnCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FontInfoCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FontNamesConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FontUnitCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/FormViewCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HierarchicalDataBoundControlTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HyperLinkCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/HyperLinkColumnCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ImageButtonCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ImageCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LabelCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LinkButtonCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListBoxCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListItemCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ListItemCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LiteralCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LoginCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LoginNameCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/LoginStatusCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MenuTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MenuItemBindingTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/MonthChangedEventArgsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PagedDataSourceCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/PanelCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RadioButtonCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RadioButtonListCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RangeValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RegularExpressionValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeaterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RepeatInfoCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RequiredFieldValidatorCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RoleGroupCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RoleGroupCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/RouteParameterTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SelectedDatesCollectionCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/SiteMapPathTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/StyleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableCellCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableFooterRowCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableHeaderCellCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableHeaderRowCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableItemStyleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableRowCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableSectionStyleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TableStyleCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TargetConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TextBoxCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ThemeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeViewCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeNodeBindingTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeNodeBindingCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeNodeCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeNodeStyleCollectionTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeNodeStyleTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/TreeNodeTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/UnitCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/UnitConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ValidatedControlConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/ValidationSummaryCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WebColorConverterCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/WebControlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/XmlCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.UI.WebControls/XmlDataSourceCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Util/HttpEncoderTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Util/MachineKeySectionUtilsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Util/RequestValidatorTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Util/TransactionsCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Util/UrlUtilsTest.cs -+System.Web_test_net_4_0.dll: Test/System.Web.Util/WorkItemCas.cs -+System.Web_test_net_4_0.dll: Test/System.Web/XmlSiteMapProviderTest.cs ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/class/lib/net_2_0/monodoc.dll.config -@@ -0,0 +1,3 @@ -+ -+ -+ ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/class/Commons.Xml.Relaxng/y.output -@@ -0,0 +1,3789 @@ -+ 0 $accept : TopLevel $end -+ -+ 1 TopLevel : Preamble TopLevelBody -+ -+ 2 Preamble : -+ 3 | Decl Preamble -+ -+ 4 Decl : KeywordNamespace NamespacePrefix Equal NamespaceURILiteral -+ 5 | KeywordDefault KeywordNamespace Equal NamespaceURILiteral -+ 6 | KeywordDefault KeywordNamespace NamespacePrefix Equal NamespaceURILiteral -+ 7 | KeywordDatatypes DatatypePrefix Equal Literal -+ -+ 8 NamespacePrefix : IdentifierOrKeyword -+ -+ 9 DatatypePrefix : IdentifierOrKeyword -+ -+ 10 NamespaceURILiteral : Literal -+ 11 | KeywordInherit -+ -+ 12 TopLevelBody : Pattern -+ 13 | Grammar -+ -+ 14 Grammar : -+ 15 | Member Grammar -+ -+ 16 Member : AnnotatedComponent -+ 17 | AnnotationElementNotKeyword -+ -+ 18 AnnotatedComponent : Annotations Component -+ -+ 19 Component : Start -+ 20 | Define -+ 21 | Include -+ 22 | Div -+ -+ 23 Start : KeywordStart AssignOp Pattern -+ -+ 24 Define : Identifier AssignOp Pattern -+ -+ 25 AssignOp : Equal -+ 26 | OrEquals -+ 27 | AndEquals -+ -+ 28 Include : KeywordInclude AnyURILiteral OptInherit OptIncludeBody -+ -+ 29 AnyURILiteral : Literal -+ -+ 30 OptInherit : -+ 31 | KeywordInherit Equal IdentifierOrKeyword -+ -+ 32 OptIncludeBody : -+ 33 | OpenCurly IncludeBody CloseCurly -+ -+ 34 IncludeBody : -+ 35 | IncludeMember IncludeBody -+ -+ 36 IncludeMember : AnnotatedIncludeComponent -+ 37 | AnnotationElementNotKeyword -+ -+ 38 AnnotatedIncludeComponent : Annotations IncludeComponent -+ -+ 39 IncludeComponent : Start -+ 40 | Define -+ 41 | IncludeDiv -+ -+ 42 Div : KeywordDiv OpenCurly Grammar CloseCurly -+ -+ 43 IncludeDiv : KeywordDiv OpenCurly IncludeBody CloseCurly -+ -+ 44 Pattern : InnerPattern -+ -+ 45 InnerPattern : InnerParticle -+ 46 | ParticleChoice -+ 47 | ParticleGroup -+ 48 | ParticleInterleave -+ 49 | AnnotatedDataExcept -+ -+ 50 ParticleChoice : Particle Bar Particle -+ 51 | Particle Bar ParticleChoice -+ -+ 52 ParticleGroup : Particle Comma Particle -+ 53 | Particle Comma ParticleGroup -+ -+ 54 ParticleInterleave : Particle Amp Particle -+ 55 | Particle Amp ParticleInterleave -+ -+ 56 Particle : InnerParticle -+ -+ 57 InnerParticle : AnnotatedPrimary -+ 58 | RepeatedPrimary FollowAnnotations -+ -+ 59 RepeatedPrimary : AnnotatedPrimary Asterisk -+ 60 | AnnotatedPrimary Plus -+ 61 | AnnotatedPrimary Question -+ -+ 62 AnnotatedPrimary : LeadAnnotatedPrimary FollowAnnotations -+ -+ 63 AnnotatedDataExcept : LeadAnnotatedDataExcept FollowAnnotations -+ -+ 64 LeadAnnotatedDataExcept : Annotations DataExcept -+ -+ 65 LeadAnnotatedPrimary : Annotations Primary -+ 66 | Annotations OpenParen InnerPattern CloseParen -+ -+ 67 Primary : KeywordElement NameClass OpenCurly Pattern CloseCurly -+ 68 | KeywordAttribute NameClass OpenCurly Pattern CloseCurly -+ 69 | KeywordMixed OpenCurly Pattern CloseCurly -+ 70 | KeywordList OpenCurly Pattern CloseCurly -+ 71 | DatatypeName OptParams -+ 72 | DatatypeName DatatypeValue -+ 73 | DatatypeValue -+ 74 | KeywordEmpty -+ 75 | KeywordNotAllowed -+ 76 | KeywordText -+ 77 | Ref -+ 78 | KeywordParent Ref -+ 79 | KeywordGrammar OpenCurly Grammar CloseCurly -+ 80 | KeywordExternal AnyURILiteral OptInherit -+ -+ 81 DataExcept : DatatypeName OptParams Minus LeadAnnotatedPrimary -+ -+ 82 Ref : Identifier -+ -+ 83 DatatypeName : CName -+ 84 | KeywordString -+ 85 | KeywordToken -+ -+ 86 DatatypeValue : Literal -+ -+ 87 OptParams : -+ 88 | OpenCurly Params CloseCurly -+ -+ 89 Params : -+ 90 | Param Params -+ -+ 91 Param : Annotations IdentifierOrKeyword Equal Literal -+ -+ 92 NameClass : InnerNameClass -+ -+ 93 InnerNameClass : AnnotatedSimpleNameClass -+ 94 | NameClassChoice -+ 95 | AnnotatedExceptNameClass -+ -+ 96 NameClassChoice : AnnotatedSimpleNameClass Bar AnnotatedSimpleNameClass -+ 97 | AnnotatedSimpleNameClass Bar NameClassChoice -+ -+ 98 AnnotatedExceptNameClass : LeadAnnotatedExceptNameClass FollowAnnotations -+ -+ 99 LeadAnnotatedExceptNameClass : Annotations ExceptNameClass -+ -+ 100 AnnotatedSimpleNameClass : LeadAnnotatedSimpleNameClass FollowAnnotations -+ -+ 101 LeadAnnotatedSimpleNameClass : Annotations SimpleNameClass -+ 102 | Annotations OpenParen InnerNameClass CloseParen -+ -+ 103 ExceptNameClass : NsName Minus LeadAnnotatedSimpleNameClass -+ 104 | Asterisk Minus LeadAnnotatedSimpleNameClass -+ -+ 105 SimpleNameClass : IdentifierOrKeyword -+ 106 | CName -+ 107 | NsName -+ 108 | Asterisk -+ -+ 109 FollowAnnotations : -+ 110 | TwoGreaters AnnotationElement FollowAnnotations -+ -+ 111 Annotations : Documentations -+ 112 | Documentations OpenBracket AnnotationContentInAnnotations CloseBracket -+ -+ 113 AnnotationContentInAnnotations : -+ 114 | PrefixedName Equal Literal AnnotationContentInAnnotations -+ 115 | PrefixedName AnnotationAttributesContent AnnotationContentInAnnotations -+ 116 | IdentifierOrKeyword AnnotationAttributesContent AnnotationContentInAnnotations -+ -+ 117 AttributableAnnotations : -+ 118 | AttributableAnnotations PrefixedName Equal Literal NonAttributableAnnotations -+ -+ 119 NonAttributableAnnotations : -+ 120 | PrefixedName AnnotationAttributesContent -+ 121 | NonAttributableAnnotations IdentifierOrKeyword AnnotationAttributesContent -+ -+ 122 AnnotationElement : ForeignElementName AnnotationAttributesContent -+ -+ 123 ForeignElementName : IdentifierOrKeyword -+ 124 | PrefixedName -+ -+ 125 AnnotationElementNotKeyword : ERROR -+ -+ 126 AnnotationAttributesContent : OpenBracket NestedAnnotationContents CloseBracket -+ -+ 127 NestedAnnotationContents : -+ 128 | PrefixedName Equal Literal NestedAnnotationContents -+ 129 | IdentifierOrKeyword Equal Literal NestedAnnotationContents -+ 130 | PrefixedName AnnotationAttributesContent NestedAnnotationContents -+ 131 | IdentifierOrKeyword AnnotationAttributesContent NestedAnnotationContents -+ 132 | Literal -+ 133 | Literal NestedAnnotationContents -+ -+ 134 NestedAnnotationAttributes : -+ 135 | AnyAttributeName Equal Literal NestedAnnotationAttributes -+ -+ 136 AnyAttributeName : IdentifierOrKeyword -+ 137 | PrefixedName -+ -+ 138 AnnotationContent : -+ 139 | NestedAnnotationElement AnnotationContent -+ 140 | Literal AnnotationContent -+ -+ 141 NestedAnnotationElement : AnyElementName AnnotationAttributesContent -+ -+ 142 AnyElementName : IdentifierOrKeyword -+ 143 | PrefixedName -+ -+ 144 PrefixedName : CName -+ -+ 145 Documentations : -+ 146 | Documentation Documentations -+ -+ 147 IdentifierOrKeyword : Identifier -+ 148 | Keyword -+ -+ 149 Keyword : KeywordAttribute -+ 150 | KeywordDefault -+ 151 | KeywordDatatypes -+ 152 | KeywordDiv -+ 153 | KeywordElement -+ 154 | KeywordEmpty -+ 155 | KeywordExternal -+ 156 | KeywordGrammar -+ 157 | KeywordInclude -+ 158 | KeywordInherit -+ 159 | KeywordList -+ 160 | KeywordMixed -+ 161 | KeywordNamespace -+ 162 | KeywordNotAllowed -+ 163 | KeywordParent -+ 164 | KeywordStart -+ 165 | KeywordString -+ 166 | KeywordText -+ 167 | KeywordToken -+ -+ 168 Literal : LiteralSegment -+ 169 | LiteralSegment Tilde Literal -+ -+ 170 Identifier : NCName -+ 171 | QuotedIdentifier -+ -+state 0 -+ $accept : . TopLevel $end (0) -+ Preamble : . (2) -+ -+ KeywordDefault shift 1 -+ KeywordDatatypes shift 2 -+ KeywordNamespace shift 3 -+ $end reduce 2 -+ ERROR reduce 2 -+ KeywordAttribute reduce 2 -+ KeywordDiv reduce 2 -+ KeywordElement reduce 2 -+ KeywordEmpty reduce 2 -+ KeywordExternal reduce 2 -+ KeywordGrammar reduce 2 -+ KeywordInclude reduce 2 -+ KeywordList reduce 2 -+ KeywordMixed reduce 2 -+ KeywordNotAllowed reduce 2 -+ KeywordParent reduce 2 -+ KeywordStart reduce 2 -+ KeywordString reduce 2 -+ KeywordText reduce 2 -+ KeywordToken reduce 2 -+ OpenParen reduce 2 -+ OpenBracket reduce 2 -+ LiteralSegment reduce 2 -+ NCName reduce 2 -+ QuotedIdentifier reduce 2 -+ Documentation reduce 2 -+ CName reduce 2 -+ -+ TopLevel goto 4 -+ Preamble goto 5 -+ Decl goto 6 -+ -+ -+state 1 -+ Decl : KeywordDefault . KeywordNamespace Equal NamespaceURILiteral (5) -+ Decl : KeywordDefault . KeywordNamespace NamespacePrefix Equal NamespaceURILiteral (6) -+ -+ KeywordNamespace shift 7 -+ . error -+ -+ -+state 2 -+ Decl : KeywordDatatypes . DatatypePrefix Equal Literal (7) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ DatatypePrefix goto 29 -+ IdentifierOrKeyword goto 30 -+ Identifier goto 31 -+ Keyword goto 32 -+ -+ -+state 3 -+ Decl : KeywordNamespace . NamespacePrefix Equal NamespaceURILiteral (4) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ NamespacePrefix goto 33 -+ IdentifierOrKeyword goto 34 -+ Identifier goto 31 -+ Keyword goto 32 -+ -+ -+state 4 -+ $accept : TopLevel . $end (0) -+ -+ $end accept -+ -+ -+state 5 -+ TopLevel : Preamble . TopLevelBody (1) -+ Grammar : . (14) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ $end reduce 14 -+ KeywordAttribute reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ TopLevelBody goto 37 -+ Pattern goto 38 -+ Grammar goto 39 -+ Member goto 40 -+ AnnotatedComponent goto 41 -+ AnnotationElementNotKeyword goto 42 -+ Annotations goto 43 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 6 -+ Preamble : Decl . Preamble (3) -+ Preamble : . (2) -+ -+ KeywordDefault shift 1 -+ KeywordDatatypes shift 2 -+ KeywordNamespace shift 3 -+ $end reduce 2 -+ ERROR reduce 2 -+ KeywordAttribute reduce 2 -+ KeywordDiv reduce 2 -+ KeywordElement reduce 2 -+ KeywordEmpty reduce 2 -+ KeywordExternal reduce 2 -+ KeywordGrammar reduce 2 -+ KeywordInclude reduce 2 -+ KeywordList reduce 2 -+ KeywordMixed reduce 2 -+ KeywordNotAllowed reduce 2 -+ KeywordParent reduce 2 -+ KeywordStart reduce 2 -+ KeywordString reduce 2 -+ KeywordText reduce 2 -+ KeywordToken reduce 2 -+ OpenParen reduce 2 -+ OpenBracket reduce 2 -+ LiteralSegment reduce 2 -+ NCName reduce 2 -+ QuotedIdentifier reduce 2 -+ Documentation reduce 2 -+ CName reduce 2 -+ -+ Preamble goto 56 -+ Decl goto 6 -+ -+ -+state 7 -+ Decl : KeywordDefault KeywordNamespace . Equal NamespaceURILiteral (5) -+ Decl : KeywordDefault KeywordNamespace . NamespacePrefix Equal NamespaceURILiteral (6) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ Equal shift 57 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ NamespacePrefix goto 58 -+ IdentifierOrKeyword goto 34 -+ Identifier goto 31 -+ Keyword goto 32 -+ -+ -+state 8 -+ Keyword : KeywordAttribute . (149) -+ -+ . reduce 149 -+ -+ -+state 9 -+ Keyword : KeywordDefault . (150) -+ -+ . reduce 150 -+ -+ -+state 10 -+ Keyword : KeywordDatatypes . (151) -+ -+ . reduce 151 -+ -+ -+state 11 -+ Keyword : KeywordDiv . (152) -+ -+ . reduce 152 -+ -+ -+state 12 -+ Keyword : KeywordElement . (153) -+ -+ . reduce 153 -+ -+ -+state 13 -+ Keyword : KeywordEmpty . (154) -+ -+ . reduce 154 -+ -+ -+state 14 -+ Keyword : KeywordExternal . (155) -+ -+ . reduce 155 -+ -+ -+state 15 -+ Keyword : KeywordGrammar . (156) -+ -+ . reduce 156 -+ -+ -+state 16 -+ Keyword : KeywordInclude . (157) -+ -+ . reduce 157 -+ -+ -+state 17 -+ Keyword : KeywordInherit . (158) -+ -+ . reduce 158 -+ -+ -+state 18 -+ Keyword : KeywordList . (159) -+ -+ . reduce 159 -+ -+ -+state 19 -+ Keyword : KeywordMixed . (160) -+ -+ . reduce 160 -+ -+ -+state 20 -+ Keyword : KeywordNamespace . (161) -+ -+ . reduce 161 -+ -+ -+state 21 -+ Keyword : KeywordNotAllowed . (162) -+ -+ . reduce 162 -+ -+ -+state 22 -+ Keyword : KeywordParent . (163) -+ -+ . reduce 163 -+ -+ -+state 23 -+ Keyword : KeywordStart . (164) -+ -+ . reduce 164 -+ -+ -+state 24 -+ Keyword : KeywordString . (165) -+ -+ . reduce 165 -+ -+ -+state 25 -+ Keyword : KeywordText . (166) -+ -+ . reduce 166 -+ -+ -+state 26 -+ Keyword : KeywordToken . (167) -+ -+ . reduce 167 -+ -+ -+state 27 -+ Identifier : NCName . (170) -+ -+ . reduce 170 -+ -+ -+state 28 -+ Identifier : QuotedIdentifier . (171) -+ -+ . reduce 171 -+ -+ -+state 29 -+ Decl : KeywordDatatypes DatatypePrefix . Equal Literal (7) -+ -+ Equal shift 59 -+ . error -+ -+ -+state 30 -+ DatatypePrefix : IdentifierOrKeyword . (9) -+ -+ . reduce 9 -+ -+ -+state 31 -+ IdentifierOrKeyword : Identifier . (147) -+ -+ . reduce 147 -+ -+ -+state 32 -+ IdentifierOrKeyword : Keyword . (148) -+ -+ . reduce 148 -+ -+ -+state 33 -+ Decl : KeywordNamespace NamespacePrefix . Equal NamespaceURILiteral (4) -+ -+ Equal shift 60 -+ . error -+ -+ -+state 34 -+ NamespacePrefix : IdentifierOrKeyword . (8) -+ -+ . reduce 8 -+ -+ -+state 35 -+ AnnotationElementNotKeyword : ERROR . (125) -+ -+ . reduce 125 -+ -+ -+state 36 -+ Documentations : Documentation . Documentations (146) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Documentations goto 61 -+ -+ -+state 37 -+ TopLevel : Preamble TopLevelBody . (1) -+ -+ . reduce 1 -+ -+ -+state 38 -+ TopLevelBody : Pattern . (12) -+ -+ . reduce 12 -+ -+ -+state 39 -+ TopLevelBody : Grammar . (13) -+ -+ . reduce 13 -+ -+ -+state 40 -+ Grammar : Member . Grammar (15) -+ Grammar : . (14) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ $end reduce 14 -+ KeywordDiv reduce 145 -+ KeywordInclude reduce 145 -+ KeywordStart reduce 145 -+ CloseCurly reduce 14 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ Grammar goto 62 -+ Member goto 40 -+ AnnotatedComponent goto 41 -+ AnnotationElementNotKeyword goto 42 -+ Annotations goto 63 -+ Documentations goto 55 -+ -+ -+state 41 -+ Member : AnnotatedComponent . (16) -+ -+ . reduce 16 -+ -+ -+state 42 -+ Member : AnnotationElementNotKeyword . (17) -+ -+ . reduce 17 -+ -+ -+state 43 -+ AnnotatedComponent : Annotations . Component (18) -+ LeadAnnotatedDataExcept : Annotations . DataExcept (64) -+ LeadAnnotatedPrimary : Annotations . Primary (65) -+ LeadAnnotatedPrimary : Annotations . OpenParen InnerPattern CloseParen (66) -+ -+ KeywordAttribute shift 64 -+ KeywordDiv shift 65 -+ KeywordElement shift 66 -+ KeywordEmpty shift 67 -+ KeywordExternal shift 68 -+ KeywordGrammar shift 69 -+ KeywordInclude shift 70 -+ KeywordList shift 71 -+ KeywordMixed shift 72 -+ KeywordNotAllowed shift 73 -+ KeywordParent shift 74 -+ KeywordStart shift 75 -+ KeywordString shift 76 -+ KeywordText shift 77 -+ KeywordToken shift 78 -+ OpenParen shift 79 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 81 -+ . error -+ -+ Literal goto 82 -+ Component goto 83 -+ Start goto 84 -+ Define goto 85 -+ Include goto 86 -+ Div goto 87 -+ Identifier goto 88 -+ DataExcept goto 89 -+ Primary goto 90 -+ DatatypeName goto 91 -+ DatatypeValue goto 92 -+ Ref goto 93 -+ -+ -+state 44 -+ Pattern : InnerPattern . (44) -+ -+ . reduce 44 -+ -+ -+state 45 -+ InnerPattern : InnerParticle . (45) -+ Particle : InnerParticle . (56) -+ -+ $end reduce 45 -+ ERROR reduce 45 -+ KeywordDiv reduce 45 -+ KeywordInclude reduce 45 -+ KeywordStart reduce 45 -+ Comma reduce 56 -+ CloseCurly reduce 45 -+ CloseParen reduce 45 -+ OpenBracket reduce 45 -+ Amp reduce 56 -+ Bar reduce 56 -+ NCName reduce 45 -+ QuotedIdentifier reduce 45 -+ Documentation reduce 45 -+ -+ -+state 46 -+ InnerPattern : ParticleChoice . (46) -+ -+ . reduce 46 -+ -+ -+state 47 -+ InnerPattern : ParticleGroup . (47) -+ -+ . reduce 47 -+ -+ -+state 48 -+ InnerPattern : ParticleInterleave . (48) -+ -+ . reduce 48 -+ -+ -+state 49 -+ InnerPattern : AnnotatedDataExcept . (49) -+ -+ . reduce 49 -+ -+ -+state 50 -+ ParticleChoice : Particle . Bar Particle (50) -+ ParticleChoice : Particle . Bar ParticleChoice (51) -+ ParticleGroup : Particle . Comma Particle (52) -+ ParticleGroup : Particle . Comma ParticleGroup (53) -+ ParticleInterleave : Particle . Amp Particle (54) -+ ParticleInterleave : Particle . Amp ParticleInterleave (55) -+ -+ Comma shift 94 -+ Amp shift 95 -+ Bar shift 96 -+ . error -+ -+ -+state 51 -+ InnerParticle : AnnotatedPrimary . (57) -+ RepeatedPrimary : AnnotatedPrimary . Asterisk (59) -+ RepeatedPrimary : AnnotatedPrimary . Plus (60) -+ RepeatedPrimary : AnnotatedPrimary . Question (61) -+ -+ Question shift 97 -+ Asterisk shift 98 -+ Plus shift 99 -+ $end reduce 57 -+ ERROR reduce 57 -+ KeywordDiv reduce 57 -+ KeywordInclude reduce 57 -+ KeywordStart reduce 57 -+ Comma reduce 57 -+ CloseCurly reduce 57 -+ CloseParen reduce 57 -+ OpenBracket reduce 57 -+ Amp reduce 57 -+ Bar reduce 57 -+ NCName reduce 57 -+ QuotedIdentifier reduce 57 -+ Documentation reduce 57 -+ -+ -+state 52 -+ InnerParticle : RepeatedPrimary . FollowAnnotations (58) -+ FollowAnnotations : . (109) -+ -+ TwoGreaters shift 100 -+ $end reduce 109 -+ ERROR reduce 109 -+ KeywordDiv reduce 109 -+ KeywordInclude reduce 109 -+ KeywordStart reduce 109 -+ Comma reduce 109 -+ CloseCurly reduce 109 -+ CloseParen reduce 109 -+ OpenBracket reduce 109 -+ Amp reduce 109 -+ Bar reduce 109 -+ NCName reduce 109 -+ QuotedIdentifier reduce 109 -+ Documentation reduce 109 -+ -+ FollowAnnotations goto 101 -+ -+ -+state 53 -+ AnnotatedPrimary : LeadAnnotatedPrimary . FollowAnnotations (62) -+ FollowAnnotations : . (109) -+ -+ TwoGreaters shift 100 -+ $end reduce 109 -+ ERROR reduce 109 -+ KeywordDiv reduce 109 -+ KeywordInclude reduce 109 -+ KeywordStart reduce 109 -+ Comma reduce 109 -+ CloseCurly reduce 109 -+ CloseParen reduce 109 -+ OpenBracket reduce 109 -+ Amp reduce 109 -+ Bar reduce 109 -+ Question reduce 109 -+ Asterisk reduce 109 -+ Plus reduce 109 -+ NCName reduce 109 -+ QuotedIdentifier reduce 109 -+ Documentation reduce 109 -+ -+ FollowAnnotations goto 102 -+ -+ -+state 54 -+ AnnotatedDataExcept : LeadAnnotatedDataExcept . FollowAnnotations (63) -+ FollowAnnotations : . (109) -+ -+ TwoGreaters shift 100 -+ $end reduce 109 -+ ERROR reduce 109 -+ KeywordDiv reduce 109 -+ KeywordInclude reduce 109 -+ KeywordStart reduce 109 -+ CloseCurly reduce 109 -+ CloseParen reduce 109 -+ OpenBracket reduce 109 -+ NCName reduce 109 -+ QuotedIdentifier reduce 109 -+ Documentation reduce 109 -+ -+ FollowAnnotations goto 103 -+ -+ -+state 55 -+ Annotations : Documentations . (111) -+ Annotations : Documentations . OpenBracket AnnotationContentInAnnotations CloseBracket (112) -+ -+ OpenBracket shift 104 -+ KeywordAttribute reduce 111 -+ KeywordDefault reduce 111 -+ KeywordDatatypes reduce 111 -+ KeywordDiv reduce 111 -+ KeywordElement reduce 111 -+ KeywordEmpty reduce 111 -+ KeywordExternal reduce 111 -+ KeywordGrammar reduce 111 -+ KeywordInclude reduce 111 -+ KeywordInherit reduce 111 -+ KeywordList reduce 111 -+ KeywordMixed reduce 111 -+ KeywordNamespace reduce 111 -+ KeywordNotAllowed reduce 111 -+ KeywordParent reduce 111 -+ KeywordStart reduce 111 -+ KeywordString reduce 111 -+ KeywordText reduce 111 -+ KeywordToken reduce 111 -+ OpenParen reduce 111 -+ Asterisk reduce 111 -+ LiteralSegment reduce 111 -+ NCName reduce 111 -+ QuotedIdentifier reduce 111 -+ CName reduce 111 -+ NsName reduce 111 -+ -+ -+state 56 -+ Preamble : Decl Preamble . (3) -+ -+ . reduce 3 -+ -+ -+state 57 -+ Decl : KeywordDefault KeywordNamespace Equal . NamespaceURILiteral (5) -+ -+ KeywordInherit shift 105 -+ LiteralSegment shift 80 -+ . error -+ -+ NamespaceURILiteral goto 106 -+ Literal goto 107 -+ -+ -+state 58 -+ Decl : KeywordDefault KeywordNamespace NamespacePrefix . Equal NamespaceURILiteral (6) -+ -+ Equal shift 108 -+ . error -+ -+ -+state 59 -+ Decl : KeywordDatatypes DatatypePrefix Equal . Literal (7) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 109 -+ -+ -+state 60 -+ Decl : KeywordNamespace NamespacePrefix Equal . NamespaceURILiteral (4) -+ -+ KeywordInherit shift 105 -+ LiteralSegment shift 80 -+ . error -+ -+ NamespaceURILiteral goto 110 -+ Literal goto 107 -+ -+ -+state 61 -+ Documentations : Documentation Documentations . (146) -+ -+ . reduce 146 -+ -+ -+state 62 -+ Grammar : Member Grammar . (15) -+ -+ . reduce 15 -+ -+ -+state 63 -+ AnnotatedComponent : Annotations . Component (18) -+ -+ KeywordDiv shift 65 -+ KeywordInclude shift 70 -+ KeywordStart shift 75 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ Component goto 83 -+ Start goto 84 -+ Define goto 85 -+ Include goto 86 -+ Div goto 87 -+ Identifier goto 111 -+ -+ -+state 64 -+ Primary : KeywordAttribute . NameClass OpenCurly Pattern CloseCurly (68) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Annotations goto 112 -+ NameClass goto 113 -+ InnerNameClass goto 114 -+ AnnotatedSimpleNameClass goto 115 -+ NameClassChoice goto 116 -+ AnnotatedExceptNameClass goto 117 -+ LeadAnnotatedExceptNameClass goto 118 -+ LeadAnnotatedSimpleNameClass goto 119 -+ Documentations goto 55 -+ -+ -+state 65 -+ Div : KeywordDiv . OpenCurly Grammar CloseCurly (42) -+ -+ OpenCurly shift 120 -+ . error -+ -+ -+state 66 -+ Primary : KeywordElement . NameClass OpenCurly Pattern CloseCurly (67) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Annotations goto 112 -+ NameClass goto 121 -+ InnerNameClass goto 114 -+ AnnotatedSimpleNameClass goto 115 -+ NameClassChoice goto 116 -+ AnnotatedExceptNameClass goto 117 -+ LeadAnnotatedExceptNameClass goto 118 -+ LeadAnnotatedSimpleNameClass goto 119 -+ Documentations goto 55 -+ -+ -+state 67 -+ Primary : KeywordEmpty . (74) -+ -+ . reduce 74 -+ -+ -+state 68 -+ Primary : KeywordExternal . AnyURILiteral OptInherit (80) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 122 -+ AnyURILiteral goto 123 -+ -+ -+state 69 -+ Primary : KeywordGrammar . OpenCurly Grammar CloseCurly (79) -+ -+ OpenCurly shift 124 -+ . error -+ -+ -+state 70 -+ Include : KeywordInclude . AnyURILiteral OptInherit OptIncludeBody (28) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 122 -+ AnyURILiteral goto 125 -+ -+ -+state 71 -+ Primary : KeywordList . OpenCurly Pattern CloseCurly (70) -+ -+ OpenCurly shift 126 -+ . error -+ -+ -+state 72 -+ Primary : KeywordMixed . OpenCurly Pattern CloseCurly (69) -+ -+ OpenCurly shift 127 -+ . error -+ -+ -+state 73 -+ Primary : KeywordNotAllowed . (75) -+ -+ . reduce 75 -+ -+ -+state 74 -+ Primary : KeywordParent . Ref (78) -+ -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ Identifier goto 128 -+ Ref goto 129 -+ -+ -+state 75 -+ Start : KeywordStart . AssignOp Pattern (23) -+ -+ Equal shift 130 -+ OrEquals shift 131 -+ AndEquals shift 132 -+ . error -+ -+ AssignOp goto 133 -+ -+ -+state 76 -+ DatatypeName : KeywordString . (84) -+ -+ . reduce 84 -+ -+ -+state 77 -+ Primary : KeywordText . (76) -+ -+ . reduce 76 -+ -+ -+state 78 -+ DatatypeName : KeywordToken . (85) -+ -+ . reduce 85 -+ -+ -+state 79 -+ LeadAnnotatedPrimary : Annotations OpenParen . InnerPattern CloseParen (66) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Annotations goto 134 -+ InnerPattern goto 135 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 80 -+ Literal : LiteralSegment . (168) -+ Literal : LiteralSegment . Tilde Literal (169) -+ -+ Tilde shift 136 -+ $end reduce 168 -+ ERROR reduce 168 -+ KeywordAttribute reduce 168 -+ KeywordDefault reduce 168 -+ KeywordDatatypes reduce 168 -+ KeywordDiv reduce 168 -+ KeywordElement reduce 168 -+ KeywordEmpty reduce 168 -+ KeywordExternal reduce 168 -+ KeywordGrammar reduce 168 -+ KeywordInclude reduce 168 -+ KeywordInherit reduce 168 -+ KeywordList reduce 168 -+ KeywordMixed reduce 168 -+ KeywordNamespace reduce 168 -+ KeywordNotAllowed reduce 168 -+ KeywordParent reduce 168 -+ KeywordStart reduce 168 -+ KeywordString reduce 168 -+ KeywordText reduce 168 -+ KeywordToken reduce 168 -+ Comma reduce 168 -+ OpenCurly reduce 168 -+ CloseCurly reduce 168 -+ OpenParen reduce 168 -+ CloseParen reduce 168 -+ OpenBracket reduce 168 -+ CloseBracket reduce 168 -+ Amp reduce 168 -+ Bar reduce 168 -+ Question reduce 168 -+ Asterisk reduce 168 -+ Plus reduce 168 -+ TwoGreaters reduce 168 -+ LiteralSegment reduce 168 -+ NCName reduce 168 -+ QuotedIdentifier reduce 168 -+ Documentation reduce 168 -+ CName reduce 168 -+ -+ -+state 81 -+ DatatypeName : CName . (83) -+ -+ . reduce 83 -+ -+ -+state 82 -+ DatatypeValue : Literal . (86) -+ -+ . reduce 86 -+ -+ -+state 83 -+ AnnotatedComponent : Annotations Component . (18) -+ -+ . reduce 18 -+ -+ -+state 84 -+ Component : Start . (19) -+ -+ . reduce 19 -+ -+ -+state 85 -+ Component : Define . (20) -+ -+ . reduce 20 -+ -+ -+state 86 -+ Component : Include . (21) -+ -+ . reduce 21 -+ -+ -+state 87 -+ Component : Div . (22) -+ -+ . reduce 22 -+ -+ -+state 88 -+ Define : Identifier . AssignOp Pattern (24) -+ Ref : Identifier . (82) -+ -+ Equal shift 130 -+ OrEquals shift 131 -+ AndEquals shift 132 -+ $end reduce 82 -+ Comma reduce 82 -+ Amp reduce 82 -+ Bar reduce 82 -+ Question reduce 82 -+ Asterisk reduce 82 -+ Plus reduce 82 -+ TwoGreaters reduce 82 -+ -+ AssignOp goto 137 -+ -+ -+state 89 -+ LeadAnnotatedDataExcept : Annotations DataExcept . (64) -+ -+ . reduce 64 -+ -+ -+state 90 -+ LeadAnnotatedPrimary : Annotations Primary . (65) -+ -+ . reduce 65 -+ -+ -+state 91 -+ Primary : DatatypeName . OptParams (71) -+ Primary : DatatypeName . DatatypeValue (72) -+ DataExcept : DatatypeName . OptParams Minus LeadAnnotatedPrimary (81) -+ OptParams : . (87) -+ -+ OpenCurly shift 138 -+ LiteralSegment shift 80 -+ $end reduce 87 -+ ERROR reduce 87 -+ KeywordDiv reduce 87 -+ KeywordInclude reduce 87 -+ KeywordStart reduce 87 -+ Comma reduce 87 -+ CloseCurly reduce 87 -+ CloseParen reduce 87 -+ OpenBracket reduce 87 -+ Amp reduce 87 -+ Bar reduce 87 -+ Question reduce 87 -+ Asterisk reduce 87 -+ Plus reduce 87 -+ Minus reduce 87 -+ TwoGreaters reduce 87 -+ NCName reduce 87 -+ QuotedIdentifier reduce 87 -+ Documentation reduce 87 -+ -+ Literal goto 82 -+ OptParams goto 139 -+ DatatypeValue goto 140 -+ -+ -+state 92 -+ Primary : DatatypeValue . (73) -+ -+ . reduce 73 -+ -+ -+state 93 -+ Primary : Ref . (77) -+ -+ . reduce 77 -+ -+ -+state 94 -+ ParticleGroup : Particle Comma . Particle (52) -+ ParticleGroup : Particle Comma . ParticleGroup (53) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Annotations goto 141 -+ InnerParticle goto 142 -+ ParticleGroup goto 143 -+ Particle goto 144 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ Documentations goto 55 -+ -+ -+state 95 -+ ParticleInterleave : Particle Amp . Particle (54) -+ ParticleInterleave : Particle Amp . ParticleInterleave (55) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Annotations goto 141 -+ InnerParticle goto 142 -+ ParticleInterleave goto 145 -+ Particle goto 146 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ Documentations goto 55 -+ -+ -+state 96 -+ ParticleChoice : Particle Bar . Particle (50) -+ ParticleChoice : Particle Bar . ParticleChoice (51) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Annotations goto 141 -+ InnerParticle goto 142 -+ ParticleChoice goto 147 -+ Particle goto 148 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ Documentations goto 55 -+ -+ -+state 97 -+ RepeatedPrimary : AnnotatedPrimary Question . (61) -+ -+ . reduce 61 -+ -+ -+state 98 -+ RepeatedPrimary : AnnotatedPrimary Asterisk . (59) -+ -+ . reduce 59 -+ -+ -+state 99 -+ RepeatedPrimary : AnnotatedPrimary Plus . (60) -+ -+ . reduce 60 -+ -+ -+state 100 -+ FollowAnnotations : TwoGreaters . AnnotationElement FollowAnnotations (110) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ . error -+ -+ IdentifierOrKeyword goto 150 -+ Identifier goto 31 -+ AnnotationElement goto 151 -+ PrefixedName goto 152 -+ ForeignElementName goto 153 -+ Keyword goto 32 -+ -+ -+state 101 -+ InnerParticle : RepeatedPrimary FollowAnnotations . (58) -+ -+ . reduce 58 -+ -+ -+state 102 -+ AnnotatedPrimary : LeadAnnotatedPrimary FollowAnnotations . (62) -+ -+ . reduce 62 -+ -+ -+state 103 -+ AnnotatedDataExcept : LeadAnnotatedDataExcept FollowAnnotations . (63) -+ -+ . reduce 63 -+ -+ -+state 104 -+ Annotations : Documentations OpenBracket . AnnotationContentInAnnotations CloseBracket (112) -+ AnnotationContentInAnnotations : . (113) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 113 -+ -+ IdentifierOrKeyword goto 154 -+ Identifier goto 31 -+ AnnotationContentInAnnotations goto 155 -+ PrefixedName goto 156 -+ Keyword goto 32 -+ -+ -+state 105 -+ NamespaceURILiteral : KeywordInherit . (11) -+ -+ . reduce 11 -+ -+ -+state 106 -+ Decl : KeywordDefault KeywordNamespace Equal NamespaceURILiteral . (5) -+ -+ . reduce 5 -+ -+ -+state 107 -+ NamespaceURILiteral : Literal . (10) -+ -+ . reduce 10 -+ -+ -+state 108 -+ Decl : KeywordDefault KeywordNamespace NamespacePrefix Equal . NamespaceURILiteral (6) -+ -+ KeywordInherit shift 105 -+ LiteralSegment shift 80 -+ . error -+ -+ NamespaceURILiteral goto 157 -+ Literal goto 107 -+ -+ -+state 109 -+ Decl : KeywordDatatypes DatatypePrefix Equal Literal . (7) -+ -+ . reduce 7 -+ -+ -+state 110 -+ Decl : KeywordNamespace NamespacePrefix Equal NamespaceURILiteral . (4) -+ -+ . reduce 4 -+ -+ -+state 111 -+ Define : Identifier . AssignOp Pattern (24) -+ -+ Equal shift 130 -+ OrEquals shift 131 -+ AndEquals shift 132 -+ . error -+ -+ AssignOp goto 137 -+ -+ -+state 112 -+ LeadAnnotatedExceptNameClass : Annotations . ExceptNameClass (99) -+ LeadAnnotatedSimpleNameClass : Annotations . SimpleNameClass (101) -+ LeadAnnotatedSimpleNameClass : Annotations . OpenParen InnerNameClass CloseParen (102) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ OpenParen shift 158 -+ Asterisk shift 159 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 160 -+ NsName shift 161 -+ . error -+ -+ IdentifierOrKeyword goto 162 -+ Identifier goto 31 -+ ExceptNameClass goto 163 -+ SimpleNameClass goto 164 -+ Keyword goto 32 -+ -+ -+state 113 -+ Primary : KeywordAttribute NameClass . OpenCurly Pattern CloseCurly (68) -+ -+ OpenCurly shift 165 -+ . error -+ -+ -+state 114 -+ NameClass : InnerNameClass . (92) -+ -+ . reduce 92 -+ -+ -+state 115 -+ InnerNameClass : AnnotatedSimpleNameClass . (93) -+ NameClassChoice : AnnotatedSimpleNameClass . Bar AnnotatedSimpleNameClass (96) -+ NameClassChoice : AnnotatedSimpleNameClass . Bar NameClassChoice (97) -+ -+ Bar shift 166 -+ OpenCurly reduce 93 -+ CloseParen reduce 93 -+ -+ -+state 116 -+ InnerNameClass : NameClassChoice . (94) -+ -+ . reduce 94 -+ -+ -+state 117 -+ InnerNameClass : AnnotatedExceptNameClass . (95) -+ -+ . reduce 95 -+ -+ -+state 118 -+ AnnotatedExceptNameClass : LeadAnnotatedExceptNameClass . FollowAnnotations (98) -+ FollowAnnotations : . (109) -+ -+ TwoGreaters shift 100 -+ OpenCurly reduce 109 -+ CloseParen reduce 109 -+ -+ FollowAnnotations goto 167 -+ -+ -+state 119 -+ AnnotatedSimpleNameClass : LeadAnnotatedSimpleNameClass . FollowAnnotations (100) -+ FollowAnnotations : . (109) -+ -+ TwoGreaters shift 100 -+ OpenCurly reduce 109 -+ CloseParen reduce 109 -+ Bar reduce 109 -+ -+ FollowAnnotations goto 168 -+ -+ -+state 120 -+ Div : KeywordDiv OpenCurly . Grammar CloseCurly (42) -+ Grammar : . (14) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ KeywordDiv reduce 145 -+ KeywordInclude reduce 145 -+ KeywordStart reduce 145 -+ CloseCurly reduce 14 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ Grammar goto 169 -+ Member goto 40 -+ AnnotatedComponent goto 41 -+ AnnotationElementNotKeyword goto 42 -+ Annotations goto 63 -+ Documentations goto 55 -+ -+ -+state 121 -+ Primary : KeywordElement NameClass . OpenCurly Pattern CloseCurly (67) -+ -+ OpenCurly shift 170 -+ . error -+ -+ -+state 122 -+ AnyURILiteral : Literal . (29) -+ -+ . reduce 29 -+ -+ -+state 123 -+ Primary : KeywordExternal AnyURILiteral . OptInherit (80) -+ OptInherit : . (30) -+ -+ KeywordInherit shift 171 -+ $end reduce 30 -+ ERROR reduce 30 -+ KeywordDiv reduce 30 -+ KeywordInclude reduce 30 -+ KeywordStart reduce 30 -+ Comma reduce 30 -+ CloseCurly reduce 30 -+ CloseParen reduce 30 -+ OpenBracket reduce 30 -+ Amp reduce 30 -+ Bar reduce 30 -+ Question reduce 30 -+ Asterisk reduce 30 -+ Plus reduce 30 -+ TwoGreaters reduce 30 -+ NCName reduce 30 -+ QuotedIdentifier reduce 30 -+ Documentation reduce 30 -+ -+ OptInherit goto 172 -+ -+ -+state 124 -+ Primary : KeywordGrammar OpenCurly . Grammar CloseCurly (79) -+ Grammar : . (14) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ KeywordDiv reduce 145 -+ KeywordInclude reduce 145 -+ KeywordStart reduce 145 -+ CloseCurly reduce 14 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ Grammar goto 173 -+ Member goto 40 -+ AnnotatedComponent goto 41 -+ AnnotationElementNotKeyword goto 42 -+ Annotations goto 63 -+ Documentations goto 55 -+ -+ -+state 125 -+ Include : KeywordInclude AnyURILiteral . OptInherit OptIncludeBody (28) -+ OptInherit : . (30) -+ -+ KeywordInherit shift 171 -+ $end reduce 30 -+ ERROR reduce 30 -+ KeywordDiv reduce 30 -+ KeywordInclude reduce 30 -+ KeywordStart reduce 30 -+ OpenCurly reduce 30 -+ CloseCurly reduce 30 -+ OpenBracket reduce 30 -+ NCName reduce 30 -+ QuotedIdentifier reduce 30 -+ Documentation reduce 30 -+ -+ OptInherit goto 174 -+ -+ -+state 126 -+ Primary : KeywordList OpenCurly . Pattern CloseCurly (70) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Pattern goto 175 -+ Annotations goto 134 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 127 -+ Primary : KeywordMixed OpenCurly . Pattern CloseCurly (69) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Pattern goto 176 -+ Annotations goto 134 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 128 -+ Ref : Identifier . (82) -+ -+ . reduce 82 -+ -+ -+state 129 -+ Primary : KeywordParent Ref . (78) -+ -+ . reduce 78 -+ -+ -+state 130 -+ AssignOp : Equal . (25) -+ -+ . reduce 25 -+ -+ -+state 131 -+ AssignOp : OrEquals . (26) -+ -+ . reduce 26 -+ -+ -+state 132 -+ AssignOp : AndEquals . (27) -+ -+ . reduce 27 -+ -+ -+state 133 -+ Start : KeywordStart AssignOp . Pattern (23) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Pattern goto 177 -+ Annotations goto 134 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 134 -+ LeadAnnotatedDataExcept : Annotations . DataExcept (64) -+ LeadAnnotatedPrimary : Annotations . Primary (65) -+ LeadAnnotatedPrimary : Annotations . OpenParen InnerPattern CloseParen (66) -+ -+ KeywordAttribute shift 64 -+ KeywordElement shift 66 -+ KeywordEmpty shift 67 -+ KeywordExternal shift 68 -+ KeywordGrammar shift 69 -+ KeywordList shift 71 -+ KeywordMixed shift 72 -+ KeywordNotAllowed shift 73 -+ KeywordParent shift 74 -+ KeywordString shift 76 -+ KeywordText shift 77 -+ KeywordToken shift 78 -+ OpenParen shift 79 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 81 -+ . error -+ -+ Literal goto 82 -+ Identifier goto 128 -+ DataExcept goto 89 -+ Primary goto 90 -+ DatatypeName goto 91 -+ DatatypeValue goto 92 -+ Ref goto 93 -+ -+ -+state 135 -+ LeadAnnotatedPrimary : Annotations OpenParen InnerPattern . CloseParen (66) -+ -+ CloseParen shift 178 -+ . error -+ -+ -+state 136 -+ Literal : LiteralSegment Tilde . Literal (169) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 179 -+ -+ -+state 137 -+ Define : Identifier AssignOp . Pattern (24) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Pattern goto 180 -+ Annotations goto 134 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 138 -+ OptParams : OpenCurly . Params CloseCurly (88) -+ Params : . (89) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ CloseCurly reduce 89 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ Annotations goto 181 -+ Params goto 182 -+ Param goto 183 -+ Documentations goto 55 -+ -+ -+state 139 -+ Primary : DatatypeName OptParams . (71) -+ DataExcept : DatatypeName OptParams . Minus LeadAnnotatedPrimary (81) -+ -+ Minus shift 184 -+ $end reduce 71 -+ ERROR reduce 71 -+ KeywordDiv reduce 71 -+ KeywordInclude reduce 71 -+ KeywordStart reduce 71 -+ Comma reduce 71 -+ CloseCurly reduce 71 -+ CloseParen reduce 71 -+ OpenBracket reduce 71 -+ Amp reduce 71 -+ Bar reduce 71 -+ Question reduce 71 -+ Asterisk reduce 71 -+ Plus reduce 71 -+ TwoGreaters reduce 71 -+ NCName reduce 71 -+ QuotedIdentifier reduce 71 -+ Documentation reduce 71 -+ -+ -+state 140 -+ Primary : DatatypeName DatatypeValue . (72) -+ -+ . reduce 72 -+ -+ -+state 141 -+ LeadAnnotatedPrimary : Annotations . Primary (65) -+ LeadAnnotatedPrimary : Annotations . OpenParen InnerPattern CloseParen (66) -+ -+ KeywordAttribute shift 64 -+ KeywordElement shift 66 -+ KeywordEmpty shift 67 -+ KeywordExternal shift 68 -+ KeywordGrammar shift 69 -+ KeywordList shift 71 -+ KeywordMixed shift 72 -+ KeywordNotAllowed shift 73 -+ KeywordParent shift 74 -+ KeywordString shift 76 -+ KeywordText shift 77 -+ KeywordToken shift 78 -+ OpenParen shift 79 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 81 -+ . error -+ -+ Literal goto 82 -+ Identifier goto 128 -+ Primary goto 90 -+ DatatypeName goto 185 -+ DatatypeValue goto 92 -+ Ref goto 93 -+ -+ -+state 142 -+ Particle : InnerParticle . (56) -+ -+ . reduce 56 -+ -+ -+state 143 -+ ParticleGroup : Particle Comma ParticleGroup . (53) -+ -+ . reduce 53 -+ -+ -+state 144 -+ ParticleGroup : Particle . Comma Particle (52) -+ ParticleGroup : Particle Comma Particle . (52) -+ ParticleGroup : Particle . Comma ParticleGroup (53) -+ -+ Comma shift 94 -+ $end reduce 52 -+ ERROR reduce 52 -+ KeywordDiv reduce 52 -+ KeywordInclude reduce 52 -+ KeywordStart reduce 52 -+ CloseCurly reduce 52 -+ CloseParen reduce 52 -+ OpenBracket reduce 52 -+ NCName reduce 52 -+ QuotedIdentifier reduce 52 -+ Documentation reduce 52 -+ -+ -+state 145 -+ ParticleInterleave : Particle Amp ParticleInterleave . (55) -+ -+ . reduce 55 -+ -+ -+state 146 -+ ParticleInterleave : Particle . Amp Particle (54) -+ ParticleInterleave : Particle Amp Particle . (54) -+ ParticleInterleave : Particle . Amp ParticleInterleave (55) -+ -+ Amp shift 95 -+ $end reduce 54 -+ ERROR reduce 54 -+ KeywordDiv reduce 54 -+ KeywordInclude reduce 54 -+ KeywordStart reduce 54 -+ CloseCurly reduce 54 -+ CloseParen reduce 54 -+ OpenBracket reduce 54 -+ NCName reduce 54 -+ QuotedIdentifier reduce 54 -+ Documentation reduce 54 -+ -+ -+state 147 -+ ParticleChoice : Particle Bar ParticleChoice . (51) -+ -+ . reduce 51 -+ -+ -+state 148 -+ ParticleChoice : Particle . Bar Particle (50) -+ ParticleChoice : Particle Bar Particle . (50) -+ ParticleChoice : Particle . Bar ParticleChoice (51) -+ -+ Bar shift 96 -+ $end reduce 50 -+ ERROR reduce 50 -+ KeywordDiv reduce 50 -+ KeywordInclude reduce 50 -+ KeywordStart reduce 50 -+ CloseCurly reduce 50 -+ CloseParen reduce 50 -+ OpenBracket reduce 50 -+ NCName reduce 50 -+ QuotedIdentifier reduce 50 -+ Documentation reduce 50 -+ -+ -+state 149 -+ PrefixedName : CName . (144) -+ -+ . reduce 144 -+ -+ -+state 150 -+ ForeignElementName : IdentifierOrKeyword . (123) -+ -+ . reduce 123 -+ -+ -+state 151 -+ FollowAnnotations : TwoGreaters AnnotationElement . FollowAnnotations (110) -+ FollowAnnotations : . (109) -+ -+ TwoGreaters shift 100 -+ $end reduce 109 -+ ERROR reduce 109 -+ KeywordDiv reduce 109 -+ KeywordInclude reduce 109 -+ KeywordStart reduce 109 -+ Comma reduce 109 -+ OpenCurly reduce 109 -+ CloseCurly reduce 109 -+ CloseParen reduce 109 -+ OpenBracket reduce 109 -+ Amp reduce 109 -+ Bar reduce 109 -+ Question reduce 109 -+ Asterisk reduce 109 -+ Plus reduce 109 -+ NCName reduce 109 -+ QuotedIdentifier reduce 109 -+ Documentation reduce 109 -+ -+ FollowAnnotations goto 186 -+ -+ -+state 152 -+ ForeignElementName : PrefixedName . (124) -+ -+ . reduce 124 -+ -+ -+state 153 -+ AnnotationElement : ForeignElementName . AnnotationAttributesContent (122) -+ -+ OpenBracket shift 187 -+ . error -+ -+ AnnotationAttributesContent goto 188 -+ -+ -+state 154 -+ AnnotationContentInAnnotations : IdentifierOrKeyword . AnnotationAttributesContent AnnotationContentInAnnotations (116) -+ -+ OpenBracket shift 187 -+ . error -+ -+ AnnotationAttributesContent goto 189 -+ -+ -+state 155 -+ Annotations : Documentations OpenBracket AnnotationContentInAnnotations . CloseBracket (112) -+ -+ CloseBracket shift 190 -+ . error -+ -+ -+state 156 -+ AnnotationContentInAnnotations : PrefixedName . Equal Literal AnnotationContentInAnnotations (114) -+ AnnotationContentInAnnotations : PrefixedName . AnnotationAttributesContent AnnotationContentInAnnotations (115) -+ -+ Equal shift 191 -+ OpenBracket shift 187 -+ . error -+ -+ AnnotationAttributesContent goto 192 -+ -+ -+state 157 -+ Decl : KeywordDefault KeywordNamespace NamespacePrefix Equal NamespaceURILiteral . (6) -+ -+ . reduce 6 -+ -+ -+state 158 -+ LeadAnnotatedSimpleNameClass : Annotations OpenParen . InnerNameClass CloseParen (102) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Annotations goto 112 -+ InnerNameClass goto 193 -+ AnnotatedSimpleNameClass goto 115 -+ NameClassChoice goto 116 -+ AnnotatedExceptNameClass goto 117 -+ LeadAnnotatedExceptNameClass goto 118 -+ LeadAnnotatedSimpleNameClass goto 119 -+ Documentations goto 55 -+ -+ -+state 159 -+ ExceptNameClass : Asterisk . Minus LeadAnnotatedSimpleNameClass (104) -+ SimpleNameClass : Asterisk . (108) -+ -+ Minus shift 194 -+ OpenCurly reduce 108 -+ CloseParen reduce 108 -+ Bar reduce 108 -+ TwoGreaters reduce 108 -+ -+ -+state 160 -+ SimpleNameClass : CName . (106) -+ -+ . reduce 106 -+ -+ -+state 161 -+ ExceptNameClass : NsName . Minus LeadAnnotatedSimpleNameClass (103) -+ SimpleNameClass : NsName . (107) -+ -+ Minus shift 195 -+ OpenCurly reduce 107 -+ CloseParen reduce 107 -+ Bar reduce 107 -+ TwoGreaters reduce 107 -+ -+ -+state 162 -+ SimpleNameClass : IdentifierOrKeyword . (105) -+ -+ . reduce 105 -+ -+ -+state 163 -+ LeadAnnotatedExceptNameClass : Annotations ExceptNameClass . (99) -+ -+ . reduce 99 -+ -+ -+state 164 -+ LeadAnnotatedSimpleNameClass : Annotations SimpleNameClass . (101) -+ -+ . reduce 101 -+ -+ -+state 165 -+ Primary : KeywordAttribute NameClass OpenCurly . Pattern CloseCurly (68) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Pattern goto 196 -+ Annotations goto 134 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 166 -+ NameClassChoice : AnnotatedSimpleNameClass Bar . AnnotatedSimpleNameClass (96) -+ NameClassChoice : AnnotatedSimpleNameClass Bar . NameClassChoice (97) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Annotations goto 197 -+ AnnotatedSimpleNameClass goto 198 -+ NameClassChoice goto 199 -+ LeadAnnotatedSimpleNameClass goto 119 -+ Documentations goto 55 -+ -+ -+state 167 -+ AnnotatedExceptNameClass : LeadAnnotatedExceptNameClass FollowAnnotations . (98) -+ -+ . reduce 98 -+ -+ -+state 168 -+ AnnotatedSimpleNameClass : LeadAnnotatedSimpleNameClass FollowAnnotations . (100) -+ -+ . reduce 100 -+ -+ -+state 169 -+ Div : KeywordDiv OpenCurly Grammar . CloseCurly (42) -+ -+ CloseCurly shift 200 -+ . error -+ -+ -+state 170 -+ Primary : KeywordElement NameClass OpenCurly . Pattern CloseCurly (67) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Pattern goto 201 -+ Annotations goto 134 -+ InnerPattern goto 44 -+ InnerParticle goto 45 -+ ParticleChoice goto 46 -+ ParticleGroup goto 47 -+ ParticleInterleave goto 48 -+ AnnotatedDataExcept goto 49 -+ Particle goto 50 -+ AnnotatedPrimary goto 51 -+ RepeatedPrimary goto 52 -+ LeadAnnotatedPrimary goto 53 -+ LeadAnnotatedDataExcept goto 54 -+ Documentations goto 55 -+ -+ -+state 171 -+ OptInherit : KeywordInherit . Equal IdentifierOrKeyword (31) -+ -+ Equal shift 202 -+ . error -+ -+ -+state 172 -+ Primary : KeywordExternal AnyURILiteral OptInherit . (80) -+ -+ . reduce 80 -+ -+ -+state 173 -+ Primary : KeywordGrammar OpenCurly Grammar . CloseCurly (79) -+ -+ CloseCurly shift 203 -+ . error -+ -+ -+state 174 -+ Include : KeywordInclude AnyURILiteral OptInherit . OptIncludeBody (28) -+ OptIncludeBody : . (32) -+ -+ OpenCurly shift 204 -+ $end reduce 32 -+ ERROR reduce 32 -+ KeywordDiv reduce 32 -+ KeywordInclude reduce 32 -+ KeywordStart reduce 32 -+ CloseCurly reduce 32 -+ OpenBracket reduce 32 -+ NCName reduce 32 -+ QuotedIdentifier reduce 32 -+ Documentation reduce 32 -+ -+ OptIncludeBody goto 205 -+ -+ -+state 175 -+ Primary : KeywordList OpenCurly Pattern . CloseCurly (70) -+ -+ CloseCurly shift 206 -+ . error -+ -+ -+state 176 -+ Primary : KeywordMixed OpenCurly Pattern . CloseCurly (69) -+ -+ CloseCurly shift 207 -+ . error -+ -+ -+state 177 -+ Start : KeywordStart AssignOp Pattern . (23) -+ -+ . reduce 23 -+ -+ -+state 178 -+ LeadAnnotatedPrimary : Annotations OpenParen InnerPattern CloseParen . (66) -+ -+ . reduce 66 -+ -+ -+state 179 -+ Literal : LiteralSegment Tilde Literal . (169) -+ -+ . reduce 169 -+ -+ -+state 180 -+ Define : Identifier AssignOp Pattern . (24) -+ -+ . reduce 24 -+ -+ -+state 181 -+ Param : Annotations . IdentifierOrKeyword Equal Literal (91) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ IdentifierOrKeyword goto 208 -+ Identifier goto 31 -+ Keyword goto 32 -+ -+ -+state 182 -+ OptParams : OpenCurly Params . CloseCurly (88) -+ -+ CloseCurly shift 209 -+ . error -+ -+ -+state 183 -+ Params : Param . Params (90) -+ Params : . (89) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ CloseCurly reduce 89 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ Annotations goto 181 -+ Params goto 210 -+ Param goto 183 -+ Documentations goto 55 -+ -+ -+state 184 -+ DataExcept : DatatypeName OptParams Minus . LeadAnnotatedPrimary (81) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ LiteralSegment reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ -+ Annotations goto 141 -+ LeadAnnotatedPrimary goto 211 -+ Documentations goto 55 -+ -+ -+state 185 -+ Primary : DatatypeName . OptParams (71) -+ Primary : DatatypeName . DatatypeValue (72) -+ OptParams : . (87) -+ -+ OpenCurly shift 138 -+ LiteralSegment shift 80 -+ $end reduce 87 -+ ERROR reduce 87 -+ KeywordDiv reduce 87 -+ KeywordInclude reduce 87 -+ KeywordStart reduce 87 -+ Comma reduce 87 -+ CloseCurly reduce 87 -+ CloseParen reduce 87 -+ OpenBracket reduce 87 -+ Amp reduce 87 -+ Bar reduce 87 -+ Question reduce 87 -+ Asterisk reduce 87 -+ Plus reduce 87 -+ TwoGreaters reduce 87 -+ NCName reduce 87 -+ QuotedIdentifier reduce 87 -+ Documentation reduce 87 -+ -+ Literal goto 82 -+ OptParams goto 212 -+ DatatypeValue goto 140 -+ -+ -+state 186 -+ FollowAnnotations : TwoGreaters AnnotationElement FollowAnnotations . (110) -+ -+ . reduce 110 -+ -+ -+state 187 -+ AnnotationAttributesContent : OpenBracket . NestedAnnotationContents CloseBracket (126) -+ NestedAnnotationContents : . (127) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 127 -+ -+ Literal goto 213 -+ IdentifierOrKeyword goto 214 -+ Identifier goto 31 -+ PrefixedName goto 215 -+ NestedAnnotationContents goto 216 -+ Keyword goto 32 -+ -+ -+state 188 -+ AnnotationElement : ForeignElementName AnnotationAttributesContent . (122) -+ -+ . reduce 122 -+ -+ -+state 189 -+ AnnotationContentInAnnotations : IdentifierOrKeyword AnnotationAttributesContent . AnnotationContentInAnnotations (116) -+ AnnotationContentInAnnotations : . (113) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 113 -+ -+ IdentifierOrKeyword goto 154 -+ Identifier goto 31 -+ AnnotationContentInAnnotations goto 217 -+ PrefixedName goto 156 -+ Keyword goto 32 -+ -+ -+state 190 -+ Annotations : Documentations OpenBracket AnnotationContentInAnnotations CloseBracket . (112) -+ -+ . reduce 112 -+ -+ -+state 191 -+ AnnotationContentInAnnotations : PrefixedName Equal . Literal AnnotationContentInAnnotations (114) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 218 -+ -+ -+state 192 -+ AnnotationContentInAnnotations : PrefixedName AnnotationAttributesContent . AnnotationContentInAnnotations (115) -+ AnnotationContentInAnnotations : . (113) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 113 -+ -+ IdentifierOrKeyword goto 154 -+ Identifier goto 31 -+ AnnotationContentInAnnotations goto 219 -+ PrefixedName goto 156 -+ Keyword goto 32 -+ -+ -+state 193 -+ LeadAnnotatedSimpleNameClass : Annotations OpenParen InnerNameClass . CloseParen (102) -+ -+ CloseParen shift 220 -+ . error -+ -+ -+state 194 -+ ExceptNameClass : Asterisk Minus . LeadAnnotatedSimpleNameClass (104) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Annotations goto 197 -+ LeadAnnotatedSimpleNameClass goto 221 -+ Documentations goto 55 -+ -+ -+state 195 -+ ExceptNameClass : NsName Minus . LeadAnnotatedSimpleNameClass (103) -+ Documentations : . (145) -+ -+ Documentation shift 36 -+ KeywordAttribute reduce 145 -+ KeywordDefault reduce 145 -+ KeywordDatatypes reduce 145 -+ KeywordDiv reduce 145 -+ KeywordElement reduce 145 -+ KeywordEmpty reduce 145 -+ KeywordExternal reduce 145 -+ KeywordGrammar reduce 145 -+ KeywordInclude reduce 145 -+ KeywordInherit reduce 145 -+ KeywordList reduce 145 -+ KeywordMixed reduce 145 -+ KeywordNamespace reduce 145 -+ KeywordNotAllowed reduce 145 -+ KeywordParent reduce 145 -+ KeywordStart reduce 145 -+ KeywordString reduce 145 -+ KeywordText reduce 145 -+ KeywordToken reduce 145 -+ OpenParen reduce 145 -+ OpenBracket reduce 145 -+ Asterisk reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ CName reduce 145 -+ NsName reduce 145 -+ -+ Annotations goto 197 -+ LeadAnnotatedSimpleNameClass goto 222 -+ Documentations goto 55 -+ -+ -+state 196 -+ Primary : KeywordAttribute NameClass OpenCurly Pattern . CloseCurly (68) -+ -+ CloseCurly shift 223 -+ . error -+ -+ -+state 197 -+ LeadAnnotatedSimpleNameClass : Annotations . SimpleNameClass (101) -+ LeadAnnotatedSimpleNameClass : Annotations . OpenParen InnerNameClass CloseParen (102) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ OpenParen shift 158 -+ Asterisk shift 224 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 160 -+ NsName shift 225 -+ . error -+ -+ IdentifierOrKeyword goto 162 -+ Identifier goto 31 -+ SimpleNameClass goto 164 -+ Keyword goto 32 -+ -+ -+state 198 -+ NameClassChoice : AnnotatedSimpleNameClass . Bar AnnotatedSimpleNameClass (96) -+ NameClassChoice : AnnotatedSimpleNameClass Bar AnnotatedSimpleNameClass . (96) -+ NameClassChoice : AnnotatedSimpleNameClass . Bar NameClassChoice (97) -+ -+ Bar shift 166 -+ OpenCurly reduce 96 -+ CloseParen reduce 96 -+ -+ -+state 199 -+ NameClassChoice : AnnotatedSimpleNameClass Bar NameClassChoice . (97) -+ -+ . reduce 97 -+ -+ -+state 200 -+ Div : KeywordDiv OpenCurly Grammar CloseCurly . (42) -+ -+ . reduce 42 -+ -+ -+state 201 -+ Primary : KeywordElement NameClass OpenCurly Pattern . CloseCurly (67) -+ -+ CloseCurly shift 226 -+ . error -+ -+ -+state 202 -+ OptInherit : KeywordInherit Equal . IdentifierOrKeyword (31) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ IdentifierOrKeyword goto 227 -+ Identifier goto 31 -+ Keyword goto 32 -+ -+ -+state 203 -+ Primary : KeywordGrammar OpenCurly Grammar CloseCurly . (79) -+ -+ . reduce 79 -+ -+ -+state 204 -+ OptIncludeBody : OpenCurly . IncludeBody CloseCurly (33) -+ IncludeBody : . (34) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ KeywordDiv reduce 145 -+ KeywordStart reduce 145 -+ CloseCurly reduce 34 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ AnnotationElementNotKeyword goto 228 -+ Annotations goto 229 -+ IncludeBody goto 230 -+ IncludeMember goto 231 -+ AnnotatedIncludeComponent goto 232 -+ Documentations goto 55 -+ -+ -+state 205 -+ Include : KeywordInclude AnyURILiteral OptInherit OptIncludeBody . (28) -+ -+ . reduce 28 -+ -+ -+state 206 -+ Primary : KeywordList OpenCurly Pattern CloseCurly . (70) -+ -+ . reduce 70 -+ -+ -+state 207 -+ Primary : KeywordMixed OpenCurly Pattern CloseCurly . (69) -+ -+ . reduce 69 -+ -+ -+state 208 -+ Param : Annotations IdentifierOrKeyword . Equal Literal (91) -+ -+ Equal shift 233 -+ . error -+ -+ -+state 209 -+ OptParams : OpenCurly Params CloseCurly . (88) -+ -+ . reduce 88 -+ -+ -+state 210 -+ Params : Param Params . (90) -+ -+ . reduce 90 -+ -+ -+state 211 -+ DataExcept : DatatypeName OptParams Minus LeadAnnotatedPrimary . (81) -+ -+ . reduce 81 -+ -+ -+state 212 -+ Primary : DatatypeName OptParams . (71) -+ -+ . reduce 71 -+ -+ -+213: reduce/reduce conflict (reduce 127, reduce 132) on CloseBracket -+state 213 -+ NestedAnnotationContents : Literal . (132) -+ NestedAnnotationContents : Literal . NestedAnnotationContents (133) -+ NestedAnnotationContents : . (127) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 127 -+ -+ Literal goto 213 -+ IdentifierOrKeyword goto 214 -+ Identifier goto 31 -+ PrefixedName goto 215 -+ NestedAnnotationContents goto 234 -+ Keyword goto 32 -+ -+ -+state 214 -+ NestedAnnotationContents : IdentifierOrKeyword . Equal Literal NestedAnnotationContents (129) -+ NestedAnnotationContents : IdentifierOrKeyword . AnnotationAttributesContent NestedAnnotationContents (131) -+ -+ Equal shift 235 -+ OpenBracket shift 187 -+ . error -+ -+ AnnotationAttributesContent goto 236 -+ -+ -+state 215 -+ NestedAnnotationContents : PrefixedName . Equal Literal NestedAnnotationContents (128) -+ NestedAnnotationContents : PrefixedName . AnnotationAttributesContent NestedAnnotationContents (130) -+ -+ Equal shift 237 -+ OpenBracket shift 187 -+ . error -+ -+ AnnotationAttributesContent goto 238 -+ -+ -+state 216 -+ AnnotationAttributesContent : OpenBracket NestedAnnotationContents . CloseBracket (126) -+ -+ CloseBracket shift 239 -+ . error -+ -+ -+state 217 -+ AnnotationContentInAnnotations : IdentifierOrKeyword AnnotationAttributesContent AnnotationContentInAnnotations . (116) -+ -+ . reduce 116 -+ -+ -+state 218 -+ AnnotationContentInAnnotations : PrefixedName Equal Literal . AnnotationContentInAnnotations (114) -+ AnnotationContentInAnnotations : . (113) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 113 -+ -+ IdentifierOrKeyword goto 154 -+ Identifier goto 31 -+ AnnotationContentInAnnotations goto 240 -+ PrefixedName goto 156 -+ Keyword goto 32 -+ -+ -+state 219 -+ AnnotationContentInAnnotations : PrefixedName AnnotationAttributesContent AnnotationContentInAnnotations . (115) -+ -+ . reduce 115 -+ -+ -+state 220 -+ LeadAnnotatedSimpleNameClass : Annotations OpenParen InnerNameClass CloseParen . (102) -+ -+ . reduce 102 -+ -+ -+state 221 -+ ExceptNameClass : Asterisk Minus LeadAnnotatedSimpleNameClass . (104) -+ -+ . reduce 104 -+ -+ -+state 222 -+ ExceptNameClass : NsName Minus LeadAnnotatedSimpleNameClass . (103) -+ -+ . reduce 103 -+ -+ -+state 223 -+ Primary : KeywordAttribute NameClass OpenCurly Pattern CloseCurly . (68) -+ -+ . reduce 68 -+ -+ -+state 224 -+ SimpleNameClass : Asterisk . (108) -+ -+ . reduce 108 -+ -+ -+state 225 -+ SimpleNameClass : NsName . (107) -+ -+ . reduce 107 -+ -+ -+state 226 -+ Primary : KeywordElement NameClass OpenCurly Pattern CloseCurly . (67) -+ -+ . reduce 67 -+ -+ -+state 227 -+ OptInherit : KeywordInherit Equal IdentifierOrKeyword . (31) -+ -+ . reduce 31 -+ -+ -+state 228 -+ IncludeMember : AnnotationElementNotKeyword . (37) -+ -+ . reduce 37 -+ -+ -+state 229 -+ AnnotatedIncludeComponent : Annotations . IncludeComponent (38) -+ -+ KeywordDiv shift 241 -+ KeywordStart shift 75 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ . error -+ -+ Start goto 242 -+ Define goto 243 -+ Identifier goto 111 -+ IncludeComponent goto 244 -+ IncludeDiv goto 245 -+ -+ -+state 230 -+ OptIncludeBody : OpenCurly IncludeBody . CloseCurly (33) -+ -+ CloseCurly shift 246 -+ . error -+ -+ -+state 231 -+ IncludeBody : IncludeMember . IncludeBody (35) -+ IncludeBody : . (34) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ KeywordDiv reduce 145 -+ KeywordStart reduce 145 -+ CloseCurly reduce 34 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ AnnotationElementNotKeyword goto 228 -+ Annotations goto 229 -+ IncludeBody goto 247 -+ IncludeMember goto 231 -+ AnnotatedIncludeComponent goto 232 -+ Documentations goto 55 -+ -+ -+state 232 -+ IncludeMember : AnnotatedIncludeComponent . (36) -+ -+ . reduce 36 -+ -+ -+state 233 -+ Param : Annotations IdentifierOrKeyword Equal . Literal (91) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 248 -+ -+ -+state 234 -+ NestedAnnotationContents : Literal NestedAnnotationContents . (133) -+ -+ . reduce 133 -+ -+ -+state 235 -+ NestedAnnotationContents : IdentifierOrKeyword Equal . Literal NestedAnnotationContents (129) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 249 -+ -+ -+state 236 -+ NestedAnnotationContents : IdentifierOrKeyword AnnotationAttributesContent . NestedAnnotationContents (131) -+ NestedAnnotationContents : . (127) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 127 -+ -+ Literal goto 213 -+ IdentifierOrKeyword goto 214 -+ Identifier goto 31 -+ PrefixedName goto 215 -+ NestedAnnotationContents goto 250 -+ Keyword goto 32 -+ -+ -+state 237 -+ NestedAnnotationContents : PrefixedName Equal . Literal NestedAnnotationContents (128) -+ -+ LiteralSegment shift 80 -+ . error -+ -+ Literal goto 251 -+ -+ -+state 238 -+ NestedAnnotationContents : PrefixedName AnnotationAttributesContent . NestedAnnotationContents (130) -+ NestedAnnotationContents : . (127) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 127 -+ -+ Literal goto 213 -+ IdentifierOrKeyword goto 214 -+ Identifier goto 31 -+ PrefixedName goto 215 -+ NestedAnnotationContents goto 252 -+ Keyword goto 32 -+ -+ -+state 239 -+ AnnotationAttributesContent : OpenBracket NestedAnnotationContents CloseBracket . (126) -+ -+ . reduce 126 -+ -+ -+state 240 -+ AnnotationContentInAnnotations : PrefixedName Equal Literal AnnotationContentInAnnotations . (114) -+ -+ . reduce 114 -+ -+ -+state 241 -+ IncludeDiv : KeywordDiv . OpenCurly IncludeBody CloseCurly (43) -+ -+ OpenCurly shift 253 -+ . error -+ -+ -+state 242 -+ IncludeComponent : Start . (39) -+ -+ . reduce 39 -+ -+ -+state 243 -+ IncludeComponent : Define . (40) -+ -+ . reduce 40 -+ -+ -+state 244 -+ AnnotatedIncludeComponent : Annotations IncludeComponent . (38) -+ -+ . reduce 38 -+ -+ -+state 245 -+ IncludeComponent : IncludeDiv . (41) -+ -+ . reduce 41 -+ -+ -+state 246 -+ OptIncludeBody : OpenCurly IncludeBody CloseCurly . (33) -+ -+ . reduce 33 -+ -+ -+state 247 -+ IncludeBody : IncludeMember IncludeBody . (35) -+ -+ . reduce 35 -+ -+ -+state 248 -+ Param : Annotations IdentifierOrKeyword Equal Literal . (91) -+ -+ . reduce 91 -+ -+ -+state 249 -+ NestedAnnotationContents : IdentifierOrKeyword Equal Literal . NestedAnnotationContents (129) -+ NestedAnnotationContents : . (127) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 127 -+ -+ Literal goto 213 -+ IdentifierOrKeyword goto 214 -+ Identifier goto 31 -+ PrefixedName goto 215 -+ NestedAnnotationContents goto 254 -+ Keyword goto 32 -+ -+ -+state 250 -+ NestedAnnotationContents : IdentifierOrKeyword AnnotationAttributesContent NestedAnnotationContents . (131) -+ -+ . reduce 131 -+ -+ -+state 251 -+ NestedAnnotationContents : PrefixedName Equal Literal . NestedAnnotationContents (128) -+ NestedAnnotationContents : . (127) -+ -+ KeywordAttribute shift 8 -+ KeywordDefault shift 9 -+ KeywordDatatypes shift 10 -+ KeywordDiv shift 11 -+ KeywordElement shift 12 -+ KeywordEmpty shift 13 -+ KeywordExternal shift 14 -+ KeywordGrammar shift 15 -+ KeywordInclude shift 16 -+ KeywordInherit shift 17 -+ KeywordList shift 18 -+ KeywordMixed shift 19 -+ KeywordNamespace shift 20 -+ KeywordNotAllowed shift 21 -+ KeywordParent shift 22 -+ KeywordStart shift 23 -+ KeywordString shift 24 -+ KeywordText shift 25 -+ KeywordToken shift 26 -+ LiteralSegment shift 80 -+ NCName shift 27 -+ QuotedIdentifier shift 28 -+ CName shift 149 -+ CloseBracket reduce 127 -+ -+ Literal goto 213 -+ IdentifierOrKeyword goto 214 -+ Identifier goto 31 -+ PrefixedName goto 215 -+ NestedAnnotationContents goto 255 -+ Keyword goto 32 -+ -+ -+state 252 -+ NestedAnnotationContents : PrefixedName AnnotationAttributesContent NestedAnnotationContents . (130) -+ -+ . reduce 130 -+ -+ -+state 253 -+ IncludeDiv : KeywordDiv OpenCurly . IncludeBody CloseCurly (43) -+ IncludeBody : . (34) -+ Documentations : . (145) -+ -+ ERROR shift 35 -+ Documentation shift 36 -+ KeywordDiv reduce 145 -+ KeywordStart reduce 145 -+ CloseCurly reduce 34 -+ OpenBracket reduce 145 -+ NCName reduce 145 -+ QuotedIdentifier reduce 145 -+ -+ AnnotationElementNotKeyword goto 228 -+ Annotations goto 229 -+ IncludeBody goto 256 -+ IncludeMember goto 231 -+ AnnotatedIncludeComponent goto 232 -+ Documentations goto 55 -+ -+ -+state 254 -+ NestedAnnotationContents : IdentifierOrKeyword Equal Literal NestedAnnotationContents . (129) -+ -+ . reduce 129 -+ -+ -+state 255 -+ NestedAnnotationContents : PrefixedName Equal Literal NestedAnnotationContents . (128) -+ -+ . reduce 128 -+ -+ -+state 256 -+ IncludeDiv : KeywordDiv OpenCurly IncludeBody . CloseCurly (43) -+ -+ CloseCurly shift 257 -+ . error -+ -+ -+state 257 -+ IncludeDiv : KeywordDiv OpenCurly IncludeBody CloseCurly . (43) -+ -+ . reduce 43 -+ -+ -+Rules never reduced: -+ AttributableAnnotations : (117) -+ AttributableAnnotations : AttributableAnnotations PrefixedName Equal Literal NonAttributableAnnotations (118) -+ NonAttributableAnnotations : (119) -+ NonAttributableAnnotations : PrefixedName AnnotationAttributesContent (120) -+ NonAttributableAnnotations : NonAttributableAnnotations IdentifierOrKeyword AnnotationAttributesContent (121) -+ NestedAnnotationContents : Literal (132) -+ NestedAnnotationAttributes : (134) -+ NestedAnnotationAttributes : AnyAttributeName Equal Literal NestedAnnotationAttributes (135) -+ AnyAttributeName : IdentifierOrKeyword (136) -+ AnyAttributeName : PrefixedName (137) -+ AnnotationContent : (138) -+ AnnotationContent : NestedAnnotationElement AnnotationContent (139) -+ AnnotationContent : Literal AnnotationContent (140) -+ NestedAnnotationElement : AnyElementName AnnotationAttributesContent (141) -+ AnyElementName : IdentifierOrKeyword (142) -+ AnyElementName : PrefixedName (143) -+ -+ -+State 213 contains 1 reduce/reduce conflict. -+ -+ -+81 terminals, 75 nonterminals -+172 grammar rules, 258 states ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/class/Mono.WebBrowser/Mono.WebBrowser2K5.csproj -@@ -0,0 +1,250 @@ -+ -+ -+ Local -+ 8.0.50727 -+ 2.0 -+ {5E6C996A-007F-40CE-B244-006EFCFB77D2} -+ Debug -+ AnyCPU -+ -+ -+ -+ -+ Mono.WebBrowser -+ -+ -+ JScript -+ Grid -+ IE50 -+ false -+ Library -+ Mono.WebBrowser -+ OnBuildSuccess -+ -+ -+ -+ -+ -+ -+ -+ -+ bin\Debug\ -+ false -+ 285212672 -+ false -+ -+ -+ DEBUG;TRACE -+ -+ -+ true -+ 4096 -+ false -+ -+ -+ false -+ false -+ false -+ false -+ 4 -+ full -+ prompt -+ -+ -+ bin\Release\ -+ false -+ 285212672 -+ false -+ -+ -+ TRACE -+ -+ -+ false -+ 4096 -+ false -+ -+ -+ true -+ false -+ false -+ false -+ 4 -+ none -+ prompt -+ -+ -+ -+ System -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ---- /dev/null -+++ libgdiplus-2.10-2.10/mcs/class/System.XML/Mono.Xml.Xsl/PatternParser.jay -@@ -0,0 +1,591 @@ -+%{ -+// XPath/XSLT Pattern parser -+// -+// Author: Piers Haken -+// Atsushi Enomoto -+// -+// IMPORTANT: -+// Do not edit "PatternParser.jay". It is autogenerated from -+// Parser.jay. It will be overwritten! -+// -+ -+using System; -+using System.Collections; -+using System.Xml; -+using System.Xml.XPath; -+ -+#if XSLT_PATTERN -+namespace Mono.Xml.Xsl -+#else -+namespace Mono.Xml.XPath -+#endif -+{ -+#if XSLT_PATTERN -+ internal class XsltPatternParser -+#else -+ internal class XPathParser -+#endif -+ { -+ -+ internal System.Xml.Xsl.IStaticXsltContext Context; -+ -+#if XSLT_PATTERN -+ public XsltPatternParser () : this (null) {} -+ internal XsltPatternParser (System.Xml.Xsl.IStaticXsltContext context) -+#else -+ public XPathParser () : this (null) {} -+ internal XPathParser (System.Xml.Xsl.IStaticXsltContext context) -+#endif -+ { -+ Context = context; -+ ErrorOutput = System.IO.TextWriter.Null; -+// debug = new yydebug.yyDebugSimple (); -+ } -+ -+ internal Expression Compile (string xpath) -+ { -+ try { -+ Tokenizer tokenizer = new Tokenizer (xpath); -+ return (Expression) yyparse (tokenizer); -+ } catch (XPathException) { -+ throw; -+ } catch (Exception e) { -+ throw new XPathException ("Error during parse of " + xpath, e); -+ } -+ } -+ static int yacc_verbose_flag; -+ -+ private NodeSet CreateNodeTest (Axes axis, object nodeTest, ArrayList plist) -+ { -+ NodeSet test = CreateNodeTest (axis, nodeTest); -+ if (plist != null) { -+ for (int i = 0; i < plist.Count; i++) -+ test = new ExprFilter (test, -+ (Expression) plist [i]); -+ } -+ return test; -+ } -+ -+ private NodeTest CreateNodeTest (Axes axis, object test) -+ { -+ if (test is XPathNodeType) -+ return new NodeTypeTest (axis, -+ (XPathNodeType) test, null); -+ else if (test is string || test == null) -+ return new NodeTypeTest (axis, -+ XPathNodeType.ProcessingInstruction, -+ (string) test); -+ XmlQualifiedName q = (XmlQualifiedName) test; -+ if (q == XmlQualifiedName.Empty) -+ return new NodeTypeTest (axis); -+ else -+ return new NodeNameTest (axis, q, Context); -+ } -+%} -+ -+%token ERROR -+%token EOF -+ -+%token SLASH "/" -+%token SLASH2 "//" -+%token DOT "." -+%token DOT2 ".." -+%token COLON2 "::" -+%token COMMA "," -+%token AT "@" -+ -+%token FUNCTION_NAME -+ -+%token BRACKET_OPEN "[" -+%token BRACKET_CLOSE "]" -+%token PAREN_OPEN "(" -+%token PAREN_CLOSE ")" -+ -+%token AND "and" -+%token OR "or" -+%token DIV "div" -+%token MOD "mod" -+%token PLUS "+" -+%token MINUS "-" -+%token ASTERISK "*" -+%token DOLLAR "$" -+%token BAR "|" -+%token EQ "=" -+%token NE "!=" -+%token LE "<=" -+%token GE ">=" -+%token LT "<" -+%token GT ">" -+ -+%token ANCESTOR "ancestor" -+%token ANCESTOR_OR_SELF "ancstor-or-self" -+%token ATTRIBUTE "attribute" -+%token CHILD "child" -+%token DESCENDANT "descendant" -+%token DESCENDANT_OR_SELF "descendant-or-self" -+%token FOLLOWING "following" -+%token FOLLOWING_SIBLING "sibling" -+%token NAMESPACE "NameSpace" -+%token PARENT "parent" -+%token PRECEDING "preceding" -+%token PRECEDING_SIBLING "preceding-sibling" -+%token SELF "self" -+ -+%token COMMENT "comment" -+%token TEXT "text" -+%token PROCESSING_INSTRUCTION "processing-instruction" -+%token NODE "node" -+ -+%token MULTIPLY "*" -+ -+%token NUMBER -+%token LITERAL -+%token QName -+ -+ -+%start Pattern -+ -+ -+%left AND -+%left OR -+%left EQ -+%left NE -+%left LE -+%left GE -+%left LT -+%left GT -+ -+%left DIV -+%left MOD -+%left PLUS -+%left MINUS -+ -+%% -+ -+/* XSLT Pattern */ -+ -+Pattern -+ : LocationPathPattern -+ | Pattern BAR LocationPathPattern -+ { -+ $$ = new ExprUNION ((NodeSet) $1, (NodeSet) $3); -+ } -+ ; -+ -+LocationPathPattern -+ : SLASH -+ { -+ $$ = new ExprRoot (); -+ } -+ | SLASH RelativePathPattern -+ { -+ $$ = new ExprSLASH (new ExprRoot (), (NodeSet) $2); -+ } -+ | IdKeyPattern -+ | IdKeyPattern SLASH RelativePathPattern -+ { -+ $$ = new ExprSLASH ((Expression) $1, (NodeSet) $3); -+ } -+ | IdKeyPattern SLASH2 RelativePathPattern -+ { -+ $$ = new ExprSLASH2 ((Expression) $1, (NodeSet) $3); -+ } -+ | SLASH2 RelativePathPattern -+ { -+ $$ = new ExprSLASH2 (new ExprRoot (), (NodeSet) $2); -+ } -+ | RelativePathPattern -+ ; -+ -+// to avoid context-sensitive tokenizer, I just reuse FUNCTION_NAME -+IdKeyPattern -+ : FUNCTION_NAME PAREN_OPEN LITERAL PAREN_CLOSE -+ { -+ XmlQualifiedName name = (XmlQualifiedName) $1; -+ if (name.Name != "id" || name.Namespace != String.Empty) -+ throw new XPathException (String.Format ("Expected 'id' but got '{0}'", name)); -+ $$ = ExprFunctionCall.Factory (name, -+ new FunctionArguments ( -+ new ExprLiteral ((string) $3), -+ null), -+ Context); -+ } -+ | FUNCTION_NAME PAREN_OPEN LITERAL COMMA LITERAL PAREN_CLOSE -+ { -+ XmlQualifiedName name = (XmlQualifiedName) $1; -+ if (name.Name != "key" || name.Namespace != String.Empty) -+ throw new XPathException (String.Format ("Expected 'key' but got '{0}'", name)); -+ $$ = Context.TryGetFunction (name, -+ new FunctionArguments ( -+ new ExprLiteral ((string) $3), -+ new FunctionArguments ( -+ new ExprLiteral ((string) $5), -+ null))); -+ } -+ ; -+ -+RelativePathPattern -+ : StepPattern -+ | RelativePathPattern SLASH StepPattern -+ { -+ $$ = new ExprSLASH ((Expression) $1, (NodeSet) $3); -+ } -+ | RelativePathPattern SLASH2 StepPattern -+ { -+ $$ = new ExprSLASH2 ((Expression) $1, (NodeSet) $3); -+ } -+ ; -+ -+StepPattern -+ : ChildOrAttributeAxisSpecifier NodeTest Predicates -+ { -+ $$ = CreateNodeTest ((Axes) $1, $2, (ArrayList) $3); -+ } -+ ; -+ -+ChildOrAttributeAxisSpecifier -+ : AbbreviatedAxisSpecifier -+ | CHILD COLON2 -+ { -+ $$ = Axes.Child; -+ } -+ | ATTRIBUTE COLON2 -+ { -+ $$ = Axes.Attribute; -+ } -+ ; -+ -+Predicates -+ : // empty -+ { -+ $$ = null; -+ } -+ | Predicates Predicate -+ { -+ ArrayList al = (ArrayList) $1; -+ if (al == null) -+ al = new ArrayList (); -+ al.Add ((Expression) $2); -+ $$ = al; -+ } -+ ; -+ -+/* ---- end of XSLT Pattern ---- */ -+ -+ -+Expr -+ : OrExpr -+ ; -+ -+OrExpr -+ : AndExpr -+ | OrExpr OR AndExpr -+ { -+ $$ = new ExprOR ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+AndExpr -+ : EqualityExpr -+ | AndExpr AND EqualityExpr -+ { -+ $$ = new ExprAND ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+EqualityExpr -+ : RelationalExpr -+ | EqualityExpr EQ RelationalExpr -+ { -+ $$ = new ExprEQ ((Expression) $1, (Expression) $3); -+ } -+ | EqualityExpr NE RelationalExpr -+ { -+ $$ = new ExprNE ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+RelationalExpr -+ : AdditiveExpr -+ | RelationalExpr LT AdditiveExpr -+ { -+ $$ = new ExprLT ((Expression) $1, (Expression) $3); -+ } -+ | RelationalExpr GT AdditiveExpr -+ { -+ $$ = new ExprGT ((Expression) $1, (Expression) $3); -+ } -+ | RelationalExpr LE AdditiveExpr -+ { -+ $$ = new ExprLE ((Expression) $1, (Expression) $3); -+ } -+ | RelationalExpr GE AdditiveExpr -+ { -+ $$ = new ExprGE ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+AdditiveExpr -+ : MultiplicativeExpr -+ | AdditiveExpr PLUS MultiplicativeExpr -+ { -+ $$ = new ExprPLUS ((Expression) $1, (Expression) $3); -+ } -+ | AdditiveExpr MINUS MultiplicativeExpr -+ { -+ $$ = new ExprMINUS ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+MultiplicativeExpr -+ : UnaryExpr -+ | MultiplicativeExpr MULTIPLY UnaryExpr -+ { -+ $$ = new ExprMULT ((Expression) $1, (Expression) $3); -+ } -+ | MultiplicativeExpr DIV UnaryExpr -+ { -+ $$ = new ExprDIV ((Expression) $1, (Expression) $3); -+ } -+ | MultiplicativeExpr MOD UnaryExpr -+ { -+ $$ = new ExprMOD ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+UnaryExpr -+ : UnionExpr -+ | MINUS UnaryExpr -+ { -+ $$ = new ExprNEG ((Expression) $2); -+ } -+ ; -+ -+UnionExpr -+ : PathExpr -+ | UnionExpr BAR PathExpr -+ { -+ $$ = new ExprUNION ((Expression) $1, (Expression) $3); -+ } -+ ; -+ -+PathExpr -+ : LocationPath -+ | FilterExpr -+ | FilterExpr SLASH RelativeLocationPath -+ { -+ $$ = new ExprSLASH ((Expression) $1, (NodeSet) $3); -+ } -+ | FilterExpr SLASH2 RelativeLocationPath -+ { -+ $$ = new ExprSLASH2 ((Expression) $1, (NodeSet) $3); -+ } -+ ; -+ -+LocationPath -+ : RelativeLocationPath -+ | AbsoluteLocationPath -+ ; -+ -+AbsoluteLocationPath -+ : SLASH -+ { -+ $$ = new ExprRoot (); -+ } -+ | SLASH RelativeLocationPath -+ { -+ $$ = new ExprSLASH (new ExprRoot (), (NodeSet) $2); -+ } -+ | SLASH2 RelativeLocationPath -+ { -+ $$ = new ExprSLASH2 (new ExprRoot (), (NodeSet) $2); -+ } -+ ; -+ -+RelativeLocationPath -+ : Step -+ | RelativeLocationPath SLASH Step -+ { -+ $$ = new ExprSLASH ((NodeSet) $1, (NodeSet) $3); -+ } -+ | RelativeLocationPath SLASH2 Step -+ { -+ $$ = new ExprSLASH2 ((NodeSet) $1, (NodeSet) $3); -+ } -+ ; -+ -+Step -+ : AxisSpecifier NodeTest Predicates -+ { -+ $$ = CreateNodeTest ((Axes) $1, $2, (ArrayList) $3); -+ } -+ | AbbreviatedStep -+ ; -+ -+NodeTest // QName, XPathNodeType or string -+ : NameTest -+ | NodeType PAREN_OPEN PAREN_CLOSE -+ { -+ $$ = (XPathNodeType) $1; -+ } -+ | PROCESSING_INSTRUCTION PAREN_OPEN OptionalLiteral PAREN_CLOSE -+ { -+ $$ = (string) $3; -+ } -+ ; -+ -+NameTest -+ : ASTERISK -+ { -+ $$ = XmlQualifiedName.Empty; -+ } -+ | QName // token QName also contains "blah:*" -+ ; -+ -+AbbreviatedStep -+ : DOT -+ { -+ $$ = new NodeTypeTest (Axes.Self, XPathNodeType.All); -+ } -+ | DOT2 -+ { -+ $$ = new NodeTypeTest (Axes.Parent, XPathNodeType.All); -+ } -+ ; -+ -+Predicates -+ : /* empty */ -+ { -+ $$ = null; -+ } -+ | Predicates Predicate -+ { -+ ArrayList al = (ArrayList) $1; -+ if (al == null) -+ al = new ArrayList (); -+ al.Add ($2); -+ $$ = al; -+ } -+ ; -+ -+AxisSpecifier -+ : AxisName COLON2 -+ { -+ $$ = $1; -+ } -+ | AbbreviatedAxisSpecifier -+ ; -+ -+AbbreviatedAxisSpecifier -+ : /* empty */ -+ { -+ $$ = Axes.Child; -+ } -+ | AT -+ { -+ $$ = Axes.Attribute; -+ } -+ ; -+ -+NodeType -+ : COMMENT { $$ = XPathNodeType.Comment; } -+ | TEXT { $$ = XPathNodeType.Text; } -+ | PROCESSING_INSTRUCTION { $$ = XPathNodeType.ProcessingInstruction; } -+ | NODE { $$ = XPathNodeType.All; } -+ ; -+ -+ -+FilterExpr -+ : PrimaryExpr -+ | FilterExpr Predicate -+ { -+ $$ = new ExprFilter ((Expression) $1, (Expression) $2); -+ } -+ ; -+ -+PrimaryExpr -+ : DOLLAR QName -+ { -+ Expression ret = null; -+ if (Context != null) -+ ret = Context.TryGetVariable (((XmlQualifiedName) $2).ToString ()); -+ -+ if (ret == null) -+ ret = new ExprVariable ((XmlQualifiedName) $2, Context); -+ -+ $$ = ret; -+ } -+ | PAREN_OPEN Expr PAREN_CLOSE -+ { -+ $$ = new ExprParens ((Expression) $2); -+ } -+ | LITERAL -+ { -+ $$ = new ExprLiteral ((String) $1); -+ } -+ | NUMBER -+ { -+ $$ = new ExprNumber ((double) $1); -+ } -+ | FunctionCall -+ ; -+ -+FunctionCall -+ : FUNCTION_NAME PAREN_OPEN OptionalArgumentList PAREN_CLOSE -+ { -+ Expression ret = null; -+ if (Context != null) -+ ret = Context.TryGetFunction ((XmlQualifiedName) $1, (FunctionArguments) $3); -+ if (ret == null) -+ ret = ExprFunctionCall.Factory ((XmlQualifiedName) $1, (FunctionArguments) $3, Context); -+ -+ $$ = ret; -+ } -+ ; -+ -+OptionalArgumentList -+ : /* empty */ -+ | Expr OptionalArgumentListTail -+ { -+ $$ = new FunctionArguments ((Expression) $1, (FunctionArguments) $2); -+ } -+ ; -+ -+OptionalArgumentListTail -+ : /* empty */ -+ | COMMA Expr OptionalArgumentListTail -+ { -+ $$ = new FunctionArguments ((Expression) $2, (FunctionArguments) $3); -+ } -+ ; -+ -+Predicate -+ : BRACKET_OPEN Expr BRACKET_CLOSE -+ { -+ $$ = $2; -+ } -+ ; -+ -+AxisName -+ : ANCESTOR { $$ = Axes.Ancestor; } -+ | ANCESTOR_OR_SELF { $$ = Axes.AncestorOrSelf; } -+ | ATTRIBUTE { $$ = Axes.Attribute; } -+ | CHILD { $$ = Axes.Child; } -+ | DESCENDANT { $$ = Axes.Descendant; } -+ | DESCENDANT_OR_SELF { $$ = Axes.DescendantOrSelf; } -+ | FOLLOWING { $$ = Axes.Following; } -+ | FOLLOWING_SIBLING { $$ = Axes.FollowingSibling; } -+ | NAMESPACE { $$ = Axes.Namespace; } -+ | PARENT { $$ = Axes.Parent; } -+ | PRECEDING { $$ = Axes.Preceding; } -+ | PRECEDING_SIBLING { $$ = Axes.PrecedingSibling; } -+ | SELF { $$ = Axes.Self; } -+ ; -+ -+OptionalLiteral -+ : /* empty */ -+ | LITERAL -+ ; -+ -+%% -+ } ---- /dev/null -+++ libgdiplus-2.10-2.10/eglib/doltcompile -@@ -0,0 +1,40 @@ -+#!/bin/bash -+args=("$@") -+for ((arg=0; arg<${#args[@]}; arg++)) ; do -+ if test x"${args[$arg]}" = x-o ; then -+ objarg=$((arg+1)) -+ break -+ fi -+done -+if test x$objarg = x ; then -+ echo 'Error: no -o on compiler command line' 1>&2 -+ exit 1 -+fi -+lo="${args[$objarg]}" -+obj="${lo%.lo}" -+if test x"$lo" = x"$obj" ; then -+ echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2 -+ exit 1 -+fi -+objbase="${obj##*/}" -+libobjdir="${obj%$objbase}.libs" -+if test ! -d "$libobjdir" ; then -+ mkdir_out="$(mkdir "$libobjdir" 2>&1)" -+ mkdir_ret=$? -+ if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then -+ echo "$mkdir_out" 1>&2 -+ exit $mkdir_ret -+ fi -+fi -+pic_object="$libobjdir/$objbase.o" -+args[$objarg]="$pic_object" -+"${args[@]}" -fPIC -DPIC || exit $? -+non_pic_object="$obj.o" -+args[$objarg]="$non_pic_object" -+"${args[@]}" >/dev/null 2>&1 || exit $? -+{ -+echo "# $lo - a libtool object file" -+echo "# Generated by doltcompile, not libtool" -+echo "pic_object='.libs/${objbase}.o'" -+echo "non_pic_object='${objbase}.o'" -+} > "$lo" ---- /dev/null -+++ libgdiplus-2.10-2.10/eglib/doltlibtool -@@ -0,0 +1,19 @@ -+#!/bin/bash -+top_builddir_slash="${0%%doltlibtool}" -+: ${top_builddir_slash:=./} -+args=() -+modeok=false -+tagok=false -+for arg in "$@"; do -+ case "$arg" in -+ --mode=compile) modeok=true ;; -+ --tag=CC|--tag=CXX) tagok=true ;; -+ --quiet) ;; -+ *) args[${#args[@]}]="$arg" ;; -+ esac -+done -+if $modeok && $tagok ; then -+ . ${top_builddir_slash}doltcompile "${args[@]}" -+else -+ exec ${top_builddir_slash}libtool "$@" -+fi ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/control -@@ -0,0 +1,31 @@ -+Source: libgdiplus-2.10 -+Section: cli-mono -+Priority: extra -+Maintainer: Eberhard Beilharz -+Build-Depends: debhelper (>= 7.0.50~), autotools-dev, -+ dpkg-dev (>= 1.13.19), -+ libglib2.0-dev (>= 2.4), -+ bison, -+ libtool, -+ dc, -+ lsb-release, -+ libx11-dev, -+ libxt-dev, -+ zlib1g-dev, -+ autoconf, -+ automake, -+ dh-autoreconf, -+ python -+Standards-Version: 3.9.1 -+Homepage: http://mono-project.com -+#Vcs-Git: git://git.debian.org/collab-maint/mono.git -+#Vcs-Browser: http://git.debian.org/?p=collab-maint/mono.git;a=summary -+ -+Package: libgdiplus-2.10 -+Architecture: any -+Depends: ${shlibs:Depends}, ${misc:Depends}, -+ mono-2.10 >= 2.10.5 -+Description: interface library for System.Drawing of Mono -+ This package contains a GDI+ API compatible implementation -+ needed by the System.Drawing library of Mono. -+ ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/rules -@@ -0,0 +1,35 @@ -+#!/usr/bin/make -f -+# -*- makefile -*- -+# Sample debian/rules that uses debhelper. -+# This file was originally written by Joey Hess and Craig Small. -+# As a special exception, when this file is copied by dh-make into a -+# dh-make output file, you may use that output file without restriction. -+# This special exception was added by Craig Small in version 0.37 of dh-make. -+ -+# Uncomment this to turn on verbose mode. -+#export DH_VERBOSE=1 -+ -+override_dh_auto_configure: -+ dh_auto_configure -- --prefix=/opt/mono-2.10 -+ -+override_dh_auto_test: -+ -+#override_dh_auto_clean: -+# dh_auto_clean -+# find . -name \*.mdb -o -name \.stamp -o -name \*.dll -delete -+# find . -name \*.mdb -delete -+# rm -f debian/MonoGetAssemblyName.exe \ -+# debian/mono-api-diff.exe -+# rm -rf $(MONO_SHARED_DIR)/.wapi -+# -+# rm -f mcs/class/lib/default/mono-api-info.exe \ -+# mcs/class/lib/net_2_0/mono-api-info.exe \ -+# mcs/class/Managed.Windows.Forms/resources/*.resources \ -+# mcs/class/Mono.Data.Sqlite/resources/SR.resources \ -+# mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap.Utilclass/ResultCodeMessages.resources \ -+# mcs/class/System.Web/resources/TranslationResources.resources \ -+# mcs/class/System.Web.Mvc/System.Web.Mvc/Resources/MvcResources.resources \ -+# mcs/class/System.Web.Mvc2/System.Web.Mvc/Resources/MvcResources.resources -+ -+%: -+ dh $@ --with autoreconf ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/docs -@@ -0,0 +1,3 @@ -+NEWS -+README -+ChangeLog.old ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/copyright -@@ -0,0 +1,1538 @@ -+Format-Specification: http://dep.debian.net/deps/dep5/ -+Upstream-Name: Mono -+Upstream-Source: http://ftp.novell.com/pub/mono/sources/mono -+ -+Files: * -+Copyright: © 2001 Andreas Jonsson -+ © 2001 Andrew Sutton -+ © 2001 Bob Smith. http://www.thestuff.net -+ © 2001 Chris Hynes -+ © 2001 Christopher Podurgiel -+ © 2001 Daniel Weber -+ © 2001 David Dawkins -+ © 2001 Derek Holden (dholden@draper.com) -+ © 2001 Garrett Rooney (rooneg@electricjellyfish.net) -+ © 2001 John Barnette -+ © 2001 John R. Hicks (angryjohn69@nc.rr.com) -+ © 2001 Krister Hansson -+ © 2001 Mads Pultz -+ © 2001 Marcel Narings -+ © 2001 Martin Weindel -+ © 2001 Matthew S. Ford -+ © 2001 Michael Lambert, All Rights Reserved -+ © 2001 Moonlight Enterprises, All Rights Reserved -+ © 2001 Phillip Pearson (http://www.myelin.co.nz) -+ © 2001 Ricardo Fernández Pascual -+ © 2001 Scott Sanders -+ © 2001 Wictor Wilén (wictor@iBizkit.se) -+ © 2001-2002 Jason Diamond http://injektilo.org/ -+ © 2001-2002 Marcin Szczepanski -+ © 2001-2002 Mike Kestner -+ © 2001-2002 Nick Drochak II -+ © 2001-2002 Southern Storm Software, Pty Ltd. -+ © 2001-2002 Vladimir Vukicevic (vladimir@pobox.com) -+ © 2001-2002 Wild West Software -+ © 2001-2003 Ximian, Inc. http://www.ximian.com -+ © 2002 Alejandro Sánchez Acosta -+ © 2002 Ameya Sailesh Gargesh (ameya_13@yahoo.com) -+ © 2002 Brian Ritchie -+ © 2002 Chew Keong TAN -+ © 2002 Chris J Breisch -+ © 2002 Dan Lewis -+ © 2002 Daniel Stodden -+ © 2002 Duco Fijma -+ © 2002 Franklin Wise -+ © 2002 Free Software Foundation -+ © 2002 Gaurav Vaish -+ © 2002 Jaime Anguiano Olarra -+ © 2002 John Donagher -+ © 2002 Jon Guymon -+ © 2002 Kevin Winchester -+ © 2002 Kral Ferch -+ © 2002 Lawrence Pit -+ © 2002 Martin Adoue -+ © 2002 Martin Baulig -+ © 2002 Matt Hunter -+ © 2002 Miguel de Icaza -+ © 2002 Owen Brady (Ocean at owenbrady dot net) -+ © 2002 Piers Haken -+ © 2002 Rodrigo Moya -+ © 2002 Stuart Caborn -+ © 2002 Ulrich Kunitz -+ © 2002-2003 Dave Bettin -+ © 2002-2003 Eduardo Garcia Cebollero -+ © 2002-2003 Greg Reinacker, Reinacker & Associates, Inc. All rights reserved -+ © 2002-2003 Jackson Harper, All rights reserved -+ © 2002-2003 Ville Palo -+ © 2002-2004 Motus Technologies Inc. (http://www.motus.com) -+ © 2002-2004 Tim Coleman -+ © 2002-2005 Cesar Lopez Nataren -+ © 2002-2005 Lluis Sanchez Gual -+ © 2002-2005 Rafael Teixeira -+ © 2002-2008 Daniel Morgan -+ © 2002-2008 Mainsoft Corporation. -+ © 2002-2010 Novell, Inc (http://www.novell.com) -+ © 2003 Aleksey Sanin (aleksey@aleksey.com) -+ © 2003 Alexandre Pigolkine (pigolkine@gmx.de) -+ © 2003 Brad Fitzpatrick -+ © 2003 Dominik Fretz -+ © 2003 Duncan Mak, Ximian Inc. -+ © 2003 Eric Glass -+ © 2003 Erik LeBel -+ © 2003 Gilles Freart -+ © 2003 Ian MacLean -+ © 2003 Jean-Marc André -+ © 2003 Jochen Wezel (CompuMaster GmbH) -+ © 2003 Johannes Roith -+ © 2003 Joshua Tauberer -+ © 2003 Latitude Geographics Group, All rights reserved -+ © 2003 Lee Mallabone -+ © 2003 Martin Willemoes Hansen -+ © 2003 Oleg Tkachenko -+ © 2003 Patrick Kalkman -+ © 2003 Patrik Torstensson -+ © 2003 Pedro Martínez Juliá -+ © 2003 Peter Van Isacker -+ © 2003 Phillip Jerkins -+ © 2003 Sergey Chaban (serge@wildwestsoftware.com) -+ © 2003 Stefan Görling -+ © 2003 The Mentalis.org Team (http://www.mentalis.org/) -+ © 2003 Thong (Tum) Nguyen [tum@veridicus.com] -+ © 2003-2004 Andreas Nahr -+ © 2003-2004 Atsushi Enomoto -+ © 2003-2004 Ben Maurer -+ © 2003-2004 Carlos Guzman Alvarez -+ © 2003-2004 Todd Berman -+ © 2003-2007 Alp Toker -+ © 2003-2007 Juraj Skripsky -+ © 2003-2008 Jonathan Pryor -+ © 2003-2008 Niels Kokholm -+ © 2003-2008 Peter Sestoft -+ © 2004 Edd Dumbill -+ © 2004 Everaldo Canuto -+ © 2004 IT+ A/S (http://www.itplus.dk) -+ © 2004 Ivan Hamilton -+ © 2004 Luca Barbieri -+ © 2004 Matthijs ter Woord -+ © 2004 Punit Todi -+ © 2004-2005 Geoff Norton. -+ © 2004-2006 Jaroslaw Kowalski -+ © 2004-2006 John Luke -+ © 2004-2008 Gert Driesen -+ © 2004-2008 HotFeet GmbH (http://www.hotfeet.ch) -+ © 2005 akiramei (mei@work.email.ne.jp) -+ © 2005 Carlo Kok (ck@carlo-kok.com) -+ © 2005 David Waite (mass@akuma.org) -+ © 2005 Hubert FONGARNAND -+ © 2005 Iain McCoy -+ © 2005 Senganal T -+ © 2005 Sharif FarsiWeb, Inc. (http://www.farsiweb.info) -+ © 2005 Voelcker Informatik AG -+ © 2005-2007 Marek Sieradzki -+ © 2005-2008 Jb Evain (http://evain.net) -+ © 2005-2008 Jiri George Moudry -+ © 2005-2008 Kornél Pál -+ © 2006 Alexander Olk -+ © 2006 Bruno Haible -+ © 2006 Evaluant RC S.A -+ © 2006 Forcom (http://www.forcom.com.pl/) -+ © 2006 Marek Habersack -+ © 2006 Matt Hargett -+ © 2006 Patrick Earl -+ © 2006 Sridhar Kulkarni -+ © 2006-2007 Dmitry S. Kataev -+ © 2006-2009 Daniel Nauck -+ © 2006-2009 Jonathan Chambers -+ © 2007 Andreas Noever -+ © 2007 Dean Brettle -+ © 2007 Marcos Cobena (http://www.youcannoteatbits.org/) -+ © 2007-2008 Andreia Gaita -+ © 2007-2008 Ivan N. Zlatev -+ © 2007-2008 Pascal Craponne -+ © 2007-2008 Stefan Klinger -+ © 2008 Andy Hume -+ © 2008 db4objects, Inc. (http://www.db4o.com) -+ © 2008 Eric Butler -+ © 2008 George Giolfan -+ © 2008 James Fitzsimons -+ © 2008 Michael Barker -+ © 2008 Realtime Worlds Ltd -+ © 2008-2009 Jérémie "Garuma" Laval -+ © 2009 Aaron Bockover -+ © 2009 Craig Sutherland -+ © 2009 Eric Maupin (http://www.ermau.com) -+ © 2009 leppie (http://xacc.wordpress.com/) -+ © 2009 Olivier Dufour olivier(dot)duff(at)gmail(dot)com -+License: MIT -+ -+Files: debian/* -+Copyright: © 2002 Robert McQueen -+ © 2002-2003 Alp Toker -+ © 2004-2010 Mirco Bauer -+ © 2008-2010 Jo Shields -+License: GPL -+ -+Files: debian/detector/* -+Copyright: © Ilya Konstantinov -+ © 2005 Colin Watson -+License: GPL-2 -+ -+Files: mono/* -+Copyright: © 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald -+ © 2000 Intel Corporation. All rights reserved. -+ © 2001 Martin Weindel -+ © 2001 Radek Doulik -+ © 2001-2002 Ximian, Inc. -+ © 2002 Sergey Chaban -+ © 2002-2004 Neale Ferguson -+ © 2002-2009 Novell, Inc (http://www.novell.com) -+ © 2003 PT Cakram Datalingga Duaribu http://www.cdl2000.com -+ © 2003-2004 Bernie Solomon -+ © 2006 Broadcom -+ © 2006 Sergey Tikhonov (tsv@solvo.ru) -+ © 2007 Randolph Chung -+ © 2007-2008 Andreas Faerber -+ © 2008 Kornél Pál -+License: LGPL-2 -+ -+Files: libgc/* -+Copyright: © 1988-1989 Hans-J. Boehm, Alan J. Demers -+ © 1991-1996 by Xerox Corporation. All rights reserved. -+ © 1996-1999 by Silicon Graphics. All rights reserved. -+ © 1998 Fergus Henderson. All rights reserved. -+ © 1999-2004 by Hewlett-Packard Company. All rights reserved. -+ © 1999-2001 by Red Hat, Inc. All rights reserved. -+License: other -+ THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED -+ OR IMPLIED. ANY USE IS AT YOUR OWN RISK. -+ -+ Permission is hereby granted to use or copy this program -+ for any purpose, provided the above notices are retained on all copies. -+ Permission to modify the code and to distribute modified code is granted, -+ provided the above notices are retained, and a notice that the code was -+ modified is included with the above copyright notice. -+ -+Files: mono/benchmark/logic.cs, -+ mcs/tools/prj2make/*, -+ mcs/class/Compat.ICSharpCode.SharpZipLib/*, -+ mcs/class/ICSharpCode.SharpZipLib/* -+Copyright: © 1998-2001 Free Software Foundation, Inc. -+ © 2001 Southern Storm Software, Pty Ltd. -+ © 2001-2005 Mike Krueger -+ © 2004 Francisco T. Martinez -+ © 2004-2005 John Reilly -+License: GPL-2+ -+ -+Files: mcs/tools/pdb2mdb/*, -+ mcs/class/dlr/*, -+ mcs/class/MicrosoftAjaxLibrary/*, -+ mcs/class/System.Web.Mvc/*, -+ mcs/class/System.Web.Mvc2/*, -+ mono/docs/HtmlAgilityPack/* -+Copyright: © 2003 Ximian, Inc (http://www.ximian.com) -+ © 2007-2009 Microsoft Corporation -+ © 2009 Simon Mourier -+License: Ms-PL -+ -+Files: mcs/class/RabbitMQ.Client/* -+Copyright: © 2003 Ximian, Inc. http://www.ximian.com -+ © 2007-2009 Cohesive Financial Technologies -+ © 2007-2009 LShift Ltd., Cohesive Financial -+ © 2007-2009 Rabbit Technologies Ltd -+License: Apache-2.0 | MPL-1.1 -+ -+Files: mcs/tools/monodoc/Lucene.Net/* -+Copyright: © 2004 The Apache Software Foundation -+License: Apache-2.0 -+ -+Files: mcs/tools/csharp/repl.cs, -+ mcs/mcs/* -+Copyright: © 2001-2003 Ximian, Inc (http://www.ximian.com) -+ © 2003-2009 Novell, Inc -+ © 2008 John Resig (jquery.com) -+License: MIT | GPL-2 -+ -+Files: mcs/class/ByteFX.Data/*, -+ mcs/class/Npgsql/* -+Copyright: © 2001 Matthew S. Ford -+ © 2002-2004 ByteFX, Inc. -+ © 2002-2006 The Npgsql Development Team -+ © 2003 Pedro Martínez Juliá -+ © 2003 PostgreSQL Global Development Group -+ © 2003 PT Cakram Datalingga Duaribu (http://www.cdl2000.com) -+ © 2004 Emiliano Necciari -+ © 2004-2005 Novell, Inc (http://www.novell.com) -+ © 2004-2009 Rolf Bjarne Kvinge, RKvinge@novell.com -+License: LGPL-2.1+ -+ -+Files: mcs/tools/csharp/getline.cs -+Copyright: © 2008 Novell, Inc. -+License: MIT | Apache-2.0 -+ -+Files: mcs/tools/lc/* -+Copyright: © 2009 RemObjects Software -+ © 2008 Novell (http://www.novell.com) -+License: MIT -+ -+Files: mcs/class/Microsoft.JScript/Microsoft.JScript/Token*.cs, -+ mcs/class/Microsoft.JScript/Microsoft.JScript/Decompiler.cs, -+ mcs/class/Microsoft.JScript/Microsoft.JScript/Parser.cs -+Copyright: © 1997-1999 Netscape Communications Corporation. All Rights Reserved. -+ © 2004 Cesar Lopez Nataren -+License: NPL-1.1 | GPL -+ -+Files: mcs/class/System.Web.Extensions/System.Web.Script.Serialization/JSON/* -+Copyright: © 2007 James Newton-King -+License: MIT -+ -+Files: mcs/class/FirebirdSql.Data.Firebird/* -+Copyright: © 2002-2005 Carlos Guzman Alvarez -+ © 2003-2005 Abel Eduardo Pereira -+License: Initial Developer's PUBLIC LICENSE Version 1.0 -+ -+Files: mcs/nunit24/* -+Copyright: © 2000-2002 Philip A. Craig -+ © 2002-2004 James W. Newkirk -+ © 2002-2004 Michael C. Two -+ © 2002-2004 Alexei A. Vorontsov -+ © 2002-2008 Charlie Poole -+License: other -+ This software is provided 'as-is', without any express or implied warranty. -+ In no event will the authors be held liable for any damages arising from the -+ use of this software. -+ -+ Permission is granted to anyone to use this software for any purpose, including -+ commercial applications, and to alter it and redistribute it freely, subject to -+ the following restrictions: -+ -+ 1. The origin of this software must not be misrepresented; you must not claim -+ that you wrote the original software. If you use this software in a product, -+ an acknowledgment (see the following) in the product documentation is -+ required. -+ -+ Portions Copyright © 2002-2007 Charlie Poole or Copyright © 2002-2004 James -+ W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 -+ Philip A. Craig -+ -+ 2. Altered source versions must be plainly marked as such, and must not be -+ misrepresented as being the original software. -+ -+ 3. This notice may not be removed or altered from any source distribution. -+ -+Files: mono/utils/strtod.c, -+ mcs/nunit24/NUnitExtensions/core/RowTest/*, -+ mcs/nunit24/NUnitExtensions/framework/RowTestAttribute.cs, -+ mcs/nunit24/NUnitExtensions/framework/SpecialValue.cs, -+ mcs/nunit24/NUnitExtensions/framework/RowAttribute.cs, -+ mcs/nunit24/NUnitExtensions/framework/RowTest/* -+Copyright: © 1991-2001 by Lucent Technologies -+ © 2007 Andreas Schlapsi -+License: MIT -+ -+Files: ikvm-native/*, -+ mono/io-layer/wapi_glob.*, -+ mono/utils/freebsd-*, -+ mcs/jay/*, -+ mcs/class/RabbitMQ.Client/docs/* -+Copyright: © 1989-1993 The Regents of the University of California. All rights reserved. -+ © 1996-1998 John D. Polstra. -+ © 2004 Apple Computer, Inc. -+ © 2004 Jeroen Frijters -+ © 2004 The Mozilla Foundation -+ © 2009 AMQP Working Group -+License: BSD -+ -+Files: support/* -+Copyright: © 1995-2006 Mark Adler -+ © 1995-2006 Jean-loup Gailly. -+ © 1998-2005 Gilles Vollant -+ © 2004-2006 Jonathan Pryor -+ © 2005 Daniel Drake -+ © 2005-2009 Novell, Inc. -+License: zlib/libpng -+ -+Files: support/minizip/* -+Copyright: © 1990-2000 Info-ZIP. All rights reserved. -+ © 1998-2005 Gilles Vollant -+License: zlib/libpng -+ -+License: Apache-2.0 -+ On Debian systems the full text of the Apache Software License 2.0 can be -+ found in the `/usr/share/common-licenses/Apache-2.0' file. -+ -+License: LGPL-2 -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public -+ License as published by the Free Software Foundation; -+ version 2 of the License. -+ -+ This library 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 -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA -+ -+ On Debian systems the full text of the GNU Library General Public License can be -+ found in the `/usr/share/common-licenses/LGPL-2' file. -+ -+License: LGPL-2.1 -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; -+ version 2.1 of the License. -+ -+ This library 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ -+ On Debian systems the full text of the GNU Lesser General Public License can be -+ found in the `/usr/share/common-licenses/LGPL-2.1' file. -+ -+License: GPL -+ 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 3 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, see . -+ -+ On Debian systems the full text of the GNU General Public License can be found -+ in the `/usr/share/common-licenses/GPL' file. -+ -+License: GPL-2 -+ 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; version 2 of the License. -+ -+ 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., -+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ -+ On Debian systems the full text of the GNU General Public License can be found -+ in the `/usr/share/common-licenses/GPL-2' file. -+ -+License: MIT -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ "Software"), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be -+ included in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+License: zlib/libpng -+ This software is provided 'as-is', without any express or implied -+ warranty. In no event will the authors be held liable for any damages -+ arising from the use of this software. -+ -+ Permission is granted to anyone to use this software for any purpose, -+ including commercial applications, and to alter it and redistribute it -+ freely, subject to the following restrictions: -+ -+ 1. The origin of this software must not be misrepresented; you must not -+ claim that you wrote the original software. If you use this software -+ in a product, an acknowledgment in the product documentation would be -+ appreciated but is not required. -+ 2. Altered source versions must be plainly marked as such, and must not be -+ misrepresented as being the original software. -+ 3. This notice may not be removed or altered from any source distribution. -+ -+License: BSD -+ Redistribution and use in source and binary forms, with or without -+ modification, are permitted provided that the following conditions are -+ met: -+ -+ 1. Redistributions of source code must retain the above copyright notice, -+ this list of conditions and the following disclaimer. -+ 2. Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in the -+ documentation and/or other materials provided with the distribution. -+ 3. Neither the name of the nor the names of its contributors -+ may be used to endorse or promote products derived from this software -+ without specific prior written permission. -+ -+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR -+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -+ DAMAGE. -+ -+License: MPL-1.1 -+ 1. Definitions. -+ -+ 1.0.1. "Commercial Use" means distribution or otherwise making the -+ Covered Code available to a third party. -+ -+ 1.1. "Contributor" means each entity that creates or contributes to -+ the creation of Modifications. -+ -+ 1.2. "Contributor Version" means the combination of the Original -+ Code, prior Modifications used by a Contributor, and the Modifications -+ made by that particular Contributor. -+ -+ 1.3. "Covered Code" means the Original Code or Modifications or the -+ combination of the Original Code and Modifications, in each case -+ including portions thereof. -+ -+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally -+ accepted in the software development community for the electronic -+ transfer of data. -+ -+ 1.5. "Executable" means Covered Code in any form other than Source -+ Code. -+ -+ 1.6. "Initial Developer" means the individual or entity identified -+ as the Initial Developer in the Source Code notice required by Exhibit -+ A. -+ -+ 1.7. "Larger Work" means a work which combines Covered Code or -+ portions thereof with code not governed by the terms of this License. -+ -+ 1.8. "License" means this document. -+ -+ 1.8.1. "Licensable" means having the right to grant, to the maximum -+ extent possible, whether at the time of the initial grant or -+ subsequently acquired, any and all of the rights conveyed herein. -+ -+ 1.9. "Modifications" means any addition to or deletion from the -+ substance or structure of either the Original Code or any previous -+ Modifications. When Covered Code is released as a series of files, a -+ Modification is: -+ A. Any addition to or deletion from the contents of a file -+ containing Original Code or previous Modifications. -+ -+ B. Any new file that contains any part of the Original Code or -+ previous Modifications. -+ -+ 1.10. "Original Code" means Source Code of computer software code -+ which is described in the Source Code notice required by Exhibit A as -+ Original Code, and which, at the time of its release under this -+ License is not already Covered Code governed by this License. -+ -+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or -+ hereafter acquired, including without limitation, method, process, -+ and apparatus claims, in any patent Licensable by grantor. -+ -+ 1.11. "Source Code" means the preferred form of the Covered Code for -+ making modifications to it, including all modules it contains, plus -+ any associated interface definition files, scripts used to control -+ compilation and installation of an Executable, or source code -+ differential comparisons against either the Original Code or another -+ well known, available Covered Code of the Contributor's choice. The -+ Source Code can be in a compressed or archival form, provided the -+ appropriate decompression or de-archiving software is widely available -+ for no charge. -+ -+ 1.12. "You" (or "Your") means an individual or a legal entity -+ exercising rights under, and complying with all of the terms of, this -+ License or a future version of this License issued under Section 6.1. -+ For legal entities, "You" includes any entity which controls, is -+ controlled by, or is under common control with You. For purposes of -+ this definition, "control" means (a) the power, direct or indirect, -+ to cause the direction or management of such entity, whether by -+ contract or otherwise, or (b) ownership of more than fifty percent -+ (50%) of the outstanding shares or beneficial ownership of such -+ entity. -+ -+ 2. Source Code License. -+ -+ 2.1. The Initial Developer Grant. -+ The Initial Developer hereby grants You a world-wide, royalty-free, -+ non-exclusive license, subject to third party intellectual property -+ claims: -+ (a) under intellectual property rights (other than patent or -+ trademark) Licensable by Initial Developer to use, reproduce, -+ modify, display, perform, sublicense and distribute the Original -+ Code (or portions thereof) with or without Modifications, and/or -+ as part of a Larger Work; and -+ -+ (b) under Patents Claims infringed by the making, using or -+ selling of Original Code, to make, have made, use, practice, -+ sell, and offer for sale, and/or otherwise dispose of the -+ Original Code (or portions thereof). -+ (c) the licenses granted in this Section 2.1(a) and (b) are -+ effective on the date Initial Developer first distributes -+ Original Code under the terms of this License. -+ -+ (d) Notwithstanding Section 2.1(b) above, no patent license is -+ granted: 1) for code that You delete from the Original Code; 2) -+ separate from the Original Code; or 3) for infringements caused -+ by: i) the modification of the Original Code or ii) the -+ combination of the Original Code with other software or devices. -+ -+ 2.2. Contributor Grant. -+ Subject to third party intellectual property claims, each Contributor -+ hereby grants You a world-wide, royalty-free, non-exclusive license -+ -+ (a) under intellectual property rights (other than patent or -+ trademark) Licensable by Contributor, to use, reproduce, modify, -+ display, perform, sublicense and distribute the Modifications -+ created by such Contributor (or portions thereof) either on an -+ unmodified basis, with other Modifications, as Covered Code -+ and/or as part of a Larger Work; and -+ -+ (b) under Patent Claims infringed by the making, using, or -+ selling of Modifications made by that Contributor either alone -+ and/or in combination with its Contributor Version (or portions -+ of such combination), to make, use, sell, offer for sale, have -+ made, and/or otherwise dispose of: 1) Modifications made by that -+ Contributor (or portions thereof); and 2) the combination of -+ Modifications made by that Contributor with its Contributor -+ Version (or portions of such combination). -+ -+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are -+ effective on the date Contributor first makes Commercial Use of -+ the Covered Code. -+ -+ (d) Notwithstanding Section 2.2(b) above, no patent license is -+ granted: 1) for any code that Contributor has deleted from the -+ Contributor Version; 2) separate from the Contributor Version; -+ 3) for infringements caused by: i) third party modifications of -+ Contributor Version or ii) the combination of Modifications made -+ by that Contributor with other software (except as part of the -+ Contributor Version) or other devices; or 4) under Patent Claims -+ infringed by Covered Code in the absence of Modifications made by -+ that Contributor. -+ -+ 3. Distribution Obligations. -+ -+ 3.1. Application of License. -+ The Modifications which You create or to which You contribute are -+ governed by the terms of this License, including without limitation -+ Section 2.2. The Source Code version of Covered Code may be -+ distributed only under the terms of this License or a future version -+ of this License released under Section 6.1, and You must include a -+ copy of this License with every copy of the Source Code You -+ distribute. You may not offer or impose any terms on any Source Code -+ version that alters or restricts the applicable version of this -+ License or the recipients' rights hereunder. However, You may include -+ an additional document offering the additional rights described in -+ Section 3.5. -+ -+ 3.2. Availability of Source Code. -+ Any Modification which You create or to which You contribute must be -+ made available in Source Code form under the terms of this License -+ either on the same media as an Executable version or via an accepted -+ Electronic Distribution Mechanism to anyone to whom you made an -+ Executable version available; and if made available via Electronic -+ Distribution Mechanism, must remain available for at least twelve (12) -+ months after the date it initially became available, or at least six -+ (6) months after a subsequent version of that particular Modification -+ has been made available to such recipients. You are responsible for -+ ensuring that the Source Code version remains available even if the -+ Electronic Distribution Mechanism is maintained by a third party. -+ -+ 3.3. Description of Modifications. -+ You must cause all Covered Code to which You contribute to contain a -+ file documenting the changes You made to create that Covered Code and -+ the date of any change. You must include a prominent statement that -+ the Modification is derived, directly or indirectly, from Original -+ Code provided by the Initial Developer and including the name of the -+ Initial Developer in (a) the Source Code, and (b) in any notice in an -+ Executable version or related documentation in which You describe the -+ origin or ownership of the Covered Code. -+ -+ 3.4. Intellectual Property Matters -+ (a) Third Party Claims. -+ If Contributor has knowledge that a license under a third party's -+ intellectual property rights is required to exercise the rights -+ granted by such Contributor under Sections 2.1 or 2.2, -+ Contributor must include a text file with the Source Code -+ distribution titled "LEGAL" which describes the claim and the -+ party making the claim in sufficient detail that a recipient will -+ know whom to contact. If Contributor obtains such knowledge after -+ the Modification is made available as described in Section 3.2, -+ Contributor shall promptly modify the LEGAL file in all copies -+ Contributor makes available thereafter and shall take other steps -+ (such as notifying appropriate mailing lists or newsgroups) -+ reasonably calculated to inform those who received the Covered -+ Code that new knowledge has been obtained. -+ -+ (b) Contributor APIs. -+ If Contributor's Modifications include an application programming -+ interface and Contributor has knowledge of patent licenses which -+ are reasonably necessary to implement that API, Contributor must -+ also include this information in the LEGAL file. -+ -+ (c) Representations. -+ Contributor represents that, except as disclosed pursuant to -+ Section 3.4(a) above, Contributor believes that Contributor's -+ Modifications are Contributor's original creation(s) and/or -+ Contributor has sufficient rights to grant the rights conveyed by -+ this License. -+ -+ 3.5. Required Notices. -+ You must duplicate the notice in Exhibit A in each file of the Source -+ Code. If it is not possible to put such notice in a particular Source -+ Code file due to its structure, then You must include such notice in a -+ location (such as a relevant directory) where a user would be likely -+ to look for such a notice. If You created one or more Modification(s) -+ You may add your name as a Contributor to the notice described in -+ Exhibit A. You must also duplicate this License in any documentation -+ for the Source Code where You describe recipients' rights or ownership -+ rights relating to Covered Code. You may choose to offer, and to -+ charge a fee for, warranty, support, indemnity or liability -+ obligations to one or more recipients of Covered Code. However, You -+ may do so only on Your own behalf, and not on behalf of the Initial -+ Developer or any Contributor. You must make it absolutely clear than -+ any such warranty, support, indemnity or liability obligation is -+ offered by You alone, and You hereby agree to indemnify the Initial -+ Developer and every Contributor for any liability incurred by the -+ Initial Developer or such Contributor as a result of warranty, -+ support, indemnity or liability terms You offer. -+ -+ 3.6. Distribution of Executable Versions. -+ You may distribute Covered Code in Executable form only if the -+ requirements of Section 3.1-3.5 have been met for that Covered Code, -+ and if You include a notice stating that the Source Code version of -+ the Covered Code is available under the terms of this License, -+ including a description of how and where You have fulfilled the -+ obligations of Section 3.2. The notice must be conspicuously included -+ in any notice in an Executable version, related documentation or -+ collateral in which You describe recipients' rights relating to the -+ Covered Code. You may distribute the Executable version of Covered -+ Code or ownership rights under a license of Your choice, which may -+ contain terms different from this License, provided that You are in -+ compliance with the terms of this License and that the license for the -+ Executable version does not attempt to limit or alter the recipient's -+ rights in the Source Code version from the rights set forth in this -+ License. If You distribute the Executable version under a different -+ license You must make it absolutely clear that any terms which differ -+ from this License are offered by You alone, not by the Initial -+ Developer or any Contributor. You hereby agree to indemnify the -+ Initial Developer and every Contributor for any liability incurred by -+ the Initial Developer or such Contributor as a result of any such -+ terms You offer. -+ -+ 3.7. Larger Works. -+ You may create a Larger Work by combining Covered Code with other code -+ not governed by the terms of this License and distribute the Larger -+ Work as a single product. In such a case, You must make sure the -+ requirements of this License are fulfilled for the Covered Code. -+ 4. Inability to Comply Due to Statute or Regulation. -+ -+ If it is impossible for You to comply with any of the terms of this -+ License with respect to some or all of the Covered Code due to -+ statute, judicial order, or regulation then You must: (a) comply with -+ the terms of this License to the maximum extent possible; and (b) -+ describe the limitations and the code they affect. Such description -+ must be included in the LEGAL file described in Section 3.4 and must -+ be included with all distributions of the Source Code. Except to the -+ extent prohibited by statute or regulation, such description must be -+ sufficiently detailed for a recipient of ordinary skill to be able to -+ understand it. -+ -+ 5. Application of this License. -+ -+ This License applies to code to which the Initial Developer has -+ attached the notice in Exhibit A and to related Covered Code. -+ -+ 6. Versions of the License. -+ -+ 6.1. New Versions. -+ Netscape Communications Corporation ("Netscape") may publish revised -+ and/or new versions of the License from time to time. Each version -+ will be given a distinguishing version number. -+ -+ 6.2. Effect of New Versions. -+ Once Covered Code has been published under a particular version of the -+ License, You may always continue to use it under the terms of that -+ version. You may also choose to use such Covered Code under the terms -+ of any subsequent version of the License published by Netscape. No one -+ other than Netscape has the right to modify the terms applicable to -+ Covered Code created under this License. -+ -+ 6.3. Derivative Works. -+ If You create or use a modified version of this License (which you may -+ only do in order to apply it to code which is not already Covered Code -+ governed by this License), You must (a) rename Your license so that -+ the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", -+ "MPL", "NPL" or any confusingly similar phrase do not appear in your -+ license (except to note that your license differs from this License) -+ and (b) otherwise make it clear that Your version of the license -+ contains terms which differ from the Mozilla Public License and -+ Netscape Public License. (Filling in the name of the Initial -+ Developer, Original Code or Contributor in the notice described in -+ Exhibit A shall not of themselves be deemed to be modifications of -+ this License.) -+ -+ 7. DISCLAIMER OF WARRANTY. -+ -+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, -+ WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF -+ DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. -+ THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE -+ IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, -+ YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE -+ COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER -+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF -+ ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. -+ -+ 8. TERMINATION. -+ -+ 8.1. This License and the rights granted hereunder will terminate -+ automatically if You fail to comply with terms herein and fail to cure -+ such breach within 30 days of becoming aware of the breach. All -+ sublicenses to the Covered Code which are properly granted shall -+ survive any termination of this License. Provisions which, by their -+ nature, must remain in effect beyond the termination of this License -+ shall survive. -+ -+ 8.2. If You initiate litigation by asserting a patent infringement -+ claim (excluding declatory judgment actions) against Initial Developer -+ or a Contributor (the Initial Developer or Contributor against whom -+ You file such action is referred to as "Participant") alleging that: -+ -+ (a) such Participant's Contributor Version directly or indirectly -+ infringes any patent, then any and all rights granted by such -+ Participant to You under Sections 2.1 and/or 2.2 of this License -+ shall, upon 60 days notice from Participant terminate prospectively, -+ unless if within 60 days after receipt of notice You either: (i) -+ agree in writing to pay Participant a mutually agreeable reasonable -+ royalty for Your past and future use of Modifications made by such -+ Participant, or (ii) withdraw Your litigation claim with respect to -+ the Contributor Version against such Participant. If within 60 days -+ of notice, a reasonable royalty and payment arrangement are not -+ mutually agreed upon in writing by the parties or the litigation claim -+ is not withdrawn, the rights granted by Participant to You under -+ Sections 2.1 and/or 2.2 automatically terminate at the expiration of -+ the 60 day notice period specified above. -+ -+ (b) any software, hardware, or device, other than such Participant's -+ Contributor Version, directly or indirectly infringes any patent, then -+ any rights granted to You by such Participant under Sections 2.1(b) -+ and 2.2(b) are revoked effective as of the date You first made, used, -+ sold, distributed, or had made, Modifications made by that -+ Participant. -+ -+ 8.3. If You assert a patent infringement claim against Participant -+ alleging that such Participant's Contributor Version directly or -+ indirectly infringes any patent where such claim is resolved (such as -+ by license or settlement) prior to the initiation of patent -+ infringement litigation, then the reasonable value of the licenses -+ granted by such Participant under Sections 2.1 or 2.2 shall be taken -+ into account in determining the amount or value of any payment or -+ license. -+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, -+ all end user license agreements (excluding distributors and resellers) -+ which have been validly granted by You or any distributor hereunder -+ prior to termination shall survive termination. -+ -+ 9. LIMITATION OF LIABILITY. -+ -+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT -+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL -+ DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, -+ OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR -+ ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY -+ CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, -+ WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER -+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN -+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF -+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY -+ RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW -+ PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE -+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO -+ THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. -+ -+ 10. U.S. GOVERNMENT END USERS. -+ -+ The Covered Code is a "commercial item," as that term is defined in -+ 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer -+ software" and "commercial computer software documentation," as such -+ terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 -+ C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), -+ all U.S. Government End Users acquire Covered Code with only those -+ rights set forth herein. -+ -+ 11. MISCELLANEOUS. -+ -+ This License represents the complete agreement concerning subject -+ matter hereof. If any provision of this License is held to be -+ unenforceable, such provision shall be reformed only to the extent -+ necessary to make it enforceable. This License shall be governed by -+ California law provisions (except to the extent applicable law, if -+ any, provides otherwise), excluding its conflict-of-law provisions. -+ With respect to disputes in which at least one party is a citizen of, -+ or an entity chartered or registered to do business in the United -+ States of America, any litigation relating to this License shall be -+ subject to the jurisdiction of the Federal Courts of the Northern -+ District of California, with venue lying in Santa Clara County, -+ California, with the losing party responsible for costs, including -+ without limitation, court costs and reasonable attorneys' fees and -+ expenses. The application of the United Nations Convention on -+ Contracts for the International Sale of Goods is expressly excluded. -+ Any law or regulation which provides that the language of a contract -+ shall be construed against the drafter shall not apply to this -+ License. -+ 12. RESPONSIBILITY FOR CLAIMS. -+ -+ As between Initial Developer and the Contributors, each party is -+ responsible for claims and damages arising, directly or indirectly, -+ out of its utilization of rights under this License and You agree to -+ work with Initial Developer and Contributors to distribute such -+ responsibility on an equitable basis. Nothing herein is intended or -+ shall be deemed to constitute any admission of liability. -+ -+ 13. MULTIPLE-LICENSED CODE. -+ -+ Initial Developer may designate portions of the Covered Code as -+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial -+ Developer permits you to utilize portions of the Covered Code under -+ Your choice of the NPL or the alternative licenses, if any, specified -+ by the Initial Developer in the file described in Exhibit A. -+ -+ EXHIBIT A -Mozilla Public License. -+ -+ ``The contents of this file are subject to the Mozilla Public License -+ Version 1.1 (the "License"); you may not use this file except in -+ compliance with the License. You may obtain a copy of the License at -+ http://www.mozilla.org/MPL/ -+ -+ Software distributed under the License is distributed on an "AS IS" -+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -+ License for the specific language governing rights and limitations -+ under the License. -+ -+ The Original Code is ______________________________________. -+ -+ The Initial Developer of the Original Code is ________________________. -+ Portions created by ______________________ are Copyright (C) ______ -+ _______________________. All Rights Reserved. -+ -+ Contributor(s): ______________________________________. -+ -+ Alternatively, the contents of this file may be used under the terms -+ of the _____ license (the "[___] License"), in which case the -+ provisions of [______] License are applicable instead of those -+ above. If you wish to allow use of your version of this file only -+ under the terms of the [____] License and not to allow others to use -+ your version of this file under the MPL, indicate your decision by -+ deleting the provisions above and replace them with the notice and -+ other provisions required by the [___] License. If you do not delete -+ the provisions above, a recipient may use your version of this file -+ under either the MPL or the [___] License." -+ -+ [NOTE: The text of this Exhibit A may differ slightly from the text of -+ the notices in the Source Code files of the Original Code. You should -+ use the text of this Exhibit A rather than the text found in the -+ Original Code Source Code for Your Modifications.] -+ -+License: Ms-PL -+ This license governs use of the accompanying software. If you use the -+ software, you accept this license. If you do not accept the license, do not -+ use the software. -+ -+ 1. Definitions -+ The terms "reproduce," "reproduction," "derivative works," and "distribution" -+ have the same meaning here as under U.S. copyright law. -+ A "contribution" is the original software, or any additions or changes to -+ the software. -+ A "contributor" is any person that distributes its contribution under this -+ license. -+ "Licensed patents" are a contributor's patent claims that read directly on its -+ contribution. -+ -+ 2. Grant of Rights -+ (A) Copyright Grant- Subject to the terms of this license, including the -+ license conditions and limitations in section 3, each contributor grants you -+ a non-exclusive, worldwide, royalty-free copyright license to reproduce its -+ contribution, prepare derivative works of its contribution, and distribute -+ its contribution or any derivative works that you create. -+ (B) Patent Grant- Subject to the terms of this license, including the license -+ conditions and limitations in section 3, each contributor grants you a -+ non-exclusive, worldwide, royalty-free license under its licensed patents to -+ make, have made, use, sell, offer for sale, import, and/or otherwise dispose -+ of its contribution in the software or derivative works of the -+ contribution in the software. -+ -+ 3. Conditions and Limitations -+ (A) No Trademark License- This license does not grant you rights to use any -+ contributors' name, logo, or trademarks. -+ (B) If you bring a patent claim against any contributor over patents that you -+ claim are infringed by the software, your patent license from such -+ contributor to the software ends automatically. -+ (C) If you distribute any portion of the software, you must retain all -+ copyright, patent, trademark, and attribution notices that are present in the -+ software. -+ (D) If you distribute any portion of the software in source code form, you may -+ do so only under this license by including a complete copy of this license -+ with your distribution. If you distribute any portion of the software in -+ compiled or object code form, you may only do so under a license that complies -+ with this license. -+ (E) The software is licensed "as-is." You bear the risk of using it. The -+ contributors give no express warranties, guarantees or conditions. You may -+ have additional consumer rights under your local laws which this license -+ cannot change. To the extent permitted under your local laws, the contributors -+ exclude the implied warranties of merchantability, fitness for a particular -+ purpose and non-infringement. -+ -+License: NPL-1.1 -+ AMENDMENTS -+ The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public -+ License Version 1.1 with the following Amendments, including Exhibit A-Netscape -+ Public License. Files identified with "Exhibit A-Netscape Public License" are -+ governed by the Netscape Public License Version 1.1. -+ -+ Additional Terms applicable to the Netscape Public License. -+ -+ I. Effect. -+ These additional terms described in this Netscape Public License -- Amendments -+ shall apply to the Mozilla Communicator client code and to all Covered Code -+ under this License. -+ II. ''Netscape's Branded Code'' means Covered Code that Netscape distributes -+ and/or permits others to distribute under one or more trademark(s) which are -+ controlled by Netscape but which are not licensed for use under this License. -+ -+ III. Netscape and logo. -+ This License does not grant any rights to use the trademarks "Netscape'', the -+ "Netscape N and horizon'' logo or the "Netscape lighthouse" logo, "Netcenter", -+ "Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are -+ included in the Original Code or Modifications. -+ -+ IV. Inability to Comply Due to Contractual Obligation. -+ Prior to licensing the Original Code under this License, Netscape has licensed -+ third party code for use in Netscape's Branded Code. To the extent that -+ Netscape is limited contractually from making such third party code available -+ under this License, Netscape may choose to reintegrate such code into Covered -+ Code without being required to distribute such code in Source Code form, even -+ if such code would otherwise be considered ''Modifications'' under this -+ License. -+ -+ V. Use of Modifications and Covered Code by Initial Developer. -+ V.1. In General. -+ The obligations of Section 3 apply to Netscape, except to the extent specified -+ in this Amendment, Section V.2 and V.3. -+ -+ V.2. Other Products. -+ Netscape may include Covered Code in products other than the Netscape's -+ Branded Code which are released by Netscape during the two (2) years -+ following the release date of the Original Code, without such additional -+ products becoming subject to the terms of this License, and may license such -+ additional products on different terms from those contained in this License. -+ -+ V.3. Alternative Licensing. -+ Netscape may license the Source Code of Netscape's Branded Code, including -+ Modifications incorporated therein, without such Netscape Branded Code -+ becoming subject to the terms of this License, and may license such Netscape -+ Branded Code on different terms from those contained in this License. -+ -+ VI. Litigation. -+ Notwithstanding the limitations of Section 11 above, the provisions regarding -+ litigation in Section 11(a), (b) and (c) of the License shall apply to all -+ disputes relating to this License. -+ -+ EXHIBIT A-Netscape Public License. -+ -+ ''The contents of this file are subject to the Netscape Public License Version -+ 1.1 (the "License"); you may not use this file except in compliance with the -+ License. You may obtain a copy of the License at http://www.mozilla.org/NPL/ -+ -+ Software distributed under the License is distributed on an "AS IS" basis, -+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -+ the specific language governing rights and limitations under the License. -+ -+ The Original Code is Mozilla Communicator client code, released March 31, 1998. -+ -+ The Initial Developer of the Original Code is Netscape Communications -+ Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape -+ Communications Corporation. All Rights Reserved. -+ -+ Contributor(s): ______________________________________. -+ -+ Alternatively, the contents of this file may be used under the terms of the -+ _____ license (the �[___] License�), in which case the provisions of -+ [______] License are applicable instead of those above. If you wish to allow -+ use of your version of this file only under the terms of the [____] License and -+ not to allow others to use your version of this file under the NPL, indicate -+ your decision by deleting the provisions above and replace them with the -+ notice and other provisions required by the [___] License. If you do not -+ delete the provisions above, a recipient may use your version of this file -+ under either the NPL or the [___] License." -+ -+ [NOTE: The text of this Exhibit A may differ slightly from the text of the -+ notices in the Source Code files of the Original Code. You should use the text -+ of this Exhibit A rather than the text found in the Original Code Source Code -+ for Your Modifications.] -+ -+License: Initial Developer's PUBLIC LICENSE Version 1.0 -+ 1. Definitions -+ 1.0 "Commercial Use" means distribution or otherwise making the Covered Code -+ available to a third party. -+ -+ 1.1 "Contributor" means each entity that creates or contributes to the creation -+ of Modifications. -+ -+ 1.2 "Contributor Version" means the combination of the Original Code, prior -+ Modifications used by a Contributor, and the Modifications made by that -+ particular Contributor. -+ -+ 1.3. "Covered Code" means the Original Code or Modifications or the combination -+ of the Original Code and Modifications, in each case including portions -+ thereof. -+ -+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted -+ in the software development community for the electronic transfer of data. -+ -+ 1.5. "Executable" means Covered Code in any form other than Source Code. -+ -+ 1.6. "Initial Developer" means the individual or entity identified as the -+ Initial Developer in the Source Code notice required by Exhibit A. -+ -+ 1.7. "Larger Work" means a work which combines Covered Code or portions thereof -+ with code not governed by the terms of this License. -+ -+ 1.8. "License" means this document. -+ -+ 1.8.1. "Licensable" means having the right to grant, to the maximum extent -+ possible, whether at the time of the initial grant or subsequently acquired, -+ any and all of the rights conveyed herein. -+ -+ 1.9. "Modifications" means any addition to or deletion from the substance or -+ structure of either the Original Code or any previous Modifications. When -+ Covered Code is released as a series of files, a Modification is: -+ -+ Any addition to or deletion from the contents of a file containing Original -+ Code or previous Modifications. -+ -+ Any new file that contains any part of the Original Code or previous -+ Modifications. -+ -+ 1.10. "Original Code" means Source Code of computer software code which is -+ described in the Source Code notice required by Exhibit A as Original Code, and -+ which, at the time of its release under this License is not already Covered -+ Code governed by this License. -+ -+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter -+ acquired, including without limitation, method, process, and apparatus claims, -+ in any patent Licensable by grantor. -+ -+ 1.11. "Source Code" means the preferred form of the Covered Code for making -+ modifications to it, including all modules it contains, plus any associated -+ interface definition files, scripts used to control compilation and -+ installation of an Executable, or source code differential comparisons against -+ either the Original Code or another well known, available Covered Code of the -+ Contributor's choice. The Source Code can be in a compressed or archival form, -+ provided the appropriate decompression or de-archiving software is widely -+ available for no charge. -+ -+ 1.12. "You" (or "Your") means an individual or a legal entity exercising rights -+ under, and complying with all of the terms of, this License or a future version -+ of this License issued under Section 6.1. For legal entities, "You" includes -+ any entity w hich controls, is controlled by, or is under common control with -+ You. For purposes of this definition, "control" means (a) the power, direct or -+ indirect, to cause the direction or management of such entity, whether by -+ contract or otherwise, or (b) ownership of more than fifty percent (50%) of the -+ outstanding shares or beneficial ownership of such entity. -+ -+ 2. Source Code License. -+ 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a -+ world-wide, royalty-free, non-exclusive license, subject to third party -+ intellectual property claims: -+ -+ (a) under intellectual property rights (other than patent or trademark) -+ Licensable by Initial Developer to use, reproduce, modify, display, perform, -+ sublicense and distribute the Original Code (or portions thereof) with or -+ without Modifications, and/or as part of a Larger Work; and -+ -+ (b) under Patents Claims infringed by the making, using or selling of Original -+ Code, to make, have made, use, practice, sell, and offer for sale, and/or -+ otherwise dispose of the Original Code (or portions thereof). -+ -+ (c) the licenses granted in this Section 2.1(a) and (b) are effective on the -+ date Initial Developer first distributes Original Code under the terms of this -+ License. -+ -+ d) Notwithstanding Section 2.1(b) above, no patent license is granted: -+ -+ 1) for code that You delete from the Original Code; -+ -+ 2) separate from the Original Code; or -+ -+ 3) for infringements caused by: -+ -+ i) the modification of the Original Code or -+ -+ ii) the combination of the Original Code with other software or devices. -+ -+ 2.2. Contributor Grant. Subject to third party intellectual property claims, -+ each Contributor hereby grants You a world-wide, royalty-free, non-exclusive -+ license -+ -+ (a) under intellectual property rights (other than patent or trademark) -+ Licensable by Contributor, to use, reproduce, modify, display, perform, -+ sublicense and distribute the Modifications created by such Contributor (or -+ portions thereof) either on an unmodified basis, with other Modifications, as -+ Covered Code and/or as part of a Larger Work; and -+ -+ (b) under Patent Claims infringed by the making, using, or selling of -+ Modifications made by that Contributor either alone and/or in combination with -+ its Contributor Version (or portions of such combination), to make, use, sell, -+ offer for sale, have made, and/or otherwise dispose of: 1) Modifications made -+ by that Contributor (or portions thereof); and 2) the combination of -+ Modifications made by that Contributor with its Contributor Version (or -+ portions of such combination). -+ -+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the -+ date Contributor first makes Commercial Use of the Covered Code. -+ -+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted: -+ -+ 1) for any code that Contributor has deleted from the Contributor Version; -+ -+ 2) separate from the Contributor Version; -+ -+ 3) for infringements caused by: -+ -+ i) third party modifications of Contributor Version or -+ -+ ii) the combination of Modifications made by that Contributor with other -+ software (except as part of the Contributor Version) or other devices; or -+ -+ 4) under Patent Claims infringed by Covered Code in the absence of -+ Modifications made by that Contributor. -+ -+ 3. Distribution Obligations. -+ 3.1. Application of License. The Modifications which You create or to which You -+ contribute are governed by the terms of this License, including without -+ limitation Section 2.2. The Source Code version of Covered Code may be -+ distributed only under the terms of this License or a future version of this -+ License released under Section 6.1, and You must include a copy of this License -+ with every copy of the Source Code You distribute. You may not offer or impose -+ any terms on any Source Code version that alters or restricts the applicable -+ version of this License or the recipients' rights hereunder. However, You may -+ include an additional document offering the additional rights described in -+ Section 3.5. -+ -+ 3.2. Availability of Source Code. Any Modification which You create or to which -+ You contribute must be made available in Source Code form under the terms of -+ this License either on the same media as an Executable version or via an -+ accepted Electronic Distribution Mechanism to anyone to whom you made an -+ Executable version available; and if made available via Electronic Distribution -+ Mechanism, must remain available for at least twelve (12) months after the date -+ it initially became available, or at least six (6) months after a subsequent -+ version of that particular Modification has been made available to such -+ recipients. You are responsible for ensuring that the Source Code version -+ remains available even if the Electronic Distribution Mechanism is maintained -+ by a third party. -+ -+ 3.3. Description of Modifications. You must cause all Covered Code to which You -+ contribute to contain a file documenting the changes You made to create that -+ Covered Code and the date of any change. You must include a prominent statement -+ that the Modification is derived, directly or indirectly, from Original Code -+ provided by the Initial Developer and including the name of the Initial -+ Developer in -+ -+ (a) the Source Code, and -+ -+ (b) in any notice in an Executable version or related documentation in which -+ You describe the origin or ownership of the Covered Code. -+ -+ 3.4. Intellectual Property Matters -+ -+ a) Third Party Claims. If Contributor has knowledge that a license under a -+ third party's intellectual property rights is required to exercise the rights -+ granted by such Contributor under Sections 2.1 or 2.2, Contributor must -+ include a text file with the Source Code distribution titled "LEGAL" which -+ describes the claim and the party making the claim in sufficient detail that a -+ recipient will know whom to contact. If Contributor obtains such knowledge -+ after the Modification is made available as described in Section 3.2, -+ Contributor shall promptly modify the LEGAL file in all copies Contributor -+ makes available thereafter and shall take other steps (such as notifying -+ appropriate mailing lists or newsgroups) reasonably calculated to inform those -+ who received the Covered Code that new knowledge has been obtained. -+ -+ (b) Contributor APIs. If Contributor's Modifications include an application -+ programming interface and Contributor has knowledge of patent licenses which -+ are reasonably necessary to implement that API, Contributor must also include -+ this information in the LEGAL file. -+ -+ (c) Representations. Contributor represents that, except as disclosed pursuant -+ to Section 3.4(a) above, Contributor believes that Contributor's Modifications -+ are Contributor's original creation(s) and/or Contributor has sufficient -+ rights to grant the rights conveyed by this License. -+ -+ 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file -+ of the Source Code. If it is not possible to put such notice in a particular -+ Source Code file due to its structure, then You must include such notice in a -+ location (such as a relevant directory) where a user would be likely to look -+ for such a notice. If You created one or more Modification(s) You may add your -+ name as a Contributor to the notice described in Exhibit A. You must also -+ duplicate this License in any documentation for the Source Code where You -+ describe recipients' rights or ownership rights relating to Covered Code. You -+ may choose to offer, and to charge a fee for, warranty, support, indemnity or -+ liability obligations to one or more recipients of Covered Code. However, You -+ may do so only on Your own behalf, and not on behalf of the Initial Developer -+ or any Contributor. You must make it absolutely clear than any such warranty, -+ support, indemnity or liability obligation is offered by You alone, and You -+ hereby agree to indemnify the Initial Developer and every Contributor for any -+ liability incurred by the Initial Developer or such Contributor as a result of -+ warranty, support, indemnity or liability terms You offer. -+ -+ 3.6. Distribution of Executable Versions. You may distribute Covered Code in -+ Executable form only if the requirements of Section 3.1-3.5 have been met for -+ that Covered Code, and if You include a notice stating that the Source Code -+ version of the Covered Code is available under the terms of this License, -+ including a description of how and where You have fulfilled the obligations of -+ Section 3.2. The notice must be conspicuously included in any notice in an -+ Executable version, related documentation or collateral in which You describe -+ recipients' rights relating to the Covered Code. You may distribute the -+ Executable version of Covered Code or ownership rights under a license of Your -+ choice, which may contain terms different from this License, provided that You -+ are in compliance with the terms of this License and hat the license for the -+ Executable version does not attempt to limit or alter the recipient's rights in -+ the Source Code version from the rights set forth in this License. If You -+ distribute the Executable version under a different license You must make it -+ absolutely clear that any terms which differ from this License are offered by -+ You alone, not by the Initial Developer or any Contributor. You hereby agree to -+ indemnify the Initial Developer and every Contributor for any liability -+ incurred by the Initial Developer or such Contributor as a result of any such -+ terms You offer. -+ -+ 3.7. Larger Works. You may create a Larger Work by combining Covered Code with -+ other code not governed by the terms of this License and distribute the Larger -+ Work as a single product. In such a case, You must make sure the requirements -+ of this License are fulfilled for the Covered Code. -+ -+ 4. Inability to Comply Due to Statute or Regulation. -+ If it is impossible for You to comply with any of the terms of this License -+ with respect to some or all of the Covered Code due to statute, judicial order, -+ or regulation then You must: -+ -+ (a) comply with the terms of this License to the maximum extent possible; and -+ -+ (b) describe the limitations and the code they affect. Such description must -+ be included in the LEGAL file described in Section 3.4 and must be included -+ with all distributions of the Source Code. Except to the extent prohibited by -+ statute or regulation, such description must be sufficiently detailed for a -+ recipient of ordinary skill to be able to understand it. -+ -+ 5. Application of this License. -+ This License applies to code to which the Initial Developer has attached the -+ notice in Exhibit A and to related Covered Code. -+ -+ 6. Versions of the License. -+ 6.1. New Versions. The Initial Developer of this code may publish revised -+ and/or new versions of the License from time to time. Each version will be -+ given a distinguishing version number. -+ -+ 6.2. Effect of New Versions. Once Covered Code has been published under a -+ particular version of the License, You may always continue to use it under the -+ terms of that version. You may also choose to use such Covered Code under the -+ terms of any subsequent version of the License published by the Initial -+ Developer. No one other than the Initial Developer has the right to modify the -+ terms applicable to Covered Code created under this License. -+ -+ 6.3. Derivative Works. If You create or use a modified version of this License -+ (which you may only do in order to apply it to code which is not already -+ Covered Code governed by this License), You must -+ -+ (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", -+ "Netscape", "MPL", "NPL", or any confusingly similar phrases do not appear in -+ your license (except to note that your license differs from this License) and -+ -+ (b) otherwise make it clear that Your version of the license contains terms -+ which differ from the Mozilla Public License and Netscape Public License. -+ (Filling in the name of the Initial Developer, Original Code or Contributor in -+ the notice described in Exhibit A shall not of themselves be deemed to be -+ modifications of this License.) -+ -+ 6.4 Origin of the Initial Developer's Public License. The Initial Developer's -+ Public License is based on the Mozilla Public License V 1.1 with the following -+ changes: -+ -+ 1) The license is published by the Initial Developer of this code. Only the -+ Initial Developer can modify the terms applicable to Covered Code. -+ -+ 2) The license can be modified and used for code which is not already governed -+ by this license. Modified versions of the license must be renamed to avoid -+ confusion with the Initial Developer's Public License and must include a -+ description of changes from the Initial Developer's Public License. -+ -+ 3) The name of the license in Exhibit A is the "Initial Developer's Public -+ License". -+ -+ 4) The reference to an alternative license in Exhibit A has been removed . -+ -+ 5) Amendments I, II, III, V, and VI have been deleted. -+ -+ 6) Exhibit A, Netscape Public License has been deleted -+ -+ 7. DISCLAIMER OF WARRANTY. -+ COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT -+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -+ LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, -+ FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE -+ QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED -+ CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY -+ OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR -+ CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS -+ LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS -+ DISCLAIMER. -+ -+ 8. TERMINATION. -+ 8.1. This License and the rights granted hereunder will terminate automatically -+ if You fail to comply with terms herein and fail to cure such breach within 30 -+ days of becoming aware of the breach. All sublicenses to the Covered Code which -+ are properly granted shall survive any termination of this License. Provisions -+ which, by their nature, must remain in effect beyond the termination of this -+ License shall survive. -+ -+ 8.2. If You initiate litigation by asserting a patent infringement claim -+ (excluding declatory judgment actions) against Initial Developer or a -+ Contributor (the Initial Developer or Contributor against whom You file such -+ action is referred to as "Participant") alleging that: -+ -+ (a) such Participant's Contributor Version directly or indirectly infringes -+ any patent, then any and all rights granted by such Participant to You under -+ Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from -+ Participant terminate prospectively, unless if within 60 days after receipt of -+ notice You either: -+ -+ (i) agree in writing to pay Participant a mutually agreeable reasonable -+ royalty for Your past and future use of Modifications made by such -+ Participant, or -+ -+ (ii) withdraw Your litigation claim with respect to the Contributor Version -+ against such Participant. -+ -+ If within 60 days of notice, a reasonable royalty and payment arrangement are -+ not mutually agreed upon in writing by the parties or the litigation claim is -+ not withdrawn, the rights granted by Participant to You under Sections 2.1 -+ and/or 2.2 automatically terminate at the expiration of the 60 day notice -+ period specified above. -+ -+ (b) any software, hardware, or device, other than such Participant's -+ Contributor Version, directly or indirectly infringes any patent, then any -+ rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are -+ revoked effective as of the date You first made, used, sold, distributed, or -+ had made, Modifications made by that Participant. -+ -+ 8.3. If You assert a patent infringement claim against Participant alleging -+ that such Participant's Contributor Version directly or indirectly infringes -+ any patent where such claim is resolved (such as by license or settlement) -+ prior to the initiation of patent infringement litigation, then the reasonable -+ value of the licenses granted by such Participant under Sections 2.1 or 2.2 -+ shall be taken into account in determining the amount or value of any payment -+ or license. -+ -+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user -+ license agreements (excluding distributors and resellers) which have been -+ validly granted by You or any distributor hereunder prior to termination shall -+ survive termination. -+ -+ 9. LIMITATION OF LIABILITY. -+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING -+ NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY -+ OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY -+ OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, -+ OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, -+ DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, -+ OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL -+ HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF -+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING -+ FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH -+ LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF -+ INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT -+ APPLY TO YOU. -+ -+ 10. U.S. GOVERNMENT END USERS. -+ The Covered Code is a "commercial item", as that term is defined in 48 C.F.R. -+ 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial -+ computer software documentation", as such terms are used in 48 C.F.R. 12.212 -+ (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through -+ 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with -+ only those rights set forth herein. -+ -+ 11. MISCELLANEOUS. -+ -+ This License represents the complete agreement concerning subject matter -+ hereof. If any provision of this License is held to be unenforceable, such -+ provision shall be reformed only to the extent necessary to make it -+ enforceable. This License shall be governed by California law provisions -+ (except to the extent applicable law, if any, provides otherwise), excluding -+ its conflict-of-law provisions. With respect to disputes in which at least one -+ party is a citizen of, or an entity chartered or registered to do business in -+ the United States of America, any litigation relating to this License shall be -+ subject to the jurisdiction of the Federal Courts of the Northern District of -+ California, with venue lying in Santa Clara County, California, with the losing -+ party responsible for costs, including without limitation, court costs and -+ reasonable attorneys' fees and expenses. The application of the United Nations -+ Convention on Contracts for the International Sale of Goods is expressly -+ excluded. Any law or regulation which provides that the language of a contract -+ shall be construed against the drafter shall not apply to this License. -+ -+ 12. RESPONSIBILITY FOR CLAIMS. -+ -+ As between Initial Developer and the Contributors, each party is responsible -+ for claims and damages arising, directly or indirectly, out of its utilization -+ of rights under this License and You agree to work with Initial Developer and -+ Contributors to distribute such responsibility on an equitable basis. Nothing -+ herein is intended or shall be deemed to constitute any admission of liability. -+ -+ 13. MULTIPLE-LICENSED CODE. -+ -+ Initial Developer may designate portions of the Covered Code as -+ "Multiple-Licensed". "Multiple-Licensed" means that the Initial Devpoeloper -+ permits you to utilize portions of the Covered Code under Your choice of the -+ IDPL or the alternative licenses, if any, specified by the Initial Developer -+ in the file described in Exhibit A. -+ -+ EXHIBIT A -Initial Developer's Public License. -+ -+ The contents of this file are subject to the Initial Developer's Public License -+ Version 1.0 (the "License"); you may not use this file except in compliance -+ with the License. You may obtain a copy of the License from the Firebird -+ Project website, at http://www.firebirdsql.org/index.php?op=doc&id=idpl. -+ -+ Software distributed under the License is distributed on an "AS IS" basis, -+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for -+ the specific language governing rights and limitations under the License. -+ -+ The Original Code is ______________________________________. -+ -+ The Initial Developer of the Original Code is ________________________. -+ -+ Portions created by ______________________ -+ are Copyright (C) ______ _______________________. -+ -+ All Rights Reserved. -+ -+ Contributor(s): ______________________________________. ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/compat -@@ -0,0 +1 @@ -+7 ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/changelog -@@ -0,0 +1,5 @@ -+libgdiplus-2.10 (2.10.5-1) unstable; urgency=low -+ -+ * mono release 2.10.5 -+ -+ -- Eberhard Beilharz Mon, 12 Sep 2011 16:48:27 +0200 ---- /dev/null -+++ libgdiplus-2.10-2.10/debian.ori/source/format -@@ -0,0 +1 @@ -+3.0 (quilt) ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/Makefile -@@ -0,0 +1,771 @@ -+# Makefile.in generated by automake 1.10.1 from Makefile.am. -+# Makefile. Generated from Makefile.in by configure. -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+ -+ -+ -+pkgdatadir = $(datadir)/pixman -+pkglibdir = $(libdir)/pixman -+pkgincludedir = $(includedir)/pixman -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = x86_64-unknown-linux-gnu -+host_triplet = x86_64-unknown-linux-gnu -+subdir = . -+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ -+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ -+ $(srcdir)/pixman-1.pc.in $(top_srcdir)/configure AUTHORS \ -+ COPYING ChangeLog INSTALL NEWS TODO config.guess config.sub \ -+ depcomp install-sh ltmain.sh missing -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -+ configure.lineno config.status.lineno -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = config.h -+CONFIG_CLEAN_FILES = pixman-1.pc -+SOURCES = -+DIST_SOURCES = -+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -+ html-recursive info-recursive install-data-recursive \ -+ install-dvi-recursive install-exec-recursive \ -+ install-html-recursive install-info-recursive \ -+ install-pdf-recursive install-ps-recursive install-recursive \ -+ installcheck-recursive installdirs-recursive pdf-recursive \ -+ ps-recursive uninstall-recursive -+DATA = $(noinst_DATA) -+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ -+ distclean-recursive maintainer-clean-recursive -+ETAGS = etags -+CTAGS = ctags -+DIST_SUBDIRS = $(SUBDIRS) -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(distdir) -+am__remove_distdir = \ -+ { test ! -d $(distdir) \ -+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -+ && rm -fr $(distdir); }; } -+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 -+GZIP_ENV = --best -+distuninstallcheck_listfiles = find . -type f -print -+distcleancheck_listfiles = find . -type f -print -+ACLOCAL = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run aclocal-1.10 -+AMTAR = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run tar -+AR = ar -+AUTOCONF = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoconf -+AUTOHEADER = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoheader -+AUTOMAKE = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run automake-1.10 -+AWK = gawk -+CC = gcc -+CCDEPMODE = depmode=gcc3 -+CFLAGS = -g -O2 -Wall -fvisibility=hidden -+CPP = gcc -E -+CPPFLAGS = -+CYGPATH_W = echo -+DEFS = -DHAVE_CONFIG_H -+DEPDIR = .deps -+DEP_CFLAGS = -+DEP_LIBS = -+DSYMUTIL = -+DUMPBIN = -+ECHO_C = -+ECHO_N = -n -+ECHO_T = -+EGREP = /bin/grep -E -+EXEEXT = -+FGREP = /bin/grep -F -+GREP = /bin/grep -+GTK_CFLAGS = -pthread -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pixman-1 -+GTK_LIBS = -pthread -L/usr/lib/x86_64-linux-gnu -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+INSTALL_PROGRAM = ${INSTALL} -+INSTALL_SCRIPT = ${INSTALL} -+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -+LD = /usr/bin/ld -m elf_x86_64 -+LDFLAGS = -+LIBOBJS = -+LIBS = -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+LIPO = -+LN_S = ln -s -+LTLIBOBJS = -+LT_VERSION_INFO = 10:0:10 -+MAKEINFO = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run makeinfo -+MKDIR_P = /bin/mkdir -p -+MMX_CFLAGS = -msse -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 -+NM = /usr/bin/nm -B -+NMEDIT = -+OBJDUMP = objdump -+OBJEXT = o -+OTOOL = -+OTOOL64 = -+PACKAGE = pixman -+PACKAGE_BUGREPORT = "sandmann@daimi.au.dk" -+PACKAGE_NAME = pixman -+PACKAGE_STRING = pixman 0.10.0 -+PACKAGE_TARNAME = pixman -+PACKAGE_VERSION = 0.10.0 -+PATH_SEPARATOR = : -+PIXMAN_VERSION_MAJOR = 0 -+PIXMAN_VERSION_MICRO = 0 -+PIXMAN_VERSION_MINOR = 10 -+PKG_CONFIG = /usr/bin/pkg-config -+RANLIB = ranlib -+SED = /bin/sed -+SET_MAKE = -+SHELL = /bin/bash -+SSE_CFLAGS = -mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 -+STRIP = strip -+VERSION = 0.10.0 -+abs_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman -+abs_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman -+abs_top_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman -+abs_top_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman -+ac_ct_CC = gcc -+ac_ct_DUMPBIN = -+am__include = include -+am__leading_dot = . -+am__quote = -+am__tar = ${AMTAR} chof - "$$tardir" -+am__untar = ${AMTAR} xf - -+bindir = ${exec_prefix}/bin -+build = x86_64-unknown-linux-gnu -+build_alias = -+build_cpu = x86_64 -+build_os = linux-gnu -+build_vendor = unknown -+builddir = . -+datadir = ${datarootdir} -+datarootdir = ${prefix}/share -+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -+dvidir = ${docdir} -+exec_prefix = ${prefix} -+host = x86_64-unknown-linux-gnu -+host_alias = -+host_cpu = x86_64 -+host_os = linux-gnu -+host_vendor = unknown -+htmldir = ${docdir} -+includedir = ${prefix}/include -+infodir = ${datarootdir}/info -+install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/install-sh -+libdir = ${exec_prefix}/lib -+libexecdir = ${exec_prefix}/libexec -+localedir = ${datarootdir}/locale -+localstatedir = ${prefix}/var -+lt_ECHO = echo -+mandir = ${datarootdir}/man -+mkdir_p = /bin/mkdir -p -+oldincludedir = /usr/include -+pdfdir = ${docdir} -+prefix = /opt/mono-2.10 -+program_transform_name = s,x,x, -+psdir = ${docdir} -+sbindir = ${exec_prefix}/sbin -+sharedstatedir = ${prefix}/com -+srcdir = . -+sysconfdir = ${prefix}/etc -+target_alias = -+top_build_prefix = -+top_builddir = . -+top_srcdir = . -+SUBDIRS = pixman -+ -+#pkgconfigdir=$(libdir)/pkgconfig -+noinst_DATA = pixman-1.pc -+USERNAME = $$USER -+RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) -+RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org -+RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/releases -+RELEASE_CAIRO_URL = http://cairographics.org/releases -+RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib -+RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org -+RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib -+RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org -+tar_gz = $(PACKAGE)-$(VERSION).tar.gz -+tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2 -+sha1_tgz = $(tar_gz).sha1 -+md5_tgz = $(tar_gz).md5 -+sha1_tbz2 = $(tar_bz2).sha1 -+md5_tbz2 = $(tar_bz2).md5 -+gpg_file = $(sha1_tgz).asc -+all: config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-recursive -+ -+.SUFFIXES: -+am--refresh: -+ @: -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ -+ cd $(srcdir) && $(AUTOMAKE) --gnu \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ echo ' $(SHELL) ./config.status'; \ -+ $(SHELL) ./config.status;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ $(SHELL) ./config.status --recheck -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(srcdir) && $(AUTOCONF) -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -+ -+config.h: stamp-h1 -+ @if test ! -f $@; then \ -+ rm -f stamp-h1; \ -+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ -+ else :; fi -+ -+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status -+ @rm -f stamp-h1 -+ cd $(top_builddir) && $(SHELL) ./config.status config.h -+$(srcdir)/config.h.in: $(am__configure_deps) -+ cd $(top_srcdir) && $(AUTOHEADER) -+ rm -f stamp-h1 -+ touch $@ -+ -+distclean-hdr: -+ -rm -f config.h stamp-h1 -+pixman-1.pc: $(top_builddir)/config.status $(srcdir)/pixman-1.pc.in -+ cd $(top_builddir) && $(SHELL) ./config.status $@ -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+ -+# This directory's subdirectories are mostly independent; you can cd -+# into them and run `make' without going through this Makefile. -+# To change the values of `make' variables: instead of editing Makefiles, -+# (1) if the variable is set in `config.status', edit `config.status' -+# (which will cause the Makefiles to be regenerated when you run `make'); -+# (2) otherwise, pass the desired values on the `make' command line. -+$(RECURSIVE_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ dot_seen=yes; \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done; \ -+ if test "$$dot_seen" = "no"; then \ -+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -+ fi; test -z "$$fail" -+ -+$(RECURSIVE_CLEAN_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ rev=''; for subdir in $$list; do \ -+ if test "$$subdir" = "."; then :; else \ -+ rev="$$subdir $$rev"; \ -+ fi; \ -+ done; \ -+ rev="$$rev ."; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ for subdir in $$rev; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done && test -z "$$fail" -+tags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -+ done -+ctags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -+ done -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -+ include_option=--etags-include; \ -+ empty_fix=.; \ -+ else \ -+ include_option=--include; \ -+ empty_fix=; \ -+ fi; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test ! -f $$subdir/TAGS || \ -+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -+ fi; \ -+ done; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ $(am__remove_distdir) -+ test -d $(distdir) || mkdir $(distdir) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test -d "$(distdir)/$$subdir" \ -+ || $(MKDIR_P) "$(distdir)/$$subdir" \ -+ || exit 1; \ -+ distdir=`$(am__cd) $(distdir) && pwd`; \ -+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -+ (cd $$subdir && \ -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$$top_distdir" \ -+ distdir="$$distdir/$$subdir" \ -+ am__remove_distdir=: \ -+ am__skip_length_check=: \ -+ distdir) \ -+ || exit 1; \ -+ fi; \ -+ done -+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ -+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ -+ || chmod -R a+r $(distdir) -+dist-gzip: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) -+dist-bzip2: distdir -+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -+ $(am__remove_distdir) -+ -+dist-lzma: distdir -+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -+ $(am__remove_distdir) -+ -+dist-tarZ: distdir -+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -+ $(am__remove_distdir) -+ -+dist-shar: distdir -+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -+ $(am__remove_distdir) -+ -+dist-zip: distdir -+ -rm -f $(distdir).zip -+ zip -rq $(distdir).zip $(distdir) -+ $(am__remove_distdir) -+ -+dist dist-all: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -+ $(am__remove_distdir) -+ -+# This target untars the dist file and tries a VPATH configuration. Then -+# it guarantees that the distribution is self-contained by making another -+# tarfile. -+distcheck: dist -+ case '$(DIST_ARCHIVES)' in \ -+ *.tar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ -+ *.tar.bz2*) \ -+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ -+ *.tar.lzma*) \ -+ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ -+ *.tar.Z*) \ -+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -+ *.shar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ -+ *.zip*) \ -+ unzip $(distdir).zip ;;\ -+ esac -+ chmod -R a-w $(distdir); chmod a+w $(distdir) -+ mkdir $(distdir)/_build -+ mkdir $(distdir)/_inst -+ chmod a-w $(distdir) -+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -+ && cd $(distdir)/_build \ -+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -+ $(DISTCHECK_CONFIGURE_FLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) dvi \ -+ && $(MAKE) $(AM_MAKEFLAGS) check \ -+ && $(MAKE) $(AM_MAKEFLAGS) install \ -+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -+ distuninstallcheck \ -+ && chmod -R a-w "$$dc_install_base" \ -+ && ({ \ -+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -+ } || { rm -rf "$$dc_destdir"; exit 1; }) \ -+ && rm -rf "$$dc_destdir" \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist \ -+ && rm -rf $(DIST_ARCHIVES) \ -+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -+ $(am__remove_distdir) -+ @(echo "$(distdir) archives ready for distribution: "; \ -+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -+distuninstallcheck: -+ @cd $(distuninstallcheck_dir) \ -+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -+ || { echo "ERROR: files left after uninstall:" ; \ -+ if test -n "$(DESTDIR)"; then \ -+ echo " (check DESTDIR support)"; \ -+ fi ; \ -+ $(distuninstallcheck_listfiles) ; \ -+ exit 1; } >&2 -+distcleancheck: distclean -+ @if test '$(srcdir)' = . ; then \ -+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -+ exit 1 ; \ -+ fi -+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -+ || { echo "ERROR: files left in build directory after distclean:" ; \ -+ $(distcleancheck_listfiles) ; \ -+ exit 1; } >&2 -+check-am: all-am -+check: check-recursive -+all-am: Makefile $(DATA) config.h -+installdirs: installdirs-recursive -+installdirs-am: -+install: install-recursive -+install-exec: install-exec-recursive -+install-data: install-data-recursive -+uninstall: uninstall-recursive -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-recursive -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-recursive -+ -+clean-am: clean-generic clean-libtool mostlyclean-am -+ -+distclean: distclean-recursive -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -f Makefile -+distclean-am: clean-am distclean-generic distclean-hdr \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-recursive -+ -+dvi-am: -+ -+html: html-recursive -+ -+info: info-recursive -+ -+info-am: -+ -+install-data-am: -+ -+install-dvi: install-dvi-recursive -+ -+install-exec-am: -+ -+install-html: install-html-recursive -+ -+install-info: install-info-recursive -+ -+install-man: -+ -+install-pdf: install-pdf-recursive -+ -+install-ps: install-ps-recursive -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-recursive -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf $(top_srcdir)/autom4te.cache -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-recursive -+ -+mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -+pdf: pdf-recursive -+ -+pdf-am: -+ -+ps: ps-recursive -+ -+ps-am: -+ -+uninstall-am: -+ -+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ -+ install-strip -+ -+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ -+ all all-am am--refresh check check-am clean clean-generic \ -+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ -+ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ -+ distclean distclean-generic distclean-hdr distclean-libtool \ -+ distclean-tags distcleancheck distdir distuninstallcheck dvi \ -+ dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-dvi install-dvi-am \ -+ install-exec install-exec-am install-html install-html-am \ -+ install-info install-info-am install-man install-pdf \ -+ install-pdf-am install-ps install-ps-am install-strip \ -+ installcheck installcheck-am installdirs installdirs-am \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -+ tags tags-recursive uninstall uninstall-am -+ -+ -+$(pkgconfig_DATA): pixman-1.pc.in -+ -+snapshot: -+ distdir="$(distdir)-`date '+%Y%m%d'`"; \ -+ test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \ -+ $(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist -+ -+$(sha1_tgz): $(tar_gz) -+ sha1sum $^ > $@ -+ -+$(md5_tgz): $(tar_gz) -+ md5sum $^ > $@ -+ -+$(sha1_tbz2): $(tar_bz2) -+ sha1sum $^ > $@ -+ -+$(md5_tbz2): $(tar_bz2) -+ md5sum $^ > $@ -+ -+$(gpg_file): $(sha1_tgz) -+ @echo "Please enter your GPG password to sign the checksum." -+ gpg --armor --sign $^ -+ -+release-verify-newer: -+ @echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..." -+ @ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \ -+ || (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \ -+ && echo "Refusing to try to generate a new release of the same name." \ -+ && false) -+ @ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \ -+ || (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \ -+ && echo "Refusing to try to generate a new release of the same name." \ -+ && false) -+ @echo "Good." -+ -+release-remove-old: -+ $(RM) $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file) -+ -+ensure-prev: -+ @if [[ "$(PREV)" == "" ]]; then \ -+ echo "" && \ -+ echo "You must set the PREV variable on the make command line to" && \ -+ echo "the git tag of the last release." && \ -+ echo "" && \ -+ echo "For example:" && \ -+ echo " make PREV=pixman-0.7.3" && \ -+ echo "" && \ -+ false; \ -+ fi -+ -+release-check: ensure-prev release-verify-newer release-remove-old distcheck -+ -+release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file) -+ mkdir -p releases -+ scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR) -+ scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR) -+ ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)" -+ git-tag -s -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION) -+ -+release-publish-message: $(sha1_tgz) $(md5_tgz) $(sha1_tbz2) $(md5_tbz2) ensure-prev -+ @echo "Please follow the instructions in RELEASING to push stuff out and" -+ @echo "send out the announcement mails. Here is the excerpt you need:" -+ @echo "" -+ @echo "Lists: $(RELEASE_ANNOUNCE_LIST)" -+ @echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available" -+ @echo "============================== CUT HERE ==============================" -+ @echo "A new $(PACKAGE) release $(VERSION) is now available" -+ @echo "" -+ @echo "tar.gz:" -+ @echo " $(RELEASE_CAIRO_URL)/$(tar_gz)" -+ @echo " $(RELEASE_XORG_URL)/$(tar_gz)" -+ @echo "" -+ @echo "tar.bz2:" -+ @echo " $(RELEASE_XORG_URL)/$(tar_bz2)" -+ @echo "" -+ @echo "Hashes:" -+ @echo -n " MD5: " -+ @cat $(md5_tgz) -+ @echo -n " MD5: " -+ @cat $(md5_tbz2) -+ @echo -n " SHA1: " -+ @cat $(sha1_tgz) -+ @echo -n " SHA1: " -+ @cat $(sha1_tbz2) -+ @echo "" -+ @echo "GPG signature:" -+ @echo " $(RELEASE_CAIRO_URL)/$(gpg_file)" -+ @echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)" -+ @echo "" -+ @echo "Git:" -+ @echo " git://git.freedesktop.org/git/pixman" -+ @echo " tag: $(PACKAGE)-$(VERSION)" -+ @echo "" -+ @echo "Log:" -+ @git-log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b0-80 -+ @echo "============================== CUT HERE ==============================" -+ @echo "" -+ -+release-publish: release-upload release-publish-message -+ -+.PHONY: release-upload release-publish release-publish-message -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/config.h -@@ -0,0 +1,87 @@ -+/* config.h. Generated from config.h.in by configure. */ -+/* config.h.in. Generated from configure.ac by autoheader. */ -+ -+/* Define if building universal (internal helper macro) */ -+/* #undef AC_APPLE_UNIVERSAL_BUILD */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_DLFCN_H 1 -+ -+/* Define to 1 if you have the `getisax' function. */ -+/* #undef HAVE_GETISAX */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_INTTYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_MEMORY_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STDINT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STDLIB_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STRINGS_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STRING_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_SYS_STAT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_UNISTD_H 1 -+ -+/* Define to the sub-directory in which libtool stores uninstalled libraries. -+ */ -+#define LT_OBJDIR ".libs/" -+ -+/* Name of package */ -+#define PACKAGE "pixman" -+ -+/* Define to the address where bug reports for this package should be sent. */ -+#define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+ -+/* Define to the full name of this package. */ -+#define PACKAGE_NAME "pixman" -+ -+/* Define to the full name and version of this package. */ -+#define PACKAGE_STRING "pixman 0.10.0" -+ -+/* Define to the one symbol short name of this package. */ -+#define PACKAGE_TARNAME "pixman" -+ -+/* Define to the version of this package. */ -+#define PACKAGE_VERSION "0.10.0" -+ -+/* Define to 1 if you have the ANSI C header files. */ -+#define STDC_HEADERS 1 -+ -+/* use MMX compiler intrinsics */ -+#define USE_MMX 1 -+ -+/* use SSE compiler intrinsics */ -+#define USE_SSE 1 -+ -+/* use SSE compiler intrinsics */ -+#define USE_SSE2 1 -+ -+/* Version number of package */ -+#define VERSION "0.10.0" -+ -+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most -+ significant byte first (like Motorola and SPARC, unlike Intel). */ -+#if defined AC_APPLE_UNIVERSAL_BUILD -+# if defined __BIG_ENDIAN__ -+# define WORDS_BIGENDIAN 1 -+# endif -+#else -+# ifndef WORDS_BIGENDIAN -+/* # undef WORDS_BIGENDIAN */ -+# endif -+#endif ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/config.log -@@ -0,0 +1,735 @@ -+This file contains any messages produced by compilers while -+running configure, to aid debugging if configure makes a mistake. -+ -+It was created by pixman configure 0.10.0, which was -+generated by GNU Autoconf 2.63. Invocation command line was -+ -+ $ ./configure --prefix=/opt/mono-2.10 -+ -+## --------- ## -+## Platform. ## -+## --------- ## -+ -+hostname = lemon -+uname -m = x86_64 -+uname -r = 2.6.38-11-generic -+uname -s = Linux -+uname -v = #49-Ubuntu SMP Mon Aug 29 20:47:07 UTC 2011 -+ -+/usr/bin/uname -p = unknown -+/bin/uname -X = unknown -+ -+/bin/arch = unknown -+/usr/bin/arch -k = unknown -+/usr/convex/getsysinfo = unknown -+/usr/bin/hostinfo = unknown -+/bin/machine = unknown -+/usr/bin/oslevel = unknown -+/bin/universe = unknown -+ -+PATH: /home/eberhard/bin -+PATH: /usr/local/sbin -+PATH: /usr/local/bin -+PATH: /usr/sbin -+PATH: /usr/bin -+PATH: /sbin -+PATH: /bin -+PATH: /usr/games -+ -+ -+## ----------- ## -+## Core tests. ## -+## ----------- ## -+ -+configure:2089: checking for a BSD-compatible install -+configure:2157: result: /usr/bin/install -c -+configure:2168: checking whether build environment is sane -+configure:2211: result: yes -+configure:2236: checking for a thread-safe mkdir -p -+configure:2275: result: /bin/mkdir -p -+configure:2288: checking for gawk -+configure:2304: found /usr/bin/gawk -+configure:2315: result: gawk -+configure:2326: checking whether make sets $(MAKE) -+configure:2348: result: yes -+configure:2584: checking for gcc -+configure:2600: found /usr/bin/gcc -+configure:2611: result: gcc -+configure:2843: checking for C compiler version -+configure:2851: gcc --version >&5 -+gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 -+Copyright (C) 2010 Free Software Foundation, Inc. -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+ -+configure:2855: $? = 0 -+configure:2862: gcc -v >&5 -+Using built-in specs. -+COLLECT_GCC=gcc -+COLLECT_LTO_WRAPPER=/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/lto-wrapper -+Target: x86_64-linux-gnu -+Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.5.2-8ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.5 --enable-shared --enable-multiarch --with-multiarch-defaults=x86_64-linux-gnu --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib/x86_64-linux-gnu --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib/x86_64-linux-gnu --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default --with-plugin-ld=ld.gold --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu -+Thread model: posix -+gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) -+configure:2866: $? = 0 -+configure:2873: gcc -V >&5 -+gcc: '-V' option must have argument -+configure:2877: $? = 1 -+configure:2900: checking for C compiler default output file name -+configure:2922: gcc conftest.c >&5 -+configure:2926: $? = 0 -+configure:2964: result: a.out -+configure:2983: checking whether the C compiler works -+configure:2993: ./a.out -+configure:2997: $? = 0 -+configure:3016: result: yes -+configure:3023: checking whether we are cross compiling -+configure:3025: result: no -+configure:3028: checking for suffix of executables -+configure:3035: gcc -o conftest conftest.c >&5 -+configure:3039: $? = 0 -+configure:3065: result: -+configure:3071: checking for suffix of object files -+configure:3097: gcc -c conftest.c >&5 -+configure:3101: $? = 0 -+configure:3126: result: o -+configure:3130: checking whether we are using the GNU C compiler -+configure:3159: gcc -c conftest.c >&5 -+configure:3166: $? = 0 -+configure:3183: result: yes -+configure:3192: checking whether gcc accepts -g -+configure:3222: gcc -c -g conftest.c >&5 -+configure:3229: $? = 0 -+configure:3330: result: yes -+configure:3347: checking for gcc option to accept ISO C89 -+configure:3421: gcc -c -g -O2 conftest.c >&5 -+configure:3428: $? = 0 -+configure:3451: result: none needed -+configure:3480: checking for style of include used by make -+configure:3508: result: GNU -+configure:3533: checking dependency style of gcc -+configure:3624: result: gcc3 -+configure:3670: checking build system type -+configure:3688: result: x86_64-unknown-linux-gnu -+configure:3710: checking host system type -+configure:3725: result: x86_64-unknown-linux-gnu -+configure:3747: checking for a sed that does not truncate output -+configure:3813: result: /bin/sed -+configure:3831: checking for grep that handles long lines and -e -+configure:3891: result: /bin/grep -+configure:3896: checking for egrep -+configure:3960: result: /bin/grep -E -+configure:3965: checking for fgrep -+configure:4029: result: /bin/grep -F -+configure:4064: checking for ld used by gcc -+configure:4131: result: /usr/bin/ld -+configure:4140: checking if the linker (/usr/bin/ld) is GNU ld -+configure:4155: result: yes -+configure:4167: checking for BSD- or MS-compatible name lister (nm) -+configure:4216: result: /usr/bin/nm -B -+configure:4334: checking the name lister (/usr/bin/nm -B) interface -+configure:4341: gcc -c -g -O2 conftest.c >&5 -+configure:4344: /usr/bin/nm -B "conftest.o" -+configure:4347: output -+0000000000000000 B some_variable -+configure:4354: result: BSD nm -+configure:4357: checking whether ln -s works -+configure:4361: result: yes -+configure:4369: checking the maximum length of command line arguments -+configure:4489: result: 1572864 -+configure:4506: checking whether the shell understands some XSI constructs -+configure:4516: result: yes -+configure:4520: checking whether the shell understands "+=" -+configure:4526: result: yes -+configure:4561: checking for /usr/bin/ld option to reload object files -+configure:4568: result: -r -+configure:4637: checking for objdump -+configure:4653: found /usr/bin/objdump -+configure:4664: result: objdump -+configure:4696: checking how to recognize dependent libraries -+configure:4892: result: pass_all -+configure:4952: checking for ar -+configure:4968: found /usr/bin/ar -+configure:4979: result: ar -+configure:5057: checking for strip -+configure:5073: found /usr/bin/strip -+configure:5084: result: strip -+configure:5156: checking for ranlib -+configure:5172: found /usr/bin/ranlib -+configure:5183: result: ranlib -+configure:5273: checking command to parse /usr/bin/nm -B output from gcc object -+configure:5391: gcc -c -g -O2 conftest.c >&5 -+configure:5394: $? = 0 -+configure:5398: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm -+configure:5401: $? = 0 -+configure:5455: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 -+configure:5458: $? = 0 -+configure:5496: result: ok -+configure:5592: gcc -c -g -O2 conftest.c >&5 -+configure:5595: $? = 0 -+configure:6363: checking how to run the C preprocessor -+configure:6403: gcc -E conftest.c -+configure:6410: $? = 0 -+configure:6441: gcc -E conftest.c -+conftest.c:10:28: fatal error: ac_nonexistent.h: No such file or directory -+compilation terminated. -+configure:6448: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "pixman" -+| #define PACKAGE_TARNAME "pixman" -+| #define PACKAGE_VERSION "0.10.0" -+| #define PACKAGE_STRING "pixman 0.10.0" -+| #define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+| #define PACKAGE "pixman" -+| #define VERSION "0.10.0" -+| /* end confdefs.h. */ -+| #include -+configure:6481: result: gcc -E -+configure:6510: gcc -E conftest.c -+configure:6517: $? = 0 -+configure:6548: gcc -E conftest.c -+conftest.c:10:28: fatal error: ac_nonexistent.h: No such file or directory -+compilation terminated. -+configure:6555: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "pixman" -+| #define PACKAGE_TARNAME "pixman" -+| #define PACKAGE_VERSION "0.10.0" -+| #define PACKAGE_STRING "pixman 0.10.0" -+| #define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+| #define PACKAGE "pixman" -+| #define VERSION "0.10.0" -+| /* end confdefs.h. */ -+| #include -+configure:6595: checking for ANSI C header files -+configure:6625: gcc -c -g -O2 conftest.c >&5 -+configure:6632: $? = 0 -+configure:6731: gcc -o conftest -g -O2 conftest.c >&5 -+configure:6735: $? = 0 -+configure:6741: ./conftest -+configure:6745: $? = 0 -+configure:6763: result: yes -+configure:6787: checking for sys/types.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for sys/stat.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for stdlib.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for string.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for memory.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for strings.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for inttypes.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for stdint.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6787: checking for unistd.h -+configure:6808: gcc -c -g -O2 conftest.c >&5 -+configure:6815: $? = 0 -+configure:6832: result: yes -+configure:6850: checking for dlfcn.h -+configure:6871: gcc -c -g -O2 conftest.c >&5 -+configure:6878: $? = 0 -+configure:6895: result: yes -+configure:7081: checking for objdir -+configure:7096: result: .libs -+configure:7388: checking if gcc supports -fno-rtti -fno-exceptions -+configure:7406: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 -+cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C -+configure:7410: $? = 0 -+configure:7423: result: no -+configure:7443: checking for gcc option to produce PIC -+configure:7715: result: -fPIC -DPIC -+configure:7727: checking if gcc PIC flag -fPIC -DPIC works -+configure:7745: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 -+configure:7749: $? = 0 -+configure:7762: result: yes -+configure:7786: checking if gcc static flag -static works -+configure:7814: result: yes -+configure:7829: checking if gcc supports -c -o file.o -+configure:7850: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 -+configure:7854: $? = 0 -+configure:7876: result: yes -+configure:7884: checking if gcc supports -c -o file.o -+configure:7931: result: yes -+configure:7964: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries -+configure:9038: result: yes -+configure:9075: checking whether -lc should be explicitly linked in -+configure:9080: gcc -c -g -O2 conftest.c >&5 -+configure:9083: $? = 0 -+configure:9098: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 -+configure:9101: $? = 0 -+configure:9113: result: no -+configure:9277: checking dynamic linker characteristics -+configure:9720: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 -+configure:9727: $? = 0 -+configure:9960: result: GNU/Linux ld.so -+configure:10062: checking how to hardcode library paths into programs -+configure:10087: result: immediate -+configure:10920: checking whether stripping libraries is possible -+configure:10925: result: yes -+configure:10960: checking if libtool supports shared libraries -+configure:10962: result: yes -+configure:10965: checking whether to build shared libraries -+configure:10986: result: yes -+configure:10989: checking whether to build static libraries -+configure:10993: result: yes -+configure:11032: checking for getisax -+configure:11088: gcc -o conftest -g -O2 conftest.c >&5 -+/tmp/ccxOXbV1.o: In function `main': -+/home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/conftest.c:56: undefined reference to `getisax' -+collect2: ld returned 1 exit status -+configure:11095: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "pixman" -+| #define PACKAGE_TARNAME "pixman" -+| #define PACKAGE_VERSION "0.10.0" -+| #define PACKAGE_STRING "pixman 0.10.0" -+| #define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+| #define PACKAGE "pixman" -+| #define VERSION "0.10.0" -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_DLFCN_H 1 -+| #define LT_OBJDIR ".libs/" -+| /* end confdefs.h. */ -+| /* Define getisax to an innocuous variant, in case declares getisax. -+| For example, HP-UX 11i declares gettimeofday. */ -+| #define getisax innocuous_getisax -+| -+| /* System header to define __stub macros and hopefully few prototypes, -+| which can conflict with char getisax (); below. -+| Prefer to if __STDC__ is defined, since -+| exists even on freestanding compilers. */ -+| -+| #ifdef __STDC__ -+| # include -+| #else -+| # include -+| #endif -+| -+| #undef getisax -+| -+| /* Override any GCC internal prototype to avoid an error. -+| Use char because int might match the return type of a GCC -+| builtin and then its argument prototype would still apply. */ -+| #ifdef __cplusplus -+| extern "C" -+| #endif -+| char getisax (); -+| /* The GNU C library defines this for functions which it implements -+| to always fail with ENOSYS. Some functions are actually named -+| something starting with __ and the normal name is an alias. */ -+| #if defined __stub_getisax || defined __stub___getisax -+| choke me -+| #endif -+| -+| int -+| main () -+| { -+| return getisax (); -+| ; -+| return 0; -+| } -+configure:11117: result: no -+configure:11130: checking whether byte ordering is bigendian -+configure:11155: gcc -c -g -O2 conftest.c >&5 -+conftest.c:23:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'a' -+configure:11162: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "pixman" -+| #define PACKAGE_TARNAME "pixman" -+| #define PACKAGE_VERSION "0.10.0" -+| #define PACKAGE_STRING "pixman 0.10.0" -+| #define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+| #define PACKAGE "pixman" -+| #define VERSION "0.10.0" -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_DLFCN_H 1 -+| #define LT_OBJDIR ".libs/" -+| /* end confdefs.h. */ -+| #ifndef __APPLE_CC__ -+| not a universal capable compiler -+| #endif -+| typedef int dummy; -+| -+configure:11212: gcc -c -g -O2 conftest.c >&5 -+configure:11219: $? = 0 -+configure:11251: gcc -c -g -O2 conftest.c >&5 -+conftest.c: In function 'main': -+conftest.c:29:4: error: 'not' undeclared (first use in this function) -+conftest.c:29:4: note: each undeclared identifier is reported only once for each function it appears in -+conftest.c:29:8: error: expected ';' before 'big' -+configure:11258: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "pixman" -+| #define PACKAGE_TARNAME "pixman" -+| #define PACKAGE_VERSION "0.10.0" -+| #define PACKAGE_STRING "pixman 0.10.0" -+| #define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+| #define PACKAGE "pixman" -+| #define VERSION "0.10.0" -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_DLFCN_H 1 -+| #define LT_OBJDIR ".libs/" -+| /* end confdefs.h. */ -+| #include -+| #include -+| -+| int -+| main () -+| { -+| #if BYTE_ORDER != BIG_ENDIAN -+| not big endian -+| #endif -+| -+| ; -+| return 0; -+| } -+configure:11510: result: no -+configure:11567: checking for -fvisibility -+configure:11584: gcc -c -g -O2 -Wall conftest.c >&5 -+configure:11591: $? = 0 -+configure:11609: result: yes -+configure:11616: checking whether to use MMX intrinsics -+configure:11637: gcc -c -g -O2 -Wall -fvisibility=hidden -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 conftest.c >&5 -+configure:11644: $? = 0 -+configure:11659: result: yes -+configure:11684: checking whether to use SSE intrinsics -+configure:11708: gcc -c -g -O2 -Wall -fvisibility=hidden -msse -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 conftest.c >&5 -+configure:11715: $? = 0 -+configure:11730: result: yes -+configure:11756: checking whether to use SSE2 intrinsics -+configure:11780: gcc -c -g -O2 -Wall -fvisibility=hidden -msse2 -msse -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 conftest.c >&5 -+conftest.c: In function 'main': -+conftest.c:9:4: warning: 'a' is used uninitialized in this function -+conftest.c:9:4: warning: 'b' is used uninitialized in this function -+configure:11787: $? = 0 -+configure:11802: result: yes -+configure:11874: checking for pkg-config -+configure:11892: found /usr/bin/pkg-config -+configure:11904: result: /usr/bin/pkg-config -+configure:11929: checking pkg-config is at least version 0.9.0 -+configure:11932: result: yes -+configure:11943: checking for GTK -+configure:11950: $PKG_CONFIG --exists --print-errors "gtk+-2.0" -+configure:11953: $? = 0 -+configure:11966: $PKG_CONFIG --exists --print-errors "gtk+-2.0" -+configure:11969: $? = 0 -+configure:12004: result: yes -+configure:12169: creating ./config.status -+ -+## ---------------------- ## -+## Running config.status. ## -+## ---------------------- ## -+ -+This file was extended by pixman config.status 0.10.0, which was -+generated by GNU Autoconf 2.63. Invocation command line was -+ -+ CONFIG_FILES = -+ CONFIG_HEADERS = -+ CONFIG_LINKS = -+ CONFIG_COMMANDS = -+ $ ./config.status -+ -+on lemon -+ -+config.status:1009: creating pixman-1.pc -+config.status:1009: creating Makefile -+config.status:1009: creating pixman/Makefile -+config.status:1009: creating pixman/pixman-version.h -+config.status:1009: creating config.h -+config.status:1283: executing depfiles commands -+config.status:1283: executing libtool commands -+ -+## ---------------- ## -+## Cache variables. ## -+## ---------------- ## -+ -+ac_cv_build=x86_64-unknown-linux-gnu -+ac_cv_c_bigendian=no -+ac_cv_c_compiler_gnu=yes -+ac_cv_env_CC_set= -+ac_cv_env_CC_value= -+ac_cv_env_CFLAGS_set= -+ac_cv_env_CFLAGS_value= -+ac_cv_env_CPPFLAGS_set= -+ac_cv_env_CPPFLAGS_value= -+ac_cv_env_CPP_set= -+ac_cv_env_CPP_value= -+ac_cv_env_GTK_CFLAGS_set= -+ac_cv_env_GTK_CFLAGS_value= -+ac_cv_env_GTK_LIBS_set= -+ac_cv_env_GTK_LIBS_value= -+ac_cv_env_LDFLAGS_set= -+ac_cv_env_LDFLAGS_value= -+ac_cv_env_LIBS_set= -+ac_cv_env_LIBS_value= -+ac_cv_env_PKG_CONFIG_set= -+ac_cv_env_PKG_CONFIG_value= -+ac_cv_env_build_alias_set= -+ac_cv_env_build_alias_value= -+ac_cv_env_host_alias_set= -+ac_cv_env_host_alias_value= -+ac_cv_env_target_alias_set= -+ac_cv_env_target_alias_value= -+ac_cv_func_getisax=no -+ac_cv_header_dlfcn_h=yes -+ac_cv_header_inttypes_h=yes -+ac_cv_header_memory_h=yes -+ac_cv_header_stdc=yes -+ac_cv_header_stdint_h=yes -+ac_cv_header_stdlib_h=yes -+ac_cv_header_string_h=yes -+ac_cv_header_strings_h=yes -+ac_cv_header_sys_stat_h=yes -+ac_cv_header_sys_types_h=yes -+ac_cv_header_unistd_h=yes -+ac_cv_host=x86_64-unknown-linux-gnu -+ac_cv_objext=o -+ac_cv_path_EGREP='/bin/grep -E' -+ac_cv_path_FGREP='/bin/grep -F' -+ac_cv_path_GREP=/bin/grep -+ac_cv_path_SED=/bin/sed -+ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config -+ac_cv_path_install='/usr/bin/install -c' -+ac_cv_path_mkdir=/bin/mkdir -+ac_cv_prog_AWK=gawk -+ac_cv_prog_CPP='gcc -E' -+ac_cv_prog_ac_ct_AR=ar -+ac_cv_prog_ac_ct_CC=gcc -+ac_cv_prog_ac_ct_OBJDUMP=objdump -+ac_cv_prog_ac_ct_RANLIB=ranlib -+ac_cv_prog_ac_ct_STRIP=strip -+ac_cv_prog_cc_c89= -+ac_cv_prog_cc_g=yes -+ac_cv_prog_make_make_set=yes -+am_cv_CC_dependencies_compiler_type=gcc3 -+lt_cv_deplibs_check_method=pass_all -+lt_cv_file_magic_cmd='$MAGIC_CMD' -+lt_cv_file_magic_test_file= -+lt_cv_ld_reload_flag=-r -+lt_cv_nm_interface='BSD nm' -+lt_cv_objdir=.libs -+lt_cv_path_LD=/usr/bin/ld -+lt_cv_path_NM='/usr/bin/nm -B' -+lt_cv_prog_compiler_c_o=yes -+lt_cv_prog_compiler_pic_works=yes -+lt_cv_prog_compiler_rtti_exceptions=no -+lt_cv_prog_compiler_static_works=yes -+lt_cv_prog_gnu_ld=yes -+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' -+lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' -+lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' -+lt_cv_sys_max_cmd_len=1572864 -+pkg_cv_GTK_CFLAGS='-pthread -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pixman-1 ' -+pkg_cv_GTK_LIBS='-pthread -L/usr/lib/x86_64-linux-gnu -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 ' -+ -+## ----------------- ## -+## Output variables. ## -+## ----------------- ## -+ -+ACLOCAL='${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run aclocal-1.10' -+AMDEPBACKSLASH='\' -+AMDEP_FALSE='#' -+AMDEP_TRUE='' -+AMTAR='${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run tar' -+AR='ar' -+AUTOCONF='${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoconf' -+AUTOHEADER='${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoheader' -+AUTOMAKE='${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run automake-1.10' -+AWK='gawk' -+CC='gcc' -+CCDEPMODE='depmode=gcc3' -+CFLAGS='-g -O2 -Wall -fvisibility=hidden' -+CPP='gcc -E' -+CPPFLAGS='' -+CYGPATH_W='echo' -+DEFS='-DHAVE_CONFIG_H' -+DEPDIR='.deps' -+DEP_CFLAGS='' -+DEP_LIBS='' -+DSYMUTIL='' -+DUMPBIN='' -+ECHO_C='' -+ECHO_N='-n' -+ECHO_T='' -+EGREP='/bin/grep -E' -+EXEEXT='' -+FGREP='/bin/grep -F' -+GREP='/bin/grep' -+GTK_CFLAGS='-pthread -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pixman-1 ' -+GTK_LIBS='-pthread -L/usr/lib/x86_64-linux-gnu -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 ' -+HAVE_GTK_FALSE='#' -+HAVE_GTK_TRUE='' -+INSTALL_DATA='${INSTALL} -m 644' -+INSTALL_PROGRAM='${INSTALL}' -+INSTALL_SCRIPT='${INSTALL}' -+INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' -+LD='/usr/bin/ld -m elf_x86_64' -+LDFLAGS='' -+LIBOBJS='' -+LIBS='' -+LIBTOOL='$(SHELL) $(top_builddir)/libtool' -+LIPO='' -+LN_S='ln -s' -+LTLIBOBJS='' -+LT_VERSION_INFO='10:0:10' -+MAKEINFO='${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run makeinfo' -+MKDIR_P='/bin/mkdir -p' -+MMX_CFLAGS='-msse -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000' -+NM='/usr/bin/nm -B' -+NMEDIT='' -+OBJDUMP='objdump' -+OBJEXT='o' -+OTOOL64='' -+OTOOL='' -+PACKAGE='pixman' -+PACKAGE_BUGREPORT='"sandmann@daimi.au.dk"' -+PACKAGE_NAME='pixman' -+PACKAGE_STRING='pixman 0.10.0' -+PACKAGE_TARNAME='pixman' -+PACKAGE_VERSION='0.10.0' -+PATH_SEPARATOR=':' -+PIXMAN_VERSION_MAJOR='0' -+PIXMAN_VERSION_MICRO='0' -+PIXMAN_VERSION_MINOR='10' -+PKG_CONFIG='/usr/bin/pkg-config' -+RANLIB='ranlib' -+SED='/bin/sed' -+SET_MAKE='' -+SHELL='/bin/bash' -+SSE_CFLAGS='-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000' -+STRIP='strip' -+USE_MMX_FALSE='#' -+USE_MMX_TRUE='' -+USE_SSE2_FALSE='#' -+USE_SSE2_TRUE='' -+USE_SSE_FALSE='#' -+USE_SSE_TRUE='' -+VERSION='0.10.0' -+ac_ct_CC='gcc' -+ac_ct_DUMPBIN='' -+am__fastdepCC_FALSE='#' -+am__fastdepCC_TRUE='' -+am__include='include' -+am__isrc='' -+am__leading_dot='.' -+am__quote='' -+am__tar='${AMTAR} chof - "$$tardir"' -+am__untar='${AMTAR} xf -' -+bindir='${exec_prefix}/bin' -+build='x86_64-unknown-linux-gnu' -+build_alias='' -+build_cpu='x86_64' -+build_os='linux-gnu' -+build_vendor='unknown' -+datadir='${datarootdir}' -+datarootdir='${prefix}/share' -+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -+dvidir='${docdir}' -+exec_prefix='${prefix}' -+host='x86_64-unknown-linux-gnu' -+host_alias='' -+host_cpu='x86_64' -+host_os='linux-gnu' -+host_vendor='unknown' -+htmldir='${docdir}' -+includedir='${prefix}/include' -+infodir='${datarootdir}/info' -+install_sh='$(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/install-sh' -+libdir='${exec_prefix}/lib' -+libexecdir='${exec_prefix}/libexec' -+localedir='${datarootdir}/locale' -+localstatedir='${prefix}/var' -+lt_ECHO='echo' -+mandir='${datarootdir}/man' -+mkdir_p='/bin/mkdir -p' -+oldincludedir='/usr/include' -+pdfdir='${docdir}' -+prefix='/opt/mono-2.10' -+program_transform_name='s,x,x,' -+psdir='${docdir}' -+sbindir='${exec_prefix}/sbin' -+sharedstatedir='${prefix}/com' -+sysconfdir='${prefix}/etc' -+target_alias='' -+ -+## ----------- ## -+## confdefs.h. ## -+## ----------- ## -+ -+#define PACKAGE_NAME "pixman" -+#define PACKAGE_TARNAME "pixman" -+#define PACKAGE_VERSION "0.10.0" -+#define PACKAGE_STRING "pixman 0.10.0" -+#define PACKAGE_BUGREPORT ""sandmann@daimi.au.dk"" -+#define PACKAGE "pixman" -+#define VERSION "0.10.0" -+#define STDC_HEADERS 1 -+#define HAVE_SYS_TYPES_H 1 -+#define HAVE_SYS_STAT_H 1 -+#define HAVE_STDLIB_H 1 -+#define HAVE_STRING_H 1 -+#define HAVE_MEMORY_H 1 -+#define HAVE_STRINGS_H 1 -+#define HAVE_INTTYPES_H 1 -+#define HAVE_STDINT_H 1 -+#define HAVE_UNISTD_H 1 -+#define HAVE_DLFCN_H 1 -+#define LT_OBJDIR ".libs/" -+#define USE_MMX 1 -+#define USE_SSE 1 -+#define USE_SSE2 1 -+ -+configure: exit 0 ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/config.status -@@ -0,0 +1,2054 @@ -+#! /bin/bash -+# Generated by configure. -+# Run this file to recreate the current configuration. -+# Compiler output produced by configure, useful for debugging -+# configure, is in config.log if it exists. -+ -+debug=false -+ac_cs_recheck=false -+ac_cs_silent=false -+SHELL=${CONFIG_SHELL-/bin/bash} -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## -+ -+# Be more Bourne compatible -+DUALCASE=1; export DUALCASE # for MKS sh -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ -+fi -+ -+ -+ -+ -+# PATH needs CR -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+as_nl=' -+' -+export as_nl -+# Printing a long string crashes Solaris 7 /usr/bin/printf. -+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then -+ as_echo='printf %s\n' -+ as_echo_n='printf %s' -+else -+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then -+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' -+ as_echo_n='/usr/ucb/echo -n' -+ else -+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' -+ as_echo_n_body='eval -+ arg=$1; -+ case $arg in -+ *"$as_nl"*) -+ expr "X$arg" : "X\\(.*\\)$as_nl"; -+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; -+ esac; -+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" -+ ' -+ export as_echo_n_body -+ as_echo_n='sh -c $as_echo_n_body as_echo' -+ fi -+ export as_echo_body -+ as_echo='sh -c $as_echo_body as_echo' -+fi -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ PATH_SEPARATOR=: -+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { -+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || -+ PATH_SEPARATOR=';' -+ } -+fi -+ -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset -+else -+ as_unset=false -+fi -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent editors from complaining about space-tab. -+# (If _AS_PATH_WALK were called with IFS unset, it would disable word -+# splitting by setting IFS to empty value.) -+IFS=" "" $as_nl" -+ -+# Find who we are. Look in the path if we contain no directory separator. -+case $0 in -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done -+IFS=$as_save_IFS -+ -+ ;; -+esac -+# We did not find ourselves, most probably we were run as `sh COMMAND' -+# in which case we are not to be found in the path. -+if test "x$as_myself" = x; then -+ as_myself=$0 -+fi -+if test ! -f "$as_myself"; then -+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -+ { (exit 1); exit 1; } -+fi -+ -+# Work around bugs in pre-3.0 UWIN ksh. -+for as_var in ENV MAIL MAILPATH -+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+done -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+LC_ALL=C -+export LC_ALL -+LANGUAGE=C -+export LANGUAGE -+ -+# Required to use basename. -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+ -+# Name of the executable. -+as_me=`$as_basename -- "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ -+# CDPATH. -+$as_unset CDPATH -+ -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line after each line using $LINENO; the second 'sed' -+ # does the real work. The second script uses 'N' to pair each -+ # line-number line with the line containing $LINENO, and appends -+ # trailing '-' during substitution so that $LINENO is not a special -+ # case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # scripts with optimization help from Paolo Bonzini. Blame Lee -+ # E. McMahon (1931-1989) for sed's syntax. :-) -+ sed -n ' -+ p -+ /[$]LINENO/= -+ ' <$as_myself | -+ sed ' -+ s/[$]LINENO.*/&-/ -+ t lineno -+ b -+ :lineno -+ N -+ :loop -+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ -+ t loop -+ s/-\n.*// -+ ' >$as_me.lineno && -+ chmod +x "$as_me.lineno" || -+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensitive to this). -+ . "./$as_me.lineno" -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in -+-n*) -+ case `echo 'x\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ *) ECHO_C='\c';; -+ esac;; -+*) -+ ECHO_N='-n';; -+esac -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+rm -f conf$$ conf$$.exe conf$$.file -+if test -d conf$$.dir; then -+ rm -f conf$$.dir/conf$$.file -+else -+ rm -f conf$$.dir -+ mkdir conf$$.dir 2>/dev/null -+fi -+if (echo >conf$$.file) 2>/dev/null; then -+ if ln -s conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s='ln -s' -+ # ... but there are two gotchas: -+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. -+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -+ # In both cases, we have to default to `cp -p'. -+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -+ as_ln_s='cp -p' -+ elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+ else -+ as_ln_s='cp -p' -+ fi -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -+rmdir conf$$.dir 2>/dev/null -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p=: -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+if test -x / >/dev/null 2>&1; then -+ as_test_x='test -x' -+else -+ if ls -dL / >/dev/null 2>&1; then -+ as_ls_L_option=L -+ else -+ as_ls_L_option= -+ fi -+ as_test_x=' -+ eval sh -c '\'' -+ if test -d "$1"; then -+ test -d "$1/."; -+ else -+ case $1 in -+ -*)set "./$1";; -+ esac; -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in -+ ???[sx]*):;;*)false;;esac;fi -+ '\'' sh -+ ' -+fi -+as_executable_p=$as_test_x -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+exec 6>&1 -+ -+# Save the log message, to keep $[0] and so on meaningful, and to -+# report actual input values of CONFIG_FILES etc. instead of their -+# values after options handling. -+ac_log=" -+This file was extended by pixman $as_me 0.10.0, which was -+generated by GNU Autoconf 2.63. Invocation command line was -+ -+ CONFIG_FILES = $CONFIG_FILES -+ CONFIG_HEADERS = $CONFIG_HEADERS -+ CONFIG_LINKS = $CONFIG_LINKS -+ CONFIG_COMMANDS = $CONFIG_COMMANDS -+ $ $0 $@ -+ -+on `(hostname || uname -n) 2>/dev/null | sed 1q` -+" -+ -+# Files that config.status was made for. -+config_files=" pixman-1.pc Makefile pixman/Makefile pixman/pixman-version.h" -+config_headers=" config.h" -+config_commands=" depfiles libtool" -+ -+ac_cs_usage="\ -+\`$as_me' instantiates files from templates according to the -+current configuration. -+ -+Usage: $0 [OPTION]... [FILE]... -+ -+ -h, --help print this help, then exit -+ -V, --version print version number and configuration settings, then exit -+ -q, --quiet, --silent -+ do not print progress messages -+ -d, --debug don't remove temporary files -+ --recheck update $as_me by reconfiguring in the same conditions -+ --file=FILE[:TEMPLATE] -+ instantiate the configuration file FILE -+ --header=FILE[:TEMPLATE] -+ instantiate the configuration header FILE -+ -+Configuration files: -+$config_files -+ -+Configuration headers: -+$config_headers -+ -+Configuration commands: -+$config_commands -+ -+Report bugs to ." -+ -+ac_cs_version="\ -+pixman config.status 0.10.0 -+configured by ./configure, generated by GNU Autoconf 2.63, -+ with options \"'--prefix=/opt/mono-2.10'\" -+ -+Copyright (C) 2008 Free Software Foundation, Inc. -+This config.status script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it." -+ -+ac_pwd='/home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman' -+srcdir='.' -+INSTALL='/usr/bin/install -c' -+MKDIR_P='/bin/mkdir -p' -+AWK='gawk' -+test -n "$AWK" || AWK=awk -+# The default lists apply if the user does not specify any file. -+ac_need_defaults=: -+while test $# != 0 -+do -+ case $1 in -+ --*=*) -+ ac_option=`expr "X$1" : 'X\([^=]*\)='` -+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` -+ ac_shift=: -+ ;; -+ *) -+ ac_option=$1 -+ ac_optarg=$2 -+ ac_shift=shift -+ ;; -+ esac -+ -+ case $ac_option in -+ # Handling of the options. -+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -+ ac_cs_recheck=: ;; -+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) -+ $as_echo "$ac_cs_version"; exit ;; -+ --debug | --debu | --deb | --de | --d | -d ) -+ debug=: ;; -+ --file | --fil | --fi | --f ) -+ $ac_shift -+ case $ac_optarg in -+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ esac -+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" -+ ac_need_defaults=false;; -+ --header | --heade | --head | --hea ) -+ $ac_shift -+ case $ac_optarg in -+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ esac -+ CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" -+ ac_need_defaults=false;; -+ --he | --h) -+ # Conflict between --help and --header -+ { $as_echo "$as_me: error: ambiguous option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; };; -+ --help | --hel | -h ) -+ $as_echo "$ac_cs_usage"; exit ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil | --si | --s) -+ ac_cs_silent=: ;; -+ -+ # This is an error. -+ -*) { $as_echo "$as_me: error: unrecognized option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } ;; -+ -+ *) ac_config_targets="$ac_config_targets $1" -+ ac_need_defaults=false ;; -+ -+ esac -+ shift -+done -+ -+ac_configure_extra_args= -+ -+if $ac_cs_silent; then -+ exec 6>/dev/null -+ ac_configure_extra_args="$ac_configure_extra_args --silent" -+fi -+ -+if $ac_cs_recheck; then -+ set X '/bin/bash' './configure' '--prefix=/opt/mono-2.10' $ac_configure_extra_args --no-create --no-recursion -+ shift -+ $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 -+ CONFIG_SHELL='/bin/bash' -+ export CONFIG_SHELL -+ exec "$@" -+fi -+ -+exec 5>>config.log -+{ -+ echo -+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -+## Running $as_me. ## -+_ASBOX -+ $as_echo "$ac_log" -+} >&5 -+ -+# -+# INIT-COMMANDS -+# -+AMDEP_TRUE="" ac_aux_dir="." -+ -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -+double_quote_subst='s/\(["`\\]\)/\\\1/g' -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+macro_version='2.2.6' -+macro_revision='1.3012' -+enable_shared='yes' -+enable_static='yes' -+pic_mode='default' -+enable_fast_install='yes' -+host_alias='' -+host='x86_64-unknown-linux-gnu' -+host_os='linux-gnu' -+build_alias='' -+build='x86_64-unknown-linux-gnu' -+build_os='linux-gnu' -+SED='/bin/sed' -+Xsed='/bin/sed -e 1s/^X//' -+GREP='/bin/grep' -+EGREP='/bin/grep -E' -+FGREP='/bin/grep -F' -+LD='/usr/bin/ld -m elf_x86_64' -+NM='/usr/bin/nm -B' -+LN_S='ln -s' -+max_cmd_len='1572864' -+ac_objext='o' -+exeext='' -+lt_unset='unset' -+lt_SP2NL='tr \040 \012' -+lt_NL2SP='tr \015\012 \040\040' -+reload_flag=' -r' -+reload_cmds='$LD$reload_flag -o $output$reload_objs' -+OBJDUMP='objdump' -+deplibs_check_method='pass_all' -+file_magic_cmd='$MAGIC_CMD' -+AR='ar' -+AR_FLAGS='cru' -+STRIP='strip' -+RANLIB='ranlib' -+old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $oldlib' -+old_postuninstall_cmds='' -+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $oldlib' -+CC='gcc' -+CFLAGS='-g -O2 -Wall -fvisibility=hidden' -+compiler='gcc' -+GCC='yes' -+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' -+lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' -+lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' -+objdir='.libs' -+SHELL='/bin/bash' -+ECHO='echo' -+MAGIC_CMD='file' -+lt_prog_compiler_no_builtin_flag=' -fno-builtin' -+lt_prog_compiler_wl='-Wl,' -+lt_prog_compiler_pic=' -fPIC -DPIC' -+lt_prog_compiler_static='-static' -+lt_cv_prog_compiler_c_o='yes' -+need_locks='no' -+DSYMUTIL='' -+NMEDIT='' -+LIPO='' -+OTOOL='' -+OTOOL64='' -+libext='a' -+shrext_cmds='.so' -+extract_expsyms_cmds='' -+archive_cmds_need_lc='no' -+enable_shared_with_static_runtimes='no' -+export_dynamic_flag_spec='${wl}--export-dynamic' -+whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+compiler_needs_object='no' -+old_archive_from_new_cmds='' -+old_archive_from_expsyms_cmds='' -+archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+module_cmds='' -+module_expsym_cmds='' -+with_gnu_ld='yes' -+allow_undefined_flag='' -+no_undefined_flag='' -+hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+hardcode_libdir_flag_spec_ld='' -+hardcode_libdir_separator='' -+hardcode_direct='no' -+hardcode_direct_absolute='no' -+hardcode_minus_L='no' -+hardcode_shlibpath_var='unsupported' -+hardcode_automatic='no' -+inherit_rpath='no' -+link_all_deplibs='unknown' -+fix_srcfile_path='' -+always_export_symbols='no' -+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -+include_expsyms='' -+prelink_cmds='' -+file_list_spec='' -+variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' -+need_lib_prefix='no' -+need_version='no' -+version_type='linux' -+runpath_var='LD_RUN_PATH' -+shlibpath_var='LD_LIBRARY_PATH' -+shlibpath_overrides_runpath='no' -+libname_spec='lib$name' -+library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+soname_spec='${libname}${release}${shared_ext}$major' -+postinstall_cmds='' -+postuninstall_cmds='' -+finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+finish_eval='' -+hardcode_into_libs='yes' -+sys_lib_search_path_spec='/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 /usr/lib/x86_64-linux-gnu /lib /usr/lib' -+sys_lib_dlsearch_path_spec='/lib /usr/lib /usr/lib/fglrx /usr/lib32/fglrx /lib32 /usr/lib32 /usr/lib32/alsa-lib /usr/lib/alsa-lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu ' -+hardcode_action='immediate' -+enable_dlopen='unknown' -+enable_dlopen_self='unknown' -+enable_dlopen_self_static='unknown' -+old_striplib='strip --strip-debug' -+striplib='strip --strip-unneeded' -+ -+LTCC='gcc' -+LTCFLAGS='-g -O2' -+compiler='gcc' -+ -+# Quote evaled strings. -+for var in SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd AR AR_FLAGS STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix SHELL ECHO lt_prog_compiler_no_builtin_flag lt_prog_compiler_wl lt_prog_compiler_pic lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_flag_spec_ld hardcode_libdir_separator fix_srcfile_path exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec finish_eval old_striplib striplib; do -+ case `eval \\$ECHO "X\\$$var"` in -+ *[\\\`\"\$]*) -+ eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\$$var\\\"" -+ ;; -+ esac -+done -+ -+# Double-quote double-evaled strings. -+for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec; do -+ case `eval \\$ECHO "X\\$$var"` in -+ *[\\\`\"\$]*) -+ eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\$$var\\\"" -+ ;; -+ esac -+done -+ -+# Fix-up fallback echo if it was mangled by the above quoting rules. -+case $lt_ECHO in -+*'\$0 --fallback-echo"') lt_ECHO=`$ECHO "X$lt_ECHO" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ;; -+esac -+ -+ac_aux_dir='.' -+xsi_shell='yes' -+lt_shell_append='yes' -+ -+# See if we are running on zsh, and set the options which allow our -+# commands through without removal of \ escapes INIT. -+if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+fi -+ -+ -+ PACKAGE='pixman' -+ VERSION='0.10.0' -+ TIMESTAMP='' -+ RM='rm -f' -+ ofile='libtool' -+ -+ -+ -+ -+ -+# Handling of arguments. -+for ac_config_target in $ac_config_targets -+do -+ case $ac_config_target in -+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; -+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; -+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; -+ "pixman-1.pc") CONFIG_FILES="$CONFIG_FILES pixman-1.pc" ;; -+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; -+ "pixman/Makefile") CONFIG_FILES="$CONFIG_FILES pixman/Makefile" ;; -+ "pixman/pixman-version.h") CONFIG_FILES="$CONFIG_FILES pixman/pixman-version.h" ;; -+ -+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+done -+ -+ -+# If the user did not use the arguments to specify the items to instantiate, -+# then the envvar interface is used. Set only those that are not. -+# We use the long form for the default assignment because of an extremely -+# bizarre bug on SunOS 4.1.3. -+if $ac_need_defaults; then -+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -+fi -+ -+# Have a temporary directory for convenience. Make it in the build tree -+# simply because there is no reason against having it here, and in addition, -+# creating and moving files from /tmp can sometimes cause problems. -+# Hook for its removal unless debugging. -+# Note that there is a small window in which the directory will not be cleaned: -+# after its creation but before its name has been assigned to `$tmp'. -+$debug || -+{ -+ tmp= -+ trap 'exit_status=$? -+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -+' 0 -+ trap '{ (exit 1); exit 1; }' 1 2 13 15 -+} -+# Create a (secure) tmp directory for tmp files. -+ -+{ -+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && -+ test -n "$tmp" && test -d "$tmp" -+} || -+{ -+ tmp=./conf$$-$RANDOM -+ (umask 077 && mkdir "$tmp") -+} || -+{ -+ $as_echo "$as_me: cannot create a temporary directory in ." >&2 -+ { (exit 1); exit 1; } -+} -+ -+# Set up the scripts for CONFIG_FILES section. -+# No need to generate them if there are no CONFIG_FILES. -+# This happens for instance with `./config.status config.h'. -+if test -n "$CONFIG_FILES"; then -+ -+ -+ac_cr=' ' -+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then -+ ac_cs_awk_cr='\\r' -+else -+ ac_cs_awk_cr=$ac_cr -+fi -+ -+echo 'BEGIN {' >"$tmp/subs1.awk" && -+cat >>"$tmp/subs1.awk" <<\_ACAWK && -+S["LTLIBOBJS"]="" -+S["LIBOBJS"]="" -+S["DEP_LIBS"]="" -+S["DEP_CFLAGS"]="" -+S["HAVE_GTK_FALSE"]="#" -+S["HAVE_GTK_TRUE"]="" -+S["GTK_LIBS"]="-pthread -L/usr/lib/x86_64-linux-gnu -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -l"\ -+"pango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 " -+S["GTK_CFLAGS"]="-pthread -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/i"\ -+"nclude -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gdk-pi"\ -+"xbuf-2.0 -I/usr/include/pixman-1 " -+S["PKG_CONFIG"]="/usr/bin/pkg-config" -+S["SSE_CFLAGS"]="-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" -+S["MMX_CFLAGS"]="-msse -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" -+S["USE_SSE2_FALSE"]="#" -+S["USE_SSE2_TRUE"]="" -+S["USE_SSE_FALSE"]="#" -+S["USE_SSE_TRUE"]="" -+S["USE_MMX_FALSE"]="#" -+S["USE_MMX_TRUE"]="" -+S["LT_VERSION_INFO"]="10:0:10" -+S["PIXMAN_VERSION_MICRO"]="0" -+S["PIXMAN_VERSION_MINOR"]="10" -+S["PIXMAN_VERSION_MAJOR"]="0" -+S["CPP"]="gcc -E" -+S["OTOOL64"]="" -+S["OTOOL"]="" -+S["LIPO"]="" -+S["NMEDIT"]="" -+S["DSYMUTIL"]="" -+S["lt_ECHO"]="echo" -+S["RANLIB"]="ranlib" -+S["AR"]="ar" -+S["OBJDUMP"]="objdump" -+S["LN_S"]="ln -s" -+S["NM"]="/usr/bin/nm -B" -+S["ac_ct_DUMPBIN"]="" -+S["DUMPBIN"]="" -+S["LD"]="/usr/bin/ld -m elf_x86_64" -+S["FGREP"]="/bin/grep -F" -+S["EGREP"]="/bin/grep -E" -+S["GREP"]="/bin/grep" -+S["SED"]="/bin/sed" -+S["host_os"]="linux-gnu" -+S["host_vendor"]="unknown" -+S["host_cpu"]="x86_64" -+S["host"]="x86_64-unknown-linux-gnu" -+S["build_os"]="linux-gnu" -+S["build_vendor"]="unknown" -+S["build_cpu"]="x86_64" -+S["build"]="x86_64-unknown-linux-gnu" -+S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" -+S["am__fastdepCC_FALSE"]="#" -+S["am__fastdepCC_TRUE"]="" -+S["CCDEPMODE"]="depmode=gcc3" -+S["AMDEPBACKSLASH"]="\\" -+S["AMDEP_FALSE"]="#" -+S["AMDEP_TRUE"]="" -+S["am__quote"]="" -+S["am__include"]="include" -+S["DEPDIR"]=".deps" -+S["OBJEXT"]="o" -+S["EXEEXT"]="" -+S["ac_ct_CC"]="gcc" -+S["CPPFLAGS"]="" -+S["LDFLAGS"]="" -+S["CFLAGS"]="-g -O2 -Wall -fvisibility=hidden" -+S["CC"]="gcc" -+S["am__untar"]="${AMTAR} xf -" -+S["am__tar"]="${AMTAR} chof - \"$$tardir\"" -+S["AMTAR"]="${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run tar" -+S["am__leading_dot"]="." -+S["SET_MAKE"]="" -+S["AWK"]="gawk" -+S["mkdir_p"]="/bin/mkdir -p" -+S["MKDIR_P"]="/bin/mkdir -p" -+S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" -+S["STRIP"]="strip" -+S["install_sh"]="$(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/install-sh" -+S["MAKEINFO"]="${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run makeinfo" -+S["AUTOHEADER"]="${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoheader" -+S["AUTOMAKE"]="${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run automake-1.10" -+S["AUTOCONF"]="${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoconf" -+S["ACLOCAL"]="${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run aclocal-1.10" -+S["VERSION"]="0.10.0" -+S["PACKAGE"]="pixman" -+S["CYGPATH_W"]="echo" -+S["am__isrc"]="" -+S["INSTALL_DATA"]="${INSTALL} -m 644" -+S["INSTALL_SCRIPT"]="${INSTALL}" -+S["INSTALL_PROGRAM"]="${INSTALL}" -+S["target_alias"]="" -+S["host_alias"]="" -+S["build_alias"]="" -+S["LIBS"]="" -+S["ECHO_T"]="" -+S["ECHO_N"]="-n" -+S["ECHO_C"]="" -+S["DEFS"]="-DHAVE_CONFIG_H" -+S["mandir"]="${datarootdir}/man" -+S["localedir"]="${datarootdir}/locale" -+S["libdir"]="${exec_prefix}/lib" -+S["psdir"]="${docdir}" -+S["pdfdir"]="${docdir}" -+S["dvidir"]="${docdir}" -+S["htmldir"]="${docdir}" -+S["infodir"]="${datarootdir}/info" -+S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" -+S["oldincludedir"]="/usr/include" -+S["includedir"]="${prefix}/include" -+S["localstatedir"]="${prefix}/var" -+S["sharedstatedir"]="${prefix}/com" -+S["sysconfdir"]="${prefix}/etc" -+S["datadir"]="${datarootdir}" -+S["datarootdir"]="${prefix}/share" -+S["libexecdir"]="${exec_prefix}/libexec" -+S["sbindir"]="${exec_prefix}/sbin" -+S["bindir"]="${exec_prefix}/bin" -+S["program_transform_name"]="s,x,x," -+S["prefix"]="/opt/mono-2.10" -+S["exec_prefix"]="${prefix}" -+S["PACKAGE_BUGREPORT"]="\"sandmann@daimi.au.dk\"" -+S["PACKAGE_STRING"]="pixman 0.10.0" -+S["PACKAGE_VERSION"]="0.10.0" -+S["PACKAGE_TARNAME"]="pixman" -+S["PACKAGE_NAME"]="pixman" -+S["PATH_SEPARATOR"]=":" -+S["SHELL"]="/bin/bash" -+_ACAWK -+cat >>"$tmp/subs1.awk" <<_ACAWK && -+ for (key in S) S_is_set[key] = 1 -+ FS = "" -+ -+} -+{ -+ line = $ 0 -+ nfields = split(line, field, "@") -+ substed = 0 -+ len = length(field[1]) -+ for (i = 2; i < nfields; i++) { -+ key = field[i] -+ keylen = length(key) -+ if (S_is_set[key]) { -+ value = S[key] -+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) -+ len += length(value) + length(field[++i]) -+ substed = 1 -+ } else -+ len += 1 + keylen -+ } -+ -+ print line -+} -+ -+_ACAWK -+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then -+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -+else -+ cat -+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ -+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 -+$as_echo "$as_me: error: could not setup config files machinery" >&2;} -+ { (exit 1); exit 1; }; } -+fi # test -n "$CONFIG_FILES" -+ -+# Set up the scripts for CONFIG_HEADERS section. -+# No need to generate them if there are no CONFIG_HEADERS. -+# This happens for instance with `./config.status Makefile'. -+if test -n "$CONFIG_HEADERS"; then -+cat >"$tmp/defines.awk" <<\_ACAWK || -+BEGIN { -+D["PACKAGE_NAME"]=" \"pixman\"" -+D["PACKAGE_TARNAME"]=" \"pixman\"" -+D["PACKAGE_VERSION"]=" \"0.10.0\"" -+D["PACKAGE_STRING"]=" \"pixman 0.10.0\"" -+D["PACKAGE_BUGREPORT"]=" \"\"sandmann@daimi.au.dk\"\"" -+D["PACKAGE"]=" \"pixman\"" -+D["VERSION"]=" \"0.10.0\"" -+D["STDC_HEADERS"]=" 1" -+D["HAVE_SYS_TYPES_H"]=" 1" -+D["HAVE_SYS_STAT_H"]=" 1" -+D["HAVE_STDLIB_H"]=" 1" -+D["HAVE_STRING_H"]=" 1" -+D["HAVE_MEMORY_H"]=" 1" -+D["HAVE_STRINGS_H"]=" 1" -+D["HAVE_INTTYPES_H"]=" 1" -+D["HAVE_STDINT_H"]=" 1" -+D["HAVE_UNISTD_H"]=" 1" -+D["HAVE_DLFCN_H"]=" 1" -+D["LT_OBJDIR"]=" \".libs/\"" -+D["USE_MMX"]=" 1" -+D["USE_SSE"]=" 1" -+D["USE_SSE2"]=" 1" -+ for (key in D) D_is_set[key] = 1 -+ FS = "" -+} -+/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { -+ line = $ 0 -+ split(line, arg, " ") -+ if (arg[1] == "#") { -+ defundef = arg[2] -+ mac1 = arg[3] -+ } else { -+ defundef = substr(arg[1], 2) -+ mac1 = arg[2] -+ } -+ split(mac1, mac2, "(") #) -+ macro = mac2[1] -+ prefix = substr(line, 1, index(line, defundef) - 1) -+ if (D_is_set[macro]) { -+ # Preserve the white space surrounding the "#". -+ print prefix "define", macro P[macro] D[macro] -+ next -+ } else { -+ # Replace #undef with comments. This is necessary, for example, -+ # in the case of _POSIX_SOURCE, which is predefined and required -+ # on some systems where configure will not decide to define it. -+ if (defundef == "undef") { -+ print "/*", prefix defundef, macro, "*/" -+ next -+ } -+ } -+} -+{ print } -+_ACAWK -+ { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 -+$as_echo "$as_me: error: could not setup config headers machinery" >&2;} -+ { (exit 1); exit 1; }; } -+fi # test -n "$CONFIG_HEADERS" -+ -+ -+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -+shift -+for ac_tag -+do -+ case $ac_tag in -+ :[FHLC]) ac_mode=$ac_tag; continue;; -+ esac -+ case $ac_mode$ac_tag in -+ :[FHL]*:*);; -+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 -+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} -+ { (exit 1); exit 1; }; };; -+ :[FH]-) ac_tag=-:-;; -+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; -+ esac -+ ac_save_IFS=$IFS -+ IFS=: -+ set x $ac_tag -+ IFS=$ac_save_IFS -+ shift -+ ac_file=$1 -+ shift -+ -+ case $ac_mode in -+ :L) ac_source=$1;; -+ :[FH]) -+ ac_file_inputs= -+ for ac_f -+ do -+ case $ac_f in -+ -) ac_f="$tmp/stdin";; -+ *) # Look for the file first in the build tree, then in the source tree -+ # (if the path is not absolute). The absolute path cannot be DOS-style, -+ # because $ac_f cannot contain `:'. -+ test -f "$ac_f" || -+ case $ac_f in -+ [\\/$]*) false;; -+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; -+ esac || -+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac -+ ac_file_inputs="$ac_file_inputs '$ac_f'" -+ done -+ -+ # Let's still pretend it is `configure' which instantiates (i.e., don't -+ # use $as_me), people would be surprised to read: -+ # /* config.h. Generated by config.status. */ -+ configure_input='Generated from '` -+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' -+ `' by configure.' -+ if test x"$ac_file" != x-; then -+ configure_input="$ac_file. $configure_input" -+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 -+$as_echo "$as_me: creating $ac_file" >&6;} -+ fi -+ # Neutralize special characters interpreted by sed in replacement strings. -+ case $configure_input in #( -+ *\&* | *\|* | *\\* ) -+ ac_sed_conf_input=`$as_echo "$configure_input" | -+ sed 's/[\\\\&|]/\\\\&/g'`;; #( -+ *) ac_sed_conf_input=$configure_input;; -+ esac -+ -+ case $ac_tag in -+ *:-:* | *:-) cat >"$tmp/stdin" \ -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } ;; -+ esac -+ ;; -+ esac -+ -+ ac_dir=`$as_dirname -- "$ac_file" || -+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_file" : 'X\(//\)[^/]' \| \ -+ X"$ac_file" : 'X\(//\)$' \| \ -+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$ac_file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ { as_dir="$ac_dir" -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} -+ { (exit 1); exit 1; }; }; } -+ ac_builddir=. -+ -+case "$ac_dir" in -+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -+*) -+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` -+ # A ".." for each directory in $ac_dir_suffix. -+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` -+ case $ac_top_builddir_sub in -+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; -+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; -+ esac ;; -+esac -+ac_abs_top_builddir=$ac_pwd -+ac_abs_builddir=$ac_pwd$ac_dir_suffix -+# for backward compatibility: -+ac_top_builddir=$ac_top_build_prefix -+ -+case $srcdir in -+ .) # We are building in place. -+ ac_srcdir=. -+ ac_top_srcdir=$ac_top_builddir_sub -+ ac_abs_top_srcdir=$ac_pwd ;; -+ [\\/]* | ?:[\\/]* ) # Absolute name. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir -+ ac_abs_top_srcdir=$srcdir ;; -+ *) # Relative name. -+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_build_prefix$srcdir -+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -+esac -+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -+ -+ -+ case $ac_mode in -+ :F) -+ # -+ # CONFIG_FILE -+ # -+ -+ case $INSTALL in -+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; -+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; -+ esac -+ ac_MKDIR_P=$MKDIR_P -+ case $MKDIR_P in -+ [\\/$]* | ?:[\\/]* ) ;; -+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; -+ esac -+# If the template does not know about datarootdir, expand it. -+# FIXME: This hack should be removed a few years after 2.60. -+ac_datarootdir_hack=; ac_datarootdir_seen= -+ -+ac_sed_dataroot=' -+/datarootdir/ { -+ p -+ q -+} -+/@datadir@/p -+/@docdir@/p -+/@infodir@/p -+/@localedir@/p -+/@mandir@/p -+' -+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -+*datarootdir*) ac_datarootdir_seen=yes;; -+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -+ ac_datarootdir_hack=' -+ s&@datadir@&${datarootdir}&g -+ s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g -+ s&@infodir@&${datarootdir}/info&g -+ s&@localedir@&${datarootdir}/locale&g -+ s&@mandir@&${datarootdir}/man&g -+ s&\${datarootdir}&${prefix}/share&g' ;; -+esac -+ac_sed_extra="/^[ ]*VPATH[ ]*=/{ -+s/:*\$(srcdir):*/:/ -+s/:*\${srcdir}:*/:/ -+s/:*@srcdir@:*/:/ -+s/^\([^=]*=[ ]*\):*/\1/ -+s/:*$// -+s/^[^=]*=[ ]*$// -+} -+ -+:t -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+s|@configure_input@|$ac_sed_conf_input|;t t -+s&@top_builddir@&$ac_top_builddir_sub&;t t -+s&@top_build_prefix@&$ac_top_build_prefix&;t t -+s&@srcdir@&$ac_srcdir&;t t -+s&@abs_srcdir@&$ac_abs_srcdir&;t t -+s&@top_srcdir@&$ac_top_srcdir&;t t -+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -+s&@builddir@&$ac_builddir&;t t -+s&@abs_builddir@&$ac_abs_builddir&;t t -+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -+s&@INSTALL@&$ac_INSTALL&;t t -+s&@MKDIR_P@&$ac_MKDIR_P&;t t -+$ac_datarootdir_hack -+" -+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } -+ -+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && -+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && -+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && -+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined." >&5 -+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined." >&2;} -+ -+ rm -f "$tmp/stdin" -+ case $ac_file in -+ -) cat "$tmp/out" && rm -f "$tmp/out";; -+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; -+ esac \ -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } -+ ;; -+ :H) -+ # -+ # CONFIG_HEADER -+ # -+ if test x"$ac_file" != x-; then -+ { -+ $as_echo "/* $configure_input */" \ -+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" -+ } >"$tmp/config.h" \ -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } -+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then -+ { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -+$as_echo "$as_me: $ac_file is unchanged" >&6;} -+ else -+ rm -f "$ac_file" -+ mv "$tmp/config.h" "$ac_file" \ -+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -+$as_echo "$as_me: error: could not create $ac_file" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ else -+ $as_echo "/* $configure_input */" \ -+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ -+ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 -+$as_echo "$as_me: error: could not create -" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+# Compute "$ac_file"'s index in $config_headers. -+_am_arg="$ac_file" -+_am_stamp_count=1 -+for _am_header in $config_headers :; do -+ case $_am_header in -+ $_am_arg | $_am_arg:* ) -+ break ;; -+ * ) -+ _am_stamp_count=`expr $_am_stamp_count + 1` ;; -+ esac -+done -+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$_am_arg" : 'X\(//\)[^/]' \| \ -+ X"$_am_arg" : 'X\(//\)$' \| \ -+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$_am_arg" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'`/stamp-h$_am_stamp_count -+ ;; -+ -+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 -+$as_echo "$as_me: executing $ac_file commands" >&6;} -+ ;; -+ esac -+ -+ -+ case $ac_file$ac_mode in -+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do -+ # Strip MF so we end up with the name of the file. -+ mf=`echo "$mf" | sed -e 's/:.*$//'` -+ # Check whether this is an Automake generated Makefile or not. -+ # We used to match only the files named `Makefile.in', but -+ # some people rename them; so instead we look at the file content. -+ # Grep'ing the first line is not enough: some people post-process -+ # each Makefile.in and add a new line on top of each file to say so. -+ # Grep'ing the whole file is not good either: AIX grep has a line -+ # limit of 2048, but all sed's we know have understand at least 4000. -+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then -+ dirpart=`$as_dirname -- "$mf" || -+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$mf" : 'X\(//\)[^/]' \| \ -+ X"$mf" : 'X\(//\)$' \| \ -+ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$mf" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ else -+ continue -+ fi -+ # Extract the definition of DEPDIR, am__include, and am__quote -+ # from the Makefile without running `make'. -+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` -+ test -z "$DEPDIR" && continue -+ am__include=`sed -n 's/^am__include = //p' < "$mf"` -+ test -z "am__include" && continue -+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -+ # When using ansi2knr, U may be empty or an underscore; expand it -+ U=`sed -n 's/^U = //p' < "$mf"` -+ # Find all dependency output files, they are included files with -+ # $(DEPDIR) in their names. We invoke sed twice because it is the -+ # simplest approach to changing $(DEPDIR) to its actual value in the -+ # expansion. -+ for file in `sed -n " -+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ # Make sure the directory exists. -+ test -f "$dirpart/$file" && continue -+ fdir=`$as_dirname -- "$file" || -+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$file" : 'X\(//\)[^/]' \| \ -+ X"$file" : 'X\(//\)$' \| \ -+ X"$file" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ { as_dir=$dirpart/$fdir -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} -+ { (exit 1); exit 1; }; }; } -+ # echo "creating $dirpart/$file" -+ echo '# dummy' > "$dirpart/$file" -+ done -+done -+ ;; -+ "libtool":C) -+ -+ # See if we are running on zsh, and set the options which allow our -+ # commands through without removal of \ escapes. -+ if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+ fi -+ -+ cfgfile="${ofile}T" -+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 -+ $RM "$cfgfile" -+ -+ cat <<_LT_EOF >> "$cfgfile" -+#! $SHELL -+ -+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -+# 2006, 2007, 2008 Free Software Foundation, Inc. -+# Written by Gordon Matzigkeit, 1996 -+# -+# This file is part of GNU Libtool. -+# -+# GNU Libtool 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. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -+# obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+ -+# The names of the tagged configurations supported by this script. -+available_tags="" -+ -+# ### BEGIN LIBTOOL CONFIG -+ -+# Which release of libtool.m4 was used? -+macro_version=$macro_version -+macro_revision=$macro_revision -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# What type of objects to build. -+pic_mode=$pic_mode -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# A sed program that does not truncate output. -+SED=$lt_SED -+ -+# Sed that helps us avoid accidentally triggering echo(1) options like -n. -+Xsed="\$SED -e 1s/^X//" -+ -+# A grep program that handles long lines. -+GREP=$lt_GREP -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# A literal string matcher. -+FGREP=$lt_FGREP -+ -+# A BSD- or MS-compatible name lister. -+NM=$lt_NM -+ -+# Whether we need soft or hard links. -+LN_S=$lt_LN_S -+ -+# What is the maximum length of a command? -+max_cmd_len=$max_cmd_len -+ -+# Object file suffix (normally "o"). -+objext=$ac_objext -+ -+# Executable file suffix (normally ""). -+exeext=$exeext -+ -+# whether the shell understands "unset". -+lt_unset=$lt_unset -+ -+# turn spaces into newlines. -+SP2NL=$lt_lt_SP2NL -+ -+# turn newlines into spaces. -+NL2SP=$lt_lt_NL2SP -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# An object symbol dumper. -+OBJDUMP=$lt_OBJDUMP -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == "file_magic". -+file_magic_cmd=$lt_file_magic_cmd -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A symbol stripping program. -+STRIP=$lt_STRIP -+ -+# Commands used to install an old-style archive. -+RANLIB=$lt_RANLIB -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# A C compiler. -+LTCC=$lt_CC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_CFLAGS -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration. -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair. -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# Transform the output of nm in a C name address pair when lib prefix is needed. -+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# An echo program that does not interpret backslashes. -+ECHO=$lt_ECHO -+ -+# Used to examine libraries when file_magic_cmd begins with "file". -+MAGIC_CMD=$MAGIC_CMD -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -+DSYMUTIL=$lt_DSYMUTIL -+ -+# Tool to change global to local symbols on Mac OS X. -+NMEDIT=$lt_NMEDIT -+ -+# Tool to manipulate fat objects and archives on Mac OS X. -+LIPO=$lt_LIPO -+ -+# ldd/readelf like tool for Mach-O binaries on Mac OS X. -+OTOOL=$lt_OTOOL -+ -+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -+OTOOL64=$lt_OTOOL64 -+ -+# Old archive suffix (normally "a"). -+libext=$libext -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds=$lt_shrext_cmds -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at link time. -+variables_saved_for_relink=$lt_variables_saved_for_relink -+ -+# Do we need the "lib" prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# Shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# List of archive names. First name is the real one, the rest are links. -+# The last name is the one that the linker finds with -lNAME -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Command to use after installation of a shared archive. -+postinstall_cmds=$lt_postinstall_cmds -+ -+# Command to use after uninstallation of a shared archive. -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# As "finish_cmds", except a single script fragment to be evaled but -+# not shown. -+finish_eval=$lt_finish_eval -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Compile-time system search path for libraries. -+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -+ -+# Run-time system search path for libraries. -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+ -+# The linker used to build libraries. -+LD=$lt_LD -+ -+# Commands used to build an old-style archive. -+old_archive_cmds=$lt_old_archive_cmds -+ -+# A language specific compiler. -+CC=$lt_compiler -+ -+# Is the compiler the GNU compiler? -+with_gcc=$GCC -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc -+ -+# Whether or not to disallow shared libs when runtime libs are static. -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_whole_archive_flag_spec -+ -+# Whether the compiler copes with passing no objects directly. -+compiler_needs_object=$lt_compiler_needs_object -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds -+ -+# Commands used to build a shared archive. -+archive_cmds=$lt_archive_cmds -+archive_expsym_cmds=$lt_archive_expsym_cmds -+ -+# Commands used to build a loadable module if different from building -+# a shared archive. -+module_cmds=$lt_module_cmds -+module_expsym_cmds=$lt_module_expsym_cmds -+ -+# Whether we are building with GNU ld or not. -+with_gnu_ld=$lt_with_gnu_ld -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag -+ -+# Flag that enforces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist -+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -+ -+# If ld is used when linking, flag to hardcode \$libdir into a binary -+# during linking. This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld -+ -+# Whether we need a single "-rpath" flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator -+ -+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -+# DIR into the resulting binary. -+hardcode_direct=$hardcode_direct -+ -+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -+# DIR into the resulting binary and the resulting library dependency is -+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -+# library is relocated. -+hardcode_direct_absolute=$hardcode_direct_absolute -+ -+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -+# into the resulting binary. -+hardcode_minus_L=$hardcode_minus_L -+ -+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -+# into the resulting binary. -+hardcode_shlibpath_var=$hardcode_shlibpath_var -+ -+# Set to "yes" if building a shared library automatically hardcodes DIR -+# into the library and all subsequent libraries and executables linked -+# against it. -+hardcode_automatic=$hardcode_automatic -+ -+# Set to yes if linker adds runtime paths of dependent libraries -+# to runtime path list. -+inherit_rpath=$inherit_rpath -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path=$lt_fix_srcfile_path -+ -+# Set to "yes" if exported symbols are required. -+always_export_symbols=$always_export_symbols -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_export_symbols_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_exclude_expsyms -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_include_expsyms -+ -+# Commands necessary for linking programs (against libraries) with templates. -+prelink_cmds=$lt_prelink_cmds -+ -+# Specify filename containing input files. -+file_list_spec=$lt_file_list_spec -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action -+ -+# ### END LIBTOOL CONFIG -+ -+_LT_EOF -+ -+ case $host_os in -+ aix3*) -+ cat <<\_LT_EOF >> "$cfgfile" -+# AIX sometimes has problems with the GCC collect2 program. For some -+# reason, if we set the COLLECT_NAMES environment variable, the problems -+# vanish in a puff of smoke. -+if test "X${COLLECT_NAMES+set}" != Xset; then -+ COLLECT_NAMES= -+ export COLLECT_NAMES -+fi -+_LT_EOF -+ ;; -+ esac -+ -+ -+ltmain="$ac_aux_dir/ltmain.sh" -+ -+ -+ # We use sed instead of cat because bash on DJGPP gets confused if -+ # if finds mixed CR/LF and LF-only lines. Since sed operates in -+ # text mode, it properly converts lines to CR/LF. This bash problem -+ # is reportedly fixed, but why not run on old versions too? -+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ -+ || (rm -f "$cfgfile"; exit 1) -+ -+ case $xsi_shell in -+ yes) -+ cat << \_LT_EOF >> "$cfgfile" -+ -+# func_dirname file append nondir_replacement -+# Compute the dirname of FILE. If nonempty, add APPEND to the result, -+# otherwise set result to NONDIR_REPLACEMENT. -+func_dirname () -+{ -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+} -+ -+# func_basename file -+func_basename () -+{ -+ func_basename_result="${1##*/}" -+} -+ -+# func_dirname_and_basename file append nondir_replacement -+# perform func_basename and func_dirname in a single function -+# call: -+# dirname: Compute the dirname of FILE. If nonempty, -+# add APPEND to the result, otherwise set result -+# to NONDIR_REPLACEMENT. -+# value returned in "$func_dirname_result" -+# basename: Compute filename of FILE. -+# value retuned in "$func_basename_result" -+# Implementation must be kept synchronized with func_dirname -+# and func_basename. For efficiency, we do not delegate to -+# those functions but instead duplicate the functionality here. -+func_dirname_and_basename () -+{ -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+ func_basename_result="${1##*/}" -+} -+ -+# func_stripname prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+func_stripname () -+{ -+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -+ # positional parameters, so assign one to ordinary parameter first. -+ func_stripname_result=${3} -+ func_stripname_result=${func_stripname_result#"${1}"} -+ func_stripname_result=${func_stripname_result%"${2}"} -+} -+ -+# func_opt_split -+func_opt_split () -+{ -+ func_opt_split_opt=${1%%=*} -+ func_opt_split_arg=${1#*=} -+} -+ -+# func_lo2o object -+func_lo2o () -+{ -+ case ${1} in -+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -+ *) func_lo2o_result=${1} ;; -+ esac -+} -+ -+# func_xform libobj-or-source -+func_xform () -+{ -+ func_xform_result=${1%.*}.lo -+} -+ -+# func_arith arithmetic-term... -+func_arith () -+{ -+ func_arith_result=$(( $* )) -+} -+ -+# func_len string -+# STRING may not start with a hyphen. -+func_len () -+{ -+ func_len_result=${#1} -+} -+ -+_LT_EOF -+ ;; -+ *) # Bourne compatible functions. -+ cat << \_LT_EOF >> "$cfgfile" -+ -+# func_dirname file append nondir_replacement -+# Compute the dirname of FILE. If nonempty, add APPEND to the result, -+# otherwise set result to NONDIR_REPLACEMENT. -+func_dirname () -+{ -+ # Extract subdirectory from the argument. -+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+} -+ -+# func_basename file -+func_basename () -+{ -+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -+} -+ -+ -+# func_stripname prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+# func_strip_suffix prefix name -+func_stripname () -+{ -+ case ${2} in -+ .*) func_stripname_result=`$ECHO "X${3}" \ -+ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; -+ *) func_stripname_result=`$ECHO "X${3}" \ -+ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; -+ esac -+} -+ -+# sed scripts: -+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -+my_sed_long_arg='1s/^-[^=]*=//' -+ -+# func_opt_split -+func_opt_split () -+{ -+ func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` -+ func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` -+} -+ -+# func_lo2o object -+func_lo2o () -+{ -+ func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` -+} -+ -+# func_xform libobj-or-source -+func_xform () -+{ -+ func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` -+} -+ -+# func_arith arithmetic-term... -+func_arith () -+{ -+ func_arith_result=`expr "$@"` -+} -+ -+# func_len string -+# STRING may not start with a hyphen. -+func_len () -+{ -+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -+} -+ -+_LT_EOF -+esac -+ -+case $lt_shell_append in -+ yes) -+ cat << \_LT_EOF >> "$cfgfile" -+ -+# func_append var value -+# Append VALUE to the end of shell variable VAR. -+func_append () -+{ -+ eval "$1+=\$2" -+} -+_LT_EOF -+ ;; -+ *) -+ cat << \_LT_EOF >> "$cfgfile" -+ -+# func_append var value -+# Append VALUE to the end of shell variable VAR. -+func_append () -+{ -+ eval "$1=\$$1\$2" -+} -+ -+_LT_EOF -+ ;; -+ esac -+ -+ -+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ -+ || (rm -f "$cfgfile"; exit 1) -+ -+ mv -f "$cfgfile" "$ofile" || -+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") -+ chmod +x "$ofile" -+ -+ ;; -+ -+ esac -+done # for ac_tag -+ -+ -+{ (exit 0); exit 0; } ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/libtool -@@ -0,0 +1,8893 @@ -+#! /bin/bash -+ -+# libtool - Provide generalized library-building support services. -+# Generated automatically by config.status (pixman) 0.10.0 -+# Libtool was configured on host lemon: -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -+# 2006, 2007, 2008 Free Software Foundation, Inc. -+# Written by Gordon Matzigkeit, 1996 -+# -+# This file is part of GNU Libtool. -+# -+# GNU Libtool 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. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -+# obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+ -+# The names of the tagged configurations supported by this script. -+available_tags="" -+ -+# ### BEGIN LIBTOOL CONFIG -+ -+# Which release of libtool.m4 was used? -+macro_version=2.2.6 -+macro_revision=1.3012 -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=yes -+ -+# Whether or not to build static libraries. -+build_old_libs=yes -+ -+# What type of objects to build. -+pic_mode=default -+ -+# Whether or not to optimize for fast installation. -+fast_install=yes -+ -+# The host system. -+host_alias= -+host=x86_64-unknown-linux-gnu -+host_os=linux-gnu -+ -+# The build system. -+build_alias= -+build=x86_64-unknown-linux-gnu -+build_os=linux-gnu -+ -+# A sed program that does not truncate output. -+SED="/bin/sed" -+ -+# Sed that helps us avoid accidentally triggering echo(1) options like -n. -+Xsed="$SED -e 1s/^X//" -+ -+# A grep program that handles long lines. -+GREP="/bin/grep" -+ -+# An ERE matcher. -+EGREP="/bin/grep -E" -+ -+# A literal string matcher. -+FGREP="/bin/grep -F" -+ -+# A BSD- or MS-compatible name lister. -+NM="/usr/bin/nm -B" -+ -+# Whether we need soft or hard links. -+LN_S="ln -s" -+ -+# What is the maximum length of a command? -+max_cmd_len=1572864 -+ -+# Object file suffix (normally "o"). -+objext=o -+ -+# Executable file suffix (normally ""). -+exeext= -+ -+# whether the shell understands "unset". -+lt_unset=unset -+ -+# turn spaces into newlines. -+SP2NL="tr \\040 \\012" -+ -+# turn newlines into spaces. -+NL2SP="tr \\015\\012 \\040\\040" -+ -+# How to create reloadable object files. -+reload_flag=" -r" -+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" -+ -+# An object symbol dumper. -+OBJDUMP="objdump" -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method="pass_all" -+ -+# Command to use when deplibs_check_method == "file_magic". -+file_magic_cmd="\$MAGIC_CMD" -+ -+# The archiver. -+AR="ar" -+AR_FLAGS="cru" -+ -+# A symbol stripping program. -+STRIP="strip" -+ -+# Commands used to install an old-style archive. -+RANLIB="ranlib" -+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" -+old_postuninstall_cmds="" -+ -+# A C compiler. -+LTCC="gcc" -+ -+# LTCC compiler flags. -+LTCFLAGS="-g -O2 -Wall -fvisibility=hidden" -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" -+ -+# Transform the output of nm in a proper C declaration. -+global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" -+ -+# Transform the output of nm in a C name address pair. -+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" -+ -+# Transform the output of nm in a C name address pair when lib prefix is needed. -+global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=.libs -+ -+# Shell to use when invoking shell scripts. -+SHELL="/bin/bash" -+ -+# An echo program that does not interpret backslashes. -+ECHO="echo" -+ -+# Used to examine libraries when file_magic_cmd begins with "file". -+MAGIC_CMD=file -+ -+# Must we lock files when doing compilation? -+need_locks="no" -+ -+# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -+DSYMUTIL="" -+ -+# Tool to change global to local symbols on Mac OS X. -+NMEDIT="" -+ -+# Tool to manipulate fat objects and archives on Mac OS X. -+LIPO="" -+ -+# ldd/readelf like tool for Mach-O binaries on Mac OS X. -+OTOOL="" -+ -+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -+OTOOL64="" -+ -+# Old archive suffix (normally "a"). -+libext=a -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds=".so" -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds="" -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at link time. -+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -+ -+# Do we need the "lib" prefix for modules? -+need_lib_prefix=no -+ -+# Do we need a version for libraries? -+need_version=no -+ -+# Library versioning type. -+version_type=linux -+ -+# Shared library runtime path variable. -+runpath_var=LD_RUN_PATH -+ -+# Shared library path variable. -+shlibpath_var=LD_LIBRARY_PATH -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=no -+ -+# Format of library name prefix. -+libname_spec="lib\$name" -+ -+# List of archive names. First name is the real one, the rest are links. -+# The last name is the one that the linker finds with -lNAME -+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" -+ -+# The coded name of the library, if different from the real name. -+soname_spec="\${libname}\${release}\${shared_ext}\$major" -+ -+# Command to use after installation of a shared archive. -+postinstall_cmds="" -+ -+# Command to use after uninstallation of a shared archive. -+postuninstall_cmds="" -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" -+ -+# As "finish_cmds", except a single script fragment to be evaled but -+# not shown. -+finish_eval="" -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=yes -+ -+# Compile-time system search path for libraries. -+sys_lib_search_path_spec="/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 /usr/lib/x86_64-linux-gnu /lib /usr/lib" -+ -+# Run-time system search path for libraries. -+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/fglrx /usr/lib32/fglrx /lib32 /usr/lib32 /usr/lib32/alsa-lib /usr/lib/alsa-lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " -+ -+# Whether dlopen is supported. -+dlopen_support=unknown -+ -+# Whether dlopen of programs is supported. -+dlopen_self=unknown -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=unknown -+ -+# Commands to strip libraries. -+old_striplib="strip --strip-debug" -+striplib="strip --strip-unneeded" -+ -+ -+# The linker used to build libraries. -+LD="/usr/bin/ld -m elf_x86_64" -+ -+# Commands used to build an old-style archive. -+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" -+ -+# A language specific compiler. -+CC="gcc" -+ -+# Is the compiler the GNU compiler? -+with_gcc=yes -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=" -fno-builtin" -+ -+# How to pass a linker flag through the compiler. -+wl="-Wl," -+ -+# Additional compiler flags for building library objects. -+pic_flag=" -fPIC -DPIC" -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag="-static" -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o="yes" -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=no -+ -+# Whether or not to disallow shared libs when runtime libs are static. -+allow_libtool_libs_with_static_runtimes=no -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec="\${wl}--export-dynamic" -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" -+ -+# Whether the compiler copes with passing no objects directly. -+compiler_needs_object="no" -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds="" -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds="" -+ -+# Commands used to build a shared archive. -+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" -+archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ -+ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ -+ echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ -+ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" -+ -+# Commands used to build a loadable module if different from building -+# a shared archive. -+module_cmds="" -+module_expsym_cmds="" -+ -+# Whether we are building with GNU ld or not. -+with_gnu_ld="yes" -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag="" -+ -+# Flag that enforces no undefined symbols. -+no_undefined_flag="" -+ -+# Flag to hardcode $libdir into a binary during linking. -+# This must work even if $libdir does not exist -+hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" -+ -+# If ld is used when linking, flag to hardcode $libdir into a binary -+# during linking. This must work even if $libdir does not exist. -+hardcode_libdir_flag_spec_ld="" -+ -+# Whether we need a single "-rpath" flag with a separated argument. -+hardcode_libdir_separator="" -+ -+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -+# DIR into the resulting binary. -+hardcode_direct=no -+ -+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -+# DIR into the resulting binary and the resulting library dependency is -+# "absolute",i.e impossible to change by setting ${shlibpath_var} if the -+# library is relocated. -+hardcode_direct_absolute=no -+ -+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -+# into the resulting binary. -+hardcode_minus_L=no -+ -+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -+# into the resulting binary. -+hardcode_shlibpath_var=unsupported -+ -+# Set to "yes" if building a shared library automatically hardcodes DIR -+# into the library and all subsequent libraries and executables linked -+# against it. -+hardcode_automatic=no -+ -+# Set to yes if linker adds runtime paths of dependent libraries -+# to runtime path list. -+inherit_rpath=no -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=unknown -+ -+# Fix the shell variable $srcfile for the compiler. -+fix_srcfile_path="" -+ -+# Set to "yes" if exported symbols are required. -+always_export_symbols=no -+ -+# The commands to list exported symbols. -+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" -+ -+# Symbols that must always be exported. -+include_expsyms="" -+ -+# Commands necessary for linking programs (against libraries) with templates. -+prelink_cmds="" -+ -+# Specify filename containing input files. -+file_list_spec="" -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=immediate -+ -+# ### END LIBTOOL CONFIG -+ -+# Generated from ltmain.m4sh. -+ -+# ltmain.sh (GNU libtool) 2.2.6 -+# Written by Gordon Matzigkeit , 1996 -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. -+# This is free software; see the source for copying conditions. There is NO -+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+ -+# GNU Libtool 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. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, -+# or obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+# Usage: $progname [OPTION]... [MODE-ARG]... -+# -+# Provide generalized library-building support services. -+# -+# --config show all configuration variables -+# --debug enable verbose shell tracing -+# -n, --dry-run display commands without modifying any files -+# --features display basic configuration information and exit -+# --mode=MODE use operation mode MODE -+# --preserve-dup-deps don't remove duplicate dependency libraries -+# --quiet, --silent don't print informational messages -+# --tag=TAG use configuration variables from tag TAG -+# -v, --verbose print informational messages (default) -+# --version print version information -+# -h, --help print short or long help message -+# -+# MODE must be one of the following: -+# -+# clean remove files from the build directory -+# compile compile a source file into a libtool object -+# execute automatically set library path, then run a program -+# finish complete the installation of libtool libraries -+# install install libraries or executables -+# link create a library or an executable -+# uninstall remove libraries from an installed directory -+# -+# MODE-ARGS vary depending on the MODE. -+# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -+# -+# When reporting a bug, please describe a test case to reproduce it and -+# include the following information: -+# -+# host-triplet: $host -+# shell: $SHELL -+# compiler: $LTCC -+# compiler flags: $LTCFLAGS -+# linker: $LD (gnu? $with_gnu_ld) -+# $progname: (GNU libtool) 2.2.6 -+# automake: $automake_version -+# autoconf: $autoconf_version -+# -+# Report bugs to . -+ -+PROGRAM=ltmain.sh -+PACKAGE=libtool -+VERSION=2.2.6 -+TIMESTAMP="" -+package_revision=1.3012 -+ -+# Be Bourne compatible -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# NLS nuisances: We save the old values to restore during execute mode. -+# Only set LANG and LC_ALL to C if already set. -+# These must not be set unconditionally because not all systems understand -+# e.g. LANG=C (notably SCO). -+lt_user_locale= -+lt_safe_locale= -+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+do -+ eval "if test \"\${$lt_var+set}\" = set; then -+ save_$lt_var=\$$lt_var -+ $lt_var=C -+ export $lt_var -+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" -+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" -+ fi" -+done -+ -+$lt_unset CDPATH -+ -+ -+ -+ -+ -+: ${CP="cp -f"} -+: ${ECHO="echo"} -+: ${EGREP="/usr/bin/grep -E"} -+: ${FGREP="/usr/bin/grep -F"} -+: ${GREP="/usr/bin/grep"} -+: ${LN_S="ln -s"} -+: ${MAKE="make"} -+: ${MKDIR="mkdir"} -+: ${MV="mv -f"} -+: ${RM="rm -f"} -+: ${SED="/opt/local/bin/gsed"} -+: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -+: ${Xsed="$SED -e 1s/^X//"} -+ -+# Global variables: -+EXIT_SUCCESS=0 -+EXIT_FAILURE=1 -+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -+ -+exit_status=$EXIT_SUCCESS -+ -+# Make sure IFS has a sensible default -+lt_nl=' -+' -+IFS=" $lt_nl" -+ -+dirname="s,/[^/]*$,," -+basename="s,^.*/,," -+ -+# func_dirname_and_basename file append nondir_replacement -+# perform func_basename and func_dirname in a single function -+# call: -+# dirname: Compute the dirname of FILE. If nonempty, -+# add APPEND to the result, otherwise set result -+# to NONDIR_REPLACEMENT. -+# value returned in "$func_dirname_result" -+# basename: Compute filename of FILE. -+# value retuned in "$func_basename_result" -+# Implementation must be kept synchronized with func_dirname -+# and func_basename. For efficiency, we do not delegate to -+# those functions but instead duplicate the functionality here. -+func_dirname_and_basename () -+{ -+ # Extract subdirectory from the argument. -+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -+} -+ -+# Generated shell functions inserted here. -+ -+# func_dirname file append nondir_replacement -+# Compute the dirname of FILE. If nonempty, add APPEND to the result, -+# otherwise set result to NONDIR_REPLACEMENT. -+func_dirname () -+{ -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+} -+ -+# func_basename file -+func_basename () -+{ -+ func_basename_result="${1##*/}" -+} -+ -+# func_dirname_and_basename file append nondir_replacement -+# perform func_basename and func_dirname in a single function -+# call: -+# dirname: Compute the dirname of FILE. If nonempty, -+# add APPEND to the result, otherwise set result -+# to NONDIR_REPLACEMENT. -+# value returned in "$func_dirname_result" -+# basename: Compute filename of FILE. -+# value retuned in "$func_basename_result" -+# Implementation must be kept synchronized with func_dirname -+# and func_basename. For efficiency, we do not delegate to -+# those functions but instead duplicate the functionality here. -+func_dirname_and_basename () -+{ -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+ func_basename_result="${1##*/}" -+} -+ -+# func_stripname prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+func_stripname () -+{ -+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -+ # positional parameters, so assign one to ordinary parameter first. -+ func_stripname_result=${3} -+ func_stripname_result=${func_stripname_result#"${1}"} -+ func_stripname_result=${func_stripname_result%"${2}"} -+} -+ -+# func_opt_split -+func_opt_split () -+{ -+ func_opt_split_opt=${1%%=*} -+ func_opt_split_arg=${1#*=} -+} -+ -+# func_lo2o object -+func_lo2o () -+{ -+ case ${1} in -+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -+ *) func_lo2o_result=${1} ;; -+ esac -+} -+ -+# func_xform libobj-or-source -+func_xform () -+{ -+ func_xform_result=${1%.*}.lo -+} -+ -+# func_arith arithmetic-term... -+func_arith () -+{ -+ func_arith_result=$(( $* )) -+} -+ -+# func_len string -+# STRING may not start with a hyphen. -+func_len () -+{ -+ func_len_result=${#1} -+} -+ -+ -+# func_append var value -+# Append VALUE to the end of shell variable VAR. -+func_append () -+{ -+ eval "$1+=\$2" -+} -+# Generated shell functions inserted here. -+ -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -+# is ksh but when the shell is invoked as "sh" and the current value of -+# the _XPG environment variable is not equal to 1 (one), the special -+# positional parameter $0, within a function call, is the name of the -+# function. -+progpath="$0" -+ -+# The name of this program: -+# In the unlikely event $progname began with a '-', it would play havoc with -+# func_echo (imagine progname=-n), so we prepend ./ in that case: -+func_dirname_and_basename "$progpath" -+progname=$func_basename_result -+case $progname in -+ -*) progname=./$progname ;; -+esac -+ -+# Make sure we have an absolute path for reexecution: -+case $progpath in -+ [\\/]*|[A-Za-z]:\\*) ;; -+ *[\\/]*) -+ progdir=$func_dirname_result -+ progdir=`cd "$progdir" && pwd` -+ progpath="$progdir/$progname" -+ ;; -+ *) -+ save_IFS="$IFS" -+ IFS=: -+ for progdir in $PATH; do -+ IFS="$save_IFS" -+ test -x "$progdir/$progname" && break -+ done -+ IFS="$save_IFS" -+ test -n "$progdir" || progdir=`pwd` -+ progpath="$progdir/$progname" -+ ;; -+esac -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed="${SED}"' -e 1s/^X//' -+sed_quote_subst='s/\([`"$\\]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\(["`\\]\)/\\\1/g' -+ -+# Re-`\' parameter expansions in output of double_quote_subst that were -+# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -+# in input to double_quote_subst, that '$' was protected from expansion. -+# Since each input `\' is now two `\'s, look for any number of runs of -+# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -+bs='\\' -+bs2='\\\\' -+bs4='\\\\\\\\' -+dollar='\$' -+sed_double_backslash="\ -+ s/$bs4/&\\ -+/g -+ s/^$bs2$dollar/$bs&/ -+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g -+ s/\n//g" -+ -+# Standard options: -+opt_dry_run=false -+opt_help=false -+opt_quiet=false -+opt_verbose=false -+opt_warning=: -+ -+# func_echo arg... -+# Echo program name prefixed message, along with the current mode -+# name if it has been set yet. -+func_echo () -+{ -+ $ECHO "$progname${mode+: }$mode: $*" -+} -+ -+# func_verbose arg... -+# Echo program name prefixed message in verbose mode only. -+func_verbose () -+{ -+ $opt_verbose && func_echo ${1+"$@"} -+ -+ # A bug in bash halts the script if the last line of a function -+ # fails when set -e is in force, so we need another command to -+ # work around that: -+ : -+} -+ -+# func_error arg... -+# Echo program name prefixed message to standard error. -+func_error () -+{ -+ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -+} -+ -+# func_warning arg... -+# Echo program name prefixed warning message to standard error. -+func_warning () -+{ -+ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 -+ -+ # bash bug again: -+ : -+} -+ -+# func_fatal_error arg... -+# Echo program name prefixed message to standard error, and exit. -+func_fatal_error () -+{ -+ func_error ${1+"$@"} -+ exit $EXIT_FAILURE -+} -+ -+# func_fatal_help arg... -+# Echo program name prefixed message to standard error, followed by -+# a help hint, and exit. -+func_fatal_help () -+{ -+ func_error ${1+"$@"} -+ func_fatal_error "$help" -+} -+help="Try \`$progname --help' for more information." ## default -+ -+ -+# func_grep expression filename -+# Check whether EXPRESSION matches any line of FILENAME, without output. -+func_grep () -+{ -+ $GREP "$1" "$2" >/dev/null 2>&1 -+} -+ -+ -+# func_mkdir_p directory-path -+# Make sure the entire path to DIRECTORY-PATH is available. -+func_mkdir_p () -+{ -+ my_directory_path="$1" -+ my_dir_list= -+ -+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then -+ -+ # Protect directory names starting with `-' -+ case $my_directory_path in -+ -*) my_directory_path="./$my_directory_path" ;; -+ esac -+ -+ # While some portion of DIR does not yet exist... -+ while test ! -d "$my_directory_path"; do -+ # ...make a list in topmost first order. Use a colon delimited -+ # list incase some portion of path contains whitespace. -+ my_dir_list="$my_directory_path:$my_dir_list" -+ -+ # If the last portion added has no slash in it, the list is done -+ case $my_directory_path in */*) ;; *) break ;; esac -+ -+ # ...otherwise throw away the child directory and loop -+ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` -+ done -+ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` -+ -+ save_mkdir_p_IFS="$IFS"; IFS=':' -+ for my_dir in $my_dir_list; do -+ IFS="$save_mkdir_p_IFS" -+ # mkdir can fail with a `File exist' error if two processes -+ # try to create one of the directories concurrently. Don't -+ # stop in that case! -+ $MKDIR "$my_dir" 2>/dev/null || : -+ done -+ IFS="$save_mkdir_p_IFS" -+ -+ # Bail out if we (or some other process) failed to create a directory. -+ test -d "$my_directory_path" || \ -+ func_fatal_error "Failed to create \`$1'" -+ fi -+} -+ -+ -+# func_mktempdir [string] -+# Make a temporary directory that won't clash with other running -+# libtool processes, and avoids race conditions if possible. If -+# given, STRING is the basename for that directory. -+func_mktempdir () -+{ -+ my_template="${TMPDIR-/tmp}/${1-$progname}" -+ -+ if test "$opt_dry_run" = ":"; then -+ # Return a directory name, but don't create it in dry-run mode -+ my_tmpdir="${my_template}-$$" -+ else -+ -+ # If mktemp works, use that first and foremost -+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` -+ -+ if test ! -d "$my_tmpdir"; then -+ # Failing that, at least try and use $RANDOM to avoid a race -+ my_tmpdir="${my_template}-${RANDOM-0}$$" -+ -+ save_mktempdir_umask=`umask` -+ umask 0077 -+ $MKDIR "$my_tmpdir" -+ umask $save_mktempdir_umask -+ fi -+ -+ # If we're not in dry-run mode, bomb out on failure -+ test -d "$my_tmpdir" || \ -+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" -+ fi -+ -+ $ECHO "X$my_tmpdir" | $Xsed -+} -+ -+ -+# func_quote_for_eval arg -+# Aesthetically quote ARG to be evaled later. -+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -+# is double-quoted, suitable for a subsequent eval, whereas -+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -+# which are still active within double quotes backslashified. -+func_quote_for_eval () -+{ -+ case $1 in -+ *[\\\`\"\$]*) -+ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; -+ *) -+ func_quote_for_eval_unquoted_result="$1" ;; -+ esac -+ -+ case $func_quote_for_eval_unquoted_result in -+ # Double-quote args containing shell metacharacters to delay -+ # word splitting, command substitution and and variable -+ # expansion for a subsequent eval. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" -+ ;; -+ *) -+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" -+ esac -+} -+ -+ -+# func_quote_for_expand arg -+# Aesthetically quote ARG to be evaled later; same as above, -+# but do not quote variable references. -+func_quote_for_expand () -+{ -+ case $1 in -+ *[\\\`\"]*) -+ my_arg=`$ECHO "X$1" | $Xsed \ -+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; -+ *) -+ my_arg="$1" ;; -+ esac -+ -+ case $my_arg in -+ # Double-quote args containing shell metacharacters to delay -+ # word splitting and command substitution for a subsequent eval. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ my_arg="\"$my_arg\"" -+ ;; -+ esac -+ -+ func_quote_for_expand_result="$my_arg" -+} -+ -+ -+# func_show_eval cmd [fail_exp] -+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -+# is given, then evaluate it. -+func_show_eval () -+{ -+ my_cmd="$1" -+ my_fail_exp="${2-:}" -+ -+ ${opt_silent-false} || { -+ func_quote_for_expand "$my_cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ -+ if ${opt_dry_run-false}; then :; else -+ eval "$my_cmd" -+ my_status=$? -+ if test "$my_status" -eq 0; then :; else -+ eval "(exit $my_status); $my_fail_exp" -+ fi -+ fi -+} -+ -+ -+# func_show_eval_locale cmd [fail_exp] -+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -+# is given, then evaluate it. Use the saved locale for evaluation. -+func_show_eval_locale () -+{ -+ my_cmd="$1" -+ my_fail_exp="${2-:}" -+ -+ ${opt_silent-false} || { -+ func_quote_for_expand "$my_cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ -+ if ${opt_dry_run-false}; then :; else -+ eval "$lt_user_locale -+ $my_cmd" -+ my_status=$? -+ eval "$lt_safe_locale" -+ if test "$my_status" -eq 0; then :; else -+ eval "(exit $my_status); $my_fail_exp" -+ fi -+ fi -+} -+ -+ -+ -+ -+ -+# func_version -+# Echo version message to standard output and exit. -+func_version () -+{ -+ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { -+ s/^# // -+ s/^# *$// -+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ -+ p -+ }' < "$progpath" -+ exit $? -+} -+ -+# func_usage -+# Echo short help message to standard output and exit. -+func_usage () -+{ -+ $SED -n '/^# Usage:/,/# -h/ { -+ s/^# // -+ s/^# *$// -+ s/\$progname/'$progname'/ -+ p -+ }' < "$progpath" -+ $ECHO -+ $ECHO "run \`$progname --help | more' for full usage" -+ exit $? -+} -+ -+# func_help -+# Echo long help message to standard output and exit. -+func_help () -+{ -+ $SED -n '/^# Usage:/,/# Report bugs to/ { -+ s/^# // -+ s/^# *$// -+ s*\$progname*'$progname'* -+ s*\$host*'"$host"'* -+ s*\$SHELL*'"$SHELL"'* -+ s*\$LTCC*'"$LTCC"'* -+ s*\$LTCFLAGS*'"$LTCFLAGS"'* -+ s*\$LD*'"$LD"'* -+ s/\$with_gnu_ld/'"$with_gnu_ld"'/ -+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ -+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ -+ p -+ }' < "$progpath" -+ exit $? -+} -+ -+# func_missing_arg argname -+# Echo program name prefixed message to standard error and set global -+# exit_cmd. -+func_missing_arg () -+{ -+ func_error "missing argument for $1" -+ exit_cmd=exit -+} -+ -+exit_cmd=: -+ -+ -+ -+ -+ -+# Check that we have a working $ECHO. -+if test "X$1" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+elif test "X$1" = X--fallback-echo; then -+ # Avoid inline document here, it may be left over -+ : -+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then -+ # Yippee, $ECHO works! -+ : -+else -+ # Restart under the correct shell, and then maybe $ECHO will work. -+ exec $SHELL "$progpath" --no-reexec ${1+"$@"} -+fi -+ -+if test "X$1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat </dev/null 2>&1; then -+ taglist="$taglist $tagname" -+ -+ # Evaluate the configuration. Be careful to quote the path -+ # and the sed script, to avoid splitting on whitespace, but -+ # also don't use non-portable quotes within backquotes within -+ # quotes we have to do it in 2 steps: -+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` -+ eval "$extractedcf" -+ else -+ func_error "ignoring unknown tag $tagname" -+ fi -+ ;; -+ esac -+} -+ -+# Parse options once, thoroughly. This comes as soon as possible in -+# the script to make things like `libtool --version' happen quickly. -+{ -+ -+ # Shorthand for --mode=foo, only valid as the first argument -+ case $1 in -+ clean|clea|cle|cl) -+ shift; set dummy --mode clean ${1+"$@"}; shift -+ ;; -+ compile|compil|compi|comp|com|co|c) -+ shift; set dummy --mode compile ${1+"$@"}; shift -+ ;; -+ execute|execut|execu|exec|exe|ex|e) -+ shift; set dummy --mode execute ${1+"$@"}; shift -+ ;; -+ finish|finis|fini|fin|fi|f) -+ shift; set dummy --mode finish ${1+"$@"}; shift -+ ;; -+ install|instal|insta|inst|ins|in|i) -+ shift; set dummy --mode install ${1+"$@"}; shift -+ ;; -+ link|lin|li|l) -+ shift; set dummy --mode link ${1+"$@"}; shift -+ ;; -+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) -+ shift; set dummy --mode uninstall ${1+"$@"}; shift -+ ;; -+ esac -+ -+ # Parse non-mode specific arguments: -+ while test "$#" -gt 0; do -+ opt="$1" -+ shift -+ -+ case $opt in -+ --config) func_config ;; -+ -+ --debug) preserve_args="$preserve_args $opt" -+ func_echo "enabling shell trace mode" -+ opt_debug='set -x' -+ $opt_debug -+ ;; -+ -+ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break -+ execute_dlfiles="$execute_dlfiles $1" -+ shift -+ ;; -+ -+ --dry-run | -n) opt_dry_run=: ;; -+ --features) func_features ;; -+ --finish) mode="finish" ;; -+ -+ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break -+ case $1 in -+ # Valid mode arguments: -+ clean) ;; -+ compile) ;; -+ execute) ;; -+ finish) ;; -+ install) ;; -+ link) ;; -+ relink) ;; -+ uninstall) ;; -+ -+ # Catch anything else as an error -+ *) func_error "invalid argument for $opt" -+ exit_cmd=exit -+ break -+ ;; -+ esac -+ -+ mode="$1" -+ shift -+ ;; -+ -+ --preserve-dup-deps) -+ opt_duplicate_deps=: ;; -+ -+ --quiet|--silent) preserve_args="$preserve_args $opt" -+ opt_silent=: -+ ;; -+ -+ --verbose| -v) preserve_args="$preserve_args $opt" -+ opt_silent=false -+ ;; -+ -+ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break -+ preserve_args="$preserve_args $opt $1" -+ func_enable_tag "$1" # tagname is set here -+ shift -+ ;; -+ -+ # Separate optargs to long options: -+ -dlopen=*|--mode=*|--tag=*) -+ func_opt_split "$opt" -+ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} -+ shift -+ ;; -+ -+ -\?|-h) func_usage ;; -+ --help) opt_help=: ;; -+ --version) func_version ;; -+ -+ -*) func_fatal_help "unrecognized option \`$opt'" ;; -+ -+ *) nonopt="$opt" -+ break -+ ;; -+ esac -+ done -+ -+ -+ case $host in -+ *cygwin* | *mingw* | *pw32* | *cegcc*) -+ # don't eliminate duplications in $postdeps and $predeps -+ opt_duplicate_compiler_generated_deps=: -+ ;; -+ *) -+ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps -+ ;; -+ esac -+ -+ # Having warned about all mis-specified options, bail out if -+ # anything was wrong. -+ $exit_cmd $EXIT_FAILURE -+} -+ -+# func_check_version_match -+# Ensure that we are using m4 macros, and libtool script from the same -+# release of libtool. -+func_check_version_match () -+{ -+ if test "$package_revision" != "$macro_revision"; then -+ if test "$VERSION" != "$macro_version"; then -+ if test -z "$macro_version"; then -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -+$progname: definition of this LT_INIT comes from an older release. -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -+$progname: and run autoconf again. -+_LT_EOF -+ else -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -+$progname: and run autoconf again. -+_LT_EOF -+ fi -+ else -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -+$progname: but the definition of this LT_INIT comes from revision $macro_revision. -+$progname: You should recreate aclocal.m4 with macros from revision $package_revision -+$progname: of $PACKAGE $VERSION and run autoconf again. -+_LT_EOF -+ fi -+ -+ exit $EXIT_MISMATCH -+ fi -+} -+ -+ -+## ----------- ## -+## Main. ## -+## ----------- ## -+ -+$opt_help || { -+ # Sanity checks first: -+ func_check_version_match -+ -+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then -+ func_fatal_configuration "not configured to build any kind of library" -+ fi -+ -+ test -z "$mode" && func_fatal_error "error: you must specify a MODE." -+ -+ -+ # Darwin sucks -+ eval std_shrext=\"$shrext_cmds\" -+ -+ -+ # Only execute mode is allowed to have -dlopen flags. -+ if test -n "$execute_dlfiles" && test "$mode" != execute; then -+ func_error "unrecognized option \`-dlopen'" -+ $ECHO "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Change the help message to a mode-specific one. -+ generic_help="$help" -+ help="Try \`$progname --help --mode=$mode' for more information." -+} -+ -+ -+# func_lalib_p file -+# True iff FILE is a libtool `.la' library or `.lo' object file. -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_lalib_p () -+{ -+ test -f "$1" && -+ $SED -e 4q "$1" 2>/dev/null \ -+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -+} -+ -+# func_lalib_unsafe_p file -+# True iff FILE is a libtool `.la' library or `.lo' object file. -+# This function implements the same check as func_lalib_p without -+# resorting to external programs. To this end, it redirects stdin and -+# closes it afterwards, without saving the original file descriptor. -+# As a safety measure, use it only where a negative result would be -+# fatal anyway. Works if `file' does not exist. -+func_lalib_unsafe_p () -+{ -+ lalib_p=no -+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then -+ for lalib_p_l in 1 2 3 4 -+ do -+ read lalib_p_line -+ case "$lalib_p_line" in -+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; -+ esac -+ done -+ exec 0<&5 5<&- -+ fi -+ test "$lalib_p" = yes -+} -+ -+# func_ltwrapper_script_p file -+# True iff FILE is a libtool wrapper script -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_script_p () -+{ -+ func_lalib_p "$1" -+} -+ -+# func_ltwrapper_executable_p file -+# True iff FILE is a libtool wrapper executable -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_executable_p () -+{ -+ func_ltwrapper_exec_suffix= -+ case $1 in -+ *.exe) ;; -+ *) func_ltwrapper_exec_suffix=.exe ;; -+ esac -+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -+} -+ -+# func_ltwrapper_scriptname file -+# Assumes file is an ltwrapper_executable -+# uses $file to determine the appropriate filename for a -+# temporary ltwrapper_script. -+func_ltwrapper_scriptname () -+{ -+ func_ltwrapper_scriptname_result="" -+ if func_ltwrapper_executable_p "$1"; then -+ func_dirname_and_basename "$1" "" "." -+ func_stripname '' '.exe' "$func_basename_result" -+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -+ fi -+} -+ -+# func_ltwrapper_p file -+# True iff FILE is a libtool wrapper script or wrapper executable -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_p () -+{ -+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -+} -+ -+ -+# func_execute_cmds commands fail_cmd -+# Execute tilde-delimited COMMANDS. -+# If FAIL_CMD is given, eval that upon failure. -+# FAIL_CMD may read-access the current command in variable CMD! -+func_execute_cmds () -+{ -+ $opt_debug -+ save_ifs=$IFS; IFS='~' -+ for cmd in $1; do -+ IFS=$save_ifs -+ eval cmd=\"$cmd\" -+ func_show_eval "$cmd" "${2-:}" -+ done -+ IFS=$save_ifs -+} -+ -+ -+# func_source file -+# Source FILE, adding directory component if necessary. -+# Note that it is not necessary on cygwin/mingw to append a dot to -+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -+# behavior happens only for exec(3), not for open(2)! Also, sourcing -+# `FILE.' does not work on cygwin managed mounts. -+func_source () -+{ -+ $opt_debug -+ case $1 in -+ */* | *\\*) . "$1" ;; -+ *) . "./$1" ;; -+ esac -+} -+ -+ -+# func_infer_tag arg -+# Infer tagged configuration to use if any are available and -+# if one wasn't chosen via the "--tag" command line option. -+# Only attempt this if the compiler in the base compile -+# command doesn't match the default compiler. -+# arg is usually of the form 'gcc ...' -+func_infer_tag () -+{ -+ $opt_debug -+ if test -n "$available_tags" && test -z "$tagname"; then -+ CC_quoted= -+ for arg in $CC; do -+ func_quote_for_eval "$arg" -+ CC_quoted="$CC_quoted $func_quote_for_eval_result" -+ done -+ case $@ in -+ # Blanks in the command may have been stripped by the calling shell, -+ # but not from the CC environment variable when configure was run. -+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; -+ # Blanks at the start of $base_compile will cause this to fail -+ # if we don't check for them as well. -+ *) -+ for z in $available_tags; do -+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then -+ # Evaluate the configuration. -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" -+ CC_quoted= -+ for arg in $CC; do -+ # Double-quote args containing other shell metacharacters. -+ func_quote_for_eval "$arg" -+ CC_quoted="$CC_quoted $func_quote_for_eval_result" -+ done -+ case "$@ " in -+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) -+ # The compiler in the base compile command matches -+ # the one in the tagged configuration. -+ # Assume this is the tagged configuration we want. -+ tagname=$z -+ break -+ ;; -+ esac -+ fi -+ done -+ # If $tagname still isn't set, then no tagged configuration -+ # was found and let the user know that the "--tag" command -+ # line option must be used. -+ if test -z "$tagname"; then -+ func_echo "unable to infer tagged configuration" -+ func_fatal_error "specify a tag with \`--tag'" -+# else -+# func_verbose "using $tagname tagged configuration" -+ fi -+ ;; -+ esac -+ fi -+} -+ -+ -+ -+# func_write_libtool_object output_name pic_name nonpic_name -+# Create a libtool object file (analogous to a ".la" file), -+# but don't create it if we're doing a dry run. -+func_write_libtool_object () -+{ -+ write_libobj=${1} -+ if test "$build_libtool_libs" = yes; then -+ write_lobj=\'${2}\' -+ else -+ write_lobj=none -+ fi -+ -+ if test "$build_old_libs" = yes; then -+ write_oldobj=\'${3}\' -+ else -+ write_oldobj=none -+ fi -+ -+ $opt_dry_run || { -+ cat >${write_libobj}T <?"'"'"' &()|`$[]' \ -+ && func_warning "libobj name \`$libobj' may not contain shell special characters." -+ func_dirname_and_basename "$obj" "/" "" -+ objname="$func_basename_result" -+ xdir="$func_dirname_result" -+ lobj=${xdir}$objdir/$objname -+ -+ test -z "$base_compile" && \ -+ func_fatal_help "you must specify a compilation command" -+ -+ # Delete any leftover library objects. -+ if test "$build_old_libs" = yes; then -+ removelist="$obj $lobj $libobj ${libobj}T" -+ else -+ removelist="$lobj $libobj ${libobj}T" -+ fi -+ -+ # On Cygwin there's no "real" PIC flag so we must build both object types -+ case $host_os in -+ cygwin* | mingw* | pw32* | os2* | cegcc*) -+ pic_mode=default -+ ;; -+ esac -+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then -+ # non-PIC code in shared libraries is not supported -+ pic_mode=default -+ fi -+ -+ # Calculate the filename of the output object if compiler does -+ # not support -o with -c -+ if test "$compiler_c_o" = no; then -+ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} -+ lockfile="$output_obj.lock" -+ else -+ output_obj= -+ need_locks=no -+ lockfile= -+ fi -+ -+ # Lock this critical section if it is needed -+ # We use this script file to make the link, it avoids creating a new file -+ if test "$need_locks" = yes; then -+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do -+ func_echo "Waiting for $lockfile to be removed" -+ sleep 2 -+ done -+ elif test "$need_locks" = warn; then -+ if test -f "$lockfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile exists and contains: -+`cat $lockfile 2>/dev/null` -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ removelist="$removelist $output_obj" -+ $ECHO "$srcfile" > "$lockfile" -+ fi -+ -+ $opt_dry_run || $RM $removelist -+ removelist="$removelist $lockfile" -+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 -+ -+ if test -n "$fix_srcfile_path"; then -+ eval srcfile=\"$fix_srcfile_path\" -+ fi -+ func_quote_for_eval "$srcfile" -+ qsrcfile=$func_quote_for_eval_result -+ -+ # Only build a PIC object if we are building libtool libraries. -+ if test "$build_libtool_libs" = yes; then -+ # Without this assignment, base_compile gets emptied. -+ fbsd_hideous_sh_bug=$base_compile -+ -+ if test "$pic_mode" != no; then -+ command="$base_compile $qsrcfile $pic_flag" -+ else -+ # Don't build PIC code -+ command="$base_compile $qsrcfile" -+ fi -+ -+ func_mkdir_p "$xdir$objdir" -+ -+ if test -z "$output_obj"; then -+ # Place PIC objects in $objdir -+ command="$command -o $lobj" -+ fi -+ -+ func_show_eval_locale "$command" \ -+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' -+ -+ if test "$need_locks" = warn && -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed, then go on to compile the next one -+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then -+ func_show_eval '$MV "$output_obj" "$lobj"' \ -+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' -+ fi -+ -+ # Allow error messages only from the first compilation. -+ if test "$suppress_opt" = yes; then -+ suppress_output=' >/dev/null 2>&1' -+ fi -+ fi -+ -+ # Only build a position-dependent object if we build old libraries. -+ if test "$build_old_libs" = yes; then -+ if test "$pic_mode" != yes; then -+ # Don't build PIC code -+ command="$base_compile $qsrcfile$pie_flag" -+ else -+ command="$base_compile $qsrcfile $pic_flag" -+ fi -+ if test "$compiler_c_o" = yes; then -+ command="$command -o $obj" -+ fi -+ -+ # Suppress compiler output if we already did a PIC compilation. -+ command="$command$suppress_output" -+ func_show_eval_locale "$command" \ -+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' -+ -+ if test "$need_locks" = warn && -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed -+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then -+ func_show_eval '$MV "$output_obj" "$obj"' \ -+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' -+ fi -+ fi -+ -+ $opt_dry_run || { -+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" -+ -+ # Unlock the critical section if it was locked -+ if test "$need_locks" != no; then -+ removelist=$lockfile -+ $RM "$lockfile" -+ fi -+ } -+ -+ exit $EXIT_SUCCESS -+} -+ -+$opt_help || { -+test "$mode" = compile && func_mode_compile ${1+"$@"} -+} -+ -+func_mode_help () -+{ -+ # We need to display help for each of the modes. -+ case $mode in -+ "") -+ # Generic help is extracted from the usage comments -+ # at the start of this file. -+ func_help -+ ;; -+ -+ clean) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... -+ -+Remove files from the build directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, object or program, all the files associated -+with it are deleted. Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+ compile) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE -+ -+Compile a source file into a libtool library object. -+ -+This mode accepts the following additional options: -+ -+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE -+ -no-suppress do not suppress compiler output for multiple passes -+ -prefer-pic try to building PIC objects only -+ -prefer-non-pic try to building non-PIC objects only -+ -shared do not build a \`.o' file suitable for static linking -+ -static only build a \`.o' file suitable for static linking -+ -+COMPILE-COMMAND is a command to be used in creating a \`standard' object file -+from the given SOURCEFILE. -+ -+The output file name is determined by removing the directory component from -+SOURCEFILE, then substituting the C source code suffix \`.c' with the -+library object suffix, \`.lo'." -+ ;; -+ -+ execute) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... -+ -+Automatically set library path, then run a program. -+ -+This mode accepts the following additional options: -+ -+ -dlopen FILE add the directory containing FILE to the library path -+ -+This mode sets the library path environment variable according to \`-dlopen' -+flags. -+ -+If any of the ARGS are libtool executable wrappers, then they are translated -+into their corresponding uninstalled binary, and any of their required library -+directories are added to the library path. -+ -+Then, COMMAND is executed, with ARGS as arguments." -+ ;; -+ -+ finish) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... -+ -+Complete the installation of libtool libraries. -+ -+Each LIBDIR is a directory that contains libtool libraries. -+ -+The commands that this mode executes may require superuser privileges. Use -+the \`--dry-run' option if you just want to see what would be executed." -+ ;; -+ -+ install) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... -+ -+Install executables or libraries. -+ -+INSTALL-COMMAND is the installation command. The first component should be -+either the \`install' or \`cp' program. -+ -+The following components of INSTALL-COMMAND are treated specially: -+ -+ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation -+ -+The rest of the components are interpreted as arguments to that command (only -+BSD-compatible install options are recognized)." -+ ;; -+ -+ link) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... -+ -+Link object files or libraries together to form another library, or to -+create an executable program. -+ -+LINK-COMMAND is a command using the C compiler that you would use to create -+a program from several object files. -+ -+The following components of LINK-COMMAND are treated specially: -+ -+ -all-static do not do any dynamic linking at all -+ -avoid-version do not add a version suffix if possible -+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -+ -export-symbols SYMFILE -+ try to export only the symbols listed in SYMFILE -+ -export-symbols-regex REGEX -+ try to export only the symbols matching REGEX -+ -LLIBDIR search LIBDIR for required installed libraries -+ -lNAME OUTPUT-FILE requires the installed library libNAME -+ -module build a library that can dlopened -+ -no-fast-install disable the fast-install mode -+ -no-install link a not-installable executable -+ -no-undefined declare that a library does not refer to external symbols -+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -+ -objectlist FILE Use a list of object files found in FILE to specify objects -+ -precious-files-regex REGEX -+ don't remove output files matching REGEX -+ -release RELEASE specify package release information -+ -rpath LIBDIR the created library will eventually be installed in LIBDIR -+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -+ -shared only do dynamic linking of libtool libraries -+ -shrext SUFFIX override the standard shared library file extension -+ -static do not do any dynamic linking of uninstalled libtool libraries -+ -static-libtool-libs -+ do not do any dynamic linking of libtool libraries -+ -version-info CURRENT[:REVISION[:AGE]] -+ specify library version info [each variable defaults to 0] -+ -weak LIBNAME declare that the target provides the LIBNAME interface -+ -+All other options (arguments beginning with \`-') are ignored. -+ -+Every other argument is treated as a filename. Files ending in \`.la' are -+treated as uninstalled libtool libraries, other files are standard or library -+object files. -+ -+If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -+only library objects (\`.lo' files) may be specified, and \`-rpath' is -+required, except when creating a convenience library. -+ -+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -+using \`ar' and \`ranlib', or on Windows using \`lib'. -+ -+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -+is created, otherwise an executable program is created." -+ ;; -+ -+ uninstall) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... -+ -+Remove libraries from an installation directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, all the files associated with it are deleted. -+Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+ *) -+ func_fatal_help "invalid operation mode \`$mode'" -+ ;; -+ esac -+ -+ $ECHO -+ $ECHO "Try \`$progname --help' for more information about other modes." -+ -+ exit $? -+} -+ -+ # Now that we've collected a possible --mode arg, show help if necessary -+ $opt_help && func_mode_help -+ -+ -+# func_mode_execute arg... -+func_mode_execute () -+{ -+ $opt_debug -+ # The first argument is the command name. -+ cmd="$nonopt" -+ test -z "$cmd" && \ -+ func_fatal_help "you must specify a COMMAND" -+ -+ # Handle -dlopen flags immediately. -+ for file in $execute_dlfiles; do -+ test -f "$file" \ -+ || func_fatal_help "\`$file' is not a file" -+ -+ dir= -+ case $file in -+ *.la) -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$file" \ -+ || func_fatal_help "\`$lib' is not a valid libtool archive" -+ -+ # Read the libtool library. -+ dlname= -+ library_names= -+ func_source "$file" -+ -+ # Skip this library if it cannot be dlopened. -+ if test -z "$dlname"; then -+ # Warn if it was a shared library. -+ test -n "$library_names" && \ -+ func_warning "\`$file' was not linked with \`-export-dynamic'" -+ continue -+ fi -+ -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ -+ if test -f "$dir/$objdir/$dlname"; then -+ dir="$dir/$objdir" -+ else -+ if test ! -f "$dir/$dlname"; then -+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" -+ fi -+ fi -+ ;; -+ -+ *.lo) -+ # Just add the directory containing the .lo file. -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ ;; -+ -+ *) -+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" -+ continue -+ ;; -+ esac -+ -+ # Get the absolute pathname. -+ absdir=`cd "$dir" && pwd` -+ test -n "$absdir" && dir="$absdir" -+ -+ # Now add the directory to shlibpath_var. -+ if eval "test -z \"\$$shlibpath_var\""; then -+ eval "$shlibpath_var=\"\$dir\"" -+ else -+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" -+ fi -+ done -+ -+ # This variable tells wrapper scripts just to set shlibpath_var -+ # rather than running their programs. -+ libtool_execute_magic="$magic" -+ -+ # Check if any of the arguments is a wrapper script. -+ args= -+ for file -+ do -+ case $file in -+ -*) ;; -+ *) -+ # Do a test to see if this is really a libtool program. -+ if func_ltwrapper_script_p "$file"; then -+ func_source "$file" -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ elif func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ func_source "$func_ltwrapper_scriptname_result" -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ fi -+ ;; -+ esac -+ # Quote arguments (to preserve shell metacharacters). -+ func_quote_for_eval "$file" -+ args="$args $func_quote_for_eval_result" -+ done -+ -+ if test "X$opt_dry_run" = Xfalse; then -+ if test -n "$shlibpath_var"; then -+ # Export the shlibpath_var. -+ eval "export $shlibpath_var" -+ fi -+ -+ # Restore saved environment variables -+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+ do -+ eval "if test \"\${save_$lt_var+set}\" = set; then -+ $lt_var=\$save_$lt_var; export $lt_var -+ else -+ $lt_unset $lt_var -+ fi" -+ done -+ -+ # Now prepare to actually exec the command. -+ exec_cmd="\$cmd$args" -+ else -+ # Display what would be done. -+ if test -n "$shlibpath_var"; then -+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" -+ $ECHO "export $shlibpath_var" -+ fi -+ $ECHO "$cmd$args" -+ exit $EXIT_SUCCESS -+ fi -+} -+ -+test "$mode" = execute && func_mode_execute ${1+"$@"} -+ -+ -+# func_mode_finish arg... -+func_mode_finish () -+{ -+ $opt_debug -+ libdirs="$nonopt" -+ admincmds= -+ -+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -+ for dir -+ do -+ libdirs="$libdirs $dir" -+ done -+ -+ for libdir in $libdirs; do -+ if test -n "$finish_cmds"; then -+ # Do each command in the finish commands. -+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -+'"$cmd"'"' -+ fi -+ if test -n "$finish_eval"; then -+ # Do the single finish_eval. -+ eval cmds=\"$finish_eval\" -+ $opt_dry_run || eval "$cmds" || admincmds="$admincmds -+ $cmds" -+ fi -+ done -+ fi -+ -+ # Exit here if they wanted silent mode. -+ $opt_silent && exit $EXIT_SUCCESS -+ -+ $ECHO "X----------------------------------------------------------------------" | $Xsed -+ $ECHO "Libraries have been installed in:" -+ for libdir in $libdirs; do -+ $ECHO " $libdir" -+ done -+ $ECHO -+ $ECHO "If you ever happen to want to link against installed libraries" -+ $ECHO "in a given directory, LIBDIR, you must either use libtool, and" -+ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" -+ $ECHO "flag during linking and do at least one of the following:" -+ if test -n "$shlibpath_var"; then -+ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" -+ $ECHO " during execution" -+ fi -+ if test -n "$runpath_var"; then -+ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" -+ $ECHO " during linking" -+ fi -+ if test -n "$hardcode_libdir_flag_spec"; then -+ libdir=LIBDIR -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ -+ $ECHO " - use the \`$flag' linker flag" -+ fi -+ if test -n "$admincmds"; then -+ $ECHO " - have your system administrator run these commands:$admincmds" -+ fi -+ if test -f /etc/ld.so.conf; then -+ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -+ fi -+ $ECHO -+ -+ $ECHO "See any operating system documentation about shared libraries for" -+ case $host in -+ solaris2.[6789]|solaris2.1[0-9]) -+ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" -+ $ECHO "pages." -+ ;; -+ *) -+ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." -+ ;; -+ esac -+ $ECHO "X----------------------------------------------------------------------" | $Xsed -+ exit $EXIT_SUCCESS -+} -+ -+test "$mode" = finish && func_mode_finish ${1+"$@"} -+ -+ -+# func_mode_install arg... -+func_mode_install () -+{ -+ $opt_debug -+ # There may be an optional sh(1) argument at the beginning of -+ # install_prog (especially on Windows NT). -+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || -+ # Allow the use of GNU shtool's install command. -+ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then -+ # Aesthetically quote it. -+ func_quote_for_eval "$nonopt" -+ install_prog="$func_quote_for_eval_result " -+ arg=$1 -+ shift -+ else -+ install_prog= -+ arg=$nonopt -+ fi -+ -+ # The real first argument should be the name of the installation program. -+ # Aesthetically quote it. -+ func_quote_for_eval "$arg" -+ install_prog="$install_prog$func_quote_for_eval_result" -+ -+ # We need to accept at least all the BSD install flags. -+ dest= -+ files= -+ opts= -+ prev= -+ install_type= -+ isdir=no -+ stripme= -+ for arg -+ do -+ if test -n "$dest"; then -+ files="$files $dest" -+ dest=$arg -+ continue -+ fi -+ -+ case $arg in -+ -d) isdir=yes ;; -+ -f) -+ case " $install_prog " in -+ *[\\\ /]cp\ *) ;; -+ *) prev=$arg ;; -+ esac -+ ;; -+ -g | -m | -o) -+ prev=$arg -+ ;; -+ -s) -+ stripme=" -s" -+ continue -+ ;; -+ -*) -+ ;; -+ *) -+ # If the previous option needed an argument, then skip it. -+ if test -n "$prev"; then -+ prev= -+ else -+ dest=$arg -+ continue -+ fi -+ ;; -+ esac -+ -+ # Aesthetically quote the argument. -+ func_quote_for_eval "$arg" -+ install_prog="$install_prog $func_quote_for_eval_result" -+ done -+ -+ test -z "$install_prog" && \ -+ func_fatal_help "you must specify an install program" -+ -+ test -n "$prev" && \ -+ func_fatal_help "the \`$prev' option requires an argument" -+ -+ if test -z "$files"; then -+ if test -z "$dest"; then -+ func_fatal_help "no file or destination specified" -+ else -+ func_fatal_help "you must specify a destination" -+ fi -+ fi -+ -+ # Strip any trailing slash from the destination. -+ func_stripname '' '/' "$dest" -+ dest=$func_stripname_result -+ -+ # Check to see that the destination is a directory. -+ test -d "$dest" && isdir=yes -+ if test "$isdir" = yes; then -+ destdir="$dest" -+ destname= -+ else -+ func_dirname_and_basename "$dest" "" "." -+ destdir="$func_dirname_result" -+ destname="$func_basename_result" -+ -+ # Not a directory, so check to see that there is only one file specified. -+ set dummy $files; shift -+ test "$#" -gt 1 && \ -+ func_fatal_help "\`$dest' is not a directory" -+ fi -+ case $destdir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ for file in $files; do -+ case $file in -+ *.lo) ;; -+ *) -+ func_fatal_help "\`$destdir' must be an absolute directory name" -+ ;; -+ esac -+ done -+ ;; -+ esac -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ staticlibs= -+ future_libdirs= -+ current_libdirs= -+ for file in $files; do -+ -+ # Do each installation. -+ case $file in -+ *.$libext) -+ # Do the static libraries later. -+ staticlibs="$staticlibs $file" -+ ;; -+ -+ *.la) -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$file" \ -+ || func_fatal_help "\`$file' is not a valid libtool archive" -+ -+ library_names= -+ old_library= -+ relink_command= -+ func_source "$file" -+ -+ # Add the libdir to current_libdirs if it is the destination. -+ if test "X$destdir" = "X$libdir"; then -+ case "$current_libdirs " in -+ *" $libdir "*) ;; -+ *) current_libdirs="$current_libdirs $libdir" ;; -+ esac -+ else -+ # Note the libdir as a future libdir. -+ case "$future_libdirs " in -+ *" $libdir "*) ;; -+ *) future_libdirs="$future_libdirs $libdir" ;; -+ esac -+ fi -+ -+ func_dirname "$file" "/" "" -+ dir="$func_dirname_result" -+ dir="$dir$objdir" -+ -+ if test -n "$relink_command"; then -+ # Determine the prefix the user has applied to our future dir. -+ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` -+ -+ # Don't allow the user to place us outside of our expected -+ # location b/c this prevents finding dependent libraries that -+ # are installed to the same prefix. -+ # At present, this check doesn't affect windows .dll's that -+ # are installed into $libdir/../bin (currently, that works fine) -+ # but it's something to keep an eye on. -+ test "$inst_prefix_dir" = "$destdir" && \ -+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" -+ -+ if test -n "$inst_prefix_dir"; then -+ # Stick the inst_prefix_dir data into the link command. -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -+ else -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` -+ fi -+ -+ func_warning "relinking \`$file'" -+ func_show_eval "$relink_command" \ -+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' -+ fi -+ -+ # See the names of the shared library. -+ set dummy $library_names; shift -+ if test -n "$1"; then -+ realname="$1" -+ shift -+ -+ srcname="$realname" -+ test -n "$relink_command" && srcname="$realname"T -+ -+ # Install the shared library and build the symlinks. -+ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ -+ 'exit $?' -+ tstripme="$stripme" -+ case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ case $realname in -+ *.dll.a) -+ tstripme="" -+ ;; -+ esac -+ ;; -+ esac -+ if test -n "$tstripme" && test -n "$striplib"; then -+ func_show_eval "$striplib $destdir/$realname" 'exit $?' -+ fi -+ -+ if test "$#" -gt 0; then -+ # Delete the old symlinks, and create new ones. -+ # Try `ln -sf' first, because the `ln' binary might depend on -+ # the symlink we replace! Solaris /bin/ln does not understand -f, -+ # so we also need to try rm && ln -s. -+ for linkname -+ do -+ test "$linkname" != "$realname" \ -+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" -+ done -+ fi -+ -+ # Do each command in the postinstall commands. -+ lib="$destdir/$realname" -+ func_execute_cmds "$postinstall_cmds" 'exit $?' -+ fi -+ -+ # Install the pseudo-library for information purposes. -+ func_basename "$file" -+ name="$func_basename_result" -+ instname="$dir/$name"i -+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' -+ -+ # Maybe install the static library, too. -+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" -+ ;; -+ -+ *.lo) -+ # Install (i.e. copy) a libtool object. -+ -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ func_basename "$file" -+ destfile="$func_basename_result" -+ destfile="$destdir/$destfile" -+ fi -+ -+ # Deduce the name of the destination old-style object file. -+ case $destfile in -+ *.lo) -+ func_lo2o "$destfile" -+ staticdest=$func_lo2o_result -+ ;; -+ *.$objext) -+ staticdest="$destfile" -+ destfile= -+ ;; -+ *) -+ func_fatal_help "cannot copy a libtool object to \`$destfile'" -+ ;; -+ esac -+ -+ # Install the libtool object if requested. -+ test -n "$destfile" && \ -+ func_show_eval "$install_prog $file $destfile" 'exit $?' -+ -+ # Install the old object if enabled. -+ if test "$build_old_libs" = yes; then -+ # Deduce the name of the old-style object file. -+ func_lo2o "$file" -+ staticobj=$func_lo2o_result -+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' -+ fi -+ exit $EXIT_SUCCESS -+ ;; -+ -+ *) -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ func_basename "$file" -+ destfile="$func_basename_result" -+ destfile="$destdir/$destfile" -+ fi -+ -+ # If the file is missing, and there is a .exe on the end, strip it -+ # because it is most likely a libtool script we actually want to -+ # install -+ stripped_ext="" -+ case $file in -+ *.exe) -+ if test ! -f "$file"; then -+ func_stripname '' '.exe' "$file" -+ file=$func_stripname_result -+ stripped_ext=".exe" -+ fi -+ ;; -+ esac -+ -+ # Do a test to see if this is really a libtool program. -+ case $host in -+ *cygwin* | *mingw*) -+ if func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ wrapper=$func_ltwrapper_scriptname_result -+ else -+ func_stripname '' '.exe' "$file" -+ wrapper=$func_stripname_result -+ fi -+ ;; -+ *) -+ wrapper=$file -+ ;; -+ esac -+ if func_ltwrapper_script_p "$wrapper"; then -+ notinst_deplibs= -+ relink_command= -+ -+ func_source "$wrapper" -+ -+ # Check the variables that should have been set. -+ test -z "$generated_by_libtool_version" && \ -+ func_fatal_error "invalid libtool wrapper script \`$wrapper'" -+ -+ finalize=yes -+ for lib in $notinst_deplibs; do -+ # Check to see that each library is installed. -+ libdir= -+ if test -f "$lib"; then -+ func_source "$lib" -+ fi -+ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test -+ if test -n "$libdir" && test ! -f "$libfile"; then -+ func_warning "\`$lib' has not been installed in \`$libdir'" -+ finalize=no -+ fi -+ done -+ -+ relink_command= -+ func_source "$wrapper" -+ -+ outputname= -+ if test "$fast_install" = no && test -n "$relink_command"; then -+ $opt_dry_run || { -+ if test "$finalize" = yes; then -+ tmpdir=`func_mktempdir` -+ func_basename "$file$stripped_ext" -+ file="$func_basename_result" -+ outputname="$tmpdir/$file" -+ # Replace the output file specification. -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` -+ -+ $opt_silent || { -+ func_quote_for_expand "$relink_command" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ if eval "$relink_command"; then : -+ else -+ func_error "error: relink \`$file' with the above command before installing it" -+ $opt_dry_run || ${RM}r "$tmpdir" -+ continue -+ fi -+ file="$outputname" -+ else -+ func_warning "cannot relink \`$file'" -+ fi -+ } -+ else -+ # Install the binary that we compiled earlier. -+ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` -+ fi -+ fi -+ -+ # remove .exe since cygwin /usr/bin/install will append another -+ # one anyway -+ case $install_prog,$host in -+ */usr/bin/install*,*cygwin*) -+ case $file:$destfile in -+ *.exe:*.exe) -+ # this is ok -+ ;; -+ *.exe:*) -+ destfile=$destfile.exe -+ ;; -+ *:*.exe) -+ func_stripname '' '.exe' "$destfile" -+ destfile=$func_stripname_result -+ ;; -+ esac -+ ;; -+ esac -+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' -+ $opt_dry_run || if test -n "$outputname"; then -+ ${RM}r "$tmpdir" -+ fi -+ ;; -+ esac -+ done -+ -+ for file in $staticlibs; do -+ func_basename "$file" -+ name="$func_basename_result" -+ -+ # Set up the ranlib parameters. -+ oldlib="$destdir/$name" -+ -+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?' -+ -+ if test -n "$stripme" && test -n "$old_striplib"; then -+ func_show_eval "$old_striplib $oldlib" 'exit $?' -+ fi -+ -+ # Do each command in the postinstall commands. -+ func_execute_cmds "$old_postinstall_cmds" 'exit $?' -+ done -+ -+ test -n "$future_libdirs" && \ -+ func_warning "remember to run \`$progname --finish$future_libdirs'" -+ -+ if test -n "$current_libdirs"; then -+ # Maybe just do a dry run. -+ $opt_dry_run && current_libdirs=" -n$current_libdirs" -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' -+ else -+ exit $EXIT_SUCCESS -+ fi -+} -+ -+test "$mode" = install && func_mode_install ${1+"$@"} -+ -+ -+# func_generate_dlsyms outputname originator pic_p -+# Extract symbols from dlprefiles and create ${outputname}S.o with -+# a dlpreopen symbol table. -+func_generate_dlsyms () -+{ -+ $opt_debug -+ my_outputname="$1" -+ my_originator="$2" -+ my_pic_p="${3-no}" -+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` -+ my_dlsyms= -+ -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ if test -n "$NM" && test -n "$global_symbol_pipe"; then -+ my_dlsyms="${my_outputname}S.c" -+ else -+ func_error "not configured to extract global symbols from dlpreopened files" -+ fi -+ fi -+ -+ if test -n "$my_dlsyms"; then -+ case $my_dlsyms in -+ "") ;; -+ *.c) -+ # Discover the nlist of each of the dlfiles. -+ nlist="$output_objdir/${my_outputname}.nm" -+ -+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T" -+ -+ # Parse the name list into a source file. -+ func_verbose "creating $output_objdir/$my_dlsyms" -+ -+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ -+ -+#ifdef __cplusplus -+extern \"C\" { -+#endif -+ -+/* External symbol declarations for the compiler. */\ -+" -+ -+ if test "$dlself" = yes; then -+ func_verbose "generating symbol list for \`$output'" -+ -+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" -+ -+ # Add our own program objects to the symbol list. -+ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ for progfile in $progfiles; do -+ func_verbose "extracting global C symbols from \`$progfile'" -+ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" -+ done -+ -+ if test -n "$exclude_expsyms"; then -+ $opt_dry_run || { -+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ } -+ fi -+ -+ if test -n "$export_symbols_regex"; then -+ $opt_dry_run || { -+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ } -+ fi -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ export_symbols="$output_objdir/$outputname.exp" -+ $opt_dry_run || { -+ $RM $export_symbols -+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ } -+ else -+ $opt_dry_run || { -+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' -+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ case $host in -+ *cygwin | *mingw* | *cegcc* ) -+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ } -+ fi -+ fi -+ -+ for dlprefile in $dlprefiles; do -+ func_verbose "extracting global C symbols from \`$dlprefile'" -+ func_basename "$dlprefile" -+ name="$func_basename_result" -+ $opt_dry_run || { -+ eval '$ECHO ": $name " >> "$nlist"' -+ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" -+ } -+ done -+ -+ $opt_dry_run || { -+ # Make sure we have at least an empty file. -+ test -f "$nlist" || : > "$nlist" -+ -+ if test -n "$exclude_expsyms"; then -+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -+ $MV "$nlist"T "$nlist" -+ fi -+ -+ # Try sorting and uniquifying the output. -+ if $GREP -v "^: " < "$nlist" | -+ if sort -k 3 /dev/null 2>&1; then -+ sort -k 3 -+ else -+ sort +2 -+ fi | -+ uniq > "$nlist"S; then -+ : -+ else -+ $GREP -v "^: " < "$nlist" > "$nlist"S -+ fi -+ -+ if test -f "$nlist"S; then -+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' -+ else -+ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" -+ fi -+ -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+ -+/* The mapping between symbol names and symbols. */ -+typedef struct { -+ const char *name; -+ void *address; -+} lt_dlsymlist; -+" -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+/* DATA imports from DLLs on WIN32 con't be const, because -+ runtime relocations are performed -- see ld's documentation -+ on pseudo-relocs. */" -+ lt_dlsym_const= ;; -+ *osf5*) -+ echo >> "$output_objdir/$my_dlsyms" "\ -+/* This system does not cope well with relocations in const data */" -+ lt_dlsym_const= ;; -+ *) -+ lt_dlsym_const=const ;; -+ esac -+ -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+extern $lt_dlsym_const lt_dlsymlist -+lt_${my_prefix}_LTX_preloaded_symbols[]; -+$lt_dlsym_const lt_dlsymlist -+lt_${my_prefix}_LTX_preloaded_symbols[] = -+{\ -+ { \"$my_originator\", (void *) 0 }," -+ -+ case $need_lib_prefix in -+ no) -+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" -+ ;; -+ *) -+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" -+ ;; -+ esac -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+ {0, (void *) 0} -+}; -+ -+/* This works around a problem in FreeBSD linker */ -+#ifdef FREEBSD_WORKAROUND -+static const void *lt_preloaded_setup() { -+ return lt_${my_prefix}_LTX_preloaded_symbols; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif\ -+" -+ } # !$opt_dry_run -+ -+ pic_flag_for_symtable= -+ case "$compile_command " in -+ *" -static "*) ;; -+ *) -+ case $host in -+ # compiling the symbol table file with pic_flag works around -+ # a FreeBSD bug that causes programs to crash when -lm is -+ # linked before any other PIC object. But we must not use -+ # pic_flag when linking with -static. The problem exists in -+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. -+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) -+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; -+ *-*-hpux*) -+ pic_flag_for_symtable=" $pic_flag" ;; -+ *) -+ if test "X$my_pic_p" != Xno; then -+ pic_flag_for_symtable=" $pic_flag" -+ fi -+ ;; -+ esac -+ ;; -+ esac -+ symtab_cflags= -+ for arg in $LTCFLAGS; do -+ case $arg in -+ -pie | -fpie | -fPIE) ;; -+ *) symtab_cflags="$symtab_cflags $arg" ;; -+ esac -+ done -+ -+ # Now compile the dynamic symbol file. -+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' -+ -+ # Clean up the generated files. -+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' -+ -+ # Transform the symbol file into the correct name. -+ symfileobj="$output_objdir/${my_outputname}S.$objext" -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ if test -f "$output_objdir/$my_outputname.def"; then -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ else -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ fi -+ ;; -+ *) -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ ;; -+ esac -+ ;; -+ *) -+ func_fatal_error "unknown suffix for \`$my_dlsyms'" -+ ;; -+ esac -+ else -+ # We keep going just in case the user didn't refer to -+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe -+ # really was required. -+ -+ # Nullify the symbol file. -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` -+ fi -+} -+ -+# func_win32_libid arg -+# return the library type of file 'arg' -+# -+# Need a lot of goo to handle *both* DLLs and import libs -+# Has to be a shell function in order to 'eat' the argument -+# that is supplied when $file_magic_command is called. -+func_win32_libid () -+{ -+ $opt_debug -+ win32_libid_type="unknown" -+ win32_fileres=`file -L $1 2>/dev/null` -+ case $win32_fileres in -+ *ar\ archive\ import\ library*) # definitely import -+ win32_libid_type="x86 archive import" -+ ;; -+ *ar\ archive*) # could be an import, or static -+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | -+ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then -+ win32_nmres=`eval $NM -f posix -A $1 | -+ $SED -n -e ' -+ 1,100{ -+ / I /{ -+ s,.*,import, -+ p -+ q -+ } -+ }'` -+ case $win32_nmres in -+ import*) win32_libid_type="x86 archive import";; -+ *) win32_libid_type="x86 archive static";; -+ esac -+ fi -+ ;; -+ *DLL*) -+ win32_libid_type="x86 DLL" -+ ;; -+ *executable*) # but shell scripts are "executable" too... -+ case $win32_fileres in -+ *MS\ Windows\ PE\ Intel*) -+ win32_libid_type="x86 DLL" -+ ;; -+ esac -+ ;; -+ esac -+ $ECHO "$win32_libid_type" -+} -+ -+ -+ -+# func_extract_an_archive dir oldlib -+func_extract_an_archive () -+{ -+ $opt_debug -+ f_ex_an_ar_dir="$1"; shift -+ f_ex_an_ar_oldlib="$1" -+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' -+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" -+ fi -+} -+ -+ -+# func_extract_archives gentop oldlib ... -+func_extract_archives () -+{ -+ $opt_debug -+ my_gentop="$1"; shift -+ my_oldlibs=${1+"$@"} -+ my_oldobjs="" -+ my_xlib="" -+ my_xabs="" -+ my_xdir="" -+ -+ for my_xlib in $my_oldlibs; do -+ # Extract the objects. -+ case $my_xlib in -+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; -+ *) my_xabs=`pwd`"/$my_xlib" ;; -+ esac -+ func_basename "$my_xlib" -+ my_xlib="$func_basename_result" -+ my_xlib_u=$my_xlib -+ while :; do -+ case " $extracted_archives " in -+ *" $my_xlib_u "*) -+ func_arith $extracted_serial + 1 -+ extracted_serial=$func_arith_result -+ my_xlib_u=lt$extracted_serial-$my_xlib ;; -+ *) break ;; -+ esac -+ done -+ extracted_archives="$extracted_archives $my_xlib_u" -+ my_xdir="$my_gentop/$my_xlib_u" -+ -+ func_mkdir_p "$my_xdir" -+ -+ case $host in -+ *-darwin*) -+ func_verbose "Extracting $my_xabs" -+ # Do not bother doing anything if just a dry run -+ $opt_dry_run || { -+ darwin_orig_dir=`pwd` -+ cd $my_xdir || exit $? -+ darwin_archive=$my_xabs -+ darwin_curdir=`pwd` -+ darwin_base_archive=`basename "$darwin_archive"` -+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` -+ if test -n "$darwin_arches"; then -+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` -+ darwin_arch= -+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" -+ for darwin_arch in $darwin_arches ; do -+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" -+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ func_extract_an_archive "`pwd`" "${darwin_base_archive}" -+ cd "$darwin_curdir" -+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" -+ done # $darwin_arches -+ ## Okay now we've a bunch of thin objects, gotta fatten them up :) -+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` -+ darwin_file= -+ darwin_files= -+ for darwin_file in $darwin_filelist; do -+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` -+ $LIPO -create -output "$darwin_file" $darwin_files -+ done # $darwin_filelist -+ $RM -rf unfat-$$ -+ cd "$darwin_orig_dir" -+ else -+ cd $darwin_orig_dir -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ fi # $darwin_arches -+ } # !$opt_dry_run -+ ;; -+ *) -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ ;; -+ esac -+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -+ done -+ -+ func_extract_archives_result="$my_oldobjs" -+} -+ -+ -+ -+# func_emit_wrapper_part1 [arg=no] -+# -+# Emit the first part of a libtool wrapper script on stdout. -+# For more information, see the description associated with -+# func_emit_wrapper(), below. -+func_emit_wrapper_part1 () -+{ -+ func_emit_wrapper_part1_arg1=no -+ if test -n "$1" ; then -+ func_emit_wrapper_part1_arg1=$1 -+ fi -+ -+ $ECHO "\ -+#! $SHELL -+ -+# $output - temporary wrapper script for $objdir/$outputname -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -+# -+# The $output program cannot be directly executed until all the libtool -+# libraries that it depends on are installed. -+# -+# This wrapper script should never be moved out of the build directory. -+# If it is, it will not operate correctly. -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed='${SED} -e 1s/^X//' -+sed_quote_subst='$sed_quote_subst' -+ -+# Be Bourne compatible -+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '\${1+\"\$@\"}'='\"\$@\"' -+ setopt NO_GLOB_SUBST -+else -+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+relink_command=\"$relink_command\" -+ -+# This environment variable determines our operation mode. -+if test \"\$libtool_install_magic\" = \"$magic\"; then -+ # install mode needs the following variables: -+ generated_by_libtool_version='$macro_version' -+ notinst_deplibs='$notinst_deplibs' -+else -+ # When we are sourced in execute mode, \$file and \$ECHO are already set. -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ ECHO=\"$qecho\" -+ file=\"\$0\" -+ # Make sure echo works. -+ if test \"X\$1\" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then -+ # Yippee, \$ECHO works! -+ : -+ else -+ # Restart under the correct shell, and then maybe \$ECHO will work. -+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} -+ fi -+ fi\ -+" -+ $ECHO "\ -+ -+ # Find the directory that this script lives in. -+ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` -+ test \"x\$thisdir\" = \"x\$file\" && thisdir=. -+ -+ # Follow symbolic links until we get to the real thisdir. -+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` -+ while test -n \"\$file\"; do -+ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` -+ -+ # If there was a directory component, then change thisdir. -+ if test \"x\$destdir\" != \"x\$file\"; then -+ case \"\$destdir\" in -+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; -+ *) thisdir=\"\$thisdir/\$destdir\" ;; -+ esac -+ fi -+ -+ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` -+ done -+" -+} -+# end: func_emit_wrapper_part1 -+ -+# func_emit_wrapper_part2 [arg=no] -+# -+# Emit the second part of a libtool wrapper script on stdout. -+# For more information, see the description associated with -+# func_emit_wrapper(), below. -+func_emit_wrapper_part2 () -+{ -+ func_emit_wrapper_part2_arg1=no -+ if test -n "$1" ; then -+ func_emit_wrapper_part2_arg1=$1 -+ fi -+ -+ $ECHO "\ -+ -+ # Usually 'no', except on cygwin/mingw when embedded into -+ # the cwrapper. -+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 -+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then -+ # special case for '.' -+ if test \"\$thisdir\" = \".\"; then -+ thisdir=\`pwd\` -+ fi -+ # remove .libs from thisdir -+ case \"\$thisdir\" in -+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; -+ $objdir ) thisdir=. ;; -+ esac -+ fi -+ -+ # Try to get the absolute directory name. -+ absdir=\`cd \"\$thisdir\" && pwd\` -+ test -n \"\$absdir\" && thisdir=\"\$absdir\" -+" -+ -+ if test "$fast_install" = yes; then -+ $ECHO "\ -+ program=lt-'$outputname'$exeext -+ progdir=\"\$thisdir/$objdir\" -+ -+ if test ! -f \"\$progdir/\$program\" || -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ -+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then -+ -+ file=\"\$\$-\$program\" -+ -+ if test ! -d \"\$progdir\"; then -+ $MKDIR \"\$progdir\" -+ else -+ $RM \"\$progdir/\$file\" -+ fi" -+ -+ $ECHO "\ -+ -+ # relink executable if necessary -+ if test -n \"\$relink_command\"; then -+ if relink_command_output=\`eval \$relink_command 2>&1\`; then : -+ else -+ $ECHO \"\$relink_command_output\" >&2 -+ $RM \"\$progdir/\$file\" -+ exit 1 -+ fi -+ fi -+ -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || -+ { $RM \"\$progdir/\$program\"; -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } -+ $RM \"\$progdir/\$file\" -+ fi" -+ else -+ $ECHO "\ -+ program='$outputname' -+ progdir=\"\$thisdir/$objdir\" -+" -+ fi -+ -+ $ECHO "\ -+ -+ if test -f \"\$progdir/\$program\"; then" -+ -+ # Export our shlibpath_var if we have one. -+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -+ $ECHO "\ -+ # Add our own library path to $shlibpath_var -+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" -+ -+ # Some systems cannot cope with colon-terminated $shlibpath_var -+ # The second colon is a workaround for a bug in BeOS R4 sed -+ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` -+ -+ export $shlibpath_var -+" -+ fi -+ -+ # fixup the dll searchpath if we need to. -+ if test -n "$dllsearchpath"; then -+ $ECHO "\ -+ # Add the dll search path components to the executable PATH -+ PATH=$dllsearchpath:\$PATH -+" -+ fi -+ -+ $ECHO "\ -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ # Run the actual program with our arguments. -+" -+ case $host in -+ # Backslashes separate directories on plain windows -+ *-*-mingw | *-*-os2* | *-cegcc*) -+ $ECHO "\ -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -+" -+ ;; -+ -+ *) -+ $ECHO "\ -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} -+" -+ ;; -+ esac -+ $ECHO "\ -+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 -+ exit 1 -+ fi -+ else -+ # The program doesn't exist. -+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 -+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 -+ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit 1 -+ fi -+fi\ -+" -+} -+# end: func_emit_wrapper_part2 -+ -+ -+# func_emit_wrapper [arg=no] -+# -+# Emit a libtool wrapper script on stdout. -+# Don't directly open a file because we may want to -+# incorporate the script contents within a cygwin/mingw -+# wrapper executable. Must ONLY be called from within -+# func_mode_link because it depends on a number of variables -+# set therein. -+# -+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -+# variable will take. If 'yes', then the emitted script -+# will assume that the directory in which it is stored is -+# the $objdir directory. This is a cygwin/mingw-specific -+# behavior. -+func_emit_wrapper () -+{ -+ func_emit_wrapper_arg1=no -+ if test -n "$1" ; then -+ func_emit_wrapper_arg1=$1 -+ fi -+ -+ # split this up so that func_emit_cwrapperexe_src -+ # can call each part independently. -+ func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" -+ func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" -+} -+ -+ -+# func_to_host_path arg -+# -+# Convert paths to host format when used with build tools. -+# Intended for use with "native" mingw (where libtool itself -+# is running under the msys shell), or in the following cross- -+# build environments: -+# $build $host -+# mingw (msys) mingw [e.g. native] -+# cygwin mingw -+# *nix + wine mingw -+# where wine is equipped with the `winepath' executable. -+# In the native mingw case, the (msys) shell automatically -+# converts paths for any non-msys applications it launches, -+# but that facility isn't available from inside the cwrapper. -+# Similar accommodations are necessary for $host mingw and -+# $build cygwin. Calling this function does no harm for other -+# $host/$build combinations not listed above. -+# -+# ARG is the path (on $build) that should be converted to -+# the proper representation for $host. The result is stored -+# in $func_to_host_path_result. -+func_to_host_path () -+{ -+ func_to_host_path_result="$1" -+ if test -n "$1" ; then -+ case $host in -+ *mingw* ) -+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -+ case $build in -+ *mingw* ) # actually, msys -+ # awkward: cmd appends spaces to result -+ lt_sed_strip_trailing_spaces="s/[ ]*\$//" -+ func_to_host_path_tmp1=`( cmd //c echo "$1" |\ -+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ *cygwin* ) -+ func_to_host_path_tmp1=`cygpath -w "$1"` -+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ * ) -+ # Unfortunately, winepath does not exit with a non-zero -+ # error code, so we are forced to check the contents of -+ # stdout. On the other hand, if the command is not -+ # found, the shell will set an exit code of 127 and print -+ # *an error message* to stdout. So we must check for both -+ # error code of zero AND non-empty stdout, which explains -+ # the odd construction: -+ func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` -+ if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then -+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ else -+ # Allow warning below. -+ func_to_host_path_result="" -+ fi -+ ;; -+ esac -+ if test -z "$func_to_host_path_result" ; then -+ func_error "Could not determine host path corresponding to" -+ func_error " '$1'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback: -+ func_to_host_path_result="$1" -+ fi -+ ;; -+ esac -+ fi -+} -+# end: func_to_host_path -+ -+# func_to_host_pathlist arg -+# -+# Convert pathlists to host format when used with build tools. -+# See func_to_host_path(), above. This function supports the -+# following $build/$host combinations (but does no harm for -+# combinations not listed here): -+# $build $host -+# mingw (msys) mingw [e.g. native] -+# cygwin mingw -+# *nix + wine mingw -+# -+# Path separators are also converted from $build format to -+# $host format. If ARG begins or ends with a path separator -+# character, it is preserved (but converted to $host format) -+# on output. -+# -+# ARG is a pathlist (on $build) that should be converted to -+# the proper representation on $host. The result is stored -+# in $func_to_host_pathlist_result. -+func_to_host_pathlist () -+{ -+ func_to_host_pathlist_result="$1" -+ if test -n "$1" ; then -+ case $host in -+ *mingw* ) -+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -+ # Remove leading and trailing path separator characters from -+ # ARG. msys behavior is inconsistent here, cygpath turns them -+ # into '.;' and ';.', and winepath ignores them completely. -+ func_to_host_pathlist_tmp2="$1" -+ # Once set for this call, this variable should not be -+ # reassigned. It is used in tha fallback case. -+ func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ -+ $SED -e 's|^:*||' -e 's|:*$||'` -+ case $build in -+ *mingw* ) # Actually, msys. -+ # Awkward: cmd appends spaces to result. -+ lt_sed_strip_trailing_spaces="s/[ ]*\$//" -+ func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ -+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ *cygwin* ) -+ func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` -+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ * ) -+ # unfortunately, winepath doesn't convert pathlists -+ func_to_host_pathlist_result="" -+ func_to_host_pathlist_oldIFS=$IFS -+ IFS=: -+ for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do -+ IFS=$func_to_host_pathlist_oldIFS -+ if test -n "$func_to_host_pathlist_f" ; then -+ func_to_host_path "$func_to_host_pathlist_f" -+ if test -n "$func_to_host_path_result" ; then -+ if test -z "$func_to_host_pathlist_result" ; then -+ func_to_host_pathlist_result="$func_to_host_path_result" -+ else -+ func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" -+ fi -+ fi -+ fi -+ IFS=: -+ done -+ IFS=$func_to_host_pathlist_oldIFS -+ ;; -+ esac -+ if test -z "$func_to_host_pathlist_result" ; then -+ func_error "Could not determine the host path(s) corresponding to" -+ func_error " '$1'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback. This may break if $1 contains DOS-style drive -+ # specifications. The fix is not to complicate the expression -+ # below, but for the user to provide a working wine installation -+ # with winepath so that path translation in the cross-to-mingw -+ # case works properly. -+ lt_replace_pathsep_nix_to_dos="s|:|;|g" -+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ -+ $SED -e "$lt_replace_pathsep_nix_to_dos"` -+ fi -+ # Now, add the leading and trailing path separators back -+ case "$1" in -+ :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" -+ ;; -+ esac -+ case "$1" in -+ *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" -+ ;; -+ esac -+ ;; -+ esac -+ fi -+} -+# end: func_to_host_pathlist -+ -+# func_emit_cwrapperexe_src -+# emit the source code for a wrapper executable on stdout -+# Must ONLY be called from within func_mode_link because -+# it depends on a number of variable set therein. -+func_emit_cwrapperexe_src () -+{ -+ cat < -+#include -+#ifdef _MSC_VER -+# include -+# include -+# include -+# define setmode _setmode -+#else -+# include -+# include -+# ifdef __CYGWIN__ -+# include -+# define HAVE_SETENV -+# ifdef __STRICT_ANSI__ -+char *realpath (const char *, char *); -+int putenv (char *); -+int setenv (const char *, const char *, int); -+# endif -+# endif -+#endif -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#if defined(PATH_MAX) -+# define LT_PATHMAX PATH_MAX -+#elif defined(MAXPATHLEN) -+# define LT_PATHMAX MAXPATHLEN -+#else -+# define LT_PATHMAX 1024 -+#endif -+ -+#ifndef S_IXOTH -+# define S_IXOTH 0 -+#endif -+#ifndef S_IXGRP -+# define S_IXGRP 0 -+#endif -+ -+#ifdef _MSC_VER -+# define S_IXUSR _S_IEXEC -+# define stat _stat -+# ifndef _INTPTR_T_DEFINED -+# define intptr_t int -+# endif -+#endif -+ -+#ifndef DIR_SEPARATOR -+# define DIR_SEPARATOR '/' -+# define PATH_SEPARATOR ':' -+#endif -+ -+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ -+ defined (__OS2__) -+# define HAVE_DOS_BASED_FILE_SYSTEM -+# define FOPEN_WB "wb" -+# ifndef DIR_SEPARATOR_2 -+# define DIR_SEPARATOR_2 '\\' -+# endif -+# ifndef PATH_SEPARATOR_2 -+# define PATH_SEPARATOR_2 ';' -+# endif -+#endif -+ -+#ifndef DIR_SEPARATOR_2 -+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -+#else /* DIR_SEPARATOR_2 */ -+# define IS_DIR_SEPARATOR(ch) \ -+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -+#endif /* DIR_SEPARATOR_2 */ -+ -+#ifndef PATH_SEPARATOR_2 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -+#else /* PATH_SEPARATOR_2 */ -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -+#endif /* PATH_SEPARATOR_2 */ -+ -+#ifdef __CYGWIN__ -+# define FOPEN_WB "wb" -+#endif -+ -+#ifndef FOPEN_WB -+# define FOPEN_WB "w" -+#endif -+#ifndef _O_BINARY -+# define _O_BINARY 0 -+#endif -+ -+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -+#define XFREE(stale) do { \ -+ if (stale) { free ((void *) stale); stale = 0; } \ -+} while (0) -+ -+#undef LTWRAPPER_DEBUGPRINTF -+#if defined DEBUGWRAPPER -+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args -+static void -+ltwrapper_debugprintf (const char *fmt, ...) -+{ -+ va_list args; -+ va_start (args, fmt); -+ (void) vfprintf (stderr, fmt, args); -+ va_end (args); -+} -+#else -+# define LTWRAPPER_DEBUGPRINTF(args) -+#endif -+ -+const char *program_name = NULL; -+ -+void *xmalloc (size_t num); -+char *xstrdup (const char *string); -+const char *base_name (const char *name); -+char *find_executable (const char *wrapper); -+char *chase_symlinks (const char *pathspec); -+int make_executable (const char *path); -+int check_executable (const char *path); -+char *strendzap (char *str, const char *pat); -+void lt_fatal (const char *message, ...); -+void lt_setenv (const char *name, const char *value); -+char *lt_extend_str (const char *orig_value, const char *add, int to_end); -+void lt_opt_process_env_set (const char *arg); -+void lt_opt_process_env_prepend (const char *arg); -+void lt_opt_process_env_append (const char *arg); -+int lt_split_name_value (const char *arg, char** name, char** value); -+void lt_update_exe_path (const char *name, const char *value); -+void lt_update_lib_path (const char *name, const char *value); -+ -+static const char *script_text_part1 = -+EOF -+ -+ func_emit_wrapper_part1 yes | -+ $SED -e 's/\([\\"]\)/\\\1/g' \ -+ -e 's/^/ "/' -e 's/$/\\n"/' -+ echo ";" -+ cat <"))); -+ for (i = 0; i < newargc; i++) -+ { -+ LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); -+ } -+ -+EOF -+ -+ case $host_os in -+ mingw*) -+ cat <<"EOF" -+ /* execv doesn't actually work on mingw as expected on unix */ -+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); -+ if (rval == -1) -+ { -+ /* failed to start process */ -+ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); -+ return 127; -+ } -+ return rval; -+EOF -+ ;; -+ *) -+ cat <<"EOF" -+ execv (lt_argv_zero, newargz); -+ return rval; /* =127, but avoids unused variable warning */ -+EOF -+ ;; -+ esac -+ -+ cat <<"EOF" -+} -+ -+void * -+xmalloc (size_t num) -+{ -+ void *p = (void *) malloc (num); -+ if (!p) -+ lt_fatal ("Memory exhausted"); -+ -+ return p; -+} -+ -+char * -+xstrdup (const char *string) -+{ -+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), -+ string) : NULL; -+} -+ -+const char * -+base_name (const char *name) -+{ -+ const char *base; -+ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ /* Skip over the disk name in MSDOS pathnames. */ -+ if (isalpha ((unsigned char) name[0]) && name[1] == ':') -+ name += 2; -+#endif -+ -+ for (base = name; *name; name++) -+ if (IS_DIR_SEPARATOR (*name)) -+ base = name + 1; -+ return base; -+} -+ -+int -+check_executable (const char *path) -+{ -+ struct stat st; -+ -+ LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", -+ path ? (*path ? path : "EMPTY!") : "NULL!")); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if ((stat (path, &st) >= 0) -+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) -+ return 1; -+ else -+ return 0; -+} -+ -+int -+make_executable (const char *path) -+{ -+ int rval = 0; -+ struct stat st; -+ -+ LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", -+ path ? (*path ? path : "EMPTY!") : "NULL!")); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if (stat (path, &st) >= 0) -+ { -+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); -+ } -+ return rval; -+} -+ -+/* Searches for the full path of the wrapper. Returns -+ newly allocated full path name if found, NULL otherwise -+ Does not chase symlinks, even on platforms that support them. -+*/ -+char * -+find_executable (const char *wrapper) -+{ -+ int has_slash = 0; -+ const char *p; -+ const char *p_next; -+ /* static buffer for getcwd */ -+ char tmp[LT_PATHMAX + 1]; -+ int tmp_len; -+ char *concat_name; -+ -+ LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", -+ wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); -+ -+ if ((wrapper == NULL) || (*wrapper == '\0')) -+ return NULL; -+ -+ /* Absolute path? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+ else -+ { -+#endif -+ if (IS_DIR_SEPARATOR (wrapper[0])) -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ } -+#endif -+ -+ for (p = wrapper; *p; p++) -+ if (*p == '/') -+ { -+ has_slash = 1; -+ break; -+ } -+ if (!has_slash) -+ { -+ /* no slashes; search PATH */ -+ const char *path = getenv ("PATH"); -+ if (path != NULL) -+ { -+ for (p = path; *p; p = p_next) -+ { -+ const char *q; -+ size_t p_len; -+ for (q = p; *q; q++) -+ if (IS_PATH_SEPARATOR (*q)) -+ break; -+ p_len = q - p; -+ p_next = (*q == '\0' ? q : q + 1); -+ if (p_len == 0) -+ { -+ /* empty path: current directory */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen (tmp); -+ concat_name = -+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ } -+ else -+ { -+ concat_name = -+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, p, p_len); -+ concat_name[p_len] = '/'; -+ strcpy (concat_name + p_len + 1, wrapper); -+ } -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+ } -+ /* not found in PATH; assume curdir */ -+ } -+ /* Relative path | not found in path: prepend cwd */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen (tmp); -+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ return NULL; -+} -+ -+char * -+chase_symlinks (const char *pathspec) -+{ -+#ifndef S_ISLNK -+ return xstrdup (pathspec); -+#else -+ char buf[LT_PATHMAX]; -+ struct stat s; -+ char *tmp_pathspec = xstrdup (pathspec); -+ char *p; -+ int has_symlinks = 0; -+ while (strlen (tmp_pathspec) && !has_symlinks) -+ { -+ LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", -+ tmp_pathspec)); -+ if (lstat (tmp_pathspec, &s) == 0) -+ { -+ if (S_ISLNK (s.st_mode) != 0) -+ { -+ has_symlinks = 1; -+ break; -+ } -+ -+ /* search backwards for last DIR_SEPARATOR */ -+ p = tmp_pathspec + strlen (tmp_pathspec) - 1; -+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) -+ p--; -+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) -+ { -+ /* no more DIR_SEPARATORS left */ -+ break; -+ } -+ *p = '\0'; -+ } -+ else -+ { -+ char *errstr = strerror (errno); -+ lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); -+ } -+ } -+ XFREE (tmp_pathspec); -+ -+ if (!has_symlinks) -+ { -+ return xstrdup (pathspec); -+ } -+ -+ tmp_pathspec = realpath (pathspec, buf); -+ if (tmp_pathspec == 0) -+ { -+ lt_fatal ("Could not follow symlinks for %s", pathspec); -+ } -+ return xstrdup (tmp_pathspec); -+#endif -+} -+ -+char * -+strendzap (char *str, const char *pat) -+{ -+ size_t len, patlen; -+ -+ assert (str != NULL); -+ assert (pat != NULL); -+ -+ len = strlen (str); -+ patlen = strlen (pat); -+ -+ if (patlen <= len) -+ { -+ str += len - patlen; -+ if (strcmp (str, pat) == 0) -+ *str = '\0'; -+ } -+ return str; -+} -+ -+static void -+lt_error_core (int exit_status, const char *mode, -+ const char *message, va_list ap) -+{ -+ fprintf (stderr, "%s: %s: ", program_name, mode); -+ vfprintf (stderr, message, ap); -+ fprintf (stderr, ".\n"); -+ -+ if (exit_status >= 0) -+ exit (exit_status); -+} -+ -+void -+lt_fatal (const char *message, ...) -+{ -+ va_list ap; -+ va_start (ap, message); -+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap); -+ va_end (ap); -+} -+ -+void -+lt_setenv (const char *name, const char *value) -+{ -+ LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", -+ (name ? name : ""), -+ (value ? value : ""))); -+ { -+#ifdef HAVE_SETENV -+ /* always make a copy, for consistency with !HAVE_SETENV */ -+ char *str = xstrdup (value); -+ setenv (name, str, 1); -+#else -+ int len = strlen (name) + 1 + strlen (value) + 1; -+ char *str = XMALLOC (char, len); -+ sprintf (str, "%s=%s", name, value); -+ if (putenv (str) != EXIT_SUCCESS) -+ { -+ XFREE (str); -+ } -+#endif -+ } -+} -+ -+char * -+lt_extend_str (const char *orig_value, const char *add, int to_end) -+{ -+ char *new_value; -+ if (orig_value && *orig_value) -+ { -+ int orig_value_len = strlen (orig_value); -+ int add_len = strlen (add); -+ new_value = XMALLOC (char, add_len + orig_value_len + 1); -+ if (to_end) -+ { -+ strcpy (new_value, orig_value); -+ strcpy (new_value + orig_value_len, add); -+ } -+ else -+ { -+ strcpy (new_value, add); -+ strcpy (new_value + add_len, orig_value); -+ } -+ } -+ else -+ { -+ new_value = xstrdup (add); -+ } -+ return new_value; -+} -+ -+int -+lt_split_name_value (const char *arg, char** name, char** value) -+{ -+ const char *p; -+ int len; -+ if (!arg || !*arg) -+ return 1; -+ -+ p = strchr (arg, (int)'='); -+ -+ if (!p) -+ return 1; -+ -+ *value = xstrdup (++p); -+ -+ len = strlen (arg) - strlen (*value); -+ *name = XMALLOC (char, len); -+ strncpy (*name, arg, len-1); -+ (*name)[len - 1] = '\0'; -+ -+ return 0; -+} -+ -+void -+lt_opt_process_env_set (const char *arg) -+{ -+ char *name = NULL; -+ char *value = NULL; -+ -+ if (lt_split_name_value (arg, &name, &value) != 0) -+ { -+ XFREE (name); -+ XFREE (value); -+ lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); -+ } -+ -+ lt_setenv (name, value); -+ XFREE (name); -+ XFREE (value); -+} -+ -+void -+lt_opt_process_env_prepend (const char *arg) -+{ -+ char *name = NULL; -+ char *value = NULL; -+ char *new_value = NULL; -+ -+ if (lt_split_name_value (arg, &name, &value) != 0) -+ { -+ XFREE (name); -+ XFREE (value); -+ lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); -+ } -+ -+ new_value = lt_extend_str (getenv (name), value, 0); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ XFREE (name); -+ XFREE (value); -+} -+ -+void -+lt_opt_process_env_append (const char *arg) -+{ -+ char *name = NULL; -+ char *value = NULL; -+ char *new_value = NULL; -+ -+ if (lt_split_name_value (arg, &name, &value) != 0) -+ { -+ XFREE (name); -+ XFREE (value); -+ lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); -+ } -+ -+ new_value = lt_extend_str (getenv (name), value, 1); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ XFREE (name); -+ XFREE (value); -+} -+ -+void -+lt_update_exe_path (const char *name, const char *value) -+{ -+ LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", -+ (name ? name : ""), -+ (value ? value : ""))); -+ -+ if (name && *name && value && *value) -+ { -+ char *new_value = lt_extend_str (getenv (name), value, 0); -+ /* some systems can't cope with a ':'-terminated path #' */ -+ int len = strlen (new_value); -+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) -+ { -+ new_value[len-1] = '\0'; -+ } -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ } -+} -+ -+void -+lt_update_lib_path (const char *name, const char *value) -+{ -+ LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", -+ (name ? name : ""), -+ (value ? value : ""))); -+ -+ if (name && *name && value && *value) -+ { -+ char *new_value = lt_extend_str (getenv (name), value, 0); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ } -+} -+ -+ -+EOF -+} -+# end: func_emit_cwrapperexe_src -+ -+# func_mode_link arg... -+func_mode_link () -+{ -+ $opt_debug -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ # It is impossible to link a dll without this setting, and -+ # we shouldn't force the makefile maintainer to figure out -+ # which system we are compiling for in order to pass an extra -+ # flag for every libtool invocation. -+ # allow_undefined=no -+ -+ # FIXME: Unfortunately, there are problems with the above when trying -+ # to make a dll which has undefined symbols, in which case not -+ # even a static library is built. For now, we need to specify -+ # -no-undefined on the libtool link line when we can be certain -+ # that all symbols are satisfied, otherwise we get a static library. -+ allow_undefined=yes -+ ;; -+ *) -+ allow_undefined=yes -+ ;; -+ esac -+ libtool_args=$nonopt -+ base_compile="$nonopt $@" -+ compile_command=$nonopt -+ finalize_command=$nonopt -+ -+ compile_rpath= -+ finalize_rpath= -+ compile_shlibpath= -+ finalize_shlibpath= -+ convenience= -+ old_convenience= -+ deplibs= -+ old_deplibs= -+ compiler_flags= -+ linker_flags= -+ dllsearchpath= -+ lib_search_path=`pwd` -+ inst_prefix_dir= -+ new_inherited_linker_flags= -+ -+ avoid_version=no -+ dlfiles= -+ dlprefiles= -+ dlself=no -+ export_dynamic=no -+ export_symbols= -+ export_symbols_regex= -+ generated= -+ libobjs= -+ ltlibs= -+ module=no -+ no_install=no -+ objs= -+ non_pic_objects= -+ precious_files_regex= -+ prefer_static_libs=no -+ preload=no -+ prev= -+ prevarg= -+ release= -+ rpath= -+ xrpath= -+ perm_rpath= -+ temp_rpath= -+ thread_safe=no -+ vinfo= -+ vinfo_number=no -+ weak_libs= -+ single_module="${wl}-single_module" -+ func_infer_tag $base_compile -+ -+ # We need to know -static, to get the right output filenames. -+ for arg -+ do -+ case $arg in -+ -shared) -+ test "$build_libtool_libs" != yes && \ -+ func_fatal_configuration "can not build a shared library" -+ build_old_libs=no -+ break -+ ;; -+ -all-static | -static | -static-libtool-libs) -+ case $arg in -+ -all-static) -+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then -+ func_warning "complete static linking is impossible in this configuration" -+ fi -+ if test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ -static) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=built -+ ;; -+ -static-libtool-libs) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ esac -+ build_libtool_libs=no -+ build_old_libs=yes -+ break -+ ;; -+ esac -+ done -+ -+ # See if our shared archives depend on static archives. -+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes -+ -+ # Go through the arguments, transforming them on the way. -+ while test "$#" -gt 0; do -+ arg="$1" -+ shift -+ func_quote_for_eval "$arg" -+ qarg=$func_quote_for_eval_unquoted_result -+ func_append libtool_args " $func_quote_for_eval_result" -+ -+ # If the previous option needs an argument, assign it. -+ if test -n "$prev"; then -+ case $prev in -+ output) -+ func_append compile_command " @OUTPUT@" -+ func_append finalize_command " @OUTPUT@" -+ ;; -+ esac -+ -+ case $prev in -+ dlfiles|dlprefiles) -+ if test "$preload" = no; then -+ # Add the symbol object into the linking commands. -+ func_append compile_command " @SYMFILE@" -+ func_append finalize_command " @SYMFILE@" -+ preload=yes -+ fi -+ case $arg in -+ *.la | *.lo) ;; # We handle these cases below. -+ force) -+ if test "$dlself" = no; then -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ self) -+ if test "$prev" = dlprefiles; then -+ dlself=yes -+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then -+ dlself=yes -+ else -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ *) -+ if test "$prev" = dlfiles; then -+ dlfiles="$dlfiles $arg" -+ else -+ dlprefiles="$dlprefiles $arg" -+ fi -+ prev= -+ continue -+ ;; -+ esac -+ ;; -+ expsyms) -+ export_symbols="$arg" -+ test -f "$arg" \ -+ || func_fatal_error "symbol file \`$arg' does not exist" -+ prev= -+ continue -+ ;; -+ expsyms_regex) -+ export_symbols_regex="$arg" -+ prev= -+ continue -+ ;; -+ framework) -+ case $host in -+ *-*-darwin*) -+ case "$deplibs " in -+ *" $qarg.ltframework "*) ;; -+ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later -+ ;; -+ esac -+ ;; -+ esac -+ prev= -+ continue -+ ;; -+ inst_prefix) -+ inst_prefix_dir="$arg" -+ prev= -+ continue -+ ;; -+ objectlist) -+ if test -f "$arg"; then -+ save_arg=$arg -+ moreargs= -+ for fil in `cat "$save_arg"` -+ do -+# moreargs="$moreargs $fil" -+ arg=$fil -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if func_lalib_unsafe_p "$arg"; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ func_source "$arg" -+ -+ if test -z "$pic_object" || -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && -+ test "$non_pic_object" = none; then -+ func_fatal_error "cannot find name of object for \`$arg'" -+ fi -+ -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ dlfiles="$dlfiles $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ dlprefiles="$dlprefiles $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ func_append libobjs " $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ func_append non_pic_objects " $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if $opt_dry_run; then -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ func_lo2o "$arg" -+ pic_object=$xdir$objdir/$func_lo2o_result -+ non_pic_object=$xdir$func_lo2o_result -+ func_append libobjs " $pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ else -+ func_fatal_error "\`$arg' is not a valid libtool object" -+ fi -+ fi -+ done -+ else -+ func_fatal_error "link input file \`$arg' does not exist" -+ fi -+ arg=$save_arg -+ prev= -+ continue -+ ;; -+ precious_regex) -+ precious_files_regex="$arg" -+ prev= -+ continue -+ ;; -+ release) -+ release="-$arg" -+ prev= -+ continue -+ ;; -+ rpath | xrpath) -+ # We need an absolute path. -+ case $arg in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ func_fatal_error "only absolute run-paths are allowed" -+ ;; -+ esac -+ if test "$prev" = rpath; then -+ case "$rpath " in -+ *" $arg "*) ;; -+ *) rpath="$rpath $arg" ;; -+ esac -+ else -+ case "$xrpath " in -+ *" $arg "*) ;; -+ *) xrpath="$xrpath $arg" ;; -+ esac -+ fi -+ prev= -+ continue -+ ;; -+ shrext) -+ shrext_cmds="$arg" -+ prev= -+ continue -+ ;; -+ weak) -+ weak_libs="$weak_libs $arg" -+ prev= -+ continue -+ ;; -+ xcclinker) -+ linker_flags="$linker_flags $qarg" -+ compiler_flags="$compiler_flags $qarg" -+ prev= -+ func_append compile_command " $qarg" -+ func_append finalize_command " $qarg" -+ continue -+ ;; -+ xcompiler) -+ compiler_flags="$compiler_flags $qarg" -+ prev= -+ func_append compile_command " $qarg" -+ func_append finalize_command " $qarg" -+ continue -+ ;; -+ xlinker) -+ linker_flags="$linker_flags $qarg" -+ compiler_flags="$compiler_flags $wl$qarg" -+ prev= -+ func_append compile_command " $wl$qarg" -+ func_append finalize_command " $wl$qarg" -+ continue -+ ;; -+ *) -+ eval "$prev=\"\$arg\"" -+ prev= -+ continue -+ ;; -+ esac -+ fi # test -n "$prev" -+ -+ prevarg="$arg" -+ -+ case $arg in -+ -all-static) -+ if test -n "$link_static_flag"; then -+ # See comment for -static flag below, for more details. -+ func_append compile_command " $link_static_flag" -+ func_append finalize_command " $link_static_flag" -+ fi -+ continue -+ ;; -+ -+ -allow-undefined) -+ # FIXME: remove this flag sometime in the future. -+ func_fatal_error "\`-allow-undefined' must not be used because it is the default" -+ ;; -+ -+ -avoid-version) -+ avoid_version=yes -+ continue -+ ;; -+ -+ -dlopen) -+ prev=dlfiles -+ continue -+ ;; -+ -+ -dlpreopen) -+ prev=dlprefiles -+ continue -+ ;; -+ -+ -export-dynamic) -+ export_dynamic=yes -+ continue -+ ;; -+ -+ -export-symbols | -export-symbols-regex) -+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then -+ func_fatal_error "more than one -exported-symbols argument is not allowed" -+ fi -+ if test "X$arg" = "X-export-symbols"; then -+ prev=expsyms -+ else -+ prev=expsyms_regex -+ fi -+ continue -+ ;; -+ -+ -framework) -+ prev=framework -+ continue -+ ;; -+ -+ -inst-prefix-dir) -+ prev=inst_prefix -+ continue -+ ;; -+ -+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* -+ # so, if we see these flags be careful not to treat them like -L -+ -L[A-Z][A-Z]*:*) -+ case $with_gcc/$host in -+ no/*-*-irix* | /*-*-irix*) -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ ;; -+ esac -+ continue -+ ;; -+ -+ -L*) -+ func_stripname '-L' '' "$arg" -+ dir=$func_stripname_result -+ if test -z "$dir"; then -+ if test "$#" -gt 0; then -+ func_fatal_error "require no space between \`-L' and \`$1'" -+ else -+ func_fatal_error "need path for \`-L' option" -+ fi -+ fi -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ test -z "$absdir" && \ -+ func_fatal_error "cannot determine absolute directory name of \`$dir'" -+ dir="$absdir" -+ ;; -+ esac -+ case "$deplibs " in -+ *" -L$dir "*) ;; -+ *) -+ deplibs="$deplibs -L$dir" -+ lib_search_path="$lib_search_path $dir" -+ ;; -+ esac -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$dir:"*) ;; -+ ::) dllsearchpath=$dir;; -+ *) dllsearchpath="$dllsearchpath:$dir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ ::) dllsearchpath=$testbindir;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac -+ ;; -+ esac -+ continue -+ ;; -+ -+ -l*) -+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) -+ # These systems don't actually have a C or math library (as such) -+ continue -+ ;; -+ *-*-os2*) -+ # These systems don't actually have a C library (as such) -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C and math libraries are in the System framework -+ deplibs="$deplibs System.ltframework" -+ continue -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ test "X$arg" = "X-lc" && continue -+ ;; -+ esac -+ elif test "X$arg" = "X-lc_r"; then -+ case $host in -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc_r directly, use -pthread flag. -+ continue -+ ;; -+ esac -+ fi -+ deplibs="$deplibs $arg" -+ continue -+ ;; -+ -+ -module) -+ module=yes -+ continue -+ ;; -+ -+ # Tru64 UNIX uses -model [arg] to determine the layout of C++ -+ # classes, name mangling, and exception handling. -+ # Darwin uses the -arch flag to determine output architecture. -+ -model|-arch|-isysroot) -+ compiler_flags="$compiler_flags $arg" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ prev=xcompiler -+ continue -+ ;; -+ -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -+ compiler_flags="$compiler_flags $arg" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ case "$new_inherited_linker_flags " in -+ *" $arg "*) ;; -+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; -+ esac -+ continue -+ ;; -+ -+ -multi_module) -+ single_module="${wl}-multi_module" -+ continue -+ ;; -+ -+ -no-fast-install) -+ fast_install=no -+ continue -+ ;; -+ -+ -no-install) -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) -+ # The PATH hackery in wrapper scripts is required on Windows -+ # and Darwin in order for the loader to find any dlls it needs. -+ func_warning "\`-no-install' is ignored for $host" -+ func_warning "assuming \`-no-fast-install' instead" -+ fast_install=no -+ ;; -+ *) no_install=yes ;; -+ esac -+ continue -+ ;; -+ -+ -no-undefined) -+ allow_undefined=no -+ continue -+ ;; -+ -+ -objectlist) -+ prev=objectlist -+ continue -+ ;; -+ -+ -o) prev=output ;; -+ -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ -+ -release) -+ prev=release -+ continue -+ ;; -+ -+ -rpath) -+ prev=rpath -+ continue -+ ;; -+ -+ -R) -+ prev=xrpath -+ continue -+ ;; -+ -+ -R*) -+ func_stripname '-R' '' "$arg" -+ dir=$func_stripname_result -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ func_fatal_error "only absolute run-paths are allowed" -+ ;; -+ esac -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) xrpath="$xrpath $dir" ;; -+ esac -+ continue -+ ;; -+ -+ -shared) -+ # The effects of -shared are defined in a previous loop. -+ continue -+ ;; -+ -+ -shrext) -+ prev=shrext -+ continue -+ ;; -+ -+ -static | -static-libtool-libs) -+ # The effects of -static are defined in a previous loop. -+ # We used to do the same as -all-static on platforms that -+ # didn't have a PIC flag, but the assumption that the effects -+ # would be equivalent was wrong. It would break on at least -+ # Digital Unix and AIX. -+ continue -+ ;; -+ -+ -thread-safe) -+ thread_safe=yes -+ continue -+ ;; -+ -+ -version-info) -+ prev=vinfo -+ continue -+ ;; -+ -+ -version-number) -+ prev=vinfo -+ vinfo_number=yes -+ continue -+ ;; -+ -+ -weak) -+ prev=weak -+ continue -+ ;; -+ -+ -Wc,*) -+ func_stripname '-Wc,' '' "$arg" -+ args=$func_stripname_result -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ func_quote_for_eval "$flag" -+ arg="$arg $wl$func_quote_for_eval_result" -+ compiler_flags="$compiler_flags $func_quote_for_eval_result" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$arg" -+ arg=$func_stripname_result -+ ;; -+ -+ -Wl,*) -+ func_stripname '-Wl,' '' "$arg" -+ args=$func_stripname_result -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ func_quote_for_eval "$flag" -+ arg="$arg $wl$func_quote_for_eval_result" -+ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" -+ linker_flags="$linker_flags $func_quote_for_eval_result" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$arg" -+ arg=$func_stripname_result -+ ;; -+ -+ -Xcompiler) -+ prev=xcompiler -+ continue -+ ;; -+ -+ -Xlinker) -+ prev=xlinker -+ continue -+ ;; -+ -+ -XCClinker) -+ prev=xcclinker -+ continue -+ ;; -+ -+ # -msg_* for osf cc -+ -msg_*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ -+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler -+ # -r[0-9][0-9]* specifies the processor on the SGI compiler -+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler -+ # +DA*, +DD* enable 64-bit mode on the HP compiler -+ # -q* pass through compiler args for the IBM compiler -+ # -m*, -t[45]*, -txscale* pass through architecture-specific -+ # compiler args for GCC -+ # -F/path gives path to uninstalled frameworks, gcc on darwin -+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC -+ # @file GCC response files -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ compiler_flags="$compiler_flags $arg" -+ continue -+ ;; -+ -+ # Some other compiler flag. -+ -* | +*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ -+ *.$objext) -+ # A standard object. -+ objs="$objs $arg" -+ ;; -+ -+ *.lo) -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if func_lalib_unsafe_p "$arg"; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ func_source "$arg" -+ -+ if test -z "$pic_object" || -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && -+ test "$non_pic_object" = none; then -+ func_fatal_error "cannot find name of object for \`$arg'" -+ fi -+ -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ dlfiles="$dlfiles $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ dlprefiles="$dlprefiles $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ func_append libobjs " $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ func_append non_pic_objects " $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if $opt_dry_run; then -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ func_lo2o "$arg" -+ pic_object=$xdir$objdir/$func_lo2o_result -+ non_pic_object=$xdir$func_lo2o_result -+ func_append libobjs " $pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ else -+ func_fatal_error "\`$arg' is not a valid libtool object" -+ fi -+ fi -+ ;; -+ -+ *.$libext) -+ # An archive. -+ deplibs="$deplibs $arg" -+ old_deplibs="$old_deplibs $arg" -+ continue -+ ;; -+ -+ *.la) -+ # A libtool-controlled library. -+ -+ if test "$prev" = dlfiles; then -+ # This library was specified with -dlopen. -+ dlfiles="$dlfiles $arg" -+ prev= -+ elif test "$prev" = dlprefiles; then -+ # The library was specified with -dlpreopen. -+ dlprefiles="$dlprefiles $arg" -+ prev= -+ else -+ deplibs="$deplibs $arg" -+ fi -+ continue -+ ;; -+ -+ # Some other compiler argument. -+ *) -+ # Unknown arguments in both finalize_command and compile_command need -+ # to be aesthetically quoted because they are evaled later. -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ esac # arg -+ -+ # Now actually substitute the argument into the commands. -+ if test -n "$arg"; then -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ fi -+ done # argument parsing loop -+ -+ test -n "$prev" && \ -+ func_fatal_help "the \`$prevarg' option requires an argument" -+ -+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -+ eval arg=\"$export_dynamic_flag_spec\" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ fi -+ -+ oldlibs= -+ # calculate the name of the file, without its directory -+ func_basename "$output" -+ outputname="$func_basename_result" -+ libobjs_save="$libobjs" -+ -+ if test -n "$shlibpath_var"; then -+ # get the directories listed in $shlibpath_var -+ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` -+ else -+ shlib_search_path= -+ fi -+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\" -+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" -+ -+ func_dirname "$output" "/" "" -+ output_objdir="$func_dirname_result$objdir" -+ # Create the object directory. -+ func_mkdir_p "$output_objdir" -+ -+ # Determine the type of output -+ case $output in -+ "") -+ func_fatal_help "you must specify an output file" -+ ;; -+ *.$libext) linkmode=oldlib ;; -+ *.lo | *.$objext) linkmode=obj ;; -+ *.la) linkmode=lib ;; -+ *) linkmode=prog ;; # Anything else should be a program. -+ esac -+ -+ specialdeplibs= -+ -+ libs= -+ # Find all interdependent deplibs by searching for libraries -+ # that are linked more than once (e.g. -la -lb -la) -+ for deplib in $deplibs; do -+ if $opt_duplicate_deps ; then -+ case "$libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ libs="$libs $deplib" -+ done -+ -+ if test "$linkmode" = lib; then -+ libs="$predeps $libs $compiler_lib_search_path $postdeps" -+ -+ # Compute libraries that are listed more than once in $predeps -+ # $postdeps and mark them as special (i.e., whose duplicates are -+ # not to be eliminated). -+ pre_post_deps= -+ if $opt_duplicate_compiler_generated_deps; then -+ for pre_post_dep in $predeps $postdeps; do -+ case "$pre_post_deps " in -+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; -+ esac -+ pre_post_deps="$pre_post_deps $pre_post_dep" -+ done -+ fi -+ pre_post_deps= -+ fi -+ -+ deplibs= -+ newdependency_libs= -+ newlib_search_path= -+ need_relink=no # whether we're linking any uninstalled libtool libraries -+ notinst_deplibs= # not-installed libtool libraries -+ notinst_path= # paths that contain not-installed libtool libraries -+ -+ case $linkmode in -+ lib) -+ passes="conv dlpreopen link" -+ for file in $dlfiles $dlprefiles; do -+ case $file in -+ *.la) ;; -+ *) -+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" -+ ;; -+ esac -+ done -+ ;; -+ prog) -+ compile_deplibs= -+ finalize_deplibs= -+ alldeplibs=no -+ newdlfiles= -+ newdlprefiles= -+ passes="conv scan dlopen dlpreopen link" -+ ;; -+ *) passes="conv" -+ ;; -+ esac -+ -+ for pass in $passes; do -+ # The preopen pass in lib mode reverses $deplibs; put it back here -+ # so that -L comes before libs that need it for instance... -+ if test "$linkmode,$pass" = "lib,link"; then -+ ## FIXME: Find the place where the list is rebuilt in the wrong -+ ## order, and fix it there properly -+ tmp_deplibs= -+ for deplib in $deplibs; do -+ tmp_deplibs="$deplib $tmp_deplibs" -+ done -+ deplibs="$tmp_deplibs" -+ fi -+ -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan"; then -+ libs="$deplibs" -+ deplibs= -+ fi -+ if test "$linkmode" = prog; then -+ case $pass in -+ dlopen) libs="$dlfiles" ;; -+ dlpreopen) libs="$dlprefiles" ;; -+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; -+ esac -+ fi -+ if test "$linkmode,$pass" = "lib,dlpreopen"; then -+ # Collect and forward deplibs of preopened libtool libs -+ for lib in $dlprefiles; do -+ # Ignore non-libtool-libs -+ dependency_libs= -+ case $lib in -+ *.la) func_source "$lib" ;; -+ esac -+ -+ # Collect preopened libtool deplibs, except any this library -+ # has declared as weak libs -+ for deplib in $dependency_libs; do -+ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` -+ case " $weak_libs " in -+ *" $deplib_base "*) ;; -+ *) deplibs="$deplibs $deplib" ;; -+ esac -+ done -+ done -+ libs="$dlprefiles" -+ fi -+ if test "$pass" = dlopen; then -+ # Collect dlpreopened libraries -+ save_deplibs="$deplibs" -+ deplibs= -+ fi -+ -+ for deplib in $libs; do -+ lib= -+ found=no -+ case $deplib in -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags $deplib" -+ if test "$linkmode" = lib ; then -+ case "$new_inherited_linker_flags " in -+ *" $deplib "*) ;; -+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; -+ esac -+ fi -+ fi -+ continue -+ ;; -+ -l*) -+ if test "$linkmode" != lib && test "$linkmode" != prog; then -+ func_warning "\`-l' is ignored for archives/objects" -+ continue -+ fi -+ func_stripname '-l' '' "$deplib" -+ name=$func_stripname_result -+ if test "$linkmode" = lib; then -+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" -+ else -+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" -+ fi -+ for searchdir in $searchdirs; do -+ for search_ext in .la $std_shrext .so .a; do -+ # Search the libtool library -+ lib="$searchdir/lib${name}${search_ext}" -+ if test -f "$lib"; then -+ if test "$search_ext" = ".la"; then -+ found=yes -+ else -+ found=no -+ fi -+ break 2 -+ fi -+ done -+ done -+ if test "$found" != yes; then -+ # deplib doesn't seem to be a libtool library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ else # deplib is a libtool library -+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, -+ # We need to do some special things here, and not later. -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $deplib "*) -+ if func_lalib_p "$lib"; then -+ library_names= -+ old_library= -+ func_source "$lib" -+ for l in $old_library $library_names; do -+ ll="$l" -+ done -+ if test "X$ll" = "X$old_library" ; then # only static version available -+ found=no -+ func_dirname "$lib" "" "." -+ ladir="$func_dirname_result" -+ lib=$ladir/$old_library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ fi -+ fi -+ ;; -+ *) ;; -+ esac -+ fi -+ fi -+ ;; # -l -+ *.ltframework) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ if test "$linkmode" = lib ; then -+ case "$new_inherited_linker_flags " in -+ *" $deplib "*) ;; -+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; -+ esac -+ fi -+ fi -+ continue -+ ;; -+ -L*) -+ case $linkmode in -+ lib) -+ deplibs="$deplib $deplibs" -+ test "$pass" = conv && continue -+ newdependency_libs="$deplib $newdependency_libs" -+ func_stripname '-L' '' "$deplib" -+ newlib_search_path="$newlib_search_path $func_stripname_result" -+ ;; -+ prog) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ if test "$pass" = scan; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ func_stripname '-L' '' "$deplib" -+ newlib_search_path="$newlib_search_path $func_stripname_result" -+ ;; -+ *) -+ func_warning "\`-L' is ignored for archives/objects" -+ ;; -+ esac # linkmode -+ continue -+ ;; # -L -+ -R*) -+ if test "$pass" = link; then -+ func_stripname '-R' '' "$deplib" -+ dir=$func_stripname_result -+ # Make sure the xrpath contains only unique directories. -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) xrpath="$xrpath $dir" ;; -+ esac -+ fi -+ deplibs="$deplib $deplibs" -+ continue -+ ;; -+ *.la) lib="$deplib" ;; -+ *.$libext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ case $linkmode in -+ lib) -+ # Linking convenience modules into shared libraries is allowed, -+ # but linking other static libraries is non-portable. -+ case " $dlpreconveniencelibs " in -+ *" $deplib "*) ;; -+ *) -+ valid_a_lib=no -+ case $deplibs_check_method in -+ match_pattern*) -+ set dummy $deplibs_check_method; shift -+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -+ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ -+ | $EGREP "$match_pattern_regex" > /dev/null; then -+ valid_a_lib=yes -+ fi -+ ;; -+ pass_all) -+ valid_a_lib=yes -+ ;; -+ esac -+ if test "$valid_a_lib" != yes; then -+ $ECHO -+ $ECHO "*** Warning: Trying to link with static lib archive $deplib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have" -+ $ECHO "*** because the file extensions .$libext of this argument makes me believe" -+ $ECHO "*** that it is just a static archive that I should not use here." -+ else -+ $ECHO -+ $ECHO "*** Warning: Linking the shared library $output against the" -+ $ECHO "*** static library $deplib is not portable!" -+ deplibs="$deplib $deplibs" -+ fi -+ ;; -+ esac -+ continue -+ ;; -+ prog) -+ if test "$pass" != link; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ continue -+ ;; -+ esac # linkmode -+ ;; # *.$libext -+ *.lo | *.$objext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ elif test "$linkmode" = prog; then -+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ # If there is no dlopen support or we're linking statically, -+ # we need to preload. -+ newdlprefiles="$newdlprefiles $deplib" -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ newdlfiles="$newdlfiles $deplib" -+ fi -+ fi -+ continue -+ ;; -+ %DEPLIBS%) -+ alldeplibs=yes -+ continue -+ ;; -+ esac # case $deplib -+ -+ if test "$found" = yes || test -f "$lib"; then : -+ else -+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" -+ fi -+ -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$lib" \ -+ || func_fatal_error "\`$lib' is not a valid libtool archive" -+ -+ func_dirname "$lib" "" "." -+ ladir="$func_dirname_result" -+ -+ dlname= -+ dlopen= -+ dlpreopen= -+ libdir= -+ library_names= -+ old_library= -+ inherited_linker_flags= -+ # If the library was installed with an old release of libtool, -+ # it will not redefine variables installed, or shouldnotlink -+ installed=yes -+ shouldnotlink=no -+ avoidtemprpath= -+ -+ -+ # Read the .la file -+ func_source "$lib" -+ -+ # Convert "-framework foo" to "foo.ltframework" -+ if test -n "$inherited_linker_flags"; then -+ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` -+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do -+ case " $new_inherited_linker_flags " in -+ *" $tmp_inherited_linker_flag "*) ;; -+ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; -+ esac -+ done -+ fi -+ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan" || -+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then -+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen" -+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" -+ fi -+ -+ if test "$pass" = conv; then -+ # Only check for convenience libraries -+ deplibs="$lib $deplibs" -+ if test -z "$libdir"; then -+ if test -z "$old_library"; then -+ func_fatal_error "cannot find name of link library for \`$lib'" -+ fi -+ # It is a libtool convenience library, so add in its objects. -+ convenience="$convenience $ladir/$objdir/$old_library" -+ old_convenience="$old_convenience $ladir/$objdir/$old_library" -+ elif test "$linkmode" != prog && test "$linkmode" != lib; then -+ func_fatal_error "\`$lib' is not a convenience library" -+ fi -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ deplibs="$deplib $deplibs" -+ if $opt_duplicate_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done -+ continue -+ fi # $pass = conv -+ -+ -+ # Get the name of the library we link against. -+ linklib= -+ for l in $old_library $library_names; do -+ linklib="$l" -+ done -+ if test -z "$linklib"; then -+ func_fatal_error "cannot find name of link library for \`$lib'" -+ fi -+ -+ # This library was specified with -dlopen. -+ if test "$pass" = dlopen; then -+ if test -z "$libdir"; then -+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'" -+ fi -+ if test -z "$dlname" || -+ test "$dlopen_support" != yes || -+ test "$build_libtool_libs" = no; then -+ # If there is no dlname, no dlopen support or we're linking -+ # statically, we need to preload. We also need to preload any -+ # dependent libraries so libltdl's deplib preloader doesn't -+ # bomb out in the load deplibs phase. -+ dlprefiles="$dlprefiles $lib $dependency_libs" -+ else -+ newdlfiles="$newdlfiles $lib" -+ fi -+ continue -+ fi # $pass = dlopen -+ -+ # We need an absolute path. -+ case $ladir in -+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; -+ *) -+ abs_ladir=`cd "$ladir" && pwd` -+ if test -z "$abs_ladir"; then -+ func_warning "cannot determine absolute directory name of \`$ladir'" -+ func_warning "passing it literally to the linker, although it might fail" -+ abs_ladir="$ladir" -+ fi -+ ;; -+ esac -+ func_basename "$lib" -+ laname="$func_basename_result" -+ -+ # Find the relevant object directory and library name. -+ if test "X$installed" = Xyes; then -+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ func_warning "library \`$lib' was moved." -+ dir="$ladir" -+ absdir="$abs_ladir" -+ libdir="$abs_ladir" -+ else -+ dir="$libdir" -+ absdir="$libdir" -+ fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes -+ else -+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ dir="$ladir" -+ absdir="$abs_ladir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ else -+ dir="$ladir/$objdir" -+ absdir="$abs_ladir/$objdir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ fi -+ fi # $installed = yes -+ func_stripname 'lib' '.la' "$laname" -+ name=$func_stripname_result -+ -+ # This library was specified with -dlpreopen. -+ if test "$pass" = dlpreopen; then -+ if test -z "$libdir" && test "$linkmode" = prog; then -+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" -+ fi -+ # Prefer using a static library (so that no silly _DYNAMIC symbols -+ # are required to link). -+ if test -n "$old_library"; then -+ newdlprefiles="$newdlprefiles $dir/$old_library" -+ # Keep a list of preopened convenience libraries to check -+ # that they are being used correctly in the link pass. -+ test -z "$libdir" && \ -+ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" -+ # Otherwise, use the dlname, so that lt_dlopen finds it. -+ elif test -n "$dlname"; then -+ newdlprefiles="$newdlprefiles $dir/$dlname" -+ else -+ newdlprefiles="$newdlprefiles $dir/$linklib" -+ fi -+ fi # $pass = dlpreopen -+ -+ if test -z "$libdir"; then -+ # Link the convenience library -+ if test "$linkmode" = lib; then -+ deplibs="$dir/$old_library $deplibs" -+ elif test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$dir/$old_library $compile_deplibs" -+ finalize_deplibs="$dir/$old_library $finalize_deplibs" -+ else -+ deplibs="$lib $deplibs" # used for prog,scan pass -+ fi -+ continue -+ fi -+ -+ -+ if test "$linkmode" = prog && test "$pass" != link; then -+ newlib_search_path="$newlib_search_path $ladir" -+ deplibs="$lib $deplibs" -+ -+ linkalldeplibs=no -+ if test "$link_all_deplibs" != no || test -z "$library_names" || -+ test "$build_libtool_libs" = no; then -+ linkalldeplibs=yes -+ fi -+ -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) func_stripname '-L' '' "$deplib" -+ newlib_search_path="$newlib_search_path $func_stripname_result" -+ ;; -+ esac -+ # Need to link against all dependency_libs? -+ if test "$linkalldeplibs" = yes; then -+ deplibs="$deplib $deplibs" -+ else -+ # Need to hardcode shared library paths -+ # or/and link against static libraries -+ newdependency_libs="$deplib $newdependency_libs" -+ fi -+ if $opt_duplicate_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done # for deplib -+ continue -+ fi # $linkmode = prog... -+ -+ if test "$linkmode,$pass" = "prog,link"; then -+ if test -n "$library_names" && -+ { { test "$prefer_static_libs" = no || -+ test "$prefer_static_libs,$installed" = "built,yes"; } || -+ test -z "$old_library"; }; then -+ # We need to hardcode the library path -+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then -+ # Make sure the rpath contains only unique directories. -+ case "$temp_rpath:" in -+ *"$absdir:"*) ;; -+ *) temp_rpath="$temp_rpath$absdir:" ;; -+ esac -+ fi -+ -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) compile_rpath="$compile_rpath $absdir" -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" -+ esac -+ ;; -+ esac -+ fi # $linkmode,$pass = prog,link... -+ -+ if test "$alldeplibs" = yes && -+ { test "$deplibs_check_method" = pass_all || -+ { test "$build_libtool_libs" = yes && -+ test -n "$library_names"; }; }; then -+ # We only need to search for static libraries -+ continue -+ fi -+ fi -+ -+ link_static=no # Whether the deplib will be linked statically -+ use_static_libs=$prefer_static_libs -+ if test "$use_static_libs" = built && test "$installed" = yes; then -+ use_static_libs=no -+ fi -+ if test -n "$library_names" && -+ { test "$use_static_libs" = no || test -z "$old_library"; }; then -+ case $host in -+ *cygwin* | *mingw* | *cegcc*) -+ # No point in relinking DLLs because paths are not encoded -+ notinst_deplibs="$notinst_deplibs $lib" -+ need_relink=no -+ ;; -+ *) -+ if test "$installed" = no; then -+ notinst_deplibs="$notinst_deplibs $lib" -+ need_relink=yes -+ fi -+ ;; -+ esac -+ # This is a shared library -+ -+ # Warn about portability, can't link against -module's on some -+ # systems (darwin). Don't bleat about dlopened modules though! -+ dlopenmodule="" -+ for dlpremoduletest in $dlprefiles; do -+ if test "X$dlpremoduletest" = "X$lib"; then -+ dlopenmodule="$dlpremoduletest" -+ break -+ fi -+ done -+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then -+ $ECHO -+ if test "$linkmode" = prog; then -+ $ECHO "*** Warning: Linking the executable $output against the loadable module" -+ else -+ $ECHO "*** Warning: Linking the shared library $output against the loadable module" -+ fi -+ $ECHO "*** $linklib is not portable!" -+ fi -+ if test "$linkmode" = lib && -+ test "$hardcode_into_libs" = yes; then -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) compile_rpath="$compile_rpath $absdir" -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" -+ esac -+ ;; -+ esac -+ fi -+ -+ if test -n "$old_archive_from_expsyms_cmds"; then -+ # figure out the soname -+ set dummy $library_names -+ shift -+ realname="$1" -+ shift -+ libname=`eval "\\$ECHO \"$libname_spec\""` -+ # use dlname if we got it. it's perfectly good, no? -+ if test -n "$dlname"; then -+ soname="$dlname" -+ elif test -n "$soname_spec"; then -+ # bleh windows -+ case $host in -+ *cygwin* | mingw* | *cegcc*) -+ func_arith $current - $age -+ major=$func_arith_result -+ versuffix="-$major" -+ ;; -+ esac -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ -+ # Make a new name for the extract_expsyms_cmds to use -+ soroot="$soname" -+ func_basename "$soroot" -+ soname="$func_basename_result" -+ func_stripname 'lib' '.dll' "$soname" -+ newlib=libimp-$func_stripname_result.a -+ -+ # If the library has no export list, then create one now -+ if test -f "$output_objdir/$soname-def"; then : -+ else -+ func_verbose "extracting exported symbol list from \`$soname'" -+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?' -+ fi -+ -+ # Create $newlib -+ if test -f "$output_objdir/$newlib"; then :; else -+ func_verbose "generating import library for \`$soname'" -+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' -+ fi -+ # make sure the library variables are pointing to the new library -+ dir=$output_objdir -+ linklib=$newlib -+ fi # test -n "$old_archive_from_expsyms_cmds" -+ -+ if test "$linkmode" = prog || test "$mode" != relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ lib_linked=yes -+ case $hardcode_action in -+ immediate | unsupported) -+ if test "$hardcode_direct" = no; then -+ add="$dir/$linklib" -+ case $host in -+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; -+ *-*-sysv4*uw2*) add_dir="-L$dir" ;; -+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ -+ *-*-unixware7*) add_dir="-L$dir" ;; -+ *-*-darwin* ) -+ # if the lib is a (non-dlopened) module then we can not -+ # link against it, someone is ignoring the earlier warnings -+ if /usr/bin/file -L $add 2> /dev/null | -+ $GREP ": [^:]* bundle" >/dev/null ; then -+ if test "X$dlopenmodule" != "X$lib"; then -+ $ECHO "*** Warning: lib $linklib is a module, not a shared library" -+ if test -z "$old_library" ; then -+ $ECHO -+ $ECHO "*** And there doesn't seem to be a static archive available" -+ $ECHO "*** The link will probably fail, sorry" -+ else -+ add="$dir/$old_library" -+ fi -+ elif test -n "$old_library"; then -+ add="$dir/$old_library" -+ fi -+ fi -+ esac -+ elif test "$hardcode_minus_L" = no; then -+ case $host in -+ *-*-sunos*) add_shlibpath="$dir" ;; -+ esac -+ add_dir="-L$dir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = no; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ relink) -+ if test "$hardcode_direct" = yes && -+ test "$hardcode_direct_absolute" = no; then -+ add="$dir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$dir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ *) lib_linked=no ;; -+ esac -+ -+ if test "$lib_linked" != yes; then -+ func_fatal_configuration "unsupported hardcode properties" -+ fi -+ -+ if test -n "$add_shlibpath"; then -+ case :$compile_shlibpath: in -+ *":$add_shlibpath:"*) ;; -+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; -+ esac -+ fi -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" -+ test -n "$add" && compile_deplibs="$add $compile_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ if test "$hardcode_direct" != yes && -+ test "$hardcode_minus_L" != yes && -+ test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ esac -+ fi -+ fi -+ fi -+ -+ if test "$linkmode" = prog || test "$mode" = relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ # Finalize command for both is simple: just hardcode it. -+ if test "$hardcode_direct" = yes && -+ test "$hardcode_direct_absolute" = no; then -+ add="$libdir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$libdir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ esac -+ add="-l$name" -+ elif test "$hardcode_automatic" = yes; then -+ if test -n "$inst_prefix_dir" && -+ test -f "$inst_prefix_dir$libdir/$linklib" ; then -+ add="$inst_prefix_dir$libdir/$linklib" -+ else -+ add="$libdir/$linklib" -+ fi -+ else -+ # We cannot seem to hardcode it, guess we'll fake it. -+ add_dir="-L$libdir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ fi -+ -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" -+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ fi -+ fi -+ elif test "$linkmode" = prog; then -+ # Here we assume that one of hardcode_direct or hardcode_minus_L -+ # is not unsupported. This is valid on all known static and -+ # shared platforms. -+ if test "$hardcode_direct" != unsupported; then -+ test -n "$old_library" && linklib="$old_library" -+ compile_deplibs="$dir/$linklib $compile_deplibs" -+ finalize_deplibs="$dir/$linklib $finalize_deplibs" -+ else -+ compile_deplibs="-l$name -L$dir $compile_deplibs" -+ finalize_deplibs="-l$name -L$dir $finalize_deplibs" -+ fi -+ elif test "$build_libtool_libs" = yes; then -+ # Not a shared library -+ if test "$deplibs_check_method" != pass_all; then -+ # We're trying link a shared library against a static one -+ # but the system doesn't support it. -+ -+ # Just print a warning and add the library to dependency_libs so -+ # that the program can be linked against the static library. -+ $ECHO -+ $ECHO "*** Warning: This system can not link to static lib archive $lib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have." -+ if test "$module" = yes; then -+ $ECHO "*** But as you try to build a module library, libtool will still create " -+ $ECHO "*** a static module, that should work as long as the dlopening application" -+ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." -+ if test -z "$global_symbol_pipe"; then -+ $ECHO -+ $ECHO "*** However, this would only work if libtool was able to extract symbol" -+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ $ECHO "*** not find such a program. So, this module is probably useless." -+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ else -+ deplibs="$dir/$old_library $deplibs" -+ link_static=yes -+ fi -+ fi # link shared/static library? -+ -+ if test "$linkmode" = lib; then -+ if test -n "$dependency_libs" && -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || -+ test "$link_static" = yes; }; then -+ # Extract -R from dependency_libs -+ temp_deplibs= -+ for libdir in $dependency_libs; do -+ case $libdir in -+ -R*) func_stripname '-R' '' "$libdir" -+ temp_xrpath=$func_stripname_result -+ case " $xrpath " in -+ *" $temp_xrpath "*) ;; -+ *) xrpath="$xrpath $temp_xrpath";; -+ esac;; -+ *) temp_deplibs="$temp_deplibs $libdir";; -+ esac -+ done -+ dependency_libs="$temp_deplibs" -+ fi -+ -+ newlib_search_path="$newlib_search_path $absdir" -+ # Link against this library -+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" -+ # ... and its dependency_libs -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ newdependency_libs="$deplib $newdependency_libs" -+ if $opt_duplicate_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done -+ -+ if test "$link_all_deplibs" != no; then -+ # Add the search paths of all dependency libraries -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) path="$deplib" ;; -+ *.la) -+ func_dirname "$deplib" "" "." -+ dir="$func_dirname_result" -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ if test -z "$absdir"; then -+ func_warning "cannot determine absolute directory name of \`$dir'" -+ absdir="$dir" -+ fi -+ ;; -+ esac -+ if $GREP "^installed=no" $deplib > /dev/null; then -+ case $host in -+ *-*-darwin*) -+ depdepl= -+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` -+ if test -n "$deplibrary_names" ; then -+ for tmp in $deplibrary_names ; do -+ depdepl=$tmp -+ done -+ if test -f "$absdir/$objdir/$depdepl" ; then -+ depdepl="$absdir/$objdir/$depdepl" -+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` -+ if test -z "$darwin_install_name"; then -+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` -+ fi -+ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" -+ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" -+ path= -+ fi -+ fi -+ ;; -+ *) -+ path="-L$absdir/$objdir" -+ ;; -+ esac -+ else -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$deplib' is not a valid libtool archive" -+ test "$absdir" != "$libdir" && \ -+ func_warning "\`$deplib' seems to be moved" -+ -+ path="-L$absdir" -+ fi -+ ;; -+ esac -+ case " $deplibs " in -+ *" $path "*) ;; -+ *) deplibs="$path $deplibs" ;; -+ esac -+ done -+ fi # link_all_deplibs != no -+ fi # linkmode = lib -+ done # for deplib in $libs -+ if test "$pass" = link; then -+ if test "$linkmode" = "prog"; then -+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs" -+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ fi -+ fi -+ dependency_libs="$newdependency_libs" -+ if test "$pass" = dlpreopen; then -+ # Link the dlpreopened libraries before other libraries -+ for deplib in $save_deplibs; do -+ deplibs="$deplib $deplibs" -+ done -+ fi -+ if test "$pass" != dlopen; then -+ if test "$pass" != conv; then -+ # Make sure lib_search_path contains only unique directories. -+ lib_search_path= -+ for dir in $newlib_search_path; do -+ case "$lib_search_path " in -+ *" $dir "*) ;; -+ *) lib_search_path="$lib_search_path $dir" ;; -+ esac -+ done -+ newlib_search_path= -+ fi -+ -+ if test "$linkmode,$pass" != "prog,link"; then -+ vars="deplibs" -+ else -+ vars="compile_deplibs finalize_deplibs" -+ fi -+ for var in $vars dependency_libs; do -+ # Add libraries to $var in reverse order -+ eval tmp_libs=\"\$$var\" -+ new_libs= -+ for deplib in $tmp_libs; do -+ # FIXME: Pedantically, this is the right thing to do, so -+ # that some nasty dependency loop isn't accidentally -+ # broken: -+ #new_libs="$deplib $new_libs" -+ # Pragmatically, this seems to cause very few problems in -+ # practice: -+ case $deplib in -+ -L*) new_libs="$deplib $new_libs" ;; -+ -R*) ;; -+ *) -+ # And here is the reason: when a library appears more -+ # than once as an explicit dependence of a library, or -+ # is implicitly linked in more than once by the -+ # compiler, it is considered special, and multiple -+ # occurrences thereof are not removed. Compare this -+ # with having the same library being listed as a -+ # dependency of multiple other libraries: in this case, -+ # we know (pedantically, we assume) the library does not -+ # need to be listed more than once, so we keep only the -+ # last copy. This is not always right, but it is rare -+ # enough that we require users that really mean to play -+ # such unportable linking tricks to link the library -+ # using -Wl,-lname, so that libtool does not consider it -+ # for duplicate removal. -+ case " $specialdeplibs " in -+ *" $deplib "*) new_libs="$deplib $new_libs" ;; -+ *) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$deplib $new_libs" ;; -+ esac -+ ;; -+ esac -+ ;; -+ esac -+ done -+ tmp_libs= -+ for deplib in $new_libs; do -+ case $deplib in -+ -L*) -+ case " $tmp_libs " in -+ *" $deplib "*) ;; -+ *) tmp_libs="$tmp_libs $deplib" ;; -+ esac -+ ;; -+ *) tmp_libs="$tmp_libs $deplib" ;; -+ esac -+ done -+ eval $var=\"$tmp_libs\" -+ done # for var -+ fi -+ # Last step: remove runtime libs from dependency_libs -+ # (they stay in deplibs) -+ tmp_libs= -+ for i in $dependency_libs ; do -+ case " $predeps $postdeps $compiler_lib_search_path " in -+ *" $i "*) -+ i="" -+ ;; -+ esac -+ if test -n "$i" ; then -+ tmp_libs="$tmp_libs $i" -+ fi -+ done -+ dependency_libs=$tmp_libs -+ done # for pass -+ if test "$linkmode" = prog; then -+ dlfiles="$newdlfiles" -+ fi -+ if test "$linkmode" = prog || test "$linkmode" = lib; then -+ dlprefiles="$newdlprefiles" -+ fi -+ -+ case $linkmode in -+ oldlib) -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ func_warning "\`-dlopen' is ignored for archives" -+ fi -+ -+ case " $deplibs" in -+ *\ -l* | *\ -L*) -+ func_warning "\`-l' and \`-L' are ignored for archives" ;; -+ esac -+ -+ test -n "$rpath" && \ -+ func_warning "\`-rpath' is ignored for archives" -+ -+ test -n "$xrpath" && \ -+ func_warning "\`-R' is ignored for archives" -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info/-version-number' is ignored for archives" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for archives" -+ -+ test -n "$export_symbols$export_symbols_regex" && \ -+ func_warning "\`-export-symbols' is ignored for archives" -+ -+ # Now set the variables for building old libraries. -+ build_libtool_libs=no -+ oldlibs="$output" -+ objs="$objs$old_deplibs" -+ ;; -+ -+ lib) -+ # Make sure we only generate libraries of the form `libNAME.la'. -+ case $outputname in -+ lib*) -+ func_stripname 'lib' '.la' "$outputname" -+ name=$func_stripname_result -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ ;; -+ *) -+ test "$module" = no && \ -+ func_fatal_help "libtool library \`$output' must begin with \`lib'" -+ -+ if test "$need_lib_prefix" != no; then -+ # Add the "lib" prefix for modules if required -+ func_stripname '' '.la' "$outputname" -+ name=$func_stripname_result -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ else -+ func_stripname '' '.la' "$outputname" -+ libname=$func_stripname_result -+ fi -+ ;; -+ esac -+ -+ if test -n "$objs"; then -+ if test "$deplibs_check_method" != pass_all; then -+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" -+ else -+ $ECHO -+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool" -+ $ECHO "*** objects $objs is not portable!" -+ libobjs="$libobjs $objs" -+ fi -+ fi -+ -+ test "$dlself" != no && \ -+ func_warning "\`-dlopen self' is ignored for libtool libraries" -+ -+ set dummy $rpath -+ shift -+ test "$#" -gt 1 && \ -+ func_warning "ignoring multiple \`-rpath's for a libtool library" -+ -+ install_libdir="$1" -+ -+ oldlibs= -+ if test -z "$rpath"; then -+ if test "$build_libtool_libs" = yes; then -+ # Building a libtool convenience library. -+ # Some compilers have problems with a `.al' extension so -+ # convenience libraries should have the same extension an -+ # archive normally would. -+ oldlibs="$output_objdir/$libname.$libext $oldlibs" -+ build_libtool_libs=convenience -+ build_old_libs=yes -+ fi -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for convenience libraries" -+ else -+ -+ # Parse the version information argument. -+ save_ifs="$IFS"; IFS=':' -+ set dummy $vinfo 0 0 0 -+ shift -+ IFS="$save_ifs" -+ -+ test -n "$7" && \ -+ func_fatal_help "too many parameters to \`-version-info'" -+ -+ # convert absolute version numbers to libtool ages -+ # this retains compatibility with .la files and attempts -+ # to make the code below a bit more comprehensible -+ -+ case $vinfo_number in -+ yes) -+ number_major="$1" -+ number_minor="$2" -+ number_revision="$3" -+ # -+ # There are really only two kinds -- those that -+ # use the current revision as the major version -+ # and those that subtract age and use age as -+ # a minor version. But, then there is irix -+ # which has an extra 1 added just for fun -+ # -+ case $version_type in -+ darwin|linux|osf|windows|none) -+ func_arith $number_major + $number_minor -+ current=$func_arith_result -+ age="$number_minor" -+ revision="$number_revision" -+ ;; -+ freebsd-aout|freebsd-elf|sunos) -+ current="$number_major" -+ revision="$number_minor" -+ age="0" -+ ;; -+ irix|nonstopux) -+ func_arith $number_major + $number_minor -+ current=$func_arith_result -+ age="$number_minor" -+ revision="$number_minor" -+ lt_irix_increment=no -+ ;; -+ esac -+ ;; -+ no) -+ current="$1" -+ revision="$2" -+ age="$3" -+ ;; -+ esac -+ -+ # Check that each of the things are valid numbers. -+ case $current in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "CURRENT \`$current' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ case $revision in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "REVISION \`$revision' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ case $age in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "AGE \`$age' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ if test "$age" -gt "$current"; then -+ func_error "AGE \`$age' is greater than the current interface number \`$current'" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ fi -+ -+ # Calculate the version variables. -+ major= -+ versuffix= -+ verstring= -+ case $version_type in -+ none) ;; -+ -+ darwin) -+ # Like Linux, but with the current version available in -+ # verstring for coding it into the library header -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix="$major.$age.$revision" -+ # Darwin ld doesn't like 0 for these options... -+ func_arith $current + 1 -+ minor_current=$func_arith_result -+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" -+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" -+ ;; -+ -+ freebsd-aout) -+ major=".$current" -+ versuffix=".$current.$revision"; -+ ;; -+ -+ freebsd-elf) -+ major=".$current" -+ versuffix=".$current" -+ ;; -+ -+ irix | nonstopux) -+ if test "X$lt_irix_increment" = "Xno"; then -+ func_arith $current - $age -+ else -+ func_arith $current - $age + 1 -+ fi -+ major=$func_arith_result -+ -+ case $version_type in -+ nonstopux) verstring_prefix=nonstopux ;; -+ *) verstring_prefix=sgi ;; -+ esac -+ verstring="$verstring_prefix$major.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$revision -+ while test "$loop" -ne 0; do -+ func_arith $revision - $loop -+ iface=$func_arith_result -+ func_arith $loop - 1 -+ loop=$func_arith_result -+ verstring="$verstring_prefix$major.$iface:$verstring" -+ done -+ -+ # Before this point, $major must not contain `.'. -+ major=.$major -+ versuffix="$major.$revision" -+ ;; -+ -+ linux) -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix="$major.$age.$revision" -+ ;; -+ -+ osf) -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix=".$current.$age.$revision" -+ verstring="$current.$age.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$age -+ while test "$loop" -ne 0; do -+ func_arith $current - $loop -+ iface=$func_arith_result -+ func_arith $loop - 1 -+ loop=$func_arith_result -+ verstring="$verstring:${iface}.0" -+ done -+ -+ # Make executables depend on our current version. -+ verstring="$verstring:${current}.0" -+ ;; -+ -+ qnx) -+ major=".$current" -+ versuffix=".$current" -+ ;; -+ -+ sunos) -+ major=".$current" -+ versuffix=".$current.$revision" -+ ;; -+ -+ windows) -+ # Use '-' rather than '.', since we only want one -+ # extension on DOS 8.3 filesystems. -+ func_arith $current - $age -+ major=$func_arith_result -+ versuffix="-$major" -+ ;; -+ -+ *) -+ func_fatal_configuration "unknown library version type \`$version_type'" -+ ;; -+ esac -+ -+ # Clear the version info if we defaulted, and they specified a release. -+ if test -z "$vinfo" && test -n "$release"; then -+ major= -+ case $version_type in -+ darwin) -+ # we can't check for "0.0" in archive_cmds due to quoting -+ # problems, so we reset it completely -+ verstring= -+ ;; -+ *) -+ verstring="0.0" -+ ;; -+ esac -+ if test "$need_version" = no; then -+ versuffix= -+ else -+ versuffix=".0.0" -+ fi -+ fi -+ -+ # Remove version info from name if versioning should be avoided -+ if test "$avoid_version" = yes && test "$need_version" = no; then -+ major= -+ versuffix= -+ verstring="" -+ fi -+ -+ # Check to see if the archive will have undefined symbols. -+ if test "$allow_undefined" = yes; then -+ if test "$allow_undefined_flag" = unsupported; then -+ func_warning "undefined symbols not allowed in $host shared libraries" -+ build_libtool_libs=no -+ build_old_libs=yes -+ fi -+ else -+ # Don't allow undefined symbols. -+ allow_undefined_flag="$no_undefined_flag" -+ fi -+ -+ fi -+ -+ func_generate_dlsyms "$libname" "$libname" "yes" -+ libobjs="$libobjs $symfileobj" -+ test "X$libobjs" = "X " && libobjs= -+ -+ if test "$mode" != relink; then -+ # Remove our outputs, but don't remove object files since they -+ # may have been created when compiling PIC objects. -+ removelist= -+ tempremovelist=`$ECHO "$output_objdir/*"` -+ for p in $tempremovelist; do -+ case $p in -+ *.$objext | *.gcno) -+ ;; -+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) -+ if test "X$precious_files_regex" != "X"; then -+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 -+ then -+ continue -+ fi -+ fi -+ removelist="$removelist $p" -+ ;; -+ *) ;; -+ esac -+ done -+ test -n "$removelist" && \ -+ func_show_eval "${RM}r \$removelist" -+ fi -+ -+ # Now set the variables for building old libraries. -+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then -+ oldlibs="$oldlibs $output_objdir/$libname.$libext" -+ -+ # Transform .lo files to .o files. -+ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` -+ fi -+ -+ # Eliminate all temporary directories. -+ #for path in $notinst_path; do -+ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` -+ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` -+ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` -+ #done -+ -+ if test -n "$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ temp_xrpath= -+ for libdir in $xrpath; do -+ temp_xrpath="$temp_xrpath -R$libdir" -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" ;; -+ esac -+ done -+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then -+ dependency_libs="$temp_xrpath $dependency_libs" -+ fi -+ fi -+ -+ # Make sure dlfiles contains only unique files that won't be dlpreopened -+ old_dlfiles="$dlfiles" -+ dlfiles= -+ for lib in $old_dlfiles; do -+ case " $dlprefiles $dlfiles " in -+ *" $lib "*) ;; -+ *) dlfiles="$dlfiles $lib" ;; -+ esac -+ done -+ -+ # Make sure dlprefiles contains only unique files -+ old_dlprefiles="$dlprefiles" -+ dlprefiles= -+ for lib in $old_dlprefiles; do -+ case "$dlprefiles " in -+ *" $lib "*) ;; -+ *) dlprefiles="$dlprefiles $lib" ;; -+ esac -+ done -+ -+ if test "$build_libtool_libs" = yes; then -+ if test -n "$rpath"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) -+ # these systems don't actually have a c library (as such)! -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C library is in the System framework -+ deplibs="$deplibs System.ltframework" -+ ;; -+ *-*-netbsd*) -+ # Don't link with libc until the a.out ld.so is fixed. -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ ;; -+ *) -+ # Add libc to deplibs on all other systems if necessary. -+ if test "$build_libtool_need_lc" = "yes"; then -+ deplibs="$deplibs -lc" -+ fi -+ ;; -+ esac -+ fi -+ -+ # Transform deplibs into only deplibs that can be linked in shared. -+ name_save=$name -+ libname_save=$libname -+ release_save=$release -+ versuffix_save=$versuffix -+ major_save=$major -+ # I'm not sure if I'm treating the release correctly. I think -+ # release should show up in the -l (ie -lgmp5) so we don't want to -+ # add it in twice. Is that correct? -+ release="" -+ versuffix="" -+ major="" -+ newdeplibs= -+ droppeddeps=no -+ case $deplibs_check_method in -+ pass_all) -+ # Don't check for shared/static. Everything works. -+ # This might be a little naive. We might want to check -+ # whether the library exists or not. But this is on -+ # osf3 & osf4 and I'm not really sure... Just -+ # implementing what was already the behavior. -+ newdeplibs=$deplibs -+ ;; -+ test_compile) -+ # This code stresses the "libraries are programs" paradigm to its -+ # limits. Maybe even breaks it. We compile a program, linking it -+ # against the deplibs as a proxy for the library. Then we can check -+ # whether they linked in statically or dynamically with ldd. -+ $opt_dry_run || $RM conftest.c -+ cat > conftest.c </dev/null` -+ for potent_lib in $potential_libs; do -+ # Follow soft links. -+ if ls -lLd "$potent_lib" 2>/dev/null | -+ $GREP " -> " >/dev/null; then -+ continue -+ fi -+ # The statement above tries to avoid entering an -+ # endless loop below, in case of cyclic links. -+ # We might still enter an endless loop, since a link -+ # loop can be closed while we follow links, -+ # but so what? -+ potlib="$potent_lib" -+ while test -h "$potlib" 2>/dev/null; do -+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` -+ case $potliblink in -+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; -+ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; -+ esac -+ done -+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | -+ $SED -e 10q | -+ $EGREP "$file_magic_regex" > /dev/null; then -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ $ECHO -+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have" -+ $ECHO "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)" -+ else -+ $ECHO "*** with $libname and none of the candidates passed a file format test" -+ $ECHO "*** using a file magic. Last file checked: $potlib" -+ fi -+ fi -+ ;; -+ *) -+ # Add a -L argument. -+ newdeplibs="$newdeplibs $a_deplib" -+ ;; -+ esac -+ done # Gone through all deplibs. -+ ;; -+ match_pattern*) -+ set dummy $deplibs_check_method; shift -+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -+ for a_deplib in $deplibs; do -+ case $a_deplib in -+ -l*) -+ func_stripname -l '' "$a_deplib" -+ name=$func_stripname_result -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $a_deplib "*) -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ ;; -+ esac -+ fi -+ if test -n "$a_deplib" ; then -+ libname=`eval "\\$ECHO \"$libname_spec\""` -+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do -+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` -+ for potent_lib in $potential_libs; do -+ potlib="$potent_lib" # see symlink-check above in file_magic test -+ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ -+ $EGREP "$match_pattern_regex" > /dev/null; then -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ $ECHO -+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have" -+ $ECHO "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" -+ else -+ $ECHO "*** with $libname and none of the candidates passed a file format test" -+ $ECHO "*** using a regex pattern. Last file checked: $potlib" -+ fi -+ fi -+ ;; -+ *) -+ # Add a -L argument. -+ newdeplibs="$newdeplibs $a_deplib" -+ ;; -+ esac -+ done # Gone through all deplibs. -+ ;; -+ none | unknown | *) -+ newdeplibs="" -+ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -+ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ for i in $predeps $postdeps ; do -+ # can't use Xsed below, because $i might contain '/' -+ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` -+ done -+ fi -+ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | -+ $GREP . >/dev/null; then -+ $ECHO -+ if test "X$deplibs_check_method" = "Xnone"; then -+ $ECHO "*** Warning: inter-library dependencies are not supported in this platform." -+ else -+ $ECHO "*** Warning: inter-library dependencies are not known to be supported." -+ fi -+ $ECHO "*** All declared inter-library dependencies are being dropped." -+ droppeddeps=yes -+ fi -+ ;; -+ esac -+ versuffix=$versuffix_save -+ major=$major_save -+ release=$release_save -+ libname=$libname_save -+ name=$name_save -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library with the System framework -+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ ;; -+ esac -+ -+ if test "$droppeddeps" = yes; then -+ if test "$module" = yes; then -+ $ECHO -+ $ECHO "*** Warning: libtool could not satisfy all declared inter-library" -+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create" -+ $ECHO "*** a static module, that should work as long as the dlopening" -+ $ECHO "*** application is linked with the -dlopen flag." -+ if test -z "$global_symbol_pipe"; then -+ $ECHO -+ $ECHO "*** However, this would only work if libtool was able to extract symbol" -+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ $ECHO "*** not find such a program. So, this module is probably useless." -+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ else -+ $ECHO "*** The inter-library dependencies that have been dropped here will be" -+ $ECHO "*** automatically added whenever a program is linked with this library" -+ $ECHO "*** or is declared to -dlopen it." -+ -+ if test "$allow_undefined" = no; then -+ $ECHO -+ $ECHO "*** Since this library must not contain undefined symbols," -+ $ECHO "*** because either the platform does not support them or" -+ $ECHO "*** it was explicitly requested with -no-undefined," -+ $ECHO "*** libtool will only create a static version of it." -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ fi -+ fi -+ # Done checking deplibs! -+ deplibs=$newdeplibs -+ fi -+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" -+ case $host in -+ *-*-darwin*) -+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ ;; -+ esac -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ deplibs="$new_libs" -+ -+ # All the library-specific variables (install_libdir is set above). -+ library_names= -+ old_library= -+ dlname= -+ -+ # Test again, we may have decided not to build it any more -+ if test "$build_libtool_libs" = yes; then -+ if test "$hardcode_into_libs" = yes; then -+ # Hardcode the library paths -+ hardcode_libdirs= -+ dep_rpath= -+ rpath="$finalize_rpath" -+ test "$mode" != relink && rpath="$compile_rpath$rpath" -+ for libdir in $rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ dep_rpath="$dep_rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) perm_rpath="$perm_rpath $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ if test -n "$hardcode_libdir_flag_spec_ld"; then -+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" -+ else -+ eval dep_rpath=\"$hardcode_libdir_flag_spec\" -+ fi -+ fi -+ if test -n "$runpath_var" && test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" -+ fi -+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" -+ fi -+ -+ shlibpath="$finalize_shlibpath" -+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" -+ if test -n "$shlibpath"; then -+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" -+ fi -+ -+ # Get the real and link names of the library. -+ eval shared_ext=\"$shrext_cmds\" -+ eval library_names=\"$library_names_spec\" -+ set dummy $library_names -+ shift -+ realname="$1" -+ shift -+ -+ if test -n "$soname_spec"; then -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ if test -z "$dlname"; then -+ dlname=$soname -+ fi -+ -+ lib="$output_objdir/$realname" -+ linknames= -+ for link -+ do -+ linknames="$linknames $link" -+ done -+ -+ # Use standard objects if they are pic -+ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ test "X$libobjs" = "X " && libobjs= -+ -+ delfiles= -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" -+ export_symbols="$output_objdir/$libname.uexp" -+ delfiles="$delfiles $export_symbols" -+ fi -+ -+ orig_export_symbols= -+ case $host_os in -+ cygwin* | mingw* | cegcc*) -+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then -+ # exporting using user supplied symfile -+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then -+ # and it's NOT already a .def file. Must figure out -+ # which of the given symbols are data symbols and tag -+ # them as such. So, trigger use of export_symbols_cmds. -+ # export_symbols gets reassigned inside the "prepare -+ # the list of exported symbols" if statement, so the -+ # include_expsyms logic still works. -+ orig_export_symbols="$export_symbols" -+ export_symbols= -+ always_export_symbols=yes -+ fi -+ fi -+ ;; -+ esac -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then -+ func_verbose "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $opt_dry_run || $RM $export_symbols -+ cmds=$export_symbols_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ func_len " $cmd" -+ len=$func_len_result -+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ func_show_eval "$cmd" 'exit $?' -+ skipped_export=false -+ else -+ # The command line is too long to execute in one step. -+ func_verbose "using reloadable object file for export list..." -+ skipped_export=: -+ # Break out early, otherwise skipped_export may be -+ # set to false by a later but shorter cmd. -+ break -+ fi -+ done -+ IFS="$save_ifs" -+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then -+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ fi -+ -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ tmp_export_symbols="$export_symbols" -+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' -+ fi -+ -+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then -+ # The given exports_symbols file has to be filtered, so filter it. -+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" -+ # FIXME: $output_objdir/$libname.filter potentially contains lots of -+ # 's' commands which not all seds can handle. GNU sed should be fine -+ # though. Also, the filter scales superlinearly with the number of -+ # global variables. join(1) would be nice here, but unfortunately -+ # isn't a blessed tool. -+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" -+ export_symbols=$output_objdir/$libname.def -+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols -+ fi -+ -+ tmp_deplibs= -+ for test_deplib in $deplibs; do -+ case " $convenience " in -+ *" $test_deplib "*) ;; -+ *) -+ tmp_deplibs="$tmp_deplibs $test_deplib" -+ ;; -+ esac -+ done -+ deplibs="$tmp_deplibs" -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec" && -+ test "$compiler_needs_object" = yes && -+ test -z "$libobjs"; then -+ # extract the archives, so we have objects to list. -+ # TODO: could optimize this to just extract one archive. -+ whole_archive_flag_spec= -+ fi -+ if test -n "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ test "X$libobjs" = "X " && libobjs= -+ else -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $convenience -+ libobjs="$libobjs $func_extract_archives_result" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ fi -+ -+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then -+ eval flag=\"$thread_safe_flag_spec\" -+ linker_flags="$linker_flags $flag" -+ fi -+ -+ # Make a backup of the uninstalled library when relinking -+ if test "$mode" = relink; then -+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? -+ fi -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ eval test_cmds=\"$module_expsym_cmds\" -+ cmds=$module_expsym_cmds -+ else -+ eval test_cmds=\"$module_cmds\" -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ eval test_cmds=\"$archive_expsym_cmds\" -+ cmds=$archive_expsym_cmds -+ else -+ eval test_cmds=\"$archive_cmds\" -+ cmds=$archive_cmds -+ fi -+ fi -+ -+ if test "X$skipped_export" != "X:" && -+ func_len " $test_cmds" && -+ len=$func_len_result && -+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ : -+ else -+ # The command line is too long to link in one step, link piecewise -+ # or, if using GNU ld and skipped_export is not :, use a linker -+ # script. -+ -+ # Save the value of $output and $libobjs because we want to -+ # use them later. If we have whole_archive_flag_spec, we -+ # want to use save_libobjs as it was before -+ # whole_archive_flag_spec was expanded, because we can't -+ # assume the linker understands whole_archive_flag_spec. -+ # This may have to be revisited, in case too many -+ # convenience libraries get linked in and end up exceeding -+ # the spec. -+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ fi -+ save_output=$output -+ output_la=`$ECHO "X$output" | $Xsed -e "$basename"` -+ -+ # Clear the reloadable object creation command queue and -+ # initialize k to one. -+ test_cmds= -+ concat_cmds= -+ objlist= -+ last_robj= -+ k=1 -+ -+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then -+ output=${output_objdir}/${output_la}.lnkscript -+ func_verbose "creating GNU ld script: $output" -+ $ECHO 'INPUT (' > $output -+ for obj in $save_libobjs -+ do -+ $ECHO "$obj" >> $output -+ done -+ $ECHO ')' >> $output -+ delfiles="$delfiles $output" -+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then -+ output=${output_objdir}/${output_la}.lnk -+ func_verbose "creating linker input file list: $output" -+ : > $output -+ set x $save_libobjs -+ shift -+ firstobj= -+ if test "$compiler_needs_object" = yes; then -+ firstobj="$1 " -+ shift -+ fi -+ for obj -+ do -+ $ECHO "$obj" >> $output -+ done -+ delfiles="$delfiles $output" -+ output=$firstobj\"$file_list_spec$output\" -+ else -+ if test -n "$save_libobjs"; then -+ func_verbose "creating reloadable object files..." -+ output=$output_objdir/$output_la-${k}.$objext -+ eval test_cmds=\"$reload_cmds\" -+ func_len " $test_cmds" -+ len0=$func_len_result -+ len=$len0 -+ -+ # Loop over the list of objects to be linked. -+ for obj in $save_libobjs -+ do -+ func_len " $obj" -+ func_arith $len + $func_len_result -+ len=$func_arith_result -+ if test "X$objlist" = X || -+ test "$len" -lt "$max_cmd_len"; then -+ func_append objlist " $obj" -+ else -+ # The command $test_cmds is almost too long, add a -+ # command to the queue. -+ if test "$k" -eq 1 ; then -+ # The first file doesn't have a previous command to add. -+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\" -+ else -+ # All subsequent reloadable object files will link in -+ # the last one created. -+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" -+ fi -+ last_robj=$output_objdir/$output_la-${k}.$objext -+ func_arith $k + 1 -+ k=$func_arith_result -+ output=$output_objdir/$output_la-${k}.$objext -+ objlist=$obj -+ func_len " $last_robj" -+ func_arith $len0 + $func_len_result -+ len=$func_arith_result -+ fi -+ done -+ # Handle the remaining objects by creating one last -+ # reloadable object file. All subsequent reloadable object -+ # files will link in the last one created. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" -+ if test -n "$last_robj"; then -+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" -+ fi -+ delfiles="$delfiles $output" -+ -+ else -+ output= -+ fi -+ -+ if ${skipped_export-false}; then -+ func_verbose "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $opt_dry_run || $RM $export_symbols -+ libobjs=$output -+ # Append the command to create the export file. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" -+ if test -n "$last_robj"; then -+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" -+ fi -+ fi -+ -+ test -n "$save_libobjs" && -+ func_verbose "creating a temporary reloadable object file: $output" -+ -+ # Loop through the commands generated above and execute them. -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $concat_cmds; do -+ IFS="$save_ifs" -+ $opt_silent || { -+ func_quote_for_expand "$cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ $opt_dry_run || eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ ( cd "$output_objdir" && \ -+ $RM "${realname}T" && \ -+ $MV "${realname}U" "$realname" ) -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then -+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ -+ if ${skipped_export-false}; then -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ tmp_export_symbols="$export_symbols" -+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' -+ fi -+ -+ if test -n "$orig_export_symbols"; then -+ # The given exports_symbols file has to be filtered, so filter it. -+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" -+ # FIXME: $output_objdir/$libname.filter potentially contains lots of -+ # 's' commands which not all seds can handle. GNU sed should be fine -+ # though. Also, the filter scales superlinearly with the number of -+ # global variables. join(1) would be nice here, but unfortunately -+ # isn't a blessed tool. -+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" -+ export_symbols=$output_objdir/$libname.def -+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols -+ fi -+ fi -+ -+ libobjs=$output -+ # Restore the value of output. -+ output=$save_output -+ -+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ # Expand the library linking commands again to reset the -+ # value of $libobjs for piecewise linking. -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ cmds=$module_expsym_cmds -+ else -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ cmds=$archive_expsym_cmds -+ else -+ cmds=$archive_cmds -+ fi -+ fi -+ fi -+ -+ if test -n "$delfiles"; then -+ # Append the command to remove temporary files to $cmds. -+ eval cmds=\"\$cmds~\$RM $delfiles\" -+ fi -+ -+ # Add any objects from preloaded convenience libraries -+ if test -n "$dlprefiles"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $dlprefiles -+ libobjs="$libobjs $func_extract_archives_result" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $opt_silent || { -+ func_quote_for_expand "$cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ $opt_dry_run || eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ ( cd "$output_objdir" && \ -+ $RM "${realname}T" && \ -+ $MV "${realname}U" "$realname" ) -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? -+ -+ if test -n "$convenience"; then -+ if test -z "$whole_archive_flag_spec"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ # Create links to the real library. -+ for linkname in $linknames; do -+ if test "$realname" != "$linkname"; then -+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' -+ fi -+ done -+ -+ # If -module or -export-dynamic was specified, set the dlname. -+ if test "$module" = yes || test "$export_dynamic" = yes; then -+ # On all known operating systems, these are identical. -+ dlname="$soname" -+ fi -+ fi -+ ;; -+ -+ obj) -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ func_warning "\`-dlopen' is ignored for objects" -+ fi -+ -+ case " $deplibs" in -+ *\ -l* | *\ -L*) -+ func_warning "\`-l' and \`-L' are ignored for objects" ;; -+ esac -+ -+ test -n "$rpath" && \ -+ func_warning "\`-rpath' is ignored for objects" -+ -+ test -n "$xrpath" && \ -+ func_warning "\`-R' is ignored for objects" -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info' is ignored for objects" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for objects" -+ -+ case $output in -+ *.lo) -+ test -n "$objs$old_deplibs" && \ -+ func_fatal_error "cannot build library object \`$output' from non-libtool objects" -+ -+ libobj=$output -+ func_lo2o "$libobj" -+ obj=$func_lo2o_result -+ ;; -+ *) -+ libobj= -+ obj="$output" -+ ;; -+ esac -+ -+ # Delete the old objects. -+ $opt_dry_run || $RM $obj $libobj -+ -+ # Objects from convenience libraries. This assumes -+ # single-version convenience libraries. Whenever we create -+ # different ones for PIC/non-PIC, this we'll have to duplicate -+ # the extraction. -+ reload_conv_objs= -+ gentop= -+ # reload_cmds runs $LD directly, so let us get rid of -+ # -Wl from whole_archive_flag_spec and hope we can get by with -+ # turning comma into space.. -+ wl= -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec"; then -+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" -+ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` -+ else -+ gentop="$output_objdir/${obj}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" -+ fi -+ fi -+ -+ # Create the old-style object. -+ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test -+ -+ output="$obj" -+ func_execute_cmds "$reload_cmds" 'exit $?' -+ -+ # Exit if we aren't doing a library object file. -+ if test -z "$libobj"; then -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$build_libtool_libs" != yes; then -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ # Create an invalid libtool object if no PIC, so that we don't -+ # accidentally link it into a program. -+ # $show "echo timestamp > $libobj" -+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test -n "$pic_flag" || test "$pic_mode" != default; then -+ # Only do commands if we really have different PIC objects. -+ reload_objs="$libobjs $reload_conv_objs" -+ output="$libobj" -+ func_execute_cmds "$reload_cmds" 'exit $?' -+ fi -+ -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ exit $EXIT_SUCCESS -+ ;; -+ -+ prog) -+ case $host in -+ *cygwin*) func_stripname '' '.exe' "$output" -+ output=$func_stripname_result.exe;; -+ esac -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info' is ignored for programs" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for programs" -+ -+ test "$preload" = yes \ -+ && test "$dlopen_support" = unknown \ -+ && test "$dlopen_self" = unknown \ -+ && test "$dlopen_self_static" = unknown && \ -+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library is the System framework -+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ ;; -+ esac -+ -+ case $host in -+ *-*-darwin*) -+ # Don't allow lazy linking, it breaks C++ global constructors -+ # But is supposedly fixed on 10.4 or later (yay!). -+ if test "$tagname" = CXX ; then -+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in -+ 10.[0123]) -+ compile_command="$compile_command ${wl}-bind_at_load" -+ finalize_command="$finalize_command ${wl}-bind_at_load" -+ ;; -+ esac -+ fi -+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" -+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ ;; -+ esac -+ -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $compile_deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $compile_deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ compile_deplibs="$new_libs" -+ -+ -+ compile_command="$compile_command $compile_deplibs" -+ finalize_command="$finalize_command $finalize_deplibs" -+ -+ if test -n "$rpath$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ for libdir in $rpath $xrpath; do -+ # This is the magic to use -rpath. -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" ;; -+ esac -+ done -+ fi -+ -+ # Now hardcode the library paths -+ rpath= -+ hardcode_libdirs= -+ for libdir in $compile_rpath $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ rpath="$rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) perm_rpath="$perm_rpath $libdir" ;; -+ esac -+ fi -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$libdir:"*) ;; -+ ::) dllsearchpath=$libdir;; -+ *) dllsearchpath="$dllsearchpath:$libdir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ ::) dllsearchpath=$testbindir;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac -+ ;; -+ esac -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ compile_rpath="$rpath" -+ -+ rpath= -+ hardcode_libdirs= -+ for libdir in $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ rpath="$rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$finalize_perm_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ finalize_rpath="$rpath" -+ -+ if test -n "$libobjs" && test "$build_old_libs" = yes; then -+ # Transform all the library objects into standard objects. -+ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ fi -+ -+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no" -+ -+ # template prelinking step -+ if test -n "$prelink_cmds"; then -+ func_execute_cmds "$prelink_cmds" 'exit $?' -+ fi -+ -+ wrappers_required=yes -+ case $host in -+ *cygwin* | *mingw* ) -+ if test "$build_libtool_libs" != yes; then -+ wrappers_required=no -+ fi -+ ;; -+ *cegcc) -+ # Disable wrappers for cegcc, we are cross compiling anyway. -+ wrappers_required=no -+ ;; -+ *) -+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then -+ wrappers_required=no -+ fi -+ ;; -+ esac -+ if test "$wrappers_required" = no; then -+ # Replace the output file specification. -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ link_command="$compile_command$compile_rpath" -+ -+ # We have no uninstalled library dependencies, so finalize right now. -+ exit_status=0 -+ func_show_eval "$link_command" 'exit_status=$?' -+ -+ # Delete the generated files. -+ if test -f "$output_objdir/${outputname}S.${objext}"; then -+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' -+ fi -+ -+ exit $exit_status -+ fi -+ -+ if test -n "$compile_shlibpath$finalize_shlibpath"; then -+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" -+ fi -+ if test -n "$finalize_shlibpath"; then -+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" -+ fi -+ -+ compile_var= -+ finalize_var= -+ if test -n "$runpath_var"; then -+ if test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ if test -n "$finalize_perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $finalize_perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ fi -+ -+ if test "$no_install" = yes; then -+ # We don't need to create a wrapper script. -+ link_command="$compile_var$compile_command$compile_rpath" -+ # Replace the output file specification. -+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ # Delete the old output file. -+ $opt_dry_run || $RM $output -+ # Link the executable and exit -+ func_show_eval "$link_command" 'exit $?' -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$hardcode_action" = relink; then -+ # Fast installation is not supported -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ -+ func_warning "this platform does not like uninstalled shared libraries" -+ func_warning "\`$output' will be relinked during installation" -+ else -+ if test "$fast_install" != no; then -+ link_command="$finalize_var$compile_command$finalize_rpath" -+ if test "$fast_install" = yes; then -+ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` -+ else -+ # fast_install is set to needless -+ relink_command= -+ fi -+ else -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ fi -+ fi -+ -+ # Replace the output file specification. -+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` -+ -+ # Delete the old output files. -+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname -+ -+ func_show_eval "$link_command" 'exit $?' -+ -+ # Now create the wrapper script. -+ func_verbose "creating $output" -+ -+ # Quote the relink command for shipping. -+ if test -n "$relink_command"; then -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ func_quote_for_eval "$var_value" -+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" -+ fi -+ done -+ relink_command="(cd `pwd`; $relink_command)" -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ fi -+ -+ # Quote $ECHO for shipping. -+ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then -+ case $progpath in -+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; -+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; -+ esac -+ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` -+ else -+ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` -+ fi -+ -+ # Only actually do things if not in dry run mode. -+ $opt_dry_run || { -+ # win32 will think the script is a binary if it has -+ # a .exe suffix, so we strip it off here. -+ case $output in -+ *.exe) func_stripname '' '.exe' "$output" -+ output=$func_stripname_result ;; -+ esac -+ # test for cygwin because mv fails w/o .exe extensions -+ case $host in -+ *cygwin*) -+ exeext=.exe -+ func_stripname '' '.exe' "$outputname" -+ outputname=$func_stripname_result ;; -+ *) exeext= ;; -+ esac -+ case $host in -+ *cygwin* | *mingw* ) -+ func_dirname_and_basename "$output" "" "." -+ output_name=$func_basename_result -+ output_path=$func_dirname_result -+ cwrappersource="$output_path/$objdir/lt-$output_name.c" -+ cwrapper="$output_path/$output_name.exe" -+ $RM $cwrappersource $cwrapper -+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 -+ -+ func_emit_cwrapperexe_src > $cwrappersource -+ -+ # The wrapper executable is built using the $host compiler, -+ # because it contains $host paths and files. If cross- -+ # compiling, it, like the target executable, must be -+ # executed on the $host or under an emulation environment. -+ $opt_dry_run || { -+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource -+ $STRIP $cwrapper -+ } -+ -+ # Now, create the wrapper script for func_source use: -+ func_ltwrapper_scriptname $cwrapper -+ $RM $func_ltwrapper_scriptname_result -+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 -+ $opt_dry_run || { -+ # note: this script will not be executed, so do not chmod. -+ if test "x$build" = "x$host" ; then -+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result -+ else -+ func_emit_wrapper no > $func_ltwrapper_scriptname_result -+ fi -+ } -+ ;; -+ * ) -+ $RM $output -+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 -+ -+ func_emit_wrapper no > $output -+ chmod +x $output -+ ;; -+ esac -+ } -+ exit $EXIT_SUCCESS -+ ;; -+ esac -+ -+ # See if we need to build an old-fashioned archive. -+ for oldlib in $oldlibs; do -+ -+ if test "$build_libtool_libs" = convenience; then -+ oldobjs="$libobjs_save $symfileobj" -+ addlibs="$convenience" -+ build_libtool_libs=no -+ else -+ if test "$build_libtool_libs" = module; then -+ oldobjs="$libobjs_save" -+ build_libtool_libs=no -+ else -+ oldobjs="$old_deplibs $non_pic_objects" -+ if test "$preload" = yes && test -f "$symfileobj"; then -+ oldobjs="$oldobjs $symfileobj" -+ fi -+ fi -+ addlibs="$old_convenience" -+ fi -+ -+ if test -n "$addlibs"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $addlibs -+ oldobjs="$oldobjs $func_extract_archives_result" -+ fi -+ -+ # Do each command in the archive commands. -+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then -+ cmds=$old_archive_from_new_cmds -+ else -+ -+ # Add any objects from preloaded convenience libraries -+ if test -n "$dlprefiles"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $dlprefiles -+ oldobjs="$oldobjs $func_extract_archives_result" -+ fi -+ -+ # POSIX demands no paths to be encoded in archives. We have -+ # to avoid creating archives with duplicate basenames if we -+ # might have to extract them afterwards, e.g., when creating a -+ # static archive out of a convenience library, or when linking -+ # the entirety of a libtool archive into another (currently -+ # not supported by libtool). -+ if (for obj in $oldobjs -+ do -+ func_basename "$obj" -+ $ECHO "$func_basename_result" -+ done | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ $ECHO "copying selected object files to avoid basename conflicts..." -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ func_mkdir_p "$gentop" -+ save_oldobjs=$oldobjs -+ oldobjs= -+ counter=1 -+ for obj in $save_oldobjs -+ do -+ func_basename "$obj" -+ objbase="$func_basename_result" -+ case " $oldobjs " in -+ " ") oldobjs=$obj ;; -+ *[\ /]"$objbase "*) -+ while :; do -+ # Make sure we don't pick an alternate name that also -+ # overlaps. -+ newobj=lt$counter-$objbase -+ func_arith $counter + 1 -+ counter=$func_arith_result -+ case " $oldobjs " in -+ *[\ /]"$newobj "*) ;; -+ *) if test ! -f "$gentop/$newobj"; then break; fi ;; -+ esac -+ done -+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -+ oldobjs="$oldobjs $gentop/$newobj" -+ ;; -+ *) oldobjs="$oldobjs $obj" ;; -+ esac -+ done -+ fi -+ eval cmds=\"$old_archive_cmds\" -+ -+ func_len " $cmds" -+ len=$func_len_result -+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ cmds=$old_archive_cmds -+ else -+ # the command line is too long to link in one step, link in parts -+ func_verbose "using piecewise archive linking..." -+ save_RANLIB=$RANLIB -+ RANLIB=: -+ objlist= -+ concat_cmds= -+ save_oldobjs=$oldobjs -+ oldobjs= -+ # Is there a better way of finding the last object in the list? -+ for obj in $save_oldobjs -+ do -+ last_oldobj=$obj -+ done -+ eval test_cmds=\"$old_archive_cmds\" -+ func_len " $test_cmds" -+ len0=$func_len_result -+ len=$len0 -+ for obj in $save_oldobjs -+ do -+ func_len " $obj" -+ func_arith $len + $func_len_result -+ len=$func_arith_result -+ func_append objlist " $obj" -+ if test "$len" -lt "$max_cmd_len"; then -+ : -+ else -+ # the above command should be used before it gets too long -+ oldobjs=$objlist -+ if test "$obj" = "$last_oldobj" ; then -+ RANLIB=$save_RANLIB -+ fi -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" -+ objlist= -+ len=$len0 -+ fi -+ done -+ RANLIB=$save_RANLIB -+ oldobjs=$objlist -+ if test "X$oldobjs" = "X" ; then -+ eval cmds=\"\$concat_cmds\" -+ else -+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" -+ fi -+ fi -+ fi -+ func_execute_cmds "$cmds" 'exit $?' -+ done -+ -+ test -n "$generated" && \ -+ func_show_eval "${RM}r$generated" -+ -+ # Now create the libtool archive. -+ case $output in -+ *.la) -+ old_library= -+ test "$build_old_libs" = yes && old_library="$libname.$libext" -+ func_verbose "creating $output" -+ -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ func_quote_for_eval "$var_value" -+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" -+ fi -+ done -+ # Quote the link command for shipping. -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ if test "$hardcode_automatic" = yes ; then -+ relink_command= -+ fi -+ -+ # Only create the output if not a dry run. -+ $opt_dry_run || { -+ for installed in no yes; do -+ if test "$installed" = yes; then -+ if test -z "$install_libdir"; then -+ break -+ fi -+ output="$output_objdir/$outputname"i -+ # Replace all uninstalled libtool libraries with the installed ones -+ newdependency_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ *.la) -+ func_basename "$deplib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$deplib' is not a valid libtool archive" -+ newdependency_libs="$newdependency_libs $libdir/$name" -+ ;; -+ *) newdependency_libs="$newdependency_libs $deplib" ;; -+ esac -+ done -+ dependency_libs="$newdependency_libs" -+ newdlfiles= -+ -+ for lib in $dlfiles; do -+ case $lib in -+ *.la) -+ func_basename "$lib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$lib' is not a valid libtool archive" -+ newdlfiles="$newdlfiles $libdir/$name" -+ ;; -+ *) newdlfiles="$newdlfiles $lib" ;; -+ esac -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ *.la) -+ # Only pass preopened files to the pseudo-archive (for -+ # eventual linking with the app. that links it) if we -+ # didn't already link the preopened objects directly into -+ # the library: -+ func_basename "$lib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$lib' is not a valid libtool archive" -+ newdlprefiles="$newdlprefiles $libdir/$name" -+ ;; -+ esac -+ done -+ dlprefiles="$newdlprefiles" -+ else -+ newdlfiles= -+ for lib in $dlfiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlfiles="$newdlfiles $abs" -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlprefiles="$newdlprefiles $abs" -+ done -+ dlprefiles="$newdlprefiles" -+ fi -+ $RM $output -+ # place dlname in correct position for cygwin -+ tdlname=$dlname -+ case $host,$output,$installed,$module,$dlname in -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; -+ esac -+ $ECHO > $output "\ -+# $outputname - a libtool library file -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -+# -+# Please DO NOT delete this file! -+# It is necessary for linking the library. -+ -+# The name that we can dlopen(3). -+dlname='$tdlname' -+ -+# Names of this library. -+library_names='$library_names' -+ -+# The name of the static archive. -+old_library='$old_library' -+ -+# Linker flags that can not go in dependency_libs. -+inherited_linker_flags='$new_inherited_linker_flags' -+ -+# Libraries that this one depends upon. -+dependency_libs='$dependency_libs' -+ -+# Names of additional weak libraries provided by this library -+weak_library_names='$weak_libs' -+ -+# Version information for $libname. -+current=$current -+age=$age -+revision=$revision -+ -+# Is this an already installed library? -+installed=$installed -+ -+# Should we warn about portability when linking against -modules? -+shouldnotlink=$module -+ -+# Files to dlopen/dlpreopen -+dlopen='$dlfiles' -+dlpreopen='$dlprefiles' -+ -+# Directory that this library needs to be installed in: -+libdir='$install_libdir'" -+ if test "$installed" = no && test "$need_relink" = yes; then -+ $ECHO >> $output "\ -+relink_command=\"$relink_command\"" -+ fi -+ done -+ } -+ -+ # Do a symbolic link so that the libtool archive can be found in -+ # LD_LIBRARY_PATH before the program is installed. -+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' -+ ;; -+ esac -+ exit $EXIT_SUCCESS -+} -+ -+{ test "$mode" = link || test "$mode" = relink; } && -+ func_mode_link ${1+"$@"} -+ -+ -+# func_mode_uninstall arg... -+func_mode_uninstall () -+{ -+ $opt_debug -+ RM="$nonopt" -+ files= -+ rmforce= -+ exit_status=0 -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ for arg -+ do -+ case $arg in -+ -f) RM="$RM $arg"; rmforce=yes ;; -+ -*) RM="$RM $arg" ;; -+ *) files="$files $arg" ;; -+ esac -+ done -+ -+ test -z "$RM" && \ -+ func_fatal_help "you must specify an RM program" -+ -+ rmdirs= -+ -+ origobjdir="$objdir" -+ for file in $files; do -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ if test "X$dir" = X.; then -+ objdir="$origobjdir" -+ else -+ objdir="$dir/$origobjdir" -+ fi -+ func_basename "$file" -+ name="$func_basename_result" -+ test "$mode" = uninstall && objdir="$dir" -+ -+ # Remember objdir for removal later, being careful to avoid duplicates -+ if test "$mode" = clean; then -+ case " $rmdirs " in -+ *" $objdir "*) ;; -+ *) rmdirs="$rmdirs $objdir" ;; -+ esac -+ fi -+ -+ # Don't error if the file doesn't exist and rm -f was used. -+ if { test -L "$file"; } >/dev/null 2>&1 || -+ { test -h "$file"; } >/dev/null 2>&1 || -+ test -f "$file"; then -+ : -+ elif test -d "$file"; then -+ exit_status=1 -+ continue -+ elif test "$rmforce" = yes; then -+ continue -+ fi -+ -+ rmfiles="$file" -+ -+ case $name in -+ *.la) -+ # Possibly a libtool archive, so verify it. -+ if func_lalib_p "$file"; then -+ func_source $dir/$name -+ -+ # Delete the libtool libraries and symlinks. -+ for n in $library_names; do -+ rmfiles="$rmfiles $objdir/$n" -+ done -+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" -+ -+ case "$mode" in -+ clean) -+ case " $library_names " in -+ # " " in the beginning catches empty $dlname -+ *" $dlname "*) ;; -+ *) rmfiles="$rmfiles $objdir/$dlname" ;; -+ esac -+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" -+ ;; -+ uninstall) -+ if test -n "$library_names"; then -+ # Do each command in the postuninstall commands. -+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' -+ fi -+ -+ if test -n "$old_library"; then -+ # Do each command in the old_postuninstall commands. -+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' -+ fi -+ # FIXME: should reinstall the best remaining shared library. -+ ;; -+ esac -+ fi -+ ;; -+ -+ *.lo) -+ # Possibly a libtool object, so verify it. -+ if func_lalib_p "$file"; then -+ -+ # Read the .lo file -+ func_source $dir/$name -+ -+ # Add PIC object to the list of files to remove. -+ if test -n "$pic_object" && -+ test "$pic_object" != none; then -+ rmfiles="$rmfiles $dir/$pic_object" -+ fi -+ -+ # Add non-PIC object to the list of files to remove. -+ if test -n "$non_pic_object" && -+ test "$non_pic_object" != none; then -+ rmfiles="$rmfiles $dir/$non_pic_object" -+ fi -+ fi -+ ;; -+ -+ *) -+ if test "$mode" = clean ; then -+ noexename=$name -+ case $file in -+ *.exe) -+ func_stripname '' '.exe' "$file" -+ file=$func_stripname_result -+ func_stripname '' '.exe' "$name" -+ noexename=$func_stripname_result -+ # $file with .exe has already been added to rmfiles, -+ # add $file without .exe -+ rmfiles="$rmfiles $file" -+ ;; -+ esac -+ # Do a test to see if this is a libtool program. -+ if func_ltwrapper_p "$file"; then -+ if func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ relink_command= -+ func_source $func_ltwrapper_scriptname_result -+ rmfiles="$rmfiles $func_ltwrapper_scriptname_result" -+ else -+ relink_command= -+ func_source $dir/$noexename -+ fi -+ -+ # note $name still contains .exe if it was in $file originally -+ # as does the version of $file that was added into $rmfiles -+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" -+ if test "$fast_install" = yes && test -n "$relink_command"; then -+ rmfiles="$rmfiles $objdir/lt-$name" -+ fi -+ if test "X$noexename" != "X$name" ; then -+ rmfiles="$rmfiles $objdir/lt-${noexename}.c" -+ fi -+ fi -+ fi -+ ;; -+ esac -+ func_show_eval "$RM $rmfiles" 'exit_status=1' -+ done -+ objdir="$origobjdir" -+ -+ # Try to remove the ${objdir}s in the directories where we deleted files -+ for dir in $rmdirs; do -+ if test -d "$dir"; then -+ func_show_eval "rmdir $dir >/dev/null 2>&1" -+ fi -+ done -+ -+ exit $exit_status -+} -+ -+{ test "$mode" = uninstall || test "$mode" = clean; } && -+ func_mode_uninstall ${1+"$@"} -+ -+test -z "$mode" && { -+ help="$generic_help" -+ func_fatal_help "you must specify a MODE" -+} -+ -+test -z "$exec_cmd" && \ -+ func_fatal_help "invalid operation mode \`$mode'" -+ -+if test -n "$exec_cmd"; then -+ eval exec "$exec_cmd" -+ exit $EXIT_FAILURE -+fi -+ -+exit $exit_status -+ -+ -+# The TAGs below are defined such that we never get into a situation -+# in which we disable both kinds of libraries. Given conflicting -+# choices, we go for a static library, that is the most portable, -+# since we can't tell whether shared libraries were disabled because -+# the user asked for that or because the platform doesn't support -+# them. This is particularly important on AIX, because we don't -+# support having both static and shared libraries enabled at the same -+# time on that platform, so we default to a shared-only configuration. -+# If a disable-shared tag is given, we'll fallback to a static-only -+# configuration. But we'll never go from static-only to shared-only. -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -+build_libtool_libs=no -+build_old_libs=yes -+# ### END LIBTOOL TAG CONFIG: disable-shared -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static -+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -+# ### END LIBTOOL TAG CONFIG: disable-static -+ -+# Local Variables: -+# mode:shell-script -+# sh-indentation:2 -+# End: -+# vi:sw=2 -+ ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/pixman-1.pc -@@ -0,0 +1,11 @@ -+prefix=/opt/mono-2.10 -+exec_prefix=${prefix} -+libdir=${exec_prefix}/lib -+includedir=${prefix}/include -+ -+Name: Pixman -+Description: The pixman library (version 1) -+Version: 0.10.0 -+Cflags: -I${includedir}/pixman-1 -+Libs: -L${libdir} -lpixman-1 -+ ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/pixman/Makefile -@@ -0,0 +1,565 @@ -+# Makefile.in generated by automake 1.10.1 from Makefile.am. -+# pixman/Makefile. Generated from Makefile.in by configure. -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+ -+ -+ -+ -+pkgdatadir = $(datadir)/pixman -+pkglibdir = $(libdir)/pixman -+pkgincludedir = $(includedir)/pixman -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = x86_64-unknown-linux-gnu -+host_triplet = x86_64-unknown-linux-gnu -+ -+# mmx code -+am__append_1 = libpixman-mmx.la -+am__append_2 = libpixman-mmx.la -+ -+# sse2 code -+am__append_3 = libpixman-sse.la -+am__append_4 = libpixman-sse.la -+subdir = pixman -+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ -+ $(srcdir)/Makefile.in $(srcdir)/pixman-version.h.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = pixman-version.h -+LTLIBRARIES = $(noinst_LTLIBRARIES) -+libpixman_1_la_DEPENDENCIES = $(am__append_2) $(am__append_4) -+am_libpixman_1_la_OBJECTS = pixman-access.lo \ -+ pixman-access-accessors.lo pixman-region.lo pixman-image.lo \ -+ pixman-combine.lo pixman-compose.lo \ -+ pixman-compose-accessors.lo pixman-pict.lo pixman-source.lo \ -+ pixman-transformed.lo pixman-transformed-accessors.lo \ -+ pixman-utils.lo pixman-edge.lo pixman-edge-accessors.lo \ -+ pixman-trap.lo pixman-compute-region.lo pixman-timer.lo -+libpixman_1_la_OBJECTS = $(am_libpixman_1_la_OBJECTS) -+libpixman_1_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(libpixman_1_la_LDFLAGS) $(LDFLAGS) -o $@ -+am__DEPENDENCIES_1 = -+libpixman_mmx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -+am__libpixman_mmx_la_SOURCES_DIST = pixman-mmx.c pixman-mmx.h -+am_libpixman_mmx_la_OBJECTS = \ -+ libpixman_mmx_la-pixman-mmx.lo -+libpixman_mmx_la_OBJECTS = $(am_libpixman_mmx_la_OBJECTS) -+libpixman_mmx_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpixman_mmx_la_CFLAGS) \ -+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+am_libpixman_mmx_la_rpath = -+libpixman_sse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -+am__libpixman_sse_la_SOURCES_DIST = pixman-sse.c pixman-sse.h -+am_libpixman_sse_la_OBJECTS = \ -+ libpixman_sse_la-pixman-sse.lo -+libpixman_sse_la_OBJECTS = $(am_libpixman_sse_la_OBJECTS) -+libpixman_sse_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpixman_sse_la_CFLAGS) \ -+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+am_libpixman_sse_la_rpath = -+DEFAULT_INCLUDES = -I. -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -+ $(LDFLAGS) -o $@ -+SOURCES = $(libpixman_1_la_SOURCES) $(libpixman_mmx_la_SOURCES) \ -+ $(libpixman_sse_la_SOURCES) -+DIST_SOURCES = $(libpixman_1_la_SOURCES) \ -+ $(am__libpixman_mmx_la_SOURCES_DIST) \ -+ $(am__libpixman_sse_la_SOURCES_DIST) -+HEADERS = $(noinst_HEADERS) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run aclocal-1.10 -+AMTAR = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run tar -+AR = ar -+AUTOCONF = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoconf -+AUTOHEADER = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run autoheader -+AUTOMAKE = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run automake-1.10 -+AWK = gawk -+CC = gcc -+CCDEPMODE = depmode=gcc3 -+CFLAGS = -g -O2 -Wall -fvisibility=hidden -+CPP = gcc -E -+CPPFLAGS = -+CYGPATH_W = echo -+DEFS = -DHAVE_CONFIG_H -+DEPDIR = .deps -+DEP_CFLAGS = -+DEP_LIBS = -+DSYMUTIL = -+DUMPBIN = -+ECHO_C = -+ECHO_N = -n -+ECHO_T = -+EGREP = /bin/grep -E -+EXEEXT = -+FGREP = /bin/grep -F -+GREP = /bin/grep -+GTK_CFLAGS = -pthread -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pixman-1 -+GTK_LIBS = -pthread -L/usr/lib/x86_64-linux-gnu -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+INSTALL_PROGRAM = ${INSTALL} -+INSTALL_SCRIPT = ${INSTALL} -+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -+LD = /usr/bin/ld -m elf_x86_64 -+LDFLAGS = -+LIBOBJS = -+LIBS = -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+LIPO = -+LN_S = ln -s -+LTLIBOBJS = -+LT_VERSION_INFO = 10:0:10 -+MAKEINFO = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/missing --run makeinfo -+MKDIR_P = /bin/mkdir -p -+MMX_CFLAGS = -msse -mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 -+NM = /usr/bin/nm -B -+NMEDIT = -+OBJDUMP = objdump -+OBJEXT = o -+OTOOL = -+OTOOL64 = -+PACKAGE = pixman -+PACKAGE_BUGREPORT = "sandmann@daimi.au.dk" -+PACKAGE_NAME = pixman -+PACKAGE_STRING = pixman 0.10.0 -+PACKAGE_TARNAME = pixman -+PACKAGE_VERSION = 0.10.0 -+PATH_SEPARATOR = : -+PIXMAN_VERSION_MAJOR = 0 -+PIXMAN_VERSION_MICRO = 0 -+PIXMAN_VERSION_MINOR = 10 -+PKG_CONFIG = /usr/bin/pkg-config -+RANLIB = ranlib -+SED = /bin/sed -+SET_MAKE = -+SHELL = /bin/bash -+SSE_CFLAGS = -mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 -+STRIP = strip -+VERSION = 0.10.0 -+abs_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/pixman -+abs_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/pixman -+abs_top_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman -+abs_top_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman -+ac_ct_CC = gcc -+ac_ct_DUMPBIN = -+am__include = include -+am__leading_dot = . -+am__quote = -+am__tar = ${AMTAR} chof - "$$tardir" -+am__untar = ${AMTAR} xf - -+bindir = ${exec_prefix}/bin -+build = x86_64-unknown-linux-gnu -+build_alias = -+build_cpu = x86_64 -+build_os = linux-gnu -+build_vendor = unknown -+builddir = . -+datadir = ${datarootdir} -+datarootdir = ${prefix}/share -+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -+dvidir = ${docdir} -+exec_prefix = ${prefix} -+host = x86_64-unknown-linux-gnu -+host_alias = -+host_cpu = x86_64 -+host_os = linux-gnu -+host_vendor = unknown -+htmldir = ${docdir} -+includedir = ${prefix}/include -+infodir = ${datarootdir}/info -+install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/pixman/install-sh -+libdir = ${exec_prefix}/lib -+libexecdir = ${exec_prefix}/libexec -+localedir = ${datarootdir}/locale -+localstatedir = ${prefix}/var -+lt_ECHO = echo -+mandir = ${datarootdir}/man -+mkdir_p = /bin/mkdir -p -+oldincludedir = /usr/include -+pdfdir = ${docdir} -+prefix = /opt/mono-2.10 -+program_transform_name = s,x,x, -+psdir = ${docdir} -+sbindir = ${exec_prefix}/sbin -+sharedstatedir = ${prefix}/com -+srcdir = . -+sysconfdir = ${prefix}/etc -+target_alias = -+top_build_prefix = ../ -+top_builddir = .. -+top_srcdir = .. -+noinst_LTLIBRARIES = libpixman-1.la $(am__append_1) $(am__append_3) -+libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -+libpixman_1_la_LIBADD = -lm $(am__append_2) $(am__append_4) -+libpixman_1_la_SOURCES = \ -+ pixman.h \ -+ pixman-access.c \ -+ pixman-access-accessors.c \ -+ pixman-embed.h \ -+ pixman-region.c \ -+ pixman-private.h \ -+ pixman-image.c \ -+ pixman-combine.c \ -+ pixman-compose.c \ -+ pixman-compose-accessors.c \ -+ pixman-pict.c \ -+ pixman-source.c \ -+ pixman-transformed.c \ -+ pixman-transformed-accessors.c \ -+ pixman-utils.c \ -+ pixman-edge.c \ -+ pixman-edge-accessors.c \ -+ pixman-edge-imp.h \ -+ pixman-trap.c \ -+ pixman-compute-region.c \ -+ pixman-timer.c -+ -+ -+#libpixmanincludedir = $(includedir)/pixman-1/ -+noinst_HEADERS = pixman.h pixman-version.h -+EXTRA_DIST = Makefile.win32 -+libpixman_mmx_la_SOURCES = \ -+ pixman-mmx.c \ -+ pixman-mmx.h -+ -+libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS) -+libpixman_mmx_la_LIBADD = $(DEP_LIBS) -+libpixman_sse_la_SOURCES = \ -+ pixman-sse.c \ -+ pixman-sse.h -+ -+libpixman_sse_la_CFLAGS = $(DEP_CFLAGS) $(SSE_CFLAGS) -+libpixman_sse_la_LIBADD = $(DEP_LIBS) -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixman/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu pixman/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+pixman-version.h: $(top_builddir)/config.status $(srcdir)/pixman-version.h.in -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ -+ -+clean-noinstLTLIBRARIES: -+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) -+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ -+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ -+ test "$$dir" != "$$p" || dir=.; \ -+ echo "rm -f \"$${dir}/so_locations\""; \ -+ rm -f "$${dir}/so_locations"; \ -+ done -+libpixman-1.la: $(libpixman_1_la_OBJECTS) $(libpixman_1_la_DEPENDENCIES) -+ $(libpixman_1_la_LINK) $(libpixman_1_la_OBJECTS) $(libpixman_1_la_LIBADD) $(LIBS) -+libpixman-mmx.la: $(libpixman_mmx_la_OBJECTS) $(libpixman_mmx_la_DEPENDENCIES) -+ $(libpixman_mmx_la_LINK) $(am_libpixman_mmx_la_rpath) $(libpixman_mmx_la_OBJECTS) $(libpixman_mmx_la_LIBADD) $(LIBS) -+libpixman-sse.la: $(libpixman_sse_la_OBJECTS) $(libpixman_sse_la_DEPENDENCIES) -+ $(libpixman_sse_la_LINK) $(am_libpixman_sse_la_rpath) $(libpixman_sse_la_OBJECTS) $(libpixman_sse_la_LIBADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+include ./$(DEPDIR)/libpixman_mmx_la-pixman-mmx.Plo -+include ./$(DEPDIR)/libpixman_sse_la-pixman-sse.Plo -+include ./$(DEPDIR)/pixman-access-accessors.Plo -+include ./$(DEPDIR)/pixman-access.Plo -+include ./$(DEPDIR)/pixman-combine.Plo -+include ./$(DEPDIR)/pixman-compose-accessors.Plo -+include ./$(DEPDIR)/pixman-compose.Plo -+include ./$(DEPDIR)/pixman-compute-region.Plo -+include ./$(DEPDIR)/pixman-edge-accessors.Plo -+include ./$(DEPDIR)/pixman-edge.Plo -+include ./$(DEPDIR)/pixman-image.Plo -+include ./$(DEPDIR)/pixman-pict.Plo -+include ./$(DEPDIR)/pixman-region.Plo -+include ./$(DEPDIR)/pixman-source.Plo -+include ./$(DEPDIR)/pixman-timer.Plo -+include ./$(DEPDIR)/pixman-transformed-accessors.Plo -+include ./$(DEPDIR)/pixman-transformed.Plo -+include ./$(DEPDIR)/pixman-trap.Plo -+include ./$(DEPDIR)/pixman-utils.Plo -+ -+.c.o: -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c $< -+ -+.c.obj: -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -+# source='$<' object='$@' libtool=yes \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(LTCOMPILE) -c -o $@ $< -+ -+libpixman_mmx_la-pixman-mmx.lo: pixman-mmx.c -+ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_mmx_la_CFLAGS) $(CFLAGS) -MT libpixman_mmx_la-pixman-mmx.lo -MD -MP -MF $(DEPDIR)/libpixman_mmx_la-pixman-mmx.Tpo -c -o libpixman_mmx_la-pixman-mmx.lo `test -f 'pixman-mmx.c' || echo '$(srcdir)/'`pixman-mmx.c -+ mv -f $(DEPDIR)/libpixman_mmx_la-pixman-mmx.Tpo $(DEPDIR)/libpixman_mmx_la-pixman-mmx.Plo -+# source='pixman-mmx.c' object='libpixman_mmx_la-pixman-mmx.lo' libtool=yes \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_mmx_la_CFLAGS) $(CFLAGS) -c -o libpixman_mmx_la-pixman-mmx.lo `test -f 'pixman-mmx.c' || echo '$(srcdir)/'`pixman-mmx.c -+ -+libpixman_sse_la-pixman-sse.lo: pixman-sse.c -+ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_sse_la_CFLAGS) $(CFLAGS) -MT libpixman_sse_la-pixman-sse.lo -MD -MP -MF $(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo -c -o libpixman_sse_la-pixman-sse.lo `test -f 'pixman-sse.c' || echo '$(srcdir)/'`pixman-sse.c -+ mv -f $(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo $(DEPDIR)/libpixman_sse_la-pixman-sse.Plo -+# source='pixman-sse.c' object='libpixman_sse_la-pixman-sse.lo' libtool=yes \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_sse_la_CFLAGS) $(CFLAGS) -c -o libpixman_sse_la-pixman-sse.lo `test -f 'pixman-sse.c' || echo '$(srcdir)/'`pixman-sse.c -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(LTLIBRARIES) $(HEADERS) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-dvi: install-dvi-am -+ -+install-exec-am: -+ -+install-html: install-html-am -+ -+install-info: install-info-am -+ -+install-man: -+ -+install-pdf: install-pdf-am -+ -+install-ps: install-ps-am -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: -+ -+.MAKE: install-am install-strip -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-pdf install-pdf-am install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: ---- /dev/null -+++ libgdiplus-2.10-2.10/pixman/stamp-h1 -@@ -0,0 +1 @@ -+timestamp for config.h ---- /dev/null -+++ libgdiplus-2.10-2.10/Makefile -@@ -0,0 +1,704 @@ -+# Makefile.in generated by automake 1.10.1 from Makefile.am. -+# Makefile. Generated from Makefile.in by configure. -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+ -+ -+ -+pkgdatadir = $(datadir)/libgdiplus -+pkglibdir = $(libdir)/libgdiplus -+pkgincludedir = $(includedir)/libgdiplus -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = x86_64-pc-linux-gnu -+host_triplet = x86_64-pc-linux-gnu -+target_triplet = x86_64-pc-linux-gnu -+subdir = . -+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ -+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ -+ $(srcdir)/libgdiplus.pc.in $(srcdir)/libgdiplus0.spec.in \ -+ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ -+ TODO config.guess config.sub depcomp install-sh ltmain.sh \ -+ missing -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.in -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -+ configure.lineno config.status.lineno -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = config.h -+CONFIG_CLEAN_FILES = libgdiplus.pc libgdiplus0.spec -+SOURCES = -+DIST_SOURCES = -+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -+ html-recursive info-recursive install-data-recursive \ -+ install-dvi-recursive install-exec-recursive \ -+ install-html-recursive install-info-recursive \ -+ install-pdf-recursive install-ps-recursive install-recursive \ -+ installcheck-recursive installdirs-recursive pdf-recursive \ -+ ps-recursive uninstall-recursive -+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -+am__vpath_adj = case $$p in \ -+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ -+ *) f=$$p;; \ -+ esac; -+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -+am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -+pkgconfigDATA_INSTALL = $(INSTALL_DATA) -+DATA = $(pkgconfig_DATA) -+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ -+ distclean-recursive maintainer-clean-recursive -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(distdir) -+am__remove_distdir = \ -+ { test ! -d $(distdir) \ -+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -+ && rm -fr $(distdir); }; } -+DIST_ARCHIVES = $(distdir).tar.gz -+GZIP_ENV = --best -+distuninstallcheck_listfiles = find . -type f -print -+distcleancheck_listfiles = find . -type f -print -+ACLOCAL = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run aclocal-1.10 -+AMTAR = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run tar -+AR = ar -+AUTOCONF = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run autoconf -+AUTOHEADER = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run autoheader -+AUTOMAKE = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run automake-1.10 -+AWK = gawk -+BASE_DEPENDENCIES_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -+BASE_DEPENDENCIES_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -+CAIRO_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -+CAIRO_DIR = -+CAIRO_LIBS = -lcairo -+CC = gcc -+CCDEPMODE = depmode=none -+CFLAGS = -g -O2 -pthread -+CPP = gcc -E -+CPPFLAGS = -+CYGPATH_W = echo -+DEFS = -DHAVE_CONFIG_H -+DEPDIR = .deps -+DSYMUTIL = -+DUMPBIN = -+ECHO_C = -+ECHO_N = -n -+ECHO_T = -+EGREP = /bin/grep -E -+EXEEXT = -+FGREP = /bin/grep -F -+FONTCONFIG_CFLAGS = -+FONTCONFIG_CONFIG = -+FONTCONFIG_LIBS = -L/usr/lib/x86_64-linux-gnu -lfontconfig -+FREETYPE2_CFLAGS = -I/usr/include/freetype2 -+FREETYPE2_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -+FREETYPE_CONFIG = -+GDIPLUS_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif -+GDIPLUS_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+GDIPLUS_PKG_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif -+GDIPLUS_PKG_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+GDIPLUS_PKG_REQ = cairo -+GREP = /bin/grep -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+INSTALL_PROGRAM = ${INSTALL} -+INSTALL_SCRIPT = ${INSTALL} -+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -+LD = /usr/bin/ld -m elf_x86_64 -+LDFLAGS = -Wl,-Bsymbolic-functions -+LIBEXIF_CFLAGS = -I/usr/include/libexif -+LIBEXIF_LIBS = -lexif -+LIBOBJS = -+LIBS = -lpthread -lfontconfig -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+LIPO = -+LN_S = ln -s -+LTLIBOBJS = -+MAINT = # -+MAKEINFO = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run makeinfo -+MKDIR_P = /bin/mkdir -p -+NM = /usr/bin/nm -B -+NMEDIT = -+OBJDUMP = objdump -+OBJEXT = o -+OTOOL = -+OTOOL64 = -+PACKAGE = libgdiplus -+PACKAGE_BUGREPORT = -+PACKAGE_NAME = -+PACKAGE_STRING = -+PACKAGE_TARNAME = -+PACKAGE_VERSION = -+PANGO_CFLAGS = -+PANGO_LIBS = -+PATH_SEPARATOR = : -+PKG_CONFIG = /usr/bin/pkg-config -+RANLIB = ranlib -+SED = /bin/sed -+SET_MAKE = -+SHELL = /bin/bash -+STRIP = strip -+VERSION = 2.10 -+abs_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+abs_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+abs_top_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+abs_top_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+ac_ct_CC = gcc -+ac_ct_DUMPBIN = -+am__include = include -+am__leading_dot = . -+am__quote = -+am__tar = ${AMTAR} chof - "$$tardir" -+am__untar = ${AMTAR} xf - -+bindir = ${exec_prefix}/bin -+build = x86_64-pc-linux-gnu -+build_alias = x86_64-linux-gnu -+build_cpu = x86_64 -+build_os = linux-gnu -+build_vendor = pc -+builddir = . -+datadir = ${datarootdir} -+datarootdir = ${prefix}/share -+docdir = ${datarootdir}/doc/${PACKAGE} -+dvidir = ${docdir} -+exec_prefix = ${prefix} -+host = x86_64-pc-linux-gnu -+host_alias = -+host_cpu = x86_64 -+host_os = linux-gnu -+host_vendor = pc -+htmldir = ${docdir} -+includedir = ${prefix}/include -+infodir = ${prefix}/share/info -+install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/install-sh -+libdir = ${exec_prefix}/lib -+libexecdir = ${prefix}/lib/libgdiplus-2.10 -+localedir = ${datarootdir}/locale -+localstatedir = /var -+lt_ECHO = echo -+mandir = ${prefix}/share/man -+mkdir_p = /bin/mkdir -p -+oldincludedir = /usr/include -+pdfdir = ${docdir} -+prefix = /opt/mono-2.10 -+program_transform_name = s,x,x, -+psdir = ${docdir} -+sbindir = ${exec_prefix}/sbin -+sharedstatedir = ${prefix}/com -+srcdir = . -+subdirs = -+sysconfdir = /etc -+target = x86_64-pc-linux-gnu -+target_alias = -+target_cpu = x86_64 -+target_os = linux-gnu -+target_vendor = pc -+top_build_prefix = -+top_builddir = . -+top_srcdir = . -+SUBDIRS = src tests -+DIST_SUBDIRS = pixman cairo src tests -+pkgconfigdir = $(libdir)/pkgconfig -+pkgconfig_DATA = libgdiplus.pc -+DISTCLEANFILES = libgdiplus.pc -+EXTRA_DIST = libgdiplus.pc.in LICENSE MPL-1.1.html -+all: config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-recursive -+ -+.SUFFIXES: -+am--refresh: -+ @: -+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ -+ cd $(srcdir) && $(AUTOMAKE) --gnu \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ echo ' $(SHELL) ./config.status'; \ -+ $(SHELL) ./config.status;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ $(SHELL) ./config.status --recheck -+ -+$(top_srcdir)/configure: # $(am__configure_deps) -+ cd $(srcdir) && $(AUTOCONF) -+$(ACLOCAL_M4): # $(am__aclocal_m4_deps) -+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -+ -+config.h: stamp-h1 -+ @if test ! -f $@; then \ -+ rm -f stamp-h1; \ -+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ -+ else :; fi -+ -+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status -+ @rm -f stamp-h1 -+ cd $(top_builddir) && $(SHELL) ./config.status config.h -+$(srcdir)/config.h.in: # $(am__configure_deps) -+ cd $(top_srcdir) && $(AUTOHEADER) -+ rm -f stamp-h1 -+ touch $@ -+ -+distclean-hdr: -+ -rm -f config.h stamp-h1 -+libgdiplus.pc: $(top_builddir)/config.status $(srcdir)/libgdiplus.pc.in -+ cd $(top_builddir) && $(SHELL) ./config.status $@ -+libgdiplus0.spec: $(top_builddir)/config.status $(srcdir)/libgdiplus0.spec.in -+ cd $(top_builddir) && $(SHELL) ./config.status $@ -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+install-pkgconfigDATA: $(pkgconfig_DATA) -+ @$(NORMAL_INSTALL) -+ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" -+ @list='$(pkgconfig_DATA)'; for p in $$list; do \ -+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -+ f=$(am__strip_dir) \ -+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ -+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ -+ done -+ -+uninstall-pkgconfigDATA: -+ @$(NORMAL_UNINSTALL) -+ @list='$(pkgconfig_DATA)'; for p in $$list; do \ -+ f=$(am__strip_dir) \ -+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ -+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ -+ done -+ -+# This directory's subdirectories are mostly independent; you can cd -+# into them and run `make' without going through this Makefile. -+# To change the values of `make' variables: instead of editing Makefiles, -+# (1) if the variable is set in `config.status', edit `config.status' -+# (which will cause the Makefiles to be regenerated when you run `make'); -+# (2) otherwise, pass the desired values on the `make' command line. -+$(RECURSIVE_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ dot_seen=yes; \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done; \ -+ if test "$$dot_seen" = "no"; then \ -+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -+ fi; test -z "$$fail" -+ -+$(RECURSIVE_CLEAN_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ rev=''; for subdir in $$list; do \ -+ if test "$$subdir" = "."; then :; else \ -+ rev="$$subdir $$rev"; \ -+ fi; \ -+ done; \ -+ rev="$$rev ."; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ for subdir in $$rev; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done && test -z "$$fail" -+tags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -+ done -+ctags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -+ done -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -+ include_option=--etags-include; \ -+ empty_fix=.; \ -+ else \ -+ include_option=--include; \ -+ empty_fix=; \ -+ fi; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test ! -f $$subdir/TAGS || \ -+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -+ fi; \ -+ done; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ $(am__remove_distdir) -+ test -d $(distdir) || mkdir $(distdir) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test -d "$(distdir)/$$subdir" \ -+ || $(MKDIR_P) "$(distdir)/$$subdir" \ -+ || exit 1; \ -+ distdir=`$(am__cd) $(distdir) && pwd`; \ -+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -+ (cd $$subdir && \ -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$$top_distdir" \ -+ distdir="$$distdir/$$subdir" \ -+ am__remove_distdir=: \ -+ am__skip_length_check=: \ -+ distdir) \ -+ || exit 1; \ -+ fi; \ -+ done -+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ -+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ -+ || chmod -R a+r $(distdir) -+dist-gzip: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) -+ -+dist-bzip2: distdir -+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -+ $(am__remove_distdir) -+ -+dist-lzma: distdir -+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -+ $(am__remove_distdir) -+ -+dist-tarZ: distdir -+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -+ $(am__remove_distdir) -+ -+dist-shar: distdir -+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -+ $(am__remove_distdir) -+ -+dist-zip: distdir -+ -rm -f $(distdir).zip -+ zip -rq $(distdir).zip $(distdir) -+ $(am__remove_distdir) -+ -+dist dist-all: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) -+ -+# This target untars the dist file and tries a VPATH configuration. Then -+# it guarantees that the distribution is self-contained by making another -+# tarfile. -+distcheck: dist -+ case '$(DIST_ARCHIVES)' in \ -+ *.tar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ -+ *.tar.bz2*) \ -+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ -+ *.tar.lzma*) \ -+ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ -+ *.tar.Z*) \ -+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -+ *.shar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ -+ *.zip*) \ -+ unzip $(distdir).zip ;;\ -+ esac -+ chmod -R a-w $(distdir); chmod a+w $(distdir) -+ mkdir $(distdir)/_build -+ mkdir $(distdir)/_inst -+ chmod a-w $(distdir) -+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -+ && cd $(distdir)/_build \ -+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -+ $(DISTCHECK_CONFIGURE_FLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) dvi \ -+ && $(MAKE) $(AM_MAKEFLAGS) check \ -+ && $(MAKE) $(AM_MAKEFLAGS) install \ -+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -+ distuninstallcheck \ -+ && chmod -R a-w "$$dc_install_base" \ -+ && ({ \ -+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -+ } || { rm -rf "$$dc_destdir"; exit 1; }) \ -+ && rm -rf "$$dc_destdir" \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist \ -+ && rm -rf $(DIST_ARCHIVES) \ -+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -+ $(am__remove_distdir) -+ @(echo "$(distdir) archives ready for distribution: "; \ -+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -+distuninstallcheck: -+ @cd $(distuninstallcheck_dir) \ -+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -+ || { echo "ERROR: files left after uninstall:" ; \ -+ if test -n "$(DESTDIR)"; then \ -+ echo " (check DESTDIR support)"; \ -+ fi ; \ -+ $(distuninstallcheck_listfiles) ; \ -+ exit 1; } >&2 -+distcleancheck: distclean -+ @if test '$(srcdir)' = . ; then \ -+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -+ exit 1 ; \ -+ fi -+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -+ || { echo "ERROR: files left in build directory after distclean:" ; \ -+ $(distcleancheck_listfiles) ; \ -+ exit 1; } >&2 -+check-am: all-am -+check: check-recursive -+all-am: Makefile $(DATA) config.h -+installdirs: installdirs-recursive -+installdirs-am: -+ for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ -+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ -+ done -+install: install-recursive -+install-exec: install-exec-recursive -+install-data: install-data-recursive -+uninstall: uninstall-recursive -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-recursive -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-recursive -+ -+clean-am: clean-generic clean-libtool mostlyclean-am -+ -+distclean: distclean-recursive -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -f Makefile -+distclean-am: clean-am distclean-generic distclean-hdr \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-recursive -+ -+dvi-am: -+ -+html: html-recursive -+ -+info: info-recursive -+ -+info-am: -+ -+install-data-am: install-pkgconfigDATA -+ -+install-dvi: install-dvi-recursive -+ -+install-exec-am: -+ -+install-html: install-html-recursive -+ -+install-info: install-info-recursive -+ -+install-man: -+ -+install-pdf: install-pdf-recursive -+ -+install-ps: install-ps-recursive -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-recursive -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf $(top_srcdir)/autom4te.cache -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-recursive -+ -+mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -+pdf: pdf-recursive -+ -+pdf-am: -+ -+ps: ps-recursive -+ -+ps-am: -+ -+uninstall-am: uninstall-pkgconfigDATA -+ -+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ -+ install-strip -+ -+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ -+ all all-am am--refresh check check-am clean clean-generic \ -+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ -+ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ -+ distclean distclean-generic distclean-hdr distclean-libtool \ -+ distclean-tags distcleancheck distdir distuninstallcheck dvi \ -+ dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-dvi install-dvi-am \ -+ install-exec install-exec-am install-html install-html-am \ -+ install-info install-info-am install-man install-pdf \ -+ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ installdirs-am maintainer-clean maintainer-clean-generic \ -+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ -+ ps ps-am tags tags-recursive uninstall uninstall-am \ -+ uninstall-pkgconfigDATA -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: ---- /dev/null -+++ libgdiplus-2.10-2.10/config.h -@@ -0,0 +1,138 @@ -+/* config.h. Generated from config.h.in by configure. */ -+/* config.h.in. Generated from configure.in by autoheader. */ -+ -+/* Define if building universal (internal helper macro) */ -+/* #undef AC_APPLE_UNIVERSAL_BUILD */ -+ -+/* OpenBSD */ -+/* #undef BSDOS */ -+ -+/* Win32 */ -+/* #undef CYGWIN */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_BYTESWAP_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_DLFCN_H 1 -+ -+/* Define to 1 if you have the `FcFini' function. */ -+#define HAVE_FCFINI 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_INTTYPES_H 1 -+ -+/* Define if libexif is available. */ -+#define HAVE_LIBEXIF 1 -+ -+/* Define to 1 if you have the `fontconfig' library (-lfontconfig). */ -+#define HAVE_LIBFONTCONFIG 1 -+ -+/* Define if gif support is available */ -+#define HAVE_LIBGIF 1 -+ -+/* Define to 1 if you have the `intl' library (-lintl). */ -+/* #undef HAVE_LIBINTL */ -+ -+/* Define if jpeg support is available */ -+#define HAVE_LIBJPEG 1 -+ -+/* Define if png support is available. Always defined. */ -+#define HAVE_LIBPNG 1 -+ -+/* Define to 1 if you have the `pthread' library (-lpthread). */ -+#define HAVE_LIBPTHREAD 1 -+ -+/* Define if tiff support is available */ -+#define HAVE_LIBTIFF 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_MEMORY_H 1 -+ -+/* sigsetjmp is available */ -+#define HAVE_SIGSETJMP 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STDINT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STDLIB_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STRINGS_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STRING_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_SYS_STAT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_UNISTD_H 1 -+ -+/* Support for the visibility ("hidden") attribute */ -+#define HAVE_VISIBILITY_HIDDEN 1 -+ -+/* Linux */ -+#define LINUX 1 -+ -+/* Define to the sub-directory in which libtool stores uninstalled libraries. -+ */ -+#define LT_OBJDIR ".libs/" -+ -+/* OS X */ -+/* #undef OSX */ -+ -+/* Unknown */ -+/* #undef OTHEROS */ -+ -+/* Name of package */ -+#define PACKAGE "libgdiplus" -+ -+/* Define to the address where bug reports for this package should be sent. */ -+#define PACKAGE_BUGREPORT "" -+ -+/* Define to the full name of this package. */ -+#define PACKAGE_NAME "" -+ -+/* Define to the full name and version of this package. */ -+#define PACKAGE_STRING "" -+ -+/* Define to the one symbol short name of this package. */ -+#define PACKAGE_TARNAME "" -+ -+/* Define to the version of this package. */ -+#define PACKAGE_VERSION "" -+ -+/* Solaris */ -+/* #undef SOLARIS */ -+ -+/* Define to 1 if you have the ANSI C header files. */ -+#define STDC_HEADERS 1 -+ -+/* Use Cairo/pixman bundled in libgdiplus */ -+/* #undef USE_INCLUDED_CAIRO */ -+ -+/* Use Pango to measure and draw text (INCOMPLETE and UNSUPPORTED) */ -+/* #undef USE_PANGO_RENDERING */ -+ -+/* Version number of package */ -+#define VERSION "2.10" -+ -+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most -+ significant byte first (like Motorola and SPARC, unlike Intel). */ -+#if defined AC_APPLE_UNIVERSAL_BUILD -+# if defined __BIG_ENDIAN__ -+# define WORDS_BIGENDIAN 1 -+# endif -+#else -+# ifndef WORDS_BIGENDIAN -+/* # undef WORDS_BIGENDIAN */ -+# endif -+#endif -+ -+/* For libc reentrancy */ -+/* #undef _REENTRANT */ ---- /dev/null -+++ libgdiplus-2.10-2.10/libgdiplus.pc -@@ -0,0 +1,12 @@ -+prefix=/opt/mono-2.10 -+exec_prefix=${prefix} -+libdir=${exec_prefix}/lib -+includedir=${prefix}/include -+ -+ -+Name: libgdiplus -+Description: GDI+ implementation -+Version: 2.10 -+Requires: glib-2.0 gmodule-2.0 gthread-2.0 -+Libs: -L${libdir} -lgdiplus -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+Cflags: -I${includedir} -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif ---- /dev/null -+++ libgdiplus-2.10-2.10/libgdiplus0.spec -@@ -0,0 +1,65 @@ -+%define real_name libgdiplus -+# There may be strange bugs when using the system cairo -+%define system_cairo 0 -+ -+Name: libgdiplus0 -+Version: 2.10 -+Release: 0 -+License: LGPL v2.1 only ; MPL ; MIT License (or similar) -+Url: http://go-mono.org/ -+Source0: %{real_name}-%{version}.tar.bz2 -+Summary: Open Source Implementation of the GDI+ API -+Group: Development/Libraries/Other -+BuildRoot: %{_tmppath}/%{name}-%{version}-build -+Obsoletes: libgdiplus-devel -+Provides: libgdiplus-devel -+Obsoletes: libgdiplus -+Provides: libgdiplus -+%if %system_cairo -+BuildRequires: cairo-devel >= 1.6.4 -+%endif -+BuildRequires: fontconfig-devel -+BuildRequires: freetype2-devel -+BuildRequires: giflib-devel -+BuildRequires: glib2-devel -+BuildRequires: libexif-devel -+BuildRequires: libjpeg-devel -+BuildRequires: libpng-devel -+BuildRequires: libtiff-devel -+BuildRequires: xorg-x11-libXrender-devel -+ -+%description -+This is part of the Mono project. It is required when using -+Windows.Forms. -+ -+%files -+%defattr(-, root, root) -+%_libdir/libgdiplus.so* -+%_libdir/pkgconfig/libgdiplus.pc -+%doc AUTHORS COPYING ChangeLog* NEWS README -+ -+%prep -+%setup -q -n %{real_name}-%{version} -+ -+%build -+export CFLAGS="$RPM_OPT_FLAGS" -+%configure -+make -+ -+%install -+make install DESTDIR=%{buildroot} -+# Unwanted files: -+rm -f %{buildroot}%{_libdir}/libgdiplus.a -+rm -f %{buildroot}%{_libdir}/libgdiplus.la -+# Remove generic non-usefull INSTALL file... (appeases -+# suse rpmlint checks, saves 3kb) -+find . -name INSTALL | xargs rm -f -+ -+%clean -+rm -rf "$RPM_BUILD_ROOT" -+ -+%post -p /sbin/ldconfig -+ -+%postun -p /sbin/ldconfig -+ -+%changelog ---- /dev/null -+++ libgdiplus-2.10-2.10/libtool -@@ -0,0 +1,8893 @@ -+#! /bin/bash -+ -+# libtool - Provide generalized library-building support services. -+# Generated automatically by config.status (libgdiplus) 2.10 -+# Libtool was configured on host lemon: -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -+# 2006, 2007, 2008 Free Software Foundation, Inc. -+# Written by Gordon Matzigkeit, 1996 -+# -+# This file is part of GNU Libtool. -+# -+# GNU Libtool 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. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -+# obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+ -+# The names of the tagged configurations supported by this script. -+available_tags="" -+ -+# ### BEGIN LIBTOOL CONFIG -+ -+# Which release of libtool.m4 was used? -+macro_version=2.2.6 -+macro_revision=1.3012 -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=yes -+ -+# Whether or not to build static libraries. -+build_old_libs=yes -+ -+# What type of objects to build. -+pic_mode=default -+ -+# Whether or not to optimize for fast installation. -+fast_install=yes -+ -+# The host system. -+host_alias= -+host=x86_64-pc-linux-gnu -+host_os=linux-gnu -+ -+# The build system. -+build_alias=x86_64-linux-gnu -+build=x86_64-pc-linux-gnu -+build_os=linux-gnu -+ -+# A sed program that does not truncate output. -+SED="/bin/sed" -+ -+# Sed that helps us avoid accidentally triggering echo(1) options like -n. -+Xsed="$SED -e 1s/^X//" -+ -+# A grep program that handles long lines. -+GREP="/bin/grep" -+ -+# An ERE matcher. -+EGREP="/bin/grep -E" -+ -+# A literal string matcher. -+FGREP="/bin/grep -F" -+ -+# A BSD- or MS-compatible name lister. -+NM="/usr/bin/nm -B" -+ -+# Whether we need soft or hard links. -+LN_S="ln -s" -+ -+# What is the maximum length of a command? -+max_cmd_len=3458764513820540925 -+ -+# Object file suffix (normally "o"). -+objext=o -+ -+# Executable file suffix (normally ""). -+exeext= -+ -+# whether the shell understands "unset". -+lt_unset=unset -+ -+# turn spaces into newlines. -+SP2NL="tr \\040 \\012" -+ -+# turn newlines into spaces. -+NL2SP="tr \\015\\012 \\040\\040" -+ -+# How to create reloadable object files. -+reload_flag=" -r" -+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" -+ -+# An object symbol dumper. -+OBJDUMP="objdump" -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method="pass_all" -+ -+# Command to use when deplibs_check_method == "file_magic". -+file_magic_cmd="\$MAGIC_CMD" -+ -+# The archiver. -+AR="ar" -+AR_FLAGS="cru" -+ -+# A symbol stripping program. -+STRIP="strip" -+ -+# Commands used to install an old-style archive. -+RANLIB="ranlib" -+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" -+old_postuninstall_cmds="" -+ -+# A C compiler. -+LTCC="gcc" -+ -+# LTCC compiler flags. -+LTCFLAGS="-g -O2 -pthread" -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" -+ -+# Transform the output of nm in a proper C declaration. -+global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" -+ -+# Transform the output of nm in a C name address pair. -+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" -+ -+# Transform the output of nm in a C name address pair when lib prefix is needed. -+global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=.libs -+ -+# Shell to use when invoking shell scripts. -+SHELL="/bin/bash" -+ -+# An echo program that does not interpret backslashes. -+ECHO="echo" -+ -+# Used to examine libraries when file_magic_cmd begins with "file". -+MAGIC_CMD=file -+ -+# Must we lock files when doing compilation? -+need_locks="no" -+ -+# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -+DSYMUTIL="" -+ -+# Tool to change global to local symbols on Mac OS X. -+NMEDIT="" -+ -+# Tool to manipulate fat objects and archives on Mac OS X. -+LIPO="" -+ -+# ldd/readelf like tool for Mach-O binaries on Mac OS X. -+OTOOL="" -+ -+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -+OTOOL64="" -+ -+# Old archive suffix (normally "a"). -+libext=a -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds=".so" -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds="" -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at link time. -+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -+ -+# Do we need the "lib" prefix for modules? -+need_lib_prefix=no -+ -+# Do we need a version for libraries? -+need_version=no -+ -+# Library versioning type. -+version_type=linux -+ -+# Shared library runtime path variable. -+runpath_var=LD_RUN_PATH -+ -+# Shared library path variable. -+shlibpath_var=LD_LIBRARY_PATH -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=no -+ -+# Format of library name prefix. -+libname_spec="lib\$name" -+ -+# List of archive names. First name is the real one, the rest are links. -+# The last name is the one that the linker finds with -lNAME -+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" -+ -+# The coded name of the library, if different from the real name. -+soname_spec="\${libname}\${release}\${shared_ext}\$major" -+ -+# Command to use after installation of a shared archive. -+postinstall_cmds="" -+ -+# Command to use after uninstallation of a shared archive. -+postuninstall_cmds="" -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" -+ -+# As "finish_cmds", except a single script fragment to be evaled but -+# not shown. -+finish_eval="" -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=yes -+ -+# Compile-time system search path for libraries. -+sys_lib_search_path_spec="/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2 /usr/lib/x86_64-linux-gnu /lib /usr/lib" -+ -+# Run-time system search path for libraries. -+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/fglrx /usr/lib32/fglrx /lib32 /usr/lib32 /usr/lib32/alsa-lib /usr/lib/alsa-lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " -+ -+# Whether dlopen is supported. -+dlopen_support=unknown -+ -+# Whether dlopen of programs is supported. -+dlopen_self=unknown -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=unknown -+ -+# Commands to strip libraries. -+old_striplib="strip --strip-debug" -+striplib="strip --strip-unneeded" -+ -+ -+# The linker used to build libraries. -+LD="/usr/bin/ld -m elf_x86_64" -+ -+# Commands used to build an old-style archive. -+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" -+ -+# A language specific compiler. -+CC="gcc" -+ -+# Is the compiler the GNU compiler? -+with_gcc=yes -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=" -fno-builtin" -+ -+# How to pass a linker flag through the compiler. -+wl="-Wl," -+ -+# Additional compiler flags for building library objects. -+pic_flag=" -fPIC -DPIC" -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag="-static" -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o="yes" -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=no -+ -+# Whether or not to disallow shared libs when runtime libs are static. -+allow_libtool_libs_with_static_runtimes=no -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec="\${wl}--export-dynamic" -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" -+ -+# Whether the compiler copes with passing no objects directly. -+compiler_needs_object="no" -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds="" -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds="" -+ -+# Commands used to build a shared archive. -+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" -+archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ -+ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ -+ echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ -+ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" -+ -+# Commands used to build a loadable module if different from building -+# a shared archive. -+module_cmds="" -+module_expsym_cmds="" -+ -+# Whether we are building with GNU ld or not. -+with_gnu_ld="yes" -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag="" -+ -+# Flag that enforces no undefined symbols. -+no_undefined_flag="" -+ -+# Flag to hardcode $libdir into a binary during linking. -+# This must work even if $libdir does not exist -+hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" -+ -+# If ld is used when linking, flag to hardcode $libdir into a binary -+# during linking. This must work even if $libdir does not exist. -+hardcode_libdir_flag_spec_ld="" -+ -+# Whether we need a single "-rpath" flag with a separated argument. -+hardcode_libdir_separator="" -+ -+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -+# DIR into the resulting binary. -+hardcode_direct=no -+ -+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -+# DIR into the resulting binary and the resulting library dependency is -+# "absolute",i.e impossible to change by setting ${shlibpath_var} if the -+# library is relocated. -+hardcode_direct_absolute=no -+ -+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -+# into the resulting binary. -+hardcode_minus_L=no -+ -+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -+# into the resulting binary. -+hardcode_shlibpath_var=unsupported -+ -+# Set to "yes" if building a shared library automatically hardcodes DIR -+# into the library and all subsequent libraries and executables linked -+# against it. -+hardcode_automatic=no -+ -+# Set to yes if linker adds runtime paths of dependent libraries -+# to runtime path list. -+inherit_rpath=no -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=unknown -+ -+# Fix the shell variable $srcfile for the compiler. -+fix_srcfile_path="" -+ -+# Set to "yes" if exported symbols are required. -+always_export_symbols=no -+ -+# The commands to list exported symbols. -+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" -+ -+# Symbols that must always be exported. -+include_expsyms="" -+ -+# Commands necessary for linking programs (against libraries) with templates. -+prelink_cmds="" -+ -+# Specify filename containing input files. -+file_list_spec="" -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=immediate -+ -+# ### END LIBTOOL CONFIG -+ -+# Generated from ltmain.m4sh. -+ -+# ltmain.sh (GNU libtool) 2.2.6 -+# Written by Gordon Matzigkeit , 1996 -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. -+# This is free software; see the source for copying conditions. There is NO -+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+ -+# GNU Libtool 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. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, -+# or obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+# Usage: $progname [OPTION]... [MODE-ARG]... -+# -+# Provide generalized library-building support services. -+# -+# --config show all configuration variables -+# --debug enable verbose shell tracing -+# -n, --dry-run display commands without modifying any files -+# --features display basic configuration information and exit -+# --mode=MODE use operation mode MODE -+# --preserve-dup-deps don't remove duplicate dependency libraries -+# --quiet, --silent don't print informational messages -+# --tag=TAG use configuration variables from tag TAG -+# -v, --verbose print informational messages (default) -+# --version print version information -+# -h, --help print short or long help message -+# -+# MODE must be one of the following: -+# -+# clean remove files from the build directory -+# compile compile a source file into a libtool object -+# execute automatically set library path, then run a program -+# finish complete the installation of libtool libraries -+# install install libraries or executables -+# link create a library or an executable -+# uninstall remove libraries from an installed directory -+# -+# MODE-ARGS vary depending on the MODE. -+# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -+# -+# When reporting a bug, please describe a test case to reproduce it and -+# include the following information: -+# -+# host-triplet: $host -+# shell: $SHELL -+# compiler: $LTCC -+# compiler flags: $LTCFLAGS -+# linker: $LD (gnu? $with_gnu_ld) -+# $progname: (GNU libtool) 2.2.6 -+# automake: $automake_version -+# autoconf: $autoconf_version -+# -+# Report bugs to . -+ -+PROGRAM=ltmain.sh -+PACKAGE=libtool -+VERSION=2.2.6 -+TIMESTAMP="" -+package_revision=1.3012 -+ -+# Be Bourne compatible -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# NLS nuisances: We save the old values to restore during execute mode. -+# Only set LANG and LC_ALL to C if already set. -+# These must not be set unconditionally because not all systems understand -+# e.g. LANG=C (notably SCO). -+lt_user_locale= -+lt_safe_locale= -+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+do -+ eval "if test \"\${$lt_var+set}\" = set; then -+ save_$lt_var=\$$lt_var -+ $lt_var=C -+ export $lt_var -+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" -+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" -+ fi" -+done -+ -+$lt_unset CDPATH -+ -+ -+ -+ -+ -+: ${CP="cp -f"} -+: ${ECHO="echo"} -+: ${EGREP="/usr/bin/grep -E"} -+: ${FGREP="/usr/bin/grep -F"} -+: ${GREP="/usr/bin/grep"} -+: ${LN_S="ln -s"} -+: ${MAKE="make"} -+: ${MKDIR="mkdir"} -+: ${MV="mv -f"} -+: ${RM="rm -f"} -+: ${SED="/opt/local/bin/gsed"} -+: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -+: ${Xsed="$SED -e 1s/^X//"} -+ -+# Global variables: -+EXIT_SUCCESS=0 -+EXIT_FAILURE=1 -+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -+ -+exit_status=$EXIT_SUCCESS -+ -+# Make sure IFS has a sensible default -+lt_nl=' -+' -+IFS=" $lt_nl" -+ -+dirname="s,/[^/]*$,," -+basename="s,^.*/,," -+ -+# func_dirname_and_basename file append nondir_replacement -+# perform func_basename and func_dirname in a single function -+# call: -+# dirname: Compute the dirname of FILE. If nonempty, -+# add APPEND to the result, otherwise set result -+# to NONDIR_REPLACEMENT. -+# value returned in "$func_dirname_result" -+# basename: Compute filename of FILE. -+# value retuned in "$func_basename_result" -+# Implementation must be kept synchronized with func_dirname -+# and func_basename. For efficiency, we do not delegate to -+# those functions but instead duplicate the functionality here. -+func_dirname_and_basename () -+{ -+ # Extract subdirectory from the argument. -+ func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+ func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` -+} -+ -+# Generated shell functions inserted here. -+ -+# func_dirname file append nondir_replacement -+# Compute the dirname of FILE. If nonempty, add APPEND to the result, -+# otherwise set result to NONDIR_REPLACEMENT. -+func_dirname () -+{ -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+} -+ -+# func_basename file -+func_basename () -+{ -+ func_basename_result="${1##*/}" -+} -+ -+# func_dirname_and_basename file append nondir_replacement -+# perform func_basename and func_dirname in a single function -+# call: -+# dirname: Compute the dirname of FILE. If nonempty, -+# add APPEND to the result, otherwise set result -+# to NONDIR_REPLACEMENT. -+# value returned in "$func_dirname_result" -+# basename: Compute filename of FILE. -+# value retuned in "$func_basename_result" -+# Implementation must be kept synchronized with func_dirname -+# and func_basename. For efficiency, we do not delegate to -+# those functions but instead duplicate the functionality here. -+func_dirname_and_basename () -+{ -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+ func_basename_result="${1##*/}" -+} -+ -+# func_stripname prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+func_stripname () -+{ -+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -+ # positional parameters, so assign one to ordinary parameter first. -+ func_stripname_result=${3} -+ func_stripname_result=${func_stripname_result#"${1}"} -+ func_stripname_result=${func_stripname_result%"${2}"} -+} -+ -+# func_opt_split -+func_opt_split () -+{ -+ func_opt_split_opt=${1%%=*} -+ func_opt_split_arg=${1#*=} -+} -+ -+# func_lo2o object -+func_lo2o () -+{ -+ case ${1} in -+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -+ *) func_lo2o_result=${1} ;; -+ esac -+} -+ -+# func_xform libobj-or-source -+func_xform () -+{ -+ func_xform_result=${1%.*}.lo -+} -+ -+# func_arith arithmetic-term... -+func_arith () -+{ -+ func_arith_result=$(( $* )) -+} -+ -+# func_len string -+# STRING may not start with a hyphen. -+func_len () -+{ -+ func_len_result=${#1} -+} -+ -+ -+# func_append var value -+# Append VALUE to the end of shell variable VAR. -+func_append () -+{ -+ eval "$1+=\$2" -+} -+# Generated shell functions inserted here. -+ -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -+# is ksh but when the shell is invoked as "sh" and the current value of -+# the _XPG environment variable is not equal to 1 (one), the special -+# positional parameter $0, within a function call, is the name of the -+# function. -+progpath="$0" -+ -+# The name of this program: -+# In the unlikely event $progname began with a '-', it would play havoc with -+# func_echo (imagine progname=-n), so we prepend ./ in that case: -+func_dirname_and_basename "$progpath" -+progname=$func_basename_result -+case $progname in -+ -*) progname=./$progname ;; -+esac -+ -+# Make sure we have an absolute path for reexecution: -+case $progpath in -+ [\\/]*|[A-Za-z]:\\*) ;; -+ *[\\/]*) -+ progdir=$func_dirname_result -+ progdir=`cd "$progdir" && pwd` -+ progpath="$progdir/$progname" -+ ;; -+ *) -+ save_IFS="$IFS" -+ IFS=: -+ for progdir in $PATH; do -+ IFS="$save_IFS" -+ test -x "$progdir/$progname" && break -+ done -+ IFS="$save_IFS" -+ test -n "$progdir" || progdir=`pwd` -+ progpath="$progdir/$progname" -+ ;; -+esac -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed="${SED}"' -e 1s/^X//' -+sed_quote_subst='s/\([`"$\\]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\(["`\\]\)/\\\1/g' -+ -+# Re-`\' parameter expansions in output of double_quote_subst that were -+# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -+# in input to double_quote_subst, that '$' was protected from expansion. -+# Since each input `\' is now two `\'s, look for any number of runs of -+# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -+bs='\\' -+bs2='\\\\' -+bs4='\\\\\\\\' -+dollar='\$' -+sed_double_backslash="\ -+ s/$bs4/&\\ -+/g -+ s/^$bs2$dollar/$bs&/ -+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g -+ s/\n//g" -+ -+# Standard options: -+opt_dry_run=false -+opt_help=false -+opt_quiet=false -+opt_verbose=false -+opt_warning=: -+ -+# func_echo arg... -+# Echo program name prefixed message, along with the current mode -+# name if it has been set yet. -+func_echo () -+{ -+ $ECHO "$progname${mode+: }$mode: $*" -+} -+ -+# func_verbose arg... -+# Echo program name prefixed message in verbose mode only. -+func_verbose () -+{ -+ $opt_verbose && func_echo ${1+"$@"} -+ -+ # A bug in bash halts the script if the last line of a function -+ # fails when set -e is in force, so we need another command to -+ # work around that: -+ : -+} -+ -+# func_error arg... -+# Echo program name prefixed message to standard error. -+func_error () -+{ -+ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 -+} -+ -+# func_warning arg... -+# Echo program name prefixed warning message to standard error. -+func_warning () -+{ -+ $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 -+ -+ # bash bug again: -+ : -+} -+ -+# func_fatal_error arg... -+# Echo program name prefixed message to standard error, and exit. -+func_fatal_error () -+{ -+ func_error ${1+"$@"} -+ exit $EXIT_FAILURE -+} -+ -+# func_fatal_help arg... -+# Echo program name prefixed message to standard error, followed by -+# a help hint, and exit. -+func_fatal_help () -+{ -+ func_error ${1+"$@"} -+ func_fatal_error "$help" -+} -+help="Try \`$progname --help' for more information." ## default -+ -+ -+# func_grep expression filename -+# Check whether EXPRESSION matches any line of FILENAME, without output. -+func_grep () -+{ -+ $GREP "$1" "$2" >/dev/null 2>&1 -+} -+ -+ -+# func_mkdir_p directory-path -+# Make sure the entire path to DIRECTORY-PATH is available. -+func_mkdir_p () -+{ -+ my_directory_path="$1" -+ my_dir_list= -+ -+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then -+ -+ # Protect directory names starting with `-' -+ case $my_directory_path in -+ -*) my_directory_path="./$my_directory_path" ;; -+ esac -+ -+ # While some portion of DIR does not yet exist... -+ while test ! -d "$my_directory_path"; do -+ # ...make a list in topmost first order. Use a colon delimited -+ # list incase some portion of path contains whitespace. -+ my_dir_list="$my_directory_path:$my_dir_list" -+ -+ # If the last portion added has no slash in it, the list is done -+ case $my_directory_path in */*) ;; *) break ;; esac -+ -+ # ...otherwise throw away the child directory and loop -+ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` -+ done -+ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` -+ -+ save_mkdir_p_IFS="$IFS"; IFS=':' -+ for my_dir in $my_dir_list; do -+ IFS="$save_mkdir_p_IFS" -+ # mkdir can fail with a `File exist' error if two processes -+ # try to create one of the directories concurrently. Don't -+ # stop in that case! -+ $MKDIR "$my_dir" 2>/dev/null || : -+ done -+ IFS="$save_mkdir_p_IFS" -+ -+ # Bail out if we (or some other process) failed to create a directory. -+ test -d "$my_directory_path" || \ -+ func_fatal_error "Failed to create \`$1'" -+ fi -+} -+ -+ -+# func_mktempdir [string] -+# Make a temporary directory that won't clash with other running -+# libtool processes, and avoids race conditions if possible. If -+# given, STRING is the basename for that directory. -+func_mktempdir () -+{ -+ my_template="${TMPDIR-/tmp}/${1-$progname}" -+ -+ if test "$opt_dry_run" = ":"; then -+ # Return a directory name, but don't create it in dry-run mode -+ my_tmpdir="${my_template}-$$" -+ else -+ -+ # If mktemp works, use that first and foremost -+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` -+ -+ if test ! -d "$my_tmpdir"; then -+ # Failing that, at least try and use $RANDOM to avoid a race -+ my_tmpdir="${my_template}-${RANDOM-0}$$" -+ -+ save_mktempdir_umask=`umask` -+ umask 0077 -+ $MKDIR "$my_tmpdir" -+ umask $save_mktempdir_umask -+ fi -+ -+ # If we're not in dry-run mode, bomb out on failure -+ test -d "$my_tmpdir" || \ -+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" -+ fi -+ -+ $ECHO "X$my_tmpdir" | $Xsed -+} -+ -+ -+# func_quote_for_eval arg -+# Aesthetically quote ARG to be evaled later. -+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -+# is double-quoted, suitable for a subsequent eval, whereas -+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -+# which are still active within double quotes backslashified. -+func_quote_for_eval () -+{ -+ case $1 in -+ *[\\\`\"\$]*) -+ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; -+ *) -+ func_quote_for_eval_unquoted_result="$1" ;; -+ esac -+ -+ case $func_quote_for_eval_unquoted_result in -+ # Double-quote args containing shell metacharacters to delay -+ # word splitting, command substitution and and variable -+ # expansion for a subsequent eval. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" -+ ;; -+ *) -+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" -+ esac -+} -+ -+ -+# func_quote_for_expand arg -+# Aesthetically quote ARG to be evaled later; same as above, -+# but do not quote variable references. -+func_quote_for_expand () -+{ -+ case $1 in -+ *[\\\`\"]*) -+ my_arg=`$ECHO "X$1" | $Xsed \ -+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; -+ *) -+ my_arg="$1" ;; -+ esac -+ -+ case $my_arg in -+ # Double-quote args containing shell metacharacters to delay -+ # word splitting and command substitution for a subsequent eval. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ my_arg="\"$my_arg\"" -+ ;; -+ esac -+ -+ func_quote_for_expand_result="$my_arg" -+} -+ -+ -+# func_show_eval cmd [fail_exp] -+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -+# is given, then evaluate it. -+func_show_eval () -+{ -+ my_cmd="$1" -+ my_fail_exp="${2-:}" -+ -+ ${opt_silent-false} || { -+ func_quote_for_expand "$my_cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ -+ if ${opt_dry_run-false}; then :; else -+ eval "$my_cmd" -+ my_status=$? -+ if test "$my_status" -eq 0; then :; else -+ eval "(exit $my_status); $my_fail_exp" -+ fi -+ fi -+} -+ -+ -+# func_show_eval_locale cmd [fail_exp] -+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -+# is given, then evaluate it. Use the saved locale for evaluation. -+func_show_eval_locale () -+{ -+ my_cmd="$1" -+ my_fail_exp="${2-:}" -+ -+ ${opt_silent-false} || { -+ func_quote_for_expand "$my_cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ -+ if ${opt_dry_run-false}; then :; else -+ eval "$lt_user_locale -+ $my_cmd" -+ my_status=$? -+ eval "$lt_safe_locale" -+ if test "$my_status" -eq 0; then :; else -+ eval "(exit $my_status); $my_fail_exp" -+ fi -+ fi -+} -+ -+ -+ -+ -+ -+# func_version -+# Echo version message to standard output and exit. -+func_version () -+{ -+ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { -+ s/^# // -+ s/^# *$// -+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ -+ p -+ }' < "$progpath" -+ exit $? -+} -+ -+# func_usage -+# Echo short help message to standard output and exit. -+func_usage () -+{ -+ $SED -n '/^# Usage:/,/# -h/ { -+ s/^# // -+ s/^# *$// -+ s/\$progname/'$progname'/ -+ p -+ }' < "$progpath" -+ $ECHO -+ $ECHO "run \`$progname --help | more' for full usage" -+ exit $? -+} -+ -+# func_help -+# Echo long help message to standard output and exit. -+func_help () -+{ -+ $SED -n '/^# Usage:/,/# Report bugs to/ { -+ s/^# // -+ s/^# *$// -+ s*\$progname*'$progname'* -+ s*\$host*'"$host"'* -+ s*\$SHELL*'"$SHELL"'* -+ s*\$LTCC*'"$LTCC"'* -+ s*\$LTCFLAGS*'"$LTCFLAGS"'* -+ s*\$LD*'"$LD"'* -+ s/\$with_gnu_ld/'"$with_gnu_ld"'/ -+ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ -+ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ -+ p -+ }' < "$progpath" -+ exit $? -+} -+ -+# func_missing_arg argname -+# Echo program name prefixed message to standard error and set global -+# exit_cmd. -+func_missing_arg () -+{ -+ func_error "missing argument for $1" -+ exit_cmd=exit -+} -+ -+exit_cmd=: -+ -+ -+ -+ -+ -+# Check that we have a working $ECHO. -+if test "X$1" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+elif test "X$1" = X--fallback-echo; then -+ # Avoid inline document here, it may be left over -+ : -+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then -+ # Yippee, $ECHO works! -+ : -+else -+ # Restart under the correct shell, and then maybe $ECHO will work. -+ exec $SHELL "$progpath" --no-reexec ${1+"$@"} -+fi -+ -+if test "X$1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat </dev/null 2>&1; then -+ taglist="$taglist $tagname" -+ -+ # Evaluate the configuration. Be careful to quote the path -+ # and the sed script, to avoid splitting on whitespace, but -+ # also don't use non-portable quotes within backquotes within -+ # quotes we have to do it in 2 steps: -+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` -+ eval "$extractedcf" -+ else -+ func_error "ignoring unknown tag $tagname" -+ fi -+ ;; -+ esac -+} -+ -+# Parse options once, thoroughly. This comes as soon as possible in -+# the script to make things like `libtool --version' happen quickly. -+{ -+ -+ # Shorthand for --mode=foo, only valid as the first argument -+ case $1 in -+ clean|clea|cle|cl) -+ shift; set dummy --mode clean ${1+"$@"}; shift -+ ;; -+ compile|compil|compi|comp|com|co|c) -+ shift; set dummy --mode compile ${1+"$@"}; shift -+ ;; -+ execute|execut|execu|exec|exe|ex|e) -+ shift; set dummy --mode execute ${1+"$@"}; shift -+ ;; -+ finish|finis|fini|fin|fi|f) -+ shift; set dummy --mode finish ${1+"$@"}; shift -+ ;; -+ install|instal|insta|inst|ins|in|i) -+ shift; set dummy --mode install ${1+"$@"}; shift -+ ;; -+ link|lin|li|l) -+ shift; set dummy --mode link ${1+"$@"}; shift -+ ;; -+ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) -+ shift; set dummy --mode uninstall ${1+"$@"}; shift -+ ;; -+ esac -+ -+ # Parse non-mode specific arguments: -+ while test "$#" -gt 0; do -+ opt="$1" -+ shift -+ -+ case $opt in -+ --config) func_config ;; -+ -+ --debug) preserve_args="$preserve_args $opt" -+ func_echo "enabling shell trace mode" -+ opt_debug='set -x' -+ $opt_debug -+ ;; -+ -+ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break -+ execute_dlfiles="$execute_dlfiles $1" -+ shift -+ ;; -+ -+ --dry-run | -n) opt_dry_run=: ;; -+ --features) func_features ;; -+ --finish) mode="finish" ;; -+ -+ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break -+ case $1 in -+ # Valid mode arguments: -+ clean) ;; -+ compile) ;; -+ execute) ;; -+ finish) ;; -+ install) ;; -+ link) ;; -+ relink) ;; -+ uninstall) ;; -+ -+ # Catch anything else as an error -+ *) func_error "invalid argument for $opt" -+ exit_cmd=exit -+ break -+ ;; -+ esac -+ -+ mode="$1" -+ shift -+ ;; -+ -+ --preserve-dup-deps) -+ opt_duplicate_deps=: ;; -+ -+ --quiet|--silent) preserve_args="$preserve_args $opt" -+ opt_silent=: -+ ;; -+ -+ --verbose| -v) preserve_args="$preserve_args $opt" -+ opt_silent=false -+ ;; -+ -+ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break -+ preserve_args="$preserve_args $opt $1" -+ func_enable_tag "$1" # tagname is set here -+ shift -+ ;; -+ -+ # Separate optargs to long options: -+ -dlopen=*|--mode=*|--tag=*) -+ func_opt_split "$opt" -+ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} -+ shift -+ ;; -+ -+ -\?|-h) func_usage ;; -+ --help) opt_help=: ;; -+ --version) func_version ;; -+ -+ -*) func_fatal_help "unrecognized option \`$opt'" ;; -+ -+ *) nonopt="$opt" -+ break -+ ;; -+ esac -+ done -+ -+ -+ case $host in -+ *cygwin* | *mingw* | *pw32* | *cegcc*) -+ # don't eliminate duplications in $postdeps and $predeps -+ opt_duplicate_compiler_generated_deps=: -+ ;; -+ *) -+ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps -+ ;; -+ esac -+ -+ # Having warned about all mis-specified options, bail out if -+ # anything was wrong. -+ $exit_cmd $EXIT_FAILURE -+} -+ -+# func_check_version_match -+# Ensure that we are using m4 macros, and libtool script from the same -+# release of libtool. -+func_check_version_match () -+{ -+ if test "$package_revision" != "$macro_revision"; then -+ if test "$VERSION" != "$macro_version"; then -+ if test -z "$macro_version"; then -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -+$progname: definition of this LT_INIT comes from an older release. -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -+$progname: and run autoconf again. -+_LT_EOF -+ else -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -+$progname: and run autoconf again. -+_LT_EOF -+ fi -+ else -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -+$progname: but the definition of this LT_INIT comes from revision $macro_revision. -+$progname: You should recreate aclocal.m4 with macros from revision $package_revision -+$progname: of $PACKAGE $VERSION and run autoconf again. -+_LT_EOF -+ fi -+ -+ exit $EXIT_MISMATCH -+ fi -+} -+ -+ -+## ----------- ## -+## Main. ## -+## ----------- ## -+ -+$opt_help || { -+ # Sanity checks first: -+ func_check_version_match -+ -+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then -+ func_fatal_configuration "not configured to build any kind of library" -+ fi -+ -+ test -z "$mode" && func_fatal_error "error: you must specify a MODE." -+ -+ -+ # Darwin sucks -+ eval std_shrext=\"$shrext_cmds\" -+ -+ -+ # Only execute mode is allowed to have -dlopen flags. -+ if test -n "$execute_dlfiles" && test "$mode" != execute; then -+ func_error "unrecognized option \`-dlopen'" -+ $ECHO "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Change the help message to a mode-specific one. -+ generic_help="$help" -+ help="Try \`$progname --help --mode=$mode' for more information." -+} -+ -+ -+# func_lalib_p file -+# True iff FILE is a libtool `.la' library or `.lo' object file. -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_lalib_p () -+{ -+ test -f "$1" && -+ $SED -e 4q "$1" 2>/dev/null \ -+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -+} -+ -+# func_lalib_unsafe_p file -+# True iff FILE is a libtool `.la' library or `.lo' object file. -+# This function implements the same check as func_lalib_p without -+# resorting to external programs. To this end, it redirects stdin and -+# closes it afterwards, without saving the original file descriptor. -+# As a safety measure, use it only where a negative result would be -+# fatal anyway. Works if `file' does not exist. -+func_lalib_unsafe_p () -+{ -+ lalib_p=no -+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then -+ for lalib_p_l in 1 2 3 4 -+ do -+ read lalib_p_line -+ case "$lalib_p_line" in -+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; -+ esac -+ done -+ exec 0<&5 5<&- -+ fi -+ test "$lalib_p" = yes -+} -+ -+# func_ltwrapper_script_p file -+# True iff FILE is a libtool wrapper script -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_script_p () -+{ -+ func_lalib_p "$1" -+} -+ -+# func_ltwrapper_executable_p file -+# True iff FILE is a libtool wrapper executable -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_executable_p () -+{ -+ func_ltwrapper_exec_suffix= -+ case $1 in -+ *.exe) ;; -+ *) func_ltwrapper_exec_suffix=.exe ;; -+ esac -+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -+} -+ -+# func_ltwrapper_scriptname file -+# Assumes file is an ltwrapper_executable -+# uses $file to determine the appropriate filename for a -+# temporary ltwrapper_script. -+func_ltwrapper_scriptname () -+{ -+ func_ltwrapper_scriptname_result="" -+ if func_ltwrapper_executable_p "$1"; then -+ func_dirname_and_basename "$1" "" "." -+ func_stripname '' '.exe' "$func_basename_result" -+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -+ fi -+} -+ -+# func_ltwrapper_p file -+# True iff FILE is a libtool wrapper script or wrapper executable -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_p () -+{ -+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -+} -+ -+ -+# func_execute_cmds commands fail_cmd -+# Execute tilde-delimited COMMANDS. -+# If FAIL_CMD is given, eval that upon failure. -+# FAIL_CMD may read-access the current command in variable CMD! -+func_execute_cmds () -+{ -+ $opt_debug -+ save_ifs=$IFS; IFS='~' -+ for cmd in $1; do -+ IFS=$save_ifs -+ eval cmd=\"$cmd\" -+ func_show_eval "$cmd" "${2-:}" -+ done -+ IFS=$save_ifs -+} -+ -+ -+# func_source file -+# Source FILE, adding directory component if necessary. -+# Note that it is not necessary on cygwin/mingw to append a dot to -+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -+# behavior happens only for exec(3), not for open(2)! Also, sourcing -+# `FILE.' does not work on cygwin managed mounts. -+func_source () -+{ -+ $opt_debug -+ case $1 in -+ */* | *\\*) . "$1" ;; -+ *) . "./$1" ;; -+ esac -+} -+ -+ -+# func_infer_tag arg -+# Infer tagged configuration to use if any are available and -+# if one wasn't chosen via the "--tag" command line option. -+# Only attempt this if the compiler in the base compile -+# command doesn't match the default compiler. -+# arg is usually of the form 'gcc ...' -+func_infer_tag () -+{ -+ $opt_debug -+ if test -n "$available_tags" && test -z "$tagname"; then -+ CC_quoted= -+ for arg in $CC; do -+ func_quote_for_eval "$arg" -+ CC_quoted="$CC_quoted $func_quote_for_eval_result" -+ done -+ case $@ in -+ # Blanks in the command may have been stripped by the calling shell, -+ # but not from the CC environment variable when configure was run. -+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; -+ # Blanks at the start of $base_compile will cause this to fail -+ # if we don't check for them as well. -+ *) -+ for z in $available_tags; do -+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then -+ # Evaluate the configuration. -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" -+ CC_quoted= -+ for arg in $CC; do -+ # Double-quote args containing other shell metacharacters. -+ func_quote_for_eval "$arg" -+ CC_quoted="$CC_quoted $func_quote_for_eval_result" -+ done -+ case "$@ " in -+ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) -+ # The compiler in the base compile command matches -+ # the one in the tagged configuration. -+ # Assume this is the tagged configuration we want. -+ tagname=$z -+ break -+ ;; -+ esac -+ fi -+ done -+ # If $tagname still isn't set, then no tagged configuration -+ # was found and let the user know that the "--tag" command -+ # line option must be used. -+ if test -z "$tagname"; then -+ func_echo "unable to infer tagged configuration" -+ func_fatal_error "specify a tag with \`--tag'" -+# else -+# func_verbose "using $tagname tagged configuration" -+ fi -+ ;; -+ esac -+ fi -+} -+ -+ -+ -+# func_write_libtool_object output_name pic_name nonpic_name -+# Create a libtool object file (analogous to a ".la" file), -+# but don't create it if we're doing a dry run. -+func_write_libtool_object () -+{ -+ write_libobj=${1} -+ if test "$build_libtool_libs" = yes; then -+ write_lobj=\'${2}\' -+ else -+ write_lobj=none -+ fi -+ -+ if test "$build_old_libs" = yes; then -+ write_oldobj=\'${3}\' -+ else -+ write_oldobj=none -+ fi -+ -+ $opt_dry_run || { -+ cat >${write_libobj}T <?"'"'"' &()|`$[]' \ -+ && func_warning "libobj name \`$libobj' may not contain shell special characters." -+ func_dirname_and_basename "$obj" "/" "" -+ objname="$func_basename_result" -+ xdir="$func_dirname_result" -+ lobj=${xdir}$objdir/$objname -+ -+ test -z "$base_compile" && \ -+ func_fatal_help "you must specify a compilation command" -+ -+ # Delete any leftover library objects. -+ if test "$build_old_libs" = yes; then -+ removelist="$obj $lobj $libobj ${libobj}T" -+ else -+ removelist="$lobj $libobj ${libobj}T" -+ fi -+ -+ # On Cygwin there's no "real" PIC flag so we must build both object types -+ case $host_os in -+ cygwin* | mingw* | pw32* | os2* | cegcc*) -+ pic_mode=default -+ ;; -+ esac -+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then -+ # non-PIC code in shared libraries is not supported -+ pic_mode=default -+ fi -+ -+ # Calculate the filename of the output object if compiler does -+ # not support -o with -c -+ if test "$compiler_c_o" = no; then -+ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} -+ lockfile="$output_obj.lock" -+ else -+ output_obj= -+ need_locks=no -+ lockfile= -+ fi -+ -+ # Lock this critical section if it is needed -+ # We use this script file to make the link, it avoids creating a new file -+ if test "$need_locks" = yes; then -+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do -+ func_echo "Waiting for $lockfile to be removed" -+ sleep 2 -+ done -+ elif test "$need_locks" = warn; then -+ if test -f "$lockfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile exists and contains: -+`cat $lockfile 2>/dev/null` -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ removelist="$removelist $output_obj" -+ $ECHO "$srcfile" > "$lockfile" -+ fi -+ -+ $opt_dry_run || $RM $removelist -+ removelist="$removelist $lockfile" -+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 -+ -+ if test -n "$fix_srcfile_path"; then -+ eval srcfile=\"$fix_srcfile_path\" -+ fi -+ func_quote_for_eval "$srcfile" -+ qsrcfile=$func_quote_for_eval_result -+ -+ # Only build a PIC object if we are building libtool libraries. -+ if test "$build_libtool_libs" = yes; then -+ # Without this assignment, base_compile gets emptied. -+ fbsd_hideous_sh_bug=$base_compile -+ -+ if test "$pic_mode" != no; then -+ command="$base_compile $qsrcfile $pic_flag" -+ else -+ # Don't build PIC code -+ command="$base_compile $qsrcfile" -+ fi -+ -+ func_mkdir_p "$xdir$objdir" -+ -+ if test -z "$output_obj"; then -+ # Place PIC objects in $objdir -+ command="$command -o $lobj" -+ fi -+ -+ func_show_eval_locale "$command" \ -+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' -+ -+ if test "$need_locks" = warn && -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed, then go on to compile the next one -+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then -+ func_show_eval '$MV "$output_obj" "$lobj"' \ -+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' -+ fi -+ -+ # Allow error messages only from the first compilation. -+ if test "$suppress_opt" = yes; then -+ suppress_output=' >/dev/null 2>&1' -+ fi -+ fi -+ -+ # Only build a position-dependent object if we build old libraries. -+ if test "$build_old_libs" = yes; then -+ if test "$pic_mode" != yes; then -+ # Don't build PIC code -+ command="$base_compile $qsrcfile$pie_flag" -+ else -+ command="$base_compile $qsrcfile $pic_flag" -+ fi -+ if test "$compiler_c_o" = yes; then -+ command="$command -o $obj" -+ fi -+ -+ # Suppress compiler output if we already did a PIC compilation. -+ command="$command$suppress_output" -+ func_show_eval_locale "$command" \ -+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' -+ -+ if test "$need_locks" = warn && -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed -+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then -+ func_show_eval '$MV "$output_obj" "$obj"' \ -+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' -+ fi -+ fi -+ -+ $opt_dry_run || { -+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" -+ -+ # Unlock the critical section if it was locked -+ if test "$need_locks" != no; then -+ removelist=$lockfile -+ $RM "$lockfile" -+ fi -+ } -+ -+ exit $EXIT_SUCCESS -+} -+ -+$opt_help || { -+test "$mode" = compile && func_mode_compile ${1+"$@"} -+} -+ -+func_mode_help () -+{ -+ # We need to display help for each of the modes. -+ case $mode in -+ "") -+ # Generic help is extracted from the usage comments -+ # at the start of this file. -+ func_help -+ ;; -+ -+ clean) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... -+ -+Remove files from the build directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, object or program, all the files associated -+with it are deleted. Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+ compile) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE -+ -+Compile a source file into a libtool library object. -+ -+This mode accepts the following additional options: -+ -+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE -+ -no-suppress do not suppress compiler output for multiple passes -+ -prefer-pic try to building PIC objects only -+ -prefer-non-pic try to building non-PIC objects only -+ -shared do not build a \`.o' file suitable for static linking -+ -static only build a \`.o' file suitable for static linking -+ -+COMPILE-COMMAND is a command to be used in creating a \`standard' object file -+from the given SOURCEFILE. -+ -+The output file name is determined by removing the directory component from -+SOURCEFILE, then substituting the C source code suffix \`.c' with the -+library object suffix, \`.lo'." -+ ;; -+ -+ execute) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... -+ -+Automatically set library path, then run a program. -+ -+This mode accepts the following additional options: -+ -+ -dlopen FILE add the directory containing FILE to the library path -+ -+This mode sets the library path environment variable according to \`-dlopen' -+flags. -+ -+If any of the ARGS are libtool executable wrappers, then they are translated -+into their corresponding uninstalled binary, and any of their required library -+directories are added to the library path. -+ -+Then, COMMAND is executed, with ARGS as arguments." -+ ;; -+ -+ finish) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... -+ -+Complete the installation of libtool libraries. -+ -+Each LIBDIR is a directory that contains libtool libraries. -+ -+The commands that this mode executes may require superuser privileges. Use -+the \`--dry-run' option if you just want to see what would be executed." -+ ;; -+ -+ install) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... -+ -+Install executables or libraries. -+ -+INSTALL-COMMAND is the installation command. The first component should be -+either the \`install' or \`cp' program. -+ -+The following components of INSTALL-COMMAND are treated specially: -+ -+ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation -+ -+The rest of the components are interpreted as arguments to that command (only -+BSD-compatible install options are recognized)." -+ ;; -+ -+ link) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... -+ -+Link object files or libraries together to form another library, or to -+create an executable program. -+ -+LINK-COMMAND is a command using the C compiler that you would use to create -+a program from several object files. -+ -+The following components of LINK-COMMAND are treated specially: -+ -+ -all-static do not do any dynamic linking at all -+ -avoid-version do not add a version suffix if possible -+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -+ -export-symbols SYMFILE -+ try to export only the symbols listed in SYMFILE -+ -export-symbols-regex REGEX -+ try to export only the symbols matching REGEX -+ -LLIBDIR search LIBDIR for required installed libraries -+ -lNAME OUTPUT-FILE requires the installed library libNAME -+ -module build a library that can dlopened -+ -no-fast-install disable the fast-install mode -+ -no-install link a not-installable executable -+ -no-undefined declare that a library does not refer to external symbols -+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -+ -objectlist FILE Use a list of object files found in FILE to specify objects -+ -precious-files-regex REGEX -+ don't remove output files matching REGEX -+ -release RELEASE specify package release information -+ -rpath LIBDIR the created library will eventually be installed in LIBDIR -+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -+ -shared only do dynamic linking of libtool libraries -+ -shrext SUFFIX override the standard shared library file extension -+ -static do not do any dynamic linking of uninstalled libtool libraries -+ -static-libtool-libs -+ do not do any dynamic linking of libtool libraries -+ -version-info CURRENT[:REVISION[:AGE]] -+ specify library version info [each variable defaults to 0] -+ -weak LIBNAME declare that the target provides the LIBNAME interface -+ -+All other options (arguments beginning with \`-') are ignored. -+ -+Every other argument is treated as a filename. Files ending in \`.la' are -+treated as uninstalled libtool libraries, other files are standard or library -+object files. -+ -+If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -+only library objects (\`.lo' files) may be specified, and \`-rpath' is -+required, except when creating a convenience library. -+ -+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -+using \`ar' and \`ranlib', or on Windows using \`lib'. -+ -+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -+is created, otherwise an executable program is created." -+ ;; -+ -+ uninstall) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... -+ -+Remove libraries from an installation directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, all the files associated with it are deleted. -+Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+ *) -+ func_fatal_help "invalid operation mode \`$mode'" -+ ;; -+ esac -+ -+ $ECHO -+ $ECHO "Try \`$progname --help' for more information about other modes." -+ -+ exit $? -+} -+ -+ # Now that we've collected a possible --mode arg, show help if necessary -+ $opt_help && func_mode_help -+ -+ -+# func_mode_execute arg... -+func_mode_execute () -+{ -+ $opt_debug -+ # The first argument is the command name. -+ cmd="$nonopt" -+ test -z "$cmd" && \ -+ func_fatal_help "you must specify a COMMAND" -+ -+ # Handle -dlopen flags immediately. -+ for file in $execute_dlfiles; do -+ test -f "$file" \ -+ || func_fatal_help "\`$file' is not a file" -+ -+ dir= -+ case $file in -+ *.la) -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$file" \ -+ || func_fatal_help "\`$lib' is not a valid libtool archive" -+ -+ # Read the libtool library. -+ dlname= -+ library_names= -+ func_source "$file" -+ -+ # Skip this library if it cannot be dlopened. -+ if test -z "$dlname"; then -+ # Warn if it was a shared library. -+ test -n "$library_names" && \ -+ func_warning "\`$file' was not linked with \`-export-dynamic'" -+ continue -+ fi -+ -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ -+ if test -f "$dir/$objdir/$dlname"; then -+ dir="$dir/$objdir" -+ else -+ if test ! -f "$dir/$dlname"; then -+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" -+ fi -+ fi -+ ;; -+ -+ *.lo) -+ # Just add the directory containing the .lo file. -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ ;; -+ -+ *) -+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" -+ continue -+ ;; -+ esac -+ -+ # Get the absolute pathname. -+ absdir=`cd "$dir" && pwd` -+ test -n "$absdir" && dir="$absdir" -+ -+ # Now add the directory to shlibpath_var. -+ if eval "test -z \"\$$shlibpath_var\""; then -+ eval "$shlibpath_var=\"\$dir\"" -+ else -+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" -+ fi -+ done -+ -+ # This variable tells wrapper scripts just to set shlibpath_var -+ # rather than running their programs. -+ libtool_execute_magic="$magic" -+ -+ # Check if any of the arguments is a wrapper script. -+ args= -+ for file -+ do -+ case $file in -+ -*) ;; -+ *) -+ # Do a test to see if this is really a libtool program. -+ if func_ltwrapper_script_p "$file"; then -+ func_source "$file" -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ elif func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ func_source "$func_ltwrapper_scriptname_result" -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ fi -+ ;; -+ esac -+ # Quote arguments (to preserve shell metacharacters). -+ func_quote_for_eval "$file" -+ args="$args $func_quote_for_eval_result" -+ done -+ -+ if test "X$opt_dry_run" = Xfalse; then -+ if test -n "$shlibpath_var"; then -+ # Export the shlibpath_var. -+ eval "export $shlibpath_var" -+ fi -+ -+ # Restore saved environment variables -+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+ do -+ eval "if test \"\${save_$lt_var+set}\" = set; then -+ $lt_var=\$save_$lt_var; export $lt_var -+ else -+ $lt_unset $lt_var -+ fi" -+ done -+ -+ # Now prepare to actually exec the command. -+ exec_cmd="\$cmd$args" -+ else -+ # Display what would be done. -+ if test -n "$shlibpath_var"; then -+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" -+ $ECHO "export $shlibpath_var" -+ fi -+ $ECHO "$cmd$args" -+ exit $EXIT_SUCCESS -+ fi -+} -+ -+test "$mode" = execute && func_mode_execute ${1+"$@"} -+ -+ -+# func_mode_finish arg... -+func_mode_finish () -+{ -+ $opt_debug -+ libdirs="$nonopt" -+ admincmds= -+ -+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -+ for dir -+ do -+ libdirs="$libdirs $dir" -+ done -+ -+ for libdir in $libdirs; do -+ if test -n "$finish_cmds"; then -+ # Do each command in the finish commands. -+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -+'"$cmd"'"' -+ fi -+ if test -n "$finish_eval"; then -+ # Do the single finish_eval. -+ eval cmds=\"$finish_eval\" -+ $opt_dry_run || eval "$cmds" || admincmds="$admincmds -+ $cmds" -+ fi -+ done -+ fi -+ -+ # Exit here if they wanted silent mode. -+ $opt_silent && exit $EXIT_SUCCESS -+ -+ $ECHO "X----------------------------------------------------------------------" | $Xsed -+ $ECHO "Libraries have been installed in:" -+ for libdir in $libdirs; do -+ $ECHO " $libdir" -+ done -+ $ECHO -+ $ECHO "If you ever happen to want to link against installed libraries" -+ $ECHO "in a given directory, LIBDIR, you must either use libtool, and" -+ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" -+ $ECHO "flag during linking and do at least one of the following:" -+ if test -n "$shlibpath_var"; then -+ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" -+ $ECHO " during execution" -+ fi -+ if test -n "$runpath_var"; then -+ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" -+ $ECHO " during linking" -+ fi -+ if test -n "$hardcode_libdir_flag_spec"; then -+ libdir=LIBDIR -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ -+ $ECHO " - use the \`$flag' linker flag" -+ fi -+ if test -n "$admincmds"; then -+ $ECHO " - have your system administrator run these commands:$admincmds" -+ fi -+ if test -f /etc/ld.so.conf; then -+ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -+ fi -+ $ECHO -+ -+ $ECHO "See any operating system documentation about shared libraries for" -+ case $host in -+ solaris2.[6789]|solaris2.1[0-9]) -+ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" -+ $ECHO "pages." -+ ;; -+ *) -+ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." -+ ;; -+ esac -+ $ECHO "X----------------------------------------------------------------------" | $Xsed -+ exit $EXIT_SUCCESS -+} -+ -+test "$mode" = finish && func_mode_finish ${1+"$@"} -+ -+ -+# func_mode_install arg... -+func_mode_install () -+{ -+ $opt_debug -+ # There may be an optional sh(1) argument at the beginning of -+ # install_prog (especially on Windows NT). -+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || -+ # Allow the use of GNU shtool's install command. -+ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then -+ # Aesthetically quote it. -+ func_quote_for_eval "$nonopt" -+ install_prog="$func_quote_for_eval_result " -+ arg=$1 -+ shift -+ else -+ install_prog= -+ arg=$nonopt -+ fi -+ -+ # The real first argument should be the name of the installation program. -+ # Aesthetically quote it. -+ func_quote_for_eval "$arg" -+ install_prog="$install_prog$func_quote_for_eval_result" -+ -+ # We need to accept at least all the BSD install flags. -+ dest= -+ files= -+ opts= -+ prev= -+ install_type= -+ isdir=no -+ stripme= -+ for arg -+ do -+ if test -n "$dest"; then -+ files="$files $dest" -+ dest=$arg -+ continue -+ fi -+ -+ case $arg in -+ -d) isdir=yes ;; -+ -f) -+ case " $install_prog " in -+ *[\\\ /]cp\ *) ;; -+ *) prev=$arg ;; -+ esac -+ ;; -+ -g | -m | -o) -+ prev=$arg -+ ;; -+ -s) -+ stripme=" -s" -+ continue -+ ;; -+ -*) -+ ;; -+ *) -+ # If the previous option needed an argument, then skip it. -+ if test -n "$prev"; then -+ prev= -+ else -+ dest=$arg -+ continue -+ fi -+ ;; -+ esac -+ -+ # Aesthetically quote the argument. -+ func_quote_for_eval "$arg" -+ install_prog="$install_prog $func_quote_for_eval_result" -+ done -+ -+ test -z "$install_prog" && \ -+ func_fatal_help "you must specify an install program" -+ -+ test -n "$prev" && \ -+ func_fatal_help "the \`$prev' option requires an argument" -+ -+ if test -z "$files"; then -+ if test -z "$dest"; then -+ func_fatal_help "no file or destination specified" -+ else -+ func_fatal_help "you must specify a destination" -+ fi -+ fi -+ -+ # Strip any trailing slash from the destination. -+ func_stripname '' '/' "$dest" -+ dest=$func_stripname_result -+ -+ # Check to see that the destination is a directory. -+ test -d "$dest" && isdir=yes -+ if test "$isdir" = yes; then -+ destdir="$dest" -+ destname= -+ else -+ func_dirname_and_basename "$dest" "" "." -+ destdir="$func_dirname_result" -+ destname="$func_basename_result" -+ -+ # Not a directory, so check to see that there is only one file specified. -+ set dummy $files; shift -+ test "$#" -gt 1 && \ -+ func_fatal_help "\`$dest' is not a directory" -+ fi -+ case $destdir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ for file in $files; do -+ case $file in -+ *.lo) ;; -+ *) -+ func_fatal_help "\`$destdir' must be an absolute directory name" -+ ;; -+ esac -+ done -+ ;; -+ esac -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ staticlibs= -+ future_libdirs= -+ current_libdirs= -+ for file in $files; do -+ -+ # Do each installation. -+ case $file in -+ *.$libext) -+ # Do the static libraries later. -+ staticlibs="$staticlibs $file" -+ ;; -+ -+ *.la) -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$file" \ -+ || func_fatal_help "\`$file' is not a valid libtool archive" -+ -+ library_names= -+ old_library= -+ relink_command= -+ func_source "$file" -+ -+ # Add the libdir to current_libdirs if it is the destination. -+ if test "X$destdir" = "X$libdir"; then -+ case "$current_libdirs " in -+ *" $libdir "*) ;; -+ *) current_libdirs="$current_libdirs $libdir" ;; -+ esac -+ else -+ # Note the libdir as a future libdir. -+ case "$future_libdirs " in -+ *" $libdir "*) ;; -+ *) future_libdirs="$future_libdirs $libdir" ;; -+ esac -+ fi -+ -+ func_dirname "$file" "/" "" -+ dir="$func_dirname_result" -+ dir="$dir$objdir" -+ -+ if test -n "$relink_command"; then -+ # Determine the prefix the user has applied to our future dir. -+ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` -+ -+ # Don't allow the user to place us outside of our expected -+ # location b/c this prevents finding dependent libraries that -+ # are installed to the same prefix. -+ # At present, this check doesn't affect windows .dll's that -+ # are installed into $libdir/../bin (currently, that works fine) -+ # but it's something to keep an eye on. -+ test "$inst_prefix_dir" = "$destdir" && \ -+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" -+ -+ if test -n "$inst_prefix_dir"; then -+ # Stick the inst_prefix_dir data into the link command. -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -+ else -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` -+ fi -+ -+ func_warning "relinking \`$file'" -+ func_show_eval "$relink_command" \ -+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' -+ fi -+ -+ # See the names of the shared library. -+ set dummy $library_names; shift -+ if test -n "$1"; then -+ realname="$1" -+ shift -+ -+ srcname="$realname" -+ test -n "$relink_command" && srcname="$realname"T -+ -+ # Install the shared library and build the symlinks. -+ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ -+ 'exit $?' -+ tstripme="$stripme" -+ case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ case $realname in -+ *.dll.a) -+ tstripme="" -+ ;; -+ esac -+ ;; -+ esac -+ if test -n "$tstripme" && test -n "$striplib"; then -+ func_show_eval "$striplib $destdir/$realname" 'exit $?' -+ fi -+ -+ if test "$#" -gt 0; then -+ # Delete the old symlinks, and create new ones. -+ # Try `ln -sf' first, because the `ln' binary might depend on -+ # the symlink we replace! Solaris /bin/ln does not understand -f, -+ # so we also need to try rm && ln -s. -+ for linkname -+ do -+ test "$linkname" != "$realname" \ -+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" -+ done -+ fi -+ -+ # Do each command in the postinstall commands. -+ lib="$destdir/$realname" -+ func_execute_cmds "$postinstall_cmds" 'exit $?' -+ fi -+ -+ # Install the pseudo-library for information purposes. -+ func_basename "$file" -+ name="$func_basename_result" -+ instname="$dir/$name"i -+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' -+ -+ # Maybe install the static library, too. -+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" -+ ;; -+ -+ *.lo) -+ # Install (i.e. copy) a libtool object. -+ -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ func_basename "$file" -+ destfile="$func_basename_result" -+ destfile="$destdir/$destfile" -+ fi -+ -+ # Deduce the name of the destination old-style object file. -+ case $destfile in -+ *.lo) -+ func_lo2o "$destfile" -+ staticdest=$func_lo2o_result -+ ;; -+ *.$objext) -+ staticdest="$destfile" -+ destfile= -+ ;; -+ *) -+ func_fatal_help "cannot copy a libtool object to \`$destfile'" -+ ;; -+ esac -+ -+ # Install the libtool object if requested. -+ test -n "$destfile" && \ -+ func_show_eval "$install_prog $file $destfile" 'exit $?' -+ -+ # Install the old object if enabled. -+ if test "$build_old_libs" = yes; then -+ # Deduce the name of the old-style object file. -+ func_lo2o "$file" -+ staticobj=$func_lo2o_result -+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' -+ fi -+ exit $EXIT_SUCCESS -+ ;; -+ -+ *) -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ func_basename "$file" -+ destfile="$func_basename_result" -+ destfile="$destdir/$destfile" -+ fi -+ -+ # If the file is missing, and there is a .exe on the end, strip it -+ # because it is most likely a libtool script we actually want to -+ # install -+ stripped_ext="" -+ case $file in -+ *.exe) -+ if test ! -f "$file"; then -+ func_stripname '' '.exe' "$file" -+ file=$func_stripname_result -+ stripped_ext=".exe" -+ fi -+ ;; -+ esac -+ -+ # Do a test to see if this is really a libtool program. -+ case $host in -+ *cygwin* | *mingw*) -+ if func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ wrapper=$func_ltwrapper_scriptname_result -+ else -+ func_stripname '' '.exe' "$file" -+ wrapper=$func_stripname_result -+ fi -+ ;; -+ *) -+ wrapper=$file -+ ;; -+ esac -+ if func_ltwrapper_script_p "$wrapper"; then -+ notinst_deplibs= -+ relink_command= -+ -+ func_source "$wrapper" -+ -+ # Check the variables that should have been set. -+ test -z "$generated_by_libtool_version" && \ -+ func_fatal_error "invalid libtool wrapper script \`$wrapper'" -+ -+ finalize=yes -+ for lib in $notinst_deplibs; do -+ # Check to see that each library is installed. -+ libdir= -+ if test -f "$lib"; then -+ func_source "$lib" -+ fi -+ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test -+ if test -n "$libdir" && test ! -f "$libfile"; then -+ func_warning "\`$lib' has not been installed in \`$libdir'" -+ finalize=no -+ fi -+ done -+ -+ relink_command= -+ func_source "$wrapper" -+ -+ outputname= -+ if test "$fast_install" = no && test -n "$relink_command"; then -+ $opt_dry_run || { -+ if test "$finalize" = yes; then -+ tmpdir=`func_mktempdir` -+ func_basename "$file$stripped_ext" -+ file="$func_basename_result" -+ outputname="$tmpdir/$file" -+ # Replace the output file specification. -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` -+ -+ $opt_silent || { -+ func_quote_for_expand "$relink_command" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ if eval "$relink_command"; then : -+ else -+ func_error "error: relink \`$file' with the above command before installing it" -+ $opt_dry_run || ${RM}r "$tmpdir" -+ continue -+ fi -+ file="$outputname" -+ else -+ func_warning "cannot relink \`$file'" -+ fi -+ } -+ else -+ # Install the binary that we compiled earlier. -+ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` -+ fi -+ fi -+ -+ # remove .exe since cygwin /usr/bin/install will append another -+ # one anyway -+ case $install_prog,$host in -+ */usr/bin/install*,*cygwin*) -+ case $file:$destfile in -+ *.exe:*.exe) -+ # this is ok -+ ;; -+ *.exe:*) -+ destfile=$destfile.exe -+ ;; -+ *:*.exe) -+ func_stripname '' '.exe' "$destfile" -+ destfile=$func_stripname_result -+ ;; -+ esac -+ ;; -+ esac -+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' -+ $opt_dry_run || if test -n "$outputname"; then -+ ${RM}r "$tmpdir" -+ fi -+ ;; -+ esac -+ done -+ -+ for file in $staticlibs; do -+ func_basename "$file" -+ name="$func_basename_result" -+ -+ # Set up the ranlib parameters. -+ oldlib="$destdir/$name" -+ -+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?' -+ -+ if test -n "$stripme" && test -n "$old_striplib"; then -+ func_show_eval "$old_striplib $oldlib" 'exit $?' -+ fi -+ -+ # Do each command in the postinstall commands. -+ func_execute_cmds "$old_postinstall_cmds" 'exit $?' -+ done -+ -+ test -n "$future_libdirs" && \ -+ func_warning "remember to run \`$progname --finish$future_libdirs'" -+ -+ if test -n "$current_libdirs"; then -+ # Maybe just do a dry run. -+ $opt_dry_run && current_libdirs=" -n$current_libdirs" -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' -+ else -+ exit $EXIT_SUCCESS -+ fi -+} -+ -+test "$mode" = install && func_mode_install ${1+"$@"} -+ -+ -+# func_generate_dlsyms outputname originator pic_p -+# Extract symbols from dlprefiles and create ${outputname}S.o with -+# a dlpreopen symbol table. -+func_generate_dlsyms () -+{ -+ $opt_debug -+ my_outputname="$1" -+ my_originator="$2" -+ my_pic_p="${3-no}" -+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` -+ my_dlsyms= -+ -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ if test -n "$NM" && test -n "$global_symbol_pipe"; then -+ my_dlsyms="${my_outputname}S.c" -+ else -+ func_error "not configured to extract global symbols from dlpreopened files" -+ fi -+ fi -+ -+ if test -n "$my_dlsyms"; then -+ case $my_dlsyms in -+ "") ;; -+ *.c) -+ # Discover the nlist of each of the dlfiles. -+ nlist="$output_objdir/${my_outputname}.nm" -+ -+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T" -+ -+ # Parse the name list into a source file. -+ func_verbose "creating $output_objdir/$my_dlsyms" -+ -+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ -+ -+#ifdef __cplusplus -+extern \"C\" { -+#endif -+ -+/* External symbol declarations for the compiler. */\ -+" -+ -+ if test "$dlself" = yes; then -+ func_verbose "generating symbol list for \`$output'" -+ -+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" -+ -+ # Add our own program objects to the symbol list. -+ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ for progfile in $progfiles; do -+ func_verbose "extracting global C symbols from \`$progfile'" -+ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" -+ done -+ -+ if test -n "$exclude_expsyms"; then -+ $opt_dry_run || { -+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ } -+ fi -+ -+ if test -n "$export_symbols_regex"; then -+ $opt_dry_run || { -+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ } -+ fi -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ export_symbols="$output_objdir/$outputname.exp" -+ $opt_dry_run || { -+ $RM $export_symbols -+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ } -+ else -+ $opt_dry_run || { -+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' -+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ case $host in -+ *cygwin | *mingw* | *cegcc* ) -+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ } -+ fi -+ fi -+ -+ for dlprefile in $dlprefiles; do -+ func_verbose "extracting global C symbols from \`$dlprefile'" -+ func_basename "$dlprefile" -+ name="$func_basename_result" -+ $opt_dry_run || { -+ eval '$ECHO ": $name " >> "$nlist"' -+ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" -+ } -+ done -+ -+ $opt_dry_run || { -+ # Make sure we have at least an empty file. -+ test -f "$nlist" || : > "$nlist" -+ -+ if test -n "$exclude_expsyms"; then -+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -+ $MV "$nlist"T "$nlist" -+ fi -+ -+ # Try sorting and uniquifying the output. -+ if $GREP -v "^: " < "$nlist" | -+ if sort -k 3 /dev/null 2>&1; then -+ sort -k 3 -+ else -+ sort +2 -+ fi | -+ uniq > "$nlist"S; then -+ : -+ else -+ $GREP -v "^: " < "$nlist" > "$nlist"S -+ fi -+ -+ if test -f "$nlist"S; then -+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' -+ else -+ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" -+ fi -+ -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+ -+/* The mapping between symbol names and symbols. */ -+typedef struct { -+ const char *name; -+ void *address; -+} lt_dlsymlist; -+" -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+/* DATA imports from DLLs on WIN32 con't be const, because -+ runtime relocations are performed -- see ld's documentation -+ on pseudo-relocs. */" -+ lt_dlsym_const= ;; -+ *osf5*) -+ echo >> "$output_objdir/$my_dlsyms" "\ -+/* This system does not cope well with relocations in const data */" -+ lt_dlsym_const= ;; -+ *) -+ lt_dlsym_const=const ;; -+ esac -+ -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+extern $lt_dlsym_const lt_dlsymlist -+lt_${my_prefix}_LTX_preloaded_symbols[]; -+$lt_dlsym_const lt_dlsymlist -+lt_${my_prefix}_LTX_preloaded_symbols[] = -+{\ -+ { \"$my_originator\", (void *) 0 }," -+ -+ case $need_lib_prefix in -+ no) -+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" -+ ;; -+ *) -+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" -+ ;; -+ esac -+ $ECHO >> "$output_objdir/$my_dlsyms" "\ -+ {0, (void *) 0} -+}; -+ -+/* This works around a problem in FreeBSD linker */ -+#ifdef FREEBSD_WORKAROUND -+static const void *lt_preloaded_setup() { -+ return lt_${my_prefix}_LTX_preloaded_symbols; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif\ -+" -+ } # !$opt_dry_run -+ -+ pic_flag_for_symtable= -+ case "$compile_command " in -+ *" -static "*) ;; -+ *) -+ case $host in -+ # compiling the symbol table file with pic_flag works around -+ # a FreeBSD bug that causes programs to crash when -lm is -+ # linked before any other PIC object. But we must not use -+ # pic_flag when linking with -static. The problem exists in -+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. -+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) -+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; -+ *-*-hpux*) -+ pic_flag_for_symtable=" $pic_flag" ;; -+ *) -+ if test "X$my_pic_p" != Xno; then -+ pic_flag_for_symtable=" $pic_flag" -+ fi -+ ;; -+ esac -+ ;; -+ esac -+ symtab_cflags= -+ for arg in $LTCFLAGS; do -+ case $arg in -+ -pie | -fpie | -fPIE) ;; -+ *) symtab_cflags="$symtab_cflags $arg" ;; -+ esac -+ done -+ -+ # Now compile the dynamic symbol file. -+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' -+ -+ # Clean up the generated files. -+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' -+ -+ # Transform the symbol file into the correct name. -+ symfileobj="$output_objdir/${my_outputname}S.$objext" -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ if test -f "$output_objdir/$my_outputname.def"; then -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ else -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ fi -+ ;; -+ *) -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` -+ ;; -+ esac -+ ;; -+ *) -+ func_fatal_error "unknown suffix for \`$my_dlsyms'" -+ ;; -+ esac -+ else -+ # We keep going just in case the user didn't refer to -+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe -+ # really was required. -+ -+ # Nullify the symbol file. -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` -+ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` -+ fi -+} -+ -+# func_win32_libid arg -+# return the library type of file 'arg' -+# -+# Need a lot of goo to handle *both* DLLs and import libs -+# Has to be a shell function in order to 'eat' the argument -+# that is supplied when $file_magic_command is called. -+func_win32_libid () -+{ -+ $opt_debug -+ win32_libid_type="unknown" -+ win32_fileres=`file -L $1 2>/dev/null` -+ case $win32_fileres in -+ *ar\ archive\ import\ library*) # definitely import -+ win32_libid_type="x86 archive import" -+ ;; -+ *ar\ archive*) # could be an import, or static -+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | -+ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then -+ win32_nmres=`eval $NM -f posix -A $1 | -+ $SED -n -e ' -+ 1,100{ -+ / I /{ -+ s,.*,import, -+ p -+ q -+ } -+ }'` -+ case $win32_nmres in -+ import*) win32_libid_type="x86 archive import";; -+ *) win32_libid_type="x86 archive static";; -+ esac -+ fi -+ ;; -+ *DLL*) -+ win32_libid_type="x86 DLL" -+ ;; -+ *executable*) # but shell scripts are "executable" too... -+ case $win32_fileres in -+ *MS\ Windows\ PE\ Intel*) -+ win32_libid_type="x86 DLL" -+ ;; -+ esac -+ ;; -+ esac -+ $ECHO "$win32_libid_type" -+} -+ -+ -+ -+# func_extract_an_archive dir oldlib -+func_extract_an_archive () -+{ -+ $opt_debug -+ f_ex_an_ar_dir="$1"; shift -+ f_ex_an_ar_oldlib="$1" -+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' -+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" -+ fi -+} -+ -+ -+# func_extract_archives gentop oldlib ... -+func_extract_archives () -+{ -+ $opt_debug -+ my_gentop="$1"; shift -+ my_oldlibs=${1+"$@"} -+ my_oldobjs="" -+ my_xlib="" -+ my_xabs="" -+ my_xdir="" -+ -+ for my_xlib in $my_oldlibs; do -+ # Extract the objects. -+ case $my_xlib in -+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; -+ *) my_xabs=`pwd`"/$my_xlib" ;; -+ esac -+ func_basename "$my_xlib" -+ my_xlib="$func_basename_result" -+ my_xlib_u=$my_xlib -+ while :; do -+ case " $extracted_archives " in -+ *" $my_xlib_u "*) -+ func_arith $extracted_serial + 1 -+ extracted_serial=$func_arith_result -+ my_xlib_u=lt$extracted_serial-$my_xlib ;; -+ *) break ;; -+ esac -+ done -+ extracted_archives="$extracted_archives $my_xlib_u" -+ my_xdir="$my_gentop/$my_xlib_u" -+ -+ func_mkdir_p "$my_xdir" -+ -+ case $host in -+ *-darwin*) -+ func_verbose "Extracting $my_xabs" -+ # Do not bother doing anything if just a dry run -+ $opt_dry_run || { -+ darwin_orig_dir=`pwd` -+ cd $my_xdir || exit $? -+ darwin_archive=$my_xabs -+ darwin_curdir=`pwd` -+ darwin_base_archive=`basename "$darwin_archive"` -+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` -+ if test -n "$darwin_arches"; then -+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` -+ darwin_arch= -+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" -+ for darwin_arch in $darwin_arches ; do -+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" -+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ func_extract_an_archive "`pwd`" "${darwin_base_archive}" -+ cd "$darwin_curdir" -+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" -+ done # $darwin_arches -+ ## Okay now we've a bunch of thin objects, gotta fatten them up :) -+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` -+ darwin_file= -+ darwin_files= -+ for darwin_file in $darwin_filelist; do -+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` -+ $LIPO -create -output "$darwin_file" $darwin_files -+ done # $darwin_filelist -+ $RM -rf unfat-$$ -+ cd "$darwin_orig_dir" -+ else -+ cd $darwin_orig_dir -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ fi # $darwin_arches -+ } # !$opt_dry_run -+ ;; -+ *) -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ ;; -+ esac -+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -+ done -+ -+ func_extract_archives_result="$my_oldobjs" -+} -+ -+ -+ -+# func_emit_wrapper_part1 [arg=no] -+# -+# Emit the first part of a libtool wrapper script on stdout. -+# For more information, see the description associated with -+# func_emit_wrapper(), below. -+func_emit_wrapper_part1 () -+{ -+ func_emit_wrapper_part1_arg1=no -+ if test -n "$1" ; then -+ func_emit_wrapper_part1_arg1=$1 -+ fi -+ -+ $ECHO "\ -+#! $SHELL -+ -+# $output - temporary wrapper script for $objdir/$outputname -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -+# -+# The $output program cannot be directly executed until all the libtool -+# libraries that it depends on are installed. -+# -+# This wrapper script should never be moved out of the build directory. -+# If it is, it will not operate correctly. -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed='${SED} -e 1s/^X//' -+sed_quote_subst='$sed_quote_subst' -+ -+# Be Bourne compatible -+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '\${1+\"\$@\"}'='\"\$@\"' -+ setopt NO_GLOB_SUBST -+else -+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+relink_command=\"$relink_command\" -+ -+# This environment variable determines our operation mode. -+if test \"\$libtool_install_magic\" = \"$magic\"; then -+ # install mode needs the following variables: -+ generated_by_libtool_version='$macro_version' -+ notinst_deplibs='$notinst_deplibs' -+else -+ # When we are sourced in execute mode, \$file and \$ECHO are already set. -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ ECHO=\"$qecho\" -+ file=\"\$0\" -+ # Make sure echo works. -+ if test \"X\$1\" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then -+ # Yippee, \$ECHO works! -+ : -+ else -+ # Restart under the correct shell, and then maybe \$ECHO will work. -+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} -+ fi -+ fi\ -+" -+ $ECHO "\ -+ -+ # Find the directory that this script lives in. -+ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` -+ test \"x\$thisdir\" = \"x\$file\" && thisdir=. -+ -+ # Follow symbolic links until we get to the real thisdir. -+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` -+ while test -n \"\$file\"; do -+ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` -+ -+ # If there was a directory component, then change thisdir. -+ if test \"x\$destdir\" != \"x\$file\"; then -+ case \"\$destdir\" in -+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; -+ *) thisdir=\"\$thisdir/\$destdir\" ;; -+ esac -+ fi -+ -+ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` -+ done -+" -+} -+# end: func_emit_wrapper_part1 -+ -+# func_emit_wrapper_part2 [arg=no] -+# -+# Emit the second part of a libtool wrapper script on stdout. -+# For more information, see the description associated with -+# func_emit_wrapper(), below. -+func_emit_wrapper_part2 () -+{ -+ func_emit_wrapper_part2_arg1=no -+ if test -n "$1" ; then -+ func_emit_wrapper_part2_arg1=$1 -+ fi -+ -+ $ECHO "\ -+ -+ # Usually 'no', except on cygwin/mingw when embedded into -+ # the cwrapper. -+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 -+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then -+ # special case for '.' -+ if test \"\$thisdir\" = \".\"; then -+ thisdir=\`pwd\` -+ fi -+ # remove .libs from thisdir -+ case \"\$thisdir\" in -+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; -+ $objdir ) thisdir=. ;; -+ esac -+ fi -+ -+ # Try to get the absolute directory name. -+ absdir=\`cd \"\$thisdir\" && pwd\` -+ test -n \"\$absdir\" && thisdir=\"\$absdir\" -+" -+ -+ if test "$fast_install" = yes; then -+ $ECHO "\ -+ program=lt-'$outputname'$exeext -+ progdir=\"\$thisdir/$objdir\" -+ -+ if test ! -f \"\$progdir/\$program\" || -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ -+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then -+ -+ file=\"\$\$-\$program\" -+ -+ if test ! -d \"\$progdir\"; then -+ $MKDIR \"\$progdir\" -+ else -+ $RM \"\$progdir/\$file\" -+ fi" -+ -+ $ECHO "\ -+ -+ # relink executable if necessary -+ if test -n \"\$relink_command\"; then -+ if relink_command_output=\`eval \$relink_command 2>&1\`; then : -+ else -+ $ECHO \"\$relink_command_output\" >&2 -+ $RM \"\$progdir/\$file\" -+ exit 1 -+ fi -+ fi -+ -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || -+ { $RM \"\$progdir/\$program\"; -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } -+ $RM \"\$progdir/\$file\" -+ fi" -+ else -+ $ECHO "\ -+ program='$outputname' -+ progdir=\"\$thisdir/$objdir\" -+" -+ fi -+ -+ $ECHO "\ -+ -+ if test -f \"\$progdir/\$program\"; then" -+ -+ # Export our shlibpath_var if we have one. -+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -+ $ECHO "\ -+ # Add our own library path to $shlibpath_var -+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" -+ -+ # Some systems cannot cope with colon-terminated $shlibpath_var -+ # The second colon is a workaround for a bug in BeOS R4 sed -+ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` -+ -+ export $shlibpath_var -+" -+ fi -+ -+ # fixup the dll searchpath if we need to. -+ if test -n "$dllsearchpath"; then -+ $ECHO "\ -+ # Add the dll search path components to the executable PATH -+ PATH=$dllsearchpath:\$PATH -+" -+ fi -+ -+ $ECHO "\ -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ # Run the actual program with our arguments. -+" -+ case $host in -+ # Backslashes separate directories on plain windows -+ *-*-mingw | *-*-os2* | *-cegcc*) -+ $ECHO "\ -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -+" -+ ;; -+ -+ *) -+ $ECHO "\ -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} -+" -+ ;; -+ esac -+ $ECHO "\ -+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 -+ exit 1 -+ fi -+ else -+ # The program doesn't exist. -+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 -+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 -+ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit 1 -+ fi -+fi\ -+" -+} -+# end: func_emit_wrapper_part2 -+ -+ -+# func_emit_wrapper [arg=no] -+# -+# Emit a libtool wrapper script on stdout. -+# Don't directly open a file because we may want to -+# incorporate the script contents within a cygwin/mingw -+# wrapper executable. Must ONLY be called from within -+# func_mode_link because it depends on a number of variables -+# set therein. -+# -+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -+# variable will take. If 'yes', then the emitted script -+# will assume that the directory in which it is stored is -+# the $objdir directory. This is a cygwin/mingw-specific -+# behavior. -+func_emit_wrapper () -+{ -+ func_emit_wrapper_arg1=no -+ if test -n "$1" ; then -+ func_emit_wrapper_arg1=$1 -+ fi -+ -+ # split this up so that func_emit_cwrapperexe_src -+ # can call each part independently. -+ func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" -+ func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" -+} -+ -+ -+# func_to_host_path arg -+# -+# Convert paths to host format when used with build tools. -+# Intended for use with "native" mingw (where libtool itself -+# is running under the msys shell), or in the following cross- -+# build environments: -+# $build $host -+# mingw (msys) mingw [e.g. native] -+# cygwin mingw -+# *nix + wine mingw -+# where wine is equipped with the `winepath' executable. -+# In the native mingw case, the (msys) shell automatically -+# converts paths for any non-msys applications it launches, -+# but that facility isn't available from inside the cwrapper. -+# Similar accommodations are necessary for $host mingw and -+# $build cygwin. Calling this function does no harm for other -+# $host/$build combinations not listed above. -+# -+# ARG is the path (on $build) that should be converted to -+# the proper representation for $host. The result is stored -+# in $func_to_host_path_result. -+func_to_host_path () -+{ -+ func_to_host_path_result="$1" -+ if test -n "$1" ; then -+ case $host in -+ *mingw* ) -+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -+ case $build in -+ *mingw* ) # actually, msys -+ # awkward: cmd appends spaces to result -+ lt_sed_strip_trailing_spaces="s/[ ]*\$//" -+ func_to_host_path_tmp1=`( cmd //c echo "$1" |\ -+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ *cygwin* ) -+ func_to_host_path_tmp1=`cygpath -w "$1"` -+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ * ) -+ # Unfortunately, winepath does not exit with a non-zero -+ # error code, so we are forced to check the contents of -+ # stdout. On the other hand, if the command is not -+ # found, the shell will set an exit code of 127 and print -+ # *an error message* to stdout. So we must check for both -+ # error code of zero AND non-empty stdout, which explains -+ # the odd construction: -+ func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` -+ if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then -+ func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ else -+ # Allow warning below. -+ func_to_host_path_result="" -+ fi -+ ;; -+ esac -+ if test -z "$func_to_host_path_result" ; then -+ func_error "Could not determine host path corresponding to" -+ func_error " '$1'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback: -+ func_to_host_path_result="$1" -+ fi -+ ;; -+ esac -+ fi -+} -+# end: func_to_host_path -+ -+# func_to_host_pathlist arg -+# -+# Convert pathlists to host format when used with build tools. -+# See func_to_host_path(), above. This function supports the -+# following $build/$host combinations (but does no harm for -+# combinations not listed here): -+# $build $host -+# mingw (msys) mingw [e.g. native] -+# cygwin mingw -+# *nix + wine mingw -+# -+# Path separators are also converted from $build format to -+# $host format. If ARG begins or ends with a path separator -+# character, it is preserved (but converted to $host format) -+# on output. -+# -+# ARG is a pathlist (on $build) that should be converted to -+# the proper representation on $host. The result is stored -+# in $func_to_host_pathlist_result. -+func_to_host_pathlist () -+{ -+ func_to_host_pathlist_result="$1" -+ if test -n "$1" ; then -+ case $host in -+ *mingw* ) -+ lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -+ # Remove leading and trailing path separator characters from -+ # ARG. msys behavior is inconsistent here, cygpath turns them -+ # into '.;' and ';.', and winepath ignores them completely. -+ func_to_host_pathlist_tmp2="$1" -+ # Once set for this call, this variable should not be -+ # reassigned. It is used in tha fallback case. -+ func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ -+ $SED -e 's|^:*||' -e 's|:*$||'` -+ case $build in -+ *mingw* ) # Actually, msys. -+ # Awkward: cmd appends spaces to result. -+ lt_sed_strip_trailing_spaces="s/[ ]*\$//" -+ func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ -+ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` -+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ *cygwin* ) -+ func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` -+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ -+ $SED -e "$lt_sed_naive_backslashify"` -+ ;; -+ * ) -+ # unfortunately, winepath doesn't convert pathlists -+ func_to_host_pathlist_result="" -+ func_to_host_pathlist_oldIFS=$IFS -+ IFS=: -+ for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do -+ IFS=$func_to_host_pathlist_oldIFS -+ if test -n "$func_to_host_pathlist_f" ; then -+ func_to_host_path "$func_to_host_pathlist_f" -+ if test -n "$func_to_host_path_result" ; then -+ if test -z "$func_to_host_pathlist_result" ; then -+ func_to_host_pathlist_result="$func_to_host_path_result" -+ else -+ func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" -+ fi -+ fi -+ fi -+ IFS=: -+ done -+ IFS=$func_to_host_pathlist_oldIFS -+ ;; -+ esac -+ if test -z "$func_to_host_pathlist_result" ; then -+ func_error "Could not determine the host path(s) corresponding to" -+ func_error " '$1'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback. This may break if $1 contains DOS-style drive -+ # specifications. The fix is not to complicate the expression -+ # below, but for the user to provide a working wine installation -+ # with winepath so that path translation in the cross-to-mingw -+ # case works properly. -+ lt_replace_pathsep_nix_to_dos="s|:|;|g" -+ func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ -+ $SED -e "$lt_replace_pathsep_nix_to_dos"` -+ fi -+ # Now, add the leading and trailing path separators back -+ case "$1" in -+ :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" -+ ;; -+ esac -+ case "$1" in -+ *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" -+ ;; -+ esac -+ ;; -+ esac -+ fi -+} -+# end: func_to_host_pathlist -+ -+# func_emit_cwrapperexe_src -+# emit the source code for a wrapper executable on stdout -+# Must ONLY be called from within func_mode_link because -+# it depends on a number of variable set therein. -+func_emit_cwrapperexe_src () -+{ -+ cat < -+#include -+#ifdef _MSC_VER -+# include -+# include -+# include -+# define setmode _setmode -+#else -+# include -+# include -+# ifdef __CYGWIN__ -+# include -+# define HAVE_SETENV -+# ifdef __STRICT_ANSI__ -+char *realpath (const char *, char *); -+int putenv (char *); -+int setenv (const char *, const char *, int); -+# endif -+# endif -+#endif -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#if defined(PATH_MAX) -+# define LT_PATHMAX PATH_MAX -+#elif defined(MAXPATHLEN) -+# define LT_PATHMAX MAXPATHLEN -+#else -+# define LT_PATHMAX 1024 -+#endif -+ -+#ifndef S_IXOTH -+# define S_IXOTH 0 -+#endif -+#ifndef S_IXGRP -+# define S_IXGRP 0 -+#endif -+ -+#ifdef _MSC_VER -+# define S_IXUSR _S_IEXEC -+# define stat _stat -+# ifndef _INTPTR_T_DEFINED -+# define intptr_t int -+# endif -+#endif -+ -+#ifndef DIR_SEPARATOR -+# define DIR_SEPARATOR '/' -+# define PATH_SEPARATOR ':' -+#endif -+ -+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ -+ defined (__OS2__) -+# define HAVE_DOS_BASED_FILE_SYSTEM -+# define FOPEN_WB "wb" -+# ifndef DIR_SEPARATOR_2 -+# define DIR_SEPARATOR_2 '\\' -+# endif -+# ifndef PATH_SEPARATOR_2 -+# define PATH_SEPARATOR_2 ';' -+# endif -+#endif -+ -+#ifndef DIR_SEPARATOR_2 -+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -+#else /* DIR_SEPARATOR_2 */ -+# define IS_DIR_SEPARATOR(ch) \ -+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -+#endif /* DIR_SEPARATOR_2 */ -+ -+#ifndef PATH_SEPARATOR_2 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -+#else /* PATH_SEPARATOR_2 */ -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -+#endif /* PATH_SEPARATOR_2 */ -+ -+#ifdef __CYGWIN__ -+# define FOPEN_WB "wb" -+#endif -+ -+#ifndef FOPEN_WB -+# define FOPEN_WB "w" -+#endif -+#ifndef _O_BINARY -+# define _O_BINARY 0 -+#endif -+ -+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -+#define XFREE(stale) do { \ -+ if (stale) { free ((void *) stale); stale = 0; } \ -+} while (0) -+ -+#undef LTWRAPPER_DEBUGPRINTF -+#if defined DEBUGWRAPPER -+# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args -+static void -+ltwrapper_debugprintf (const char *fmt, ...) -+{ -+ va_list args; -+ va_start (args, fmt); -+ (void) vfprintf (stderr, fmt, args); -+ va_end (args); -+} -+#else -+# define LTWRAPPER_DEBUGPRINTF(args) -+#endif -+ -+const char *program_name = NULL; -+ -+void *xmalloc (size_t num); -+char *xstrdup (const char *string); -+const char *base_name (const char *name); -+char *find_executable (const char *wrapper); -+char *chase_symlinks (const char *pathspec); -+int make_executable (const char *path); -+int check_executable (const char *path); -+char *strendzap (char *str, const char *pat); -+void lt_fatal (const char *message, ...); -+void lt_setenv (const char *name, const char *value); -+char *lt_extend_str (const char *orig_value, const char *add, int to_end); -+void lt_opt_process_env_set (const char *arg); -+void lt_opt_process_env_prepend (const char *arg); -+void lt_opt_process_env_append (const char *arg); -+int lt_split_name_value (const char *arg, char** name, char** value); -+void lt_update_exe_path (const char *name, const char *value); -+void lt_update_lib_path (const char *name, const char *value); -+ -+static const char *script_text_part1 = -+EOF -+ -+ func_emit_wrapper_part1 yes | -+ $SED -e 's/\([\\"]\)/\\\1/g' \ -+ -e 's/^/ "/' -e 's/$/\\n"/' -+ echo ";" -+ cat <"))); -+ for (i = 0; i < newargc; i++) -+ { -+ LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); -+ } -+ -+EOF -+ -+ case $host_os in -+ mingw*) -+ cat <<"EOF" -+ /* execv doesn't actually work on mingw as expected on unix */ -+ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); -+ if (rval == -1) -+ { -+ /* failed to start process */ -+ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); -+ return 127; -+ } -+ return rval; -+EOF -+ ;; -+ *) -+ cat <<"EOF" -+ execv (lt_argv_zero, newargz); -+ return rval; /* =127, but avoids unused variable warning */ -+EOF -+ ;; -+ esac -+ -+ cat <<"EOF" -+} -+ -+void * -+xmalloc (size_t num) -+{ -+ void *p = (void *) malloc (num); -+ if (!p) -+ lt_fatal ("Memory exhausted"); -+ -+ return p; -+} -+ -+char * -+xstrdup (const char *string) -+{ -+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), -+ string) : NULL; -+} -+ -+const char * -+base_name (const char *name) -+{ -+ const char *base; -+ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ /* Skip over the disk name in MSDOS pathnames. */ -+ if (isalpha ((unsigned char) name[0]) && name[1] == ':') -+ name += 2; -+#endif -+ -+ for (base = name; *name; name++) -+ if (IS_DIR_SEPARATOR (*name)) -+ base = name + 1; -+ return base; -+} -+ -+int -+check_executable (const char *path) -+{ -+ struct stat st; -+ -+ LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", -+ path ? (*path ? path : "EMPTY!") : "NULL!")); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if ((stat (path, &st) >= 0) -+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) -+ return 1; -+ else -+ return 0; -+} -+ -+int -+make_executable (const char *path) -+{ -+ int rval = 0; -+ struct stat st; -+ -+ LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", -+ path ? (*path ? path : "EMPTY!") : "NULL!")); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if (stat (path, &st) >= 0) -+ { -+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); -+ } -+ return rval; -+} -+ -+/* Searches for the full path of the wrapper. Returns -+ newly allocated full path name if found, NULL otherwise -+ Does not chase symlinks, even on platforms that support them. -+*/ -+char * -+find_executable (const char *wrapper) -+{ -+ int has_slash = 0; -+ const char *p; -+ const char *p_next; -+ /* static buffer for getcwd */ -+ char tmp[LT_PATHMAX + 1]; -+ int tmp_len; -+ char *concat_name; -+ -+ LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", -+ wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); -+ -+ if ((wrapper == NULL) || (*wrapper == '\0')) -+ return NULL; -+ -+ /* Absolute path? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+ else -+ { -+#endif -+ if (IS_DIR_SEPARATOR (wrapper[0])) -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ } -+#endif -+ -+ for (p = wrapper; *p; p++) -+ if (*p == '/') -+ { -+ has_slash = 1; -+ break; -+ } -+ if (!has_slash) -+ { -+ /* no slashes; search PATH */ -+ const char *path = getenv ("PATH"); -+ if (path != NULL) -+ { -+ for (p = path; *p; p = p_next) -+ { -+ const char *q; -+ size_t p_len; -+ for (q = p; *q; q++) -+ if (IS_PATH_SEPARATOR (*q)) -+ break; -+ p_len = q - p; -+ p_next = (*q == '\0' ? q : q + 1); -+ if (p_len == 0) -+ { -+ /* empty path: current directory */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen (tmp); -+ concat_name = -+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ } -+ else -+ { -+ concat_name = -+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, p, p_len); -+ concat_name[p_len] = '/'; -+ strcpy (concat_name + p_len + 1, wrapper); -+ } -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+ } -+ /* not found in PATH; assume curdir */ -+ } -+ /* Relative path | not found in path: prepend cwd */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen (tmp); -+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ return NULL; -+} -+ -+char * -+chase_symlinks (const char *pathspec) -+{ -+#ifndef S_ISLNK -+ return xstrdup (pathspec); -+#else -+ char buf[LT_PATHMAX]; -+ struct stat s; -+ char *tmp_pathspec = xstrdup (pathspec); -+ char *p; -+ int has_symlinks = 0; -+ while (strlen (tmp_pathspec) && !has_symlinks) -+ { -+ LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", -+ tmp_pathspec)); -+ if (lstat (tmp_pathspec, &s) == 0) -+ { -+ if (S_ISLNK (s.st_mode) != 0) -+ { -+ has_symlinks = 1; -+ break; -+ } -+ -+ /* search backwards for last DIR_SEPARATOR */ -+ p = tmp_pathspec + strlen (tmp_pathspec) - 1; -+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) -+ p--; -+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) -+ { -+ /* no more DIR_SEPARATORS left */ -+ break; -+ } -+ *p = '\0'; -+ } -+ else -+ { -+ char *errstr = strerror (errno); -+ lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); -+ } -+ } -+ XFREE (tmp_pathspec); -+ -+ if (!has_symlinks) -+ { -+ return xstrdup (pathspec); -+ } -+ -+ tmp_pathspec = realpath (pathspec, buf); -+ if (tmp_pathspec == 0) -+ { -+ lt_fatal ("Could not follow symlinks for %s", pathspec); -+ } -+ return xstrdup (tmp_pathspec); -+#endif -+} -+ -+char * -+strendzap (char *str, const char *pat) -+{ -+ size_t len, patlen; -+ -+ assert (str != NULL); -+ assert (pat != NULL); -+ -+ len = strlen (str); -+ patlen = strlen (pat); -+ -+ if (patlen <= len) -+ { -+ str += len - patlen; -+ if (strcmp (str, pat) == 0) -+ *str = '\0'; -+ } -+ return str; -+} -+ -+static void -+lt_error_core (int exit_status, const char *mode, -+ const char *message, va_list ap) -+{ -+ fprintf (stderr, "%s: %s: ", program_name, mode); -+ vfprintf (stderr, message, ap); -+ fprintf (stderr, ".\n"); -+ -+ if (exit_status >= 0) -+ exit (exit_status); -+} -+ -+void -+lt_fatal (const char *message, ...) -+{ -+ va_list ap; -+ va_start (ap, message); -+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap); -+ va_end (ap); -+} -+ -+void -+lt_setenv (const char *name, const char *value) -+{ -+ LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", -+ (name ? name : ""), -+ (value ? value : ""))); -+ { -+#ifdef HAVE_SETENV -+ /* always make a copy, for consistency with !HAVE_SETENV */ -+ char *str = xstrdup (value); -+ setenv (name, str, 1); -+#else -+ int len = strlen (name) + 1 + strlen (value) + 1; -+ char *str = XMALLOC (char, len); -+ sprintf (str, "%s=%s", name, value); -+ if (putenv (str) != EXIT_SUCCESS) -+ { -+ XFREE (str); -+ } -+#endif -+ } -+} -+ -+char * -+lt_extend_str (const char *orig_value, const char *add, int to_end) -+{ -+ char *new_value; -+ if (orig_value && *orig_value) -+ { -+ int orig_value_len = strlen (orig_value); -+ int add_len = strlen (add); -+ new_value = XMALLOC (char, add_len + orig_value_len + 1); -+ if (to_end) -+ { -+ strcpy (new_value, orig_value); -+ strcpy (new_value + orig_value_len, add); -+ } -+ else -+ { -+ strcpy (new_value, add); -+ strcpy (new_value + add_len, orig_value); -+ } -+ } -+ else -+ { -+ new_value = xstrdup (add); -+ } -+ return new_value; -+} -+ -+int -+lt_split_name_value (const char *arg, char** name, char** value) -+{ -+ const char *p; -+ int len; -+ if (!arg || !*arg) -+ return 1; -+ -+ p = strchr (arg, (int)'='); -+ -+ if (!p) -+ return 1; -+ -+ *value = xstrdup (++p); -+ -+ len = strlen (arg) - strlen (*value); -+ *name = XMALLOC (char, len); -+ strncpy (*name, arg, len-1); -+ (*name)[len - 1] = '\0'; -+ -+ return 0; -+} -+ -+void -+lt_opt_process_env_set (const char *arg) -+{ -+ char *name = NULL; -+ char *value = NULL; -+ -+ if (lt_split_name_value (arg, &name, &value) != 0) -+ { -+ XFREE (name); -+ XFREE (value); -+ lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); -+ } -+ -+ lt_setenv (name, value); -+ XFREE (name); -+ XFREE (value); -+} -+ -+void -+lt_opt_process_env_prepend (const char *arg) -+{ -+ char *name = NULL; -+ char *value = NULL; -+ char *new_value = NULL; -+ -+ if (lt_split_name_value (arg, &name, &value) != 0) -+ { -+ XFREE (name); -+ XFREE (value); -+ lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); -+ } -+ -+ new_value = lt_extend_str (getenv (name), value, 0); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ XFREE (name); -+ XFREE (value); -+} -+ -+void -+lt_opt_process_env_append (const char *arg) -+{ -+ char *name = NULL; -+ char *value = NULL; -+ char *new_value = NULL; -+ -+ if (lt_split_name_value (arg, &name, &value) != 0) -+ { -+ XFREE (name); -+ XFREE (value); -+ lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); -+ } -+ -+ new_value = lt_extend_str (getenv (name), value, 1); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ XFREE (name); -+ XFREE (value); -+} -+ -+void -+lt_update_exe_path (const char *name, const char *value) -+{ -+ LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", -+ (name ? name : ""), -+ (value ? value : ""))); -+ -+ if (name && *name && value && *value) -+ { -+ char *new_value = lt_extend_str (getenv (name), value, 0); -+ /* some systems can't cope with a ':'-terminated path #' */ -+ int len = strlen (new_value); -+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) -+ { -+ new_value[len-1] = '\0'; -+ } -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ } -+} -+ -+void -+lt_update_lib_path (const char *name, const char *value) -+{ -+ LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", -+ (name ? name : ""), -+ (value ? value : ""))); -+ -+ if (name && *name && value && *value) -+ { -+ char *new_value = lt_extend_str (getenv (name), value, 0); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ } -+} -+ -+ -+EOF -+} -+# end: func_emit_cwrapperexe_src -+ -+# func_mode_link arg... -+func_mode_link () -+{ -+ $opt_debug -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ # It is impossible to link a dll without this setting, and -+ # we shouldn't force the makefile maintainer to figure out -+ # which system we are compiling for in order to pass an extra -+ # flag for every libtool invocation. -+ # allow_undefined=no -+ -+ # FIXME: Unfortunately, there are problems with the above when trying -+ # to make a dll which has undefined symbols, in which case not -+ # even a static library is built. For now, we need to specify -+ # -no-undefined on the libtool link line when we can be certain -+ # that all symbols are satisfied, otherwise we get a static library. -+ allow_undefined=yes -+ ;; -+ *) -+ allow_undefined=yes -+ ;; -+ esac -+ libtool_args=$nonopt -+ base_compile="$nonopt $@" -+ compile_command=$nonopt -+ finalize_command=$nonopt -+ -+ compile_rpath= -+ finalize_rpath= -+ compile_shlibpath= -+ finalize_shlibpath= -+ convenience= -+ old_convenience= -+ deplibs= -+ old_deplibs= -+ compiler_flags= -+ linker_flags= -+ dllsearchpath= -+ lib_search_path=`pwd` -+ inst_prefix_dir= -+ new_inherited_linker_flags= -+ -+ avoid_version=no -+ dlfiles= -+ dlprefiles= -+ dlself=no -+ export_dynamic=no -+ export_symbols= -+ export_symbols_regex= -+ generated= -+ libobjs= -+ ltlibs= -+ module=no -+ no_install=no -+ objs= -+ non_pic_objects= -+ precious_files_regex= -+ prefer_static_libs=no -+ preload=no -+ prev= -+ prevarg= -+ release= -+ rpath= -+ xrpath= -+ perm_rpath= -+ temp_rpath= -+ thread_safe=no -+ vinfo= -+ vinfo_number=no -+ weak_libs= -+ single_module="${wl}-single_module" -+ func_infer_tag $base_compile -+ -+ # We need to know -static, to get the right output filenames. -+ for arg -+ do -+ case $arg in -+ -shared) -+ test "$build_libtool_libs" != yes && \ -+ func_fatal_configuration "can not build a shared library" -+ build_old_libs=no -+ break -+ ;; -+ -all-static | -static | -static-libtool-libs) -+ case $arg in -+ -all-static) -+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then -+ func_warning "complete static linking is impossible in this configuration" -+ fi -+ if test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ -static) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=built -+ ;; -+ -static-libtool-libs) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ esac -+ build_libtool_libs=no -+ build_old_libs=yes -+ break -+ ;; -+ esac -+ done -+ -+ # See if our shared archives depend on static archives. -+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes -+ -+ # Go through the arguments, transforming them on the way. -+ while test "$#" -gt 0; do -+ arg="$1" -+ shift -+ func_quote_for_eval "$arg" -+ qarg=$func_quote_for_eval_unquoted_result -+ func_append libtool_args " $func_quote_for_eval_result" -+ -+ # If the previous option needs an argument, assign it. -+ if test -n "$prev"; then -+ case $prev in -+ output) -+ func_append compile_command " @OUTPUT@" -+ func_append finalize_command " @OUTPUT@" -+ ;; -+ esac -+ -+ case $prev in -+ dlfiles|dlprefiles) -+ if test "$preload" = no; then -+ # Add the symbol object into the linking commands. -+ func_append compile_command " @SYMFILE@" -+ func_append finalize_command " @SYMFILE@" -+ preload=yes -+ fi -+ case $arg in -+ *.la | *.lo) ;; # We handle these cases below. -+ force) -+ if test "$dlself" = no; then -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ self) -+ if test "$prev" = dlprefiles; then -+ dlself=yes -+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then -+ dlself=yes -+ else -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ *) -+ if test "$prev" = dlfiles; then -+ dlfiles="$dlfiles $arg" -+ else -+ dlprefiles="$dlprefiles $arg" -+ fi -+ prev= -+ continue -+ ;; -+ esac -+ ;; -+ expsyms) -+ export_symbols="$arg" -+ test -f "$arg" \ -+ || func_fatal_error "symbol file \`$arg' does not exist" -+ prev= -+ continue -+ ;; -+ expsyms_regex) -+ export_symbols_regex="$arg" -+ prev= -+ continue -+ ;; -+ framework) -+ case $host in -+ *-*-darwin*) -+ case "$deplibs " in -+ *" $qarg.ltframework "*) ;; -+ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later -+ ;; -+ esac -+ ;; -+ esac -+ prev= -+ continue -+ ;; -+ inst_prefix) -+ inst_prefix_dir="$arg" -+ prev= -+ continue -+ ;; -+ objectlist) -+ if test -f "$arg"; then -+ save_arg=$arg -+ moreargs= -+ for fil in `cat "$save_arg"` -+ do -+# moreargs="$moreargs $fil" -+ arg=$fil -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if func_lalib_unsafe_p "$arg"; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ func_source "$arg" -+ -+ if test -z "$pic_object" || -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && -+ test "$non_pic_object" = none; then -+ func_fatal_error "cannot find name of object for \`$arg'" -+ fi -+ -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ dlfiles="$dlfiles $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ dlprefiles="$dlprefiles $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ func_append libobjs " $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ func_append non_pic_objects " $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if $opt_dry_run; then -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ func_lo2o "$arg" -+ pic_object=$xdir$objdir/$func_lo2o_result -+ non_pic_object=$xdir$func_lo2o_result -+ func_append libobjs " $pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ else -+ func_fatal_error "\`$arg' is not a valid libtool object" -+ fi -+ fi -+ done -+ else -+ func_fatal_error "link input file \`$arg' does not exist" -+ fi -+ arg=$save_arg -+ prev= -+ continue -+ ;; -+ precious_regex) -+ precious_files_regex="$arg" -+ prev= -+ continue -+ ;; -+ release) -+ release="-$arg" -+ prev= -+ continue -+ ;; -+ rpath | xrpath) -+ # We need an absolute path. -+ case $arg in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ func_fatal_error "only absolute run-paths are allowed" -+ ;; -+ esac -+ if test "$prev" = rpath; then -+ case "$rpath " in -+ *" $arg "*) ;; -+ *) rpath="$rpath $arg" ;; -+ esac -+ else -+ case "$xrpath " in -+ *" $arg "*) ;; -+ *) xrpath="$xrpath $arg" ;; -+ esac -+ fi -+ prev= -+ continue -+ ;; -+ shrext) -+ shrext_cmds="$arg" -+ prev= -+ continue -+ ;; -+ weak) -+ weak_libs="$weak_libs $arg" -+ prev= -+ continue -+ ;; -+ xcclinker) -+ linker_flags="$linker_flags $qarg" -+ compiler_flags="$compiler_flags $qarg" -+ prev= -+ func_append compile_command " $qarg" -+ func_append finalize_command " $qarg" -+ continue -+ ;; -+ xcompiler) -+ compiler_flags="$compiler_flags $qarg" -+ prev= -+ func_append compile_command " $qarg" -+ func_append finalize_command " $qarg" -+ continue -+ ;; -+ xlinker) -+ linker_flags="$linker_flags $qarg" -+ compiler_flags="$compiler_flags $wl$qarg" -+ prev= -+ func_append compile_command " $wl$qarg" -+ func_append finalize_command " $wl$qarg" -+ continue -+ ;; -+ *) -+ eval "$prev=\"\$arg\"" -+ prev= -+ continue -+ ;; -+ esac -+ fi # test -n "$prev" -+ -+ prevarg="$arg" -+ -+ case $arg in -+ -all-static) -+ if test -n "$link_static_flag"; then -+ # See comment for -static flag below, for more details. -+ func_append compile_command " $link_static_flag" -+ func_append finalize_command " $link_static_flag" -+ fi -+ continue -+ ;; -+ -+ -allow-undefined) -+ # FIXME: remove this flag sometime in the future. -+ func_fatal_error "\`-allow-undefined' must not be used because it is the default" -+ ;; -+ -+ -avoid-version) -+ avoid_version=yes -+ continue -+ ;; -+ -+ -dlopen) -+ prev=dlfiles -+ continue -+ ;; -+ -+ -dlpreopen) -+ prev=dlprefiles -+ continue -+ ;; -+ -+ -export-dynamic) -+ export_dynamic=yes -+ continue -+ ;; -+ -+ -export-symbols | -export-symbols-regex) -+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then -+ func_fatal_error "more than one -exported-symbols argument is not allowed" -+ fi -+ if test "X$arg" = "X-export-symbols"; then -+ prev=expsyms -+ else -+ prev=expsyms_regex -+ fi -+ continue -+ ;; -+ -+ -framework) -+ prev=framework -+ continue -+ ;; -+ -+ -inst-prefix-dir) -+ prev=inst_prefix -+ continue -+ ;; -+ -+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* -+ # so, if we see these flags be careful not to treat them like -L -+ -L[A-Z][A-Z]*:*) -+ case $with_gcc/$host in -+ no/*-*-irix* | /*-*-irix*) -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ ;; -+ esac -+ continue -+ ;; -+ -+ -L*) -+ func_stripname '-L' '' "$arg" -+ dir=$func_stripname_result -+ if test -z "$dir"; then -+ if test "$#" -gt 0; then -+ func_fatal_error "require no space between \`-L' and \`$1'" -+ else -+ func_fatal_error "need path for \`-L' option" -+ fi -+ fi -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ test -z "$absdir" && \ -+ func_fatal_error "cannot determine absolute directory name of \`$dir'" -+ dir="$absdir" -+ ;; -+ esac -+ case "$deplibs " in -+ *" -L$dir "*) ;; -+ *) -+ deplibs="$deplibs -L$dir" -+ lib_search_path="$lib_search_path $dir" -+ ;; -+ esac -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$dir:"*) ;; -+ ::) dllsearchpath=$dir;; -+ *) dllsearchpath="$dllsearchpath:$dir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ ::) dllsearchpath=$testbindir;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac -+ ;; -+ esac -+ continue -+ ;; -+ -+ -l*) -+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) -+ # These systems don't actually have a C or math library (as such) -+ continue -+ ;; -+ *-*-os2*) -+ # These systems don't actually have a C library (as such) -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C and math libraries are in the System framework -+ deplibs="$deplibs System.ltframework" -+ continue -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ test "X$arg" = "X-lc" && continue -+ ;; -+ esac -+ elif test "X$arg" = "X-lc_r"; then -+ case $host in -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc_r directly, use -pthread flag. -+ continue -+ ;; -+ esac -+ fi -+ deplibs="$deplibs $arg" -+ continue -+ ;; -+ -+ -module) -+ module=yes -+ continue -+ ;; -+ -+ # Tru64 UNIX uses -model [arg] to determine the layout of C++ -+ # classes, name mangling, and exception handling. -+ # Darwin uses the -arch flag to determine output architecture. -+ -model|-arch|-isysroot) -+ compiler_flags="$compiler_flags $arg" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ prev=xcompiler -+ continue -+ ;; -+ -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -+ compiler_flags="$compiler_flags $arg" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ case "$new_inherited_linker_flags " in -+ *" $arg "*) ;; -+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; -+ esac -+ continue -+ ;; -+ -+ -multi_module) -+ single_module="${wl}-multi_module" -+ continue -+ ;; -+ -+ -no-fast-install) -+ fast_install=no -+ continue -+ ;; -+ -+ -no-install) -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) -+ # The PATH hackery in wrapper scripts is required on Windows -+ # and Darwin in order for the loader to find any dlls it needs. -+ func_warning "\`-no-install' is ignored for $host" -+ func_warning "assuming \`-no-fast-install' instead" -+ fast_install=no -+ ;; -+ *) no_install=yes ;; -+ esac -+ continue -+ ;; -+ -+ -no-undefined) -+ allow_undefined=no -+ continue -+ ;; -+ -+ -objectlist) -+ prev=objectlist -+ continue -+ ;; -+ -+ -o) prev=output ;; -+ -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ -+ -release) -+ prev=release -+ continue -+ ;; -+ -+ -rpath) -+ prev=rpath -+ continue -+ ;; -+ -+ -R) -+ prev=xrpath -+ continue -+ ;; -+ -+ -R*) -+ func_stripname '-R' '' "$arg" -+ dir=$func_stripname_result -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ func_fatal_error "only absolute run-paths are allowed" -+ ;; -+ esac -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) xrpath="$xrpath $dir" ;; -+ esac -+ continue -+ ;; -+ -+ -shared) -+ # The effects of -shared are defined in a previous loop. -+ continue -+ ;; -+ -+ -shrext) -+ prev=shrext -+ continue -+ ;; -+ -+ -static | -static-libtool-libs) -+ # The effects of -static are defined in a previous loop. -+ # We used to do the same as -all-static on platforms that -+ # didn't have a PIC flag, but the assumption that the effects -+ # would be equivalent was wrong. It would break on at least -+ # Digital Unix and AIX. -+ continue -+ ;; -+ -+ -thread-safe) -+ thread_safe=yes -+ continue -+ ;; -+ -+ -version-info) -+ prev=vinfo -+ continue -+ ;; -+ -+ -version-number) -+ prev=vinfo -+ vinfo_number=yes -+ continue -+ ;; -+ -+ -weak) -+ prev=weak -+ continue -+ ;; -+ -+ -Wc,*) -+ func_stripname '-Wc,' '' "$arg" -+ args=$func_stripname_result -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ func_quote_for_eval "$flag" -+ arg="$arg $wl$func_quote_for_eval_result" -+ compiler_flags="$compiler_flags $func_quote_for_eval_result" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$arg" -+ arg=$func_stripname_result -+ ;; -+ -+ -Wl,*) -+ func_stripname '-Wl,' '' "$arg" -+ args=$func_stripname_result -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ func_quote_for_eval "$flag" -+ arg="$arg $wl$func_quote_for_eval_result" -+ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" -+ linker_flags="$linker_flags $func_quote_for_eval_result" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$arg" -+ arg=$func_stripname_result -+ ;; -+ -+ -Xcompiler) -+ prev=xcompiler -+ continue -+ ;; -+ -+ -Xlinker) -+ prev=xlinker -+ continue -+ ;; -+ -+ -XCClinker) -+ prev=xcclinker -+ continue -+ ;; -+ -+ # -msg_* for osf cc -+ -msg_*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ -+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler -+ # -r[0-9][0-9]* specifies the processor on the SGI compiler -+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler -+ # +DA*, +DD* enable 64-bit mode on the HP compiler -+ # -q* pass through compiler args for the IBM compiler -+ # -m*, -t[45]*, -txscale* pass through architecture-specific -+ # compiler args for GCC -+ # -F/path gives path to uninstalled frameworks, gcc on darwin -+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC -+ # @file GCC response files -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ compiler_flags="$compiler_flags $arg" -+ continue -+ ;; -+ -+ # Some other compiler flag. -+ -* | +*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ -+ *.$objext) -+ # A standard object. -+ objs="$objs $arg" -+ ;; -+ -+ *.lo) -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if func_lalib_unsafe_p "$arg"; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ func_source "$arg" -+ -+ if test -z "$pic_object" || -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && -+ test "$non_pic_object" = none; then -+ func_fatal_error "cannot find name of object for \`$arg'" -+ fi -+ -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ dlfiles="$dlfiles $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ dlprefiles="$dlprefiles $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ func_append libobjs " $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ func_append non_pic_objects " $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if $opt_dry_run; then -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ func_lo2o "$arg" -+ pic_object=$xdir$objdir/$func_lo2o_result -+ non_pic_object=$xdir$func_lo2o_result -+ func_append libobjs " $pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ else -+ func_fatal_error "\`$arg' is not a valid libtool object" -+ fi -+ fi -+ ;; -+ -+ *.$libext) -+ # An archive. -+ deplibs="$deplibs $arg" -+ old_deplibs="$old_deplibs $arg" -+ continue -+ ;; -+ -+ *.la) -+ # A libtool-controlled library. -+ -+ if test "$prev" = dlfiles; then -+ # This library was specified with -dlopen. -+ dlfiles="$dlfiles $arg" -+ prev= -+ elif test "$prev" = dlprefiles; then -+ # The library was specified with -dlpreopen. -+ dlprefiles="$dlprefiles $arg" -+ prev= -+ else -+ deplibs="$deplibs $arg" -+ fi -+ continue -+ ;; -+ -+ # Some other compiler argument. -+ *) -+ # Unknown arguments in both finalize_command and compile_command need -+ # to be aesthetically quoted because they are evaled later. -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ esac # arg -+ -+ # Now actually substitute the argument into the commands. -+ if test -n "$arg"; then -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ fi -+ done # argument parsing loop -+ -+ test -n "$prev" && \ -+ func_fatal_help "the \`$prevarg' option requires an argument" -+ -+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -+ eval arg=\"$export_dynamic_flag_spec\" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ fi -+ -+ oldlibs= -+ # calculate the name of the file, without its directory -+ func_basename "$output" -+ outputname="$func_basename_result" -+ libobjs_save="$libobjs" -+ -+ if test -n "$shlibpath_var"; then -+ # get the directories listed in $shlibpath_var -+ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` -+ else -+ shlib_search_path= -+ fi -+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\" -+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" -+ -+ func_dirname "$output" "/" "" -+ output_objdir="$func_dirname_result$objdir" -+ # Create the object directory. -+ func_mkdir_p "$output_objdir" -+ -+ # Determine the type of output -+ case $output in -+ "") -+ func_fatal_help "you must specify an output file" -+ ;; -+ *.$libext) linkmode=oldlib ;; -+ *.lo | *.$objext) linkmode=obj ;; -+ *.la) linkmode=lib ;; -+ *) linkmode=prog ;; # Anything else should be a program. -+ esac -+ -+ specialdeplibs= -+ -+ libs= -+ # Find all interdependent deplibs by searching for libraries -+ # that are linked more than once (e.g. -la -lb -la) -+ for deplib in $deplibs; do -+ if $opt_duplicate_deps ; then -+ case "$libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ libs="$libs $deplib" -+ done -+ -+ if test "$linkmode" = lib; then -+ libs="$predeps $libs $compiler_lib_search_path $postdeps" -+ -+ # Compute libraries that are listed more than once in $predeps -+ # $postdeps and mark them as special (i.e., whose duplicates are -+ # not to be eliminated). -+ pre_post_deps= -+ if $opt_duplicate_compiler_generated_deps; then -+ for pre_post_dep in $predeps $postdeps; do -+ case "$pre_post_deps " in -+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; -+ esac -+ pre_post_deps="$pre_post_deps $pre_post_dep" -+ done -+ fi -+ pre_post_deps= -+ fi -+ -+ deplibs= -+ newdependency_libs= -+ newlib_search_path= -+ need_relink=no # whether we're linking any uninstalled libtool libraries -+ notinst_deplibs= # not-installed libtool libraries -+ notinst_path= # paths that contain not-installed libtool libraries -+ -+ case $linkmode in -+ lib) -+ passes="conv dlpreopen link" -+ for file in $dlfiles $dlprefiles; do -+ case $file in -+ *.la) ;; -+ *) -+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" -+ ;; -+ esac -+ done -+ ;; -+ prog) -+ compile_deplibs= -+ finalize_deplibs= -+ alldeplibs=no -+ newdlfiles= -+ newdlprefiles= -+ passes="conv scan dlopen dlpreopen link" -+ ;; -+ *) passes="conv" -+ ;; -+ esac -+ -+ for pass in $passes; do -+ # The preopen pass in lib mode reverses $deplibs; put it back here -+ # so that -L comes before libs that need it for instance... -+ if test "$linkmode,$pass" = "lib,link"; then -+ ## FIXME: Find the place where the list is rebuilt in the wrong -+ ## order, and fix it there properly -+ tmp_deplibs= -+ for deplib in $deplibs; do -+ tmp_deplibs="$deplib $tmp_deplibs" -+ done -+ deplibs="$tmp_deplibs" -+ fi -+ -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan"; then -+ libs="$deplibs" -+ deplibs= -+ fi -+ if test "$linkmode" = prog; then -+ case $pass in -+ dlopen) libs="$dlfiles" ;; -+ dlpreopen) libs="$dlprefiles" ;; -+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; -+ esac -+ fi -+ if test "$linkmode,$pass" = "lib,dlpreopen"; then -+ # Collect and forward deplibs of preopened libtool libs -+ for lib in $dlprefiles; do -+ # Ignore non-libtool-libs -+ dependency_libs= -+ case $lib in -+ *.la) func_source "$lib" ;; -+ esac -+ -+ # Collect preopened libtool deplibs, except any this library -+ # has declared as weak libs -+ for deplib in $dependency_libs; do -+ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` -+ case " $weak_libs " in -+ *" $deplib_base "*) ;; -+ *) deplibs="$deplibs $deplib" ;; -+ esac -+ done -+ done -+ libs="$dlprefiles" -+ fi -+ if test "$pass" = dlopen; then -+ # Collect dlpreopened libraries -+ save_deplibs="$deplibs" -+ deplibs= -+ fi -+ -+ for deplib in $libs; do -+ lib= -+ found=no -+ case $deplib in -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags $deplib" -+ if test "$linkmode" = lib ; then -+ case "$new_inherited_linker_flags " in -+ *" $deplib "*) ;; -+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; -+ esac -+ fi -+ fi -+ continue -+ ;; -+ -l*) -+ if test "$linkmode" != lib && test "$linkmode" != prog; then -+ func_warning "\`-l' is ignored for archives/objects" -+ continue -+ fi -+ func_stripname '-l' '' "$deplib" -+ name=$func_stripname_result -+ if test "$linkmode" = lib; then -+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" -+ else -+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" -+ fi -+ for searchdir in $searchdirs; do -+ for search_ext in .la $std_shrext .so .a; do -+ # Search the libtool library -+ lib="$searchdir/lib${name}${search_ext}" -+ if test -f "$lib"; then -+ if test "$search_ext" = ".la"; then -+ found=yes -+ else -+ found=no -+ fi -+ break 2 -+ fi -+ done -+ done -+ if test "$found" != yes; then -+ # deplib doesn't seem to be a libtool library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ else # deplib is a libtool library -+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, -+ # We need to do some special things here, and not later. -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $deplib "*) -+ if func_lalib_p "$lib"; then -+ library_names= -+ old_library= -+ func_source "$lib" -+ for l in $old_library $library_names; do -+ ll="$l" -+ done -+ if test "X$ll" = "X$old_library" ; then # only static version available -+ found=no -+ func_dirname "$lib" "" "." -+ ladir="$func_dirname_result" -+ lib=$ladir/$old_library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ fi -+ fi -+ ;; -+ *) ;; -+ esac -+ fi -+ fi -+ ;; # -l -+ *.ltframework) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ if test "$linkmode" = lib ; then -+ case "$new_inherited_linker_flags " in -+ *" $deplib "*) ;; -+ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; -+ esac -+ fi -+ fi -+ continue -+ ;; -+ -L*) -+ case $linkmode in -+ lib) -+ deplibs="$deplib $deplibs" -+ test "$pass" = conv && continue -+ newdependency_libs="$deplib $newdependency_libs" -+ func_stripname '-L' '' "$deplib" -+ newlib_search_path="$newlib_search_path $func_stripname_result" -+ ;; -+ prog) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ if test "$pass" = scan; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ func_stripname '-L' '' "$deplib" -+ newlib_search_path="$newlib_search_path $func_stripname_result" -+ ;; -+ *) -+ func_warning "\`-L' is ignored for archives/objects" -+ ;; -+ esac # linkmode -+ continue -+ ;; # -L -+ -R*) -+ if test "$pass" = link; then -+ func_stripname '-R' '' "$deplib" -+ dir=$func_stripname_result -+ # Make sure the xrpath contains only unique directories. -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) xrpath="$xrpath $dir" ;; -+ esac -+ fi -+ deplibs="$deplib $deplibs" -+ continue -+ ;; -+ *.la) lib="$deplib" ;; -+ *.$libext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ case $linkmode in -+ lib) -+ # Linking convenience modules into shared libraries is allowed, -+ # but linking other static libraries is non-portable. -+ case " $dlpreconveniencelibs " in -+ *" $deplib "*) ;; -+ *) -+ valid_a_lib=no -+ case $deplibs_check_method in -+ match_pattern*) -+ set dummy $deplibs_check_method; shift -+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -+ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ -+ | $EGREP "$match_pattern_regex" > /dev/null; then -+ valid_a_lib=yes -+ fi -+ ;; -+ pass_all) -+ valid_a_lib=yes -+ ;; -+ esac -+ if test "$valid_a_lib" != yes; then -+ $ECHO -+ $ECHO "*** Warning: Trying to link with static lib archive $deplib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have" -+ $ECHO "*** because the file extensions .$libext of this argument makes me believe" -+ $ECHO "*** that it is just a static archive that I should not use here." -+ else -+ $ECHO -+ $ECHO "*** Warning: Linking the shared library $output against the" -+ $ECHO "*** static library $deplib is not portable!" -+ deplibs="$deplib $deplibs" -+ fi -+ ;; -+ esac -+ continue -+ ;; -+ prog) -+ if test "$pass" != link; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ continue -+ ;; -+ esac # linkmode -+ ;; # *.$libext -+ *.lo | *.$objext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ elif test "$linkmode" = prog; then -+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ # If there is no dlopen support or we're linking statically, -+ # we need to preload. -+ newdlprefiles="$newdlprefiles $deplib" -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ newdlfiles="$newdlfiles $deplib" -+ fi -+ fi -+ continue -+ ;; -+ %DEPLIBS%) -+ alldeplibs=yes -+ continue -+ ;; -+ esac # case $deplib -+ -+ if test "$found" = yes || test -f "$lib"; then : -+ else -+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" -+ fi -+ -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$lib" \ -+ || func_fatal_error "\`$lib' is not a valid libtool archive" -+ -+ func_dirname "$lib" "" "." -+ ladir="$func_dirname_result" -+ -+ dlname= -+ dlopen= -+ dlpreopen= -+ libdir= -+ library_names= -+ old_library= -+ inherited_linker_flags= -+ # If the library was installed with an old release of libtool, -+ # it will not redefine variables installed, or shouldnotlink -+ installed=yes -+ shouldnotlink=no -+ avoidtemprpath= -+ -+ -+ # Read the .la file -+ func_source "$lib" -+ -+ # Convert "-framework foo" to "foo.ltframework" -+ if test -n "$inherited_linker_flags"; then -+ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` -+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do -+ case " $new_inherited_linker_flags " in -+ *" $tmp_inherited_linker_flag "*) ;; -+ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; -+ esac -+ done -+ fi -+ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan" || -+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then -+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen" -+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" -+ fi -+ -+ if test "$pass" = conv; then -+ # Only check for convenience libraries -+ deplibs="$lib $deplibs" -+ if test -z "$libdir"; then -+ if test -z "$old_library"; then -+ func_fatal_error "cannot find name of link library for \`$lib'" -+ fi -+ # It is a libtool convenience library, so add in its objects. -+ convenience="$convenience $ladir/$objdir/$old_library" -+ old_convenience="$old_convenience $ladir/$objdir/$old_library" -+ elif test "$linkmode" != prog && test "$linkmode" != lib; then -+ func_fatal_error "\`$lib' is not a convenience library" -+ fi -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ deplibs="$deplib $deplibs" -+ if $opt_duplicate_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done -+ continue -+ fi # $pass = conv -+ -+ -+ # Get the name of the library we link against. -+ linklib= -+ for l in $old_library $library_names; do -+ linklib="$l" -+ done -+ if test -z "$linklib"; then -+ func_fatal_error "cannot find name of link library for \`$lib'" -+ fi -+ -+ # This library was specified with -dlopen. -+ if test "$pass" = dlopen; then -+ if test -z "$libdir"; then -+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'" -+ fi -+ if test -z "$dlname" || -+ test "$dlopen_support" != yes || -+ test "$build_libtool_libs" = no; then -+ # If there is no dlname, no dlopen support or we're linking -+ # statically, we need to preload. We also need to preload any -+ # dependent libraries so libltdl's deplib preloader doesn't -+ # bomb out in the load deplibs phase. -+ dlprefiles="$dlprefiles $lib $dependency_libs" -+ else -+ newdlfiles="$newdlfiles $lib" -+ fi -+ continue -+ fi # $pass = dlopen -+ -+ # We need an absolute path. -+ case $ladir in -+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; -+ *) -+ abs_ladir=`cd "$ladir" && pwd` -+ if test -z "$abs_ladir"; then -+ func_warning "cannot determine absolute directory name of \`$ladir'" -+ func_warning "passing it literally to the linker, although it might fail" -+ abs_ladir="$ladir" -+ fi -+ ;; -+ esac -+ func_basename "$lib" -+ laname="$func_basename_result" -+ -+ # Find the relevant object directory and library name. -+ if test "X$installed" = Xyes; then -+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ func_warning "library \`$lib' was moved." -+ dir="$ladir" -+ absdir="$abs_ladir" -+ libdir="$abs_ladir" -+ else -+ dir="$libdir" -+ absdir="$libdir" -+ fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes -+ else -+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ dir="$ladir" -+ absdir="$abs_ladir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ else -+ dir="$ladir/$objdir" -+ absdir="$abs_ladir/$objdir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ fi -+ fi # $installed = yes -+ func_stripname 'lib' '.la' "$laname" -+ name=$func_stripname_result -+ -+ # This library was specified with -dlpreopen. -+ if test "$pass" = dlpreopen; then -+ if test -z "$libdir" && test "$linkmode" = prog; then -+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" -+ fi -+ # Prefer using a static library (so that no silly _DYNAMIC symbols -+ # are required to link). -+ if test -n "$old_library"; then -+ newdlprefiles="$newdlprefiles $dir/$old_library" -+ # Keep a list of preopened convenience libraries to check -+ # that they are being used correctly in the link pass. -+ test -z "$libdir" && \ -+ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" -+ # Otherwise, use the dlname, so that lt_dlopen finds it. -+ elif test -n "$dlname"; then -+ newdlprefiles="$newdlprefiles $dir/$dlname" -+ else -+ newdlprefiles="$newdlprefiles $dir/$linklib" -+ fi -+ fi # $pass = dlpreopen -+ -+ if test -z "$libdir"; then -+ # Link the convenience library -+ if test "$linkmode" = lib; then -+ deplibs="$dir/$old_library $deplibs" -+ elif test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$dir/$old_library $compile_deplibs" -+ finalize_deplibs="$dir/$old_library $finalize_deplibs" -+ else -+ deplibs="$lib $deplibs" # used for prog,scan pass -+ fi -+ continue -+ fi -+ -+ -+ if test "$linkmode" = prog && test "$pass" != link; then -+ newlib_search_path="$newlib_search_path $ladir" -+ deplibs="$lib $deplibs" -+ -+ linkalldeplibs=no -+ if test "$link_all_deplibs" != no || test -z "$library_names" || -+ test "$build_libtool_libs" = no; then -+ linkalldeplibs=yes -+ fi -+ -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) func_stripname '-L' '' "$deplib" -+ newlib_search_path="$newlib_search_path $func_stripname_result" -+ ;; -+ esac -+ # Need to link against all dependency_libs? -+ if test "$linkalldeplibs" = yes; then -+ deplibs="$deplib $deplibs" -+ else -+ # Need to hardcode shared library paths -+ # or/and link against static libraries -+ newdependency_libs="$deplib $newdependency_libs" -+ fi -+ if $opt_duplicate_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done # for deplib -+ continue -+ fi # $linkmode = prog... -+ -+ if test "$linkmode,$pass" = "prog,link"; then -+ if test -n "$library_names" && -+ { { test "$prefer_static_libs" = no || -+ test "$prefer_static_libs,$installed" = "built,yes"; } || -+ test -z "$old_library"; }; then -+ # We need to hardcode the library path -+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then -+ # Make sure the rpath contains only unique directories. -+ case "$temp_rpath:" in -+ *"$absdir:"*) ;; -+ *) temp_rpath="$temp_rpath$absdir:" ;; -+ esac -+ fi -+ -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) compile_rpath="$compile_rpath $absdir" -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" -+ esac -+ ;; -+ esac -+ fi # $linkmode,$pass = prog,link... -+ -+ if test "$alldeplibs" = yes && -+ { test "$deplibs_check_method" = pass_all || -+ { test "$build_libtool_libs" = yes && -+ test -n "$library_names"; }; }; then -+ # We only need to search for static libraries -+ continue -+ fi -+ fi -+ -+ link_static=no # Whether the deplib will be linked statically -+ use_static_libs=$prefer_static_libs -+ if test "$use_static_libs" = built && test "$installed" = yes; then -+ use_static_libs=no -+ fi -+ if test -n "$library_names" && -+ { test "$use_static_libs" = no || test -z "$old_library"; }; then -+ case $host in -+ *cygwin* | *mingw* | *cegcc*) -+ # No point in relinking DLLs because paths are not encoded -+ notinst_deplibs="$notinst_deplibs $lib" -+ need_relink=no -+ ;; -+ *) -+ if test "$installed" = no; then -+ notinst_deplibs="$notinst_deplibs $lib" -+ need_relink=yes -+ fi -+ ;; -+ esac -+ # This is a shared library -+ -+ # Warn about portability, can't link against -module's on some -+ # systems (darwin). Don't bleat about dlopened modules though! -+ dlopenmodule="" -+ for dlpremoduletest in $dlprefiles; do -+ if test "X$dlpremoduletest" = "X$lib"; then -+ dlopenmodule="$dlpremoduletest" -+ break -+ fi -+ done -+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then -+ $ECHO -+ if test "$linkmode" = prog; then -+ $ECHO "*** Warning: Linking the executable $output against the loadable module" -+ else -+ $ECHO "*** Warning: Linking the shared library $output against the loadable module" -+ fi -+ $ECHO "*** $linklib is not portable!" -+ fi -+ if test "$linkmode" = lib && -+ test "$hardcode_into_libs" = yes; then -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) compile_rpath="$compile_rpath $absdir" -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" -+ esac -+ ;; -+ esac -+ fi -+ -+ if test -n "$old_archive_from_expsyms_cmds"; then -+ # figure out the soname -+ set dummy $library_names -+ shift -+ realname="$1" -+ shift -+ libname=`eval "\\$ECHO \"$libname_spec\""` -+ # use dlname if we got it. it's perfectly good, no? -+ if test -n "$dlname"; then -+ soname="$dlname" -+ elif test -n "$soname_spec"; then -+ # bleh windows -+ case $host in -+ *cygwin* | mingw* | *cegcc*) -+ func_arith $current - $age -+ major=$func_arith_result -+ versuffix="-$major" -+ ;; -+ esac -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ -+ # Make a new name for the extract_expsyms_cmds to use -+ soroot="$soname" -+ func_basename "$soroot" -+ soname="$func_basename_result" -+ func_stripname 'lib' '.dll' "$soname" -+ newlib=libimp-$func_stripname_result.a -+ -+ # If the library has no export list, then create one now -+ if test -f "$output_objdir/$soname-def"; then : -+ else -+ func_verbose "extracting exported symbol list from \`$soname'" -+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?' -+ fi -+ -+ # Create $newlib -+ if test -f "$output_objdir/$newlib"; then :; else -+ func_verbose "generating import library for \`$soname'" -+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' -+ fi -+ # make sure the library variables are pointing to the new library -+ dir=$output_objdir -+ linklib=$newlib -+ fi # test -n "$old_archive_from_expsyms_cmds" -+ -+ if test "$linkmode" = prog || test "$mode" != relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ lib_linked=yes -+ case $hardcode_action in -+ immediate | unsupported) -+ if test "$hardcode_direct" = no; then -+ add="$dir/$linklib" -+ case $host in -+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; -+ *-*-sysv4*uw2*) add_dir="-L$dir" ;; -+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ -+ *-*-unixware7*) add_dir="-L$dir" ;; -+ *-*-darwin* ) -+ # if the lib is a (non-dlopened) module then we can not -+ # link against it, someone is ignoring the earlier warnings -+ if /usr/bin/file -L $add 2> /dev/null | -+ $GREP ": [^:]* bundle" >/dev/null ; then -+ if test "X$dlopenmodule" != "X$lib"; then -+ $ECHO "*** Warning: lib $linklib is a module, not a shared library" -+ if test -z "$old_library" ; then -+ $ECHO -+ $ECHO "*** And there doesn't seem to be a static archive available" -+ $ECHO "*** The link will probably fail, sorry" -+ else -+ add="$dir/$old_library" -+ fi -+ elif test -n "$old_library"; then -+ add="$dir/$old_library" -+ fi -+ fi -+ esac -+ elif test "$hardcode_minus_L" = no; then -+ case $host in -+ *-*-sunos*) add_shlibpath="$dir" ;; -+ esac -+ add_dir="-L$dir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = no; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ relink) -+ if test "$hardcode_direct" = yes && -+ test "$hardcode_direct_absolute" = no; then -+ add="$dir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$dir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ *) lib_linked=no ;; -+ esac -+ -+ if test "$lib_linked" != yes; then -+ func_fatal_configuration "unsupported hardcode properties" -+ fi -+ -+ if test -n "$add_shlibpath"; then -+ case :$compile_shlibpath: in -+ *":$add_shlibpath:"*) ;; -+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; -+ esac -+ fi -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" -+ test -n "$add" && compile_deplibs="$add $compile_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ if test "$hardcode_direct" != yes && -+ test "$hardcode_minus_L" != yes && -+ test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ esac -+ fi -+ fi -+ fi -+ -+ if test "$linkmode" = prog || test "$mode" = relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ # Finalize command for both is simple: just hardcode it. -+ if test "$hardcode_direct" = yes && -+ test "$hardcode_direct_absolute" = no; then -+ add="$libdir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$libdir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ esac -+ add="-l$name" -+ elif test "$hardcode_automatic" = yes; then -+ if test -n "$inst_prefix_dir" && -+ test -f "$inst_prefix_dir$libdir/$linklib" ; then -+ add="$inst_prefix_dir$libdir/$linklib" -+ else -+ add="$libdir/$linklib" -+ fi -+ else -+ # We cannot seem to hardcode it, guess we'll fake it. -+ add_dir="-L$libdir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ fi -+ -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" -+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ fi -+ fi -+ elif test "$linkmode" = prog; then -+ # Here we assume that one of hardcode_direct or hardcode_minus_L -+ # is not unsupported. This is valid on all known static and -+ # shared platforms. -+ if test "$hardcode_direct" != unsupported; then -+ test -n "$old_library" && linklib="$old_library" -+ compile_deplibs="$dir/$linklib $compile_deplibs" -+ finalize_deplibs="$dir/$linklib $finalize_deplibs" -+ else -+ compile_deplibs="-l$name -L$dir $compile_deplibs" -+ finalize_deplibs="-l$name -L$dir $finalize_deplibs" -+ fi -+ elif test "$build_libtool_libs" = yes; then -+ # Not a shared library -+ if test "$deplibs_check_method" != pass_all; then -+ # We're trying link a shared library against a static one -+ # but the system doesn't support it. -+ -+ # Just print a warning and add the library to dependency_libs so -+ # that the program can be linked against the static library. -+ $ECHO -+ $ECHO "*** Warning: This system can not link to static lib archive $lib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have." -+ if test "$module" = yes; then -+ $ECHO "*** But as you try to build a module library, libtool will still create " -+ $ECHO "*** a static module, that should work as long as the dlopening application" -+ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." -+ if test -z "$global_symbol_pipe"; then -+ $ECHO -+ $ECHO "*** However, this would only work if libtool was able to extract symbol" -+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ $ECHO "*** not find such a program. So, this module is probably useless." -+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ else -+ deplibs="$dir/$old_library $deplibs" -+ link_static=yes -+ fi -+ fi # link shared/static library? -+ -+ if test "$linkmode" = lib; then -+ if test -n "$dependency_libs" && -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || -+ test "$link_static" = yes; }; then -+ # Extract -R from dependency_libs -+ temp_deplibs= -+ for libdir in $dependency_libs; do -+ case $libdir in -+ -R*) func_stripname '-R' '' "$libdir" -+ temp_xrpath=$func_stripname_result -+ case " $xrpath " in -+ *" $temp_xrpath "*) ;; -+ *) xrpath="$xrpath $temp_xrpath";; -+ esac;; -+ *) temp_deplibs="$temp_deplibs $libdir";; -+ esac -+ done -+ dependency_libs="$temp_deplibs" -+ fi -+ -+ newlib_search_path="$newlib_search_path $absdir" -+ # Link against this library -+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" -+ # ... and its dependency_libs -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ newdependency_libs="$deplib $newdependency_libs" -+ if $opt_duplicate_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done -+ -+ if test "$link_all_deplibs" != no; then -+ # Add the search paths of all dependency libraries -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) path="$deplib" ;; -+ *.la) -+ func_dirname "$deplib" "" "." -+ dir="$func_dirname_result" -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ if test -z "$absdir"; then -+ func_warning "cannot determine absolute directory name of \`$dir'" -+ absdir="$dir" -+ fi -+ ;; -+ esac -+ if $GREP "^installed=no" $deplib > /dev/null; then -+ case $host in -+ *-*-darwin*) -+ depdepl= -+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` -+ if test -n "$deplibrary_names" ; then -+ for tmp in $deplibrary_names ; do -+ depdepl=$tmp -+ done -+ if test -f "$absdir/$objdir/$depdepl" ; then -+ depdepl="$absdir/$objdir/$depdepl" -+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` -+ if test -z "$darwin_install_name"; then -+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` -+ fi -+ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" -+ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" -+ path= -+ fi -+ fi -+ ;; -+ *) -+ path="-L$absdir/$objdir" -+ ;; -+ esac -+ else -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$deplib' is not a valid libtool archive" -+ test "$absdir" != "$libdir" && \ -+ func_warning "\`$deplib' seems to be moved" -+ -+ path="-L$absdir" -+ fi -+ ;; -+ esac -+ case " $deplibs " in -+ *" $path "*) ;; -+ *) deplibs="$path $deplibs" ;; -+ esac -+ done -+ fi # link_all_deplibs != no -+ fi # linkmode = lib -+ done # for deplib in $libs -+ if test "$pass" = link; then -+ if test "$linkmode" = "prog"; then -+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs" -+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ fi -+ fi -+ dependency_libs="$newdependency_libs" -+ if test "$pass" = dlpreopen; then -+ # Link the dlpreopened libraries before other libraries -+ for deplib in $save_deplibs; do -+ deplibs="$deplib $deplibs" -+ done -+ fi -+ if test "$pass" != dlopen; then -+ if test "$pass" != conv; then -+ # Make sure lib_search_path contains only unique directories. -+ lib_search_path= -+ for dir in $newlib_search_path; do -+ case "$lib_search_path " in -+ *" $dir "*) ;; -+ *) lib_search_path="$lib_search_path $dir" ;; -+ esac -+ done -+ newlib_search_path= -+ fi -+ -+ if test "$linkmode,$pass" != "prog,link"; then -+ vars="deplibs" -+ else -+ vars="compile_deplibs finalize_deplibs" -+ fi -+ for var in $vars dependency_libs; do -+ # Add libraries to $var in reverse order -+ eval tmp_libs=\"\$$var\" -+ new_libs= -+ for deplib in $tmp_libs; do -+ # FIXME: Pedantically, this is the right thing to do, so -+ # that some nasty dependency loop isn't accidentally -+ # broken: -+ #new_libs="$deplib $new_libs" -+ # Pragmatically, this seems to cause very few problems in -+ # practice: -+ case $deplib in -+ -L*) new_libs="$deplib $new_libs" ;; -+ -R*) ;; -+ *) -+ # And here is the reason: when a library appears more -+ # than once as an explicit dependence of a library, or -+ # is implicitly linked in more than once by the -+ # compiler, it is considered special, and multiple -+ # occurrences thereof are not removed. Compare this -+ # with having the same library being listed as a -+ # dependency of multiple other libraries: in this case, -+ # we know (pedantically, we assume) the library does not -+ # need to be listed more than once, so we keep only the -+ # last copy. This is not always right, but it is rare -+ # enough that we require users that really mean to play -+ # such unportable linking tricks to link the library -+ # using -Wl,-lname, so that libtool does not consider it -+ # for duplicate removal. -+ case " $specialdeplibs " in -+ *" $deplib "*) new_libs="$deplib $new_libs" ;; -+ *) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$deplib $new_libs" ;; -+ esac -+ ;; -+ esac -+ ;; -+ esac -+ done -+ tmp_libs= -+ for deplib in $new_libs; do -+ case $deplib in -+ -L*) -+ case " $tmp_libs " in -+ *" $deplib "*) ;; -+ *) tmp_libs="$tmp_libs $deplib" ;; -+ esac -+ ;; -+ *) tmp_libs="$tmp_libs $deplib" ;; -+ esac -+ done -+ eval $var=\"$tmp_libs\" -+ done # for var -+ fi -+ # Last step: remove runtime libs from dependency_libs -+ # (they stay in deplibs) -+ tmp_libs= -+ for i in $dependency_libs ; do -+ case " $predeps $postdeps $compiler_lib_search_path " in -+ *" $i "*) -+ i="" -+ ;; -+ esac -+ if test -n "$i" ; then -+ tmp_libs="$tmp_libs $i" -+ fi -+ done -+ dependency_libs=$tmp_libs -+ done # for pass -+ if test "$linkmode" = prog; then -+ dlfiles="$newdlfiles" -+ fi -+ if test "$linkmode" = prog || test "$linkmode" = lib; then -+ dlprefiles="$newdlprefiles" -+ fi -+ -+ case $linkmode in -+ oldlib) -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ func_warning "\`-dlopen' is ignored for archives" -+ fi -+ -+ case " $deplibs" in -+ *\ -l* | *\ -L*) -+ func_warning "\`-l' and \`-L' are ignored for archives" ;; -+ esac -+ -+ test -n "$rpath" && \ -+ func_warning "\`-rpath' is ignored for archives" -+ -+ test -n "$xrpath" && \ -+ func_warning "\`-R' is ignored for archives" -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info/-version-number' is ignored for archives" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for archives" -+ -+ test -n "$export_symbols$export_symbols_regex" && \ -+ func_warning "\`-export-symbols' is ignored for archives" -+ -+ # Now set the variables for building old libraries. -+ build_libtool_libs=no -+ oldlibs="$output" -+ objs="$objs$old_deplibs" -+ ;; -+ -+ lib) -+ # Make sure we only generate libraries of the form `libNAME.la'. -+ case $outputname in -+ lib*) -+ func_stripname 'lib' '.la' "$outputname" -+ name=$func_stripname_result -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ ;; -+ *) -+ test "$module" = no && \ -+ func_fatal_help "libtool library \`$output' must begin with \`lib'" -+ -+ if test "$need_lib_prefix" != no; then -+ # Add the "lib" prefix for modules if required -+ func_stripname '' '.la' "$outputname" -+ name=$func_stripname_result -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ else -+ func_stripname '' '.la' "$outputname" -+ libname=$func_stripname_result -+ fi -+ ;; -+ esac -+ -+ if test -n "$objs"; then -+ if test "$deplibs_check_method" != pass_all; then -+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" -+ else -+ $ECHO -+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool" -+ $ECHO "*** objects $objs is not portable!" -+ libobjs="$libobjs $objs" -+ fi -+ fi -+ -+ test "$dlself" != no && \ -+ func_warning "\`-dlopen self' is ignored for libtool libraries" -+ -+ set dummy $rpath -+ shift -+ test "$#" -gt 1 && \ -+ func_warning "ignoring multiple \`-rpath's for a libtool library" -+ -+ install_libdir="$1" -+ -+ oldlibs= -+ if test -z "$rpath"; then -+ if test "$build_libtool_libs" = yes; then -+ # Building a libtool convenience library. -+ # Some compilers have problems with a `.al' extension so -+ # convenience libraries should have the same extension an -+ # archive normally would. -+ oldlibs="$output_objdir/$libname.$libext $oldlibs" -+ build_libtool_libs=convenience -+ build_old_libs=yes -+ fi -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for convenience libraries" -+ else -+ -+ # Parse the version information argument. -+ save_ifs="$IFS"; IFS=':' -+ set dummy $vinfo 0 0 0 -+ shift -+ IFS="$save_ifs" -+ -+ test -n "$7" && \ -+ func_fatal_help "too many parameters to \`-version-info'" -+ -+ # convert absolute version numbers to libtool ages -+ # this retains compatibility with .la files and attempts -+ # to make the code below a bit more comprehensible -+ -+ case $vinfo_number in -+ yes) -+ number_major="$1" -+ number_minor="$2" -+ number_revision="$3" -+ # -+ # There are really only two kinds -- those that -+ # use the current revision as the major version -+ # and those that subtract age and use age as -+ # a minor version. But, then there is irix -+ # which has an extra 1 added just for fun -+ # -+ case $version_type in -+ darwin|linux|osf|windows|none) -+ func_arith $number_major + $number_minor -+ current=$func_arith_result -+ age="$number_minor" -+ revision="$number_revision" -+ ;; -+ freebsd-aout|freebsd-elf|sunos) -+ current="$number_major" -+ revision="$number_minor" -+ age="0" -+ ;; -+ irix|nonstopux) -+ func_arith $number_major + $number_minor -+ current=$func_arith_result -+ age="$number_minor" -+ revision="$number_minor" -+ lt_irix_increment=no -+ ;; -+ esac -+ ;; -+ no) -+ current="$1" -+ revision="$2" -+ age="$3" -+ ;; -+ esac -+ -+ # Check that each of the things are valid numbers. -+ case $current in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "CURRENT \`$current' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ case $revision in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "REVISION \`$revision' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ case $age in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "AGE \`$age' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ if test "$age" -gt "$current"; then -+ func_error "AGE \`$age' is greater than the current interface number \`$current'" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ fi -+ -+ # Calculate the version variables. -+ major= -+ versuffix= -+ verstring= -+ case $version_type in -+ none) ;; -+ -+ darwin) -+ # Like Linux, but with the current version available in -+ # verstring for coding it into the library header -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix="$major.$age.$revision" -+ # Darwin ld doesn't like 0 for these options... -+ func_arith $current + 1 -+ minor_current=$func_arith_result -+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" -+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" -+ ;; -+ -+ freebsd-aout) -+ major=".$current" -+ versuffix=".$current.$revision"; -+ ;; -+ -+ freebsd-elf) -+ major=".$current" -+ versuffix=".$current" -+ ;; -+ -+ irix | nonstopux) -+ if test "X$lt_irix_increment" = "Xno"; then -+ func_arith $current - $age -+ else -+ func_arith $current - $age + 1 -+ fi -+ major=$func_arith_result -+ -+ case $version_type in -+ nonstopux) verstring_prefix=nonstopux ;; -+ *) verstring_prefix=sgi ;; -+ esac -+ verstring="$verstring_prefix$major.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$revision -+ while test "$loop" -ne 0; do -+ func_arith $revision - $loop -+ iface=$func_arith_result -+ func_arith $loop - 1 -+ loop=$func_arith_result -+ verstring="$verstring_prefix$major.$iface:$verstring" -+ done -+ -+ # Before this point, $major must not contain `.'. -+ major=.$major -+ versuffix="$major.$revision" -+ ;; -+ -+ linux) -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix="$major.$age.$revision" -+ ;; -+ -+ osf) -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix=".$current.$age.$revision" -+ verstring="$current.$age.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$age -+ while test "$loop" -ne 0; do -+ func_arith $current - $loop -+ iface=$func_arith_result -+ func_arith $loop - 1 -+ loop=$func_arith_result -+ verstring="$verstring:${iface}.0" -+ done -+ -+ # Make executables depend on our current version. -+ verstring="$verstring:${current}.0" -+ ;; -+ -+ qnx) -+ major=".$current" -+ versuffix=".$current" -+ ;; -+ -+ sunos) -+ major=".$current" -+ versuffix=".$current.$revision" -+ ;; -+ -+ windows) -+ # Use '-' rather than '.', since we only want one -+ # extension on DOS 8.3 filesystems. -+ func_arith $current - $age -+ major=$func_arith_result -+ versuffix="-$major" -+ ;; -+ -+ *) -+ func_fatal_configuration "unknown library version type \`$version_type'" -+ ;; -+ esac -+ -+ # Clear the version info if we defaulted, and they specified a release. -+ if test -z "$vinfo" && test -n "$release"; then -+ major= -+ case $version_type in -+ darwin) -+ # we can't check for "0.0" in archive_cmds due to quoting -+ # problems, so we reset it completely -+ verstring= -+ ;; -+ *) -+ verstring="0.0" -+ ;; -+ esac -+ if test "$need_version" = no; then -+ versuffix= -+ else -+ versuffix=".0.0" -+ fi -+ fi -+ -+ # Remove version info from name if versioning should be avoided -+ if test "$avoid_version" = yes && test "$need_version" = no; then -+ major= -+ versuffix= -+ verstring="" -+ fi -+ -+ # Check to see if the archive will have undefined symbols. -+ if test "$allow_undefined" = yes; then -+ if test "$allow_undefined_flag" = unsupported; then -+ func_warning "undefined symbols not allowed in $host shared libraries" -+ build_libtool_libs=no -+ build_old_libs=yes -+ fi -+ else -+ # Don't allow undefined symbols. -+ allow_undefined_flag="$no_undefined_flag" -+ fi -+ -+ fi -+ -+ func_generate_dlsyms "$libname" "$libname" "yes" -+ libobjs="$libobjs $symfileobj" -+ test "X$libobjs" = "X " && libobjs= -+ -+ if test "$mode" != relink; then -+ # Remove our outputs, but don't remove object files since they -+ # may have been created when compiling PIC objects. -+ removelist= -+ tempremovelist=`$ECHO "$output_objdir/*"` -+ for p in $tempremovelist; do -+ case $p in -+ *.$objext | *.gcno) -+ ;; -+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) -+ if test "X$precious_files_regex" != "X"; then -+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 -+ then -+ continue -+ fi -+ fi -+ removelist="$removelist $p" -+ ;; -+ *) ;; -+ esac -+ done -+ test -n "$removelist" && \ -+ func_show_eval "${RM}r \$removelist" -+ fi -+ -+ # Now set the variables for building old libraries. -+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then -+ oldlibs="$oldlibs $output_objdir/$libname.$libext" -+ -+ # Transform .lo files to .o files. -+ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` -+ fi -+ -+ # Eliminate all temporary directories. -+ #for path in $notinst_path; do -+ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` -+ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` -+ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` -+ #done -+ -+ if test -n "$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ temp_xrpath= -+ for libdir in $xrpath; do -+ temp_xrpath="$temp_xrpath -R$libdir" -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" ;; -+ esac -+ done -+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then -+ dependency_libs="$temp_xrpath $dependency_libs" -+ fi -+ fi -+ -+ # Make sure dlfiles contains only unique files that won't be dlpreopened -+ old_dlfiles="$dlfiles" -+ dlfiles= -+ for lib in $old_dlfiles; do -+ case " $dlprefiles $dlfiles " in -+ *" $lib "*) ;; -+ *) dlfiles="$dlfiles $lib" ;; -+ esac -+ done -+ -+ # Make sure dlprefiles contains only unique files -+ old_dlprefiles="$dlprefiles" -+ dlprefiles= -+ for lib in $old_dlprefiles; do -+ case "$dlprefiles " in -+ *" $lib "*) ;; -+ *) dlprefiles="$dlprefiles $lib" ;; -+ esac -+ done -+ -+ if test "$build_libtool_libs" = yes; then -+ if test -n "$rpath"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) -+ # these systems don't actually have a c library (as such)! -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C library is in the System framework -+ deplibs="$deplibs System.ltframework" -+ ;; -+ *-*-netbsd*) -+ # Don't link with libc until the a.out ld.so is fixed. -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ ;; -+ *) -+ # Add libc to deplibs on all other systems if necessary. -+ if test "$build_libtool_need_lc" = "yes"; then -+ deplibs="$deplibs -lc" -+ fi -+ ;; -+ esac -+ fi -+ -+ # Transform deplibs into only deplibs that can be linked in shared. -+ name_save=$name -+ libname_save=$libname -+ release_save=$release -+ versuffix_save=$versuffix -+ major_save=$major -+ # I'm not sure if I'm treating the release correctly. I think -+ # release should show up in the -l (ie -lgmp5) so we don't want to -+ # add it in twice. Is that correct? -+ release="" -+ versuffix="" -+ major="" -+ newdeplibs= -+ droppeddeps=no -+ case $deplibs_check_method in -+ pass_all) -+ # Don't check for shared/static. Everything works. -+ # This might be a little naive. We might want to check -+ # whether the library exists or not. But this is on -+ # osf3 & osf4 and I'm not really sure... Just -+ # implementing what was already the behavior. -+ newdeplibs=$deplibs -+ ;; -+ test_compile) -+ # This code stresses the "libraries are programs" paradigm to its -+ # limits. Maybe even breaks it. We compile a program, linking it -+ # against the deplibs as a proxy for the library. Then we can check -+ # whether they linked in statically or dynamically with ldd. -+ $opt_dry_run || $RM conftest.c -+ cat > conftest.c </dev/null` -+ for potent_lib in $potential_libs; do -+ # Follow soft links. -+ if ls -lLd "$potent_lib" 2>/dev/null | -+ $GREP " -> " >/dev/null; then -+ continue -+ fi -+ # The statement above tries to avoid entering an -+ # endless loop below, in case of cyclic links. -+ # We might still enter an endless loop, since a link -+ # loop can be closed while we follow links, -+ # but so what? -+ potlib="$potent_lib" -+ while test -h "$potlib" 2>/dev/null; do -+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` -+ case $potliblink in -+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; -+ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; -+ esac -+ done -+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | -+ $SED -e 10q | -+ $EGREP "$file_magic_regex" > /dev/null; then -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ $ECHO -+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have" -+ $ECHO "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)" -+ else -+ $ECHO "*** with $libname and none of the candidates passed a file format test" -+ $ECHO "*** using a file magic. Last file checked: $potlib" -+ fi -+ fi -+ ;; -+ *) -+ # Add a -L argument. -+ newdeplibs="$newdeplibs $a_deplib" -+ ;; -+ esac -+ done # Gone through all deplibs. -+ ;; -+ match_pattern*) -+ set dummy $deplibs_check_method; shift -+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -+ for a_deplib in $deplibs; do -+ case $a_deplib in -+ -l*) -+ func_stripname -l '' "$a_deplib" -+ name=$func_stripname_result -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $a_deplib "*) -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ ;; -+ esac -+ fi -+ if test -n "$a_deplib" ; then -+ libname=`eval "\\$ECHO \"$libname_spec\""` -+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do -+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` -+ for potent_lib in $potential_libs; do -+ potlib="$potent_lib" # see symlink-check above in file_magic test -+ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ -+ $EGREP "$match_pattern_regex" > /dev/null; then -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ $ECHO -+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -+ $ECHO "*** I have the capability to make that library automatically link in when" -+ $ECHO "*** you link to this library. But I can only do this if you have a" -+ $ECHO "*** shared version of the library, which you do not appear to have" -+ $ECHO "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" -+ else -+ $ECHO "*** with $libname and none of the candidates passed a file format test" -+ $ECHO "*** using a regex pattern. Last file checked: $potlib" -+ fi -+ fi -+ ;; -+ *) -+ # Add a -L argument. -+ newdeplibs="$newdeplibs $a_deplib" -+ ;; -+ esac -+ done # Gone through all deplibs. -+ ;; -+ none | unknown | *) -+ newdeplibs="" -+ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -+ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ for i in $predeps $postdeps ; do -+ # can't use Xsed below, because $i might contain '/' -+ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` -+ done -+ fi -+ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | -+ $GREP . >/dev/null; then -+ $ECHO -+ if test "X$deplibs_check_method" = "Xnone"; then -+ $ECHO "*** Warning: inter-library dependencies are not supported in this platform." -+ else -+ $ECHO "*** Warning: inter-library dependencies are not known to be supported." -+ fi -+ $ECHO "*** All declared inter-library dependencies are being dropped." -+ droppeddeps=yes -+ fi -+ ;; -+ esac -+ versuffix=$versuffix_save -+ major=$major_save -+ release=$release_save -+ libname=$libname_save -+ name=$name_save -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library with the System framework -+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ ;; -+ esac -+ -+ if test "$droppeddeps" = yes; then -+ if test "$module" = yes; then -+ $ECHO -+ $ECHO "*** Warning: libtool could not satisfy all declared inter-library" -+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create" -+ $ECHO "*** a static module, that should work as long as the dlopening" -+ $ECHO "*** application is linked with the -dlopen flag." -+ if test -z "$global_symbol_pipe"; then -+ $ECHO -+ $ECHO "*** However, this would only work if libtool was able to extract symbol" -+ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ $ECHO "*** not find such a program. So, this module is probably useless." -+ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ else -+ $ECHO "*** The inter-library dependencies that have been dropped here will be" -+ $ECHO "*** automatically added whenever a program is linked with this library" -+ $ECHO "*** or is declared to -dlopen it." -+ -+ if test "$allow_undefined" = no; then -+ $ECHO -+ $ECHO "*** Since this library must not contain undefined symbols," -+ $ECHO "*** because either the platform does not support them or" -+ $ECHO "*** it was explicitly requested with -no-undefined," -+ $ECHO "*** libtool will only create a static version of it." -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ fi -+ fi -+ # Done checking deplibs! -+ deplibs=$newdeplibs -+ fi -+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" -+ case $host in -+ *-*-darwin*) -+ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ ;; -+ esac -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ deplibs="$new_libs" -+ -+ # All the library-specific variables (install_libdir is set above). -+ library_names= -+ old_library= -+ dlname= -+ -+ # Test again, we may have decided not to build it any more -+ if test "$build_libtool_libs" = yes; then -+ if test "$hardcode_into_libs" = yes; then -+ # Hardcode the library paths -+ hardcode_libdirs= -+ dep_rpath= -+ rpath="$finalize_rpath" -+ test "$mode" != relink && rpath="$compile_rpath$rpath" -+ for libdir in $rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ dep_rpath="$dep_rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) perm_rpath="$perm_rpath $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ if test -n "$hardcode_libdir_flag_spec_ld"; then -+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" -+ else -+ eval dep_rpath=\"$hardcode_libdir_flag_spec\" -+ fi -+ fi -+ if test -n "$runpath_var" && test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" -+ fi -+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" -+ fi -+ -+ shlibpath="$finalize_shlibpath" -+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" -+ if test -n "$shlibpath"; then -+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" -+ fi -+ -+ # Get the real and link names of the library. -+ eval shared_ext=\"$shrext_cmds\" -+ eval library_names=\"$library_names_spec\" -+ set dummy $library_names -+ shift -+ realname="$1" -+ shift -+ -+ if test -n "$soname_spec"; then -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ if test -z "$dlname"; then -+ dlname=$soname -+ fi -+ -+ lib="$output_objdir/$realname" -+ linknames= -+ for link -+ do -+ linknames="$linknames $link" -+ done -+ -+ # Use standard objects if they are pic -+ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ test "X$libobjs" = "X " && libobjs= -+ -+ delfiles= -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" -+ export_symbols="$output_objdir/$libname.uexp" -+ delfiles="$delfiles $export_symbols" -+ fi -+ -+ orig_export_symbols= -+ case $host_os in -+ cygwin* | mingw* | cegcc*) -+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then -+ # exporting using user supplied symfile -+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then -+ # and it's NOT already a .def file. Must figure out -+ # which of the given symbols are data symbols and tag -+ # them as such. So, trigger use of export_symbols_cmds. -+ # export_symbols gets reassigned inside the "prepare -+ # the list of exported symbols" if statement, so the -+ # include_expsyms logic still works. -+ orig_export_symbols="$export_symbols" -+ export_symbols= -+ always_export_symbols=yes -+ fi -+ fi -+ ;; -+ esac -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then -+ func_verbose "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $opt_dry_run || $RM $export_symbols -+ cmds=$export_symbols_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ func_len " $cmd" -+ len=$func_len_result -+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ func_show_eval "$cmd" 'exit $?' -+ skipped_export=false -+ else -+ # The command line is too long to execute in one step. -+ func_verbose "using reloadable object file for export list..." -+ skipped_export=: -+ # Break out early, otherwise skipped_export may be -+ # set to false by a later but shorter cmd. -+ break -+ fi -+ done -+ IFS="$save_ifs" -+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then -+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ fi -+ -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ tmp_export_symbols="$export_symbols" -+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' -+ fi -+ -+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then -+ # The given exports_symbols file has to be filtered, so filter it. -+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" -+ # FIXME: $output_objdir/$libname.filter potentially contains lots of -+ # 's' commands which not all seds can handle. GNU sed should be fine -+ # though. Also, the filter scales superlinearly with the number of -+ # global variables. join(1) would be nice here, but unfortunately -+ # isn't a blessed tool. -+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" -+ export_symbols=$output_objdir/$libname.def -+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols -+ fi -+ -+ tmp_deplibs= -+ for test_deplib in $deplibs; do -+ case " $convenience " in -+ *" $test_deplib "*) ;; -+ *) -+ tmp_deplibs="$tmp_deplibs $test_deplib" -+ ;; -+ esac -+ done -+ deplibs="$tmp_deplibs" -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec" && -+ test "$compiler_needs_object" = yes && -+ test -z "$libobjs"; then -+ # extract the archives, so we have objects to list. -+ # TODO: could optimize this to just extract one archive. -+ whole_archive_flag_spec= -+ fi -+ if test -n "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ test "X$libobjs" = "X " && libobjs= -+ else -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $convenience -+ libobjs="$libobjs $func_extract_archives_result" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ fi -+ -+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then -+ eval flag=\"$thread_safe_flag_spec\" -+ linker_flags="$linker_flags $flag" -+ fi -+ -+ # Make a backup of the uninstalled library when relinking -+ if test "$mode" = relink; then -+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? -+ fi -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ eval test_cmds=\"$module_expsym_cmds\" -+ cmds=$module_expsym_cmds -+ else -+ eval test_cmds=\"$module_cmds\" -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ eval test_cmds=\"$archive_expsym_cmds\" -+ cmds=$archive_expsym_cmds -+ else -+ eval test_cmds=\"$archive_cmds\" -+ cmds=$archive_cmds -+ fi -+ fi -+ -+ if test "X$skipped_export" != "X:" && -+ func_len " $test_cmds" && -+ len=$func_len_result && -+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ : -+ else -+ # The command line is too long to link in one step, link piecewise -+ # or, if using GNU ld and skipped_export is not :, use a linker -+ # script. -+ -+ # Save the value of $output and $libobjs because we want to -+ # use them later. If we have whole_archive_flag_spec, we -+ # want to use save_libobjs as it was before -+ # whole_archive_flag_spec was expanded, because we can't -+ # assume the linker understands whole_archive_flag_spec. -+ # This may have to be revisited, in case too many -+ # convenience libraries get linked in and end up exceeding -+ # the spec. -+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ fi -+ save_output=$output -+ output_la=`$ECHO "X$output" | $Xsed -e "$basename"` -+ -+ # Clear the reloadable object creation command queue and -+ # initialize k to one. -+ test_cmds= -+ concat_cmds= -+ objlist= -+ last_robj= -+ k=1 -+ -+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then -+ output=${output_objdir}/${output_la}.lnkscript -+ func_verbose "creating GNU ld script: $output" -+ $ECHO 'INPUT (' > $output -+ for obj in $save_libobjs -+ do -+ $ECHO "$obj" >> $output -+ done -+ $ECHO ')' >> $output -+ delfiles="$delfiles $output" -+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then -+ output=${output_objdir}/${output_la}.lnk -+ func_verbose "creating linker input file list: $output" -+ : > $output -+ set x $save_libobjs -+ shift -+ firstobj= -+ if test "$compiler_needs_object" = yes; then -+ firstobj="$1 " -+ shift -+ fi -+ for obj -+ do -+ $ECHO "$obj" >> $output -+ done -+ delfiles="$delfiles $output" -+ output=$firstobj\"$file_list_spec$output\" -+ else -+ if test -n "$save_libobjs"; then -+ func_verbose "creating reloadable object files..." -+ output=$output_objdir/$output_la-${k}.$objext -+ eval test_cmds=\"$reload_cmds\" -+ func_len " $test_cmds" -+ len0=$func_len_result -+ len=$len0 -+ -+ # Loop over the list of objects to be linked. -+ for obj in $save_libobjs -+ do -+ func_len " $obj" -+ func_arith $len + $func_len_result -+ len=$func_arith_result -+ if test "X$objlist" = X || -+ test "$len" -lt "$max_cmd_len"; then -+ func_append objlist " $obj" -+ else -+ # The command $test_cmds is almost too long, add a -+ # command to the queue. -+ if test "$k" -eq 1 ; then -+ # The first file doesn't have a previous command to add. -+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\" -+ else -+ # All subsequent reloadable object files will link in -+ # the last one created. -+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" -+ fi -+ last_robj=$output_objdir/$output_la-${k}.$objext -+ func_arith $k + 1 -+ k=$func_arith_result -+ output=$output_objdir/$output_la-${k}.$objext -+ objlist=$obj -+ func_len " $last_robj" -+ func_arith $len0 + $func_len_result -+ len=$func_arith_result -+ fi -+ done -+ # Handle the remaining objects by creating one last -+ # reloadable object file. All subsequent reloadable object -+ # files will link in the last one created. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" -+ if test -n "$last_robj"; then -+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" -+ fi -+ delfiles="$delfiles $output" -+ -+ else -+ output= -+ fi -+ -+ if ${skipped_export-false}; then -+ func_verbose "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $opt_dry_run || $RM $export_symbols -+ libobjs=$output -+ # Append the command to create the export file. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" -+ if test -n "$last_robj"; then -+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" -+ fi -+ fi -+ -+ test -n "$save_libobjs" && -+ func_verbose "creating a temporary reloadable object file: $output" -+ -+ # Loop through the commands generated above and execute them. -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $concat_cmds; do -+ IFS="$save_ifs" -+ $opt_silent || { -+ func_quote_for_expand "$cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ $opt_dry_run || eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ ( cd "$output_objdir" && \ -+ $RM "${realname}T" && \ -+ $MV "${realname}U" "$realname" ) -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then -+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ -+ if ${skipped_export-false}; then -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ tmp_export_symbols="$export_symbols" -+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -+ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' -+ fi -+ -+ if test -n "$orig_export_symbols"; then -+ # The given exports_symbols file has to be filtered, so filter it. -+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" -+ # FIXME: $output_objdir/$libname.filter potentially contains lots of -+ # 's' commands which not all seds can handle. GNU sed should be fine -+ # though. Also, the filter scales superlinearly with the number of -+ # global variables. join(1) would be nice here, but unfortunately -+ # isn't a blessed tool. -+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -+ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" -+ export_symbols=$output_objdir/$libname.def -+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols -+ fi -+ fi -+ -+ libobjs=$output -+ # Restore the value of output. -+ output=$save_output -+ -+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ # Expand the library linking commands again to reset the -+ # value of $libobjs for piecewise linking. -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ cmds=$module_expsym_cmds -+ else -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ cmds=$archive_expsym_cmds -+ else -+ cmds=$archive_cmds -+ fi -+ fi -+ fi -+ -+ if test -n "$delfiles"; then -+ # Append the command to remove temporary files to $cmds. -+ eval cmds=\"\$cmds~\$RM $delfiles\" -+ fi -+ -+ # Add any objects from preloaded convenience libraries -+ if test -n "$dlprefiles"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $dlprefiles -+ libobjs="$libobjs $func_extract_archives_result" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $opt_silent || { -+ func_quote_for_expand "$cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ $opt_dry_run || eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ ( cd "$output_objdir" && \ -+ $RM "${realname}T" && \ -+ $MV "${realname}U" "$realname" ) -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? -+ -+ if test -n "$convenience"; then -+ if test -z "$whole_archive_flag_spec"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ # Create links to the real library. -+ for linkname in $linknames; do -+ if test "$realname" != "$linkname"; then -+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' -+ fi -+ done -+ -+ # If -module or -export-dynamic was specified, set the dlname. -+ if test "$module" = yes || test "$export_dynamic" = yes; then -+ # On all known operating systems, these are identical. -+ dlname="$soname" -+ fi -+ fi -+ ;; -+ -+ obj) -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ func_warning "\`-dlopen' is ignored for objects" -+ fi -+ -+ case " $deplibs" in -+ *\ -l* | *\ -L*) -+ func_warning "\`-l' and \`-L' are ignored for objects" ;; -+ esac -+ -+ test -n "$rpath" && \ -+ func_warning "\`-rpath' is ignored for objects" -+ -+ test -n "$xrpath" && \ -+ func_warning "\`-R' is ignored for objects" -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info' is ignored for objects" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for objects" -+ -+ case $output in -+ *.lo) -+ test -n "$objs$old_deplibs" && \ -+ func_fatal_error "cannot build library object \`$output' from non-libtool objects" -+ -+ libobj=$output -+ func_lo2o "$libobj" -+ obj=$func_lo2o_result -+ ;; -+ *) -+ libobj= -+ obj="$output" -+ ;; -+ esac -+ -+ # Delete the old objects. -+ $opt_dry_run || $RM $obj $libobj -+ -+ # Objects from convenience libraries. This assumes -+ # single-version convenience libraries. Whenever we create -+ # different ones for PIC/non-PIC, this we'll have to duplicate -+ # the extraction. -+ reload_conv_objs= -+ gentop= -+ # reload_cmds runs $LD directly, so let us get rid of -+ # -Wl from whole_archive_flag_spec and hope we can get by with -+ # turning comma into space.. -+ wl= -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec"; then -+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" -+ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` -+ else -+ gentop="$output_objdir/${obj}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" -+ fi -+ fi -+ -+ # Create the old-style object. -+ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test -+ -+ output="$obj" -+ func_execute_cmds "$reload_cmds" 'exit $?' -+ -+ # Exit if we aren't doing a library object file. -+ if test -z "$libobj"; then -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$build_libtool_libs" != yes; then -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ # Create an invalid libtool object if no PIC, so that we don't -+ # accidentally link it into a program. -+ # $show "echo timestamp > $libobj" -+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test -n "$pic_flag" || test "$pic_mode" != default; then -+ # Only do commands if we really have different PIC objects. -+ reload_objs="$libobjs $reload_conv_objs" -+ output="$libobj" -+ func_execute_cmds "$reload_cmds" 'exit $?' -+ fi -+ -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ exit $EXIT_SUCCESS -+ ;; -+ -+ prog) -+ case $host in -+ *cygwin*) func_stripname '' '.exe' "$output" -+ output=$func_stripname_result.exe;; -+ esac -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info' is ignored for programs" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for programs" -+ -+ test "$preload" = yes \ -+ && test "$dlopen_support" = unknown \ -+ && test "$dlopen_self" = unknown \ -+ && test "$dlopen_self_static" = unknown && \ -+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library is the System framework -+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` -+ ;; -+ esac -+ -+ case $host in -+ *-*-darwin*) -+ # Don't allow lazy linking, it breaks C++ global constructors -+ # But is supposedly fixed on 10.4 or later (yay!). -+ if test "$tagname" = CXX ; then -+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in -+ 10.[0123]) -+ compile_command="$compile_command ${wl}-bind_at_load" -+ finalize_command="$finalize_command ${wl}-bind_at_load" -+ ;; -+ esac -+ fi -+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" -+ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` -+ ;; -+ esac -+ -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $compile_deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $compile_deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ compile_deplibs="$new_libs" -+ -+ -+ compile_command="$compile_command $compile_deplibs" -+ finalize_command="$finalize_command $finalize_deplibs" -+ -+ if test -n "$rpath$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ for libdir in $rpath $xrpath; do -+ # This is the magic to use -rpath. -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" ;; -+ esac -+ done -+ fi -+ -+ # Now hardcode the library paths -+ rpath= -+ hardcode_libdirs= -+ for libdir in $compile_rpath $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ rpath="$rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) perm_rpath="$perm_rpath $libdir" ;; -+ esac -+ fi -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$libdir:"*) ;; -+ ::) dllsearchpath=$libdir;; -+ *) dllsearchpath="$dllsearchpath:$libdir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ ::) dllsearchpath=$testbindir;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac -+ ;; -+ esac -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ compile_rpath="$rpath" -+ -+ rpath= -+ hardcode_libdirs= -+ for libdir in $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ rpath="$rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$finalize_perm_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ finalize_rpath="$rpath" -+ -+ if test -n "$libobjs" && test "$build_old_libs" = yes; then -+ # Transform all the library objects into standard objects. -+ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ fi -+ -+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no" -+ -+ # template prelinking step -+ if test -n "$prelink_cmds"; then -+ func_execute_cmds "$prelink_cmds" 'exit $?' -+ fi -+ -+ wrappers_required=yes -+ case $host in -+ *cygwin* | *mingw* ) -+ if test "$build_libtool_libs" != yes; then -+ wrappers_required=no -+ fi -+ ;; -+ *cegcc) -+ # Disable wrappers for cegcc, we are cross compiling anyway. -+ wrappers_required=no -+ ;; -+ *) -+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then -+ wrappers_required=no -+ fi -+ ;; -+ esac -+ if test "$wrappers_required" = no; then -+ # Replace the output file specification. -+ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ link_command="$compile_command$compile_rpath" -+ -+ # We have no uninstalled library dependencies, so finalize right now. -+ exit_status=0 -+ func_show_eval "$link_command" 'exit_status=$?' -+ -+ # Delete the generated files. -+ if test -f "$output_objdir/${outputname}S.${objext}"; then -+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' -+ fi -+ -+ exit $exit_status -+ fi -+ -+ if test -n "$compile_shlibpath$finalize_shlibpath"; then -+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" -+ fi -+ if test -n "$finalize_shlibpath"; then -+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" -+ fi -+ -+ compile_var= -+ finalize_var= -+ if test -n "$runpath_var"; then -+ if test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ if test -n "$finalize_perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $finalize_perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ fi -+ -+ if test "$no_install" = yes; then -+ # We don't need to create a wrapper script. -+ link_command="$compile_var$compile_command$compile_rpath" -+ # Replace the output file specification. -+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ # Delete the old output file. -+ $opt_dry_run || $RM $output -+ # Link the executable and exit -+ func_show_eval "$link_command" 'exit $?' -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$hardcode_action" = relink; then -+ # Fast installation is not supported -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ -+ func_warning "this platform does not like uninstalled shared libraries" -+ func_warning "\`$output' will be relinked during installation" -+ else -+ if test "$fast_install" != no; then -+ link_command="$finalize_var$compile_command$finalize_rpath" -+ if test "$fast_install" = yes; then -+ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` -+ else -+ # fast_install is set to needless -+ relink_command= -+ fi -+ else -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ fi -+ fi -+ -+ # Replace the output file specification. -+ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` -+ -+ # Delete the old output files. -+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname -+ -+ func_show_eval "$link_command" 'exit $?' -+ -+ # Now create the wrapper script. -+ func_verbose "creating $output" -+ -+ # Quote the relink command for shipping. -+ if test -n "$relink_command"; then -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ func_quote_for_eval "$var_value" -+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" -+ fi -+ done -+ relink_command="(cd `pwd`; $relink_command)" -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ fi -+ -+ # Quote $ECHO for shipping. -+ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then -+ case $progpath in -+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; -+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; -+ esac -+ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` -+ else -+ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` -+ fi -+ -+ # Only actually do things if not in dry run mode. -+ $opt_dry_run || { -+ # win32 will think the script is a binary if it has -+ # a .exe suffix, so we strip it off here. -+ case $output in -+ *.exe) func_stripname '' '.exe' "$output" -+ output=$func_stripname_result ;; -+ esac -+ # test for cygwin because mv fails w/o .exe extensions -+ case $host in -+ *cygwin*) -+ exeext=.exe -+ func_stripname '' '.exe' "$outputname" -+ outputname=$func_stripname_result ;; -+ *) exeext= ;; -+ esac -+ case $host in -+ *cygwin* | *mingw* ) -+ func_dirname_and_basename "$output" "" "." -+ output_name=$func_basename_result -+ output_path=$func_dirname_result -+ cwrappersource="$output_path/$objdir/lt-$output_name.c" -+ cwrapper="$output_path/$output_name.exe" -+ $RM $cwrappersource $cwrapper -+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 -+ -+ func_emit_cwrapperexe_src > $cwrappersource -+ -+ # The wrapper executable is built using the $host compiler, -+ # because it contains $host paths and files. If cross- -+ # compiling, it, like the target executable, must be -+ # executed on the $host or under an emulation environment. -+ $opt_dry_run || { -+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource -+ $STRIP $cwrapper -+ } -+ -+ # Now, create the wrapper script for func_source use: -+ func_ltwrapper_scriptname $cwrapper -+ $RM $func_ltwrapper_scriptname_result -+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 -+ $opt_dry_run || { -+ # note: this script will not be executed, so do not chmod. -+ if test "x$build" = "x$host" ; then -+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result -+ else -+ func_emit_wrapper no > $func_ltwrapper_scriptname_result -+ fi -+ } -+ ;; -+ * ) -+ $RM $output -+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 -+ -+ func_emit_wrapper no > $output -+ chmod +x $output -+ ;; -+ esac -+ } -+ exit $EXIT_SUCCESS -+ ;; -+ esac -+ -+ # See if we need to build an old-fashioned archive. -+ for oldlib in $oldlibs; do -+ -+ if test "$build_libtool_libs" = convenience; then -+ oldobjs="$libobjs_save $symfileobj" -+ addlibs="$convenience" -+ build_libtool_libs=no -+ else -+ if test "$build_libtool_libs" = module; then -+ oldobjs="$libobjs_save" -+ build_libtool_libs=no -+ else -+ oldobjs="$old_deplibs $non_pic_objects" -+ if test "$preload" = yes && test -f "$symfileobj"; then -+ oldobjs="$oldobjs $symfileobj" -+ fi -+ fi -+ addlibs="$old_convenience" -+ fi -+ -+ if test -n "$addlibs"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $addlibs -+ oldobjs="$oldobjs $func_extract_archives_result" -+ fi -+ -+ # Do each command in the archive commands. -+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then -+ cmds=$old_archive_from_new_cmds -+ else -+ -+ # Add any objects from preloaded convenience libraries -+ if test -n "$dlprefiles"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $dlprefiles -+ oldobjs="$oldobjs $func_extract_archives_result" -+ fi -+ -+ # POSIX demands no paths to be encoded in archives. We have -+ # to avoid creating archives with duplicate basenames if we -+ # might have to extract them afterwards, e.g., when creating a -+ # static archive out of a convenience library, or when linking -+ # the entirety of a libtool archive into another (currently -+ # not supported by libtool). -+ if (for obj in $oldobjs -+ do -+ func_basename "$obj" -+ $ECHO "$func_basename_result" -+ done | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ $ECHO "copying selected object files to avoid basename conflicts..." -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ func_mkdir_p "$gentop" -+ save_oldobjs=$oldobjs -+ oldobjs= -+ counter=1 -+ for obj in $save_oldobjs -+ do -+ func_basename "$obj" -+ objbase="$func_basename_result" -+ case " $oldobjs " in -+ " ") oldobjs=$obj ;; -+ *[\ /]"$objbase "*) -+ while :; do -+ # Make sure we don't pick an alternate name that also -+ # overlaps. -+ newobj=lt$counter-$objbase -+ func_arith $counter + 1 -+ counter=$func_arith_result -+ case " $oldobjs " in -+ *[\ /]"$newobj "*) ;; -+ *) if test ! -f "$gentop/$newobj"; then break; fi ;; -+ esac -+ done -+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -+ oldobjs="$oldobjs $gentop/$newobj" -+ ;; -+ *) oldobjs="$oldobjs $obj" ;; -+ esac -+ done -+ fi -+ eval cmds=\"$old_archive_cmds\" -+ -+ func_len " $cmds" -+ len=$func_len_result -+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ cmds=$old_archive_cmds -+ else -+ # the command line is too long to link in one step, link in parts -+ func_verbose "using piecewise archive linking..." -+ save_RANLIB=$RANLIB -+ RANLIB=: -+ objlist= -+ concat_cmds= -+ save_oldobjs=$oldobjs -+ oldobjs= -+ # Is there a better way of finding the last object in the list? -+ for obj in $save_oldobjs -+ do -+ last_oldobj=$obj -+ done -+ eval test_cmds=\"$old_archive_cmds\" -+ func_len " $test_cmds" -+ len0=$func_len_result -+ len=$len0 -+ for obj in $save_oldobjs -+ do -+ func_len " $obj" -+ func_arith $len + $func_len_result -+ len=$func_arith_result -+ func_append objlist " $obj" -+ if test "$len" -lt "$max_cmd_len"; then -+ : -+ else -+ # the above command should be used before it gets too long -+ oldobjs=$objlist -+ if test "$obj" = "$last_oldobj" ; then -+ RANLIB=$save_RANLIB -+ fi -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" -+ objlist= -+ len=$len0 -+ fi -+ done -+ RANLIB=$save_RANLIB -+ oldobjs=$objlist -+ if test "X$oldobjs" = "X" ; then -+ eval cmds=\"\$concat_cmds\" -+ else -+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" -+ fi -+ fi -+ fi -+ func_execute_cmds "$cmds" 'exit $?' -+ done -+ -+ test -n "$generated" && \ -+ func_show_eval "${RM}r$generated" -+ -+ # Now create the libtool archive. -+ case $output in -+ *.la) -+ old_library= -+ test "$build_old_libs" = yes && old_library="$libname.$libext" -+ func_verbose "creating $output" -+ -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ func_quote_for_eval "$var_value" -+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" -+ fi -+ done -+ # Quote the link command for shipping. -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` -+ if test "$hardcode_automatic" = yes ; then -+ relink_command= -+ fi -+ -+ # Only create the output if not a dry run. -+ $opt_dry_run || { -+ for installed in no yes; do -+ if test "$installed" = yes; then -+ if test -z "$install_libdir"; then -+ break -+ fi -+ output="$output_objdir/$outputname"i -+ # Replace all uninstalled libtool libraries with the installed ones -+ newdependency_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ *.la) -+ func_basename "$deplib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$deplib' is not a valid libtool archive" -+ newdependency_libs="$newdependency_libs $libdir/$name" -+ ;; -+ *) newdependency_libs="$newdependency_libs $deplib" ;; -+ esac -+ done -+ dependency_libs="$newdependency_libs" -+ newdlfiles= -+ -+ for lib in $dlfiles; do -+ case $lib in -+ *.la) -+ func_basename "$lib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$lib' is not a valid libtool archive" -+ newdlfiles="$newdlfiles $libdir/$name" -+ ;; -+ *) newdlfiles="$newdlfiles $lib" ;; -+ esac -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ *.la) -+ # Only pass preopened files to the pseudo-archive (for -+ # eventual linking with the app. that links it) if we -+ # didn't already link the preopened objects directly into -+ # the library: -+ func_basename "$lib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$lib' is not a valid libtool archive" -+ newdlprefiles="$newdlprefiles $libdir/$name" -+ ;; -+ esac -+ done -+ dlprefiles="$newdlprefiles" -+ else -+ newdlfiles= -+ for lib in $dlfiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlfiles="$newdlfiles $abs" -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlprefiles="$newdlprefiles $abs" -+ done -+ dlprefiles="$newdlprefiles" -+ fi -+ $RM $output -+ # place dlname in correct position for cygwin -+ tdlname=$dlname -+ case $host,$output,$installed,$module,$dlname in -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; -+ esac -+ $ECHO > $output "\ -+# $outputname - a libtool library file -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -+# -+# Please DO NOT delete this file! -+# It is necessary for linking the library. -+ -+# The name that we can dlopen(3). -+dlname='$tdlname' -+ -+# Names of this library. -+library_names='$library_names' -+ -+# The name of the static archive. -+old_library='$old_library' -+ -+# Linker flags that can not go in dependency_libs. -+inherited_linker_flags='$new_inherited_linker_flags' -+ -+# Libraries that this one depends upon. -+dependency_libs='$dependency_libs' -+ -+# Names of additional weak libraries provided by this library -+weak_library_names='$weak_libs' -+ -+# Version information for $libname. -+current=$current -+age=$age -+revision=$revision -+ -+# Is this an already installed library? -+installed=$installed -+ -+# Should we warn about portability when linking against -modules? -+shouldnotlink=$module -+ -+# Files to dlopen/dlpreopen -+dlopen='$dlfiles' -+dlpreopen='$dlprefiles' -+ -+# Directory that this library needs to be installed in: -+libdir='$install_libdir'" -+ if test "$installed" = no && test "$need_relink" = yes; then -+ $ECHO >> $output "\ -+relink_command=\"$relink_command\"" -+ fi -+ done -+ } -+ -+ # Do a symbolic link so that the libtool archive can be found in -+ # LD_LIBRARY_PATH before the program is installed. -+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' -+ ;; -+ esac -+ exit $EXIT_SUCCESS -+} -+ -+{ test "$mode" = link || test "$mode" = relink; } && -+ func_mode_link ${1+"$@"} -+ -+ -+# func_mode_uninstall arg... -+func_mode_uninstall () -+{ -+ $opt_debug -+ RM="$nonopt" -+ files= -+ rmforce= -+ exit_status=0 -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ for arg -+ do -+ case $arg in -+ -f) RM="$RM $arg"; rmforce=yes ;; -+ -*) RM="$RM $arg" ;; -+ *) files="$files $arg" ;; -+ esac -+ done -+ -+ test -z "$RM" && \ -+ func_fatal_help "you must specify an RM program" -+ -+ rmdirs= -+ -+ origobjdir="$objdir" -+ for file in $files; do -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ if test "X$dir" = X.; then -+ objdir="$origobjdir" -+ else -+ objdir="$dir/$origobjdir" -+ fi -+ func_basename "$file" -+ name="$func_basename_result" -+ test "$mode" = uninstall && objdir="$dir" -+ -+ # Remember objdir for removal later, being careful to avoid duplicates -+ if test "$mode" = clean; then -+ case " $rmdirs " in -+ *" $objdir "*) ;; -+ *) rmdirs="$rmdirs $objdir" ;; -+ esac -+ fi -+ -+ # Don't error if the file doesn't exist and rm -f was used. -+ if { test -L "$file"; } >/dev/null 2>&1 || -+ { test -h "$file"; } >/dev/null 2>&1 || -+ test -f "$file"; then -+ : -+ elif test -d "$file"; then -+ exit_status=1 -+ continue -+ elif test "$rmforce" = yes; then -+ continue -+ fi -+ -+ rmfiles="$file" -+ -+ case $name in -+ *.la) -+ # Possibly a libtool archive, so verify it. -+ if func_lalib_p "$file"; then -+ func_source $dir/$name -+ -+ # Delete the libtool libraries and symlinks. -+ for n in $library_names; do -+ rmfiles="$rmfiles $objdir/$n" -+ done -+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" -+ -+ case "$mode" in -+ clean) -+ case " $library_names " in -+ # " " in the beginning catches empty $dlname -+ *" $dlname "*) ;; -+ *) rmfiles="$rmfiles $objdir/$dlname" ;; -+ esac -+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" -+ ;; -+ uninstall) -+ if test -n "$library_names"; then -+ # Do each command in the postuninstall commands. -+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' -+ fi -+ -+ if test -n "$old_library"; then -+ # Do each command in the old_postuninstall commands. -+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' -+ fi -+ # FIXME: should reinstall the best remaining shared library. -+ ;; -+ esac -+ fi -+ ;; -+ -+ *.lo) -+ # Possibly a libtool object, so verify it. -+ if func_lalib_p "$file"; then -+ -+ # Read the .lo file -+ func_source $dir/$name -+ -+ # Add PIC object to the list of files to remove. -+ if test -n "$pic_object" && -+ test "$pic_object" != none; then -+ rmfiles="$rmfiles $dir/$pic_object" -+ fi -+ -+ # Add non-PIC object to the list of files to remove. -+ if test -n "$non_pic_object" && -+ test "$non_pic_object" != none; then -+ rmfiles="$rmfiles $dir/$non_pic_object" -+ fi -+ fi -+ ;; -+ -+ *) -+ if test "$mode" = clean ; then -+ noexename=$name -+ case $file in -+ *.exe) -+ func_stripname '' '.exe' "$file" -+ file=$func_stripname_result -+ func_stripname '' '.exe' "$name" -+ noexename=$func_stripname_result -+ # $file with .exe has already been added to rmfiles, -+ # add $file without .exe -+ rmfiles="$rmfiles $file" -+ ;; -+ esac -+ # Do a test to see if this is a libtool program. -+ if func_ltwrapper_p "$file"; then -+ if func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ relink_command= -+ func_source $func_ltwrapper_scriptname_result -+ rmfiles="$rmfiles $func_ltwrapper_scriptname_result" -+ else -+ relink_command= -+ func_source $dir/$noexename -+ fi -+ -+ # note $name still contains .exe if it was in $file originally -+ # as does the version of $file that was added into $rmfiles -+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" -+ if test "$fast_install" = yes && test -n "$relink_command"; then -+ rmfiles="$rmfiles $objdir/lt-$name" -+ fi -+ if test "X$noexename" != "X$name" ; then -+ rmfiles="$rmfiles $objdir/lt-${noexename}.c" -+ fi -+ fi -+ fi -+ ;; -+ esac -+ func_show_eval "$RM $rmfiles" 'exit_status=1' -+ done -+ objdir="$origobjdir" -+ -+ # Try to remove the ${objdir}s in the directories where we deleted files -+ for dir in $rmdirs; do -+ if test -d "$dir"; then -+ func_show_eval "rmdir $dir >/dev/null 2>&1" -+ fi -+ done -+ -+ exit $exit_status -+} -+ -+{ test "$mode" = uninstall || test "$mode" = clean; } && -+ func_mode_uninstall ${1+"$@"} -+ -+test -z "$mode" && { -+ help="$generic_help" -+ func_fatal_help "you must specify a MODE" -+} -+ -+test -z "$exec_cmd" && \ -+ func_fatal_help "invalid operation mode \`$mode'" -+ -+if test -n "$exec_cmd"; then -+ eval exec "$exec_cmd" -+ exit $EXIT_FAILURE -+fi -+ -+exit $exit_status -+ -+ -+# The TAGs below are defined such that we never get into a situation -+# in which we disable both kinds of libraries. Given conflicting -+# choices, we go for a static library, that is the most portable, -+# since we can't tell whether shared libraries were disabled because -+# the user asked for that or because the platform doesn't support -+# them. This is particularly important on AIX, because we don't -+# support having both static and shared libraries enabled at the same -+# time on that platform, so we default to a shared-only configuration. -+# If a disable-shared tag is given, we'll fallback to a static-only -+# configuration. But we'll never go from static-only to shared-only. -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -+build_libtool_libs=no -+build_old_libs=yes -+# ### END LIBTOOL TAG CONFIG: disable-shared -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static -+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -+# ### END LIBTOOL TAG CONFIG: disable-static -+ -+# Local Variables: -+# mode:shell-script -+# sh-indentation:2 -+# End: -+# vi:sw=2 -+ ---- /dev/null -+++ libgdiplus-2.10-2.10/src/Makefile -@@ -0,0 +1,661 @@ -+# Makefile.in generated by automake 1.10.1 from Makefile.am. -+# src/Makefile. Generated from Makefile.in by configure. -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+ -+ -+ -+pkgdatadir = $(datadir)/libgdiplus -+pkglibdir = $(libdir)/libgdiplus -+pkgincludedir = $(includedir)/libgdiplus -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = x86_64-pc-linux-gnu -+host_triplet = x86_64-pc-linux-gnu -+target_triplet = x86_64-pc-linux-gnu -+subdir = src -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.in -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -+am__vpath_adj = case $$p in \ -+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ -+ *) f=$$p;; \ -+ esac; -+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -+am__installdirs = "$(DESTDIR)$(libdir)" -+libLTLIBRARIES_INSTALL = $(INSTALL) -+LTLIBRARIES = $(lib_LTLIBRARIES) -+am__DEPENDENCIES_1 = -+libgdiplus_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -+am_libgdiplus_la_OBJECTS = adjustablearrowcap.lo bitmap.lo brush.lo \ -+ carbon-private.lo customlinecap.lo dstream.lo font.lo \ -+ general.lo graphics.lo graphics-cairo.lo graphics-metafile.lo \ -+ graphics-path.lo graphics-pathiterator.lo hatchbrush.lo \ -+ icocodec.lo image.lo imageattributes.lo lineargradientbrush.lo \ -+ matrix.lo metafile.lo pathgradientbrush.lo pen.lo print.lo \ -+ region.lo region-bitmap.lo region-path-tree.lo solidbrush.lo \ -+ stringformat.lo text.lo text-cairo.lo text-pango.lo \ -+ text-metafile.lo texturebrush.lo bmpcodec.lo emfcodec.lo \ -+ emfplus.lo gifcodec.lo jpegcodec.lo pngcodec.lo tiffcodec.lo \ -+ wmfcodec.lo -+libgdiplus_la_OBJECTS = $(am_libgdiplus_la_OBJECTS) -+DEFAULT_INCLUDES = -I. -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -+ $(LDFLAGS) -o $@ -+SOURCES = $(libgdiplus_la_SOURCES) -+DIST_SOURCES = $(libgdiplus_la_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run aclocal-1.10 -+AMTAR = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run tar -+AR = ar -+AUTOCONF = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run autoconf -+AUTOHEADER = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run autoheader -+AUTOMAKE = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run automake-1.10 -+AWK = gawk -+BASE_DEPENDENCIES_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -+BASE_DEPENDENCIES_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -+CAIRO_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -+CAIRO_DIR = -+CAIRO_LIBS = -lcairo -+CC = gcc -+CCDEPMODE = depmode=none -+CFLAGS = -g -O2 -pthread -+CPP = gcc -E -+CPPFLAGS = -+CYGPATH_W = echo -+DEFS = -DHAVE_CONFIG_H -+DEPDIR = .deps -+DSYMUTIL = -+DUMPBIN = -+ECHO_C = -+ECHO_N = -n -+ECHO_T = -+EGREP = /bin/grep -E -+EXEEXT = -+FGREP = /bin/grep -F -+FONTCONFIG_CFLAGS = -+FONTCONFIG_CONFIG = -+FONTCONFIG_LIBS = -L/usr/lib/x86_64-linux-gnu -lfontconfig -+FREETYPE2_CFLAGS = -I/usr/include/freetype2 -+FREETYPE2_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -+FREETYPE_CONFIG = -+GDIPLUS_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif -+GDIPLUS_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+GDIPLUS_PKG_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif -+GDIPLUS_PKG_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+GDIPLUS_PKG_REQ = cairo -+GREP = /bin/grep -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+INSTALL_PROGRAM = ${INSTALL} -+INSTALL_SCRIPT = ${INSTALL} -+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -+LD = /usr/bin/ld -m elf_x86_64 -+LDFLAGS = -Wl,-Bsymbolic-functions -+LIBEXIF_CFLAGS = -I/usr/include/libexif -+LIBEXIF_LIBS = -lexif -+LIBOBJS = -+LIBS = -lpthread -lfontconfig -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+LIPO = -+LN_S = ln -s -+LTLIBOBJS = -+MAINT = # -+MAKEINFO = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run makeinfo -+MKDIR_P = /bin/mkdir -p -+NM = /usr/bin/nm -B -+NMEDIT = -+OBJDUMP = objdump -+OBJEXT = o -+OTOOL = -+OTOOL64 = -+PACKAGE = libgdiplus -+PACKAGE_BUGREPORT = -+PACKAGE_NAME = -+PACKAGE_STRING = -+PACKAGE_TARNAME = -+PACKAGE_VERSION = -+PANGO_CFLAGS = -+PANGO_LIBS = -+PATH_SEPARATOR = : -+PKG_CONFIG = /usr/bin/pkg-config -+RANLIB = ranlib -+SED = /bin/sed -+SET_MAKE = -+SHELL = /bin/bash -+STRIP = strip -+VERSION = 2.10 -+abs_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/src -+abs_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/src -+abs_top_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+abs_top_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+ac_ct_CC = gcc -+ac_ct_DUMPBIN = -+am__include = include -+am__leading_dot = . -+am__quote = -+am__tar = ${AMTAR} chof - "$$tardir" -+am__untar = ${AMTAR} xf - -+bindir = ${exec_prefix}/bin -+build = x86_64-pc-linux-gnu -+build_alias = x86_64-linux-gnu -+build_cpu = x86_64 -+build_os = linux-gnu -+build_vendor = pc -+builddir = . -+datadir = ${datarootdir} -+datarootdir = ${prefix}/share -+docdir = ${datarootdir}/doc/${PACKAGE} -+dvidir = ${docdir} -+exec_prefix = ${prefix} -+host = x86_64-pc-linux-gnu -+host_alias = -+host_cpu = x86_64 -+host_os = linux-gnu -+host_vendor = pc -+htmldir = ${docdir} -+includedir = ${prefix}/include -+infodir = ${prefix}/share/info -+install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/install-sh -+libdir = ${exec_prefix}/lib -+libexecdir = ${prefix}/lib/libgdiplus-2.10 -+localedir = ${datarootdir}/locale -+localstatedir = /var -+lt_ECHO = echo -+mandir = ${prefix}/share/man -+mkdir_p = /bin/mkdir -p -+oldincludedir = /usr/include -+pdfdir = ${docdir} -+prefix = /opt/mono-2.10 -+program_transform_name = s,x,x, -+psdir = ${docdir} -+sbindir = ${exec_prefix}/sbin -+sharedstatedir = ${prefix}/com -+srcdir = . -+subdirs = -+sysconfdir = /etc -+target = x86_64-pc-linux-gnu -+target_alias = -+target_cpu = x86_64 -+target_os = linux-gnu -+target_vendor = pc -+top_build_prefix = ../ -+top_builddir = .. -+top_srcdir = .. -+lib_LTLIBRARIES = libgdiplus.la -+libgdiplus_la_SOURCES = \ -+ adjustablearrowcap.c \ -+ adjustablearrowcap.h \ -+ adjustablearrowcap-private.h \ -+ alpha-premul-table.inc \ -+ bitmap.c \ -+ bitmap.h \ -+ bitmap-private.h \ -+ brush.c \ -+ brush.h \ -+ brush-private.h \ -+ carbon-private.c \ -+ carbon-private.h \ -+ codecs.h \ -+ codecs-private.h \ -+ customlinecap.c \ -+ customlinecap.h \ -+ customlinecap-private.h \ -+ dstream.c \ -+ dstream.h \ -+ font.c \ -+ font.h \ -+ font-private.h \ -+ fontcollection.h \ -+ fontcollection-private.h \ -+ fontfamily.h \ -+ fontfamily-private.h \ -+ GdiPlusFlat.h \ -+ gdiplus-private.h \ -+ gdip.h \ -+ gdipenums.h \ -+ gdipstructs.h \ -+ general.c \ -+ general.h \ -+ general-private.h \ -+ graphics.c \ -+ graphics.h \ -+ graphics-cairo.c \ -+ graphics-cairo-private.h \ -+ graphics-metafile.c \ -+ graphics-metafile-private.h \ -+ graphics-private.h \ -+ graphics-path.c \ -+ graphics-path.h \ -+ graphics-path-private.h \ -+ graphics-pathiterator.c \ -+ graphics-pathiterator.h \ -+ graphics-pathiterator-private.h \ -+ hatchbrush.c \ -+ hatchbrush.h \ -+ hatchbrush-private.h \ -+ icocodec.c \ -+ icocodec.h \ -+ image.c \ -+ image.h \ -+ image-private.h \ -+ imageattributes.c \ -+ imageattributes.h \ -+ imageattributes-private.h \ -+ lineargradientbrush.c \ -+ lineargradientbrush.h \ -+ lineargradientbrush-private.h \ -+ matrix.c \ -+ matrix.h \ -+ matrix-private.h \ -+ metafile.c \ -+ metafile.h \ -+ metafile-private.h \ -+ pathgradientbrush.c \ -+ pathgradientbrush.h \ -+ pathgradientbrush-private.h \ -+ pen.c \ -+ pen.h \ -+ pen-private.h \ -+ print.c \ -+ region.c \ -+ region.h \ -+ region-private.h \ -+ region-bitmap.c \ -+ region-bitmap.h \ -+ region-path-tree.c \ -+ region-path-tree.h \ -+ solidbrush.c \ -+ solidbrush.h \ -+ solidbrush-private.h \ -+ stringformat.c \ -+ stringformat.h \ -+ stringformat-private.h \ -+ text.c \ -+ text.h \ -+ text-cairo.c \ -+ text-cairo-private.h \ -+ text-pango.c \ -+ text-pango-private.h \ -+ text-metafile.c \ -+ text-metafile-private.h \ -+ texturebrush.c \ -+ texturebrush.h \ -+ texturebrush-private.h \ -+ win32structs.h \ -+ bmpcodec.h \ -+ bmpcodec.c \ -+ emfcodec.c \ -+ emfcodec.h \ -+ emfplus.c \ -+ emfplus.h \ -+ gifcodec.h \ -+ gifcodec.c \ -+ jpegcodec.h \ -+ jpegcodec.c \ -+ pngcodec.h \ -+ pngcodec.c \ -+ tiffcodec.h \ -+ tiffcodec.c \ -+ wmfcodec.c \ -+ wmfcodec.h -+ -+libgdiplus_la_LIBADD = $(GDIPLUS_LIBS) -+INCLUDES = $(GDIPLUS_CFLAGS) -Wall -Wno-unused -Wno-format -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: # $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): # $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+install-libLTLIBRARIES: $(lib_LTLIBRARIES) -+ @$(NORMAL_INSTALL) -+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" -+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ -+ if test -f $$p; then \ -+ f=$(am__strip_dir) \ -+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ -+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ -+ else :; fi; \ -+ done -+ -+uninstall-libLTLIBRARIES: -+ @$(NORMAL_UNINSTALL) -+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ -+ p=$(am__strip_dir) \ -+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ -+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ -+ done -+ -+clean-libLTLIBRARIES: -+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) -+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ -+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ -+ test "$$dir" != "$$p" || dir=.; \ -+ echo "rm -f \"$${dir}/so_locations\""; \ -+ rm -f "$${dir}/so_locations"; \ -+ done -+libgdiplus.la: $(libgdiplus_la_OBJECTS) $(libgdiplus_la_DEPENDENCIES) -+ $(LINK) -rpath $(libdir) $(libgdiplus_la_OBJECTS) $(libgdiplus_la_LIBADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+#include ./$(DEPDIR)/adjustablearrowcap.Plo -+#include ./$(DEPDIR)/bitmap.Plo -+#include ./$(DEPDIR)/bmpcodec.Plo -+#include ./$(DEPDIR)/brush.Plo -+#include ./$(DEPDIR)/carbon-private.Plo -+#include ./$(DEPDIR)/customlinecap.Plo -+#include ./$(DEPDIR)/dstream.Plo -+#include ./$(DEPDIR)/emfcodec.Plo -+#include ./$(DEPDIR)/emfplus.Plo -+#include ./$(DEPDIR)/font.Plo -+#include ./$(DEPDIR)/general.Plo -+#include ./$(DEPDIR)/gifcodec.Plo -+#include ./$(DEPDIR)/graphics-cairo.Plo -+#include ./$(DEPDIR)/graphics-metafile.Plo -+#include ./$(DEPDIR)/graphics-path.Plo -+#include ./$(DEPDIR)/graphics-pathiterator.Plo -+#include ./$(DEPDIR)/graphics.Plo -+#include ./$(DEPDIR)/hatchbrush.Plo -+#include ./$(DEPDIR)/icocodec.Plo -+#include ./$(DEPDIR)/image.Plo -+#include ./$(DEPDIR)/imageattributes.Plo -+#include ./$(DEPDIR)/jpegcodec.Plo -+#include ./$(DEPDIR)/lineargradientbrush.Plo -+#include ./$(DEPDIR)/matrix.Plo -+#include ./$(DEPDIR)/metafile.Plo -+#include ./$(DEPDIR)/pathgradientbrush.Plo -+#include ./$(DEPDIR)/pen.Plo -+#include ./$(DEPDIR)/pngcodec.Plo -+#include ./$(DEPDIR)/print.Plo -+#include ./$(DEPDIR)/region-bitmap.Plo -+#include ./$(DEPDIR)/region-path-tree.Plo -+#include ./$(DEPDIR)/region.Plo -+#include ./$(DEPDIR)/solidbrush.Plo -+#include ./$(DEPDIR)/stringformat.Plo -+#include ./$(DEPDIR)/text-cairo.Plo -+#include ./$(DEPDIR)/text-metafile.Plo -+#include ./$(DEPDIR)/text-pango.Plo -+#include ./$(DEPDIR)/text.Plo -+#include ./$(DEPDIR)/texturebrush.Plo -+#include ./$(DEPDIR)/tiffcodec.Plo -+#include ./$(DEPDIR)/wmfcodec.Plo -+ -+.c.o: -+# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -+ $(COMPILE) -c $< -+ -+.c.obj: -+# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -+ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+# $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -+# source='$<' object='$@' libtool=yes -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -+ $(LTCOMPILE) -c -o $@ $< -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(LTLIBRARIES) -+installdirs: -+ for dir in "$(DESTDIR)$(libdir)"; do \ -+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ -+ done -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-dvi: install-dvi-am -+ -+install-exec-am: install-libLTLIBRARIES -+ -+install-html: install-html-am -+ -+install-info: install-info-am -+ -+install-man: -+ -+install-pdf: install-pdf-am -+ -+install-ps: install-ps-am -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-libLTLIBRARIES -+ -+.MAKE: install-am install-strip -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libLTLIBRARIES clean-libtool ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am \ -+ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ -+ maintainer-clean-generic mostlyclean mostlyclean-compile \ -+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -+ tags uninstall uninstall-am uninstall-libLTLIBRARIES -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: ---- /dev/null -+++ libgdiplus-2.10-2.10/stamp-h1 -@@ -0,0 +1 @@ -+timestamp for config.h ---- /dev/null -+++ libgdiplus-2.10-2.10/tests/Makefile -@@ -0,0 +1,518 @@ -+# Makefile.in generated by automake 1.10.1 from Makefile.am. -+# tests/Makefile. Generated from Makefile.in by configure. -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+# This Makefile.in is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+ -+ -+ -+pkgdatadir = $(datadir)/libgdiplus -+pkglibdir = $(libdir)/libgdiplus -+pkgincludedir = $(includedir)/libgdiplus -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = x86_64-pc-linux-gnu -+host_triplet = x86_64-pc-linux-gnu -+target_triplet = x86_64-pc-linux-gnu -+noinst_PROGRAMS = testgdi$(EXEEXT) testbits$(EXEEXT) testclip$(EXEEXT) \ -+ testreversepath$(EXEEXT) -+subdir = tests -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.in -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+PROGRAMS = $(noinst_PROGRAMS) -+am_testbits_OBJECTS = testbits.$(OBJEXT) -+testbits_OBJECTS = $(am_testbits_OBJECTS) -+am_testclip_OBJECTS = testclip.$(OBJEXT) -+testclip_OBJECTS = $(am_testclip_OBJECTS) -+am_testgdi_OBJECTS = testgdi.$(OBJEXT) -+testgdi_OBJECTS = $(am_testgdi_OBJECTS) -+am_testreversepath_OBJECTS = testreversepath.$(OBJEXT) -+testreversepath_OBJECTS = $(am_testreversepath_OBJECTS) -+DEFAULT_INCLUDES = -I. -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ -+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -+ $(LDFLAGS) -o $@ -+SOURCES = $(testbits_SOURCES) $(testclip_SOURCES) $(testgdi_SOURCES) \ -+ $(testreversepath_SOURCES) -+DIST_SOURCES = $(testbits_SOURCES) $(testclip_SOURCES) \ -+ $(testgdi_SOURCES) $(testreversepath_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run aclocal-1.10 -+AMTAR = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run tar -+AR = ar -+AUTOCONF = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run autoconf -+AUTOHEADER = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run autoheader -+AUTOMAKE = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run automake-1.10 -+AWK = gawk -+BASE_DEPENDENCIES_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -+BASE_DEPENDENCIES_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -+CAIRO_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -+CAIRO_DIR = -+CAIRO_LIBS = -lcairo -+CC = gcc -+CCDEPMODE = depmode=none -+CFLAGS = -g -O2 -pthread -+CPP = gcc -E -+CPPFLAGS = -+CYGPATH_W = echo -+DEFS = -DHAVE_CONFIG_H -+DEPDIR = .deps -+DSYMUTIL = -+DUMPBIN = -+ECHO_C = -+ECHO_N = -n -+ECHO_T = -+EGREP = /bin/grep -E -+EXEEXT = -+FGREP = /bin/grep -F -+FONTCONFIG_CFLAGS = -+FONTCONFIG_CONFIG = -+FONTCONFIG_LIBS = -L/usr/lib/x86_64-linux-gnu -lfontconfig -+FREETYPE2_CFLAGS = -I/usr/include/freetype2 -+FREETYPE2_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -+FREETYPE_CONFIG = -+GDIPLUS_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif -+GDIPLUS_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+GDIPLUS_PKG_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libexif -+GDIPLUS_PKG_LIBS = -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lcairo -L/usr/lib/x86_64-linux-gnu -lfontconfig -L/usr/lib/x86_64-linux-gnu -lfreetype -L/usr/lib/x86_64-linux-gnu -lXrender -lX11 -ltiff -ljpeg -lungif -L/usr/lib/x86_64-linux-gnu -lpng12 -lexif -+GDIPLUS_PKG_REQ = cairo -+GREP = /bin/grep -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = ${INSTALL} -m 644 -+INSTALL_PROGRAM = ${INSTALL} -+INSTALL_SCRIPT = ${INSTALL} -+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -+LD = /usr/bin/ld -m elf_x86_64 -+LDFLAGS = -Wl,-Bsymbolic-functions -+LIBEXIF_CFLAGS = -I/usr/include/libexif -+LIBEXIF_LIBS = -lexif -+LIBOBJS = -+LIBS = -lpthread -lfontconfig -+LIBTOOL = $(SHELL) $(top_builddir)/libtool -+LIPO = -+LN_S = ln -s -+LTLIBOBJS = -+MAINT = # -+MAKEINFO = ${SHELL} /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/missing --run makeinfo -+MKDIR_P = /bin/mkdir -p -+NM = /usr/bin/nm -B -+NMEDIT = -+OBJDUMP = objdump -+OBJEXT = o -+OTOOL = -+OTOOL64 = -+PACKAGE = libgdiplus -+PACKAGE_BUGREPORT = -+PACKAGE_NAME = -+PACKAGE_STRING = -+PACKAGE_TARNAME = -+PACKAGE_VERSION = -+PANGO_CFLAGS = -+PANGO_LIBS = -+PATH_SEPARATOR = : -+PKG_CONFIG = /usr/bin/pkg-config -+RANLIB = ranlib -+SED = /bin/sed -+SET_MAKE = -+SHELL = /bin/bash -+STRIP = strip -+VERSION = 2.10 -+abs_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/tests -+abs_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/tests -+abs_top_builddir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+abs_top_srcdir = /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10 -+ac_ct_CC = gcc -+ac_ct_DUMPBIN = -+am__include = include -+am__leading_dot = . -+am__quote = -+am__tar = ${AMTAR} chof - "$$tardir" -+am__untar = ${AMTAR} xf - -+bindir = ${exec_prefix}/bin -+build = x86_64-pc-linux-gnu -+build_alias = x86_64-linux-gnu -+build_cpu = x86_64 -+build_os = linux-gnu -+build_vendor = pc -+builddir = . -+datadir = ${datarootdir} -+datarootdir = ${prefix}/share -+docdir = ${datarootdir}/doc/${PACKAGE} -+dvidir = ${docdir} -+exec_prefix = ${prefix} -+host = x86_64-pc-linux-gnu -+host_alias = -+host_cpu = x86_64 -+host_os = linux-gnu -+host_vendor = pc -+htmldir = ${docdir} -+includedir = ${prefix}/include -+infodir = ${prefix}/share/info -+install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/install-sh -+libdir = ${exec_prefix}/lib -+libexecdir = ${prefix}/lib/libgdiplus-2.10 -+localedir = ${datarootdir}/locale -+localstatedir = /var -+lt_ECHO = echo -+mandir = ${prefix}/share/man -+mkdir_p = /bin/mkdir -p -+oldincludedir = /usr/include -+pdfdir = ${docdir} -+prefix = /opt/mono-2.10 -+program_transform_name = s,x,x, -+psdir = ${docdir} -+sbindir = ${exec_prefix}/sbin -+sharedstatedir = ${prefix}/com -+srcdir = . -+subdirs = -+sysconfdir = /etc -+target = x86_64-pc-linux-gnu -+target_alias = -+target_cpu = x86_64 -+target_os = linux-gnu -+target_vendor = pc -+top_build_prefix = ../ -+top_builddir = .. -+top_srcdir = .. -+INCLUDES = \ -+ -I$(top_srcdir) \ -+ -I$(top_builddir)/src \ -+ -I$(top_srcdir)/src \ -+ $(GDIPLUS_CFLAGS) -+ -+DEPS = \ -+ $(top_builddir)/src/libgdiplus.la -+ -+LDADDS = \ -+ $(top_builddir)/src/libgdiplus.la -+ -+testgdi_DEPENDENCIES = $(TEST_DEPS) -+testgdi_LDADD = $(LDADDS) -+testgdi_SOURCES = \ -+ testgdi.c -+ -+testbits_DEPENDENCIES = $(TEST_DEPS) -+testbits_LDADD = $(LDADDS) -+testbits_SOURCES = \ -+ testbits.c -+ -+testclip_SOURCES = \ -+ testclip.c -+ -+testclip_DEPENDENCIES = $(TEST_DEPS) -+testclip_LDADD = $(LDADDS) -+testreversepath_SOURCES = \ -+ testreversepath.c -+ -+testreversepath_DEPENDENCIES = $(TEST_DEPS) -+testreversepath_LDADD = $(LDADDS) -+EXTRA_DIST = \ -+ $(testgdi_SOURCES) \ -+ $(testbits_SOURCES) \ -+ $(testclip_SOURCES) \ -+ $(testreversepath_SOURCES) -+ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu tests/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: # $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): # $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+clean-noinstPROGRAMS: -+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \ -+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ -+ echo " rm -f $$p $$f"; \ -+ rm -f $$p $$f ; \ -+ done -+testbits$(EXEEXT): $(testbits_OBJECTS) $(testbits_DEPENDENCIES) -+ @rm -f testbits$(EXEEXT) -+ $(LINK) $(testbits_OBJECTS) $(testbits_LDADD) $(LIBS) -+testclip$(EXEEXT): $(testclip_OBJECTS) $(testclip_DEPENDENCIES) -+ @rm -f testclip$(EXEEXT) -+ $(LINK) $(testclip_OBJECTS) $(testclip_LDADD) $(LIBS) -+testgdi$(EXEEXT): $(testgdi_OBJECTS) $(testgdi_DEPENDENCIES) -+ @rm -f testgdi$(EXEEXT) -+ $(LINK) $(testgdi_OBJECTS) $(testgdi_LDADD) $(LIBS) -+testreversepath$(EXEEXT): $(testreversepath_OBJECTS) $(testreversepath_DEPENDENCIES) -+ @rm -f testreversepath$(EXEEXT) -+ $(LINK) $(testreversepath_OBJECTS) $(testreversepath_LDADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+#include ./$(DEPDIR)/testbits.Po -+#include ./$(DEPDIR)/testclip.Po -+#include ./$(DEPDIR)/testgdi.Po -+#include ./$(DEPDIR)/testreversepath.Po -+ -+.c.o: -+# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -+ $(COMPILE) -c $< -+ -+.c.obj: -+# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -+ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+# $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -+# source='$<' object='$@' libtool=yes -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -+ $(LTCOMPILE) -c -o $@ $< -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(PROGRAMS) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-dvi: install-dvi-am -+ -+install-exec-am: -+ -+install-html: install-html-am -+ -+install-info: install-info-am -+ -+install-man: -+ -+install-pdf: install-pdf-am -+ -+install-ps: install-ps-am -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: -+ -+.MAKE: install-am install-strip -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libtool clean-noinstPROGRAMS ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-pdf install-pdf-am install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/debian/patches/debian-changes-2.10-1ubuntu1 libgdiplus-4.0-4.2.3+precise1/debian/patches/debian-changes-2.10-1ubuntu1 --- libgdiplus-4.0-2.10.9/debian/patches/debian-changes-2.10-1ubuntu1 2013-08-21 08:24:05.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/patches/debian-changes-2.10-1ubuntu1 1970-01-01 00:00:00.000000000 +0000 @@ -1,501 +0,0 @@ -Description: Upstream changes introduced in version 2.10-1ubuntu1 - This patch has been created by dpkg-source during the package build. - Here's the last changelog entry, hopefully it gives details on why - those changes were made: - . - libgdiplus-2.10 (2.10-1ubuntu1) natty; urgency=low - . - * fix build dependencies - . - The person named in the Author field signed this changelog entry. -Author: Eberhard Beilharz - ---- -The information above should follow the Patch Tagging Guidelines, please -checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here -are templates for supplementary fields that you might want to add: - -Origin: , -Bug: -Bug-Debian: http://bugs.debian.org/ -Bug-Ubuntu: https://launchpad.net/bugs/ -Forwarded: -Reviewed-By: -Last-Update: - ---- libgdiplus-2.10-2.10.orig/libtool -+++ libgdiplus-2.10-2.10/libtool -@@ -56,12 +56,12 @@ fast_install=yes - - # The host system. - host_alias= --host=x86_64-pc-linux-gnu -+host=x86_64-unknown-linux-gnu - host_os=linux-gnu - - # The build system. --build_alias=x86_64-linux-gnu --build=x86_64-pc-linux-gnu -+build_alias= -+build=x86_64-unknown-linux-gnu - build_os=linux-gnu - - # A sed program that does not truncate output. -@@ -86,7 +86,7 @@ NM="/usr/bin/nm -B" - LN_S="ln -s" - - # What is the maximum length of a command? --max_cmd_len=3458764513820540925 -+max_cmd_len=1572864 - - # Object file suffix (normally "o"). - objext=o ---- libgdiplus-2.10-2.10.orig/Makefile -+++ libgdiplus-2.10-2.10/Makefile -@@ -30,9 +30,9 @@ POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : --build_triplet = x86_64-pc-linux-gnu --host_triplet = x86_64-pc-linux-gnu --target_triplet = x86_64-pc-linux-gnu -+build_triplet = x86_64-unknown-linux-gnu -+host_triplet = x86_64-unknown-linux-gnu -+target_triplet = x86_64-unknown-linux-gnu - subdir = . - DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ -@@ -95,7 +95,7 @@ CAIRO_CFLAGS = -pthread -I/usr/include/g - CAIRO_DIR = - CAIRO_LIBS = -lcairo - CC = gcc --CCDEPMODE = depmode=none -+CCDEPMODE = depmode=gcc3 - CFLAGS = -g -O2 -pthread - CPP = gcc -E - CPPFLAGS = -@@ -128,7 +128,7 @@ INSTALL_PROGRAM = ${INSTALL} - INSTALL_SCRIPT = ${INSTALL} - INSTALL_STRIP_PROGRAM = $(install_sh) -c -s - LD = /usr/bin/ld -m elf_x86_64 --LDFLAGS = -Wl,-Bsymbolic-functions -+LDFLAGS = - LIBEXIF_CFLAGS = -I/usr/include/libexif - LIBEXIF_LIBS = -lexif - LIBOBJS = -@@ -174,32 +174,32 @@ am__quote = - am__tar = ${AMTAR} chof - "$$tardir" - am__untar = ${AMTAR} xf - - bindir = ${exec_prefix}/bin --build = x86_64-pc-linux-gnu --build_alias = x86_64-linux-gnu -+build = x86_64-unknown-linux-gnu -+build_alias = - build_cpu = x86_64 - build_os = linux-gnu --build_vendor = pc -+build_vendor = unknown - builddir = . - datadir = ${datarootdir} - datarootdir = ${prefix}/share - docdir = ${datarootdir}/doc/${PACKAGE} - dvidir = ${docdir} - exec_prefix = ${prefix} --host = x86_64-pc-linux-gnu -+host = x86_64-unknown-linux-gnu - host_alias = - host_cpu = x86_64 - host_os = linux-gnu --host_vendor = pc -+host_vendor = unknown - htmldir = ${docdir} - includedir = ${prefix}/include --infodir = ${prefix}/share/info -+infodir = ${datarootdir}/info - install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/install-sh - libdir = ${exec_prefix}/lib --libexecdir = ${prefix}/lib/libgdiplus-2.10 -+libexecdir = ${exec_prefix}/libexec - localedir = ${datarootdir}/locale --localstatedir = /var -+localstatedir = ${prefix}/var - lt_ECHO = echo --mandir = ${prefix}/share/man -+mandir = ${datarootdir}/man - mkdir_p = /bin/mkdir -p - oldincludedir = /usr/include - pdfdir = ${docdir} -@@ -210,12 +210,12 @@ sbindir = ${exec_prefix}/sbin - sharedstatedir = ${prefix}/com - srcdir = . - subdirs = --sysconfdir = /etc --target = x86_64-pc-linux-gnu -+sysconfdir = ${prefix}/etc -+target = x86_64-unknown-linux-gnu - target_alias = - target_cpu = x86_64 - target_os = linux-gnu --target_vendor = pc -+target_vendor = unknown - top_build_prefix = - top_builddir = . - top_srcdir = . ---- libgdiplus-2.10-2.10.orig/src/Makefile -+++ libgdiplus-2.10-2.10/src/Makefile -@@ -30,9 +30,9 @@ POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : --build_triplet = x86_64-pc-linux-gnu --host_triplet = x86_64-pc-linux-gnu --target_triplet = x86_64-pc-linux-gnu -+build_triplet = x86_64-unknown-linux-gnu -+host_triplet = x86_64-unknown-linux-gnu -+target_triplet = x86_64-unknown-linux-gnu - subdir = src - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -@@ -95,7 +95,7 @@ CAIRO_CFLAGS = -pthread -I/usr/include/g - CAIRO_DIR = - CAIRO_LIBS = -lcairo - CC = gcc --CCDEPMODE = depmode=none -+CCDEPMODE = depmode=gcc3 - CFLAGS = -g -O2 -pthread - CPP = gcc -E - CPPFLAGS = -@@ -128,7 +128,7 @@ INSTALL_PROGRAM = ${INSTALL} - INSTALL_SCRIPT = ${INSTALL} - INSTALL_STRIP_PROGRAM = $(install_sh) -c -s - LD = /usr/bin/ld -m elf_x86_64 --LDFLAGS = -Wl,-Bsymbolic-functions -+LDFLAGS = - LIBEXIF_CFLAGS = -I/usr/include/libexif - LIBEXIF_LIBS = -lexif - LIBOBJS = -@@ -174,32 +174,32 @@ am__quote = - am__tar = ${AMTAR} chof - "$$tardir" - am__untar = ${AMTAR} xf - - bindir = ${exec_prefix}/bin --build = x86_64-pc-linux-gnu --build_alias = x86_64-linux-gnu -+build = x86_64-unknown-linux-gnu -+build_alias = - build_cpu = x86_64 - build_os = linux-gnu --build_vendor = pc -+build_vendor = unknown - builddir = . - datadir = ${datarootdir} - datarootdir = ${prefix}/share - docdir = ${datarootdir}/doc/${PACKAGE} - dvidir = ${docdir} - exec_prefix = ${prefix} --host = x86_64-pc-linux-gnu -+host = x86_64-unknown-linux-gnu - host_alias = - host_cpu = x86_64 - host_os = linux-gnu --host_vendor = pc -+host_vendor = unknown - htmldir = ${docdir} - includedir = ${prefix}/include --infodir = ${prefix}/share/info -+infodir = ${datarootdir}/info - install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/install-sh - libdir = ${exec_prefix}/lib --libexecdir = ${prefix}/lib/libgdiplus-2.10 -+libexecdir = ${exec_prefix}/libexec - localedir = ${datarootdir}/locale --localstatedir = /var -+localstatedir = ${prefix}/var - lt_ECHO = echo --mandir = ${prefix}/share/man -+mandir = ${datarootdir}/man - mkdir_p = /bin/mkdir -p - oldincludedir = /usr/include - pdfdir = ${docdir} -@@ -210,12 +210,12 @@ sbindir = ${exec_prefix}/sbin - sharedstatedir = ${prefix}/com - srcdir = . - subdirs = --sysconfdir = /etc --target = x86_64-pc-linux-gnu -+sysconfdir = ${prefix}/etc -+target = x86_64-unknown-linux-gnu - target_alias = - target_cpu = x86_64 - target_os = linux-gnu --target_vendor = pc -+target_vendor = unknown - top_build_prefix = ../ - top_builddir = .. - top_srcdir = .. -@@ -408,68 +408,68 @@ mostlyclean-compile: - distclean-compile: - -rm -f *.tab.c - --#include ./$(DEPDIR)/adjustablearrowcap.Plo --#include ./$(DEPDIR)/bitmap.Plo --#include ./$(DEPDIR)/bmpcodec.Plo --#include ./$(DEPDIR)/brush.Plo --#include ./$(DEPDIR)/carbon-private.Plo --#include ./$(DEPDIR)/customlinecap.Plo --#include ./$(DEPDIR)/dstream.Plo --#include ./$(DEPDIR)/emfcodec.Plo --#include ./$(DEPDIR)/emfplus.Plo --#include ./$(DEPDIR)/font.Plo --#include ./$(DEPDIR)/general.Plo --#include ./$(DEPDIR)/gifcodec.Plo --#include ./$(DEPDIR)/graphics-cairo.Plo --#include ./$(DEPDIR)/graphics-metafile.Plo --#include ./$(DEPDIR)/graphics-path.Plo --#include ./$(DEPDIR)/graphics-pathiterator.Plo --#include ./$(DEPDIR)/graphics.Plo --#include ./$(DEPDIR)/hatchbrush.Plo --#include ./$(DEPDIR)/icocodec.Plo --#include ./$(DEPDIR)/image.Plo --#include ./$(DEPDIR)/imageattributes.Plo --#include ./$(DEPDIR)/jpegcodec.Plo --#include ./$(DEPDIR)/lineargradientbrush.Plo --#include ./$(DEPDIR)/matrix.Plo --#include ./$(DEPDIR)/metafile.Plo --#include ./$(DEPDIR)/pathgradientbrush.Plo --#include ./$(DEPDIR)/pen.Plo --#include ./$(DEPDIR)/pngcodec.Plo --#include ./$(DEPDIR)/print.Plo --#include ./$(DEPDIR)/region-bitmap.Plo --#include ./$(DEPDIR)/region-path-tree.Plo --#include ./$(DEPDIR)/region.Plo --#include ./$(DEPDIR)/solidbrush.Plo --#include ./$(DEPDIR)/stringformat.Plo --#include ./$(DEPDIR)/text-cairo.Plo --#include ./$(DEPDIR)/text-metafile.Plo --#include ./$(DEPDIR)/text-pango.Plo --#include ./$(DEPDIR)/text.Plo --#include ./$(DEPDIR)/texturebrush.Plo --#include ./$(DEPDIR)/tiffcodec.Plo --#include ./$(DEPDIR)/wmfcodec.Plo -+include ./$(DEPDIR)/adjustablearrowcap.Plo -+include ./$(DEPDIR)/bitmap.Plo -+include ./$(DEPDIR)/bmpcodec.Plo -+include ./$(DEPDIR)/brush.Plo -+include ./$(DEPDIR)/carbon-private.Plo -+include ./$(DEPDIR)/customlinecap.Plo -+include ./$(DEPDIR)/dstream.Plo -+include ./$(DEPDIR)/emfcodec.Plo -+include ./$(DEPDIR)/emfplus.Plo -+include ./$(DEPDIR)/font.Plo -+include ./$(DEPDIR)/general.Plo -+include ./$(DEPDIR)/gifcodec.Plo -+include ./$(DEPDIR)/graphics-cairo.Plo -+include ./$(DEPDIR)/graphics-metafile.Plo -+include ./$(DEPDIR)/graphics-path.Plo -+include ./$(DEPDIR)/graphics-pathiterator.Plo -+include ./$(DEPDIR)/graphics.Plo -+include ./$(DEPDIR)/hatchbrush.Plo -+include ./$(DEPDIR)/icocodec.Plo -+include ./$(DEPDIR)/image.Plo -+include ./$(DEPDIR)/imageattributes.Plo -+include ./$(DEPDIR)/jpegcodec.Plo -+include ./$(DEPDIR)/lineargradientbrush.Plo -+include ./$(DEPDIR)/matrix.Plo -+include ./$(DEPDIR)/metafile.Plo -+include ./$(DEPDIR)/pathgradientbrush.Plo -+include ./$(DEPDIR)/pen.Plo -+include ./$(DEPDIR)/pngcodec.Plo -+include ./$(DEPDIR)/print.Plo -+include ./$(DEPDIR)/region-bitmap.Plo -+include ./$(DEPDIR)/region-path-tree.Plo -+include ./$(DEPDIR)/region.Plo -+include ./$(DEPDIR)/solidbrush.Plo -+include ./$(DEPDIR)/stringformat.Plo -+include ./$(DEPDIR)/text-cairo.Plo -+include ./$(DEPDIR)/text-metafile.Plo -+include ./$(DEPDIR)/text-pango.Plo -+include ./$(DEPDIR)/text.Plo -+include ./$(DEPDIR)/texturebrush.Plo -+include ./$(DEPDIR)/tiffcodec.Plo -+include ./$(DEPDIR)/wmfcodec.Plo - - .c.o: --# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< --# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po --# source='$<' object='$@' libtool=no --# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -- $(COMPILE) -c $< -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c $< - - .c.obj: --# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` --# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po --# source='$<' object='$@' libtool=no --# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -- $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c `$(CYGPATH_W) '$<'` - - .c.lo: --# $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< --# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo --# source='$<' object='$@' libtool=yes --# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -- $(LTCOMPILE) -c -o $@ $< -+ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -+# source='$<' object='$@' libtool=yes \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(LTCOMPILE) -c -o $@ $< - - mostlyclean-libtool: - -rm -f *.lo ---- libgdiplus-2.10-2.10.orig/tests/Makefile -+++ libgdiplus-2.10-2.10/tests/Makefile -@@ -30,9 +30,9 @@ POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : --build_triplet = x86_64-pc-linux-gnu --host_triplet = x86_64-pc-linux-gnu --target_triplet = x86_64-pc-linux-gnu -+build_triplet = x86_64-unknown-linux-gnu -+host_triplet = x86_64-unknown-linux-gnu -+target_triplet = x86_64-unknown-linux-gnu - noinst_PROGRAMS = testgdi$(EXEEXT) testbits$(EXEEXT) testclip$(EXEEXT) \ - testreversepath$(EXEEXT) - subdir = tests -@@ -85,7 +85,7 @@ CAIRO_CFLAGS = -pthread -I/usr/include/g - CAIRO_DIR = - CAIRO_LIBS = -lcairo - CC = gcc --CCDEPMODE = depmode=none -+CCDEPMODE = depmode=gcc3 - CFLAGS = -g -O2 -pthread - CPP = gcc -E - CPPFLAGS = -@@ -118,7 +118,7 @@ INSTALL_PROGRAM = ${INSTALL} - INSTALL_SCRIPT = ${INSTALL} - INSTALL_STRIP_PROGRAM = $(install_sh) -c -s - LD = /usr/bin/ld -m elf_x86_64 --LDFLAGS = -Wl,-Bsymbolic-functions -+LDFLAGS = - LIBEXIF_CFLAGS = -I/usr/include/libexif - LIBEXIF_LIBS = -lexif - LIBOBJS = -@@ -164,32 +164,32 @@ am__quote = - am__tar = ${AMTAR} chof - "$$tardir" - am__untar = ${AMTAR} xf - - bindir = ${exec_prefix}/bin --build = x86_64-pc-linux-gnu --build_alias = x86_64-linux-gnu -+build = x86_64-unknown-linux-gnu -+build_alias = - build_cpu = x86_64 - build_os = linux-gnu --build_vendor = pc -+build_vendor = unknown - builddir = . - datadir = ${datarootdir} - datarootdir = ${prefix}/share - docdir = ${datarootdir}/doc/${PACKAGE} - dvidir = ${docdir} - exec_prefix = ${prefix} --host = x86_64-pc-linux-gnu -+host = x86_64-unknown-linux-gnu - host_alias = - host_cpu = x86_64 - host_os = linux-gnu --host_vendor = pc -+host_vendor = unknown - htmldir = ${docdir} - includedir = ${prefix}/include --infodir = ${prefix}/share/info -+infodir = ${datarootdir}/info - install_sh = $(SHELL) /home/eberhard/Develop/mono-2.10/package/libgdiplus-2.10/install-sh - libdir = ${exec_prefix}/lib --libexecdir = ${prefix}/lib/libgdiplus-2.10 -+libexecdir = ${exec_prefix}/libexec - localedir = ${datarootdir}/locale --localstatedir = /var -+localstatedir = ${prefix}/var - lt_ECHO = echo --mandir = ${prefix}/share/man -+mandir = ${datarootdir}/man - mkdir_p = /bin/mkdir -p - oldincludedir = /usr/include - pdfdir = ${docdir} -@@ -200,12 +200,12 @@ sbindir = ${exec_prefix}/sbin - sharedstatedir = ${prefix}/com - srcdir = . - subdirs = --sysconfdir = /etc --target = x86_64-pc-linux-gnu -+sysconfdir = ${prefix}/etc -+target = x86_64-unknown-linux-gnu - target_alias = - target_cpu = x86_64 - target_os = linux-gnu --target_vendor = pc -+target_vendor = unknown - top_build_prefix = ../ - top_builddir = .. - top_srcdir = .. -@@ -306,31 +306,31 @@ mostlyclean-compile: - distclean-compile: - -rm -f *.tab.c - --#include ./$(DEPDIR)/testbits.Po --#include ./$(DEPDIR)/testclip.Po --#include ./$(DEPDIR)/testgdi.Po --#include ./$(DEPDIR)/testreversepath.Po -+include ./$(DEPDIR)/testbits.Po -+include ./$(DEPDIR)/testclip.Po -+include ./$(DEPDIR)/testgdi.Po -+include ./$(DEPDIR)/testreversepath.Po - - .c.o: --# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< --# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po --# source='$<' object='$@' libtool=no --# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -- $(COMPILE) -c $< -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c $< - - .c.obj: --# $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` --# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po --# source='$<' object='$@' libtool=no --# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -- $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+# source='$<' object='$@' libtool=no \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(COMPILE) -c `$(CYGPATH_W) '$<'` - - .c.lo: --# $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< --# mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo --# source='$<' object='$@' libtool=yes --# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) -- $(LTCOMPILE) -c -o $@ $< -+ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -+# source='$<' object='$@' libtool=yes \ -+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -+# $(LTCOMPILE) -c -o $@ $< - - mostlyclean-libtool: - -rm -f *.lo diff -Nru libgdiplus-4.0-2.10.9/debian/patches/series libgdiplus-4.0-4.2.3+precise1/debian/patches/series --- libgdiplus-4.0-2.10.9/debian/patches/series 2013-08-21 08:24:05.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -debian-changes-2.10-1 -debian-changes-2.10-1ubuntu1 diff -Nru libgdiplus-4.0-2.10.9/debian/rules libgdiplus-4.0-4.2.3+precise1/debian/rules --- libgdiplus-4.0-2.10.9/debian/rules 2013-08-21 08:24:05.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/rules 2016-04-15 10:11:13.000000000 +0000 @@ -4,23 +4,22 @@ #export DH_VERBOSE=1 MONO_PREFIX=/opt/monodevelop -GNOME_PREFIX=/usr -export DYLD_LIBRARY_FALLBACK_PATH:=$(MONO_PREFIX)/lib:$(DYLD_LIBRARY_FALLBACK_PATH) -export LD_LIBRARY_PATH:=$(MONO_PREFIX)/lib:$(LD_LIBRARY_PATH) -export C_INCLUDE_PATH:=$(MONO_PREFIX)/include:$(GNOME_PREFIX)/include -export ACLOCAL_PATH:=$(MONO_PREFIX)/share/aclocal -export PKG_CONFIG_PATH:=$(MONO_PREFIX)/lib/pkgconfig:$(GNOME_PREFIX)/lib/pkgconfig -export PATH:=$(MONO_PREFIX)/bin:$(PATH) -override_dh_auto_configure: - dh_auto_configure -- --prefix=$(MONO_PREFIX) +%: + dh --with autoreconf --parallel $@ + +override_dh_autoreconf: + NOCONFIGURE=1 ./autogen.sh -override_dh_auto_clean: - [ ! -f Makefile ] || $(MAKE) clean || true - rm -f config.status config.log - rm -f cairo/config.status cairo/config.log +override_dh_auto_configure: + dh_auto_configure -- --prefix=$(MONO_PREFIX) --sysconfdir=$(MONO_PREFIX)/etc --with-pango +# Don't run make check override_dh_auto_test: -%: - dh $@ +# Put debugging symbols in /usr/lib/debug +override_dh_strip: + dh_strip -k + +override_dh_shlibdeps: + dh_shlibdeps -l $(MONO_PREFIX)/lib diff -Nru libgdiplus-4.0-2.10.9/debian/source/format libgdiplus-4.0-4.2.3+precise1/debian/source/format --- libgdiplus-4.0-2.10.9/debian/source/format 2013-08-21 08:24:05.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/debian/source/format 2016-04-15 10:11:13.000000000 +0000 @@ -1 +1 @@ -3.0 (quilt) +3.0 (native) diff -Nru libgdiplus-4.0-2.10.9/depcomp libgdiplus-4.0-4.2.3+precise1/depcomp --- libgdiplus-4.0-2.10.9/depcomp 2010-12-08 23:19:43.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/depcomp 1970-01-01 00:00:00.000000000 +0000 @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# 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, 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, see . - -# 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. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru libgdiplus-4.0-2.10.9/docs/regions libgdiplus-4.0-4.2.3+precise1/docs/regions --- libgdiplus-4.0-2.10.9/docs/regions 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/docs/regions 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,103 @@ +Region implementations in libgdiplus +Last update: 2006-03-23 + +* Introduction + +First you should notice "implementations" in the title. Yes there is more +than one implementation to handle region code. + + +* Rectangular based regions + +The first implementation (i.e. the only one available before 1.1.14) is +based on rectangles. A region is simply a list of rectangles and all +binary operations (union, intersection, complement, exclude and xor) are +done mathematically (i.e. they results in a new list of rectangles). + +This approach is simple, efficient and allow to implement some other GDI+ +API very easily (e.g. GdipGetRegionData, GdipGetRegionDataSize, +GdipGetRegionScans). + +However it is limited to rectangles (i.e. no polygons, beziers ...) and +makes it impossible to implement some other GDI+ API, like +GdipTransformRegion where the rectangles would be transformed into paths. +Software depending on these features simply can't work. + +All the code for this implementation resides inside the file +/libgdiplus/src/region.c + + +* Bitmap based regions + +This implementation use 1bbp (1 bit per pixel) bitmaps to represent the +regions. This allows us to implement the binary operators on memory +buffers, not on coordinates (see /libgdiplus/src/region-bitmap.c). At +display time (GdipFillRegion) the bitmap is used as the alpha channel and +we simply draw a rectangle using the selected brush. + +This approach is simple, compared to a pure mathematical implementation, +but not as efficient and somewhat less precise (float to int +conversions). This is why the bitmap implementation co-exists with the +rectangular based region code. Simple regions get treated simply ;-) + +To minimize the inconveniences the bitmaps are created only on demand +(e.g. when an API requires them) and we try, as much as possible, to +avoid this code path (e.g. using the rectangle code where possible, check +for special cases, like an union with infinity...). + +Sadly having bitmaps isn't quite enough. We still have to be able to +apply transforms (i.e. GdipTransformRegion) and be able to [de]serialize +the region (GdipGetRegionData). While both operations _could_ be done +with bitmaps the results wouldn't be very precise (transform) nor small +(serialization). This is why the region keeps a tree of all the paths and +operations required to re-construct itself (see +/libgdiplus/src/region-path-tree.c). + +The code for this implementation resides in the files: + +/libgdiplus/src/region.c|h + The GDI+ API for regions. The API will switch to the rectangle or + bitmap code based on the regions type. If required a rectangle- + based region will be "promoted" to a bitmap region. + +/libgdiplus/src/region-bitmap.c|h + Handle the bitmap allocation, creation (from path), the binary + operations, ... + +/libgdiplus/src/region-path-tree.c|h + Handle the tree of path and (binary) operations required to + re-construct the region if required (e.g. transform and + serialization). + +There are currently two main limitations to this approach: + +1. Memory. It's simply impossible to allocate enough memory for an + "infinite" region. There is a maximum of 2 megabytes allocated for a + region bitmap (see region-bitmap.h). This is enough (1bbp) for + regions to cover a full screen resolution. + +2. Clipping. Graphics.Clip can't use the bitmap (at least not without + major changes). This means that clipping _will_work_ for any region + (not just rectangles) until a binary operation is done on it. So far + I've not seen any code trying that... + + +* Future? + +A pure, totally mathematical, implementation would be a nice addition to +libgdiplus. It could, once debugged, replace both the rectangular and +bitmap implementations. + +The main advantages of this implementation would be: +- reduced memory requirements (well most of the time); +- (almost) unlimited size; +- more precision (no float to int conversion); +- no limits on clipping; + +So if it's the best solution why don't we have it yet ? + +Well it's really not an easy problem. Writing an effective intersector is +a complex problem. You must deal with curves (well they could be cheated +into linear paths) and a _lot_ of corner cases (google for them). Most +existing (open source) implementation aren't satisfied with their results +(e.g. libart, livarot). But don't let us discourage you from trying! ;-) diff -Nru libgdiplus-4.0-2.10.9/docs/valgrind libgdiplus-4.0-4.2.3+precise1/docs/valgrind --- libgdiplus-4.0-2.10.9/docs/valgrind 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/docs/valgrind 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,42 @@ +Using valgrind to find memory leaks in libgdiplus +Last update: 2006-03-23 + +* Introduction + +Valgrind (http://valgrind.org/) is a nice tool for finding memory leaks +and related problems (e.g. like reusing freed memory). + +Libgdiplus is the foundation of Mono's System.Drawing.dll assembly. Any +leak from libgdiplus will make your .NET application leak - no GC help +here! + +There are many ways to run valgrind on libgdiplus. The most simple one is +to use (or write) a C program using and use valgrind on it, but the most +interesting one are running System.Drawing samples using Mono. + + +* Using valgrind with Mono + +Historically Mono and Valgrind didn't always played well together. If +this has discouraged you in the past then it's time to try it again! + +Recent valgrind versions are able to deal with for self-modifying +programs (which is what the mono JIT does) by using the +--smc-check=all option. + +As an extra bonus, Paolo (lupus) has shared his suppression file for +Mono. This removes a lot, but not all, false positives (or unimportant) +logs coming from the Mono runtime. This makes it easier and faster to +find what you're looking for. The suppression file is available in +Mono's SVN as /mono/data/mono.supp + + +Sample usage: + + valgrind --tool=memcheck -v --leak-check=full --log-file=log + --smc-check=all --suppressions=mono.supp mono app.exe + +This will run the app.exe application using mono and create a log file +named "log.####" (where #### is the process id). The log file will +indicates what leaked (and from where), what was (badly) reused after +being freed, ... diff -Nru libgdiplus-4.0-2.10.9/install-sh libgdiplus-4.0-4.2.3+precise1/install-sh --- libgdiplus-4.0-2.10.9/install-sh 2010-12-08 23:19:43.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/install-sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,520 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru libgdiplus-4.0-2.10.9/libgdiplus0.spec.in libgdiplus-4.0-4.2.3+precise1/libgdiplus0.spec.in --- libgdiplus-4.0-2.10.9/libgdiplus0.spec.in 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/libgdiplus0.spec.in 2016-04-15 08:16:31.000000000 +0000 @@ -1,6 +1,4 @@ %define real_name libgdiplus -# There may be strange bugs when using the system cairo -%define system_cairo 0 Name: libgdiplus0 Version: @VERSION@ @@ -15,18 +13,22 @@ Provides: libgdiplus-devel Obsoletes: libgdiplus Provides: libgdiplus -%if %system_cairo + BuildRequires: cairo-devel >= 1.6.4 -%endif BuildRequires: fontconfig-devel -BuildRequires: freetype2-devel BuildRequires: giflib-devel BuildRequires: glib2-devel BuildRequires: libexif-devel BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: libtiff-devel +%if 0%{?suse_version} BuildRequires: xorg-x11-libXrender-devel +BuildRequires: freetype2-devel +%else +BuildRequires: libXrender-devel +BuildRequires: freetype-devel +%endif %description This is part of the Mono project. It is required when using diff -Nru libgdiplus-4.0-2.10.9/ltmain.sh libgdiplus-4.0-4.2.3+precise1/ltmain.sh --- libgdiplus-4.0-2.10.9/ltmain.sh 2011-12-14 17:04:25.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/ltmain.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,9642 +0,0 @@ - -# libtool (GNU libtool) 2.4 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4 Debian-2.4-2ubuntu1 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION="2.4 Debian-2.4-2ubuntu1" -TIMESTAMP="" -package_revision=1.3293 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="/bin/grep -E"} -: ${FGREP="/bin/grep -F"} -: ${GREP="/bin/grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="/bin/sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) - libs="$deplibs %DEPLIBS%" - test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" - ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_apped perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff -Nru libgdiplus-4.0-2.10.9/Makefile.am libgdiplus-4.0-4.2.3+precise1/Makefile.am --- libgdiplus-4.0-2.10.9/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/Makefile.am 2016-04-15 08:16:31.000000000 +0000 @@ -1,5 +1,5 @@ SUBDIRS = @CAIRO_DIR@ src tests -DIST_SUBDIRS = pixman cairo src tests +DIST_SUBDIRS = src tests pkgconfigdir = $(libdir)/pkgconfig diff -Nru libgdiplus-4.0-2.10.9/Makefile.in libgdiplus-4.0-4.2.3+precise1/Makefile.in --- libgdiplus-4.0-2.10.9/Makefile.in 2012-01-31 17:28:26.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,804 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/libgdiplus.pc.in $(srcdir)/libgdiplus0.spec.in \ - $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ - TODO config.guess config.sub depcomp install-sh ltmain.sh \ - missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = libgdiplus.pc libgdiplus0.spec -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASE_DEPENDENCIES_CFLAGS = @BASE_DEPENDENCIES_CFLAGS@ -BASE_DEPENDENCIES_LIBS = @BASE_DEPENDENCIES_LIBS@ -CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_DIR = @CAIRO_DIR@ -CAIRO_LIBS = @CAIRO_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ -FONTCONFIG_CONFIG = @FONTCONFIG_CONFIG@ -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ -FREETYPE2_LIBS = @FREETYPE2_LIBS@ -FREETYPE_CONFIG = @FREETYPE_CONFIG@ -GDIPLUS_CFLAGS = @GDIPLUS_CFLAGS@ -GDIPLUS_LIBS = @GDIPLUS_LIBS@ -GDIPLUS_PKG_CFLAGS = @GDIPLUS_PKG_CFLAGS@ -GDIPLUS_PKG_LIBS = @GDIPLUS_PKG_LIBS@ -GDIPLUS_PKG_REQ = @GDIPLUS_PKG_REQ@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ -LIBEXIF_LIBS = @LIBEXIF_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PANGO_CFLAGS = @PANGO_CFLAGS@ -PANGO_LIBS = @PANGO_LIBS@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = @CAIRO_DIR@ src tests -DIST_SUBDIRS = pixman cairo src tests -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libgdiplus.pc -DISTCLEANFILES = libgdiplus.pc -EXTRA_DIST = libgdiplus.pc.in LICENSE MPL-1.1.html -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -libgdiplus.pc: $(top_builddir)/config.status $(srcdir)/libgdiplus.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -libgdiplus0.spec: $(top_builddir)/config.status $(srcdir)/libgdiplus0.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ - distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-pkgconfigDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/missing libgdiplus-4.0-4.2.3+precise1/missing --- libgdiplus-4.0-2.10.9/missing 2010-12-08 23:19:43.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/missing 1970-01-01 00:00:00.000000000 +0000 @@ -1,376 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# 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, 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, see . - -# 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/aclocal.m4 libgdiplus-4.0-4.2.3+precise1/pixman/aclocal.m4 --- libgdiplus-4.0-2.10.9/pixman/aclocal.m4 2011-12-02 17:31:58.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/aclocal.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,9570 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# 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|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -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. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have 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_default([$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` - test "x$?" != "x0" && pkg_failed=yes ], - [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 - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[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])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[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 .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 10 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - diff -Nru libgdiplus-4.0-2.10.9/pixman/ChangeLog libgdiplus-4.0-4.2.3+precise1/pixman/ChangeLog --- libgdiplus-4.0-2.10.9/pixman/ChangeLog 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/ChangeLog 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -2008-04-23 Sebastien Pouliot - - * configure.ac: Add same gcc check as MMX to SSE2. Fix build - on older bots. Thanks to kangaroo diff -Nru libgdiplus-4.0-2.10.9/pixman/config.guess libgdiplus-4.0-4.2.3+precise1/pixman/config.guess --- libgdiplus-4.0-2.10.9/pixman/config.guess 2012-01-31 17:28:04.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/config.guess 1970-01-01 00:00:00.000000000 +0000 @@ -1,1411 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2003-06-17' - -# This file 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. - -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -## for Red Hat Linux -if test -f /etc/redhat-release ; then - VENDOR=redhat ; -else - VENDOR= ; -fi - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha*:OpenVMS:*:*) - echo alpha-hp-vms - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - *:UNICOS/mp:*:*) - echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - ppc:Linux:*:*) - echo powerpc-${VENDOR:-unknown}-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-${VENDOR:-unknown}-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu - exit 0 ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-${VENDOR:-unknown}-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit 0 ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - case `uname -p` in - *86) UNAME_PROCESSOR=i686 ;; - powerpc) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/config.h.in libgdiplus-4.0-4.2.3+precise1/pixman/config.h.in --- libgdiplus-4.0-2.10.9/pixman/config.h.in 2012-01-31 17:28:04.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/config.h.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `getisax' function. */ -#undef HAVE_GETISAX - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* use MMX compiler intrinsics */ -#undef USE_MMX - -/* use SSE compiler intrinsics */ -#undef USE_SSE - -/* use SSE compiler intrinsics */ -#undef USE_SSE2 - -/* Version number of package */ -#undef VERSION - -/* Define to 1 if your processor stores words with the most significant byte - first (like Motorola and SPARC, unlike Intel and VAX). */ -#undef WORDS_BIGENDIAN diff -Nru libgdiplus-4.0-2.10.9/pixman/config.sub libgdiplus-4.0-4.2.3+precise1/pixman/config.sub --- libgdiplus-4.0-2.10.9/pixman/config.sub 2012-01-31 17:28:04.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/config.sub 1970-01-01 00:00:00.000000000 +0000 @@ -1,1500 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2003-06-18' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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. - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | msp430 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | s390 | s390x \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* \ - | m32r-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | s390-* | s390x-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/configure libgdiplus-4.0-4.2.3+precise1/pixman/configure --- libgdiplus-4.0-2.10.9/pixman/configure 2011-12-02 17:32:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/configure 1970-01-01 00:00:00.000000000 +0000 @@ -1,14175 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for pixman 0.10.0. -# -# Report bugs to <"sandmann@daimi.au.dk">. -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: "sandmann@daimi.au.dk" about your system, including any -$0: error possibly output before this message. Then install -$0: a modern shell, or manually run the script under such a -$0: shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='pixman' -PACKAGE_TARNAME='pixman' -PACKAGE_VERSION='0.10.0' -PACKAGE_STRING='pixman 0.10.0' -PACKAGE_BUGREPORT='"sandmann@daimi.au.dk"' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -DEP_LIBS -DEP_CFLAGS -HAVE_GTK_FALSE -HAVE_GTK_TRUE -GTK_LIBS -GTK_CFLAGS -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -SSE_CFLAGS -MMX_CFLAGS -USE_SSE2_FALSE -USE_SSE2_TRUE -USE_SSE_FALSE -USE_SSE_TRUE -USE_MMX_FALSE -USE_MMX_TRUE -LT_VERSION_INFO -PIXMAN_VERSION_MICRO -PIXMAN_VERSION_MINOR -PIXMAN_VERSION_MAJOR -CPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -EGREP -GREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -GTK_CFLAGS -GTK_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures pixman 0.10.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/pixman] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of pixman 0.10.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - GTK_CFLAGS C compiler flags for GTK, overriding pkg-config - GTK_LIBS linker flags for GTK, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to <"sandmann@daimi.au.dk">. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -pixman configure 0.10.0 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by pixman $as_me 0.10.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='pixman' - VERSION='0.10.0' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - -ac_config_headers="$ac_config_headers config.h" - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - link_all_deplibs=no - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -for ac_func in getisax -do : - ac_fn_c_check_func "$LINENO" "getisax" "ac_cv_func_getisax" -if test "x$ac_cv_func_getisax" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETISAX 1 -_ACEOF - -fi -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -# -# We ignore pixman_major in the version here because the major version should -# always be encoded in the actual library name. Ie., the soname is: -# -# pixman-$(pixman_major).0.minor.micro -# - - - - -LT_VERSION_INFO="10:0:10" - -PIXMAN_VERSION_MAJOR=0 - -PIXMAN_VERSION_MINOR=10 - -PIXMAN_VERSION_MICRO=0 - - - - -# Check for dependencies -#PKG_CHECK_MODULES(DEP, x11) - -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -Wall" ;; - esac fi - -have_gcc4=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility" >&5 -$as_echo_n "checking for -fvisibility... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined(__GNUC__) && (__GNUC__ >= 4) -#else -#error Need GCC 4.0 for visibility -#endif -int main () { return 0; } - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_gcc4=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test "x$have_gcc4" = "xyes"; then - CFLAGS="$CFLAGS -fvisibility=hidden" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc4" >&5 -$as_echo "$have_gcc4" >&6; } - - -MMX_CFLAGS="-mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" - -have_mmx_intrinsics=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use MMX intrinsics" >&5 -$as_echo_n "checking whether to use MMX intrinsics... " >&6; } -xserver_save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS $MMX_CFLAGS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#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); - return _mm_cvtsi64_si32 (v); -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_mmx_intrinsics=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS=$xserver_save_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mmx_intrinsics" >&5 -$as_echo "$have_mmx_intrinsics" >&6; } - -if test $have_mmx_intrinsics = yes ; then - -$as_echo "#define USE_MMX 1" >>confdefs.h - -else - MMX_CFLAGS= -fi - - if test $have_mmx_intrinsics = yes; then - USE_MMX_TRUE= - USE_MMX_FALSE='#' -else - USE_MMX_TRUE='#' - USE_MMX_FALSE= -fi - - - - -have_sse_intrinsics=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use SSE intrinsics" >&5 -$as_echo_n "checking whether to use SSE intrinsics... " >&6; } -xserver_save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS -msse $MMX_CFLAGS" - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if !defined(__amd64__) && !defined(__x86_64__) -#error "Need x86-64 for SSE" -#endif -#include -#include -int main () { - __m64 v = _mm_cvtsi32_si64 (1); - v = _mm_shuffle_pi16 (v, _MM_SHUFFLE(3, 3, 3, 3)); - return _mm_cvtsi64_si32 (v); -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_sse_intrinsics=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS=$xserver_save_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sse_intrinsics" >&5 -$as_echo "$have_sse_intrinsics" >&6; } - -if test $have_sse_intrinsics = yes ; then - -$as_echo "#define USE_SSE 1" >>confdefs.h - - MMX_CFLAGS="-msse $MMX_CFLAGS" -fi - - if test $have_sse_intrinsics = yes; then - USE_SSE_TRUE= - USE_SSE_FALSE='#' -else - USE_SSE_TRUE='#' - USE_SSE_FALSE= -fi - - - - -SSE_CFLAGS="-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" - -have_sse2_intrinsics=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use SSE2 intrinsics" >&5 -$as_echo_n "checking whether to use SSE2 intrinsics... " >&6; } -xserver_save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS -msse2 $MMX_CFLAGS" - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)) -#error "Need GCC >= 3.4 for SSE2 intrinsics" -#endif -#include -#include -int main () { - __m128i a, b, c; - c = _mm_xor_si128 (a, b); - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_sse2_intrinsics=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS=$xserver_save_CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sse2_intrinsics" >&5 -$as_echo "$have_sse2_intrinsics" >&6; } - -if test $have_sse2_intrinsics = yes ; then - -$as_echo "#define USE_SSE2 1" >>confdefs.h - -fi - - if test $have_sse2_intrinsics = yes; then - USE_SSE2_TRUE= - USE_SSE2_FALSE='#' -else - USE_SSE2_TRUE='#' - USE_SSE2_FALSE= -fi - - - - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 -$as_echo_n "checking for GTK... " >&6; } - -if test -n "$GTK_CFLAGS"; then - pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$GTK_LIBS"; then - pkg_cv_GTK_LIBS="$GTK_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-2.0" 2>&1` - else - GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-2.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$GTK_PKG_ERRORS" >&5 - - HAVE_GTK=no -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - HAVE_GTK=no -else - GTK_CFLAGS=$pkg_cv_GTK_CFLAGS - GTK_LIBS=$pkg_cv_GTK_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HAVE_GTK=yes -fi - if test "x$HAVE_GTK" = xyes; then - HAVE_GTK_TRUE= - HAVE_GTK_FALSE='#' -else - HAVE_GTK_TRUE='#' - HAVE_GTK_FALSE= -fi - - - - - - - -ac_config_files="$ac_config_files pixman-1.pc Makefile pixman/Makefile pixman/pixman-version.h" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -if test -z "${USE_MMX_TRUE}" && test -z "${USE_MMX_FALSE}"; then - as_fn_error $? "conditional \"USE_MMX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_SSE_TRUE}" && test -z "${USE_SSE_FALSE}"; then - as_fn_error $? "conditional \"USE_SSE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_SSE2_TRUE}" && test -z "${USE_SSE2_FALSE}"; then - as_fn_error $? "conditional \"USE_SSE2\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_GTK_TRUE}" && test -z "${HAVE_GTK_FALSE}"; then - as_fn_error $? "conditional \"HAVE_GTK\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by pixman $as_me 0.10.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <"sandmann@daimi.au.dk">." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -pixman config.status 0.10.0 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "pixman-1.pc") CONFIG_FILES="$CONFIG_FILES pixman-1.pc" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "pixman/Makefile") CONFIG_FILES="$CONFIG_FILES pixman/Makefile" ;; - "pixman/pixman-version.h") CONFIG_FILES="$CONFIG_FILES pixman/pixman-version.h" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="" - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff -Nru libgdiplus-4.0-2.10.9/pixman/configure.ac libgdiplus-4.0-4.2.3+precise1/pixman/configure.ac --- libgdiplus-4.0-2.10.9/pixman/configure.ac 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/configure.ac 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -dnl Copyright 2005 Red Hat, Inc. -dnl -dnl Permission to use, copy, modify, distribute, and sell this software and its -dnl documentation for any purpose is hereby granted without fee, provided that -dnl the above copyright notice appear in all copies and that both that -dnl copyright notice and this permission notice appear in supporting -dnl documentation, and that the name of Red Hat not be used in -dnl advertising or publicity pertaining to distribution of the software without -dnl specific, written prior permission. Red Hat makes no -dnl representations about the suitability of this software for any purpose. It -dnl is provided "as is" without express or implied warranty. -dnl -dnl RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -dnl EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR -dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -dnl PERFORMANCE OF THIS SOFTWARE. -dnl -dnl Process this file with autoconf to create configure. - -AC_PREREQ([2.57]) - -# Pixman versioning scheme -# -# - The git version must at all times have an odd MICRO version -# number. -# -# - If you add API, increment the MICRO version to the next largest -# odd number. -# -# - If you release a version that contains new API, then increment -# MINOR and set MICRO to 0. -# -# - If you release a new version that does not contain new API, then -# increment MICRO to the next even number. -# -# - After doing a release, increment MICRO again to make the version -# number in git odd. -# -# - If you break the ABI, then -# -# - increment MAJOR -# -# - In the first development release where you break ABI, find -# all instances of "pixman-n" and change them to pixman-(n+1) -# -# This needs to be done at least in -# configure.ac -# all Makefile.am's -# pixman-n.pc.in -# -# This ensures that binary incompatible versions can be installed -# in parallel. See http://www106.pair.com/rhp/parallel.html for -# more information - -m4_define([pixman_major], 0) -m4_define([pixman_minor], 10) -m4_define([pixman_micro], 0) - -m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro]) - -AC_INIT(pixman, pixman_version, "sandmann@daimi.au.dk", pixman) -AM_INIT_AUTOMAKE([dist-bzip2]) - -AM_CONFIG_HEADER(config.h) - -AC_PROG_CC -AC_PROG_LIBTOOL -AC_CHECK_FUNCS([getisax]) -AC_C_BIGENDIAN - -# -# We ignore pixman_major in the version here because the major version should -# always be encoded in the actual library name. Ie., the soname is: -# -# pixman-$(pixman_major).0.minor.micro -# -m4_define([lt_current], [pixman_minor]) -m4_define([lt_revision], [pixman_micro]) -m4_define([lt_age], [pixman_minor]) - -LT_VERSION_INFO="lt_current:lt_revision:lt_age" - -PIXMAN_VERSION_MAJOR=pixman_major() -AC_SUBST(PIXMAN_VERSION_MAJOR) -PIXMAN_VERSION_MINOR=pixman_minor() -AC_SUBST(PIXMAN_VERSION_MINOR) -PIXMAN_VERSION_MICRO=pixman_micro() -AC_SUBST(PIXMAN_VERSION_MICRO) - -AC_SUBST(LT_VERSION_INFO) - -# Check for dependencies -#PKG_CHECK_MODULES(DEP, x11) - -changequote(,)dnl -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -Wall" ;; - esac fi changequote([,])dnl - -dnl ========================================================================= -dnl -fvisibility stuff - -have_gcc4=no -AC_MSG_CHECKING(for -fvisibility) -AC_COMPILE_IFELSE([ -#if defined(__GNUC__) && (__GNUC__ >= 4) -#else -#error Need GCC 4.0 for visibility -#endif -int main () { return 0; } -], have_gcc4=yes) - -if test "x$have_gcc4" = "xyes"; then - CFLAGS="$CFLAGS -fvisibility=hidden" -fi -AC_MSG_RESULT($have_gcc4) - -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(whether to use MMX intrinsics) -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); - 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 - -AM_CONDITIONAL(USE_MMX, test $have_mmx_intrinsics = yes) - -dnl ======================================================= - -dnl GCC 4.2 when compiling with -msse will generate SSE instructions -dnl on its own. This means anything compiled with -mss can only be -dnl run after a runtime check for SSE. Unfortunately, since we still -dnl need to support MMX-but-not-SSE (such as the OLPC), this means we -dnl can only use SSE when compiling for x86-64 (where SSE is always -dnl supported). - -have_sse_intrinsics=no -AC_MSG_CHECKING(whether to use SSE intrinsics) -xserver_save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS -msse $MMX_CFLAGS" - -AC_COMPILE_IFELSE([ -#if !defined(__amd64__) && !defined(__x86_64__) -#error "Need x86-64 for SSE" -#endif -#include -#include -int main () { - __m64 v = _mm_cvtsi32_si64 (1); - v = _mm_shuffle_pi16 (v, _MM_SHUFFLE(3, 3, 3, 3)); - return _mm_cvtsi64_si32 (v); -}], have_sse_intrinsics=yes) -CFLAGS=$xserver_save_CFLAGS -AC_MSG_RESULT($have_sse_intrinsics) - -if test $have_sse_intrinsics = yes ; then - AC_DEFINE(USE_SSE, 1, [use SSE compiler intrinsics]) - MMX_CFLAGS="-msse $MMX_CFLAGS" -fi - -AM_CONDITIONAL(USE_SSE, test $have_sse_intrinsics = yes) - - -dnl =========================================================================== -dnl Check for SSE2 - -SSE_CFLAGS="-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" - -have_sse2_intrinsics=no -AC_MSG_CHECKING(whether to use SSE2 intrinsics) -xserver_save_CFLAGS=$CFLAGS -CFLAGS="$CFLAGS -msse2 $MMX_CFLAGS" - -AC_COMPILE_IFELSE([ -#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)) -#error "Need GCC >= 3.4 for SSE2 intrinsics" -#endif -#include -#include -int main () { - __m128i a, b, c; - c = _mm_xor_si128 (a, b); - return 0; -}], have_sse2_intrinsics=yes) -CFLAGS=$xserver_save_CFLAGS -AC_MSG_RESULT($have_sse2_intrinsics) - -if test $have_sse2_intrinsics = yes ; then - AC_DEFINE(USE_SSE2, 1, [use SSE compiler intrinsics]) -fi - -AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes) - -dnl ======================================================== -AC_SUBST(MMX_CFLAGS) -AC_SUBST(SSE_CFLAGS) - -PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no]) -AM_CONDITIONAL(HAVE_GTK, [test "x$HAVE_GTK" = xyes]) - -AC_SUBST(GTK_CFLAGS) -AC_SUBST(GTK_LIBS) -AC_SUBST(DEP_CFLAGS) -AC_SUBST(DEP_LIBS) - -AC_OUTPUT([pixman-1.pc - Makefile - pixman/Makefile - pixman/pixman-version.h]) diff -Nru libgdiplus-4.0-2.10.9/pixman/depcomp libgdiplus-4.0-4.2.3+precise1/pixman/depcomp --- libgdiplus-4.0-2.10.9/pixman/depcomp 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/depcomp 1970-01-01 00:00:00.000000000 +0000 @@ -1,584 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2006-10-15.18 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software -# Foundation, Inc. - -# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, 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. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - stat=$? - - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - outname="$stripped.o" - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/INSTALL libgdiplus-4.0-4.2.3+precise1/pixman/INSTALL --- libgdiplus-4.0-2.10.9/pixman/INSTALL 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/INSTALL 1970-01-01 00:00:00.000000000 +0000 @@ -1,234 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006 Free Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - -Installation Names -================== - -By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff -Nru libgdiplus-4.0-2.10.9/pixman/install-sh libgdiplus-4.0-4.2.3+precise1/pixman/install-sh --- libgdiplus-4.0-2.10.9/pixman/install-sh 2012-01-31 17:28:04.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/install-sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,507 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2006-10-14.15 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -posix_glob= -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chmodcmd=$chmodprog -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= -dstarg= -no_target_directory= - -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - shift - shift - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac -done - -if test $# -ne 0 && test -z "$dir_arg$dstarg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src ;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dstarg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dstarg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix=/ ;; - -*) prefix=./ ;; - *) prefix= ;; - esac - - case $posix_glob in - '') - if (set -f) 2>/dev/null; then - posix_glob=true - else - posix_glob=false - fi ;; - esac - - oIFS=$IFS - IFS=/ - $posix_glob && set -f - set fnord $dstdir - shift - $posix_glob && set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dst"; then - $doit $rmcmd -f "$dst" 2>/dev/null \ - || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ - && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ - || { - echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - } || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/ltmain.sh libgdiplus-4.0-4.2.3+precise1/pixman/ltmain.sh --- libgdiplus-4.0-2.10.9/pixman/ltmain.sh 2012-01-31 17:28:04.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/ltmain.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,6911 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. - -basename="s,^.*/,,g" - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - -# The name of this program: -progname=`echo "$progpath" | $SED $basename` -modename="$progname" - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION=1.5.22 -TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" - -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -duplicate_deps=no -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $mkdir "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || { - $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 - exit $EXIT_FAILURE - } - fi - - $echo "X$my_tmpdir" | $Xsed -} - - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -func_win32_libid () -{ - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $echo $win32_libid_type -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case "$@ " in - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit $EXIT_FAILURE -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - - $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" - $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 - exit $EXIT_FAILURE - fi -} - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - my_status="" - - $show "${rm}r $my_gentop" - $run ${rm}r "$my_gentop" - $show "$mkdir $my_gentop" - $run $mkdir "$my_gentop" - my_status=$? - if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then - exit $my_status - fi - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - extracted_serial=`expr $extracted_serial + 1` - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - $show "${rm}r $my_xdir" - $run ${rm}r "$my_xdir" - $show "$mkdir $my_xdir" - $run $mkdir "$my_xdir" - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then - exit $exit_status - fi - case $host in - *-darwin*) - $show "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - if test -z "$run"; then - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` - darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` - if test -n "$darwin_arches"; then - darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - $show "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we have a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` - lipo -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - ${rm}r unfat-$$ - cd "$darwin_orig_dir" - else - cd "$darwin_orig_dir" - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - fi # $run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - func_extract_archives_result="$my_oldobjs" -} -# End of Shell function definitions -##################################### - -# Darwin sucks -eval std_shrext=\"$shrext_cmds\" - -disable_libs=no - -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift - - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi - ;; - esac - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; - - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo - $echo "Copyright (C) 2005 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit $? - ;; - - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" - done - exit $? - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x - preserve_args="$preserve_args $arg" - ;; - - --dry-run | -n) - run=: - ;; - - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit $? - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - preserve_args="$preserve_args $arg" - ;; - - --tag) - prevopt="--tag" - prev=tag - preserve_args="$preserve_args --tag" - ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - preserve_args="$preserve_args --tag" - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE -fi - -case $disable_libs in -no) - ;; -shared) - build_libtool_libs=no - build_old_libs=yes - ;; -static) - build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` - ;; -esac - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit $EXIT_FAILURE - fi - arg_mode=target - continue - ;; - - -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" - done - IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` - - # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" - continue - ;; - - * ) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, and some SunOS ksh mistreat backslash-escaping - # in scan sets (worked around with variable expansion), - # and furthermore cannot handle '|' '&' '(' ')' in scan sets - # at all, so we specify them separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" - done # for arg - - case $arg_mode in - arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit $EXIT_FAILURE - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit $EXIT_FAILURE - ;; - *) - # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - *.java) xform=java ;; - *.obj) xform=obj ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` - case $qlibobj in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qlibobj="\"$qlibobj\"" ;; - esac - test "X$libobj" != "X$qlibobj" \ - && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi - lobj=${xdir}$objdir/$objname - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $run ln "$progpath" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - $echo "$srcfile" > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` - case $qsrcfile in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qsrcfile="\"$qsrcfile\"" ;; - esac - - $run $rm "$libobj" "${libobj}T" - - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit $EXIT_FAILURE - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat $save_arg` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - done - else - $echo "$modename: link input file \`$save_arg' does not exist" - exit $EXIT_FAILURE - fi - arg=$save_arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - darwin_framework|darwin_framework_skip) - test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework|-arch|-isysroot) - case " $CC " in - *" ${arg} ${1} "* | *" ${arg} ${1} "*) - prev=darwin_framework_skip ;; - *) compiler_flags="$compiler_flags $arg" - prev=darwin_framework ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; - esac - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - notinst_path="$notinst_path $dir" - fi - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - -model) - compile_command="$compile_command $arg" - compiler_flags="$compiler_flags $arg" - finalize_command="$finalize_command $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m* pass through architecture-specific compiler args for GCC - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -pg pass through profiling flag for GCC - # @file GCC response files - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ - -t[45]*|-txscale*|@*) - - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - compiler_flags="$compiler_flags $arg" - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # The PATH hackery in wrapper scripts is required on Windows - # in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done # argument parsing loop - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then - exit $exit_status - fi - fi - - # Determine the type of output - case $output in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) - duplicate_compiler_generated_deps=$duplicate_deps - ;; - esac - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - for pass in $passes; do - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - library_names= - old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - if eval $echo \"$deplib\" 2>/dev/null \ - | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 - exit $EXIT_FAILURE - fi - - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit $EXIT_FAILURE - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - abs_ladir="$ladir" - fi - ;; - esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $absdir" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes ; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - # This is a shared library - - # Warn about portability, can't link against -module's on - # some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi - $echo "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a module then we can not link against - # it, someone is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | - $EGREP ": [^:]* bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit $EXIT_FAILURE - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - case $deplib in - -L*) path="$deplib" ;; - *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - fi - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) - # we do not want to link against static libs, - # but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac - fi - path="" - ;; - *) - path="-L$path" - ;; - esac - ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$depdepl $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit $EXIT_FAILURE - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$2" - number_minor="$3" - number_revision="$4" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - current=`expr $number_major + $number_minor` - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - current=`expr $number_major + $number_minor - 1` - age="$number_minor" - revision="$number_minor" - ;; - esac - ;; - no) - current="$2" - revision="$3" - age="$4" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` - verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - irix | nonstopux) - major=`expr $current - $age + 1` - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - major=`expr $current - $age` - versuffix="-$major" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - fi - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. -# for path in $notinst_path; do -# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` -# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` -# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` -# done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` - done - fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo - if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." - else - $echo "*** Warning: inter-library dependencies are not known to be supported." - fi - $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - deplibs="$new_libs" - - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false - else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - output_la=`$echo "X$output" | $Xsed -e "$basename"` - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - delfiles= - last_robj= - k=1 - output=$output_objdir/$output_la-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$output_la-${k}.$objext - objlist=$obj - len=1 - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - - # Set up a command to remove the reloadable object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~\$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case $output in - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; - esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* ) - $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - else - $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* ) - $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -" - - case $host in - *cygwin* | *mingw* ) - $echo >> "$output_objdir/$dlsyms" "\ -/* DATA imports from DLLs on WIN32 can't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs */ -struct { -" - ;; - * ) - $echo >> "$output_objdir/$dlsyms" "\ -const struct { -" - ;; - esac - - - $echo >> "$output_objdir/$dlsyms" "\ - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" - - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - case $host in - *cygwin* | *mingw* ) - if test -f "$output_objdir/${outputname}.def" ; then - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - else - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - fi - ;; - * ) - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - ;; - esac - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - exit_status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $exit_status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $run $rm $output - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - output_name=`basename $output` - output_path=`dirname $output` - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -/* -DDEBUG is fairly common in CFLAGS. */ -#undef DEBUG -#if defined DEBUGWRAPPER -# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) -#else -# define DEBUG(format, ...) -#endif - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -const char * base_name (const char *name); -char * find_executable(const char *wrapper); -int check_executable(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - DEBUG("(main) argv[0] : %s\n",argv[0]); - DEBUG("(main) program_name : %s\n",program_name); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = find_executable(argv[0]); - if (newargz[1] == NULL) - lt_fatal("Couldn't find %s", argv[0]); - DEBUG("(main) found exe at : %s\n",newargz[1]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; - - for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" - return 127; -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char)name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable(const char * path) -{ - struct stat st; - - DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) && - ( - /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ -#if defined (S_IXOTH) - ((st.st_mode & S_IXOTH) == S_IXOTH) || -#endif -#if defined (S_IXGRP) - ((st.st_mode & S_IXGRP) == S_IXGRP) || -#endif - ((st.st_mode & S_IXUSR) == S_IXUSR)) - ) - return 1; - else - return 0; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise */ -char * -find_executable (const char* wrapper) -{ - int has_slash = 0; - const char* p; - const char* p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char* concat_name; - - DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char* path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char* q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR(*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen(tmp); - concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen(tmp); - concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - return NULL; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit $EXIT_FAILURE - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \$*\" - exit $EXIT_FAILURE - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit $EXIT_FAILURE - fi -fi\ -" - chmod +x $output - fi - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "copying selected object files to avoid basename conflicts..." - - if test -z "$gentop"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$gentop"; then - exit $exit_status - fi - fi - - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - counter=`expr $counter + 1` - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - $run ln "$obj" "$gentop/$newobj" || - $run cp "$obj" "$gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - eval cmd=\"$cmd\" - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $rm $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ -relink_command=\"$relink_command\"" - fi - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac - exit $EXIT_SUCCESS - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac - ;; - -g | -m | -o) prev=$arg ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` - else - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit $EXIT_FAILURE - fi - fi - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; - esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit $EXIT_FAILURE - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir=`func_mktempdir` - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; - esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - if test -n "$stripme" && test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit $EXIT_SUCCESS - - $echo "X----------------------------------------------------------------------" | $Xsed - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" - done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "X----------------------------------------------------------------------" | $Xsed - exit $EXIT_SUCCESS - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit $EXIT_FAILURE - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit $EXIT_SUCCESS - fi - ;; - - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - - case "$mode" in - clean) - case " $library_names " in - # " " in the beginning catches empty $dlname - *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; - esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - - # Read the .lo file - . $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 - fi - done - - exit $exit_status - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - fi -fi # test -z "$show_help" - -if test -n "$exec_cmd"; then - eval exec $exec_cmd - exit $EXIT_FAILURE -fi - -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to ." - exit $EXIT_SUCCESS - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit $? - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -disable_libs=shared -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -disable_libs=static -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/Makefile.am libgdiplus-4.0-4.2.3+precise1/pixman/Makefile.am --- libgdiplus-4.0-2.10.9/pixman/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,127 +0,0 @@ -SUBDIRS = pixman - -#pkgconfigdir=$(libdir)/pkgconfig -noinst_DATA=pixman-1.pc - -$(pkgconfig_DATA): pixman-1.pc.in - -snapshot: - distdir="$(distdir)-`date '+%Y%m%d'`"; \ - test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \ - $(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist - -USERNAME=$$USER -RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) -RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org -RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/releases -RELEASE_CAIRO_URL = http://cairographics.org/releases -RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib -RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org -RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib -RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org - -tar_gz = $(PACKAGE)-$(VERSION).tar.gz -tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2 - -sha1_tgz = $(tar_gz).sha1 -md5_tgz = $(tar_gz).md5 - -sha1_tbz2 = $(tar_bz2).sha1 -md5_tbz2 = $(tar_bz2).md5 - -gpg_file = $(sha1_tgz).asc - -$(sha1_tgz): $(tar_gz) - sha1sum $^ > $@ - -$(md5_tgz): $(tar_gz) - md5sum $^ > $@ - -$(sha1_tbz2): $(tar_bz2) - sha1sum $^ > $@ - -$(md5_tbz2): $(tar_bz2) - md5sum $^ > $@ - -$(gpg_file): $(sha1_tgz) - @echo "Please enter your GPG password to sign the checksum." - gpg --armor --sign $^ - -release-verify-newer: - @echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..." - @ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \ - || (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \ - && echo "Refusing to try to generate a new release of the same name." \ - && false) - @ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \ - || (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \ - && echo "Refusing to try to generate a new release of the same name." \ - && false) - @echo "Good." - -release-remove-old: - $(RM) $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file) - -ensure-prev: - @if [[ "$(PREV)" == "" ]]; then \ - echo "" && \ - echo "You must set the PREV variable on the make command line to" && \ - echo "the git tag of the last release." && \ - echo "" && \ - echo "For example:" && \ - echo " make PREV=pixman-0.7.3" && \ - echo "" && \ - false; \ - fi - -release-check: ensure-prev release-verify-newer release-remove-old distcheck - -release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file) - mkdir -p releases - scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR) - scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR) - ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)" - git-tag -s -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION) - -release-publish-message: $(sha1_tgz) $(md5_tgz) $(sha1_tbz2) $(md5_tbz2) ensure-prev - @echo "Please follow the instructions in RELEASING to push stuff out and" - @echo "send out the announcement mails. Here is the excerpt you need:" - @echo "" - @echo "Lists: $(RELEASE_ANNOUNCE_LIST)" - @echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available" - @echo "============================== CUT HERE ==============================" - @echo "A new $(PACKAGE) release $(VERSION) is now available" - @echo "" - @echo "tar.gz:" - @echo " $(RELEASE_CAIRO_URL)/$(tar_gz)" - @echo " $(RELEASE_XORG_URL)/$(tar_gz)" - @echo "" - @echo "tar.bz2:" - @echo " $(RELEASE_XORG_URL)/$(tar_bz2)" - @echo "" - @echo "Hashes:" - @echo -n " MD5: " - @cat $(md5_tgz) - @echo -n " MD5: " - @cat $(md5_tbz2) - @echo -n " SHA1: " - @cat $(sha1_tgz) - @echo -n " SHA1: " - @cat $(sha1_tbz2) - @echo "" - @echo "GPG signature:" - @echo " $(RELEASE_CAIRO_URL)/$(gpg_file)" - @echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)" - @echo "" - @echo "Git:" - @echo " git://git.freedesktop.org/git/pixman" - @echo " tag: $(PACKAGE)-$(VERSION)" - @echo "" - @echo "Log:" - @git-log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b0-80 - @echo "============================== CUT HERE ==============================" - @echo "" - -release-publish: release-upload release-publish-message - -.PHONY: release-upload release-publish release-publish-message diff -Nru libgdiplus-4.0-2.10.9/pixman/Makefile.in libgdiplus-4.0-4.2.3+precise1/pixman/Makefile.in --- libgdiplus-4.0-2.10.9/pixman/Makefile.in 2011-12-02 17:32:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,854 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/pixman-1.pc.in $(top_srcdir)/configure AUTHORS \ - COPYING ChangeLog INSTALL NEWS TODO config.guess config.sub \ - depcomp install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = pixman-1.pc -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -DATA = $(noinst_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DEP_CFLAGS = @DEP_CFLAGS@ -DEP_LIBS = @DEP_LIBS@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_LIBS = @GTK_LIBS@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_VERSION_INFO = @LT_VERSION_INFO@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MMX_CFLAGS = @MMX_CFLAGS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PIXMAN_VERSION_MAJOR = @PIXMAN_VERSION_MAJOR@ -PIXMAN_VERSION_MICRO = @PIXMAN_VERSION_MICRO@ -PIXMAN_VERSION_MINOR = @PIXMAN_VERSION_MINOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SSE_CFLAGS = @SSE_CFLAGS@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = pixman - -#pkgconfigdir=$(libdir)/pkgconfig -noinst_DATA = pixman-1.pc -USERNAME = $$USER -RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi) -RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org -RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/releases -RELEASE_CAIRO_URL = http://cairographics.org/releases -RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib -RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org -RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib -RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org -tar_gz = $(PACKAGE)-$(VERSION).tar.gz -tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2 -sha1_tgz = $(tar_gz).sha1 -md5_tgz = $(tar_gz).md5 -sha1_tbz2 = $(tar_bz2).sha1 -md5_tbz2 = $(tar_bz2).md5 -gpg_file = $(sha1_tgz).asc -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -pixman-1.pc: $(top_builddir)/config.status $(srcdir)/pixman-1.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ - distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-recursive uninstall uninstall-am - - -$(pkgconfig_DATA): pixman-1.pc.in - -snapshot: - distdir="$(distdir)-`date '+%Y%m%d'`"; \ - test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \ - $(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist - -$(sha1_tgz): $(tar_gz) - sha1sum $^ > $@ - -$(md5_tgz): $(tar_gz) - md5sum $^ > $@ - -$(sha1_tbz2): $(tar_bz2) - sha1sum $^ > $@ - -$(md5_tbz2): $(tar_bz2) - md5sum $^ > $@ - -$(gpg_file): $(sha1_tgz) - @echo "Please enter your GPG password to sign the checksum." - gpg --armor --sign $^ - -release-verify-newer: - @echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..." - @ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \ - || (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \ - && echo "Refusing to try to generate a new release of the same name." \ - && false) - @ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \ - || (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \ - && echo "Refusing to try to generate a new release of the same name." \ - && false) - @echo "Good." - -release-remove-old: - $(RM) $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file) - -ensure-prev: - @if [[ "$(PREV)" == "" ]]; then \ - echo "" && \ - echo "You must set the PREV variable on the make command line to" && \ - echo "the git tag of the last release." && \ - echo "" && \ - echo "For example:" && \ - echo " make PREV=pixman-0.7.3" && \ - echo "" && \ - false; \ - fi - -release-check: ensure-prev release-verify-newer release-remove-old distcheck - -release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file) - mkdir -p releases - scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR) - scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR) - ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)" - git-tag -s -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION) - -release-publish-message: $(sha1_tgz) $(md5_tgz) $(sha1_tbz2) $(md5_tbz2) ensure-prev - @echo "Please follow the instructions in RELEASING to push stuff out and" - @echo "send out the announcement mails. Here is the excerpt you need:" - @echo "" - @echo "Lists: $(RELEASE_ANNOUNCE_LIST)" - @echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available" - @echo "============================== CUT HERE ==============================" - @echo "A new $(PACKAGE) release $(VERSION) is now available" - @echo "" - @echo "tar.gz:" - @echo " $(RELEASE_CAIRO_URL)/$(tar_gz)" - @echo " $(RELEASE_XORG_URL)/$(tar_gz)" - @echo "" - @echo "tar.bz2:" - @echo " $(RELEASE_XORG_URL)/$(tar_bz2)" - @echo "" - @echo "Hashes:" - @echo -n " MD5: " - @cat $(md5_tgz) - @echo -n " MD5: " - @cat $(md5_tbz2) - @echo -n " SHA1: " - @cat $(sha1_tgz) - @echo -n " SHA1: " - @cat $(sha1_tbz2) - @echo "" - @echo "GPG signature:" - @echo " $(RELEASE_CAIRO_URL)/$(gpg_file)" - @echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)" - @echo "" - @echo "Git:" - @echo " git://git.freedesktop.org/git/pixman" - @echo " tag: $(PACKAGE)-$(VERSION)" - @echo "" - @echo "Log:" - @git-log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b0-80 - @echo "============================== CUT HERE ==============================" - @echo "" - -release-publish: release-upload release-publish-message - -.PHONY: release-upload release-publish release-publish-message - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/pixman/missing libgdiplus-4.0-4.2.3+precise1/pixman/missing --- libgdiplus-4.0-2.10.9/pixman/missing 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/missing 1970-01-01 00:00:00.000000000 +0000 @@ -1,367 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2006-05-10.23 - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). -case $1 in - lex|yacc) - # Not GNU programs, they don't have --version. - ;; - - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $1 in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/Makefile.am libgdiplus-4.0-4.2.3+precise1/pixman/pixman/Makefile.am --- libgdiplus-4.0-2.10.9/pixman/pixman/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -noinst_LTLIBRARIES = libpixman-1.la -libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -libpixman_1_la_LIBADD = @DEP_LIBS@ -lm -libpixman_1_la_SOURCES = \ - pixman.h \ - pixman-access.c \ - pixman-access-accessors.c \ - pixman-embed.h \ - pixman-region.c \ - pixman-private.h \ - pixman-image.c \ - pixman-combine.c \ - pixman-compose.c \ - pixman-compose-accessors.c \ - pixman-pict.c \ - pixman-source.c \ - pixman-transformed.c \ - pixman-transformed-accessors.c \ - pixman-utils.c \ - pixman-edge.c \ - pixman-edge-accessors.c \ - pixman-edge-imp.h \ - pixman-trap.c \ - pixman-compute-region.c \ - pixman-timer.c - -#libpixmanincludedir = $(includedir)/pixman-1/ -noinst_HEADERS = pixman.h pixman-version.h - -EXTRA_DIST = Makefile.win32 - -# mmx code -if USE_MMX -noinst_LTLIBRARIES += libpixman-mmx.la -libpixman_mmx_la_SOURCES = \ - pixman-mmx.c \ - pixman-mmx.h -libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS) -libpixman_mmx_la_LIBADD = $(DEP_LIBS) -libpixman_1_la_LIBADD += libpixman-mmx.la -endif - - -# sse2 code -if USE_SSE2 -noinst_LTLIBRARIES += libpixman-sse.la -libpixman_sse_la_SOURCES = \ - pixman-sse.c \ - pixman-sse.h -libpixman_sse_la_CFLAGS = $(DEP_CFLAGS) $(SSE_CFLAGS) -libpixman_sse_la_LIBADD = $(DEP_LIBS) -libpixman_1_la_LIBADD += libpixman-sse.la -endif - diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/Makefile.in libgdiplus-4.0-4.2.3+precise1/pixman/pixman/Makefile.in --- libgdiplus-4.0-2.10.9/pixman/pixman/Makefile.in 2011-12-02 17:32:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,598 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ - -# mmx code -@USE_MMX_TRUE@am__append_1 = libpixman-mmx.la -@USE_MMX_TRUE@am__append_2 = libpixman-mmx.la - -# sse2 code -@USE_SSE2_TRUE@am__append_3 = libpixman-sse.la -@USE_SSE2_TRUE@am__append_4 = libpixman-sse.la -subdir = pixman -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/pixman-version.h.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = pixman-version.h -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libpixman_1_la_DEPENDENCIES = $(am__append_2) $(am__append_4) -am_libpixman_1_la_OBJECTS = pixman-access.lo \ - pixman-access-accessors.lo pixman-region.lo pixman-image.lo \ - pixman-combine.lo pixman-compose.lo \ - pixman-compose-accessors.lo pixman-pict.lo pixman-source.lo \ - pixman-transformed.lo pixman-transformed-accessors.lo \ - pixman-utils.lo pixman-edge.lo pixman-edge-accessors.lo \ - pixman-trap.lo pixman-compute-region.lo pixman-timer.lo -libpixman_1_la_OBJECTS = $(am_libpixman_1_la_OBJECTS) -libpixman_1_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libpixman_1_la_LDFLAGS) $(LDFLAGS) -o $@ -am__DEPENDENCIES_1 = -@USE_MMX_TRUE@libpixman_mmx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__libpixman_mmx_la_SOURCES_DIST = pixman-mmx.c pixman-mmx.h -@USE_MMX_TRUE@am_libpixman_mmx_la_OBJECTS = \ -@USE_MMX_TRUE@ libpixman_mmx_la-pixman-mmx.lo -libpixman_mmx_la_OBJECTS = $(am_libpixman_mmx_la_OBJECTS) -libpixman_mmx_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpixman_mmx_la_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -@USE_MMX_TRUE@am_libpixman_mmx_la_rpath = -@USE_SSE2_TRUE@libpixman_sse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__libpixman_sse_la_SOURCES_DIST = pixman-sse.c pixman-sse.h -@USE_SSE2_TRUE@am_libpixman_sse_la_OBJECTS = \ -@USE_SSE2_TRUE@ libpixman_sse_la-pixman-sse.lo -libpixman_sse_la_OBJECTS = $(am_libpixman_sse_la_OBJECTS) -libpixman_sse_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpixman_sse_la_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -@USE_SSE2_TRUE@am_libpixman_sse_la_rpath = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libpixman_1_la_SOURCES) $(libpixman_mmx_la_SOURCES) \ - $(libpixman_sse_la_SOURCES) -DIST_SOURCES = $(libpixman_1_la_SOURCES) \ - $(am__libpixman_mmx_la_SOURCES_DIST) \ - $(am__libpixman_sse_la_SOURCES_DIST) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DEP_CFLAGS = @DEP_CFLAGS@ -DEP_LIBS = @DEP_LIBS@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_LIBS = @GTK_LIBS@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_VERSION_INFO = @LT_VERSION_INFO@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MMX_CFLAGS = @MMX_CFLAGS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PIXMAN_VERSION_MAJOR = @PIXMAN_VERSION_MAJOR@ -PIXMAN_VERSION_MICRO = @PIXMAN_VERSION_MICRO@ -PIXMAN_VERSION_MINOR = @PIXMAN_VERSION_MINOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SSE_CFLAGS = @SSE_CFLAGS@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_LTLIBRARIES = libpixman-1.la $(am__append_1) $(am__append_3) -libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -libpixman_1_la_LIBADD = @DEP_LIBS@ -lm $(am__append_2) $(am__append_4) -libpixman_1_la_SOURCES = \ - pixman.h \ - pixman-access.c \ - pixman-access-accessors.c \ - pixman-embed.h \ - pixman-region.c \ - pixman-private.h \ - pixman-image.c \ - pixman-combine.c \ - pixman-compose.c \ - pixman-compose-accessors.c \ - pixman-pict.c \ - pixman-source.c \ - pixman-transformed.c \ - pixman-transformed-accessors.c \ - pixman-utils.c \ - pixman-edge.c \ - pixman-edge-accessors.c \ - pixman-edge-imp.h \ - pixman-trap.c \ - pixman-compute-region.c \ - pixman-timer.c - - -#libpixmanincludedir = $(includedir)/pixman-1/ -noinst_HEADERS = pixman.h pixman-version.h -EXTRA_DIST = Makefile.win32 -@USE_MMX_TRUE@libpixman_mmx_la_SOURCES = \ -@USE_MMX_TRUE@ pixman-mmx.c \ -@USE_MMX_TRUE@ pixman-mmx.h - -@USE_MMX_TRUE@libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS) -@USE_MMX_TRUE@libpixman_mmx_la_LIBADD = $(DEP_LIBS) -@USE_SSE2_TRUE@libpixman_sse_la_SOURCES = \ -@USE_SSE2_TRUE@ pixman-sse.c \ -@USE_SSE2_TRUE@ pixman-sse.h - -@USE_SSE2_TRUE@libpixman_sse_la_CFLAGS = $(DEP_CFLAGS) $(SSE_CFLAGS) -@USE_SSE2_TRUE@libpixman_sse_la_LIBADD = $(DEP_LIBS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixman/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu pixman/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -pixman-version.h: $(top_builddir)/config.status $(srcdir)/pixman-version.h.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libpixman-1.la: $(libpixman_1_la_OBJECTS) $(libpixman_1_la_DEPENDENCIES) - $(libpixman_1_la_LINK) $(libpixman_1_la_OBJECTS) $(libpixman_1_la_LIBADD) $(LIBS) -libpixman-mmx.la: $(libpixman_mmx_la_OBJECTS) $(libpixman_mmx_la_DEPENDENCIES) - $(libpixman_mmx_la_LINK) $(am_libpixman_mmx_la_rpath) $(libpixman_mmx_la_OBJECTS) $(libpixman_mmx_la_LIBADD) $(LIBS) -libpixman-sse.la: $(libpixman_sse_la_OBJECTS) $(libpixman_sse_la_DEPENDENCIES) - $(libpixman_sse_la_LINK) $(am_libpixman_sse_la_rpath) $(libpixman_sse_la_OBJECTS) $(libpixman_sse_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixman_mmx_la-pixman-mmx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixman_sse_la-pixman-sse.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-access-accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-access.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-combine.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-compose-accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-compose.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-compute-region.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-edge-accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-edge.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-image.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-pict.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-region.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-source.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-timer.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-transformed-accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-transformed.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-trap.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-utils.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libpixman_mmx_la-pixman-mmx.lo: pixman-mmx.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_mmx_la_CFLAGS) $(CFLAGS) -MT libpixman_mmx_la-pixman-mmx.lo -MD -MP -MF $(DEPDIR)/libpixman_mmx_la-pixman-mmx.Tpo -c -o libpixman_mmx_la-pixman-mmx.lo `test -f 'pixman-mmx.c' || echo '$(srcdir)/'`pixman-mmx.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpixman_mmx_la-pixman-mmx.Tpo $(DEPDIR)/libpixman_mmx_la-pixman-mmx.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pixman-mmx.c' object='libpixman_mmx_la-pixman-mmx.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_mmx_la_CFLAGS) $(CFLAGS) -c -o libpixman_mmx_la-pixman-mmx.lo `test -f 'pixman-mmx.c' || echo '$(srcdir)/'`pixman-mmx.c - -libpixman_sse_la-pixman-sse.lo: pixman-sse.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_sse_la_CFLAGS) $(CFLAGS) -MT libpixman_sse_la-pixman-sse.lo -MD -MP -MF $(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo -c -o libpixman_sse_la-pixman-sse.lo `test -f 'pixman-sse.c' || echo '$(srcdir)/'`pixman-sse.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo $(DEPDIR)/libpixman_sse_la-pixman-sse.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pixman-sse.c' object='libpixman_sse_la-pixman-sse.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_sse_la_CFLAGS) $(CFLAGS) -c -o libpixman_sse_la-pixman-sse.lo `test -f 'pixman-sse.c' || echo '$(srcdir)/'`pixman-sse.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/Makefile.win32 libgdiplus-4.0-4.2.3+precise1/pixman/pixman/Makefile.win32 --- libgdiplus-4.0-2.10.9/pixman/pixman/Makefile.win32 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/Makefile.win32 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -LIBRARY = pixman-1 - -CC = cl -LINK = link - -ifeq ($(CFG),) -CFG=release -endif - -ifeq ($(MMX),) -MMX=1 -endif - -CFLAGS = -MD -nologo -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -I../pixman/src -I. -DPACKAGE=$(LIBRARY) -DPACKAGE_VERSION="" -DPACKAGE_BUGREPORT="" -MMX_CFLAGS = -DUSE_MMX -w14710 -w14714 - -# optimization flags -ifeq ($(CFG),debug) -CFLAGS += -Od -Zi -else -CFLAGS += -O2 -endif - -SOURCES = \ - pixman-region.c \ - pixman-image.c \ - pixman-access.c \ - pixman-access-accessors.c \ - pixman-combine.c \ - pixman-compose.c \ - pixman-compose-accessors.c \ - pixman-pict.c \ - pixman-source.c \ - pixman-transformed.c \ - pixman-transformed-accessors.c \ - pixman-utils.c \ - pixman-edge.c \ - pixman-edge-accessors.c \ - pixman-trap.c \ - pixman-compute-region.c \ - pixman-timer.c \ - $(NULL) - -# MMX compilation flags -ifeq ($(MMX),1) -CFLAGS += $(MMX_CFLAGS) -SOURCES += pixman-mmx.c -endif - -OBJECTS = $(patsubst %.c, $(CFG)/%.obj, $(SOURCES)) - -# targets -all: inform informMMX $(CFG)/$(LIBRARY).lib - @exit 0 -clean: inform clean_r - @exit 0 -pixman: inform informMMX $(CFG)/$(LIBRARY).lib - @exit 0 - -inform: -ifneq ($(CFG),release) -ifneq ($(CFG),debug) - @echo "Invalid specified configuration option : "$(CFG)"." - @echo - @echo -n "Possible choices for configuration are " - @echo "'release' and 'debug'" - @echo "" - @exit 1 -endif -endif - -informMMX: -ifneq ($(MMX),0) -ifneq ($(MMX),1) - @echo "Invalid specified MMX option : "$(MMX)"." - @echo - @echo -n "Possible choices for MMX are 0 or 1" - @echo "" - @exit 1 -endif -endif - -# pixman compilation and linking -$(CFG)/%.obj: %.c - @mkdir -p $(CFG) - @$(CC) -c $(CFLAGS) -Fo"$@" $< - -$(CFG)/$(LIBRARY).lib: $(OBJECTS) - lib -NOLOGO -OUT:$@ $(OBJECTS) || exit 0 - -clean_r: - @rm -f $(CFG)/*.obj $(CFG)/*.lib $(CFG)/*.pdb $(CFG)/*.ilk || exit 0 diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-access-accessors.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-access-accessors.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-access-accessors.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-access-accessors.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -#define PIXMAN_FB_ACCESSORS - -#include "pixman-access.c" diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-access.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-access.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-access.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-access.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1686 +0,0 @@ -/* - * - * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. - * 2005 Lars Knoll & Zack Rusin, Trolltech - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include "pixman-private.h" - -#ifdef PIXMAN_FB_ACCESSORS -#define FETCH_PROC_FOR_PICTURE pixman_fetchProcForPicture_accessors -#define FETCH_PIXEL_PROC_FOR_PICTURE pixman_fetchPixelProcForPicture_accessors -#define STORE_PROC_FOR_PICTURE pixman_storeProcForPicture_accessors -#else -#define FETCH_PROC_FOR_PICTURE pixman_fetchProcForPicture -#define FETCH_PIXEL_PROC_FOR_PICTURE pixman_fetchPixelProcForPicture -#define STORE_PROC_FOR_PICTURE pixman_storeProcForPicture -#endif - -/* - * YV12 setup and access macros - */ - -#define YV12_SETUP(pict) \ - uint32_t *bits = pict->bits; \ - int stride = pict->rowstride; \ - int offset0 = stride < 0 ? \ - ((-stride) >> 1) * ((pict->height - 1) >> 1) - stride : \ - stride * pict->height; \ - int offset1 = stride < 0 ? \ - offset0 + ((-stride) >> 1) * ((pict->height) >> 1) : \ - offset0 + (offset0 >> 2) -/* Note n trailing semicolon on the above macro; if it's there, then - * the typical usage of YV12_SETUP(pict); will have an extra trailing ; - * that some compilers will interpret as a statement -- and then any further - * variable declarations will cause an error. - */ - -#define YV12_Y(line) \ - ((uint8_t *) ((bits) + (stride) * (line))) - -#define YV12_U(line) \ - ((uint8_t *) ((bits) + offset1 + \ - ((stride) >> 1) * ((line) >> 1))) - -#define YV12_V(line) \ - ((uint8_t *) ((bits) + offset0 + \ - ((stride) >> 1) * ((line) >> 1))) - -/*********************************** Fetch ************************************/ - -static FASTCALL void -fbFetch_a8r8g8b8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - MEMCPY_WRAPPED(pict, - buffer, (const uint32_t *)bits + x, - width*sizeof(uint32_t)); -} - -static FASTCALL void -fbFetch_x8r8g8b8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint32_t *pixel = (const uint32_t *)bits + x; - const uint32_t *end = pixel + width; - while (pixel < end) { - *buffer++ = READ(pict, pixel++) | 0xff000000; - } -} - -static FASTCALL void -fbFetch_a8b8g8r8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint32_t *pixel = (uint32_t *)bits + x; - const uint32_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - *buffer++ = (p & 0xff00ff00) | - ((p >> 16) & 0xff) | - ((p & 0xff) << 16); - } -} - -static FASTCALL void -fbFetch_x8b8g8r8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint32_t *pixel = (uint32_t *)bits + x; - const uint32_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - *buffer++ = 0xff000000 | - (p & 0x0000ff00) | - ((p >> 16) & 0xff) | - ((p & 0xff) << 16); - } -} - -static FASTCALL void -fbFetch_r8g8b8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + 3*x; - const uint8_t *end = pixel + 3*width; - while (pixel < end) { - uint32_t b = Fetch24(pict, pixel) | 0xff000000; - pixel += 3; - *buffer++ = b; - } -} - -static FASTCALL void -fbFetch_b8g8r8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + 3*x; - const uint8_t *end = pixel + 3*width; - while (pixel < end) { - uint32_t b = 0xff000000; -#if IMAGE_BYTE_ORDER == MSBFirst - b |= (READ(pict, pixel++)); - b |= (READ(pict, pixel++) << 8); - b |= (READ(pict, pixel++) << 16); -#else - b |= (READ(pict, pixel++) << 16); - b |= (READ(pict, pixel++) << 8); - b |= (READ(pict, pixel++)); -#endif - *buffer++ = b; - } -} - -static FASTCALL void -fbFetch_r5g6b5 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - uint32_t r = (((p) << 3) & 0xf8) | - (((p) << 5) & 0xfc00) | - (((p) << 8) & 0xf80000); - r |= (r >> 5) & 0x70007; - r |= (r >> 6) & 0x300; - *buffer++ = 0xff000000 | r; - } -} - -static FASTCALL void -fbFetch_b5g6r5 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - b = ((p & 0xf800) | ((p & 0xe000) >> 5)) >> 8; - g = ((p & 0x07e0) | ((p & 0x0600) >> 6)) << 5; - r = ((p & 0x001c) | ((p & 0x001f) << 5)) << 14; - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_a1r5g5b5 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b, a; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - a = (uint32_t) ((uint8_t) (0 - ((p & 0x8000) >> 15))) << 24; - r = ((p & 0x7c00) | ((p & 0x7000) >> 5)) << 9; - g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6; - b = ((p & 0x001c) | ((p & 0x001f) << 5)) >> 2; - *buffer++ = a | r | g | b; - } -} - -static FASTCALL void -fbFetch_x1r5g5b5 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - r = ((p & 0x7c00) | ((p & 0x7000) >> 5)) << 9; - g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6; - b = ((p & 0x001c) | ((p & 0x001f) << 5)) >> 2; - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_a1b5g5r5 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b, a; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - a = (uint32_t) ((uint8_t) (0 - ((p & 0x8000) >> 15))) << 24; - b = ((p & 0x7c00) | ((p & 0x7000) >> 5)) >> 7; - g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6; - r = ((p & 0x001c) | ((p & 0x001f) << 5)) << 14; - *buffer++ = a | r | g | b; - } -} - -static FASTCALL void -fbFetch_x1b5g5r5 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - b = ((p & 0x7c00) | ((p & 0x7000) >> 5)) >> 7; - g = ((p & 0x03e0) | ((p & 0x0380) >> 5)) << 6; - r = ((p & 0x001c) | ((p & 0x001f) << 5)) << 14; - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_a4r4g4b4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b, a; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - a = ((p & 0xf000) | ((p & 0xf000) >> 4)) << 16; - r = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12; - g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8; - b = ((p & 0x000f) | ((p & 0x000f) << 4)); - *buffer++ = a | r | g | b; - } -} - -static FASTCALL void -fbFetch_x4r4g4b4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - r = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12; - g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8; - b = ((p & 0x000f) | ((p & 0x000f) << 4)); - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_a4b4g4r4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b, a; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - a = ((p & 0xf000) | ((p & 0xf000) >> 4)) << 16; - b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) >> 4; - g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8; - r = ((p & 0x000f) | ((p & 0x000f) << 4)) << 16; - *buffer++ = a | r | g | b; - } -} - -static FASTCALL void -fbFetch_x4b4g4r4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint16_t *pixel = (const uint16_t *)bits + x; - const uint16_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) >> 4; - g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8; - r = ((p & 0x000f) | ((p & 0x000f) << 4)) << 16; - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_a8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - *buffer++ = READ(pict, pixel++) << 24; - } -} - -static FASTCALL void -fbFetch_r3g3b2 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - r = ((p & 0xe0) | ((p & 0xe0) >> 3) | ((p & 0xc0) >> 6)) << 16; - g = ((p & 0x1c) | ((p & 0x18) >> 3) | ((p & 0x1c) << 3)) << 8; - b = (((p & 0x03) ) | - ((p & 0x03) << 2) | - ((p & 0x03) << 4) | - ((p & 0x03) << 6)); - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_b2g3r3 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - b = (((p & 0xc0) ) | - ((p & 0xc0) >> 2) | - ((p & 0xc0) >> 4) | - ((p & 0xc0) >> 6)); - g = ((p & 0x38) | ((p & 0x38) >> 3) | ((p & 0x30) << 2)) << 8; - r = (((p & 0x07) ) | - ((p & 0x07) << 3) | - ((p & 0x06) << 6)) << 16; - *buffer++ = 0xff000000 | r | g | b; - } -} - -static FASTCALL void -fbFetch_a2r2g2b2 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t a,r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - a = ((p & 0xc0) * 0x55) << 18; - r = ((p & 0x30) * 0x55) << 12; - g = ((p & 0x0c) * 0x55) << 6; - b = ((p & 0x03) * 0x55); - *buffer++ = a|r|g|b; - } -} - -static FASTCALL void -fbFetch_a2b2g2r2 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t a,r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - - a = ((p & 0xc0) * 0x55) << 18; - b = ((p & 0x30) * 0x55) >> 6; - g = ((p & 0x0c) * 0x55) << 6; - r = ((p & 0x03) * 0x55) << 16; - *buffer++ = a|r|g|b; - } -} - -static FASTCALL void -fbFetch_c8 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const pixman_indexed_t * indexed = pict->indexed; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - uint32_t p = READ(pict, pixel++); - *buffer++ = indexed->rgba[p]; - } -} - -static FASTCALL void -fbFetch_x4a4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const uint8_t *pixel = (const uint8_t *)bits + x; - const uint8_t *end = pixel + width; - while (pixel < end) { - uint8_t p = READ(pict, pixel++) & 0xf; - *buffer++ = (p | (p << 4)) << 24; - } -} - -#define Fetch8(img,l,o) (READ(img, (uint8_t *)(l) + ((o) >> 2))) -#if IMAGE_BYTE_ORDER == MSBFirst -#define Fetch4(img,l,o) ((o) & 2 ? Fetch8(img,l,o) & 0xf : Fetch8(img,l,o) >> 4) -#else -#define Fetch4(img,l,o) ((o) & 2 ? Fetch8(img,l,o) >> 4 : Fetch8(img,l,o) & 0xf) -#endif - -static FASTCALL void -fbFetch_a4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = Fetch4(pict, bits, i + x); - - p |= p << 4; - *buffer++ = p << 24; - } -} - -static FASTCALL void -fbFetch_r1g2b1 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = Fetch4(pict, bits, i + x); - - r = ((p & 0x8) * 0xff) << 13; - g = ((p & 0x6) * 0x55) << 7; - b = ((p & 0x1) * 0xff); - *buffer++ = 0xff000000|r|g|b; - } -} - -static FASTCALL void -fbFetch_b1g2r1 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = Fetch4(pict, bits, i + x); - - b = ((p & 0x8) * 0xff) >> 3; - g = ((p & 0x6) * 0x55) << 7; - r = ((p & 0x1) * 0xff) << 16; - *buffer++ = 0xff000000|r|g|b; - } -} - -static FASTCALL void -fbFetch_a1r1g1b1 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t a,r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = Fetch4(pict, bits, i + x); - - a = ((p & 0x8) * 0xff) << 21; - r = ((p & 0x4) * 0xff) << 14; - g = ((p & 0x2) * 0xff) << 7; - b = ((p & 0x1) * 0xff); - *buffer++ = a|r|g|b; - } -} - -static FASTCALL void -fbFetch_a1b1g1r1 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t a,r,g,b; - const uint32_t *bits = pict->bits + y*pict->rowstride; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = Fetch4(pict, bits, i + x); - - a = ((p & 0x8) * 0xff) << 21; - r = ((p & 0x4) * 0xff) >> 3; - g = ((p & 0x2) * 0xff) << 7; - b = ((p & 0x1) * 0xff) << 16; - *buffer++ = a|r|g|b; - } -} - -static FASTCALL void -fbFetch_c4 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const pixman_indexed_t * indexed = pict->indexed; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = Fetch4(pict, bits, i + x); - - *buffer++ = indexed->rgba[p]; - } -} - - -static FASTCALL void -fbFetch_a1 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = READ(pict, bits + ((i + x) >> 5)); - uint32_t a; -#if BITMAP_BIT_ORDER == MSBFirst - a = p >> (0x1f - ((i+x) & 0x1f)); -#else - a = p >> ((i+x) & 0x1f); -#endif - a = a & 1; - a |= a << 1; - a |= a << 2; - a |= a << 4; - *buffer++ = a << 24; - } -} - -static FASTCALL void -fbFetch_g1 (bits_image_t *pict, int x, int y, int width, uint32_t *buffer) -{ - const uint32_t *bits = pict->bits + y*pict->rowstride; - const pixman_indexed_t * indexed = pict->indexed; - int i; - for (i = 0; i < width; ++i) { - uint32_t p = READ(pict, bits + ((i+x) >> 5)); - uint32_t a; -#if BITMAP_BIT_ORDER == MSBFirst - a = p >> (0x1f - ((i+x) & 0x1f)); -#else - a = p >> ((i+x) & 0x1f); -#endif - a = a & 1; - *buffer++ = indexed->rgba[a]; - } -} - -static FASTCALL void -fbFetch_yuy2 (bits_image_t *pict, int x, int line, int width, uint32_t *buffer) -{ - int16_t y, u, v; - int32_t r, g, b; - int i; - - const uint32_t *bits = pict->bits + pict->rowstride * line; - - for (i = 0; i < width; i++) - { - y = ((uint8_t *) bits)[(x + i) << 1] - 16; - u = ((uint8_t *) bits)[(((x + i) << 1) & -4) + 1] - 128; - v = ((uint8_t *) bits)[(((x + i) << 1) & -4) + 3] - 128; - - /* R = 1.164(Y - 16) + 1.596(V - 128) */ - r = 0x012b27 * y + 0x019a2e * v; - /* G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) */ - g = 0x012b27 * y - 0x00d0f2 * v - 0x00647e * u; - /* B = 1.164(Y - 16) + 2.018(U - 128) */ - b = 0x012b27 * y + 0x0206a2 * u; - - WRITE(pict, buffer++, 0xff000000 | - (r >= 0 ? r < 0x1000000 ? r & 0xff0000 : 0xff0000 : 0) | - (g >= 0 ? g < 0x1000000 ? (g >> 8) & 0x00ff00 : 0x00ff00 : 0) | - (b >= 0 ? b < 0x1000000 ? (b >> 16) & 0x0000ff : 0x0000ff : 0)); - } -} - -static FASTCALL void -fbFetch_yv12 (bits_image_t *pict, int x, int line, int width, uint32_t *buffer) -{ - YV12_SETUP(pict); - uint8_t *pY = YV12_Y (line); - uint8_t *pU = YV12_U (line); - uint8_t *pV = YV12_V (line); - int16_t y, u, v; - int32_t r, g, b; - int i; - - for (i = 0; i < width; i++) - { - y = pY[x + i] - 16; - u = pU[(x + i) >> 1] - 128; - v = pV[(x + i) >> 1] - 128; - - /* R = 1.164(Y - 16) + 1.596(V - 128) */ - r = 0x012b27 * y + 0x019a2e * v; - /* G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) */ - g = 0x012b27 * y - 0x00d0f2 * v - 0x00647e * u; - /* B = 1.164(Y - 16) + 2.018(U - 128) */ - b = 0x012b27 * y + 0x0206a2 * u; - - WRITE(pict, buffer++, 0xff000000 | - (r >= 0 ? r < 0x1000000 ? r & 0xff0000 : 0xff0000 : 0) | - (g >= 0 ? g < 0x1000000 ? (g >> 8) & 0x00ff00 : 0x00ff00 : 0) | - (b >= 0 ? b < 0x1000000 ? (b >> 16) & 0x0000ff : 0x0000ff : 0)); - } -} - -fetchProc FETCH_PROC_FOR_PICTURE (bits_image_t * pict) -{ - switch(pict->format) { - case PIXMAN_a8r8g8b8: return fbFetch_a8r8g8b8; - case PIXMAN_x8r8g8b8: return fbFetch_x8r8g8b8; - case PIXMAN_a8b8g8r8: return fbFetch_a8b8g8r8; - case PIXMAN_x8b8g8r8: return fbFetch_x8b8g8r8; - - /* 24bpp formats */ - case PIXMAN_r8g8b8: return fbFetch_r8g8b8; - case PIXMAN_b8g8r8: return fbFetch_b8g8r8; - - /* 16bpp formats */ - case PIXMAN_r5g6b5: return fbFetch_r5g6b5; - case PIXMAN_b5g6r5: return fbFetch_b5g6r5; - - case PIXMAN_a1r5g5b5: return fbFetch_a1r5g5b5; - case PIXMAN_x1r5g5b5: return fbFetch_x1r5g5b5; - case PIXMAN_a1b5g5r5: return fbFetch_a1b5g5r5; - case PIXMAN_x1b5g5r5: return fbFetch_x1b5g5r5; - case PIXMAN_a4r4g4b4: return fbFetch_a4r4g4b4; - case PIXMAN_x4r4g4b4: return fbFetch_x4r4g4b4; - case PIXMAN_a4b4g4r4: return fbFetch_a4b4g4r4; - case PIXMAN_x4b4g4r4: return fbFetch_x4b4g4r4; - - /* 8bpp formats */ - case PIXMAN_a8: return fbFetch_a8; - case PIXMAN_r3g3b2: return fbFetch_r3g3b2; - case PIXMAN_b2g3r3: return fbFetch_b2g3r3; - case PIXMAN_a2r2g2b2: return fbFetch_a2r2g2b2; - case PIXMAN_a2b2g2r2: return fbFetch_a2b2g2r2; - case PIXMAN_c8: return fbFetch_c8; - case PIXMAN_g8: return fbFetch_c8; - case PIXMAN_x4a4: return fbFetch_x4a4; - - /* 4bpp formats */ - case PIXMAN_a4: return fbFetch_a4; - case PIXMAN_r1g2b1: return fbFetch_r1g2b1; - case PIXMAN_b1g2r1: return fbFetch_b1g2r1; - case PIXMAN_a1r1g1b1: return fbFetch_a1r1g1b1; - case PIXMAN_a1b1g1r1: return fbFetch_a1b1g1r1; - case PIXMAN_c4: return fbFetch_c4; - case PIXMAN_g4: return fbFetch_c4; - - /* 1bpp formats */ - case PIXMAN_a1: return fbFetch_a1; - case PIXMAN_g1: return fbFetch_g1; - - /* YUV formats */ - case PIXMAN_yuy2: return fbFetch_yuy2; - case PIXMAN_yv12: return fbFetch_yv12; - } - - return NULL; -} - -/**************************** Pixel wise fetching *****************************/ - -static FASTCALL uint32_t -fbFetchPixel_a8r8g8b8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - return READ(pict, (uint32_t *)bits + offset); -} - -static FASTCALL uint32_t -fbFetchPixel_x8r8g8b8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - return READ(pict, (uint32_t *)bits + offset) | 0xff000000; -} - -static FASTCALL uint32_t -fbFetchPixel_a8b8g8r8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint32_t *)bits + offset); - - return ((pixel & 0xff000000) | - ((pixel >> 16) & 0xff) | - (pixel & 0x0000ff00) | - ((pixel & 0xff) << 16)); -} - -static FASTCALL uint32_t -fbFetchPixel_x8b8g8r8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint32_t *)bits + offset); - - return ((0xff000000) | - ((pixel >> 16) & 0xff) | - (pixel & 0x0000ff00) | - ((pixel & 0xff) << 16)); -} - -static FASTCALL uint32_t -fbFetchPixel_r8g8b8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint8_t *pixel = ((uint8_t *) bits) + (offset*3); -#if IMAGE_BYTE_ORDER == MSBFirst - return (0xff000000 | - (READ(pict, pixel + 0) << 16) | - (READ(pict, pixel + 1) << 8) | - (READ(pict, pixel + 2))); -#else - return (0xff000000 | - (READ(pict, pixel + 2) << 16) | - (READ(pict, pixel + 1) << 8) | - (READ(pict, pixel + 0))); -#endif -} - -static FASTCALL uint32_t -fbFetchPixel_b8g8r8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint8_t *pixel = ((uint8_t *) bits) + (offset*3); -#if IMAGE_BYTE_ORDER == MSBFirst - return (0xff000000 | - (READ(pict, pixel + 2) << 16) | - (READ(pict, pixel + 1) << 8) | - (READ(pict, pixel + 0))); -#else - return (0xff000000 | - (READ(pict, pixel + 0) << 16) | - (READ(pict, pixel + 1) << 8) | - (READ(pict, pixel + 2))); -#endif -} - -static FASTCALL uint32_t -fbFetchPixel_r5g6b5 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - r = ((pixel & 0xf800) | ((pixel & 0xe000) >> 5)) << 8; - g = ((pixel & 0x07e0) | ((pixel & 0x0600) >> 6)) << 5; - b = ((pixel & 0x001c) | ((pixel & 0x001f) << 5)) >> 2; - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_b5g6r5 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - b = ((pixel & 0xf800) | ((pixel & 0xe000) >> 5)) >> 8; - g = ((pixel & 0x07e0) | ((pixel & 0x0600) >> 6)) << 5; - r = ((pixel & 0x001c) | ((pixel & 0x001f) << 5)) << 14; - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_a1r5g5b5 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - a = (uint32_t) ((uint8_t) (0 - ((pixel & 0x8000) >> 15))) << 24; - r = ((pixel & 0x7c00) | ((pixel & 0x7000) >> 5)) << 9; - g = ((pixel & 0x03e0) | ((pixel & 0x0380) >> 5)) << 6; - b = ((pixel & 0x001c) | ((pixel & 0x001f) << 5)) >> 2; - return (a | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_x1r5g5b5 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - r = ((pixel & 0x7c00) | ((pixel & 0x7000) >> 5)) << 9; - g = ((pixel & 0x03e0) | ((pixel & 0x0380) >> 5)) << 6; - b = ((pixel & 0x001c) | ((pixel & 0x001f) << 5)) >> 2; - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_a1b5g5r5 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - a = (uint32_t) ((uint8_t) (0 - ((pixel & 0x8000) >> 15))) << 24; - b = ((pixel & 0x7c00) | ((pixel & 0x7000) >> 5)) >> 7; - g = ((pixel & 0x03e0) | ((pixel & 0x0380) >> 5)) << 6; - r = ((pixel & 0x001c) | ((pixel & 0x001f) << 5)) << 14; - return (a | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_x1b5g5r5 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - b = ((pixel & 0x7c00) | ((pixel & 0x7000) >> 5)) >> 7; - g = ((pixel & 0x03e0) | ((pixel & 0x0380) >> 5)) << 6; - r = ((pixel & 0x001c) | ((pixel & 0x001f) << 5)) << 14; - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_a4r4g4b4 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - a = ((pixel & 0xf000) | ((pixel & 0xf000) >> 4)) << 16; - r = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12; - g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8; - b = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)); - return (a | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_x4r4g4b4 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - r = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12; - g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8; - b = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)); - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_a4b4g4r4 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - a = ((pixel & 0xf000) | ((pixel & 0xf000) >> 4)) << 16; - b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) >> 4; - g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8; - r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)) << 16; - return (a | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_x4b4g4r4 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint16_t *) bits + offset); - - b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) >> 4; - g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8; - r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)) << 16; - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_a8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - - return pixel << 24; -} - -static FASTCALL uint32_t -fbFetchPixel_r3g3b2 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - - r = ((pixel & 0xe0) | ((pixel & 0xe0) >> 3) | ((pixel & 0xc0) >> 6)) << 16; - g = ((pixel & 0x1c) | ((pixel & 0x18) >> 3) | ((pixel & 0x1c) << 3)) << 8; - b = (((pixel & 0x03) ) | - ((pixel & 0x03) << 2) | - ((pixel & 0x03) << 4) | - ((pixel & 0x03) << 6)); - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_b2g3r3 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - - b = (((pixel & 0xc0) ) | - ((pixel & 0xc0) >> 2) | - ((pixel & 0xc0) >> 4) | - ((pixel & 0xc0) >> 6)); - g = ((pixel & 0x38) | ((pixel & 0x38) >> 3) | ((pixel & 0x30) << 2)) << 8; - r = (((pixel & 0x07) ) | - ((pixel & 0x07) << 3) | - ((pixel & 0x06) << 6)) << 16; - return (0xff000000 | r | g | b); -} - -static FASTCALL uint32_t -fbFetchPixel_a2r2g2b2 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - - a = ((pixel & 0xc0) * 0x55) << 18; - r = ((pixel & 0x30) * 0x55) << 12; - g = ((pixel & 0x0c) * 0x55) << 6; - b = ((pixel & 0x03) * 0x55); - return a|r|g|b; -} - -static FASTCALL uint32_t -fbFetchPixel_a2b2g2r2 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - - a = ((pixel & 0xc0) * 0x55) << 18; - b = ((pixel & 0x30) * 0x55) >> 6; - g = ((pixel & 0x0c) * 0x55) << 6; - r = ((pixel & 0x03) * 0x55) << 16; - return a|r|g|b; -} - -static FASTCALL uint32_t -fbFetchPixel_c8 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - const pixman_indexed_t * indexed = pict->indexed; - return indexed->rgba[pixel]; -} - -static FASTCALL uint32_t -fbFetchPixel_x4a4 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, (uint8_t *) bits + offset); - - return ((pixel & 0xf) | ((pixel & 0xf) << 4)) << 24; -} - -static FASTCALL uint32_t -fbFetchPixel_a4 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = Fetch4(pict, bits, offset); - - pixel |= pixel << 4; - return pixel << 24; -} - -static FASTCALL uint32_t -fbFetchPixel_r1g2b1 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = Fetch4(pict, bits, offset); - - r = ((pixel & 0x8) * 0xff) << 13; - g = ((pixel & 0x6) * 0x55) << 7; - b = ((pixel & 0x1) * 0xff); - return 0xff000000|r|g|b; -} - -static FASTCALL uint32_t -fbFetchPixel_b1g2r1 (bits_image_t *pict, int offset, int line) -{ - uint32_t r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = Fetch4(pict, bits, offset); - - b = ((pixel & 0x8) * 0xff) >> 3; - g = ((pixel & 0x6) * 0x55) << 7; - r = ((pixel & 0x1) * 0xff) << 16; - return 0xff000000|r|g|b; -} - -static FASTCALL uint32_t -fbFetchPixel_a1r1g1b1 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = Fetch4(pict, bits, offset); - - a = ((pixel & 0x8) * 0xff) << 21; - r = ((pixel & 0x4) * 0xff) << 14; - g = ((pixel & 0x2) * 0xff) << 7; - b = ((pixel & 0x1) * 0xff); - return a|r|g|b; -} - -static FASTCALL uint32_t -fbFetchPixel_a1b1g1r1 (bits_image_t *pict, int offset, int line) -{ - uint32_t a,r,g,b; - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = Fetch4(pict, bits, offset); - - a = ((pixel & 0x8) * 0xff) << 21; - r = ((pixel & 0x4) * 0xff) >> 3; - g = ((pixel & 0x2) * 0xff) << 7; - b = ((pixel & 0x1) * 0xff) << 16; - return a|r|g|b; -} - -static FASTCALL uint32_t -fbFetchPixel_c4 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = Fetch4(pict, bits, offset); - const pixman_indexed_t * indexed = pict->indexed; - - return indexed->rgba[pixel]; -} - - -static FASTCALL uint32_t -fbFetchPixel_a1 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, bits + (offset >> 5)); - uint32_t a; -#if BITMAP_BIT_ORDER == MSBFirst - a = pixel >> (0x1f - (offset & 0x1f)); -#else - a = pixel >> (offset & 0x1f); -#endif - a = a & 1; - a |= a << 1; - a |= a << 2; - a |= a << 4; - return a << 24; -} - -static FASTCALL uint32_t -fbFetchPixel_g1 (bits_image_t *pict, int offset, int line) -{ - uint32_t *bits = pict->bits + line*pict->rowstride; - uint32_t pixel = READ(pict, bits + (offset >> 5)); - const pixman_indexed_t * indexed = pict->indexed; - uint32_t a; -#if BITMAP_BIT_ORDER == MSBFirst - a = pixel >> (0x1f - (offset & 0x1f)); -#else - a = pixel >> (offset & 0x1f); -#endif - a = a & 1; - return indexed->rgba[a]; -} - -static FASTCALL uint32_t -fbFetchPixel_yuy2 (bits_image_t *pict, int offset, int line) -{ - int16_t y, u, v; - int32_t r, g, b; - - const uint32_t *bits = pict->bits + pict->rowstride * line; - - y = ((uint8_t *) bits)[offset << 1] - 16; - u = ((uint8_t *) bits)[((offset << 1) & -4) + 1] - 128; - v = ((uint8_t *) bits)[((offset << 1) & -4) + 3] - 128; - - /* R = 1.164(Y - 16) + 1.596(V - 128) */ - r = 0x012b27 * y + 0x019a2e * v; - /* G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) */ - g = 0x012b27 * y - 0x00d0f2 * v - 0x00647e * u; - /* B = 1.164(Y - 16) + 2.018(U - 128) */ - b = 0x012b27 * y + 0x0206a2 * u; - - return 0xff000000 | - (r >= 0 ? r < 0x1000000 ? r & 0xff0000 : 0xff0000 : 0) | - (g >= 0 ? g < 0x1000000 ? (g >> 8) & 0x00ff00 : 0x00ff00 : 0) | - (b >= 0 ? b < 0x1000000 ? (b >> 16) & 0x0000ff : 0x0000ff : 0); -} - -static FASTCALL uint32_t -fbFetchPixel_yv12 (bits_image_t *pict, int offset, int line) -{ - YV12_SETUP(pict); - int16_t y = YV12_Y (line)[offset] - 16; - int16_t u = YV12_U (line)[offset >> 1] - 128; - int16_t v = YV12_V (line)[offset >> 1] - 128; - int32_t r, g, b; - - /* R = 1.164(Y - 16) + 1.596(V - 128) */ - r = 0x012b27 * y + 0x019a2e * v; - /* G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) */ - g = 0x012b27 * y - 0x00d0f2 * v - 0x00647e * u; - /* B = 1.164(Y - 16) + 2.018(U - 128) */ - b = 0x012b27 * y + 0x0206a2 * u; - - return 0xff000000 | - (r >= 0 ? r < 0x1000000 ? r & 0xff0000 : 0xff0000 : 0) | - (g >= 0 ? g < 0x1000000 ? (g >> 8) & 0x00ff00 : 0x00ff00 : 0) | - (b >= 0 ? b < 0x1000000 ? (b >> 16) & 0x0000ff : 0x0000ff : 0); -} - -fetchPixelProc FETCH_PIXEL_PROC_FOR_PICTURE (bits_image_t * pict) -{ - switch(pict->format) { - case PIXMAN_a8r8g8b8: return fbFetchPixel_a8r8g8b8; - case PIXMAN_x8r8g8b8: return fbFetchPixel_x8r8g8b8; - case PIXMAN_a8b8g8r8: return fbFetchPixel_a8b8g8r8; - case PIXMAN_x8b8g8r8: return fbFetchPixel_x8b8g8r8; - - /* 24bpp formats */ - case PIXMAN_r8g8b8: return fbFetchPixel_r8g8b8; - case PIXMAN_b8g8r8: return fbFetchPixel_b8g8r8; - - /* 16bpp formats */ - case PIXMAN_r5g6b5: return fbFetchPixel_r5g6b5; - case PIXMAN_b5g6r5: return fbFetchPixel_b5g6r5; - - case PIXMAN_a1r5g5b5: return fbFetchPixel_a1r5g5b5; - case PIXMAN_x1r5g5b5: return fbFetchPixel_x1r5g5b5; - case PIXMAN_a1b5g5r5: return fbFetchPixel_a1b5g5r5; - case PIXMAN_x1b5g5r5: return fbFetchPixel_x1b5g5r5; - case PIXMAN_a4r4g4b4: return fbFetchPixel_a4r4g4b4; - case PIXMAN_x4r4g4b4: return fbFetchPixel_x4r4g4b4; - case PIXMAN_a4b4g4r4: return fbFetchPixel_a4b4g4r4; - case PIXMAN_x4b4g4r4: return fbFetchPixel_x4b4g4r4; - - /* 8bpp formats */ - case PIXMAN_a8: return fbFetchPixel_a8; - case PIXMAN_r3g3b2: return fbFetchPixel_r3g3b2; - case PIXMAN_b2g3r3: return fbFetchPixel_b2g3r3; - case PIXMAN_a2r2g2b2: return fbFetchPixel_a2r2g2b2; - case PIXMAN_a2b2g2r2: return fbFetchPixel_a2b2g2r2; - case PIXMAN_c8: return fbFetchPixel_c8; - case PIXMAN_g8: return fbFetchPixel_c8; - case PIXMAN_x4a4: return fbFetchPixel_x4a4; - - /* 4bpp formats */ - case PIXMAN_a4: return fbFetchPixel_a4; - case PIXMAN_r1g2b1: return fbFetchPixel_r1g2b1; - case PIXMAN_b1g2r1: return fbFetchPixel_b1g2r1; - case PIXMAN_a1r1g1b1: return fbFetchPixel_a1r1g1b1; - case PIXMAN_a1b1g1r1: return fbFetchPixel_a1b1g1r1; - case PIXMAN_c4: return fbFetchPixel_c4; - case PIXMAN_g4: return fbFetchPixel_c4; - - /* 1bpp formats */ - case PIXMAN_a1: return fbFetchPixel_a1; - case PIXMAN_g1: return fbFetchPixel_g1; - - /* YUV formats */ - case PIXMAN_yuy2: return fbFetchPixel_yuy2; - case PIXMAN_yv12: return fbFetchPixel_yv12; - } - - return NULL; -} - -/*********************************** Store ************************************/ - -#define Splita(v) uint32_t a = ((v) >> 24), r = ((v) >> 16) & 0xff, g = ((v) >> 8) & 0xff, b = (v) & 0xff -#define Split(v) uint32_t r = ((v) >> 16) & 0xff, g = ((v) >> 8) & 0xff, b = (v) & 0xff - -static FASTCALL void -fbStore_a8r8g8b8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - MEMCPY_WRAPPED(image, ((uint32_t *)bits) + x, values, width*sizeof(uint32_t)); -} - -static FASTCALL void -fbStore_x8r8g8b8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint32_t *pixel = (uint32_t *)bits + x; - for (i = 0; i < width; ++i) - WRITE(image, pixel++, values[i] & 0xffffff); -} - -static FASTCALL void -fbStore_a8b8g8r8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint32_t *pixel = (uint32_t *)bits + x; - for (i = 0; i < width; ++i) - WRITE(image, pixel++, (values[i] & 0xff00ff00) | ((values[i] >> 16) & 0xff) | ((values[i] & 0xff) << 16)); -} - -static FASTCALL void -fbStore_x8b8g8r8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint32_t *pixel = (uint32_t *)bits + x; - for (i = 0; i < width; ++i) - WRITE(image, pixel++, (values[i] & 0x0000ff00) | ((values[i] >> 16) & 0xff) | ((values[i] & 0xff) << 16)); -} - -static FASTCALL void -fbStore_r8g8b8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, - const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + 3*x; - for (i = 0; i < width; ++i) { - Store24(image, pixel, values[i]); - pixel += 3; - } -} - -static FASTCALL void -fbStore_b8g8r8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + 3*x; - for (i = 0; i < width; ++i) { - uint32_t val = values[i]; -#if IMAGE_BYTE_ORDER == MSBFirst - WRITE(image, pixel++, Blue(val)); - WRITE(image, pixel++, Green(val)); - WRITE(image, pixel++, Red(val)); -#else - WRITE(image, pixel++, Red(val)); - WRITE(image, pixel++, Green(val)); - WRITE(image, pixel++, Blue(val)); -#endif - } -} - -static FASTCALL void -fbStore_r5g6b5 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - uint32_t s = values[i]; - WRITE(image, pixel++, ((s >> 3) & 0x001f) | - ((s >> 5) & 0x07e0) | - ((s >> 8) & 0xf800)); - } -} - -static FASTCALL void -fbStore_b5g6r5 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, ((b << 8) & 0xf800) | - ((g << 3) & 0x07e0) | - ((r >> 3) )); - } -} - -static FASTCALL void -fbStore_a1r5g5b5 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Splita(values[i]); - WRITE(image, pixel++, ((a << 8) & 0x8000) | - ((r << 7) & 0x7c00) | - ((g << 2) & 0x03e0) | - ((b >> 3) )); - } -} - -static FASTCALL void -fbStore_x1r5g5b5 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, ((r << 7) & 0x7c00) | - ((g << 2) & 0x03e0) | - ((b >> 3) )); - } -} - -static FASTCALL void -fbStore_a1b5g5r5 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Splita(values[i]); - WRITE(image, pixel++, ((a << 8) & 0x8000) | - ((b << 7) & 0x7c00) | - ((g << 2) & 0x03e0) | - ((r >> 3) )); - } -} - -static FASTCALL void -fbStore_x1b5g5r5 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, ((b << 7) & 0x7c00) | - ((g << 2) & 0x03e0) | - ((r >> 3) )); - } -} - -static FASTCALL void -fbStore_a4r4g4b4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Splita(values[i]); - WRITE(image, pixel++, ((a << 8) & 0xf000) | - ((r << 4) & 0x0f00) | - ((g ) & 0x00f0) | - ((b >> 4) )); - } -} - -static FASTCALL void -fbStore_x4r4g4b4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, ((r << 4) & 0x0f00) | - ((g ) & 0x00f0) | - ((b >> 4) )); - } -} - -static FASTCALL void -fbStore_a4b4g4r4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Splita(values[i]); - WRITE(image, pixel++, ((a << 8) & 0xf000) | - ((b << 4) & 0x0f00) | - ((g ) & 0x00f0) | - ((r >> 4) )); - } -} - -static FASTCALL void -fbStore_x4b4g4r4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint16_t *pixel = ((uint16_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, ((b << 4) & 0x0f00) | - ((g ) & 0x00f0) | - ((r >> 4) )); - } -} - -static FASTCALL void -fbStore_a8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + x; - for (i = 0; i < width; ++i) { - WRITE(image, pixel++, values[i] >> 24); - } -} - -static FASTCALL void -fbStore_r3g3b2 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, - ((r ) & 0xe0) | - ((g >> 3) & 0x1c) | - ((b >> 6) )); - } -} - -static FASTCALL void -fbStore_b2g3r3 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + x; - for (i = 0; i < width; ++i) { - Split(values[i]); - WRITE(image, pixel++, - ((b ) & 0xc0) | - ((g >> 2) & 0x1c) | - ((r >> 5) )); - } -} - -static FASTCALL void -fbStore_a2r2g2b2 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + x; - for (i = 0; i < width; ++i) { - Splita(values[i]); - WRITE(image, pixel++, ((a ) & 0xc0) | - ((r >> 2) & 0x30) | - ((g >> 4) & 0x0c) | - ((b >> 6) )); - } -} - -static FASTCALL void -fbStore_c8 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + x; - for (i = 0; i < width; ++i) { - WRITE(image, pixel++, miIndexToEnt24(indexed,values[i])); - } -} - -static FASTCALL void -fbStore_x4a4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - uint8_t *pixel = ((uint8_t *) bits) + x; - for (i = 0; i < width; ++i) { - WRITE(image, pixel++, values[i] >> 28); - } -} - -#define Store8(img,l,o,v) (WRITE(img, (uint8_t *)(l) + ((o) >> 3), (v))) -#if IMAGE_BYTE_ORDER == MSBFirst -#define Store4(img,l,o,v) Store8(img,l,o,((o) & 4 ? \ - (Fetch8(img,l,o) & 0xf0) | (v) : \ - (Fetch8(img,l,o) & 0x0f) | ((v) << 4))) -#else -#define Store4(img,l,o,v) Store8(img,l,o,((o) & 4 ? \ - (Fetch8(img,l,o) & 0x0f) | ((v) << 4) : \ - (Fetch8(img,l,o) & 0xf0) | (v))) -#endif - -static FASTCALL void -fbStore_a4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - Store4(image, bits, i + x, values[i]>>28); - } -} - -static FASTCALL void -fbStore_r1g2b1 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t pixel; - - Split(values[i]); - pixel = (((r >> 4) & 0x8) | - ((g >> 5) & 0x6) | - ((b >> 7) )); - Store4(image, bits, i + x, pixel); - } -} - -static FASTCALL void -fbStore_b1g2r1 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t pixel; - - Split(values[i]); - pixel = (((b >> 4) & 0x8) | - ((g >> 5) & 0x6) | - ((r >> 7) )); - Store4(image, bits, i + x, pixel); - } -} - -static FASTCALL void -fbStore_a1r1g1b1 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t pixel; - Splita(values[i]); - pixel = (((a >> 4) & 0x8) | - ((r >> 5) & 0x4) | - ((g >> 6) & 0x2) | - ((b >> 7) )); - Store4(image, bits, i + x, pixel); - } -} - -static FASTCALL void -fbStore_a1b1g1r1 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t pixel; - Splita(values[i]); - pixel = (((a >> 4) & 0x8) | - ((b >> 5) & 0x4) | - ((g >> 6) & 0x2) | - ((r >> 7) )); - Store4(image, bits, i + x, pixel); - } -} - -static FASTCALL void -fbStore_c4 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t pixel; - - pixel = miIndexToEnt24(indexed, values[i]); - Store4(image, bits, i + x, pixel); - } -} - -static FASTCALL void -fbStore_a1 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t *pixel = ((uint32_t *) bits) + ((i+x) >> 5); - uint32_t mask = FbStipMask((i+x) & 0x1f, 1); - - uint32_t v = values[i] & 0x80000000 ? mask : 0; - WRITE(image, pixel, (READ(image, pixel) & ~mask) | v); - } -} - -static FASTCALL void -fbStore_g1 (pixman_image_t *image, - uint32_t *bits, const uint32_t *values, int x, int width, const pixman_indexed_t * indexed) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t *pixel = ((uint32_t *) bits) + ((i+x) >> 5); - uint32_t mask = FbStipMask((i+x) & 0x1f, 1); - - uint32_t v = miIndexToEntY24(indexed,values[i]) ? mask : 0; - WRITE(image, pixel, (READ(image, pixel) & ~mask) | v); - } -} - - -storeProc STORE_PROC_FOR_PICTURE (bits_image_t * pict) -{ - switch(pict->format) { - case PIXMAN_a8r8g8b8: return fbStore_a8r8g8b8; - case PIXMAN_x8r8g8b8: return fbStore_x8r8g8b8; - case PIXMAN_a8b8g8r8: return fbStore_a8b8g8r8; - case PIXMAN_x8b8g8r8: return fbStore_x8b8g8r8; - - /* 24bpp formats */ - case PIXMAN_r8g8b8: return fbStore_r8g8b8; - case PIXMAN_b8g8r8: return fbStore_b8g8r8; - - /* 16bpp formats */ - case PIXMAN_r5g6b5: return fbStore_r5g6b5; - case PIXMAN_b5g6r5: return fbStore_b5g6r5; - - case PIXMAN_a1r5g5b5: return fbStore_a1r5g5b5; - case PIXMAN_x1r5g5b5: return fbStore_x1r5g5b5; - case PIXMAN_a1b5g5r5: return fbStore_a1b5g5r5; - case PIXMAN_x1b5g5r5: return fbStore_x1b5g5r5; - case PIXMAN_a4r4g4b4: return fbStore_a4r4g4b4; - case PIXMAN_x4r4g4b4: return fbStore_x4r4g4b4; - case PIXMAN_a4b4g4r4: return fbStore_a4b4g4r4; - case PIXMAN_x4b4g4r4: return fbStore_x4b4g4r4; - - /* 8bpp formats */ - case PIXMAN_a8: return fbStore_a8; - case PIXMAN_r3g3b2: return fbStore_r3g3b2; - case PIXMAN_b2g3r3: return fbStore_b2g3r3; - case PIXMAN_a2r2g2b2: return fbStore_a2r2g2b2; - case PIXMAN_c8: return fbStore_c8; - case PIXMAN_g8: return fbStore_c8; - case PIXMAN_x4a4: return fbStore_x4a4; - - /* 4bpp formats */ - case PIXMAN_a4: return fbStore_a4; - case PIXMAN_r1g2b1: return fbStore_r1g2b1; - case PIXMAN_b1g2r1: return fbStore_b1g2r1; - case PIXMAN_a1r1g1b1: return fbStore_a1r1g1b1; - case PIXMAN_a1b1g1r1: return fbStore_a1b1g1r1; - case PIXMAN_c4: return fbStore_c4; - case PIXMAN_g4: return fbStore_c4; - - /* 1bpp formats */ - case PIXMAN_a1: return fbStore_a1; - case PIXMAN_g1: return fbStore_g1; - default: - return NULL; - } -} diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-combine.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-combine.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-combine.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-combine.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1260 +0,0 @@ -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include "pixman-private.h" -/* - * There are two ways of handling alpha -- either as a single unified value or - * a separate value for each component, hence each macro must have two - * versions. The unified alpha version has a 'U' at the end of the name, - * the component version has a 'C'. Similarly, functions which deal with - * this difference will have two versions using the same convention. - */ - - -/* - * Combine src and mask - */ -FASTCALL void -pixman_fbCombineMaskU (uint32_t *src, const uint32_t *mask, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t a = *(mask + i) >> 24; - uint32_t s = *(src + i); - FbByteMul(s, a); - *(src + i) = s; - } -} - -/* - * All of the composing functions - */ - -FASTCALL static void -fbCombineClear (uint32_t *dest, const uint32_t *src, int width) -{ - memset(dest, 0, width*sizeof(uint32_t)); -} - -FASTCALL static void -fbCombineSrcU (uint32_t *dest, const uint32_t *src, int width) -{ - memcpy(dest, src, width*sizeof(uint32_t)); -} - -/* if the Src is opaque, call fbCombineSrcU */ -FASTCALL static void -fbCombineOverU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t ia = Alpha(~s); - - FbByteMulAdd(d, ia, s); - *(dest + i) = d; - } -} - -/* if the Dst is opaque, this is a noop */ -FASTCALL static void -fbCombineOverReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t ia = Alpha(~*(dest + i)); - FbByteMulAdd(s, ia, d); - *(dest + i) = s; - } -} - -/* if the Dst is opaque, call fbCombineSrcU */ -FASTCALL static void -fbCombineInU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t a = Alpha(*(dest + i)); - FbByteMul(s, a); - *(dest + i) = s; - } -} - -/* if the Src is opaque, this is a noop */ -FASTCALL static void -fbCombineInReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint32_t a = Alpha(*(src + i)); - FbByteMul(d, a); - *(dest + i) = d; - } -} - -/* if the Dst is opaque, call fbCombineClear */ -FASTCALL static void -fbCombineOutU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t a = Alpha(~*(dest + i)); - FbByteMul(s, a); - *(dest + i) = s; - } -} - -/* if the Src is opaque, call fbCombineClear */ -FASTCALL static void -fbCombineOutReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint32_t a = Alpha(~*(src + i)); - FbByteMul(d, a); - *(dest + i) = d; - } -} - -/* if the Src is opaque, call fbCombineInU */ -/* if the Dst is opaque, call fbCombineOverU */ -/* if both the Src and Dst are opaque, call fbCombineSrcU */ -FASTCALL static void -fbCombineAtopU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t dest_a = Alpha(d); - uint32_t src_ia = Alpha(~s); - - FbByteAddMul(s, dest_a, d, src_ia); - *(dest + i) = s; - } -} - -/* if the Src is opaque, call fbCombineOverReverseU */ -/* if the Dst is opaque, call fbCombineInReverseU */ -/* if both the Src and Dst are opaque, call fbCombineDstU */ -FASTCALL static void -fbCombineAtopReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t src_a = Alpha(s); - uint32_t dest_ia = Alpha(~d); - - FbByteAddMul(s, dest_ia, d, src_a); - *(dest + i) = s; - } -} - -/* if the Src is opaque, call fbCombineOverU */ -/* if the Dst is opaque, call fbCombineOverReverseU */ -/* if both the Src and Dst are opaque, call fbCombineClear */ -FASTCALL static void -fbCombineXorU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t src_ia = Alpha(~s); - uint32_t dest_ia = Alpha(~d); - - FbByteAddMul(s, dest_ia, d, src_ia); - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineAddU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - FbByteAdd(d, s); - *(dest + i) = d; - } -} - -/* if the Src is opaque, call fbCombineAddU */ -/* if the Dst is opaque, call fbCombineAddU */ -/* if both the Src and Dst are opaque, call fbCombineAddU */ -FASTCALL static void -fbCombineSaturateU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint16_t sa, da; - - sa = s >> 24; - da = ~d >> 24; - if (sa > da) - { - sa = FbIntDiv(da, sa); - FbByteMul(s, sa); - }; - FbByteAdd(d, s); - *(dest + i) = d; - } -} - - -/* - * All of the disjoint composing functions - - The four entries in the first column indicate what source contributions - come from each of the four areas of the picture -- areas covered by neither - A nor B, areas covered only by A, areas covered only by B and finally - areas covered by both A and B. - - Disjoint Conjoint - Fa Fb Fa Fb - (0,0,0,0) 0 0 0 0 - (0,A,0,A) 1 0 1 0 - (0,0,B,B) 0 1 0 1 - (0,A,B,A) 1 min((1-a)/b,1) 1 max(1-a/b,0) - (0,A,B,B) min((1-b)/a,1) 1 max(1-b/a,0) 1 - (0,0,0,A) max(1-(1-b)/a,0) 0 min(1,b/a) 0 - (0,0,0,B) 0 max(1-(1-a)/b,0) 0 min(a/b,1) - (0,A,0,0) min(1,(1-b)/a) 0 max(1-b/a,0) 0 - (0,0,B,0) 0 min(1,(1-a)/b) 0 max(1-a/b,0) - (0,0,B,A) max(1-(1-b)/a,0) min(1,(1-a)/b) min(1,b/a) max(1-a/b,0) - (0,A,0,B) min(1,(1-b)/a) max(1-(1-a)/b,0) max(1-b/a,0) min(1,a/b) - (0,A,B,0) min(1,(1-b)/a) min(1,(1-a)/b) max(1-b/a,0) max(1-a/b,0) - -*/ - -#define CombineAOut 1 -#define CombineAIn 2 -#define CombineBOut 4 -#define CombineBIn 8 - -#define CombineClear 0 -#define CombineA (CombineAOut|CombineAIn) -#define CombineB (CombineBOut|CombineBIn) -#define CombineAOver (CombineAOut|CombineBOut|CombineAIn) -#define CombineBOver (CombineAOut|CombineBOut|CombineBIn) -#define CombineAAtop (CombineBOut|CombineAIn) -#define CombineBAtop (CombineAOut|CombineBIn) -#define CombineXor (CombineAOut|CombineBOut) - -/* portion covered by a but not b */ -FASTCALL static uint8_t -fbCombineDisjointOutPart (uint8_t a, uint8_t b) -{ - /* min (1, (1-b) / a) */ - - b = ~b; /* 1 - b */ - if (b >= a) /* 1 - b >= a -> (1-b)/a >= 1 */ - return 0xff; /* 1 */ - return FbIntDiv(b,a); /* (1-b) / a */ -} - -/* portion covered by both a and b */ -FASTCALL static uint8_t -fbCombineDisjointInPart (uint8_t a, uint8_t b) -{ - /* max (1-(1-b)/a,0) */ - /* = - min ((1-b)/a - 1, 0) */ - /* = 1 - min (1, (1-b)/a) */ - - b = ~b; /* 1 - b */ - if (b >= a) /* 1 - b >= a -> (1-b)/a >= 1 */ - return 0; /* 1 - 1 */ - return ~FbIntDiv(b,a); /* 1 - (1-b) / a */ -} - -/* portion covered by a but not b */ -FASTCALL static uint8_t -fbCombineConjointOutPart (uint8_t a, uint8_t b) -{ - /* max (1-b/a,0) */ - /* = 1-min(b/a,1) */ - - /* min (1, (1-b) / a) */ - - if (b >= a) /* b >= a -> b/a >= 1 */ - return 0x00; /* 0 */ - return ~FbIntDiv(b,a); /* 1 - b/a */ -} - -/* portion covered by both a and b */ -FASTCALL static uint8_t -fbCombineConjointInPart (uint8_t a, uint8_t b) -{ - /* min (1,b/a) */ - - if (b >= a) /* b >= a -> b/a >= 1 */ - return 0xff; /* 1 */ - return FbIntDiv(b,a); /* b/a */ -} - -FASTCALL static void -fbCombineDisjointGeneralU (uint32_t *dest, const uint32_t *src, int width, uint8_t combine) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t m,n,o,p; - uint16_t Fa, Fb, t, u, v; - uint8_t sa = s >> 24; - uint8_t da = d >> 24; - - switch (combine & CombineA) { - default: - Fa = 0; - break; - case CombineAOut: - Fa = fbCombineDisjointOutPart (sa, da); - break; - case CombineAIn: - Fa = fbCombineDisjointInPart (sa, da); - break; - case CombineA: - Fa = 0xff; - break; - } - - switch (combine & CombineB) { - default: - Fb = 0; - break; - case CombineBOut: - Fb = fbCombineDisjointOutPart (da, sa); - break; - case CombineBIn: - Fb = fbCombineDisjointInPart (da, sa); - break; - case CombineB: - Fb = 0xff; - break; - } - m = FbGen (s,d,0,Fa,Fb,t, u, v); - n = FbGen (s,d,8,Fa,Fb,t, u, v); - o = FbGen (s,d,16,Fa,Fb,t, u, v); - p = FbGen (s,d,24,Fa,Fb,t, u, v); - s = m|n|o|p; - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineDisjointOverU (uint32_t *dest, const uint32_t *src, int width) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint16_t a = s >> 24; - - if (a != 0x00) - { - if (a != 0xff) - { - uint32_t d = *(dest + i); - a = fbCombineDisjointOutPart (d >> 24, a); - FbByteMulAdd(d, a, s); - s = d; - } - *(dest + i) = s; - } - } -} - -FASTCALL static void -fbCombineDisjointInU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineAIn); -} - -FASTCALL static void -fbCombineDisjointInReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineBIn); -} - -FASTCALL static void -fbCombineDisjointOutU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineAOut); -} - -FASTCALL static void -fbCombineDisjointOutReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineBOut); -} - -FASTCALL static void -fbCombineDisjointAtopU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineAAtop); -} - -FASTCALL static void -fbCombineDisjointAtopReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineBAtop); -} - -FASTCALL static void -fbCombineDisjointXorU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineDisjointGeneralU (dest, src, width, CombineXor); -} - -FASTCALL static void -fbCombineConjointGeneralU (uint32_t *dest, const uint32_t *src, int width, uint8_t combine) -{ - int i; - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t d = *(dest + i); - uint32_t m,n,o,p; - uint16_t Fa, Fb, t, u, v; - uint8_t sa = s >> 24; - uint8_t da = d >> 24; - - switch (combine & CombineA) { - default: - Fa = 0; - break; - case CombineAOut: - Fa = fbCombineConjointOutPart (sa, da); - break; - case CombineAIn: - Fa = fbCombineConjointInPart (sa, da); - break; - case CombineA: - Fa = 0xff; - break; - } - - switch (combine & CombineB) { - default: - Fb = 0; - break; - case CombineBOut: - Fb = fbCombineConjointOutPart (da, sa); - break; - case CombineBIn: - Fb = fbCombineConjointInPart (da, sa); - break; - case CombineB: - Fb = 0xff; - break; - } - m = FbGen (s,d,0,Fa,Fb,t, u, v); - n = FbGen (s,d,8,Fa,Fb,t, u, v); - o = FbGen (s,d,16,Fa,Fb,t, u, v); - p = FbGen (s,d,24,Fa,Fb,t, u, v); - s = m|n|o|p; - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineConjointOverU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineAOver); -} - - -FASTCALL static void -fbCombineConjointOverReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineBOver); -} - - -FASTCALL static void -fbCombineConjointInU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineAIn); -} - - -FASTCALL static void -fbCombineConjointInReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineBIn); -} - -FASTCALL static void -fbCombineConjointOutU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineAOut); -} - -FASTCALL static void -fbCombineConjointOutReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineBOut); -} - -FASTCALL static void -fbCombineConjointAtopU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineAAtop); -} - -FASTCALL static void -fbCombineConjointAtopReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineBAtop); -} - -FASTCALL static void -fbCombineConjointXorU (uint32_t *dest, const uint32_t *src, int width) -{ - fbCombineConjointGeneralU (dest, src, width, CombineXor); -} - -/********************************************************************************/ -/*************************** Per Channel functions ******************************/ -/********************************************************************************/ - -FASTCALL static void -fbCombineMaskC (uint32_t *src, uint32_t *mask) -{ - uint32_t a = *mask; - - uint32_t x; - uint16_t xa; - - if (!a) - { - *(src) = 0; - return; - } - - x = *(src); - if (a == 0xffffffff) - { - x = x >> 24; - x |= x << 8; - x |= x << 16; - *(mask) = x; - return; - } - - xa = x >> 24; - FbByteMulC(x, a); - *(src) = x; - FbByteMul(a, xa); - *(mask) = a; -} - -FASTCALL static void -fbCombineMaskValueC (uint32_t *src, const uint32_t *mask) -{ - uint32_t a = *mask; - uint32_t x; - - if (!a) - { - *(src) = 0; - return; - } - - if (a == 0xffffffff) - return; - - x = *(src); - FbByteMulC(x, a); - *(src) =x; -} - -FASTCALL static void -fbCombineMaskAlphaC (const uint32_t *src, uint32_t *mask) -{ - uint32_t a = *(mask); - uint32_t x; - - if (!a) - return; - - x = *(src) >> 24; - if (x == 0xff) - return; - if (a == 0xffffffff) - { - x = x >> 24; - x |= x << 8; - x |= x << 16; - *(mask) = x; - return; - } - - FbByteMul(a, x); - *(mask) = a; -} - - - -FASTCALL static void -fbCombineClearC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - memset(dest, 0, width*sizeof(uint32_t)); -} - -FASTCALL static void -fbCombineSrcC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - - fbCombineMaskValueC (&s, &m); - - *(dest) = s; - } -} - -FASTCALL static void -fbCombineOverC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t a; - - fbCombineMaskC (&s, &m); - - a = ~m; - if (a != 0xffffffff) - { - if (a) - { - uint32_t d = *(dest + i); - FbByteMulAddC(d, a, s); - s = d; - } - *(dest + i) = s; - } - } -} - -FASTCALL static void -fbCombineOverReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint32_t a = ~d >> 24; - - if (a) - { - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - - fbCombineMaskValueC (&s, &m); - - if (a != 0xff) - { - FbByteMulAdd(s, a, d); - } - *(dest + i) = s; - } - } -} - -FASTCALL static void -fbCombineInC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint16_t a = d >> 24; - uint32_t s = 0; - if (a) - { - uint32_t m = *(mask + i); - - s = *(src + i); - fbCombineMaskValueC (&s, &m); - if (a != 0xff) - { - FbByteMul(s, a); - } - } - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineInReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t a; - - fbCombineMaskAlphaC (&s, &m); - - a = m; - if (a != 0xffffffff) - { - uint32_t d = 0; - if (a) - { - d = *(dest + i); - FbByteMulC(d, a); - } - *(dest + i) = d; - } - } -} - -FASTCALL static void -fbCombineOutC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint16_t a = ~d >> 24; - uint32_t s = 0; - if (a) - { - uint32_t m = *(mask + i); - - s = *(src + i); - fbCombineMaskValueC (&s, &m); - - if (a != 0xff) - { - FbByteMul(s, a); - } - } - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineOutReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t a; - - fbCombineMaskAlphaC (&s, &m); - - a = ~m; - if (a != 0xffffffff) - { - uint32_t d = 0; - if (a) - { - d = *(dest + i); - FbByteMulC(d, a); - } - *(dest + i) = d; - } - } -} - -FASTCALL static void -fbCombineAtopC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t ad; - uint16_t as = d >> 24; - - fbCombineMaskC (&s, &m); - - ad = ~m; - - FbByteAddMulC(d, ad, s, as); - *(dest + i) = d; - } -} - -FASTCALL static void -fbCombineAtopReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - - uint32_t d = *(dest + i); - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t ad; - uint16_t as = ~d >> 24; - - fbCombineMaskC (&s, &m); - - ad = m; - - FbByteAddMulC(d, ad, s, as); - *(dest + i) = d; - } -} - -FASTCALL static void -fbCombineXorC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t d = *(dest + i); - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t ad; - uint16_t as = ~d >> 24; - - fbCombineMaskC (&s, &m); - - ad = ~m; - - FbByteAddMulC(d, ad, s, as); - *(dest + i) = d; - } -} - -FASTCALL static void -fbCombineAddC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s = *(src + i); - uint32_t m = *(mask + i); - uint32_t d = *(dest + i); - - fbCombineMaskValueC (&s, &m); - - FbByteAdd(d, s); - *(dest + i) = d; - } -} - -FASTCALL static void -fbCombineSaturateC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s, d; - uint16_t sa, sr, sg, sb, da; - uint16_t t, u, v; - uint32_t m,n,o,p; - - d = *(dest + i); - s = *(src + i); - m = *(mask + i); - - fbCombineMaskC (&s, &m); - - sa = (m >> 24); - sr = (m >> 16) & 0xff; - sg = (m >> 8) & 0xff; - sb = (m ) & 0xff; - da = ~d >> 24; - - if (sb <= da) - m = FbAdd(s,d,0,t); - else - m = FbGen (s, d, 0, (da << 8) / sb, 0xff, t, u, v); - - if (sg <= da) - n = FbAdd(s,d,8,t); - else - n = FbGen (s, d, 8, (da << 8) / sg, 0xff, t, u, v); - - if (sr <= da) - o = FbAdd(s,d,16,t); - else - o = FbGen (s, d, 16, (da << 8) / sr, 0xff, t, u, v); - - if (sa <= da) - p = FbAdd(s,d,24,t); - else - p = FbGen (s, d, 24, (da << 8) / sa, 0xff, t, u, v); - - *(dest + i) = m|n|o|p; - } -} - -FASTCALL static void -fbCombineDisjointGeneralC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width, uint8_t combine) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s, d; - uint32_t m,n,o,p; - uint32_t Fa, Fb; - uint16_t t, u, v; - uint32_t sa; - uint8_t da; - - s = *(src + i); - m = *(mask + i); - d = *(dest + i); - da = d >> 24; - - fbCombineMaskC (&s, &m); - - sa = m; - - switch (combine & CombineA) { - default: - Fa = 0; - break; - case CombineAOut: - m = fbCombineDisjointOutPart ((uint8_t) (sa >> 0), da); - n = fbCombineDisjointOutPart ((uint8_t) (sa >> 8), da) << 8; - o = fbCombineDisjointOutPart ((uint8_t) (sa >> 16), da) << 16; - p = fbCombineDisjointOutPart ((uint8_t) (sa >> 24), da) << 24; - Fa = m|n|o|p; - break; - case CombineAIn: - m = fbCombineDisjointInPart ((uint8_t) (sa >> 0), da); - n = fbCombineDisjointInPart ((uint8_t) (sa >> 8), da) << 8; - o = fbCombineDisjointInPart ((uint8_t) (sa >> 16), da) << 16; - p = fbCombineDisjointInPart ((uint8_t) (sa >> 24), da) << 24; - Fa = m|n|o|p; - break; - case CombineA: - Fa = 0xffffffff; - break; - } - - switch (combine & CombineB) { - default: - Fb = 0; - break; - case CombineBOut: - m = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 0)); - n = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 8)) << 8; - o = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 16)) << 16; - p = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 24)) << 24; - Fb = m|n|o|p; - break; - case CombineBIn: - m = fbCombineDisjointInPart (da, (uint8_t) (sa >> 0)); - n = fbCombineDisjointInPart (da, (uint8_t) (sa >> 8)) << 8; - o = fbCombineDisjointInPart (da, (uint8_t) (sa >> 16)) << 16; - p = fbCombineDisjointInPart (da, (uint8_t) (sa >> 24)) << 24; - Fb = m|n|o|p; - break; - case CombineB: - Fb = 0xffffffff; - break; - } - m = FbGen (s,d,0,FbGet8(Fa,0),FbGet8(Fb,0),t, u, v); - n = FbGen (s,d,8,FbGet8(Fa,8),FbGet8(Fb,8),t, u, v); - o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t, u, v); - p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t, u, v); - s = m|n|o|p; - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineDisjointOverC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineAOver); -} - -FASTCALL static void -fbCombineDisjointInC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineAIn); -} - -FASTCALL static void -fbCombineDisjointInReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineBIn); -} - -FASTCALL static void -fbCombineDisjointOutC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineAOut); -} - -FASTCALL static void -fbCombineDisjointOutReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineBOut); -} - -FASTCALL static void -fbCombineDisjointAtopC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineAAtop); -} - -FASTCALL static void -fbCombineDisjointAtopReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineBAtop); -} - -FASTCALL static void -fbCombineDisjointXorC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineDisjointGeneralC (dest, src, mask, width, CombineXor); -} - -FASTCALL static void -fbCombineConjointGeneralC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width, uint8_t combine) -{ - int i; - - for (i = 0; i < width; ++i) { - uint32_t s, d; - uint32_t m,n,o,p; - uint32_t Fa, Fb; - uint16_t t, u, v; - uint32_t sa; - uint8_t da; - - s = *(src + i); - m = *(mask + i); - d = *(dest + i); - da = d >> 24; - - fbCombineMaskC (&s, &m); - - sa = m; - - switch (combine & CombineA) { - default: - Fa = 0; - break; - case CombineAOut: - m = fbCombineConjointOutPart ((uint8_t) (sa >> 0), da); - n = fbCombineConjointOutPart ((uint8_t) (sa >> 8), da) << 8; - o = fbCombineConjointOutPart ((uint8_t) (sa >> 16), da) << 16; - p = fbCombineConjointOutPart ((uint8_t) (sa >> 24), da) << 24; - Fa = m|n|o|p; - break; - case CombineAIn: - m = fbCombineConjointInPart ((uint8_t) (sa >> 0), da); - n = fbCombineConjointInPart ((uint8_t) (sa >> 8), da) << 8; - o = fbCombineConjointInPart ((uint8_t) (sa >> 16), da) << 16; - p = fbCombineConjointInPart ((uint8_t) (sa >> 24), da) << 24; - Fa = m|n|o|p; - break; - case CombineA: - Fa = 0xffffffff; - break; - } - - switch (combine & CombineB) { - default: - Fb = 0; - break; - case CombineBOut: - m = fbCombineConjointOutPart (da, (uint8_t) (sa >> 0)); - n = fbCombineConjointOutPart (da, (uint8_t) (sa >> 8)) << 8; - o = fbCombineConjointOutPart (da, (uint8_t) (sa >> 16)) << 16; - p = fbCombineConjointOutPart (da, (uint8_t) (sa >> 24)) << 24; - Fb = m|n|o|p; - break; - case CombineBIn: - m = fbCombineConjointInPart (da, (uint8_t) (sa >> 0)); - n = fbCombineConjointInPart (da, (uint8_t) (sa >> 8)) << 8; - o = fbCombineConjointInPart (da, (uint8_t) (sa >> 16)) << 16; - p = fbCombineConjointInPart (da, (uint8_t) (sa >> 24)) << 24; - Fb = m|n|o|p; - break; - case CombineB: - Fb = 0xffffffff; - break; - } - m = FbGen (s,d,0,FbGet8(Fa,0),FbGet8(Fb,0),t, u, v); - n = FbGen (s,d,8,FbGet8(Fa,8),FbGet8(Fb,8),t, u, v); - o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t, u, v); - p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t, u, v); - s = m|n|o|p; - *(dest + i) = s; - } -} - -FASTCALL static void -fbCombineConjointOverC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineAOver); -} - -FASTCALL static void -fbCombineConjointOverReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineBOver); -} - -FASTCALL static void -fbCombineConjointInC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineAIn); -} - -FASTCALL static void -fbCombineConjointInReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineBIn); -} - -FASTCALL static void -fbCombineConjointOutC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineAOut); -} - -FASTCALL static void -fbCombineConjointOutReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineBOut); -} - -FASTCALL static void -fbCombineConjointAtopC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineAAtop); -} - -FASTCALL static void -fbCombineConjointAtopReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineBAtop); -} - -FASTCALL static void -fbCombineConjointXorC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - fbCombineConjointGeneralC (dest, src, mask, width, CombineXor); -} - -CombineFuncU pixman_fbCombineFuncU[] = { - fbCombineClear, - fbCombineSrcU, - NULL, /* CombineDst */ - fbCombineOverU, - fbCombineOverReverseU, - fbCombineInU, - fbCombineInReverseU, - fbCombineOutU, - fbCombineOutReverseU, - fbCombineAtopU, - fbCombineAtopReverseU, - fbCombineXorU, - fbCombineAddU, - fbCombineSaturateU, - NULL, - NULL, - fbCombineClear, - fbCombineSrcU, - NULL, /* CombineDst */ - fbCombineDisjointOverU, - fbCombineSaturateU, /* DisjointOverReverse */ - fbCombineDisjointInU, - fbCombineDisjointInReverseU, - fbCombineDisjointOutU, - fbCombineDisjointOutReverseU, - fbCombineDisjointAtopU, - fbCombineDisjointAtopReverseU, - fbCombineDisjointXorU, - NULL, - NULL, - NULL, - NULL, - fbCombineClear, - fbCombineSrcU, - NULL, /* CombineDst */ - fbCombineConjointOverU, - fbCombineConjointOverReverseU, - fbCombineConjointInU, - fbCombineConjointInReverseU, - fbCombineConjointOutU, - fbCombineConjointOutReverseU, - fbCombineConjointAtopU, - fbCombineConjointAtopReverseU, - fbCombineConjointXorU, -}; - -CombineFuncC pixman_fbCombineFuncC[] = { - fbCombineClearC, - fbCombineSrcC, - NULL, /* Dest */ - fbCombineOverC, - fbCombineOverReverseC, - fbCombineInC, - fbCombineInReverseC, - fbCombineOutC, - fbCombineOutReverseC, - fbCombineAtopC, - fbCombineAtopReverseC, - fbCombineXorC, - fbCombineAddC, - fbCombineSaturateC, - NULL, - NULL, - fbCombineClearC, /* 0x10 */ - fbCombineSrcC, - NULL, /* Dest */ - fbCombineDisjointOverC, - fbCombineSaturateC, /* DisjointOverReverse */ - fbCombineDisjointInC, - fbCombineDisjointInReverseC, - fbCombineDisjointOutC, - fbCombineDisjointOutReverseC, - fbCombineDisjointAtopC, - fbCombineDisjointAtopReverseC, - fbCombineDisjointXorC, /* 0x1b */ - NULL, - NULL, - NULL, - NULL, - fbCombineClearC, - fbCombineSrcC, - NULL, /* Dest */ - fbCombineConjointOverC, - fbCombineConjointOverReverseC, - fbCombineConjointInC, - fbCombineConjointInReverseC, - fbCombineConjointOutC, - fbCombineConjointOutReverseC, - fbCombineConjointAtopC, - fbCombineConjointAtopReverseC, - fbCombineConjointXorC, -}; diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-compose-accessors.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-compose-accessors.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-compose-accessors.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-compose-accessors.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - -#define PIXMAN_FB_ACCESSORS - -#include "pixman-compose.c" diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-compose.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-compose.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-compose.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-compose.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,487 +0,0 @@ -/* - * - * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. - * 2005 Lars Knoll & Zack Rusin, Trolltech - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include -#include - -#include "pixman-private.h" - -#ifdef PIXMAN_FB_ACCESSORS -#define PIXMAN_COMPOSITE_RECT_GENERAL pixman_composite_rect_general_accessors -#define PIXMAN_COMPOSE_FUNCTIONS pixman_composeFunctions_accessors - -#define FETCH_PROC_FOR_PICTURE pixman_fetchProcForPicture_accessors -#define FETCH_PIXEL_PROC_FOR_PICTURE pixman_fetchPixelProcForPicture_accessors -#define STORE_PROC_FOR_PICTURE pixman_storeProcForPicture_accessors - -#define FB_FETCH_TRANSFORMED fbFetchTransformed_accessors -#define FB_FETCH_EXTERNAL_ALPHA fbFetchExternalAlpha_accessors -#define FB_STORE_EXTERNAL_ALPHA fbStoreExternalAlpha_accessors - -#else - -#define PIXMAN_COMPOSITE_RECT_GENERAL pixman_composite_rect_general_no_accessors -#define PIXMAN_COMPOSE_FUNCTIONS pixman_composeFunctions - -#define FETCH_PROC_FOR_PICTURE pixman_fetchProcForPicture -#define FETCH_PIXEL_PROC_FOR_PICTURE pixman_fetchPixelProcForPicture -#define STORE_PROC_FOR_PICTURE pixman_storeProcForPicture - -#define FB_FETCH_TRANSFORMED fbFetchTransformed -#define FB_FETCH_EXTERNAL_ALPHA fbFetchExternalAlpha -#define FB_STORE_EXTERNAL_ALPHA fbStoreExternalAlpha - -#endif - -static unsigned int -SourcePictureClassify (source_image_t *pict, - int x, - int y, - int width, - int height) -{ - if (pict->common.type == SOLID) - { - pict->class = SOURCE_IMAGE_CLASS_HORIZONTAL; - } - else if (pict->common.type == LINEAR) - { - linear_gradient_t *linear = (linear_gradient_t *)pict; - pixman_vector_t v; - pixman_fixed_32_32_t l; - pixman_fixed_48_16_t dx, dy, a, b, off; - pixman_fixed_48_16_t factors[4]; - int i; - - dx = linear->p2.x - linear->p1.x; - dy = linear->p2.y - linear->p1.y; - l = dx * dx + dy * dy; - if (l) - { - a = (dx << 32) / l; - b = (dy << 32) / l; - } - else - { - a = b = 0; - } - - off = (-a * linear->p1.x - -b * linear->p1.y) >> 16; - - for (i = 0; i < 3; i++) - { - v.vector[0] = pixman_int_to_fixed ((i % 2) * (width - 1) + x); - v.vector[1] = pixman_int_to_fixed ((i / 2) * (height - 1) + y); - v.vector[2] = pixman_fixed_1; - - if (pict->common.transform) - { - if (!pixman_transform_point_3d (pict->common.transform, &v)) - return SOURCE_IMAGE_CLASS_UNKNOWN; - } - - factors[i] = ((a * v.vector[0] + b * v.vector[1]) >> 16) + off; - } - - if (factors[2] == factors[0]) - pict->class = SOURCE_IMAGE_CLASS_HORIZONTAL; - else if (factors[1] == factors[0]) - pict->class = SOURCE_IMAGE_CLASS_VERTICAL; - } - - return pict->class; -} - -static void fbFetchSolid(bits_image_t * pict, int x, int y, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits) -{ - uint32_t color; - uint32_t *end; - fetchPixelProc fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - color = fetch(pict, 0, 0); - - end = buffer + width; - while (buffer < end) - *(buffer++) = color; -} - -static void fbFetch(bits_image_t * pict, int x, int y, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits) -{ - fetchProc fetch = FETCH_PROC_FOR_PICTURE(pict); - - fetch(pict, x, y, width, buffer); -} - -#ifdef PIXMAN_FB_ACCESSORS /* The accessor version can't be parameterized from outside */ -static const -#endif -FbComposeFunctions PIXMAN_COMPOSE_FUNCTIONS = { - pixman_fbCombineFuncU, - pixman_fbCombineFuncC, - pixman_fbCombineMaskU -}; - -static void -fbStore(bits_image_t * pict, int x, int y, int width, uint32_t *buffer) -{ - uint32_t *bits; - int32_t stride; - storeProc store = STORE_PROC_FOR_PICTURE(pict); - const pixman_indexed_t * indexed = pict->indexed; - - bits = pict->bits; - stride = pict->rowstride; - bits += y*stride; - store((pixman_image_t *)pict, bits, buffer, x, width, indexed); -} - -typedef void (*scanStoreProc)(pixman_image_t *, int, int, int, uint32_t *); -typedef void (*scanFetchProc)(pixman_image_t *, int, int, int, uint32_t *, - uint32_t *, uint32_t); - -#ifndef PIXMAN_FB_ACCESSORS -static -#endif -void -PIXMAN_COMPOSITE_RECT_GENERAL (const FbComposeData *data, - uint32_t *scanline_buffer) -{ - uint32_t *src_buffer = scanline_buffer; - uint32_t *dest_buffer = src_buffer + data->width; - int i; - scanStoreProc store; - scanFetchProc fetchSrc = NULL, fetchMask = NULL, fetchDest = NULL; - unsigned int srcClass = SOURCE_IMAGE_CLASS_UNKNOWN; - unsigned int maskClass = SOURCE_IMAGE_CLASS_UNKNOWN; - uint32_t *bits; - int32_t stride; - int xoff, yoff; - - if (data->op == PIXMAN_OP_CLEAR) - fetchSrc = NULL; - else if (IS_SOURCE_IMAGE (data->src)) - { - fetchSrc = (scanFetchProc)pixmanFetchSourcePict; - srcClass = SourcePictureClassify ((source_image_t *)data->src, - data->xSrc, data->ySrc, - data->width, data->height); - } - else - { - bits_image_t *bits = (bits_image_t *)data->src; - - if (bits->common.alpha_map) - { - fetchSrc = (scanFetchProc)FB_FETCH_EXTERNAL_ALPHA; - } - else if ((bits->common.repeat == PIXMAN_REPEAT_NORMAL || bits->common.repeat == PIXMAN_REPEAT_PAD) && - bits->width == 1 && - bits->height == 1) - { - fetchSrc = (scanFetchProc)fbFetchSolid; - srcClass = SOURCE_IMAGE_CLASS_HORIZONTAL; - } - else if (!bits->common.transform && bits->common.filter != PIXMAN_FILTER_CONVOLUTION - && bits->common.repeat != PIXMAN_REPEAT_PAD) - { - fetchSrc = (scanFetchProc)fbFetch; - } - else - { - fetchSrc = (scanFetchProc)FB_FETCH_TRANSFORMED; - } - } - - if (!data->mask || data->op == PIXMAN_OP_CLEAR) - { - fetchMask = NULL; - } - else - { - if (IS_SOURCE_IMAGE (data->mask)) - { - fetchMask = (scanFetchProc)pixmanFetchSourcePict; - maskClass = SourcePictureClassify ((source_image_t *)data->mask, - data->xMask, data->yMask, - data->width, data->height); - } - else - { - bits_image_t *bits = (bits_image_t *)data->mask; - - if (bits->common.alpha_map) - { - fetchMask = (scanFetchProc)FB_FETCH_EXTERNAL_ALPHA; - } - else if ((bits->common.repeat == PIXMAN_REPEAT_NORMAL || bits->common.repeat == PIXMAN_REPEAT_PAD) && - bits->width == 1 && bits->height == 1) - { - fetchMask = (scanFetchProc)fbFetchSolid; - maskClass = SOURCE_IMAGE_CLASS_HORIZONTAL; - } - else if (!bits->common.transform && bits->common.filter != PIXMAN_FILTER_CONVOLUTION - && bits->common.repeat != PIXMAN_REPEAT_PAD) - fetchMask = (scanFetchProc)fbFetch; - else - fetchMask = (scanFetchProc)FB_FETCH_TRANSFORMED; - } - } - - if (data->dest->common.alpha_map) - { - fetchDest = (scanFetchProc)FB_FETCH_EXTERNAL_ALPHA; - store = (scanStoreProc)FB_STORE_EXTERNAL_ALPHA; - - if (data->op == PIXMAN_OP_CLEAR || data->op == PIXMAN_OP_SRC) - fetchDest = NULL; - } - else - { - fetchDest = (scanFetchProc)fbFetch; - store = (scanStoreProc)fbStore; - - switch (data->op) - { - case PIXMAN_OP_CLEAR: - case PIXMAN_OP_SRC: - fetchDest = NULL; -#ifndef PIXMAN_FB_ACCESSORS - /* fall-through */ - case PIXMAN_OP_ADD: - case PIXMAN_OP_OVER: - switch (data->dest->bits.format) { - case PIXMAN_a8r8g8b8: - case PIXMAN_x8r8g8b8: - store = NULL; - break; - default: - break; - } -#endif - break; - } - } - - if (!store) - { - bits = data->dest->bits.bits; - stride = data->dest->bits.rowstride; - xoff = yoff = 0; - } - else - { - bits = NULL; - stride = 0; - xoff = yoff = 0; - } - - if (fetchSrc && - fetchMask && - data->mask && - data->mask->common.type == BITS && - data->mask->common.component_alpha && - PIXMAN_FORMAT_RGB (data->mask->bits.format)) - { - uint32_t *mask_buffer = dest_buffer + data->width; - CombineFuncC compose = PIXMAN_COMPOSE_FUNCTIONS.combineC[data->op]; - if (!compose) - return; - - for (i = 0; i < data->height; ++i) { - /* fill first half of scanline with source */ - if (fetchSrc) - { - if (fetchMask) - { - /* fetch mask before source so that fetching of - source can be optimized */ - fetchMask (data->mask, data->xMask, data->yMask + i, - data->width, mask_buffer, 0, 0); - - if (maskClass == SOURCE_IMAGE_CLASS_HORIZONTAL) - fetchMask = NULL; - } - - if (srcClass == SOURCE_IMAGE_CLASS_HORIZONTAL) - { - fetchSrc (data->src, data->xSrc, data->ySrc + i, - data->width, src_buffer, 0, 0); - fetchSrc = NULL; - } - else - { - fetchSrc (data->src, data->xSrc, data->ySrc + i, - data->width, src_buffer, mask_buffer, - 0xffffffff); - } - } - else if (fetchMask) - { - fetchMask (data->mask, data->xMask, data->yMask + i, - data->width, mask_buffer, 0, 0); - } - - if (store) - { - /* fill dest into second half of scanline */ - if (fetchDest) - fetchDest (data->dest, data->xDest, data->yDest + i, - data->width, dest_buffer, 0, 0); - - /* blend */ - compose (dest_buffer, src_buffer, mask_buffer, data->width); - - /* write back */ - store (data->dest, data->xDest, data->yDest + i, data->width, - dest_buffer); - } - else - { - /* blend */ - compose (bits + (data->yDest + i+ yoff) * stride + - data->xDest + xoff, - src_buffer, mask_buffer, data->width); - } - } - } - else - { - uint32_t *src_mask_buffer = 0, *mask_buffer = 0; - CombineFuncU compose = PIXMAN_COMPOSE_FUNCTIONS.combineU[data->op]; - if (!compose) - return; - - if (fetchMask) - mask_buffer = dest_buffer + data->width; - - for (i = 0; i < data->height; ++i) { - /* fill first half of scanline with source */ - if (fetchSrc) - { - if (fetchMask) - { - /* fetch mask before source so that fetching of - source can be optimized */ - fetchMask (data->mask, data->xMask, data->yMask + i, - data->width, mask_buffer, 0, 0); - - if (maskClass == SOURCE_IMAGE_CLASS_HORIZONTAL) - fetchMask = NULL; - } - - if (srcClass == SOURCE_IMAGE_CLASS_HORIZONTAL) - { - fetchSrc (data->src, data->xSrc, data->ySrc + i, - data->width, src_buffer, 0, 0); - - if (mask_buffer) - { - PIXMAN_COMPOSE_FUNCTIONS.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); - src_mask_buffer = mask_buffer; - } - else - src_mask_buffer = src_buffer; - - fetchSrc = NULL; - } - else - { - fetchSrc (data->src, data->xSrc, data->ySrc + i, - data->width, src_buffer, mask_buffer, - 0xff000000); - - if (mask_buffer) - PIXMAN_COMPOSE_FUNCTIONS.combineMaskU (src_buffer, - mask_buffer, - data->width); - - src_mask_buffer = src_buffer; - } - } - else if (fetchMask) - { - fetchMask (data->mask, data->xMask, data->yMask + i, - data->width, mask_buffer, 0, 0); - - PIXMAN_COMPOSE_FUNCTIONS.combineU[PIXMAN_OP_IN] (mask_buffer, src_buffer, data->width); - - src_mask_buffer = mask_buffer; - } - - if (store) - { - /* fill dest into second half of scanline */ - if (fetchDest) - fetchDest (data->dest, data->xDest, data->yDest + i, - data->width, dest_buffer, 0, 0); - - /* blend */ - compose (dest_buffer, src_mask_buffer, data->width); - - /* write back */ - store (data->dest, data->xDest, data->yDest + i, data->width, - dest_buffer); - } - else - { - /* blend */ - compose (bits + (data->yDest + i+ yoff) * stride + - data->xDest + xoff, - src_mask_buffer, data->width); - } - } - } -} - -#ifndef PIXMAN_FB_ACCESSORS - -void -pixman_composite_rect_general (const FbComposeData *data, - uint32_t *scanline_buffer) -{ - if (data->src->common.read_func || - data->src->common.write_func || - (data->mask && data->mask->common.read_func) || - (data->mask && data->mask->common.write_func) || - data->dest->common.read_func || - data->dest->common.write_func) - { - pixman_composite_rect_general_accessors (data, scanline_buffer); - } - else - { - pixman_composite_rect_general_no_accessors (data, scanline_buffer); - } -} - -#endif diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-compute-region.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-compute-region.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-compute-region.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-compute-region.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,209 +0,0 @@ -/* - * - * Copyright © 1999 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include "pixman-private.h" - -#define BOUND(v) (int16_t) ((v) < INT16_MIN ? INT16_MIN : (v) > INT16_MAX ? INT16_MAX : (v)) - -static inline pixman_bool_t -miClipPictureReg (pixman_region16_t * pRegion, - pixman_region16_t * pClip, - int dx, - int dy) -{ - if (pixman_region_n_rects(pRegion) == 1 && - pixman_region_n_rects(pClip) == 1) - { - pixman_box16_t * pRbox = pixman_region_rectangles(pRegion, NULL); - pixman_box16_t * pCbox = pixman_region_rectangles(pClip, NULL); - int v; - - if (pRbox->x1 < (v = pCbox->x1 + dx)) - pRbox->x1 = BOUND(v); - if (pRbox->x2 > (v = pCbox->x2 + dx)) - pRbox->x2 = BOUND(v); - if (pRbox->y1 < (v = pCbox->y1 + dy)) - pRbox->y1 = BOUND(v); - if (pRbox->y2 > (v = pCbox->y2 + dy)) - pRbox->y2 = BOUND(v); - if (pRbox->x1 >= pRbox->x2 || - pRbox->y1 >= pRbox->y2) - { - pixman_region_init (pRegion); - } - } - else if (!pixman_region_not_empty (pClip)) - return FALSE; - else - { - if (dx || dy) - pixman_region_translate (pRegion, -dx, -dy); - if (!pixman_region_intersect (pRegion, pRegion, pClip)) - return FALSE; - if (dx || dy) - pixman_region_translate(pRegion, dx, dy); - } - return pixman_region_not_empty(pRegion); -} - - -static inline pixman_bool_t -miClipPictureSrc (pixman_region16_t * pRegion, - pixman_image_t * pPicture, - int dx, - int dy) -{ - /* XXX what to do with clipping from transformed pictures? */ - if (pPicture->common.transform || pPicture->type != BITS) - return TRUE; - - if (pPicture->common.repeat) - { - /* If the clip region was set by a client, then it should be intersected - * with the composite region since it's interpreted as happening - * after the repeat algorithm. - * - * If the clip region was not set by a client, then it was imposed by - * boundaries of the pixmap, or by sibling or child windows, which means - * it should in theory be repeated along. FIXME: we ignore that case. - * It is only relevant for windows that are (a) clipped by siblings/children - * and (b) used as source. However this case is not useful anyway due - * to lack of GraphicsExpose events. - */ - if (pPicture->common.has_client_clip) - { - pixman_region_translate ( pRegion, dx, dy); - - if (!pixman_region_intersect (pRegion, pRegion, - (pixman_region16_t *) pPicture->common.src_clip)) - return FALSE; - - pixman_region_translate ( pRegion, -dx, -dy); - } - - return TRUE; - } - else - { - return miClipPictureReg (pRegion, - pPicture->common.src_clip, - dx, - dy); - } -} - -/* - * returns FALSE if the final region is empty. Indistinguishable from - * an allocation failure, but rendering ignores those anyways. - */ - -pixman_bool_t -pixman_compute_composite_region (pixman_region16_t * pRegion, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - int v; - - pRegion->extents.x1 = xDst; - v = xDst + width; - pRegion->extents.x2 = BOUND(v); - pRegion->extents.y1 = yDst; - v = yDst + height; - pRegion->extents.y2 = BOUND(v); - pRegion->data = 0; - /* Check for empty operation */ - if (pRegion->extents.x1 >= pRegion->extents.x2 || - pRegion->extents.y1 >= pRegion->extents.y2) - { - pixman_region_init (pRegion); - return FALSE; - } - /* clip against dst */ - if (!miClipPictureReg (pRegion, &pDst->common.clip_region, 0, 0)) - { - pixman_region_fini (pRegion); - return FALSE; - } - if (pDst->common.alpha_map) - { - if (!miClipPictureReg (pRegion, &pDst->common.alpha_map->common.clip_region, - -pDst->common.alpha_origin.x, - -pDst->common.alpha_origin.y)) - { - pixman_region_fini (pRegion); - return FALSE; - } - } - /* clip against src */ - if (!miClipPictureSrc (pRegion, pSrc, xDst - xSrc, yDst - ySrc)) - { - pixman_region_fini (pRegion); - return FALSE; - } - if (pSrc->common.alpha_map) - { - if (!miClipPictureSrc (pRegion, (pixman_image_t *)pSrc->common.alpha_map, - xDst - (xSrc + pSrc->common.alpha_origin.x), - yDst - (ySrc + pSrc->common.alpha_origin.y))) - { - pixman_region_fini (pRegion); - return FALSE; - } - } - /* clip against mask */ - if (pMask) - { - if (!miClipPictureSrc (pRegion, pMask, xDst - xMask, yDst - yMask)) - { - pixman_region_fini (pRegion); - return FALSE; - } - if (pMask->common.alpha_map) - { - if (!miClipPictureSrc (pRegion, (pixman_image_t *)pMask->common.alpha_map, - xDst - (xMask + pMask->common.alpha_origin.x), - yDst - (yMask + pMask->common.alpha_origin.y))) - { - pixman_region_fini (pRegion); - return FALSE; - } - } - } - - return TRUE; -} diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-edge-accessors.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-edge-accessors.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-edge-accessors.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-edge-accessors.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - -#define PIXMAN_FB_ACCESSORS - -#include "pixman-edge.c" diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-edge.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-edge.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-edge.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-edge.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,331 +0,0 @@ -/* - * Copyright © 2004 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include "pixman-private.h" - -#ifdef PIXMAN_FB_ACCESSORS -#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_accessors -#else -#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_no_accessors -#endif - -/* - * 4 bit alpha - */ - -#define N_BITS 4 -#define rasterizeEdges fbRasterizeEdges4 - -#if BITMAP_BIT_ORDER == LSBFirst -#define Shift4(o) ((o) << 2) -#else -#define Shift4(o) ((1-(o)) << 2) -#endif - -#define Get4(x,o) (((x) >> Shift4(o)) & 0xf) -#define Put4(x,o,v) (((x) & ~(0xf << Shift4(o))) | (((v) & 0xf) << Shift4(o))) - -#define DefineAlpha(line,x) \ - uint8_t *__ap = (uint8_t *) line + ((x) >> 1); \ - int __ao = (x) & 1 - -#define StepAlpha ((__ap += __ao), (__ao ^= 1)) - -#define AddAlpha(a) { \ - uint8_t __o = READ(image, __ap); \ - uint8_t __a = (a) + Get4(__o, __ao); \ - WRITE(image, __ap, Put4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \ - } - -#include "pixman-edge-imp.h" - -#undef AddAlpha -#undef StepAlpha -#undef DefineAlpha -#undef rasterizeEdges -#undef N_BITS - - -/* - * 1 bit alpha - */ - -#define N_BITS 1 -#define rasterizeEdges fbRasterizeEdges1 - -#include "pixman-edge-imp.h" - -#undef rasterizeEdges -#undef N_BITS - -/* - * 8 bit alpha - */ - -static inline uint8_t -clip255 (int x) -{ - if (x > 255) return 255; - return x; -} - -#define add_saturate_8(buf,val,length) \ - do { \ - int i__ = (length); \ - uint8_t *buf__ = (buf); \ - int val__ = (val); \ - \ - while (i__--) \ - { \ - WRITE(image, (buf__), clip255 (READ(image, (buf__)) + (val__))); \ - (buf__)++; \ - } \ - } while (0) - -/* - * We want to detect the case where we add the same value to a long - * span of pixels. The triangles on the end are filled in while we - * count how many sub-pixel scanlines contribute to the middle section. - * - * +--------------------------+ - * fill_height =| \ / - * +------------------+ - * |================| - * fill_start fill_end - */ -static void -fbRasterizeEdges8 (pixman_image_t *image, - pixman_edge_t *l, - pixman_edge_t *r, - pixman_fixed_t t, - pixman_fixed_t b) -{ - pixman_fixed_t y = t; - uint32_t *line; - int fill_start = -1, fill_end = -1; - int fill_size = 0; - uint32_t *buf = (image)->bits.bits; - int stride = (image)->bits.rowstride; - int width = (image)->bits.width; - - line = buf + pixman_fixed_to_int (y) * stride; - - for (;;) - { - uint8_t *ap = (uint8_t *) line; - pixman_fixed_t lx, rx; - int lxi, rxi; - - /* clip X */ - lx = l->x; - if (lx < 0) - lx = 0; - rx = r->x; - if (pixman_fixed_to_int (rx) >= width) - /* Use the last pixel of the scanline, covered 100%. - * We can't use the first pixel following the scanline, - * because accessing it could result in a buffer overrun. - */ - rx = pixman_int_to_fixed (width) - 1; - - /* Skip empty (or backwards) sections */ - if (rx > lx) - { - int lxs, rxs; - - /* Find pixel bounds for span. */ - lxi = pixman_fixed_to_int (lx); - rxi = pixman_fixed_to_int (rx); - - /* Sample coverage for edge pixels */ - lxs = RenderSamplesX (lx, 8); - rxs = RenderSamplesX (rx, 8); - - /* Add coverage across row */ - if (lxi == rxi) - { - WRITE(image, ap +lxi, clip255 (READ(image, ap + lxi) + rxs - lxs)); - } - else - { - WRITE(image, ap + lxi, clip255 (READ(image, ap + lxi) + N_X_FRAC(8) - lxs)); - - /* Move forward so that lxi/rxi is the pixel span */ - lxi++; - - /* Don't bother trying to optimize the fill unless - * the span is longer than 4 pixels. */ - if (rxi - lxi > 4) - { - if (fill_start < 0) - { - fill_start = lxi; - fill_end = rxi; - fill_size++; - } - else - { - if (lxi >= fill_end || rxi < fill_start) - { - /* We're beyond what we saved, just fill it */ - add_saturate_8 (ap + fill_start, - fill_size * N_X_FRAC(8), - fill_end - fill_start); - fill_start = lxi; - fill_end = rxi; - fill_size = 1; - } - else - { - /* Update fill_start */ - if (lxi > fill_start) - { - add_saturate_8 (ap + fill_start, - fill_size * N_X_FRAC(8), - lxi - fill_start); - fill_start = lxi; - } - else if (lxi < fill_start) - { - add_saturate_8 (ap + lxi, N_X_FRAC(8), - fill_start - lxi); - } - - /* Update fill_end */ - if (rxi < fill_end) - { - add_saturate_8 (ap + rxi, - fill_size * N_X_FRAC(8), - fill_end - rxi); - fill_end = rxi; - } - else if (fill_end < rxi) - { - add_saturate_8 (ap + fill_end, - N_X_FRAC(8), - rxi - fill_end); - } - fill_size++; - } - } - } - else - { - add_saturate_8 (ap + lxi, N_X_FRAC(8), rxi - lxi); - } - - WRITE(image, ap + rxi, clip255 (READ(image, ap + rxi) + rxs)); - } - } - - if (y == b) { - /* We're done, make sure we clean up any remaining fill. */ - if (fill_start != fill_end) { - if (fill_size == N_Y_FRAC(8)) - { - MEMSET_WRAPPED (image, ap + fill_start, 0xff, fill_end - fill_start); - } - else - { - add_saturate_8 (ap + fill_start, fill_size * N_X_FRAC(8), - fill_end - fill_start); - } - } - break; - } - - if (pixman_fixed_frac (y) != Y_FRAC_LAST(8)) - { - RenderEdgeStepSmall (l); - RenderEdgeStepSmall (r); - y += STEP_Y_SMALL(8); - } - else - { - RenderEdgeStepBig (l); - RenderEdgeStepBig (r); - y += STEP_Y_BIG(8); - if (fill_start != fill_end) - { - if (fill_size == N_Y_FRAC(8)) - { - MEMSET_WRAPPED (image, ap + fill_start, 0xff, fill_end - fill_start); - } - else - { - add_saturate_8 (ap + fill_start, fill_size * N_X_FRAC(8), - fill_end - fill_start); - } - fill_start = fill_end = -1; - fill_size = 0; - } - line += stride; - } - } -} - -#ifndef PIXMAN_FB_ACCESSORS -static -#endif -void -PIXMAN_RASTERIZE_EDGES (pixman_image_t *image, - pixman_edge_t *l, - pixman_edge_t *r, - pixman_fixed_t t, - pixman_fixed_t b) -{ - switch (PIXMAN_FORMAT_BPP (image->bits.format)) - { - case 1: - fbRasterizeEdges1 (image, l, r, t, b); - break; - case 4: - fbRasterizeEdges4 (image, l, r, t, b); - break; - case 8: - fbRasterizeEdges8 (image, l, r, t, b); - break; - } -} - -#ifndef PIXMAN_FB_ACCESSORS - -void -pixman_rasterize_edges (pixman_image_t *image, - pixman_edge_t *l, - pixman_edge_t *r, - pixman_fixed_t t, - pixman_fixed_t b) -{ - if (image->common.read_func || image->common.write_func) - pixman_rasterize_edges_accessors (image, l, r, t, b); - else - pixman_rasterize_edges_no_accessors (image, l, r, t, b); -} - -#endif diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-edge-imp.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-edge-imp.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-edge-imp.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-edge-imp.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,154 +0,0 @@ -/* - * Copyright © 2004 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef rasterizeSpan -#endif - -static void -rasterizeEdges (pixman_image_t *image, - pixman_edge_t *l, - pixman_edge_t *r, - pixman_fixed_t t, - pixman_fixed_t b) -{ - pixman_fixed_t y = t; - uint32_t *line; - uint32_t *buf = (image)->bits.bits; - int stride = (image)->bits.rowstride; - int width = (image)->bits.width; - - line = buf + pixman_fixed_to_int (y) * stride; - - for (;;) - { - pixman_fixed_t lx; - pixman_fixed_t rx; - int lxi; - int rxi; - - lx = l->x; - rx = r->x; -#if N_BITS == 1 - /* For the non-antialiased case, round the coordinates up, in effect - * sampling the center of the pixel. (The AA case does a similar - * adjustment in RenderSamplesX) */ - lx += X_FRAC_FIRST(1); - rx += X_FRAC_FIRST(1); -#endif - /* clip X */ - if (lx < 0) - lx = 0; - if (pixman_fixed_to_int (rx) >= width) -#if N_BITS == 1 - rx = pixman_int_to_fixed (width); -#else - /* Use the last pixel of the scanline, covered 100%. - * We can't use the first pixel following the scanline, - * because accessing it could result in a buffer overrun. - */ - rx = pixman_int_to_fixed (width) - 1; -#endif - - /* Skip empty (or backwards) sections */ - if (rx > lx) - { - - /* Find pixel bounds for span */ - lxi = pixman_fixed_to_int (lx); - rxi = pixman_fixed_to_int (rx); - -#if N_BITS == 1 - { - uint32_t *a = line; - uint32_t startmask; - uint32_t endmask; - int nmiddle; - int width = rxi - lxi; - int x = lxi; - - a += x >> FB_SHIFT; - x &= FB_MASK; - - FbMaskBits (x, width, startmask, nmiddle, endmask); - if (startmask) { - WRITE(image, a, READ(image, a) | startmask); - a++; - } - while (nmiddle--) - WRITE(image, a++, FB_ALLONES); - if (endmask) - WRITE(image, a, READ(image, a) | endmask); - } -#else - { - DefineAlpha(line,lxi); - int lxs; - int rxs; - - /* Sample coverage for edge pixels */ - lxs = RenderSamplesX (lx, N_BITS); - rxs = RenderSamplesX (rx, N_BITS); - - /* Add coverage across row */ - if (lxi == rxi) - { - AddAlpha (rxs - lxs); - } - else - { - int xi; - - AddAlpha (N_X_FRAC(N_BITS) - lxs); - StepAlpha; - for (xi = lxi + 1; xi < rxi; xi++) - { - AddAlpha (N_X_FRAC(N_BITS)); - StepAlpha; - } - AddAlpha (rxs); - } - } -#endif - } - - if (y == b) - break; - -#if N_BITS > 1 - if (pixman_fixed_frac (y) != Y_FRAC_LAST(N_BITS)) - { - RenderEdgeStepSmall (l); - RenderEdgeStepSmall (r); - y += STEP_Y_SMALL(N_BITS); - } - else -#endif - { - RenderEdgeStepBig (l); - RenderEdgeStepBig (r); - y += STEP_Y_BIG(N_BITS); - line += stride; - } - } -} - -#undef rasterizeSpan diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-embed.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-embed.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-embed.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-embed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2007 Novell, Inc (http://www.novell.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT - * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Larry Ewing (via script) - * - */ - -#ifndef _PIXMAN_EMBED_H_ -#define _PIXMAN_EMBED_H_ -#define _pixman_brokendata _mono_pixman_brokendata -#define _pixman_edge_tMultiInit _mono_pixman_edge_tMultiInit -#define _pixman_region_emptyBox _mono_pixman_region_emptyBox -#define _pixman_region_emptyData _mono_pixman_region_emptyData -#define pixmanFetchSourcePict mono_pixmanFetchSourcePict -#define pixman_add_trapezoids mono_pixman_add_trapezoids -#define pixman_add_traps mono_pixman_add_traps -#define pixman_addition_overflows_int mono_pixman_addition_overflows_int -#define pixman_blt mono_pixman_blt -#define pixman_blt_mmx mono_pixman_blt_mmx -#define pixman_break mono_pixman_break -#define pixman_brokendata mono_pixman_brokendata -#define pixman_composeFunctions mono_pixman_composeFunctions -#define pixman_composite_rect_general mono_pixman_composite_rect_general -#define pixman_composite_rect_general_accessors mono_pixman_composite_rect_general_accessors -#define pixman_compute_composite_region mono_pixman_compute_composite_region -#define pixman_edge_init mono_pixman_edge_init -#define pixman_edge_step mono_pixman_edge_step -#define pixman_fbCombineFuncC mono_pixman_fbCombineFuncC -#define pixman_fbCombineFuncU mono_pixman_fbCombineFuncU -#define pixman_fbCombineMaskU mono_pixman_fbCombineMaskU -#define pixman_fetchPixelProcForPicture mono_pixman_fetchPixelProcForPicture -#define pixman_fetchPixelProcForPicture_accessors mono_pixman_fetchPixelProcForPicture_accessors -#define pixman_fetchProcForPicture mono_pixman_fetchProcForPicture -#define pixman_fetchProcForPicture_accessors mono_pixman_fetchProcForPicture_accessors -#define pixman_fill mono_pixman_fill -#define pixman_fill_mmx mono_pixman_fill_mmx -#define pixman_format_supported_destination mono_pixman_format_supported_destination -#define pixman_format_supported_source mono_pixman_format_supported_source -#define pixman_have_mmx mono_pixman_have_mmx -#define pixman_have_sse mono_pixman_have_sse -#define pixman_image_composite mono_pixman_image_composite -#define pixman_image_composite_rect mono_pixman_image_composite_rect -#define pixman_image_create_bits mono_pixman_image_create_bits -#define pixman_image_create_conical_gradient mono_pixman_image_create_conical_gradient -#define pixman_image_create_linear_gradient mono_pixman_image_create_linear_gradient -#define pixman_image_create_radial_gradient mono_pixman_image_create_radial_gradient -#define pixman_image_create_solid_fill mono_pixman_image_create_solid_fill -#define pixman_image_fill_rectangles mono_pixman_image_fill_rectangles -#define pixman_image_get_data mono_pixman_image_get_data -#define pixman_image_get_depth mono_pixman_image_get_depth -#define pixman_image_get_height mono_pixman_image_get_height -#define pixman_image_get_stride mono_pixman_image_get_stride -#define pixman_image_get_width mono_pixman_image_get_width -#define pixman_image_ref mono_pixman_image_ref -#define pixman_image_set_accessors mono_pixman_image_set_accessors -#define pixman_image_set_alpha_map mono_pixman_image_set_alpha_map -#define pixman_image_set_clip_region mono_pixman_image_set_clip_region -#define pixman_image_set_component_alpha mono_pixman_image_set_component_alpha -#define pixman_image_set_filter mono_pixman_image_set_filter -#define pixman_image_set_has_client_clip mono_pixman_image_set_has_client_clip -#define pixman_image_set_indexed mono_pixman_image_set_indexed -#define pixman_image_set_repeat mono_pixman_image_set_repeat -#define pixman_image_set_source_clipping mono_pixman_image_set_source_clipping -#define pixman_image_set_transform mono_pixman_image_set_transform -#define pixman_image_unref mono_pixman_image_unref -#define pixman_line_fixed_edge_init mono_pixman_line_fixed_edge_init -#define pixman_malloc_ab mono_pixman_malloc_ab -#define pixman_malloc_abc mono_pixman_malloc_abc -#define pixman_multiply_overflows_int mono_pixman_multiply_overflows_int -#define pixman_op mono_pixman_op -#define pixman_rasterize_edges mono_pixman_rasterize_edges -#define pixman_rasterize_edges_accessors mono_pixman_rasterize_edges_accessors -#define pixman_rasterize_trapezoid mono_pixman_rasterize_trapezoid -#define pixman_rect_alloc mono_pixman_rect_alloc -#define pixman_region16_print mono_pixman_region16_print -#define pixman_region_append mono_pixman_region_append -#define pixman_region_contains_point mono_pixman_region_contains_point -#define pixman_region_contains_rectangle mono_pixman_region_contains_rectangle -#define pixman_region_copy mono_pixman_region_copy -#define pixman_region_empty mono_pixman_region_empty -#define pixman_region_emptyBox mono_pixman_region_emptyBox -#define pixman_region_emptyData mono_pixman_region_emptyData -#define pixman_region_equal mono_pixman_region_equal -#define pixman_region_extents mono_pixman_region_extents -#define pixman_region_fini mono_pixman_region_fini -#define pixman_region_init mono_pixman_region_init -#define pixman_region_init_rect mono_pixman_region_init_rect -#define pixman_region_init_rects mono_pixman_region_init_rects -#define pixman_region_init_with_extents mono_pixman_region_init_with_extents -#define pixman_region_intersect mono_pixman_region_intersect -#define pixman_region_intersectO mono_pixman_region_intersectO -#define pixman_region_inverse mono_pixman_region_inverse -#define pixman_region_n_rects mono_pixman_region_n_rects -#define pixman_region_not_empty mono_pixman_region_not_empty -#define pixman_region_rectangles mono_pixman_region_rectangles -#define pixman_region_rects mono_pixman_region_rects -#define pixman_region_reset mono_pixman_region_reset -#define pixman_region_selfcheck mono_pixman_region_selfcheck -#define pixman_region_set_static_pointers mono_pixman_region_set_static_pointers -#define pixman_region_subtract mono_pixman_region_subtract -#define pixman_region_subtractO mono_pixman_region_subtractO -#define pixman_region_translate mono_pixman_region_translate -#define pixman_region_union mono_pixman_region_union -#define pixman_region_unionO mono_pixman_region_unionO -#define pixman_region_union_rect mono_pixman_region_union_rect -#define pixman_region_validate mono_pixman_region_validate -#define pixman_sample_ceil_y mono_pixman_sample_ceil_y -#define pixman_sample_floor_y mono_pixman_sample_floor_y -#define pixman_set_extents mono_pixman_set_extents -#define pixman_storeProcForPicture mono_pixman_storeProcForPicture -#define pixman_storeProcForPicture_accessors mono_pixman_storeProcForPicture_accessors -#define pixman_transform_point_3d mono_pixman_transform_point_3d -#define pixman_version mono_pixman_version -#define pixman_version_string mono_pixman_version_string -#endif diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,732 +0,0 @@ -/*********************************************************** - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* - * Copyright © 1998, 2004 Keith Packard - * Copyright 2007 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef PIXMAN_H__ -#define PIXMAN_H__ - -#include -#include "pixman-embed.h" - -/* - * Standard integers - */ -#if defined (__SVR4) && defined (__sun) -# include -# include -#elif defined (__OpenBSD__) -# include -#elif defined (_MSC_VER) -typedef __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -# include -#endif - -/* GCC visibility */ -#if defined(__GNUC__) && __GNUC__ >= 4 -#define PIXMAN_EXPORT __attribute__ ((visibility("default"))) -#else -#define PIXMAN_EXPORT -#endif - -/* - * Boolean - */ -typedef int pixman_bool_t; - -/* - * Fixpoint numbers - */ -typedef int64_t pixman_fixed_32_32_t; -typedef pixman_fixed_32_32_t pixman_fixed_48_16_t; -typedef uint32_t pixman_fixed_1_31_t; -typedef uint32_t pixman_fixed_1_16_t; -typedef int32_t pixman_fixed_16_16_t; -typedef pixman_fixed_16_16_t pixman_fixed_t; - -#define pixman_fixed_e ((pixman_fixed_t) 1) -#define pixman_fixed_1 (pixman_int_to_fixed(1)) -#define pixman_fixed_1_minus_e (pixman_fixed_1 - pixman_fixed_e) -#define pixman_fixed_to_int(f) ((int) ((f) >> 16)) -#define pixman_int_to_fixed(i) ((pixman_fixed_t) ((i) << 16)) -#define pixman_fixed_to_double(f) (double) ((f) / (double) pixman_fixed_1) -#define pixman_double_to_fixed(d) ((pixman_fixed_t) ((d) * 65536.0)) -#define pixman_fixed_frac(f) ((f) & pixman_fixed_1_minus_e) -#define pixman_fixed_floor(f) ((f) & ~pixman_fixed_1_minus_e) -#define pixman_fixed_ceil(f) pixman_fixed_floor ((f) + pixman_fixed_1_minus_e) -#define pixman_fixed_fraction(f) ((f) & pixman_fixed_1_minus_e) -#define pixman_fixed_mod_2(f) ((f) & (pixman_fixed1 | pixman_fixed_1_minus_e)) -#define pixman_max_fixed_48_16 ((pixman_fixed_48_16_t) 0x7fffffff) -#define pixman_min_fixed_48_16 (-((pixman_fixed_48_16_t) 1 << 31)) - -/* - * Misc structs - */ -typedef struct pixman_color pixman_color_t; -typedef struct pixman_point_fixed pixman_point_fixed_t; -typedef struct pixman_line_fixed pixman_line_fixed_t; -typedef struct pixman_vector pixman_vector_t; -typedef struct pixman_transform pixman_transform_t; - -struct pixman_color -{ - uint16_t red; - uint16_t green; - uint16_t blue; - uint16_t alpha; -}; - -struct pixman_point_fixed -{ - pixman_fixed_t x; - pixman_fixed_t y; -}; - -struct pixman_line_fixed -{ - pixman_point_fixed_t p1, p2; -}; - -struct pixman_vector -{ - pixman_fixed_t vector[3]; -}; - -struct pixman_transform -{ - pixman_fixed_t matrix[3][3]; -}; - -PIXMAN_EXPORT -pixman_bool_t pixman_transform_point_3d (pixman_transform_t *transform, - pixman_vector_t *vector); - -/* Don't blame me, blame XRender */ -typedef enum -{ - PIXMAN_REPEAT_NONE, - PIXMAN_REPEAT_NORMAL, - PIXMAN_REPEAT_PAD, - PIXMAN_REPEAT_REFLECT -} pixman_repeat_t; - -typedef enum -{ - PIXMAN_FILTER_FAST, - PIXMAN_FILTER_GOOD, - PIXMAN_FILTER_BEST, - PIXMAN_FILTER_NEAREST, - PIXMAN_FILTER_BILINEAR, - PIXMAN_FILTER_CONVOLUTION -} pixman_filter_t; - -typedef enum -{ - PIXMAN_OP_CLEAR = 0x00, - PIXMAN_OP_SRC = 0x01, - PIXMAN_OP_DST = 0x02, - PIXMAN_OP_OVER = 0x03, - PIXMAN_OP_OVER_REVERSE = 0x04, - PIXMAN_OP_IN = 0x05, - PIXMAN_OP_IN_REVERSE = 0x06, - PIXMAN_OP_OUT = 0x07, - PIXMAN_OP_OUT_REVERSE = 0x08, - PIXMAN_OP_ATOP = 0x09, - PIXMAN_OP_ATOP_REVERSE = 0x0a, - PIXMAN_OP_XOR = 0x0b, - PIXMAN_OP_ADD = 0x0c, - PIXMAN_OP_SATURATE = 0x0d, - - PIXMAN_OP_DISJOINT_CLEAR = 0x10, - PIXMAN_OP_DISJOINT_SRC = 0x11, - PIXMAN_OP_DISJOINT_DST = 0x12, - PIXMAN_OP_DISJOINT_OVER = 0x13, - PIXMAN_OP_DISJOINT_OVER_REVERSE = 0x14, - PIXMAN_OP_DISJOINT_IN = 0x15, - PIXMAN_OP_DISJOINT_IN_REVERSE = 0x16, - PIXMAN_OP_DISJOINT_OUT = 0x17, - PIXMAN_OP_DISJOINT_OUT_REVERSE = 0x18, - PIXMAN_OP_DISJOINT_ATOP = 0x19, - PIXMAN_OP_DISJOINT_ATOP_REVERSE = 0x1a, - PIXMAN_OP_DISJOINT_XOR = 0x1b, - - PIXMAN_OP_CONJOINT_CLEAR = 0x20, - PIXMAN_OP_CONJOINT_SRC = 0x21, - PIXMAN_OP_CONJOINT_DST = 0x22, - PIXMAN_OP_CONJOINT_OVER = 0x23, - PIXMAN_OP_CONJOINT_OVER_REVERSE = 0x24, - PIXMAN_OP_CONJOINT_IN = 0x25, - PIXMAN_OP_CONJOINT_IN_REVERSE = 0x26, - PIXMAN_OP_CONJOINT_OUT = 0x27, - PIXMAN_OP_CONJOINT_OUT_REVERSE = 0x28, - PIXMAN_OP_CONJOINT_ATOP = 0x29, - PIXMAN_OP_CONJOINT_ATOP_REVERSE = 0x2a, - PIXMAN_OP_CONJOINT_XOR = 0x2b, - - PIXMAN_OP_NONE -} pixman_op_t; - -/* - * Regions - */ -typedef struct pixman_region16_data pixman_region16_data_t; -typedef struct pixman_box16 pixman_box16_t; -typedef struct pixman_rectangle16 pixman_rectangle16_t; -typedef struct pixman_region16 pixman_region16_t; - -struct pixman_region16_data { - long size; - long numRects; -/* pixman_box16_t rects[size]; in memory but not explicitly declared */ -}; - -struct pixman_rectangle16 -{ - int16_t x, y; - uint16_t width, height; -}; - -struct pixman_box16 -{ - int16_t x1, y1, x2, y2; -}; - -struct pixman_region16 -{ - pixman_box16_t extents; - pixman_region16_data_t *data; -}; - -typedef enum -{ - PIXMAN_REGION_OUT, - PIXMAN_REGION_IN, - PIXMAN_REGION_PART -} pixman_region_overlap_t; - -PIXMAN_EXPORT -int pixman_version (void); - -PIXMAN_EXPORT -const char* pixman_version_string (void); - -/* This function exists only to make it possible to preserve the X ABI - it should - * go away at first opportunity. - */ -PIXMAN_EXPORT -void pixman_region_set_static_pointers (pixman_box16_t *empty_box, - pixman_region16_data_t *empty_data, - pixman_region16_data_t *broken_data); - -/* creation/destruction */ -PIXMAN_EXPORT -void pixman_region_init (pixman_region16_t *region); -PIXMAN_EXPORT -void pixman_region_init_rect (pixman_region16_t *region, - int x, - int y, - unsigned int width, - unsigned int height); -PIXMAN_EXPORT -void pixman_region_init_with_extents (pixman_region16_t *region, - pixman_box16_t *extents); -PIXMAN_EXPORT -void pixman_region_fini (pixman_region16_t *region); - -/* manipulation */ -PIXMAN_EXPORT -void pixman_region_translate (pixman_region16_t *region, - int x, - int y); -PIXMAN_EXPORT -pixman_bool_t pixman_region_copy (pixman_region16_t *dest, - pixman_region16_t *source); -PIXMAN_EXPORT -pixman_bool_t pixman_region_intersect (pixman_region16_t *newReg, - pixman_region16_t *reg1, - pixman_region16_t *reg2); -PIXMAN_EXPORT -pixman_bool_t pixman_region_union (pixman_region16_t *newReg, - pixman_region16_t *reg1, - pixman_region16_t *reg2); -PIXMAN_EXPORT -pixman_bool_t pixman_region_union_rect (pixman_region16_t *dest, - pixman_region16_t *source, - int x, - int y, - unsigned int width, - unsigned int height); -PIXMAN_EXPORT -pixman_bool_t pixman_region_subtract (pixman_region16_t *regD, - pixman_region16_t *regM, - pixman_region16_t *regS); -PIXMAN_EXPORT -pixman_bool_t pixman_region_inverse (pixman_region16_t *newReg, - pixman_region16_t *reg1, - pixman_box16_t *invRect); -PIXMAN_EXPORT -pixman_bool_t pixman_region_contains_point (pixman_region16_t *region, - int x, int y, pixman_box16_t *box); -PIXMAN_EXPORT -pixman_region_overlap_t pixman_region_contains_rectangle (pixman_region16_t *pixman_region16_t, - pixman_box16_t *prect); -PIXMAN_EXPORT -pixman_bool_t pixman_region_not_empty (pixman_region16_t *region); -PIXMAN_EXPORT -pixman_box16_t * pixman_region_extents (pixman_region16_t *region); -PIXMAN_EXPORT -int pixman_region_n_rects (pixman_region16_t *region); -PIXMAN_EXPORT -pixman_box16_t * pixman_region_rectangles (pixman_region16_t *region, - int *n_rects); -PIXMAN_EXPORT -pixman_bool_t pixman_region_equal (pixman_region16_t *region1, - pixman_region16_t *region2); -PIXMAN_EXPORT -pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region); -PIXMAN_EXPORT -void pixman_region_reset (pixman_region16_t *region, pixman_box16_t *box); -PIXMAN_EXPORT -pixman_bool_t pixman_region_init_rects (pixman_region16_t *region, - pixman_box16_t *boxes, int count); - -/* Copy / Fill */ -PIXMAN_EXPORT -pixman_bool_t pixman_blt (uint32_t *src_bits, - uint32_t *dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, int src_y, - int dst_x, int dst_y, - int width, int height); -PIXMAN_EXPORT -pixman_bool_t pixman_fill (uint32_t *bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t _xor); -/* - * Images - */ -typedef union pixman_image pixman_image_t; -typedef struct pixman_indexed pixman_indexed_t; -typedef struct pixman_gradient_stop pixman_gradient_stop_t; - -typedef uint32_t (* pixman_read_memory_func_t) (const void *src, int size); -typedef void (* pixman_write_memory_func_t) (void *dst, uint32_t value, int size); - -struct pixman_gradient_stop { - pixman_fixed_t x; - pixman_color_t color; -}; - -#define PIXMAN_MAX_INDEXED 256 /* XXX depth must be <= 8 */ - -#if PIXMAN_MAX_INDEXED <= 256 -typedef uint8_t pixman_index_type; -#endif - -struct pixman_indexed -{ - pixman_bool_t color; - uint32_t rgba[PIXMAN_MAX_INDEXED]; - pixman_index_type ent[32768]; -}; - -/* - * While the protocol is generous in format support, the - * sample implementation allows only packed RGB and GBR - * representations for data to simplify software rendering, - */ -#define PIXMAN_FORMAT(bpp,type,a,r,g,b) (((bpp) << 24) | \ - ((type) << 16) | \ - ((a) << 12) | \ - ((r) << 8) | \ - ((g) << 4) | \ - ((b))) - -#define PIXMAN_FORMAT_BPP(f) (((f) >> 24) ) -#define PIXMAN_FORMAT_TYPE(f) (((f) >> 16) & 0xff) -#define PIXMAN_FORMAT_A(f) (((f) >> 12) & 0x0f) -#define PIXMAN_FORMAT_R(f) (((f) >> 8) & 0x0f) -#define PIXMAN_FORMAT_G(f) (((f) >> 4) & 0x0f) -#define PIXMAN_FORMAT_B(f) (((f) ) & 0x0f) -#define PIXMAN_FORMAT_RGB(f) (((f) ) & 0xfff) -#define PIXMAN_FORMAT_VIS(f) (((f) ) & 0xffff) -#define PIXMAN_FORMAT_DEPTH(f) (PIXMAN_FORMAT_A(f) + \ - PIXMAN_FORMAT_R(f) + \ - PIXMAN_FORMAT_G(f) + \ - PIXMAN_FORMAT_B(f)) - -#define PIXMAN_TYPE_OTHER 0 -#define PIXMAN_TYPE_A 1 -#define PIXMAN_TYPE_ARGB 2 -#define PIXMAN_TYPE_ABGR 3 -#define PIXMAN_TYPE_COLOR 4 -#define PIXMAN_TYPE_GRAY 5 -#define PIXMAN_TYPE_YUY2 6 -#define PIXMAN_TYPE_YV12 7 - -#define PIXMAN_FORMAT_COLOR(f) (PIXMAN_FORMAT_TYPE(f) & 2) - -/* 32bpp formats */ -typedef enum { - PIXMAN_a8r8g8b8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,8,8,8,8), - PIXMAN_x8r8g8b8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ARGB,0,8,8,8), - PIXMAN_a8b8g8r8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,8,8,8,8), - PIXMAN_x8b8g8r8 = PIXMAN_FORMAT(32,PIXMAN_TYPE_ABGR,0,8,8,8), - -/* 24bpp formats */ - PIXMAN_r8g8b8 = PIXMAN_FORMAT(24,PIXMAN_TYPE_ARGB,0,8,8,8), - PIXMAN_b8g8r8 = PIXMAN_FORMAT(24,PIXMAN_TYPE_ABGR,0,8,8,8), - -/* 16bpp formats */ - PIXMAN_r5g6b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,6,5), - PIXMAN_b5g6r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,6,5), - - PIXMAN_a1r5g5b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,1,5,5,5), - PIXMAN_x1r5g5b5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,5,5,5), - PIXMAN_a1b5g5r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,1,5,5,5), - PIXMAN_x1b5g5r5 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,5,5,5), - PIXMAN_a4r4g4b4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,4,4,4,4), - PIXMAN_x4r4g4b4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ARGB,0,4,4,4), - PIXMAN_a4b4g4r4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,4,4,4,4), - PIXMAN_x4b4g4r4 = PIXMAN_FORMAT(16,PIXMAN_TYPE_ABGR,0,4,4,4), - -/* 8bpp formats */ - PIXMAN_a8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,8,0,0,0), - PIXMAN_r3g3b2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,0,3,3,2), - PIXMAN_b2g3r3 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,0,3,3,2), - PIXMAN_a2r2g2b2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ARGB,2,2,2,2), - PIXMAN_a2b2g2r2 = PIXMAN_FORMAT(8,PIXMAN_TYPE_ABGR,2,2,2,2), - - PIXMAN_c8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0), - PIXMAN_g8 = PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0), - - PIXMAN_x4a4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_A,4,0,0,0), - - PIXMAN_x4c4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_COLOR,0,0,0,0), - PIXMAN_x4g4 = PIXMAN_FORMAT(8,PIXMAN_TYPE_GRAY,0,0,0,0), - -/* 4bpp formats */ - PIXMAN_a4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_A,4,0,0,0), - PIXMAN_r1g2b1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,0,1,2,1), - PIXMAN_b1g2r1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,0,1,2,1), - PIXMAN_a1r1g1b1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ARGB,1,1,1,1), - PIXMAN_a1b1g1r1 = PIXMAN_FORMAT(4,PIXMAN_TYPE_ABGR,1,1,1,1), - - PIXMAN_c4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_COLOR,0,0,0,0), - PIXMAN_g4 = PIXMAN_FORMAT(4,PIXMAN_TYPE_GRAY,0,0,0,0), - -/* 1bpp formats */ - PIXMAN_a1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_A,1,0,0,0), - - PIXMAN_g1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0), - -/* YUV formats */ - PIXMAN_yuy2 = PIXMAN_FORMAT(16,PIXMAN_TYPE_YUY2,0,0,0,0), - PIXMAN_yv12 = PIXMAN_FORMAT(12,PIXMAN_TYPE_YV12,0,0,0,0), -} pixman_format_code_t; - -/* Querying supported format values. */ -PIXMAN_EXPORT -pixman_bool_t pixman_format_supported_destination (pixman_format_code_t format); - -PIXMAN_EXPORT -pixman_bool_t pixman_format_supported_source (pixman_format_code_t format); - -/* Constructors */ -PIXMAN_EXPORT -pixman_image_t *pixman_image_create_solid_fill (pixman_color_t *color); -PIXMAN_EXPORT -pixman_image_t *pixman_image_create_linear_gradient (pixman_point_fixed_t *p1, - pixman_point_fixed_t *p2, - const pixman_gradient_stop_t *stops, - int n_stops); -PIXMAN_EXPORT -pixman_image_t *pixman_image_create_radial_gradient (pixman_point_fixed_t *inner, - pixman_point_fixed_t *outer, - pixman_fixed_t inner_radius, - pixman_fixed_t outer_radius, - const pixman_gradient_stop_t *stops, - int n_stops); -PIXMAN_EXPORT -pixman_image_t *pixman_image_create_conical_gradient (pixman_point_fixed_t *center, - pixman_fixed_t angle, - const pixman_gradient_stop_t *stops, - int n_stops); -PIXMAN_EXPORT -pixman_image_t *pixman_image_create_bits (pixman_format_code_t format, - int width, - int height, - uint32_t *bits, - int rowstride_bytes); - -/* Destructor */ -PIXMAN_EXPORT -pixman_image_t *pixman_image_ref (pixman_image_t *image); -PIXMAN_EXPORT -pixman_bool_t pixman_image_unref (pixman_image_t *image); - - -/* Set properties */ -PIXMAN_EXPORT -pixman_bool_t pixman_image_set_clip_region (pixman_image_t *image, - pixman_region16_t *region); -PIXMAN_EXPORT -void pixman_image_set_has_client_clip (pixman_image_t *image, - pixman_bool_t clien_clip); -PIXMAN_EXPORT -pixman_bool_t pixman_image_set_transform (pixman_image_t *image, - const pixman_transform_t *transform); -PIXMAN_EXPORT -void pixman_image_set_repeat (pixman_image_t *image, - pixman_repeat_t repeat); -PIXMAN_EXPORT -pixman_bool_t pixman_image_set_filter (pixman_image_t *image, - pixman_filter_t filter, - const pixman_fixed_t *filter_params, - int n_filter_params); -PIXMAN_EXPORT -void pixman_image_set_filter_params (pixman_image_t *image, - pixman_fixed_t *params, - int n_params); -PIXMAN_EXPORT -void pixman_image_set_source_clipping (pixman_image_t *image, - pixman_bool_t source_clipping); -PIXMAN_EXPORT -void pixman_image_set_alpha_map (pixman_image_t *image, - pixman_image_t *alpha_map, - int16_t x, - int16_t y); -PIXMAN_EXPORT -void pixman_image_set_component_alpha (pixman_image_t *image, - pixman_bool_t component_alpha); -PIXMAN_EXPORT -void pixman_image_set_accessors (pixman_image_t *image, - pixman_read_memory_func_t read_func, - pixman_write_memory_func_t write_func); -PIXMAN_EXPORT -void pixman_image_set_indexed (pixman_image_t *image, - const pixman_indexed_t *indexed); -PIXMAN_EXPORT -uint32_t *pixman_image_get_data (pixman_image_t *image); -PIXMAN_EXPORT -int pixman_image_get_width (pixman_image_t *image); -PIXMAN_EXPORT -int pixman_image_get_height (pixman_image_t *image); -PIXMAN_EXPORT -int pixman_image_get_stride (pixman_image_t *image); -PIXMAN_EXPORT -int pixman_image_get_depth (pixman_image_t *image); -PIXMAN_EXPORT -pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op, - pixman_image_t *image, - pixman_color_t *color, - int n_rects, - const pixman_rectangle16_t *rects); - -/* Composite */ -PIXMAN_EXPORT -pixman_bool_t pixman_compute_composite_region (pixman_region16_t * pRegion, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -PIXMAN_EXPORT -void pixman_image_composite (pixman_op_t op, - pixman_image_t *src, - pixman_image_t *mask, - pixman_image_t *dest, - int16_t src_x, - int16_t src_y, - int16_t mask_x, - int16_t mask_y, - int16_t dest_x, - int16_t dest_y, - uint16_t width, - uint16_t height); - -/* - * Trapezoids - */ -typedef struct pixman_edge pixman_edge_t; -typedef struct pixman_trapezoid pixman_trapezoid_t; -typedef struct pixman_trap pixman_trap_t; -typedef struct pixman_span_fix pixman_span_fix_t; - -/* - * An edge structure. This represents a single polygon edge - * and can be quickly stepped across small or large gaps in the - * sample grid - */ -struct pixman_edge -{ - pixman_fixed_t x; - pixman_fixed_t e; - pixman_fixed_t stepx; - pixman_fixed_t signdx; - pixman_fixed_t dy; - pixman_fixed_t dx; - - pixman_fixed_t stepx_small; - pixman_fixed_t stepx_big; - pixman_fixed_t dx_small; - pixman_fixed_t dx_big; -}; - -struct pixman_trapezoid -{ - pixman_fixed_t top, bottom; - pixman_line_fixed_t left, right; -}; - - -/* whether 't' is a well defined not obviously empty trapezoid */ -#define pixman_trapezoid_valid(t) \ - ((t)->left.p1.y != (t)->left.p2.y && \ - (t)->right.p1.y != (t)->right.p2.y && \ - (int) ((t)->bottom - (t)->top) > 0) - -struct pixman_span_fix -{ - pixman_fixed_t l, r, y; -}; - -struct pixman_trap -{ - pixman_span_fix_t top, bot; -}; - -PIXMAN_EXPORT -pixman_fixed_t pixman_sample_ceil_y (pixman_fixed_t y, - int bpp); -PIXMAN_EXPORT -pixman_fixed_t pixman_sample_floor_y (pixman_fixed_t y, - int bpp); -PIXMAN_EXPORT -void pixman_edge_step (pixman_edge_t *e, - int n); -PIXMAN_EXPORT -void pixman_edge_init (pixman_edge_t *e, - int bpp, - pixman_fixed_t y_start, - pixman_fixed_t x_top, - pixman_fixed_t y_top, - pixman_fixed_t x_bot, - pixman_fixed_t y_bot); -PIXMAN_EXPORT -void pixman_line_fixed_edge_init (pixman_edge_t *e, - int bpp, - pixman_fixed_t y, - const pixman_line_fixed_t *line, - int x_off, - int y_off); -PIXMAN_EXPORT -void pixman_rasterize_edges (pixman_image_t *image, - pixman_edge_t *l, - pixman_edge_t *r, - pixman_fixed_t t, - pixman_fixed_t b); -PIXMAN_EXPORT -void pixman_add_traps (pixman_image_t *image, - int16_t x_off, - int16_t y_off, - int ntrap, - pixman_trap_t *traps); -PIXMAN_EXPORT -void pixman_add_trapezoids (pixman_image_t *image, - int16_t x_off, - int y_off, - int ntraps, - const pixman_trapezoid_t *traps); -PIXMAN_EXPORT -void pixman_rasterize_trapezoid (pixman_image_t *image, - const pixman_trapezoid_t *trap, - int x_off, - int y_off); - -#endif /* PIXMAN_H__ */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-image.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-image.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-image.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-image.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,719 +0,0 @@ -/* - * Copyright © 2000 SuSE, Inc. - * Copyright © 2007 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include - -#include "pixman-private.h" - -static void -init_source_image (source_image_t *image) -{ - image->class = SOURCE_IMAGE_CLASS_UNKNOWN; -} - -static pixman_bool_t -init_gradient (gradient_t *gradient, - const pixman_gradient_stop_t *stops, - int n_stops) -{ - return_val_if_fail (n_stops > 0, FALSE); - - init_source_image (&gradient->common); - - gradient->stops = pixman_malloc_ab (n_stops, sizeof (pixman_gradient_stop_t)); - if (!gradient->stops) - return FALSE; - - memcpy (gradient->stops, stops, n_stops * sizeof (pixman_gradient_stop_t)); - - gradient->n_stops = n_stops; - - gradient->stop_range = 0xffff; - gradient->color_table = NULL; - gradient->color_table_size = 0; - - return TRUE; -} - -static uint32_t -color_to_uint32 (const pixman_color_t *color) -{ - return - (color->alpha >> 8 << 24) | - (color->red >> 8 << 16) | - (color->green & 0xff00) | - (color->blue >> 8); -} - -static pixman_image_t * -allocate_image (void) -{ - pixman_image_t *image = malloc (sizeof (pixman_image_t)); - - if (image) - { - image_common_t *common = &image->common; - - pixman_region_init (&common->full_region); - pixman_region_init (&common->clip_region); - common->src_clip = &common->full_region; - common->has_client_clip = FALSE; - common->transform = NULL; - common->repeat = PIXMAN_REPEAT_NONE; - common->filter = PIXMAN_FILTER_NEAREST; - common->filter_params = NULL; - common->n_filter_params = 0; - common->alpha_map = NULL; - common->component_alpha = FALSE; - common->ref_count = 1; - common->read_func = NULL; - common->write_func = NULL; - } - - return image; -} - -/* Ref Counting */ -pixman_image_t * -pixman_image_ref (pixman_image_t *image) -{ - image->common.ref_count++; - - return image; -} - -/* returns TRUE when the image is freed */ -pixman_bool_t -pixman_image_unref (pixman_image_t *image) -{ - image_common_t *common = (image_common_t *)image; - - common->ref_count--; - - if (common->ref_count == 0) - { - pixman_region_fini (&common->clip_region); - pixman_region_fini (&common->full_region); - - if (common->transform) - free (common->transform); - - if (common->filter_params) - free (common->filter_params); - - if (common->alpha_map) - pixman_image_unref ((pixman_image_t *)common->alpha_map); - -#if 0 - if (image->type == BITS && image->bits.indexed) - free (image->bits.indexed); -#endif - -#if 0 - memset (image, 0xaa, sizeof (pixman_image_t)); -#endif - if (image->type == LINEAR || image->type == RADIAL || image->type == CONICAL) - { - if (image->gradient.stops) - free (image->gradient.stops); - } - - - if (image->type == BITS && image->bits.free_me) - free (image->bits.free_me); - - free (image); - - return TRUE; - } - - return FALSE; -} - -/* Constructors */ -pixman_image_t * -pixman_image_create_solid_fill (pixman_color_t *color) -{ - pixman_image_t *img = allocate_image(); - if (!img) - return NULL; - - init_source_image (&img->solid.common); - - img->type = SOLID; - img->solid.color = color_to_uint32 (color); - - return img; -} - -pixman_image_t * -pixman_image_create_linear_gradient (pixman_point_fixed_t *p1, - pixman_point_fixed_t *p2, - const pixman_gradient_stop_t *stops, - int n_stops) -{ - pixman_image_t *image; - linear_gradient_t *linear; - - return_val_if_fail (n_stops >= 2, NULL); - - image = allocate_image(); - - if (!image) - return NULL; - - linear = &image->linear; - - if (!init_gradient (&linear->common, stops, n_stops)) - { - free (image); - return NULL; - } - - linear->p1 = *p1; - linear->p2 = *p2; - - image->type = LINEAR; - - return image; -} - - -pixman_image_t * -pixman_image_create_radial_gradient (pixman_point_fixed_t *inner, - pixman_point_fixed_t *outer, - pixman_fixed_t inner_radius, - pixman_fixed_t outer_radius, - const pixman_gradient_stop_t *stops, - int n_stops) -{ - pixman_image_t *image; - radial_gradient_t *radial; - - return_val_if_fail (n_stops >= 2, NULL); - - image = allocate_image(); - - if (!image) - return NULL; - - radial = &image->radial; - - if (!init_gradient (&radial->common, stops, n_stops)) - { - free (image); - return NULL; - } - - image->type = RADIAL; - - radial->c1.x = inner->x; - radial->c1.y = inner->y; - radial->c1.radius = inner_radius; - radial->c2.x = outer->x; - radial->c2.y = outer->y; - radial->c2.radius = outer_radius; - radial->cdx = pixman_fixed_to_double (radial->c2.x - radial->c1.x); - radial->cdy = pixman_fixed_to_double (radial->c2.y - radial->c1.y); - radial->dr = pixman_fixed_to_double (radial->c2.radius - radial->c1.radius); - radial->A = (radial->cdx * radial->cdx - + radial->cdy * radial->cdy - - radial->dr * radial->dr); - - return image; -} - -pixman_image_t * -pixman_image_create_conical_gradient (pixman_point_fixed_t *center, - pixman_fixed_t angle, - const pixman_gradient_stop_t *stops, - int n_stops) -{ - pixman_image_t *image = allocate_image(); - conical_gradient_t *conical; - - if (!image) - return NULL; - - conical = &image->conical; - - if (!init_gradient (&conical->common, stops, n_stops)) - { - free (image); - return NULL; - } - - image->type = CONICAL; - conical->center = *center; - conical->angle = angle; - - return image; -} - -static uint32_t * -create_bits (pixman_format_code_t format, - int width, - int height, - int *rowstride_bytes) -{ - int stride; - int buf_size; - int bpp; - - /* what follows is a long-winded way, avoiding any possibility of integer - * overflows, of saying: - * stride = ((width * bpp + FB_MASK) >> FB_SHIFT) * sizeof (uint32_t); - */ - - bpp = PIXMAN_FORMAT_BPP (format); - if (pixman_multiply_overflows_int (width, bpp)) - return NULL; - - stride = width * bpp; - if (pixman_addition_overflows_int (stride, FB_MASK)) - return NULL; - - stride += FB_MASK; - stride >>= FB_SHIFT; - -#if FB_SHIFT < 2 - if (pixman_multiply_overflows_int (stride, sizeof (uint32_t))) - return NULL; -#endif - stride *= sizeof (uint32_t); - - if (pixman_multiply_overflows_int (height, stride)) - return NULL; - - buf_size = height * stride; - - if (rowstride_bytes) - *rowstride_bytes = stride; - - return calloc (buf_size, 1); -} - -static void -reset_clip_region (pixman_image_t *image) -{ - pixman_region_fini (&image->common.clip_region); - - if (image->type == BITS) - { - pixman_region_init_rect (&image->common.clip_region, 0, 0, - image->bits.width, image->bits.height); - } - else - { - pixman_region_init (&image->common.clip_region); - } -} - -pixman_image_t * -pixman_image_create_bits (pixman_format_code_t format, - int width, - int height, - uint32_t *bits, - int rowstride_bytes) -{ - pixman_image_t *image; - uint32_t *free_me = NULL; - - /* must be a whole number of uint32_t's - */ - return_val_if_fail (bits == NULL || - (rowstride_bytes % sizeof (uint32_t)) == 0, NULL); - - if (!bits && width && height) - { - free_me = bits = create_bits (format, width, height, &rowstride_bytes); - if (!bits) - return NULL; - } - - image = allocate_image(); - - if (!image) { - if (free_me) - free (free_me); - return NULL; - } - - image->type = BITS; - image->bits.format = format; - image->bits.width = width; - image->bits.height = height; - image->bits.bits = bits; - image->bits.free_me = free_me; - - image->bits.rowstride = rowstride_bytes / (int) sizeof (uint32_t); /* we store it in number - * of uint32_t's - */ - image->bits.indexed = NULL; - - pixman_region_fini (&image->common.full_region); - pixman_region_init_rect (&image->common.full_region, 0, 0, - image->bits.width, image->bits.height); - - reset_clip_region (image); - return image; -} - -pixman_bool_t -pixman_image_set_clip_region (pixman_image_t *image, - pixman_region16_t *region) -{ - image_common_t *common = (image_common_t *)image; - - if (region) - { - return pixman_region_copy (&common->clip_region, region); - } - else - { - reset_clip_region (image); - - return TRUE; - } -} - -/* Sets whether the clip region includes a clip region set by the client - */ -void -pixman_image_set_has_client_clip (pixman_image_t *image, - pixman_bool_t client_clip) -{ - image->common.has_client_clip = client_clip; -} - -pixman_bool_t -pixman_image_set_transform (pixman_image_t *image, - const pixman_transform_t *transform) -{ - static const pixman_transform_t id = - { - { { pixman_fixed_1, 0, 0 }, - { 0, pixman_fixed_1, 0 }, - { 0, 0, pixman_fixed_1 } - } - }; - - image_common_t *common = (image_common_t *)image; - - if (common->transform == transform) - return TRUE; - - if (memcmp (&id, transform, sizeof (pixman_transform_t)) == 0) - { - free(common->transform); - common->transform = NULL; - return TRUE; - } - - if (common->transform == NULL) - common->transform = malloc (sizeof (pixman_transform_t)); - if (common->transform == NULL) - return FALSE; - - memcpy(common->transform, transform, sizeof(pixman_transform_t)); - - return TRUE; -} - -void -pixman_image_set_repeat (pixman_image_t *image, - pixman_repeat_t repeat) -{ - image->common.repeat = repeat; -} - -pixman_bool_t -pixman_image_set_filter (pixman_image_t *image, - pixman_filter_t filter, - const pixman_fixed_t *params, - int n_params) -{ - image_common_t *common = (image_common_t *)image; - pixman_fixed_t *new_params; - - if (params == common->filter_params && filter == common->filter) - return TRUE; - - new_params = NULL; - if (params) - { - new_params = pixman_malloc_ab (n_params, sizeof (pixman_fixed_t)); - if (!new_params) - return FALSE; - - memcpy (new_params, - params, n_params * sizeof (pixman_fixed_t)); - } - - common->filter = filter; - - if (common->filter_params) - free (common->filter_params); - - common->filter_params = new_params; - common->n_filter_params = n_params; - return TRUE; -} - -void -pixman_image_set_source_clipping (pixman_image_t *image, - pixman_bool_t source_clipping) -{ - image_common_t *common = &image->common; - - if (source_clipping) - common->src_clip = &common->clip_region; - else - common->src_clip = &common->full_region; -} - -/* Unlike all the other property setters, this function does not - * copy the content of indexed. Doing this copying is simply - * way, way too expensive. - */ -void -pixman_image_set_indexed (pixman_image_t *image, - const pixman_indexed_t *indexed) -{ - bits_image_t *bits = (bits_image_t *)image; - - bits->indexed = indexed; -} - -void -pixman_image_set_alpha_map (pixman_image_t *image, - pixman_image_t *alpha_map, - int16_t x, - int16_t y) -{ - image_common_t *common = (image_common_t *)image; - - return_if_fail (!alpha_map || alpha_map->type == BITS); - - if (common->alpha_map != (bits_image_t *)alpha_map) - { - if (common->alpha_map) - pixman_image_unref ((pixman_image_t *)common->alpha_map); - - if (alpha_map) - common->alpha_map = (bits_image_t *)pixman_image_ref (alpha_map); - else - common->alpha_map = NULL; - } - - common->alpha_origin.x = x; - common->alpha_origin.y = y; -} - -void -pixman_image_set_component_alpha (pixman_image_t *image, - pixman_bool_t component_alpha) -{ - image->common.component_alpha = component_alpha; -} - - -void -pixman_image_set_accessors (pixman_image_t *image, - pixman_read_memory_func_t read_func, - pixman_write_memory_func_t write_func) -{ - return_if_fail (image != NULL); - - image->common.read_func = read_func; - image->common.write_func = write_func; -} - -uint32_t * -pixman_image_get_data (pixman_image_t *image) -{ - if (image->type == BITS) - return image->bits.bits; - - return NULL; -} - -int -pixman_image_get_width (pixman_image_t *image) -{ - if (image->type == BITS) - return image->bits.width; - - return 0; -} - -int -pixman_image_get_height (pixman_image_t *image) -{ - if (image->type == BITS) - return image->bits.height; - - return 0; -} - -int -pixman_image_get_stride (pixman_image_t *image) -{ - if (image->type == BITS) - return image->bits.rowstride * (int) sizeof (uint32_t); - - return 0; -} - -int -pixman_image_get_depth (pixman_image_t *image) -{ - if (image->type == BITS) - return PIXMAN_FORMAT_DEPTH (image->bits.format); - - return 0; -} - -pixman_bool_t -color_to_pixel (pixman_color_t *color, - uint32_t *pixel, - pixman_format_code_t format) -{ - uint32_t c = color_to_uint32 (color); - - if (!(format == PIXMAN_a8r8g8b8 || - format == PIXMAN_x8r8g8b8 || - format == PIXMAN_a8b8g8r8 || - format == PIXMAN_x8b8g8r8 || - format == PIXMAN_r5g6b5 || - format == PIXMAN_b5g6r5 || - format == PIXMAN_a8)) - { - return FALSE; - } - - if (PIXMAN_FORMAT_TYPE (format) == PIXMAN_TYPE_ABGR) - { - c = ((c & 0xff000000) >> 0) | - ((c & 0x00ff0000) >> 16) | - ((c & 0x0000ff00) >> 0) | - ((c & 0x000000ff) << 16); - } - - if (format == PIXMAN_a8) - c = c >> 24; - else if (format == PIXMAN_r5g6b5 || - format == PIXMAN_b5g6r5) - c = cvt8888to0565 (c); - -#if 0 - printf ("color: %x %x %x %x\n", color->alpha, color->red, color->green, color->blue); - printf ("pixel: %x\n", c); -#endif - - *pixel = c; - return TRUE; -} - -pixman_bool_t -pixman_image_fill_rectangles (pixman_op_t op, - pixman_image_t *dest, - pixman_color_t *color, - int n_rects, - const pixman_rectangle16_t *rects) -{ - pixman_image_t *solid; - pixman_color_t c; - int i; - - if (color->alpha == 0xffff) - { - if (op == PIXMAN_OP_OVER) - op = PIXMAN_OP_SRC; - } - - if (op == PIXMAN_OP_CLEAR) - { - c.red = 0; - c.green = 0; - c.blue = 0; - c.alpha = 0; - - color = &c; - - op = PIXMAN_OP_SRC; - } - - if (op == PIXMAN_OP_SRC) - { - uint32_t pixel; - - if (color_to_pixel (color, &pixel, dest->bits.format)) - { - for (i = 0; i < n_rects; ++i) - { - pixman_region16_t fill_region; - int n_boxes, j; - pixman_box16_t *boxes; - - pixman_region_init_rect (&fill_region, rects[i].x, rects[i].y, rects[i].width, rects[i].height); - pixman_region_intersect (&fill_region, &fill_region, &dest->common.clip_region); - - boxes = pixman_region_rectangles (&fill_region, &n_boxes); - for (j = 0; j < n_boxes; ++j) - { - const pixman_box16_t *box = &(boxes[j]); - pixman_fill (dest->bits.bits, dest->bits.rowstride, PIXMAN_FORMAT_BPP (dest->bits.format), - box->x1, box->y1, box->x2 - box->x1, box->y2 - box->y1, - pixel); - } - - pixman_region_fini (&fill_region); - } - return TRUE; - } - } - - solid = pixman_image_create_solid_fill (color); - if (!solid) - return FALSE; - - for (i = 0; i < n_rects; ++i) - { - const pixman_rectangle16_t *rect = &(rects[i]); - - pixman_image_composite (op, solid, NULL, dest, - 0, 0, 0, 0, - rect->x, rect->y, - rect->width, rect->height); - } - - pixman_image_unref (solid); - - return TRUE; -} diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-mmx.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-mmx.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-mmx.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-mmx.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3014 +0,0 @@ -/* - * Copyright © 2004, 2005 Red Hat, Inc. - * Copyright © 2004 Nicholas Miell - * Copyright © 2005 Trolltech AS - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Søren Sandmann (sandmann@redhat.com) - * Minor Improvements: Nicholas Miell (nmiell@gmail.com) - * MMX code paths for fbcompose.c by Lars Knoll (lars@trolltech.com) - * - * Based on work by Owen Taylor - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef USE_MMX - -#include -#ifdef USE_SSE -#include /* for _mm_shuffle_pi16 and _MM_SHUFFLE */ -#endif - -#include "pixman-mmx.h" - -#undef READ -#undef WRITE -#define READ(img,x) *(x) -#define WRITE(img,ptr,v) (*(ptr) = (v)); - -#define noVERBOSE - -#ifdef VERBOSE -#define CHECKPOINT() ErrorF ("at %s %d\n", __FUNCTION__, __LINE__) -#else -#define CHECKPOINT() -#endif - -/* Notes about writing mmx code - * - * give memory operands as the second operand. If you give it as the - * first, gcc will first load it into a register, then use that - * register - * - * ie. use - * - * _mm_mullo_pi16 (x, mmx_constant); - * - * not - * - * _mm_mullo_pi16 (mmx_constant, x); - * - * Also try to minimize dependencies. i.e. when you need a value, try - * to calculate it from a value that was calculated as early as - * possible. - */ - -/* --------------- MMX primitivess ------------------------------------ */ - -#ifdef __GNUC__ -typedef unsigned long long ullong; -typedef ullong mmxdatafield; -#endif -#ifdef _MSC_VER -typedef unsigned __int64 ullong; -typedef __m64 mmxdatafield; -#endif - -typedef struct -{ - mmxdatafield mmx_4x00ff; - mmxdatafield mmx_4x0080; - mmxdatafield mmx_565_rgb; - mmxdatafield mmx_565_unpack_multiplier; - mmxdatafield mmx_565_r; - mmxdatafield mmx_565_g; - mmxdatafield mmx_565_b; - mmxdatafield mmx_mask_0; - mmxdatafield mmx_mask_1; - mmxdatafield mmx_mask_2; - mmxdatafield mmx_mask_3; - mmxdatafield mmx_full_alpha; - mmxdatafield mmx_ffff0000ffff0000; - mmxdatafield mmx_0000ffff00000000; - mmxdatafield mmx_000000000000ffff; -} MMXData; - -static const MMXData c = -{ -#ifdef __GNUC__ - .mmx_4x00ff = 0x00ff00ff00ff00ffULL, - .mmx_4x0080 = 0x0080008000800080ULL, - .mmx_565_rgb = 0x000001f0003f001fULL, - .mmx_565_unpack_multiplier = 0x0000008404100840ULL, - .mmx_565_r = 0x000000f800000000ULL, - .mmx_565_g = 0x0000000000fc0000ULL, - .mmx_565_b = 0x00000000000000f8ULL, - .mmx_mask_0 = 0xffffffffffff0000ULL, - .mmx_mask_1 = 0xffffffff0000ffffULL, - .mmx_mask_2 = 0xffff0000ffffffffULL, - .mmx_mask_3 = 0x0000ffffffffffffULL, - .mmx_full_alpha = 0x00ff000000000000ULL, - .mmx_ffff0000ffff0000 = 0xffff0000ffff0000ULL, - .mmx_0000ffff00000000 = 0x0000ffff00000000ULL, - .mmx_000000000000ffff = 0x000000000000ffffULL, -#endif -#ifdef _MSC_VER - { 0x00ff00ff00ff00ffUI64 }, - { 0x0080008000800080UI64 }, - { 0x000001f0003f001fUI64 }, - { 0x0000008404100840UI64 }, - { 0x000000f800000000UI64 }, - { 0x0000000000fc0000UI64 }, - { 0x00000000000000f8UI64 }, - { 0xffffffffffff0000UI64 }, - { 0xffffffff0000ffffUI64 }, - { 0xffff0000ffffffffUI64 }, - { 0x0000ffffffffffffUI64 }, - { 0x00ff000000000000UI64 }, - { 0xffff0000ffff0000UI64 }, - { 0x0000ffff00000000UI64 }, - { 0x000000000000ffffUI64 }, -#endif -}; - -#ifdef _MSC_VER -#undef inline -#define inline __forceinline -#endif - -#ifdef __GNUC__ -#define MC(x) ((__m64) c.mmx_##x) -#endif -#ifdef _MSC_VER -#define MC(x) c.mmx_##x -#endif - -static inline __m64 -M64 (ullong x) -{ -#ifdef __GNUC__ - return (__m64)x; -#endif - -#ifdef _MSC_VER - __m64 res; - - res.m64_u64 = x; - return res; -#endif -} - -static inline ullong -ULLONG (__m64 x) -{ -#ifdef __GNUC__ - return (ullong)x; -#endif - -#ifdef _MSC_VER - ullong res; - - res = x.m64_u64; - return res; -#endif -} - -static inline __m64 -shift (__m64 v, int s) -{ - if (s > 0) - return _mm_slli_si64 (v, s); - else if (s < 0) - return _mm_srli_si64 (v, -s); - else - return v; -} - -static inline __m64 -negate (__m64 mask) -{ - return _mm_xor_si64 (mask, MC(4x00ff)); -} - -static inline __m64 -pix_multiply (__m64 a, __m64 b) -{ - __m64 res; - - res = _mm_mullo_pi16 (a, b); - res = _mm_adds_pu16 (res, MC(4x0080)); - res = _mm_adds_pu16 (res, _mm_srli_pi16 (res, 8)); - res = _mm_srli_pi16 (res, 8); - - return res; -} - -static inline __m64 -pix_add (__m64 a, __m64 b) -{ - return _mm_adds_pu8 (a, b); -} - -#ifdef USE_SSE - -static inline __m64 -expand_alpha (__m64 pixel) -{ - return _mm_shuffle_pi16 (pixel, _MM_SHUFFLE(3, 3, 3, 3)); -} - -static inline __m64 -expand_alpha_rev (__m64 pixel) -{ - return _mm_shuffle_pi16 (pixel, _MM_SHUFFLE(0, 0, 0, 0)); -} - -static inline __m64 -invert_colors (__m64 pixel) -{ - return _mm_shuffle_pi16 (pixel, _MM_SHUFFLE(3, 0, 1, 2)); -} - -#else - -static inline __m64 -expand_alpha (__m64 pixel) -{ - __m64 t1, t2; - - t1 = shift (pixel, -48); - t2 = shift (t1, 16); - t1 = _mm_or_si64 (t1, t2); - t2 = shift (t1, 32); - t1 = _mm_or_si64 (t1, t2); - - return t1; -} - -static inline __m64 -expand_alpha_rev (__m64 pixel) -{ - __m64 t1, t2; - - /* move alpha to low 16 bits and zero the rest */ - t1 = shift (pixel, 48); - t1 = shift (t1, -48); - - t2 = shift (t1, 16); - t1 = _mm_or_si64 (t1, t2); - t2 = shift (t1, 32); - t1 = _mm_or_si64 (t1, t2); - - return t1; -} - -static inline __m64 -invert_colors (__m64 pixel) -{ - __m64 x, y, z; - - x = y = z = pixel; - - x = _mm_and_si64 (x, MC(ffff0000ffff0000)); - y = _mm_and_si64 (y, MC(000000000000ffff)); - z = _mm_and_si64 (z, MC(0000ffff00000000)); - - y = shift (y, 32); - z = shift (z, -32); - - x = _mm_or_si64 (x, y); - x = _mm_or_si64 (x, z); - - return x; -} - -#endif - -static inline __m64 -over (__m64 src, __m64 srca, __m64 dest) -{ - return _mm_adds_pu8 (src, pix_multiply(dest, negate(srca))); -} - -static inline __m64 -over_rev_non_pre (__m64 src, __m64 dest) -{ - __m64 srca = expand_alpha (src); - __m64 srcfaaa = _mm_or_si64 (srca, MC(full_alpha)); - - return over(pix_multiply(invert_colors(src), srcfaaa), srca, dest); -} - -static inline __m64 -in (__m64 src, - __m64 mask) -{ - return pix_multiply (src, mask); -} - -static inline __m64 -in_over_full_src_alpha (__m64 src, __m64 mask, __m64 dest) -{ - src = _mm_or_si64 (src, MC(full_alpha)); - - return over(in (src, mask), mask, dest); -} - -#ifndef _MSC_VER -static inline __m64 -in_over (__m64 src, - __m64 srca, - __m64 mask, - __m64 dest) -{ - return over(in(src, mask), pix_multiply(srca, mask), dest); -} -#else -#define in_over(src, srca, mask, dest) over(in(src, mask), pix_multiply(srca, mask), dest) -#endif - -static inline __m64 -load8888 (uint32_t v) -{ - return _mm_unpacklo_pi8 (_mm_cvtsi32_si64 (v), _mm_setzero_si64()); -} - -static inline __m64 -pack8888 (__m64 lo, __m64 hi) -{ - return _mm_packs_pu16 (lo, hi); -} - -static inline uint32_t -store8888 (__m64 v) -{ - return _mm_cvtsi64_si32(pack8888(v, _mm_setzero_si64())); -} - -/* Expand 16 bits positioned at @pos (0-3) of a mmx register into - * - * 00RR00GG00BB - * - * --- Expanding 565 in the low word --- - * - * m = (m << (32 - 3)) | (m << (16 - 5)) | m; - * m = m & (01f0003f001f); - * m = m * (008404100840); - * m = m >> 8; - * - * Note the trick here - the top word is shifted by another nibble to - * avoid it bumping into the middle word - */ -static inline __m64 -expand565 (__m64 pixel, int pos) -{ - __m64 p = pixel; - __m64 t1, t2; - - /* move pixel to low 16 bit and zero the rest */ - p = shift (shift (p, (3 - pos) * 16), -48); - - t1 = shift (p, 36 - 11); - t2 = shift (p, 16 - 5); - - p = _mm_or_si64 (t1, p); - p = _mm_or_si64 (t2, p); - p = _mm_and_si64 (p, MC(565_rgb)); - - pixel = _mm_mullo_pi16 (p, MC(565_unpack_multiplier)); - return _mm_srli_pi16 (pixel, 8); -} - -static inline __m64 -expand8888 (__m64 in, int pos) -{ - if (pos == 0) - return _mm_unpacklo_pi8 (in, _mm_setzero_si64()); - else - return _mm_unpackhi_pi8 (in, _mm_setzero_si64()); -} - -static inline __m64 -pack565 (__m64 pixel, __m64 target, int pos) -{ - __m64 p = pixel; - __m64 t = target; - __m64 r, g, b; - - r = _mm_and_si64 (p, MC(565_r)); - g = _mm_and_si64 (p, MC(565_g)); - b = _mm_and_si64 (p, MC(565_b)); - - r = shift (r, - (32 - 8) + pos * 16); - g = shift (g, - (16 - 3) + pos * 16); - b = shift (b, - (0 + 3) + pos * 16); - - if (pos == 0) - t = _mm_and_si64 (t, MC(mask_0)); - else if (pos == 1) - t = _mm_and_si64 (t, MC(mask_1)); - else if (pos == 2) - t = _mm_and_si64 (t, MC(mask_2)); - else if (pos == 3) - t = _mm_and_si64 (t, MC(mask_3)); - - p = _mm_or_si64 (r, t); - p = _mm_or_si64 (g, p); - - return _mm_or_si64 (b, p); -} - -#ifndef _MSC_VER -static inline __m64 -pix_add_mul (__m64 x, __m64 a, __m64 y, __m64 b) -{ - x = _mm_mullo_pi16 (x, a); - y = _mm_mullo_pi16 (y, b); - x = _mm_adds_pu16 (x, MC(4x0080)); - x = _mm_adds_pu16 (x, y); - x = _mm_adds_pu16 (x, _mm_srli_pi16 (x, 8)); - x = _mm_srli_pi16 (x, 8); - - return x; -} -#else -#define pix_add_mul(x, a, y, b) \ -( x = _mm_mullo_pi16 (x, a), \ - y = _mm_mullo_pi16 (y, b), \ - x = _mm_adds_pu16 (x, MC(4x0080)), \ - x = _mm_adds_pu16 (x, y), \ - x = _mm_adds_pu16 (x, _mm_srli_pi16 (x, 8)), \ - _mm_srli_pi16 (x, 8) ) -#endif - -/* --------------- MMX code patch for fbcompose.c --------------------- */ - -static FASTCALL void -mmxCombineMaskU (uint32_t *src, const uint32_t *mask, int width) -{ - const uint32_t *end = mask + width; - while (mask < end) { - uint32_t mmask = *mask; - uint32_t maska = mmask >> 24; - if (maska == 0) { - *src = 0; - } else if (maska != 0xff) { - __m64 a = load8888(mmask); - __m64 s = load8888(*src); - a = expand_alpha(a); - s = pix_multiply(s, a); - *src = store8888(s); - } - ++src; - ++mask; - } - _mm_empty(); -} - - -static FASTCALL void -mmxCombineOverU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - uint32_t ssrc = *src; - uint32_t a = ssrc >> 24; - if (a == 0xff) { - *dest = ssrc; - } else if (a) { - __m64 s, sa; - s = load8888(ssrc); - sa = expand_alpha(s); - *dest = store8888(over(s, sa, load8888(*dest))); - } - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOverReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 d, da; - d = load8888(*dest); - da = expand_alpha(d); - *dest = store8888(over (d, da, load8888(*src))); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineInU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 x, a; - x = load8888(*src); - a = load8888(*dest); - a = expand_alpha(a); - x = pix_multiply(x, a); - *dest = store8888(x); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineInReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 x, a; - x = load8888(*dest); - a = load8888(*src); - a = expand_alpha(a); - x = pix_multiply(x, a); - *dest = store8888(x); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOutU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 x, a; - x = load8888(*src); - a = load8888(*dest); - a = expand_alpha(a); - a = negate(a); - x = pix_multiply(x, a); - *dest = store8888(x); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOutReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 x, a; - x = load8888(*dest); - a = load8888(*src); - a = expand_alpha(a); - a = negate(a); - x = pix_multiply(x, a); - *dest = store8888(x); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineAtopU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 s, da, d, sia; - s = load8888(*src); - d = load8888(*dest); - sia = expand_alpha(s); - sia = negate(sia); - da = expand_alpha(d); - s = pix_add_mul (s, da, d, sia); - *dest = store8888(s); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineAtopReverseU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end; - - end = dest + width; - - while (dest < end) { - __m64 s, dia, d, sa; - s = load8888(*src); - d = load8888(*dest); - sa = expand_alpha(s); - dia = expand_alpha(d); - dia = negate(dia); - s = pix_add_mul (s, dia, d, sa); - *dest = store8888(s); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineXorU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - - while (dest < end) { - __m64 s, dia, d, sia; - s = load8888(*src); - d = load8888(*dest); - sia = expand_alpha(s); - dia = expand_alpha(d); - sia = negate(sia); - dia = negate(dia); - s = pix_add_mul (s, dia, d, sia); - *dest = store8888(s); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineAddU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - while (dest < end) { - __m64 s, d; - s = load8888(*src); - d = load8888(*dest); - s = pix_add(s, d); - *dest = store8888(s); - ++dest; - ++src; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineSaturateU (uint32_t *dest, const uint32_t *src, int width) -{ - const uint32_t *end = dest + width; - while (dest < end) { - uint32_t s = *src; - uint32_t d = *dest; - __m64 ms = load8888(s); - __m64 md = load8888(d); - uint32_t sa = s >> 24; - uint32_t da = ~d >> 24; - - if (sa > da) { - __m64 msa = load8888(FbIntDiv(da, sa) << 24); - msa = expand_alpha(msa); - ms = pix_multiply(ms, msa); - } - md = pix_add(md, ms); - *dest = store8888(md); - ++src; - ++dest; - } - _mm_empty(); -} - - -static FASTCALL void -mmxCombineSrcC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - s = pix_multiply(s, a); - *dest = store8888(s); - ++src; - ++mask; - ++dest; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOverC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 sa = expand_alpha(s); - - *dest = store8888(in_over (s, sa, a, d)); - - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOverReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 da = expand_alpha(d); - - *dest = store8888(over (d, da, in (s, a))); - - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - - -static FASTCALL void -mmxCombineInC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 da = expand_alpha(d); - s = pix_multiply(s, a); - s = pix_multiply(s, da); - *dest = store8888(s); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineInReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 sa = expand_alpha(s); - a = pix_multiply(a, sa); - d = pix_multiply(d, a); - *dest = store8888(d); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOutC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 da = expand_alpha(d); - da = negate(da); - s = pix_multiply(s, a); - s = pix_multiply(s, da); - *dest = store8888(s); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineOutReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 sa = expand_alpha(s); - a = pix_multiply(a, sa); - a = negate(a); - d = pix_multiply(d, a); - *dest = store8888(d); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineAtopC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 da = expand_alpha(d); - __m64 sa = expand_alpha(s); - s = pix_multiply(s, a); - a = pix_multiply(a, sa); - a = negate(a); - d = pix_add_mul (d, a, s, da); - *dest = store8888(d); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineAtopReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 da = expand_alpha(d); - __m64 sa = expand_alpha(s); - s = pix_multiply(s, a); - a = pix_multiply(a, sa); - da = negate(da); - d = pix_add_mul (d, a, s, da); - *dest = store8888(d); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineXorC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - __m64 da = expand_alpha(d); - __m64 sa = expand_alpha(s); - s = pix_multiply(s, a); - a = pix_multiply(a, sa); - da = negate(da); - a = negate(a); - d = pix_add_mul (d, a, s, da); - *dest = store8888(d); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -static FASTCALL void -mmxCombineAddC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width) -{ - const uint32_t *end = src + width; - while (src < end) { - __m64 a = load8888(*mask); - __m64 s = load8888(*src); - __m64 d = load8888(*dest); - s = pix_multiply(s, a); - d = pix_add(s, d); - *dest = store8888(d); - ++src; - ++dest; - ++mask; - } - _mm_empty(); -} - -void -fbComposeSetupMMX(void) -{ - static pixman_bool_t initialized = FALSE; - - if (initialized) - return; - - /* check if we have MMX support and initialize accordingly */ - if (pixman_have_mmx()) - { - pixman_composeFunctions.combineU[PIXMAN_OP_OVER] = mmxCombineOverU; - pixman_composeFunctions.combineU[PIXMAN_OP_OVER_REVERSE] = mmxCombineOverReverseU; - pixman_composeFunctions.combineU[PIXMAN_OP_IN] = mmxCombineInU; - pixman_composeFunctions.combineU[PIXMAN_OP_IN_REVERSE] = mmxCombineInReverseU; - pixman_composeFunctions.combineU[PIXMAN_OP_OUT] = mmxCombineOutU; - pixman_composeFunctions.combineU[PIXMAN_OP_OUT_REVERSE] = mmxCombineOutReverseU; - pixman_composeFunctions.combineU[PIXMAN_OP_ATOP] = mmxCombineAtopU; - pixman_composeFunctions.combineU[PIXMAN_OP_ATOP_REVERSE] = mmxCombineAtopReverseU; - pixman_composeFunctions.combineU[PIXMAN_OP_XOR] = mmxCombineXorU; - pixman_composeFunctions.combineU[PIXMAN_OP_ADD] = mmxCombineAddU; - pixman_composeFunctions.combineU[PIXMAN_OP_SATURATE] = mmxCombineSaturateU; - - pixman_composeFunctions.combineC[PIXMAN_OP_SRC] = mmxCombineSrcC; - pixman_composeFunctions.combineC[PIXMAN_OP_OVER] = mmxCombineOverC; - pixman_composeFunctions.combineC[PIXMAN_OP_OVER_REVERSE] = mmxCombineOverReverseC; - pixman_composeFunctions.combineC[PIXMAN_OP_IN] = mmxCombineInC; - pixman_composeFunctions.combineC[PIXMAN_OP_IN_REVERSE] = mmxCombineInReverseC; - pixman_composeFunctions.combineC[PIXMAN_OP_OUT] = mmxCombineOutC; - pixman_composeFunctions.combineC[PIXMAN_OP_OUT_REVERSE] = mmxCombineOutReverseC; - pixman_composeFunctions.combineC[PIXMAN_OP_ATOP] = mmxCombineAtopC; - pixman_composeFunctions.combineC[PIXMAN_OP_ATOP_REVERSE] = mmxCombineAtopReverseC; - pixman_composeFunctions.combineC[PIXMAN_OP_XOR] = mmxCombineXorC; - pixman_composeFunctions.combineC[PIXMAN_OP_ADD] = mmxCombineAddC; - - pixman_composeFunctions.combineMaskU = mmxCombineMaskU; - } - - initialized = TRUE; -} - - -/* ------------------ MMX code paths called from fbpict.c ----------------------- */ - -void -fbCompositeSolid_nx8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src; - uint32_t *dstLine, *dst; - uint16_t w; - int dstStride; - __m64 vsrc, vsrca; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - if (src >> 24 == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - - vsrc = load8888 (src); - vsrca = expand_alpha (vsrc); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - *dst = store8888(over(vsrc, vsrca, load8888(*dst))); - - w--; - dst++; - } - - while (w >= 2) - { - __m64 vdest; - __m64 dest0, dest1; - - vdest = *(__m64 *)dst; - - dest0 = over(vsrc, vsrca, expand8888(vdest, 0)); - dest1 = over(vsrc, vsrca, expand8888(vdest, 1)); - - *(__m64 *)dst = pack8888(dest0, dest1); - - dst += 2; - w -= 2; - } - - CHECKPOINT(); - - while (w) - { - *dst = store8888(over(vsrc, vsrca, load8888(*dst))); - - w--; - dst++; - } - } - - _mm_empty(); -} - -void -fbCompositeSolid_nx0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src; - uint16_t *dstLine, *dst; - uint16_t w; - int dstStride; - __m64 vsrc, vsrca; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - if (src >> 24 == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - - vsrc = load8888 (src); - vsrca = expand_alpha (vsrc); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - ullong d = *dst; - __m64 vdest = expand565 (M64(d), 0); - vdest = pack565(over(vsrc, vsrca, vdest), vdest, 0); - *dst = ULLONG(vdest); - - w--; - dst++; - } - - while (w >= 4) - { - __m64 vdest; - - vdest = *(__m64 *)dst; - - vdest = pack565 (over(vsrc, vsrca, expand565(vdest, 0)), vdest, 0); - vdest = pack565 (over(vsrc, vsrca, expand565(vdest, 1)), vdest, 1); - vdest = pack565 (over(vsrc, vsrca, expand565(vdest, 2)), vdest, 2); - vdest = pack565 (over(vsrc, vsrca, expand565(vdest, 3)), vdest, 3); - - *(__m64 *)dst = vdest; - - dst += 4; - w -= 4; - } - - CHECKPOINT(); - - while (w) - { - ullong d = *dst; - __m64 vdest = expand565 (M64(d), 0); - vdest = pack565(over(vsrc, vsrca, vdest), vdest, 0); - *dst = ULLONG(vdest); - - w--; - dst++; - } - } - - _mm_empty(); -} - -void -fbCompositeSolidMask_nx8888x8888Cmmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint32_t *dstLine; - uint32_t *maskLine; - int dstStride, maskStride; - __m64 vsrc, vsrca; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (srca == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint32_t, maskStride, maskLine, 1); - - vsrc = load8888(src); - vsrca = expand_alpha(vsrc); - - while (height--) - { - int twidth = width; - uint32_t *p = (uint32_t *)maskLine; - uint32_t *q = (uint32_t *)dstLine; - - while (twidth && (unsigned long)q & 7) - { - uint32_t m = *(uint32_t *)p; - - if (m) - { - __m64 vdest = load8888(*q); - vdest = in_over(vsrc, vsrca, load8888(m), vdest); - *q = store8888(vdest); - } - - twidth--; - p++; - q++; - } - - while (twidth >= 2) - { - uint32_t m0, m1; - m0 = *p; - m1 = *(p + 1); - - if (m0 | m1) - { - __m64 dest0, dest1; - __m64 vdest = *(__m64 *)q; - - dest0 = in_over(vsrc, vsrca, load8888(m0), - expand8888 (vdest, 0)); - dest1 = in_over(vsrc, vsrca, load8888(m1), - expand8888 (vdest, 1)); - - *(__m64 *)q = pack8888(dest0, dest1); - } - - p += 2; - q += 2; - twidth -= 2; - } - - while (twidth) - { - uint32_t m = *(uint32_t *)p; - - if (m) - { - __m64 vdest = load8888(*q); - vdest = in_over(vsrc, vsrca, load8888(m), vdest); - *q = store8888(vdest); - } - - twidth--; - p++; - q++; - } - - dstLine += dstStride; - maskLine += maskStride; - } - - _mm_empty(); -} - -void -fbCompositeSrc_8888x8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dstLine, *dst; - uint32_t *srcLine, *src; - uint32_t mask; - __m64 vmask; - int dstStride, srcStride; - uint16_t w; - __m64 srca; - - CHECKPOINT(); - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - - fbComposeGetSolid (pMask, mask, pDst->bits.format); - mask = mask | mask >> 8 | mask >> 16 | mask >> 24; - vmask = load8888 (mask); - srca = MC(4x00ff); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w && (unsigned long)dst & 7) - { - __m64 s = load8888 (*src); - __m64 d = load8888 (*dst); - - *dst = store8888 (in_over (s, expand_alpha (s), vmask, d)); - - w--; - dst++; - src++; - } - - while (w >= 2) - { - __m64 vs = *(__m64 *)src; - __m64 vd = *(__m64 *)dst; - __m64 vsrc0 = expand8888 (vs, 0); - __m64 vsrc1 = expand8888 (vs, 1); - - *(__m64 *)dst = pack8888 ( - in_over (vsrc0, expand_alpha (vsrc0), vmask, expand8888 (vd, 0)), - in_over (vsrc1, expand_alpha (vsrc1), vmask, expand8888 (vd, 1))); - - w -= 2; - dst += 2; - src += 2; - } - - while (w) - { - __m64 s = load8888 (*src); - __m64 d = load8888 (*dst); - - *dst = store8888 (in_over (s, expand_alpha (s), vmask, d)); - - w--; - dst++; - src++; - } - } - - _mm_empty(); -} - -void -fbCompositeSrc_x888xnx8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dstLine, *dst; - uint32_t *srcLine, *src; - uint32_t mask; - __m64 vmask; - int dstStride, srcStride; - uint16_t w; - __m64 srca; - - CHECKPOINT(); - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - fbComposeGetSolid (pMask, mask, pDst->bits.format); - - mask = mask | mask >> 8 | mask >> 16 | mask >> 24; - vmask = load8888 (mask); - srca = MC(4x00ff); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w && (unsigned long)dst & 7) - { - __m64 s = load8888 (*src | 0xff000000); - __m64 d = load8888 (*dst); - - *dst = store8888 (in_over (s, srca, vmask, d)); - - w--; - dst++; - src++; - } - - while (w >= 16) - { - __m64 vd0 = *(__m64 *)(dst + 0); - __m64 vd1 = *(__m64 *)(dst + 2); - __m64 vd2 = *(__m64 *)(dst + 4); - __m64 vd3 = *(__m64 *)(dst + 6); - __m64 vd4 = *(__m64 *)(dst + 8); - __m64 vd5 = *(__m64 *)(dst + 10); - __m64 vd6 = *(__m64 *)(dst + 12); - __m64 vd7 = *(__m64 *)(dst + 14); - - __m64 vs0 = *(__m64 *)(src + 0); - __m64 vs1 = *(__m64 *)(src + 2); - __m64 vs2 = *(__m64 *)(src + 4); - __m64 vs3 = *(__m64 *)(src + 6); - __m64 vs4 = *(__m64 *)(src + 8); - __m64 vs5 = *(__m64 *)(src + 10); - __m64 vs6 = *(__m64 *)(src + 12); - __m64 vs7 = *(__m64 *)(src + 14); - - vd0 = pack8888 ( - in_over (expand8888 (vs0, 0), srca, vmask, expand8888 (vd0, 0)), - in_over (expand8888 (vs0, 1), srca, vmask, expand8888 (vd0, 1))); - - vd1 = pack8888 ( - in_over (expand8888 (vs1, 0), srca, vmask, expand8888 (vd1, 0)), - in_over (expand8888 (vs1, 1), srca, vmask, expand8888 (vd1, 1))); - - vd2 = pack8888 ( - in_over (expand8888 (vs2, 0), srca, vmask, expand8888 (vd2, 0)), - in_over (expand8888 (vs2, 1), srca, vmask, expand8888 (vd2, 1))); - - vd3 = pack8888 ( - in_over (expand8888 (vs3, 0), srca, vmask, expand8888 (vd3, 0)), - in_over (expand8888 (vs3, 1), srca, vmask, expand8888 (vd3, 1))); - - vd4 = pack8888 ( - in_over (expand8888 (vs4, 0), srca, vmask, expand8888 (vd4, 0)), - in_over (expand8888 (vs4, 1), srca, vmask, expand8888 (vd4, 1))); - - vd5 = pack8888 ( - in_over (expand8888 (vs5, 0), srca, vmask, expand8888 (vd5, 0)), - in_over (expand8888 (vs5, 1), srca, vmask, expand8888 (vd5, 1))); - - vd6 = pack8888 ( - in_over (expand8888 (vs6, 0), srca, vmask, expand8888 (vd6, 0)), - in_over (expand8888 (vs6, 1), srca, vmask, expand8888 (vd6, 1))); - - vd7 = pack8888 ( - in_over (expand8888 (vs7, 0), srca, vmask, expand8888 (vd7, 0)), - in_over (expand8888 (vs7, 1), srca, vmask, expand8888 (vd7, 1))); - - *(__m64 *)(dst + 0) = vd0; - *(__m64 *)(dst + 2) = vd1; - *(__m64 *)(dst + 4) = vd2; - *(__m64 *)(dst + 6) = vd3; - *(__m64 *)(dst + 8) = vd4; - *(__m64 *)(dst + 10) = vd5; - *(__m64 *)(dst + 12) = vd6; - *(__m64 *)(dst + 14) = vd7; - - w -= 16; - dst += 16; - src += 16; - } - - while (w) - { - __m64 s = load8888 (*src | 0xff000000); - __m64 d = load8888 (*dst); - - *dst = store8888 (in_over (s, srca, vmask, d)); - - w--; - dst++; - src++; - } - } - - _mm_empty(); -} - -void -fbCompositeSrc_8888x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dstLine, *dst; - uint32_t *srcLine, *src; - uint32_t s; - int dstStride, srcStride; - uint8_t a; - uint16_t w; - - CHECKPOINT(); - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = *src++; - a = s >> 24; - if (a == 0xff) - *dst = s; - else if (a) { - __m64 ms, sa; - ms = load8888(s); - sa = expand_alpha(ms); - *dst = store8888(over(ms, sa, load8888(*dst))); - } - dst++; - } - } - _mm_empty(); -} - -void -fbCompositeSrc_8888x0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint16_t *dstLine, *dst; - uint32_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - - CHECKPOINT(); - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - -#if 0 - /* FIXME */ - assert (pSrc->pDrawable == pMask->pDrawable); -#endif - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - __m64 vsrc = load8888 (*src); - ullong d = *dst; - __m64 vdest = expand565 (M64(d), 0); - - vdest = pack565(over(vsrc, expand_alpha(vsrc), vdest), vdest, 0); - - *dst = ULLONG(vdest); - - w--; - dst++; - src++; - } - - CHECKPOINT(); - - while (w >= 4) - { - __m64 vsrc0, vsrc1, vsrc2, vsrc3; - __m64 vdest; - - vsrc0 = load8888(*(src + 0)); - vsrc1 = load8888(*(src + 1)); - vsrc2 = load8888(*(src + 2)); - vsrc3 = load8888(*(src + 3)); - - vdest = *(__m64 *)dst; - - vdest = pack565(over(vsrc0, expand_alpha(vsrc0), expand565(vdest, 0)), vdest, 0); - vdest = pack565(over(vsrc1, expand_alpha(vsrc1), expand565(vdest, 1)), vdest, 1); - vdest = pack565(over(vsrc2, expand_alpha(vsrc2), expand565(vdest, 2)), vdest, 2); - vdest = pack565(over(vsrc3, expand_alpha(vsrc3), expand565(vdest, 3)), vdest, 3); - - *(__m64 *)dst = vdest; - - w -= 4; - dst += 4; - src += 4; - } - - CHECKPOINT(); - - while (w) - { - __m64 vsrc = load8888 (*src); - ullong d = *dst; - __m64 vdest = expand565 (M64(d), 0); - - vdest = pack565(over(vsrc, expand_alpha(vsrc), vdest), vdest, 0); - - *dst = ULLONG(vdest); - - w--; - dst++; - src++; - } - } - - _mm_empty(); -} - -void -fbCompositeSolidMask_nx8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint32_t *dstLine, *dst; - uint8_t *maskLine, *mask; - int dstStride, maskStride; - uint16_t w; - __m64 vsrc, vsrca; - ullong srcsrc; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (srca == 0) - return; - - srcsrc = (ullong)src << 32 | src; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - vsrc = load8888 (src); - vsrca = expand_alpha (vsrc); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - ullong m = *mask; - - if (m) - { - __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (M64(m)), load8888(*dst)); - *dst = store8888(vdest); - } - - w--; - mask++; - dst++; - } - - CHECKPOINT(); - - while (w >= 2) - { - ullong m0, m1; - m0 = *mask; - m1 = *(mask + 1); - - if (srca == 0xff && (m0 & m1) == 0xff) - { - *(ullong *)dst = srcsrc; - } - else if (m0 | m1) - { - __m64 vdest; - __m64 dest0, dest1; - - vdest = *(__m64 *)dst; - - dest0 = in_over(vsrc, vsrca, expand_alpha_rev (M64(m0)), expand8888(vdest, 0)); - dest1 = in_over(vsrc, vsrca, expand_alpha_rev (M64(m1)), expand8888(vdest, 1)); - - *(__m64 *)dst = pack8888(dest0, dest1); - } - - mask += 2; - dst += 2; - w -= 2; - } - - CHECKPOINT(); - - while (w) - { - ullong m = *mask; - - if (m) - { - __m64 vdest = load8888(*dst); - vdest = in_over(vsrc, vsrca, expand_alpha_rev (M64(m)), vdest); - *dst = store8888(vdest); - } - - w--; - mask++; - dst++; - } - } - - _mm_empty(); -} - -pixman_bool_t -pixman_fill_mmx (uint32_t *bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t xor) -{ - ullong fill; - __m64 vfill; - uint32_t byte_width; - uint8_t *byte_line; -#ifdef __GNUC__ - __m64 v1, v2, v3, v4, v5, v6, v7; -#endif - - if (bpp == 16 && (xor >> 16 != (xor & 0xffff))) - return FALSE; - - if (bpp != 16 && bpp != 32) - return FALSE; - - if (bpp == 16) - { - stride = stride * (int) sizeof (uint32_t) / 2; - byte_line = (uint8_t *)(((uint16_t *)bits) + stride * y + x); - byte_width = 2 * width; - stride *= 2; - } - else - { - stride = stride * (int) sizeof (uint32_t) / 4; - byte_line = (uint8_t *)(((uint32_t *)bits) + stride * y + x); - byte_width = 4 * width; - stride *= 4; - } - - fill = ((ullong)xor << 32) | xor; - vfill = M64(fill); - -#ifdef __GNUC__ - __asm__ ( - "movq %7, %0\n" - "movq %7, %1\n" - "movq %7, %2\n" - "movq %7, %3\n" - "movq %7, %4\n" - "movq %7, %5\n" - "movq %7, %6\n" - : "=y" (v1), "=y" (v2), "=y" (v3), - "=y" (v4), "=y" (v5), "=y" (v6), "=y" (v7) - : "y" (vfill)); -#endif - - while (height--) - { - int w; - uint8_t *d = byte_line; - byte_line += stride; - w = byte_width; - - while (w >= 2 && ((unsigned long)d & 3)) - { - *(uint16_t *)d = xor; - w -= 2; - d += 2; - } - - while (w >= 4 && ((unsigned long)d & 7)) - { - *(uint32_t *)d = xor; - - w -= 4; - d += 4; - } - - while (w >= 64) - { -#ifdef __GNUC__ - __asm__ ( - "movq %1, (%0)\n" - "movq %2, 8(%0)\n" - "movq %3, 16(%0)\n" - "movq %4, 24(%0)\n" - "movq %5, 32(%0)\n" - "movq %6, 40(%0)\n" - "movq %7, 48(%0)\n" - "movq %8, 56(%0)\n" - : - : "r" (d), - "y" (vfill), "y" (v1), "y" (v2), "y" (v3), - "y" (v4), "y" (v5), "y" (v6), "y" (v7) - : "memory"); -#else - *(__m64*) (d + 0) = vfill; - *(__m64*) (d + 8) = vfill; - *(__m64*) (d + 16) = vfill; - *(__m64*) (d + 24) = vfill; - *(__m64*) (d + 32) = vfill; - *(__m64*) (d + 40) = vfill; - *(__m64*) (d + 48) = vfill; - *(__m64*) (d + 56) = vfill; -#endif - w -= 64; - d += 64; - } - - while (w >= 4) - { - *(uint32_t *)d = xor; - - w -= 4; - d += 4; - } - if (w >= 2) - { - *(uint16_t *)d = xor; - w -= 2; - d += 2; - } - } - - _mm_empty(); - return TRUE; -} - -void -fbCompositeSolidMaskSrc_nx8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint32_t *dstLine, *dst; - uint8_t *maskLine, *mask; - int dstStride, maskStride; - uint16_t w; - __m64 vsrc, vsrca; - ullong srcsrc; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (srca == 0) - { - pixman_fill_mmx (pDst->bits.bits, pDst->bits.rowstride, PIXMAN_FORMAT_BPP (pDst->bits.format), - xDst, yDst, width, height, 0); - return; - } - - srcsrc = (ullong)src << 32 | src; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - vsrc = load8888 (src); - vsrca = expand_alpha (vsrc); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - ullong m = *mask; - - if (m) - { - __m64 vdest = in(vsrc, expand_alpha_rev (M64(m))); - *dst = store8888(vdest); - } - else - { - *dst = 0; - } - - w--; - mask++; - dst++; - } - - CHECKPOINT(); - - while (w >= 2) - { - ullong m0, m1; - m0 = *mask; - m1 = *(mask + 1); - - if (srca == 0xff && (m0 & m1) == 0xff) - { - *(ullong *)dst = srcsrc; - } - else if (m0 | m1) - { - __m64 vdest; - __m64 dest0, dest1; - - vdest = *(__m64 *)dst; - - dest0 = in(vsrc, expand_alpha_rev (M64(m0))); - dest1 = in(vsrc, expand_alpha_rev (M64(m1))); - - *(__m64 *)dst = pack8888(dest0, dest1); - } - else - { - *(ullong *)dst = 0; - } - - mask += 2; - dst += 2; - w -= 2; - } - - CHECKPOINT(); - - while (w) - { - ullong m = *mask; - - if (m) - { - __m64 vdest = load8888(*dst); - vdest = in(vsrc, expand_alpha_rev (M64(m))); - *dst = store8888(vdest); - } - else - { - *dst = 0; - } - - w--; - mask++; - dst++; - } - } - - _mm_empty(); -} - -void -fbCompositeSolidMask_nx8x0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint16_t *dstLine, *dst; - uint8_t *maskLine, *mask; - int dstStride, maskStride; - uint16_t w; - __m64 vsrc, vsrca, tmp; - ullong srcsrcsrcsrc, src16; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (srca == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - vsrc = load8888 (src); - vsrca = expand_alpha (vsrc); - - tmp = pack565(vsrc, _mm_setzero_si64(), 0); - src16 = ULLONG(tmp); - - srcsrcsrcsrc = (ullong)src16 << 48 | (ullong)src16 << 32 | - (ullong)src16 << 16 | (ullong)src16; - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - ullong m = *mask; - - if (m) - { - ullong d = *dst; - __m64 vd = M64(d); - __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (M64 (m)), expand565(vd, 0)); - vd = pack565(vdest, _mm_setzero_si64(), 0); - *dst = ULLONG(vd); - } - - w--; - mask++; - dst++; - } - - CHECKPOINT(); - - while (w >= 4) - { - ullong m0, m1, m2, m3; - m0 = *mask; - m1 = *(mask + 1); - m2 = *(mask + 2); - m3 = *(mask + 3); - - if (srca == 0xff && (m0 & m1 & m2 & m3) == 0xff) - { - *(ullong *)dst = srcsrcsrcsrc; - } - else if (m0 | m1 | m2 | m3) - { - __m64 vdest; - __m64 vm0, vm1, vm2, vm3; - - vdest = *(__m64 *)dst; - - vm0 = M64(m0); - vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm0), expand565(vdest, 0)), vdest, 0); - vm1 = M64(m1); - vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm1), expand565(vdest, 1)), vdest, 1); - vm2 = M64(m2); - vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm2), expand565(vdest, 2)), vdest, 2); - vm3 = M64(m3); - vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm3), expand565(vdest, 3)), vdest, 3); - - *(__m64 *)dst = vdest; - } - - w -= 4; - mask += 4; - dst += 4; - } - - CHECKPOINT(); - - while (w) - { - ullong m = *mask; - - if (m) - { - ullong d = *dst; - __m64 vd = M64(d); - __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (M64(m)), expand565(vd, 0)); - vd = pack565(vdest, _mm_setzero_si64(), 0); - *dst = ULLONG(vd); - } - - w--; - mask++; - dst++; - } - } - - _mm_empty(); -} - -void -fbCompositeSrc_8888RevNPx0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint16_t *dstLine, *dst; - uint32_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - - CHECKPOINT(); - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - -#if 0 - /* FIXME */ - assert (pSrc->pDrawable == pMask->pDrawable); -#endif - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - CHECKPOINT(); - - while (w && (unsigned long)dst & 7) - { - __m64 vsrc = load8888 (*src); - ullong d = *dst; - __m64 vdest = expand565 (M64(d), 0); - - vdest = pack565(over_rev_non_pre(vsrc, vdest), vdest, 0); - - *dst = ULLONG(vdest); - - w--; - dst++; - src++; - } - - CHECKPOINT(); - - while (w >= 4) - { - uint32_t s0, s1, s2, s3; - unsigned char a0, a1, a2, a3; - - s0 = *src; - s1 = *(src + 1); - s2 = *(src + 2); - s3 = *(src + 3); - - a0 = (s0 >> 24); - a1 = (s1 >> 24); - a2 = (s2 >> 24); - a3 = (s3 >> 24); - - if ((a0 & a1 & a2 & a3) == 0xFF) - { - __m64 vdest; - vdest = pack565(invert_colors(load8888(s0)), _mm_setzero_si64(), 0); - vdest = pack565(invert_colors(load8888(s1)), vdest, 1); - vdest = pack565(invert_colors(load8888(s2)), vdest, 2); - vdest = pack565(invert_colors(load8888(s3)), vdest, 3); - - *(__m64 *)dst = vdest; - } - else if (a0 | a1 | a2 | a3) - { - __m64 vdest = *(__m64 *)dst; - - vdest = pack565(over_rev_non_pre(load8888(s0), expand565(vdest, 0)), vdest, 0); - vdest = pack565(over_rev_non_pre(load8888(s1), expand565(vdest, 1)), vdest, 1); - vdest = pack565(over_rev_non_pre(load8888(s2), expand565(vdest, 2)), vdest, 2); - vdest = pack565(over_rev_non_pre(load8888(s3), expand565(vdest, 3)), vdest, 3); - - *(__m64 *)dst = vdest; - } - - w -= 4; - dst += 4; - src += 4; - } - - CHECKPOINT(); - - while (w) - { - __m64 vsrc = load8888 (*src); - ullong d = *dst; - __m64 vdest = expand565 (M64(d), 0); - - vdest = pack565(over_rev_non_pre(vsrc, vdest), vdest, 0); - - *dst = ULLONG(vdest); - - w--; - dst++; - src++; - } - } - - _mm_empty(); -} - -/* "8888RevNP" is GdkPixbuf's format: ABGR, non premultiplied */ - -void -fbCompositeSrc_8888RevNPx8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dstLine, *dst; - uint32_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - - CHECKPOINT(); - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - -#if 0 - /* FIXME */ - assert (pSrc->pDrawable == pMask->pDrawable); -#endif - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w && (unsigned long)dst & 7) - { - __m64 s = load8888 (*src); - __m64 d = load8888 (*dst); - - *dst = store8888 (over_rev_non_pre (s, d)); - - w--; - dst++; - src++; - } - - while (w >= 2) - { - ullong s0, s1; - unsigned char a0, a1; - __m64 d0, d1; - - s0 = *src; - s1 = *(src + 1); - - a0 = (s0 >> 24); - a1 = (s1 >> 24); - - if ((a0 & a1) == 0xFF) - { - d0 = invert_colors(load8888(s0)); - d1 = invert_colors(load8888(s1)); - - *(__m64 *)dst = pack8888 (d0, d1); - } - else if (a0 | a1) - { - __m64 vdest = *(__m64 *)dst; - - d0 = over_rev_non_pre (load8888(s0), expand8888 (vdest, 0)); - d1 = over_rev_non_pre (load8888(s1), expand8888 (vdest, 1)); - - *(__m64 *)dst = pack8888 (d0, d1); - } - - w -= 2; - dst += 2; - src += 2; - } - - while (w) - { - __m64 s = load8888 (*src); - __m64 d = load8888 (*dst); - - *dst = store8888 (over_rev_non_pre (s, d)); - - w--; - dst++; - src++; - } - } - - _mm_empty(); -} - -void -fbCompositeSolidMask_nx8888x0565Cmmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint16_t *dstLine; - uint32_t *maskLine; - int dstStride, maskStride; - __m64 vsrc, vsrca; - - CHECKPOINT(); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (srca == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint32_t, maskStride, maskLine, 1); - - vsrc = load8888 (src); - vsrca = expand_alpha (vsrc); - - while (height--) - { - int twidth = width; - uint32_t *p = (uint32_t *)maskLine; - uint16_t *q = (uint16_t *)dstLine; - - while (twidth && ((unsigned long)q & 7)) - { - uint32_t m = *(uint32_t *)p; - - if (m) - { - ullong d = *q; - __m64 vdest = expand565 (M64(d), 0); - vdest = pack565 (in_over (vsrc, vsrca, load8888 (m), vdest), vdest, 0); - *q = ULLONG(vdest); - } - - twidth--; - p++; - q++; - } - - while (twidth >= 4) - { - uint32_t m0, m1, m2, m3; - - m0 = *p; - m1 = *(p + 1); - m2 = *(p + 2); - m3 = *(p + 3); - - if ((m0 | m1 | m2 | m3)) - { - __m64 vdest = *(__m64 *)q; - - vdest = pack565(in_over(vsrc, vsrca, load8888(m0), expand565(vdest, 0)), vdest, 0); - vdest = pack565(in_over(vsrc, vsrca, load8888(m1), expand565(vdest, 1)), vdest, 1); - vdest = pack565(in_over(vsrc, vsrca, load8888(m2), expand565(vdest, 2)), vdest, 2); - vdest = pack565(in_over(vsrc, vsrca, load8888(m3), expand565(vdest, 3)), vdest, 3); - - *(__m64 *)q = vdest; - } - twidth -= 4; - p += 4; - q += 4; - } - - while (twidth) - { - uint32_t m; - - m = *(uint32_t *)p; - if (m) - { - ullong d = *q; - __m64 vdest = expand565(M64(d), 0); - vdest = pack565 (in_over(vsrc, vsrca, load8888(m), vdest), vdest, 0); - *q = ULLONG(vdest); - } - - twidth--; - p++; - q++; - } - - maskLine += maskStride; - dstLine += dstStride; - } - - _mm_empty (); -} - -void -fbCompositeIn_nx8x8mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *maskLine, *mask; - int dstStride, maskStride; - uint16_t w; - uint32_t src; - uint8_t sa; - __m64 vsrc, vsrca; - - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - sa = src >> 24; - if (sa == 0) - return; - - vsrc = load8888(src); - vsrca = expand_alpha(vsrc); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - if ((((unsigned long)pDst & 3) == 0) && - (((unsigned long)pSrc & 3) == 0)) - { - while (w >= 4) - { - uint32_t m; - __m64 vmask; - __m64 vdest; - - m = 0; - - vmask = load8888 (*(uint32_t *)mask); - vdest = load8888 (*(uint32_t *)dst); - - *(uint32_t *)dst = store8888 (in (in (vsrca, vmask), vdest)); - - dst += 4; - mask += 4; - w -= 4; - } - } - - while (w--) - { - uint16_t tmp; - uint8_t a; - uint32_t m, d; - uint32_t r; - - a = *mask++; - d = *dst; - - m = FbInU (sa, 0, a, tmp); - r = FbInU (m, 0, d, tmp); - - *dst++ = r; - } - } - - _mm_empty(); -} - -void -fbCompositeIn_8x8mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *srcLine, *src; - int srcStride, dstStride; - uint16_t w; - - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - if ((((unsigned long)pDst & 3) == 0) && - (((unsigned long)pSrc & 3) == 0)) - { - while (w >= 4) - { - uint32_t *s = (uint32_t *)src; - uint32_t *d = (uint32_t *)dst; - - *d = store8888 (in (load8888 (*s), load8888 (*d))); - - w -= 4; - dst += 4; - src += 4; - } - } - - while (w--) - { - uint8_t s, d; - uint16_t tmp; - - s = *src; - d = *dst; - - *dst = FbInU (s, 0, d, tmp); - - src++; - dst++; - } - } - - _mm_empty (); -} - -void -fbCompositeSrcAdd_8888x8x8mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *maskLine, *mask; - int dstStride, maskStride; - uint16_t w; - uint32_t src; - uint8_t sa; - __m64 vsrc, vsrca; - - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - sa = src >> 24; - if (sa == 0) - return; - - vsrc = load8888(src); - vsrca = expand_alpha(vsrc); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - if ((((unsigned long)pMask & 3) == 0) && - (((unsigned long)pDst & 3) == 0)) - { - while (w >= 4) - { - __m64 vmask = load8888 (*(uint32_t *)mask); - __m64 vdest = load8888 (*(uint32_t *)dst); - - *(uint32_t *)dst = store8888 (_mm_adds_pu8 (in (vsrca, vmask), vdest)); - - w -= 4; - dst += 4; - mask += 4; - } - } - - while (w--) - { - uint16_t tmp; - uint16_t a; - uint32_t m, d; - uint32_t r; - - a = *mask++; - d = *dst; - - m = FbInU (sa, 0, a, tmp); - r = FbAdd (m, d, 0, tmp); - - *dst++ = r; - } - } - - _mm_empty(); -} - -void -fbCompositeSrcAdd_8000x8000mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - uint8_t s, d; - uint16_t t; - - CHECKPOINT(); - - fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1); - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w && (unsigned long)dst & 7) - { - s = *src; - d = *dst; - t = d + s; - s = t | (0 - (t >> 8)); - *dst = s; - - dst++; - src++; - w--; - } - - while (w >= 8) - { - *(__m64*)dst = _mm_adds_pu8(*(__m64*)src, *(__m64*)dst); - dst += 8; - src += 8; - w -= 8; - } - - while (w) - { - s = *src; - d = *dst; - t = d + s; - s = t | (0 - (t >> 8)); - *dst = s; - - dst++; - src++; - w--; - } - } - - _mm_empty(); -} - -void -fbCompositeSrcAdd_8888x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - __m64 dst64; - uint32_t *dstLine, *dst; - uint32_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - - CHECKPOINT(); - - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w && (unsigned long)dst & 7) - { - *dst = _mm_cvtsi64_si32(_mm_adds_pu8(_mm_cvtsi32_si64(*src), - _mm_cvtsi32_si64(*dst))); - dst++; - src++; - w--; - } - - while (w >= 2) - { - dst64 = _mm_adds_pu8(*(__m64*)src, *(__m64*)dst); - *(ullong*)dst = ULLONG(dst64); - dst += 2; - src += 2; - w -= 2; - } - - if (w) - { - *dst = _mm_cvtsi64_si32(_mm_adds_pu8(_mm_cvtsi32_si64(*src), - _mm_cvtsi32_si64(*dst))); - - } - } - - _mm_empty(); -} - -pixman_bool_t -pixman_blt_mmx (uint32_t *src_bits, - uint32_t *dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, int src_y, - int dst_x, int dst_y, - int width, int height) -{ - uint8_t * src_bytes; - uint8_t * dst_bytes; - int byte_width; - - if (src_bpp != dst_bpp) - return FALSE; - - if (src_bpp == 16) - { - src_stride = src_stride * (int) sizeof (uint32_t) / 2; - dst_stride = dst_stride * (int) sizeof (uint32_t) / 2; - src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x)); - dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x)); - byte_width = 2 * width; - src_stride *= 2; - dst_stride *= 2; - } else if (src_bpp == 32) { - src_stride = src_stride * (int) sizeof (uint32_t) / 4; - dst_stride = dst_stride * (int) sizeof (uint32_t) / 4; - src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x)); - dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x)); - byte_width = 4 * width; - src_stride *= 4; - dst_stride *= 4; - } else { - return FALSE; - } - - while (height--) - { - int w; - uint8_t *s = src_bytes; - uint8_t *d = dst_bytes; - src_bytes += src_stride; - dst_bytes += dst_stride; - w = byte_width; - - while (w >= 2 && ((unsigned long)d & 3)) - { - *(uint16_t *)d = *(uint16_t *)s; - w -= 2; - s += 2; - d += 2; - } - - while (w >= 4 && ((unsigned long)d & 7)) - { - *(uint32_t *)d = *(uint32_t *)s; - - w -= 4; - s += 4; - d += 4; - } - - while (w >= 64) - { -#ifdef __GNUC__ - __asm__ ( - "movq (%1), %%mm0\n" - "movq 8(%1), %%mm1\n" - "movq 16(%1), %%mm2\n" - "movq 24(%1), %%mm3\n" - "movq 32(%1), %%mm4\n" - "movq 40(%1), %%mm5\n" - "movq 48(%1), %%mm6\n" - "movq 56(%1), %%mm7\n" - - "movq %%mm0, (%0)\n" - "movq %%mm1, 8(%0)\n" - "movq %%mm2, 16(%0)\n" - "movq %%mm3, 24(%0)\n" - "movq %%mm4, 32(%0)\n" - "movq %%mm5, 40(%0)\n" - "movq %%mm6, 48(%0)\n" - "movq %%mm7, 56(%0)\n" - : - : "r" (d), "r" (s) - : "memory", - "%mm0", "%mm1", "%mm2", "%mm3", - "%mm4", "%mm5", "%mm6", "%mm7"); -#else - __m64 v0 = *(__m64 *)(s + 0); - __m64 v1 = *(__m64 *)(s + 8); - __m64 v2 = *(__m64 *)(s + 16); - __m64 v3 = *(__m64 *)(s + 24); - __m64 v4 = *(__m64 *)(s + 32); - __m64 v5 = *(__m64 *)(s + 40); - __m64 v6 = *(__m64 *)(s + 48); - __m64 v7 = *(__m64 *)(s + 56); - *(__m64 *)(d + 0) = v0; - *(__m64 *)(d + 8) = v1; - *(__m64 *)(d + 16) = v2; - *(__m64 *)(d + 24) = v3; - *(__m64 *)(d + 32) = v4; - *(__m64 *)(d + 40) = v5; - *(__m64 *)(d + 48) = v6; - *(__m64 *)(d + 56) = v7; -#endif - - w -= 64; - s += 64; - d += 64; - } - while (w >= 4) - { - *(uint32_t *)d = *(uint32_t *)s; - - w -= 4; - s += 4; - d += 4; - } - if (w >= 2) - { - *(uint16_t *)d = *(uint16_t *)s; - w -= 2; - s += 2; - d += 2; - } - } - - _mm_empty(); - - return TRUE; -} - -void -fbCompositeCopyAreammx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - pixman_blt_mmx (pSrc->bits.bits, - pDst->bits.bits, - pSrc->bits.rowstride, - pDst->bits.rowstride, - PIXMAN_FORMAT_BPP (pSrc->bits.format), - PIXMAN_FORMAT_BPP (pDst->bits.format), - xSrc, ySrc, xDst, yDst, width, height); -} - -void -fbCompositeOver_x888x8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *src, *srcLine; - uint32_t *dst, *dstLine; - uint8_t *mask, *maskLine; - int srcStride, maskStride, dstStride; - uint16_t w; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - - while (height--) - { - src = srcLine; - srcLine += srcStride; - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - - w = width; - - while (w--) - { - ullong m = *mask; - - if (m) - { - __m64 s = load8888 (*src | 0xff000000); - - if (m == 0xff) - *dst = store8888 (s); - else - { - __m64 sa = expand_alpha (s); - __m64 vm = expand_alpha_rev (M64(m)); - __m64 vdest = in_over(s, sa, vm, load8888 (*dst)); - - *dst = store8888 (vdest); - } - } - - mask++; - dst++; - src++; - } - } - - _mm_empty(); -} - - - -#endif /* USE_MMX */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-mmx.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-mmx.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-mmx.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-mmx.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,320 +0,0 @@ -/* - * Copyright © 2004 Red Hat, Inc. - * Copyright © 2005 Trolltech AS - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Søren Sandmann (sandmann@redhat.com) - * Lars Knoll (lars@trolltech.com) - * - * Based on work by Owen Taylor - */ -#ifndef _PIXMAN_MMX_H_ -#define _PIXMAN_MMX_H_ - -#ifdef HAVE_DIX_CONFIG_H -#include -#endif - -#include "pixman-private.h" - -#ifdef USE_MMX - -#if !defined(__amd64__) && !defined(__x86_64__) -pixman_bool_t pixman_have_mmx(void); -#else -#define pixman_have_mmx() TRUE -#endif - -#else -#define pixman_have_mmx() FALSE -#endif - -#ifdef USE_MMX - -pixman_bool_t -pixman_blt_mmx (uint32_t *src_bits, - uint32_t *dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, int src_y, - int dst_x, int dst_y, - int width, int height); -pixman_bool_t -pixman_fill_mmx (uint32_t *bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t xor); - -void fbComposeSetupMMX(void); - -void fbCompositeSolidMask_nx8888x0565Cmmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrcAdd_8888x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrc_8888x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void -fbCompositeSolidMaskSrc_nx8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void -fbCompositeSrc_x888xnx8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSolidMask_nx8888x8888Cmmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSolidMask_nx8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeIn_nx8x8mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeIn_8x8mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrcAdd_8888x8x8mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrcAdd_8000x8000mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrc_8888RevNPx8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrc_8888x0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrc_8888RevNPx0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSolid_nx8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSolid_nx0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSolidMask_nx8x0565mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeSrc_8888x8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void fbCompositeCopyAreammx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); -void -fbCompositeOver_x888x8x8888mmx (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); - -#endif /* USE_MMX */ - -#endif /* _PIXMAN_MMX_H_ */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-pict.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-pict.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-pict.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-pict.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1971 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t; -*- */ -/* - * Copyright © 2000 SuSE, Inc. - * Copyright © 2007 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include - -#include "pixman-private.h" -#include "pixman-mmx.h" -#include "pixman-sse.h" - -#define FbFullMask(n) ((n) == 32 ? (uint32_t)-1 : ((((uint32_t) 1) << n) - 1)) - -#undef READ -#undef WRITE -#define READ(img,x) (*(x)) -#define WRITE(img,ptr,v) ((*(ptr)) = (v)) - -typedef void (* CompositeFunc) (pixman_op_t, - pixman_image_t *, pixman_image_t *, pixman_image_t *, - int16_t, int16_t, int16_t, int16_t, int16_t, int16_t, - uint16_t, uint16_t); - -uint32_t -fbOver (uint32_t x, uint32_t y) -{ - uint16_t a = ~x >> 24; - uint16_t t; - uint32_t m,n,o,p; - - m = FbOverU(x,y,0,a,t); - n = FbOverU(x,y,8,a,t); - o = FbOverU(x,y,16,a,t); - p = FbOverU(x,y,24,a,t); - return m|n|o|p; -} - -uint32_t -fbOver24 (uint32_t x, uint32_t y) -{ - uint16_t a = ~x >> 24; - uint16_t t; - uint32_t m,n,o; - - m = FbOverU(x,y,0,a,t); - n = FbOverU(x,y,8,a,t); - o = FbOverU(x,y,16,a,t); - return m|n|o; -} - -uint32_t -fbIn (uint32_t x, uint8_t y) -{ - uint16_t a = y; - uint16_t t; - uint32_t m,n,o,p; - - m = FbInU(x,0,a,t); - n = FbInU(x,8,a,t); - o = FbInU(x,16,a,t); - p = FbInU(x,24,a,t); - return m|n|o|p; -} - -/* - * Naming convention: - * - * opSRCxMASKxDST - */ - -static void -fbCompositeOver_x888x8x8888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *src, *srcLine; - uint32_t *dst, *dstLine; - uint8_t *mask, *maskLine; - int srcStride, maskStride, dstStride; - uint8_t m; - uint32_t s, d; - uint16_t w; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - - while (height--) - { - src = srcLine; - srcLine += srcStride; - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - - w = width; - while (w--) - { - m = READ(pMask, mask++); - if (m) - { - s = READ(pSrc, src) | 0xff000000; - - if (m == 0xff) - WRITE(pDst, dst, s); - else - { - d = fbIn (s, m); - WRITE(pDst, dst, fbOver (d, READ(pDst, dst))); - } - } - src++; - dst++; - } - } -} - -static void -fbCompositeSolidMaskIn_nx8x8 (pixman_op_t op, - pixman_image_t *iSrc, - pixman_image_t *iMask, - pixman_image_t *iDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint8_t *dstLine, *dst, dstMask; - uint8_t *maskLine, *mask, m; - int dstStride, maskStride; - uint16_t w; - uint16_t t; - - fbComposeGetSolid(iSrc, src, iDst->bits.format); - - dstMask = FbFullMask (PIXMAN_FORMAT_DEPTH (iDst->bits.format)); - srca = src >> 24; - - fbComposeGetStart (iDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - fbComposeGetStart (iMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - if (srca == 0xff) { - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - m = *mask++; - if (m == 0) - { - *dst = 0; - } - else if (m != 0xff) - { - *dst = FbIntMult(m, *dst, t); - } - dst++; - } - } - } - else - { - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - m = *mask++; - m = FbIntMult(m, srca, t); - if (m == 0) - { - *dst = 0; - } - else if (m != 0xff) - { - *dst = FbIntMult(m, *dst, t); - } - dst++; - } - } - } -} - - -static void -fbCompositeSrcIn_8x8 (pixman_op_t op, - pixman_image_t *iSrc, - pixman_image_t *iMask, - pixman_image_t *iDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - uint8_t s; - uint16_t t; - - fbComposeGetStart (iSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1); - fbComposeGetStart (iDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = *src++; - if (s == 0) - { - *dst = 0; - } - else if (s != 0xff) - { - *dst = FbIntMult(s, *dst, t); - } - dst++; - } - } -} - -void -fbCompositeSolidMask_nx8x8888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint32_t *dstLine, *dst, d, dstMask; - uint8_t *maskLine, *mask, m; - int dstStride, maskStride; - uint16_t w; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - dstMask = FbFullMask (PIXMAN_FORMAT_DEPTH (pDst->bits.format)); - srca = src >> 24; - if (src == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - m = READ(pMask, mask++); - if (m == 0xff) - { - if (srca == 0xff) - WRITE(pDst, dst, src & dstMask); - else - WRITE(pDst, dst, fbOver (src, READ(pDst, dst)) & dstMask); - } - else if (m) - { - d = fbIn (src, m); - WRITE(pDst, dst, fbOver (d, READ(pDst, dst)) & dstMask); - } - dst++; - } - } -} - -void -fbCompositeSolidMask_nx8888x8888C (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint32_t *dstLine, *dst, d, dstMask; - uint32_t *maskLine, *mask, ma; - int dstStride, maskStride; - uint16_t w; - uint32_t m, n, o, p; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - dstMask = FbFullMask (PIXMAN_FORMAT_DEPTH (pDst->bits.format)); - srca = src >> 24; - if (src == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint32_t, maskStride, maskLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - ma = READ(pMask, mask++); - if (ma == 0xffffffff) - { - if (srca == 0xff) - WRITE(pDst, dst, src & dstMask); - else - WRITE(pDst, dst, fbOver (src, READ(pDst, dst)) & dstMask); - } - else if (ma) - { - d = READ(pDst, dst); -#define FbInOverC(src,srca,msk,dst,i,result) { \ - uint16_t __a = FbGet8(msk,i); \ - uint32_t __t, __ta; \ - uint32_t __i; \ - __t = FbIntMult (FbGet8(src,i), __a,__i); \ - __ta = (uint8_t) ~FbIntMult (srca, __a,__i); \ - __t = __t + FbIntMult(FbGet8(dst,i),__ta,__i); \ - __t = (uint32_t) (uint8_t) (__t | (-(__t >> 8))); \ - result = __t << (i); \ -} - FbInOverC (src, srca, ma, d, 0, m); - FbInOverC (src, srca, ma, d, 8, n); - FbInOverC (src, srca, ma, d, 16, o); - FbInOverC (src, srca, ma, d, 24, p); - WRITE(pDst, dst, m|n|o|p); - } - dst++; - } - } -} - -void -fbCompositeSolidMask_nx8x0888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint8_t *dstLine, *dst; - uint32_t d; - uint8_t *maskLine, *mask, m; - int dstStride, maskStride; - uint16_t w; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (src == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 3); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - m = READ(pMask, mask++); - if (m == 0xff) - { - if (srca == 0xff) - d = src; - else - { - d = Fetch24(pDst, dst); - d = fbOver24 (src, d); - } - Store24(pDst, dst,d); - } - else if (m) - { - d = fbOver24 (fbIn(src,m), Fetch24(pDst, dst)); - Store24(pDst, dst, d); - } - dst += 3; - } - } -} - -void -fbCompositeSolidMask_nx8x0565 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint16_t *dstLine, *dst; - uint32_t d; - uint8_t *maskLine, *mask, m; - int dstStride, maskStride; - uint16_t w; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (src == 0) - return; - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - m = READ(pMask, mask++); - if (m == 0xff) - { - if (srca == 0xff) - d = src; - else - { - d = READ(pDst, dst); - d = fbOver24 (src, cvt0565to0888(d)); - } - WRITE(pDst, dst, cvt8888to0565(d)); - } - else if (m) - { - d = READ(pDst, dst); - d = fbOver24 (fbIn(src,m), cvt0565to0888(d)); - WRITE(pDst, dst, cvt8888to0565(d)); - } - dst++; - } - } -} - -void -fbCompositeSolidMask_nx8888x0565C (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src, srca; - uint16_t src16; - uint16_t *dstLine, *dst; - uint32_t d; - uint32_t *maskLine, *mask, ma; - int dstStride, maskStride; - uint16_t w; - uint32_t m, n, o; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - srca = src >> 24; - if (src == 0) - return; - - src16 = cvt8888to0565(src); - - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint32_t, maskStride, maskLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - ma = READ(pMask, mask++); - if (ma == 0xffffffff) - { - if (srca == 0xff) - { - WRITE(pDst, dst, src16); - } - else - { - d = READ(pDst, dst); - d = fbOver24 (src, cvt0565to0888(d)); - WRITE(pDst, dst, cvt8888to0565(d)); - } - } - else if (ma) - { - d = READ(pDst, dst); - d = cvt0565to0888(d); - FbInOverC (src, srca, ma, d, 0, m); - FbInOverC (src, srca, ma, d, 8, n); - FbInOverC (src, srca, ma, d, 16, o); - d = m|n|o; - WRITE(pDst, dst, cvt8888to0565(d)); - } - dst++; - } - } -} - -void -fbCompositeSrc_8888x8888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dstLine, *dst, dstMask; - uint32_t *srcLine, *src, s; - int dstStride, srcStride; - uint8_t a; - uint16_t w; - - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - - dstMask = FbFullMask (PIXMAN_FORMAT_DEPTH (pDst->bits.format)); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = READ(pSrc, src++); - a = s >> 24; - if (a == 0xff) - WRITE(pDst, dst, s & dstMask); - else if (a) - WRITE(pDst, dst, fbOver (s, READ(pDst, dst)) & dstMask); - dst++; - } - } -} - -void -fbCompositeSrc_8888x0888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint32_t d; - uint32_t *srcLine, *src, s; - uint8_t a; - int dstStride, srcStride; - uint16_t w; - - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 3); - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = READ(pSrc, src++); - a = s >> 24; - if (a) - { - if (a == 0xff) - d = s; - else - d = fbOver24 (s, Fetch24(pDst, dst)); - Store24(pDst, dst, d); - } - dst += 3; - } - } -} - -void -fbCompositeSrc_8888x0565 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint16_t *dstLine, *dst; - uint32_t d; - uint32_t *srcLine, *src, s; - uint8_t a; - int dstStride, srcStride; - uint16_t w; - - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = READ(pSrc, src++); - a = s >> 24; - if (a) - { - if (a == 0xff) - d = s; - else - { - d = READ(pDst, dst); - d = fbOver24 (s, cvt0565to0888(d)); - } - WRITE(pDst, dst, cvt8888to0565(d)); - } - dst++; - } - } -} - -void -fbCompositeSrcAdd_8000x8000 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - uint8_t s, d; - uint16_t t; - - fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1); - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = READ(pSrc, src++); - if (s) - { - if (s != 0xff) - { - d = READ(pDst, dst); - t = d + s; - s = t | (0 - (t >> 8)); - } - WRITE(pDst, dst, s); - } - dst++; - } - } -} - -void -fbCompositeSrcAdd_8888x8888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dstLine, *dst; - uint32_t *srcLine, *src; - int dstStride, srcStride; - uint16_t w; - uint32_t s, d; - uint16_t t; - uint32_t m,n,o,p; - - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1); - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - src = srcLine; - srcLine += srcStride; - w = width; - - while (w--) - { - s = READ(pSrc, src++); - if (s) - { - if (s != 0xffffffff) - { - d = READ(pDst, dst); - if (d) - { - m = FbAdd(s,d,0,t); - n = FbAdd(s,d,8,t); - o = FbAdd(s,d,16,t); - p = FbAdd(s,d,24,t); - s = m|n|o|p; - } - } - WRITE(pDst, dst, s); - } - dst++; - } - } -} - -static void -fbCompositeSrcAdd_8888x8x8 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint8_t *dstLine, *dst; - uint8_t *maskLine, *mask; - int dstStride, maskStride; - uint16_t w; - uint32_t src; - uint8_t sa; - - fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1); - fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1); - fbComposeGetSolid (pSrc, src, pDst->bits.format); - sa = (src >> 24); - - while (height--) - { - dst = dstLine; - dstLine += dstStride; - mask = maskLine; - maskLine += maskStride; - w = width; - - while (w--) - { - uint16_t tmp; - uint16_t a; - uint32_t m, d; - uint32_t r; - - a = READ(pMask, mask++); - d = READ(pDst, dst); - - m = FbInU (sa, 0, a, tmp); - r = FbAdd (m, d, 0, tmp); - - WRITE(pDst, dst++, r); - } - } -} - -void -fbCompositeSrcAdd_1000x1000 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - /* FIXME */ -#if 0 - - uint32_t *dstBits, *srcBits; - int dstStride, srcStride; - int dstBpp, srcBpp; - int dstXoff, dstYoff; - int srcXoff, srcYoff; - - fbGetDrawable(pSrc->pDrawable, srcBits, srcStride, srcBpp, srcXoff, srcYoff); - - fbGetDrawable(pDst->pDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff); - - fbBlt (srcBits + srcStride * (ySrc + srcYoff), - srcStride, - xSrc + srcXoff, - - dstBits + dstStride * (yDst + dstYoff), - dstStride, - xDst + dstXoff, - - width, - height, - - GXor, - FB_ALLONES, - srcBpp, - - FALSE, - FALSE); - -#endif -} - -void -fbCompositeSolidMask_nx1xn (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - /* FIXME */ -#if 0 - uint32_t *dstBits; - uint32_t *maskBits; - int dstStride, maskStride; - int dstBpp, maskBpp; - int dstXoff, dstYoff; - int maskXoff, maskYoff; - uint32_t src; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - fbGetStipDrawable (pMask->pDrawable, maskBits, maskStride, maskBpp, maskXoff, maskYoff); - fbGetDrawable (pDst->pDrawable, dstBits, dstStride, dstBpp, dstXoff, dstYoff); - - switch (dstBpp) { - case 32: - break; - case 24: - break; - case 16: - src = cvt8888to0565(src); - break; - } - - src = fbReplicatePixel (src, dstBpp); - - fbBltOne (maskBits + maskStride * (yMask + maskYoff), - maskStride, - xMask + maskXoff, - - dstBits + dstStride * (yDst + dstYoff), - dstStride, - (xDst + dstXoff) * dstBpp, - dstBpp, - - width * dstBpp, - height, - - 0x0, - src, - FB_ALLONES, - 0x0); - -#endif -} - -/* - * Apply a constant alpha value in an over computation - */ -static void -fbCompositeSrcSrc_nxn (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height); - -/* - * Simple bitblt - */ - -static void -fbCompositeSrcSrc_nxn (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - /* FIXME */ -#if 0 - uint32_t *dst; - uint32_t *src; - int dstStride, srcStride; - int srcXoff, srcYoff; - int dstXoff, dstYoff; - int srcBpp; - int dstBpp; - pixman_bool_t reverse = FALSE; - pixman_bool_t upsidedown = FALSE; - - fbGetDrawable(pSrc->pDrawable,src,srcStride,srcBpp,srcXoff,srcYoff); - fbGetDrawable(pDst->pDrawable,dst,dstStride,dstBpp,dstXoff,dstYoff); - - fbBlt (src + (ySrc + srcYoff) * srcStride, - srcStride, - (xSrc + srcXoff) * srcBpp, - - dst + (yDst + dstYoff) * dstStride, - dstStride, - (xDst + dstXoff) * dstBpp, - - (width) * dstBpp, - (height), - - GXcopy, - FB_ALLONES, - dstBpp, - - reverse, - upsidedown); -#endif -} - -static void -pixman_image_composite_rect (pixman_op_t op, - pixman_image_t *src, - pixman_image_t *mask, - pixman_image_t *dest, - int16_t src_x, - int16_t src_y, - int16_t mask_x, - int16_t mask_y, - int16_t dest_x, - int16_t dest_y, - uint16_t width, - uint16_t height); -void -fbCompositeSolidFill (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t src; - - fbComposeGetSolid(pSrc, src, pDst->bits.format); - - if (pDst->bits.format == PIXMAN_a8) - src = src >> 24; - else if (pDst->bits.format == PIXMAN_r5g6b5 || - pDst->bits.format == PIXMAN_b5g6r5) - src = cvt8888to0565 (src); - - pixman_fill (pDst->bits.bits, pDst->bits.rowstride, - PIXMAN_FORMAT_BPP (pDst->bits.format), - xDst, yDst, - width, height, - src); -} - -static void -fbCompositeSrc_8888xx888 (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - uint32_t *dst; - uint32_t *src; - int dstStride, srcStride; - uint32_t n_bytes = width * sizeof (uint32_t); - - fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, src, 1); - fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dst, 1); - - while (height--) - { - memcpy (dst, src, n_bytes); - - dst += dstStride; - src += srcStride; - } -} - -static void -pixman_walk_composite_region (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height, - pixman_bool_t srcRepeat, - pixman_bool_t maskRepeat, - CompositeFunc compositeRect) -{ - int n; - const pixman_box16_t *pbox; - int w, h, w_this, h_this; - int x_msk, y_msk, x_src, y_src, x_dst, y_dst; - pixman_region16_t reg; - pixman_region16_t *region; - - pixman_region_init (®); - if (!pixman_compute_composite_region (®, pSrc, pMask, pDst, - xSrc, ySrc, xMask, yMask, xDst, yDst, width, height)) - { - return; - } - - region = ® - - pbox = pixman_region_rectangles (region, &n); - while (n--) - { - h = pbox->y2 - pbox->y1; - y_src = pbox->y1 - yDst + ySrc; - y_msk = pbox->y1 - yDst + yMask; - y_dst = pbox->y1; - while (h) - { - h_this = h; - w = pbox->x2 - pbox->x1; - x_src = pbox->x1 - xDst + xSrc; - x_msk = pbox->x1 - xDst + xMask; - x_dst = pbox->x1; - if (maskRepeat) - { - y_msk = MOD (y_msk, pMask->bits.height); - if (h_this > pMask->bits.height - y_msk) - h_this = pMask->bits.height - y_msk; - } - if (srcRepeat) - { - y_src = MOD (y_src, pSrc->bits.height); - if (h_this > pSrc->bits.height - y_src) - h_this = pSrc->bits.height - y_src; - } - while (w) - { - w_this = w; - if (maskRepeat) - { - x_msk = MOD (x_msk, pMask->bits.width); - if (w_this > pMask->bits.width - x_msk) - w_this = pMask->bits.width - x_msk; - } - if (srcRepeat) - { - x_src = MOD (x_src, pSrc->bits.width); - if (w_this > pSrc->bits.width - x_src) - w_this = pSrc->bits.width - x_src; - } - (*compositeRect) (op, pSrc, pMask, pDst, - x_src, y_src, x_msk, y_msk, x_dst, y_dst, - w_this, h_this); - w -= w_this; - x_src += w_this; - x_msk += w_this; - x_dst += w_this; - } - h -= h_this; - y_src += h_this; - y_msk += h_this; - y_dst += h_this; - } - pbox++; - } - pixman_region_fini (®); -} - -static pixman_bool_t -can_get_solid (pixman_image_t *image) -{ - if (image->type == SOLID) - return TRUE; - - if (image->type != BITS || - image->bits.width != 1 || - image->bits.height != 1) - { - return FALSE; - } - - if (image->common.repeat != PIXMAN_REPEAT_NORMAL) - return FALSE; - - switch (image->bits.format) - { - case PIXMAN_a8r8g8b8: - case PIXMAN_x8r8g8b8: - case PIXMAN_a8b8g8r8: - case PIXMAN_x8b8g8r8: - case PIXMAN_r8g8b8: - case PIXMAN_b8g8r8: - case PIXMAN_r5g6b5: - case PIXMAN_b5g6r5: - return TRUE; - default: - return FALSE; - } -} - -#define SCANLINE_BUFFER_LENGTH 2048 - -static void -pixman_image_composite_rect (pixman_op_t op, - pixman_image_t *src, - pixman_image_t *mask, - pixman_image_t *dest, - int16_t src_x, - int16_t src_y, - int16_t mask_x, - int16_t mask_y, - int16_t dest_x, - int16_t dest_y, - uint16_t width, - uint16_t height) -{ - FbComposeData compose_data; - uint32_t _scanline_buffer[SCANLINE_BUFFER_LENGTH * 3]; - uint32_t *scanline_buffer = _scanline_buffer; - - return_if_fail (src != NULL); - return_if_fail (dest != NULL); - - if (width > SCANLINE_BUFFER_LENGTH) - { - scanline_buffer = (uint32_t *)pixman_malloc_abc (width, 3, sizeof (uint32_t)); - - if (!scanline_buffer) - return; - } - - compose_data.op = op; - compose_data.src = src; - compose_data.mask = mask; - compose_data.dest = dest; - compose_data.xSrc = src_x; - compose_data.ySrc = src_y; - compose_data.xMask = mask_x; - compose_data.yMask = mask_y; - compose_data.xDest = dest_x; - compose_data.yDest = dest_y; - compose_data.width = width; - compose_data.height = height; - - pixman_composite_rect_general (&compose_data, scanline_buffer); - - if (scanline_buffer != _scanline_buffer) - free (scanline_buffer); -} - -/* These "formats" both have depth 0, so they - * will never clash with any real ones - */ -#define PIXMAN_null PIXMAN_FORMAT(0,0,0,0,0,0) -#define PIXMAN_solid PIXMAN_FORMAT(0,1,0,0,0,0) - -#define NEED_COMPONENT_ALPHA (1 << 0) -#define NEED_PIXBUF (1 << 1) -#define NEED_SOLID_MASK (1 << 2) - -typedef struct -{ - pixman_op_t op; - pixman_format_code_t src_format; - pixman_format_code_t mask_format; - pixman_format_code_t dest_format; - CompositeFunc func; - uint32_t flags; -} FastPathInfo; - -#ifdef USE_MMX -static const FastPathInfo mmx_fast_paths[] = -{ - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, fbCompositeSolidMask_nx8x0565mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_b5g6r5, fbCompositeSolidMask_nx8x0565mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8r8g8b8, PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8888x8888Cmmx, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8r8g8b8, PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8888x8888Cmmx, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8r8g8b8, PIXMAN_r5g6b5, fbCompositeSolidMask_nx8888x0565Cmmx, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8b8g8r8, PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8888x8888Cmmx, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8b8g8r8, PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8888x8888Cmmx, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8b8g8r8, PIXMAN_b5g6r5, fbCompositeSolidMask_nx8888x0565Cmmx, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8r8g8b8, PIXMAN_a8r8g8b8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8b8g8r8, PIXMAN_a8r8g8b8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8r8g8b8, PIXMAN_x8r8g8b8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8b8g8r8, PIXMAN_x8r8g8b8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8r8g8b8, PIXMAN_r5g6b5, fbCompositeSrc_8888RevNPx0565mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8b8g8r8, PIXMAN_r5g6b5, fbCompositeSrc_8888RevNPx0565mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8r8g8b8, PIXMAN_a8b8g8r8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8b8g8r8, PIXMAN_a8b8g8r8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8r8g8b8, PIXMAN_x8b8g8r8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8b8g8r8, PIXMAN_x8b8g8r8, fbCompositeSrc_8888RevNPx8888mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8r8g8b8, PIXMAN_b5g6r5, fbCompositeSrc_8888RevNPx0565mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8b8g8r8, PIXMAN_b5g6r5, fbCompositeSrc_8888RevNPx0565mmx, NEED_PIXBUF }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSrc_x888xnx8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSrc_x888xnx8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8, PIXMAN_a8b8g8r8, fbCompositeSrc_x888xnx8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeSrc_x888xnx8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8x8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8x8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_a8, PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8x8888mmx, NEED_SOLID_MASK }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8x8888mmx, NEED_SOLID_MASK }, -#if 0 - /* FIXME: This code is commented out since it's apparently not actually faster than the generic code. */ - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeOver_x888x8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeOver_x888x8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8b8r8g8, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeOver_x888x8x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8b8r8g8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeOver_x888x8x8888mmx, 0 }, -#endif - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSolid_nx8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSolid_nx8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSolid_nx0565mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSrc_8888x0565mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888mmx, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeSrc_8888x0565mmx, 0 }, - - { PIXMAN_OP_ADD, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSrcAdd_8888x8888mmx, 0 }, - { PIXMAN_OP_ADD, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSrcAdd_8888x8888mmx, 0 }, - { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, fbCompositeSrcAdd_8000x8000mmx, 0 }, - { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, fbCompositeSrcAdd_8888x8x8mmx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSolidMaskSrc_nx8x8888mmx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSolidMaskSrc_nx8x8888mmx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, fbCompositeSolidMaskSrc_nx8x8888mmx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeSolidMaskSrc_nx8x8888mmx, 0 }, - - { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeCopyAreammx, 0 }, - { PIXMAN_OP_IN, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, fbCompositeIn_8x8mmx, 0 }, - { PIXMAN_OP_IN, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, fbCompositeIn_nx8x8mmx, 0 }, - { PIXMAN_OP_NONE }, -}; -#endif - -#ifdef USE_SSE2 -static const FastPathInfo sse_fast_paths[] = -{ - { PIXMAN_OP_NONE }, -}; -#endif - -static const FastPathInfo c_fast_paths[] = -{ - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, fbCompositeSolidMask_nx8x0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_b5g6r5, fbCompositeSolidMask_nx8x0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r8g8b8, fbCompositeSolidMask_nx8x0888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_b8g8r8, fbCompositeSolidMask_nx8x0888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8r8g8b8, PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8888x8888C, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8r8g8b8, PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8888x8888C, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8r8g8b8, PIXMAN_r5g6b5, fbCompositeSolidMask_nx8888x0565C, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8b8g8r8, PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8888x8888C, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8b8g8r8, PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8888x8888C, NEED_COMPONENT_ALPHA }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8b8g8r8, PIXMAN_b5g6r5, fbCompositeSolidMask_nx8888x0565C, NEED_COMPONENT_ALPHA }, -#if 0 - /* FIXME: This code is commented out since it's apparently not actually faster than the generic code */ - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeOver_x888x8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeOver_x888x8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8b8r8g8, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeOver_x888x8x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_x8b8r8g8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeOver_x888x8x8888, 0 }, -#endif - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSrc_8888x0565, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888, 0 }, - { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeSrc_8888x0565, 0 }, -#if 0 - /* FIXME */ - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_r5g6b5, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_b5g6r5, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_r8g8b8, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_b8g8r8, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx1xn, 0 }, - { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a1, PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx1xn, 0 }, -#endif - { PIXMAN_OP_ADD, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSrcAdd_8888x8888, 0 }, - { PIXMAN_OP_ADD, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSrcAdd_8888x8888, 0 }, - { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, fbCompositeSrcAdd_8000x8000, 0 }, -#if 0 - /* FIXME */ - { PIXMAN_OP_ADD, PIXMAN_a1, PIXMAN_null, PIXMAN_a1, fbCompositeSrcAdd_1000x1000, 0 }, -#endif - { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, fbCompositeSrcAdd_8888x8x8, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSolidFill, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSolidFill, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSolidFill, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSolidFill, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_null, PIXMAN_a8, fbCompositeSolidFill, 0 }, - { PIXMAN_OP_SRC, PIXMAN_solid, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSolidFill, 0 }, - { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSrc_8888xx888, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSrc_8888xx888, 0 }, - { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSrc_8888xx888, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSrc_8888xx888, 0 }, -#if 0 - /* FIXME */ - { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSrcSrc_nxn, 0 }, - { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSrcSrc_nxn, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSrcSrc_nxn, 0 }, - { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSrcSrc_nxn, 0 }, - { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSrcSrc_nxn, 0 }, - { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeSrcSrc_nxn, 0 }, -#endif - { PIXMAN_OP_IN, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, fbCompositeSrcIn_8x8, 0 }, - { PIXMAN_OP_IN, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, fbCompositeSolidMaskIn_nx8x8, 0 }, - { PIXMAN_OP_NONE }, -}; - -static pixman_bool_t -mask_is_solid (pixman_image_t *mask) -{ - if (mask->type == SOLID) - return TRUE; - - if (mask->type == BITS && - mask->common.repeat == PIXMAN_REPEAT_NORMAL && - mask->bits.width == 1 && - mask->bits.height == 1) - { - return TRUE; - } - - return FALSE; -} - -static const FastPathInfo * -get_fast_path (const FastPathInfo *fast_paths, - pixman_op_t op, - pixman_image_t *pSrc, - pixman_image_t *pMask, - pixman_image_t *pDst, - pixman_bool_t is_pixbuf) -{ - const FastPathInfo *info; - - for (info = fast_paths; info->op != PIXMAN_OP_NONE; info++) - { - pixman_bool_t valid_src = FALSE; - pixman_bool_t valid_mask = FALSE; - - if (info->op != op) - continue; - - if ((info->src_format == PIXMAN_solid && can_get_solid (pSrc)) || - (pSrc->type == BITS && info->src_format == pSrc->bits.format)) - { - valid_src = TRUE; - } - - if (!valid_src) - continue; - - if ((info->mask_format == PIXMAN_null && !pMask) || - (pMask && pMask->type == BITS && info->mask_format == pMask->bits.format)) - { - valid_mask = TRUE; - - if (info->flags & NEED_SOLID_MASK) - { - if (!pMask || !mask_is_solid (pMask)) - valid_mask = FALSE; - } - - if (info->flags & NEED_COMPONENT_ALPHA) - { - if (!pMask || !pMask->common.component_alpha) - valid_mask = FALSE; - } - } - - if (!valid_mask) - continue; - - if (info->dest_format != pDst->bits.format) - continue; - - if ((info->flags & NEED_PIXBUF) && !is_pixbuf) - continue; - - return info; - } - - return NULL; -} - -void -pixman_image_composite (pixman_op_t op, - pixman_image_t * pSrc, - pixman_image_t * pMask, - pixman_image_t * pDst, - int16_t xSrc, - int16_t ySrc, - int16_t xMask, - int16_t yMask, - int16_t xDst, - int16_t yDst, - uint16_t width, - uint16_t height) -{ - pixman_bool_t srcRepeat = pSrc->type == BITS && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL; - pixman_bool_t maskRepeat = FALSE; - pixman_bool_t srcTransform = pSrc->common.transform != NULL; - pixman_bool_t maskTransform = FALSE; - pixman_bool_t srcAlphaMap = pSrc->common.alpha_map != NULL; - pixman_bool_t maskAlphaMap = FALSE; - pixman_bool_t dstAlphaMap = pDst->common.alpha_map != NULL; - CompositeFunc func = NULL; - -#ifdef USE_SSE2 - fbComposeSetupSSE(); -#endif - -#ifdef USE_MMX - fbComposeSetupMMX(); -#endif - - if (srcRepeat && srcTransform && - pSrc->bits.width == 1 && - pSrc->bits.height == 1) - { - srcTransform = FALSE; - } - - if (pMask && pMask->type == BITS) - { - maskRepeat = pMask->common.repeat == PIXMAN_REPEAT_NORMAL; - - maskTransform = pMask->common.transform != 0; - if (pMask->common.filter == PIXMAN_FILTER_CONVOLUTION) - maskTransform = TRUE; - - maskAlphaMap = pMask->common.alpha_map != 0; - - if (maskRepeat && maskTransform && - pMask->bits.width == 1 && - pMask->bits.height == 1) - { - maskTransform = FALSE; - } - } - - if ((pSrc->type == BITS || can_get_solid (pSrc)) && (!pMask || pMask->type == BITS) - && !srcTransform && !maskTransform - && !maskAlphaMap && !srcAlphaMap && !dstAlphaMap - && (pSrc->common.filter != PIXMAN_FILTER_CONVOLUTION) - && (pSrc->common.repeat != PIXMAN_REPEAT_PAD) - && (!pMask || (pMask->common.filter != PIXMAN_FILTER_CONVOLUTION && pMask->common.repeat != PIXMAN_REPEAT_PAD)) - && !pSrc->common.read_func && !pSrc->common.write_func - && !(pMask && pMask->common.read_func) && !(pMask && pMask->common.write_func) - && !pDst->common.read_func && !pDst->common.write_func) - { - const FastPathInfo *info; - pixman_bool_t pixbuf; - - pixbuf = - pSrc && pSrc->type == BITS && - pMask && pMask->type == BITS && - pSrc->bits.bits == pMask->bits.bits && - xSrc == xMask && - ySrc == yMask && - !pMask->common.component_alpha && - !maskRepeat; - info = NULL; - -#ifdef USE_SSE2 - if (pixman_have_sse ()) - info = get_fast_path (sse_fast_paths, op, pSrc, pMask, pDst, pixbuf); - if (!info) -#endif - -#ifdef USE_MMX - - if (pixman_have_mmx()) - info = get_fast_path (mmx_fast_paths, op, pSrc, pMask, pDst, pixbuf); - if (!info) -#endif - info = get_fast_path (c_fast_paths, op, pSrc, pMask, pDst, pixbuf); - - if (info) - { - func = info->func; - - if (info->src_format == PIXMAN_solid) - srcRepeat = FALSE; - - if (info->mask_format == PIXMAN_solid || - info->flags & NEED_SOLID_MASK) - { - maskRepeat = FALSE; - } - } - } - - if ((srcRepeat && - pSrc->bits.width == 1 && - pSrc->bits.height == 1) || - (maskRepeat && - pMask->bits.width == 1 && - pMask->bits.height == 1)) - { - /* If src or mask are repeating 1x1 images and srcRepeat or - * maskRepeat are still TRUE, it means the fast path we - * selected does not actually handle repeating images. - * - * So rather than call the "fast path" with a zillion - * 1x1 requests, we just use the general code (which does - * do something sensible with 1x1 repeating images). - */ - func = NULL; - } - - if (!func) - { - func = pixman_image_composite_rect; - - /* CompositeGeneral optimizes 1x1 repeating images itself */ - if (pSrc->type == BITS && - pSrc->bits.width == 1 && pSrc->bits.height == 1) - { - srcRepeat = FALSE; - } - - if (pMask && pMask->type == BITS && - pMask->bits.width == 1 && pMask->bits.height == 1) - { - maskRepeat = FALSE; - } - - /* if we are transforming, repeats are handled in fbFetchTransformed */ - if (srcTransform) - srcRepeat = FALSE; - - if (maskTransform) - maskRepeat = FALSE; - } - - pixman_walk_composite_region (op, pSrc, pMask, pDst, xSrc, ySrc, - xMask, yMask, xDst, yDst, width, height, - srcRepeat, maskRepeat, func); -} - - -#ifdef USE_MMX -/* The CPU detection code needs to be in a file not compiled with - * "-mmmx -msse", as gcc would generate CMOV instructions otherwise - * that would lead to SIGILL instructions on old CPUs that don't have - * it. - */ -#if !defined(__amd64__) && !defined(__x86_64__) - -#ifdef HAVE_GETISAX -#include -#endif - -enum CPUFeatures { - NoFeatures = 0, - MMX = 0x1, - MMX_Extensions = 0x2, - SSE = 0x6, - SSE2 = 0x8, - CMOV = 0x10 -}; - -static unsigned int detectCPUFeatures(void) { - unsigned int features = 0; - unsigned int result = 0; - -#ifdef HAVE_GETISAX - if (getisax(&result, 1)) { - if (result & AV_386_CMOV) - features |= CMOV; - if (result & AV_386_MMX) - features |= MMX; - if (result & AV_386_AMD_MMX) - features |= MMX_Extensions; - if (result & AV_386_SSE) - features |= SSE; - if (result & AV_386_SSE2) - features |= SSE2; - } -#else - char vendor[13]; -#ifdef _MSC_VER - int vendor0 = 0, vendor1, vendor2; -#endif - vendor[0] = 0; - vendor[12] = 0; - -#ifdef __GNUC__ - /* see p. 118 of amd64 instruction set manual Vol3 */ - /* We need to be careful about the handling of %ebx and - * %esp here. We can't declare either one as clobbered - * since they are special registers (%ebx is the "PIC - * register" holding an offset to global data, %esp the - * stack pointer), so we need to make sure they have their - * original values when we access the output operands. - */ - __asm__ ("pushf\n" - "pop %%eax\n" - "mov %%eax, %%ecx\n" - "xor $0x00200000, %%eax\n" - "push %%eax\n" - "popf\n" - "pushf\n" - "pop %%eax\n" - "mov $0x0, %%edx\n" - "xor %%ecx, %%eax\n" - "jz 1f\n" - - "mov $0x00000000, %%eax\n" - "push %%ebx\n" - "cpuid\n" - "mov %%ebx, %%eax\n" - "pop %%ebx\n" - "mov %%eax, %1\n" - "mov %%edx, %2\n" - "mov %%ecx, %3\n" - "mov $0x00000001, %%eax\n" - "push %%ebx\n" - "cpuid\n" - "pop %%ebx\n" - "1:\n" - "mov %%edx, %0\n" - : "=r" (result), - "=m" (vendor[0]), - "=m" (vendor[4]), - "=m" (vendor[8]) - : - : "%eax", "%ecx", "%edx" - ); - -#elif defined (_MSC_VER) - - _asm { - pushfd - pop eax - mov ecx, eax - xor eax, 00200000h - push eax - popfd - pushfd - pop eax - mov edx, 0 - xor eax, ecx - jz nocpuid - - mov eax, 0 - push ebx - cpuid - mov eax, ebx - pop ebx - mov vendor0, eax - mov vendor1, edx - mov vendor2, ecx - mov eax, 1 - push ebx - cpuid - pop ebx - nocpuid: - mov result, edx - } - memmove (vendor+0, &vendor0, 4); - memmove (vendor+4, &vendor1, 4); - memmove (vendor+8, &vendor2, 4); - -#else -# error unsupported compiler -#endif - - features = 0; - if (result) { - /* result now contains the standard feature bits */ - if (result & (1 << 15)) - features |= CMOV; - if (result & (1 << 23)) - features |= MMX; - if (result & (1 << 25)) - features |= SSE; - if (result & (1 << 26)) - features |= SSE2; - if ((features & MMX) && !(features & SSE) && - (strcmp(vendor, "AuthenticAMD") == 0 || - strcmp(vendor, "Geode by NSC") == 0)) { - /* check for AMD MMX extensions */ -#ifdef __GNUC__ - __asm__("push %%ebx\n" - "mov $0x80000000, %%eax\n" - "cpuid\n" - "xor %%edx, %%edx\n" - "cmp $0x1, %%eax\n" - "jge 2f\n" - "mov $0x80000001, %%eax\n" - "cpuid\n" - "2:\n" - "pop %%ebx\n" - "mov %%edx, %0\n" - : "=r" (result) - : - : "%eax", "%ecx", "%edx" - ); -#elif defined _MSC_VER - _asm { - push ebx - mov eax, 80000000h - cpuid - xor edx, edx - cmp eax, 1 - jge notamd - mov eax, 80000001h - cpuid - notamd: - pop ebx - mov result, edx - } -#endif - if (result & (1<<22)) - features |= MMX_Extensions; - } - } -#endif /* HAVE_GETISAX */ - - return features; -} - -pixman_bool_t -pixman_have_mmx (void) -{ - static pixman_bool_t initialized = FALSE; - static pixman_bool_t mmx_present; - - if (!initialized) - { - unsigned int features = detectCPUFeatures(); - mmx_present = (features & (MMX|MMX_Extensions)) == (MMX|MMX_Extensions); - initialized = TRUE; - } - - return mmx_present; -} - -#ifdef USE_SSE2 -pixman_bool_t -pixman_have_sse (void) -{ - static pixman_bool_t initialized = FALSE; - static pixman_bool_t sse_present; - - if (!initialized) - { - unsigned int features = detectCPUFeatures(); - sse_present = (features & (MMX|MMX_Extensions|SSE|SSE2)) == (MMX|MMX_Extensions|SSE|SSE2); - initialized = TRUE; - } - - return sse_present; -} -#endif - -#endif /* __amd64__ */ -#endif diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-private.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-private.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,892 +0,0 @@ -#ifndef PACKAGE -# error config.h must be included before pixman-private.h -#endif - -#ifndef PIXMAN_PRIVATE_H -#define PIXMAN_PRIVATE_H - -#include "pixman.h" -#include - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#define MSBFirst 0 -#define LSBFirst 1 - -#ifdef WORDS_BIGENDIAN -# define IMAGE_BYTE_ORDER MSBFirst -# define BITMAP_BIT_ORDER MSBFirst -#else -# define IMAGE_BYTE_ORDER LSBFirst -# define BITMAP_BIT_ORDER LSBFirst -#endif - -#undef DEBUG -#define DEBUG 0 - -#if defined (__GNUC__) -# define FUNC ((const char*) (__PRETTY_FUNCTION__)) -#elif defined (__sun) || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) -# define FUNC ((const char*) (__func__)) -#else -# define FUNC ((const char*) ("???")) -#endif - -#ifndef INT16_MIN -# define INT16_MIN (-32767-1) -#endif - -#ifndef INT16_MAX -# define INT16_MAX (32767) -#endif - -#ifndef INT32_MIN -# define INT32_MIN (-2147483647-1) -#endif - -#ifndef INT32_MAX -# define INT32_MAX (2147483647) -#endif - -#ifndef UINT32_MIN -# define UINT32_MIN (0) -#endif - -#ifndef UINT32_MAX -# define UINT32_MAX (4294967295U) -#endif - -#ifndef M_PI -# define M_PI 3.14159265358979323846 -#endif - -#ifdef _MSC_VER -#define inline __inline -#endif - -#define FB_SHIFT 5 -#define FB_UNIT (1 << FB_SHIFT) -#define FB_HALFUNIT (1 << (FB_SHIFT-1)) -#define FB_MASK (FB_UNIT - 1) -#define FB_ALLONES ((uint32_t) -1) - -/* Memory allocation helpers */ -void *pixman_malloc_ab (unsigned int n, unsigned int b); -void *pixman_malloc_abc (unsigned int a, unsigned int b, unsigned int c); -pixman_bool_t pixman_multiply_overflows_int (unsigned int a, unsigned int b); -pixman_bool_t pixman_addition_overflows_int (unsigned int a, unsigned int b); - -#if DEBUG - -#define return_if_fail(expr) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf(stderr, "In %s: %s failed\n", FUNC, #expr); \ - return; \ - } \ - } \ - while (0) - -#define return_val_if_fail(expr, retval) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf(stderr, "In %s: %s failed\n", FUNC, #expr); \ - return (retval); \ - } \ - } \ - while (0) - -#else - -#define return_if_fail(expr) \ - do \ - { \ - if (!(expr)) \ - return; \ - } \ - while (0) - -#define return_val_if_fail(expr, retval) \ - do \ - { \ - if (!(expr)) \ - return (retval); \ - } \ - while (0) - -#endif - -typedef struct image_common image_common_t; -typedef struct source_image source_image_t; -typedef struct solid_fill solid_fill_t; -typedef struct gradient gradient_t; -typedef struct linear_gradient linear_gradient_t; -typedef struct horizontal_gradient horizontal_gradient_t; -typedef struct vertical_gradient vertical_gradient_t; -typedef struct conical_gradient conical_gradient_t; -typedef struct radial_gradient radial_gradient_t; -typedef struct bits_image bits_image_t; -typedef struct circle circle_t; -typedef struct point point_t; - -/* FIXME - the types and structures below should be give proper names - */ - -#define FASTCALL -typedef FASTCALL void (*CombineMaskU) (uint32_t *src, const uint32_t *mask, int width); -typedef FASTCALL void (*CombineFuncU) (uint32_t *dest, const uint32_t *src, int width); -typedef FASTCALL void (*CombineFuncC) (uint32_t *dest, uint32_t *src, uint32_t *mask, int width); -typedef FASTCALL void (*fetchProc)(bits_image_t *pict, int x, int y, int width, - uint32_t *buffer); -typedef FASTCALL uint32_t (*fetchPixelProc)(bits_image_t *pict, int offset, int line); -typedef FASTCALL void (*storeProc)(pixman_image_t *, uint32_t *bits, - const uint32_t *values, int x, int width, - const pixman_indexed_t *); - -typedef struct _FbComposeData { - uint8_t op; - pixman_image_t *src; - pixman_image_t *mask; - pixman_image_t *dest; - int16_t xSrc; - int16_t ySrc; - int16_t xMask; - int16_t yMask; - int16_t xDest; - int16_t yDest; - uint16_t width; - uint16_t height; -} FbComposeData; - -typedef struct _FbComposeFunctions { - CombineFuncU *combineU; - CombineFuncC *combineC; - CombineMaskU combineMaskU; -} FbComposeFunctions; - -extern FbComposeFunctions pixman_composeFunctions; - -void pixman_composite_rect_general_accessors (const FbComposeData *data, - uint32_t *scanline_buffer); -void pixman_composite_rect_general (const FbComposeData *data, - uint32_t *scanline_buffer); - -fetchProc pixman_fetchProcForPicture (bits_image_t *); -fetchPixelProc pixman_fetchPixelProcForPicture (bits_image_t *); -storeProc pixman_storeProcForPicture (bits_image_t *); -fetchProc pixman_fetchProcForPicture_accessors (bits_image_t *); -fetchPixelProc pixman_fetchPixelProcForPicture_accessors (bits_image_t *); -storeProc pixman_storeProcForPicture_accessors (bits_image_t *); - -void pixmanFetchSourcePict(source_image_t *, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, uint32_t maskBits); - -void fbFetchTransformed(bits_image_t *, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, uint32_t maskBits); -void fbStoreExternalAlpha(bits_image_t *, int x, int y, int width, - uint32_t *buffer); -void fbFetchExternalAlpha(bits_image_t *, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, uint32_t maskBits); - -void fbFetchTransformed_accessors(bits_image_t *, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, - uint32_t maskBits); -void fbStoreExternalAlpha_accessors(bits_image_t *, int x, int y, int width, - uint32_t *buffer); -void fbFetchExternalAlpha_accessors(bits_image_t *, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, - uint32_t maskBits); - -/* end */ - -typedef enum -{ - BITS, - LINEAR, - CONICAL, - RADIAL, - SOLID -} image_type_t; - -#define IS_SOURCE_IMAGE(img) (((image_common_t *)img)->type > BITS) - -typedef enum -{ - SOURCE_IMAGE_CLASS_UNKNOWN, - SOURCE_IMAGE_CLASS_HORIZONTAL, - SOURCE_IMAGE_CLASS_VERTICAL -} source_pict_class_t; - -struct point -{ - int16_t x, y; -}; - -struct image_common -{ - image_type_t type; - int32_t ref_count; - pixman_region16_t full_region; - pixman_region16_t clip_region; - pixman_region16_t *src_clip; - pixman_bool_t has_client_clip; - pixman_transform_t *transform; - pixman_repeat_t repeat; - pixman_filter_t filter; - pixman_fixed_t *filter_params; - int n_filter_params; - bits_image_t *alpha_map; - point_t alpha_origin; - pixman_bool_t component_alpha; - pixman_read_memory_func_t read_func; - pixman_write_memory_func_t write_func; -}; - -struct source_image -{ - image_common_t common; - source_pict_class_t class; -}; - -struct solid_fill -{ - source_image_t common; - uint32_t color; /* FIXME: shouldn't this be a pixman_color_t? */ -}; - -struct gradient -{ - source_image_t common; - int n_stops; - pixman_gradient_stop_t * stops; - int stop_range; - uint32_t * color_table; - int color_table_size; -}; - -struct linear_gradient -{ - gradient_t common; - pixman_point_fixed_t p1; - pixman_point_fixed_t p2; -}; - -struct circle -{ - pixman_fixed_t x; - pixman_fixed_t y; - pixman_fixed_t radius; -}; - -struct radial_gradient -{ - gradient_t common; - - circle_t c1; - circle_t c2; - double cdx; - double cdy; - double dr; - double A; -}; - -struct conical_gradient -{ - gradient_t common; - pixman_point_fixed_t center; - pixman_fixed_t angle; -}; - -struct bits_image -{ - image_common_t common; - pixman_format_code_t format; - const pixman_indexed_t *indexed; - int width; - int height; - uint32_t * bits; - uint32_t * free_me; - int rowstride; /* in number of uint32_t's */ -}; - -union pixman_image -{ - image_type_t type; - image_common_t common; - bits_image_t bits; - gradient_t gradient; - linear_gradient_t linear; - conical_gradient_t conical; - radial_gradient_t radial; - solid_fill_t solid; -}; - - -extern CombineFuncU pixman_fbCombineFuncU[]; -extern CombineFuncC pixman_fbCombineFuncC[]; -FASTCALL void pixman_fbCombineMaskU (uint32_t *src, const uint32_t *mask, int width); - -#define LOG2_BITMAP_PAD 5 -#define FB_STIP_SHIFT LOG2_BITMAP_PAD -#define FB_STIP_UNIT (1 << FB_STIP_SHIFT) -#define FB_STIP_MASK (FB_STIP_UNIT - 1) -#define FB_STIP_ALLONES ((uint32_t) -1) - -#if BITMAP_BIT_ORDER == LSBFirst -#define FbScrLeft(x,n) ((x) >> (n)) -#define FbScrRight(x,n) ((x) << (n)) -#define FbLeftStipBits(x,n) ((x) & ((((uint32_t) 1) << (n)) - 1)) -#else -#define FbScrLeft(x,n) ((x) << (n)) -#define FbScrRight(x,n) ((x) >> (n)) -#define FbLeftStipBits(x,n) ((x) >> (FB_STIP_UNIT - (n))) -#endif - -#define FbStipLeft(x,n) FbScrLeft(x,n) -#define FbStipRight(x,n) FbScrRight(x,n) -#define FbStipMask(x,w) (FbStipRight(FB_STIP_ALLONES,(x) & FB_STIP_MASK) & \ - FbStipLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - ((x)+(w))) & FB_STIP_MASK)) - -#define FbLeftMask(x) ( ((x) & FB_MASK) ? \ - FbScrRight(FB_ALLONES,(x) & FB_MASK) : 0) -#define FbRightMask(x) ( ((FB_UNIT - (x)) & FB_MASK) ? \ - FbScrLeft(FB_ALLONES,(FB_UNIT - (x)) & FB_MASK) : 0) - -#define FbMaskBits(x,w,l,n,r) { \ - n = (w); \ - r = FbRightMask((x)+n); \ - l = FbLeftMask(x); \ - if (l) { \ - n -= FB_UNIT - ((x) & FB_MASK); \ - if (n < 0) { \ - n = 0; \ - l &= r; \ - r = 0; \ - } \ - } \ - n >>= FB_SHIFT; \ - } - -#if IMAGE_BYTE_ORDER == MSBFirst -#define Fetch24(img, a) ((unsigned long) (a) & 1 ? \ - ((READ(img, a) << 16) | READ(img, (uint16_t *) ((a)+1))) : \ - ((READ(img, (uint16_t *) (a)) << 8) | READ(img, (a)+2))) -#define Store24(img,a,v) ((unsigned long) (a) & 1 ? \ - (WRITE(img, a, (uint8_t) ((v) >> 16)), \ - WRITE(img, (uint16_t *) ((a)+1), (uint16_t) (v))) : \ - (WRITE(img, (uint16_t *) (a), (uint16_t) ((v) >> 8)), \ - WRITE(img, (a)+2, (uint8_t) (v)))) -#else -#define Fetch24(img,a) ((unsigned long) (a) & 1 ? \ - (READ(img, a) | (READ(img, (uint16_t *) ((a)+1)) << 8)) : \ - (READ(img, (uint16_t *) (a)) | (READ(img, (a)+2) << 16))) -#define Store24(img,a,v) ((unsigned long) (a) & 1 ? \ - (WRITE(img, a, (uint8_t) (v)), \ - WRITE(img, (uint16_t *) ((a)+1), (uint16_t) ((v) >> 8))) : \ - (WRITE(img, (uint16_t *) (a), (uint16_t) (v)), \ - WRITE(img, (a)+2, (uint8_t) ((v) >> 16)))) -#endif - -#define Alpha(x) ((x) >> 24) -#define Red(x) (((x) >> 16) & 0xff) -#define Green(x) (((x) >> 8) & 0xff) -#define Blue(x) ((x) & 0xff) - -#define CvtR8G8B8toY15(s) (((((s) >> 16) & 0xff) * 153 + \ - (((s) >> 8) & 0xff) * 301 + \ - (((s) ) & 0xff) * 58) >> 2) -#define miCvtR8G8B8to15(s) ((((s) >> 3) & 0x001f) | \ - (((s) >> 6) & 0x03e0) | \ - (((s) >> 9) & 0x7c00)) -#define miIndexToEnt15(mif,rgb15) ((mif)->ent[rgb15]) -#define miIndexToEnt24(mif,rgb24) miIndexToEnt15(mif,miCvtR8G8B8to15(rgb24)) - -#define miIndexToEntY24(mif,rgb24) ((mif)->ent[CvtR8G8B8toY15(rgb24)]) - - -#define FbIntMult(a,b,t) ( (t) = (a) * (b) + 0x80, ( ( ( (t)>>8 ) + (t) )>>8 ) ) -#define FbIntDiv(a,b) (((uint16_t) (a) * 255) / (b)) - -#define FbGet8(v,i) ((uint16_t) (uint8_t) ((v) >> i)) - - -#define cvt8888to0565(s) ((((s) >> 3) & 0x001f) | \ - (((s) >> 5) & 0x07e0) | \ - (((s) >> 8) & 0xf800)) -#define cvt0565to0888(s) (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \ - ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \ - ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000))) - -/* - * There are two ways of handling alpha -- either as a single unified value or - * a separate value for each component, hence each macro must have two - * versions. The unified alpha version has a 'U' at the end of the name, - * the component version has a 'C'. Similarly, functions which deal with - * this difference will have two versions using the same convention. - */ - -#define FbOverU(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),(a),(t)) + FbGet8(x,i), \ - (uint32_t) ((uint8_t) ((t) | (0 - ((t) >> 8)))) << (i)) - -#define FbOverC(x,y,i,a,t) ((t) = FbIntMult(FbGet8(y,i),FbGet8(a,i),(t)) + FbGet8(x,i), \ - (uint32_t) ((uint8_t) ((t) | (0 - ((t) >> 8)))) << (i)) - -#define FbInU(x,i,a,t) ((uint32_t) FbIntMult(FbGet8(x,i),(a),(t)) << (i)) - -#define FbInC(x,i,a,t) ((uint32_t) FbIntMult(FbGet8(x,i),FbGet8(a,i),(t)) << (i)) - -#define FbGen(x,y,i,ax,ay,t,u,v) ((t) = (FbIntMult(FbGet8(y,i),ay,(u)) + \ - FbIntMult(FbGet8(x,i),ax,(v))), \ - (uint32_t) ((uint8_t) ((t) | \ - (0 - ((t) >> 8)))) << (i)) - -#define FbAdd(x,y,i,t) ((t) = FbGet8(x,i) + FbGet8(y,i), \ - (uint32_t) ((uint8_t) ((t) | (0 - ((t) >> 8)))) << (i)) - - -/* - The methods below use some tricks to be able to do two color - components at the same time. -*/ - -/* - x_c = (x_c * a) / 255 -*/ -#define FbByteMul(x, a) do { \ - uint32_t t = ((x & 0xff00ff) * a) + 0x800080; \ - t = (t + ((t >> 8) & 0xff00ff)) >> 8; \ - t &= 0xff00ff; \ - \ - x = (((x >> 8) & 0xff00ff) * a) + 0x800080; \ - x = (x + ((x >> 8) & 0xff00ff)); \ - x &= 0xff00ff00; \ - x += t; \ - } while (0) - -/* - x_c = (x_c * a) / 255 + y -*/ -#define FbByteMulAdd(x, a, y) do { \ - uint32_t t = ((x & 0xff00ff) * a) + 0x800080; \ - t = (t + ((t >> 8) & 0xff00ff)) >> 8; \ - t &= 0xff00ff; \ - t += y & 0xff00ff; \ - t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ - t &= 0xff00ff; \ - \ - x = (((x >> 8) & 0xff00ff) * a) + 0x800080; \ - x = (x + ((x >> 8) & 0xff00ff)) >> 8; \ - x &= 0xff00ff; \ - x += (y >> 8) & 0xff00ff; \ - x |= 0x1000100 - ((x >> 8) & 0xff00ff); \ - x &= 0xff00ff; \ - x <<= 8; \ - x += t; \ - } while (0) - -/* - x_c = (x_c * a + y_c * b) / 255 -*/ -#define FbByteAddMul(x, a, y, b) do { \ - uint32_t t; \ - uint32_t r = (x >> 24) * a + (y >> 24) * b + 0x80; \ - r += (r >> 8); \ - r >>= 8; \ - \ - t = (x & 0xff00) * a + (y & 0xff00) * b; \ - t += (t >> 8) + 0x8000; \ - t >>= 16; \ - \ - t |= r << 16; \ - t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ - t &= 0xff00ff; \ - t <<= 8; \ - \ - r = ((x >> 16) & 0xff) * a + ((y >> 16) & 0xff) * b + 0x80; \ - r += (r >> 8); \ - r >>= 8; \ - \ - x = (x & 0xff) * a + (y & 0xff) * b + 0x80; \ - x += (x >> 8); \ - x >>= 8; \ - x |= r << 16; \ - x |= 0x1000100 - ((x >> 8) & 0xff00ff); \ - x &= 0xff00ff; \ - x |= t; \ - } while (0) - -/* - x_c = (x_c * a + y_c *b) / 256 -*/ -#define FbByteAddMul_256(x, a, y, b) do { \ - uint32_t t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; \ - t >>= 8; \ - t &= 0xff00ff; \ - \ - x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; \ - x &= 0xff00ff00; \ - x += t; \ - } while (0) - -/* - x_c = (x_c * a_c) / 255 -*/ -#define FbByteMulC(x, a) do { \ - uint32_t t; \ - uint32_t r = (x & 0xff) * (a & 0xff); \ - r |= (x & 0xff0000) * ((a >> 16) & 0xff); \ - r += 0x800080; \ - r = (r + ((r >> 8) & 0xff00ff)) >> 8; \ - r &= 0xff00ff; \ - \ - x >>= 8; \ - t = (x & 0xff) * ((a >> 8) & 0xff); \ - t |= (x & 0xff0000) * (a >> 24); \ - t += 0x800080; \ - t = t + ((t >> 8) & 0xff00ff); \ - x = r | (t & 0xff00ff00); \ - \ - } while (0) - -/* - x_c = (x_c * a) / 255 + y -*/ -#define FbByteMulAddC(x, a, y) do { \ - uint32_t t; \ - uint32_t r = (x & 0xff) * (a & 0xff); \ - r |= (x & 0xff0000) * ((a >> 16) & 0xff); \ - r += 0x800080; \ - r = (r + ((r >> 8) & 0xff00ff)) >> 8; \ - r &= 0xff00ff; \ - r += y & 0xff00ff; \ - r |= 0x1000100 - ((r >> 8) & 0xff00ff); \ - r &= 0xff00ff; \ - \ - x >>= 8; \ - t = (x & 0xff) * ((a >> 8) & 0xff); \ - t |= (x & 0xff0000) * (a >> 24); \ - t += 0x800080; \ - t = (t + ((t >> 8) & 0xff00ff)) >> 8; \ - t &= 0xff00ff; \ - t += (y >> 8) & 0xff00ff; \ - t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ - t &= 0xff00ff; \ - x = r | (t << 8); \ - } while (0) - -/* - x_c = (x_c * a_c + y_c * b) / 255 -*/ -#define FbByteAddMulC(x, a, y, b) do { \ - uint32_t t; \ - uint32_t r = (x >> 24) * (a >> 24) + (y >> 24) * b; \ - r += (r >> 8) + 0x80; \ - r >>= 8; \ - \ - t = (x & 0xff00) * ((a >> 8) & 0xff) + (y & 0xff00) * b; \ - t += (t >> 8) + 0x8000; \ - t >>= 16; \ - \ - t |= r << 16; \ - t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ - t &= 0xff00ff; \ - t <<= 8; \ - \ - r = ((x >> 16) & 0xff) * ((a >> 16) & 0xff) + ((y >> 16) & 0xff) * b + 0x80; \ - r += (r >> 8); \ - r >>= 8; \ - \ - x = (x & 0xff) * (a & 0xff) + (y & 0xff) * b + 0x80; \ - x += (x >> 8); \ - x >>= 8; \ - x |= r << 16; \ - x |= 0x1000100 - ((x >> 8) & 0xff00ff); \ - x &= 0xff00ff; \ - x |= t; \ - } while (0) - -/* - x_c = min(x_c + y_c, 255) -*/ -#define FbByteAdd(x, y) do { \ - uint32_t t; \ - uint32_t r = (x & 0xff00ff) + (y & 0xff00ff); \ - r |= 0x1000100 - ((r >> 8) & 0xff00ff); \ - r &= 0xff00ff; \ - \ - t = ((x >> 8) & 0xff00ff) + ((y >> 8) & 0xff00ff); \ - t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ - r |= (t & 0xff00ff) << 8; \ - x = r; \ - } while (0) - -#define div_255(x) (((x) + 0x80 + (((x) + 0x80) >> 8)) >> 8) - -#define MOD(a,b) ((a) < 0 ? ((b) - ((-(a) - 1) % (b))) - 1 : (a) % (b)) - -#define DIV(a,b) ((((a) < 0) == ((b) < 0)) ? (a) / (b) : \ - ((a) - (b) + 1 - (((b) < 0) << 1)) / (b)) - -#define CLIP(a,b,c) ((a) < (b) ? (b) : ((a) > (c) ? (c) : (a))) - -#if 0 -/* FIXME: the MOD macro above is equivalent, but faster I think */ -#define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b)) -#endif - -/* FIXME: the (void)__read_func hides lots of warnings (which is what they - * are supposed to do), but some of them are real. For example the one - * where Fetch4 doesn't have a READ - */ - -#if 0 -/* Framebuffer access support macros */ -#define ACCESS_MEM(code) \ - do { \ - const image_common_t *const com__ = \ - (image_common_t *)image; \ - \ - if (!com__->read_func && !com__->write_func) \ - { \ - const int do_access__ = 0; \ - const pixman_read_memory_func_t read_func__ = NULL; \ - const pixman_write_memory_func_t write_func__ = NULL; \ - (void)read_func__; \ - (void)write_func__; \ - (void)do_access__; \ - \ - {code} \ - } \ - else \ - { \ - const int do_access__ = 1; \ - const pixman_read_memory_func_t read_func__ = \ - com__->read_func; \ - const pixman_write_memory_func_t write_func__ = \ - com__->write_func; \ - (void)read_func__; \ - (void)write_func__; \ - (void)do_access__; \ - \ - {code} \ - } \ - } while (0) -#endif - -#ifdef PIXMAN_FB_ACCESSORS - -#define READ(img, ptr) \ - ((img)->common.read_func ((ptr), sizeof(*(ptr)))) -#define WRITE(img, ptr,val) \ - ((img)->common.write_func ((ptr), (val), sizeof (*(ptr)))) - -#define MEMCPY_WRAPPED(img, dst, src, size) \ - do { \ - size_t _i; \ - uint8_t *_dst = (uint8_t*)(dst), *_src = (uint8_t*)(src); \ - for(_i = 0; _i < size; _i++) { \ - WRITE((img), _dst +_i, READ((img), _src + _i)); \ - } \ - } while (0) - -#define MEMSET_WRAPPED(img, dst, val, size) \ - do { \ - size_t _i; \ - uint8_t *_dst = (uint8_t*)(dst); \ - for(_i = 0; _i < (size_t) size; _i++) { \ - WRITE((img), _dst +_i, (val)); \ - } \ - } while (0) - -#else - -#define READ(img, ptr) (*(ptr)) -#define WRITE(img, ptr, val) (*(ptr) = (val)) -#define MEMCPY_WRAPPED(img, dst, src, size) \ - memcpy(dst, src, size) -#define MEMSET_WRAPPED(img, dst, val, size) \ - memset(dst, val, size) - -#endif - -#define fbComposeGetSolid(img, res, fmt) \ - do \ - { \ - pixman_format_code_t format__; \ - if (img->type == SOLID) \ - { \ - format__ = PIXMAN_a8r8g8b8; \ - (res) = img->solid.color; \ - } \ - else \ - { \ - uint32_t *bits__ = (img)->bits.bits; \ - format__ = (img)->bits.format; \ - \ - switch (PIXMAN_FORMAT_BPP((img)->bits.format)) \ - { \ - case 32: \ - (res) = READ(img, (uint32_t *)bits__); \ - break; \ - case 24: \ - (res) = Fetch24(img, (uint8_t *) bits__); \ - break; \ - case 16: \ - (res) = READ(img, (uint16_t *) bits__); \ - (res) = cvt0565to0888(res); \ - break; \ - case 8: \ - (res) = READ(img, (uint8_t *) bits__); \ - (res) = (res) << 24; \ - break; \ - case 1: \ - (res) = READ(img, (uint32_t *) bits__); \ - (res) = FbLeftStipBits((res),1) ? 0xff000000 : 0x00000000; \ - break; \ - default: \ - return; \ - } \ - /* manage missing src alpha */ \ - if (!PIXMAN_FORMAT_A((img)->bits.format)) \ - (res) |= 0xff000000; \ - } \ - \ - /* If necessary, convert RGB <--> BGR. */ \ - if (PIXMAN_FORMAT_TYPE (format__) != PIXMAN_FORMAT_TYPE(fmt)) \ - { \ - (res) = ((((res) & 0xff000000) >> 0) | \ - (((res) & 0x00ff0000) >> 16) | \ - (((res) & 0x0000ff00) >> 0) | \ - (((res) & 0x000000ff) << 16)); \ - } \ - } \ - while (0) - -#define fbComposeGetStart(pict,x,y,type,out_stride,line,mul) do { \ - uint32_t *__bits__; \ - int __stride__; \ - int __bpp__; \ - \ - __bits__ = pict->bits.bits; \ - __stride__ = pict->bits.rowstride; \ - __bpp__ = PIXMAN_FORMAT_BPP(pict->bits.format); \ - (out_stride) = __stride__ * (int) sizeof (uint32_t) / (int) sizeof (type); \ - (line) = ((type *) __bits__) + \ - (out_stride) * (y) + (mul) * (x); \ - } while (0) - - -/* - * Edges - */ - -#define MAX_ALPHA(n) ((1 << (n)) - 1) -#define N_Y_FRAC(n) ((n) == 1 ? 1 : (1 << ((n)/2)) - 1) -#define N_X_FRAC(n) ((n) == 1 ? 1 : (1 << ((n)/2)) + 1) - -#define STEP_Y_SMALL(n) (pixman_fixed_1 / N_Y_FRAC(n)) -#define STEP_Y_BIG(n) (pixman_fixed_1 - (N_Y_FRAC(n) - 1) * STEP_Y_SMALL(n)) - -#define Y_FRAC_FIRST(n) (STEP_Y_SMALL(n) / 2) -#define Y_FRAC_LAST(n) (Y_FRAC_FIRST(n) + (N_Y_FRAC(n) - 1) * STEP_Y_SMALL(n)) - -#define STEP_X_SMALL(n) (pixman_fixed_1 / N_X_FRAC(n)) -#define STEP_X_BIG(n) (pixman_fixed_1 - (N_X_FRAC(n) - 1) * STEP_X_SMALL(n)) - -#define X_FRAC_FIRST(n) (STEP_X_SMALL(n) / 2) -#define X_FRAC_LAST(n) (X_FRAC_FIRST(n) + (N_X_FRAC(n) - 1) * STEP_X_SMALL(n)) - -#define RenderSamplesX(x,n) ((n) == 1 ? 0 : (pixman_fixed_frac (x) + X_FRAC_FIRST(n)) / STEP_X_SMALL(n)) - -/* - * Step across a small sample grid gap - */ -#define RenderEdgeStepSmall(edge) { \ - edge->x += edge->stepx_small; \ - edge->e += edge->dx_small; \ - if (edge->e > 0) \ - { \ - edge->e -= edge->dy; \ - edge->x += edge->signdx; \ - } \ -} - -/* - * Step across a large sample grid gap - */ -#define RenderEdgeStepBig(edge) { \ - edge->x += edge->stepx_big; \ - edge->e += edge->dx_big; \ - if (edge->e > 0) \ - { \ - edge->e -= edge->dy; \ - edge->x += edge->signdx; \ - } \ -} - -void -pixman_rasterize_edges_accessors (pixman_image_t *image, - pixman_edge_t *l, - pixman_edge_t *r, - pixman_fixed_t t, - pixman_fixed_t b); - - -#ifdef PIXMAN_TIMING - -/* Timing */ -static inline uint64_t -oil_profile_stamp_rdtsc (void) -{ - uint64_t ts; - __asm__ __volatile__("rdtsc\n" : "=A" (ts)); - return ts; -} -#define OIL_STAMP oil_profile_stamp_rdtsc - -typedef struct PixmanTimer PixmanTimer; - -struct PixmanTimer -{ - int initialized; - const char *name; - uint64_t n_times; - uint64_t total; - PixmanTimer *next; -}; - -extern int timer_defined; -void pixman_timer_register (PixmanTimer *timer); - -#define TIMER_BEGIN(tname) \ - { \ - static PixmanTimer timer##tname; \ - uint64_t begin##tname; \ - \ - if (!timer##tname.initialized) \ - { \ - timer##tname.initialized = 1; \ - timer##tname.name = #tname; \ - pixman_timer_register (&timer##tname); \ - } \ - \ - timer##tname.n_times++; \ - begin##tname = OIL_STAMP(); - -#define TIMER_END(tname) \ - timer##tname.total += OIL_STAMP() - begin##tname; \ - } - -#endif /* PIXMAN_TIMING */ - -#endif /* PIXMAN_PRIVATE_H */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-region.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-region.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-region.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-region.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2551 +0,0 @@ -/*********************************************************** - -Copyright 1987, 1988, 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -Copyright 1987, 1988, 1989 by -Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include -#include - -#include "pixman-private.h" - -typedef struct pixman_region16_point { - int x, y; -} pixman_region16_point_t; - -#define PIXREGION_NIL(reg) ((reg)->data && !(reg)->data->numRects) -/* not a region */ -#define PIXREGION_NAR(reg) ((reg)->data == pixman_brokendata) -#define PIXREGION_NUM_RECTS(reg) ((reg)->data ? (reg)->data->numRects : 1) -#define PIXREGION_SIZE(reg) ((reg)->data ? (reg)->data->size : 0) -#define PIXREGION_RECTS(reg) ((reg)->data ? (pixman_box16_t *)((reg)->data + 1) \ - : &(reg)->extents) -#define PIXREGION_BOXPTR(reg) ((pixman_box16_t *)((reg)->data + 1)) -#define PIXREGION_BOX(reg,i) (&PIXREGION_BOXPTR(reg)[i]) -#define PIXREGION_TOP(reg) PIXREGION_BOX(reg, (reg)->data->numRects) -#define PIXREGION_END(reg) PIXREGION_BOX(reg, (reg)->data->numRects - 1) - - -#undef assert -#ifdef DEBUG_PIXREGION -#define assert(expr) {if (!(expr)) \ - FatalError("Assertion failed file %s, line %d: expr\n", \ - __FILE__, __LINE__); } -#else -#define assert(expr) -#endif - -#define good(reg) assert(pixman_region_selfcheck(reg)) - -#undef MIN -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#undef MAX -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - -static const pixman_box16_t _pixman_region_emptyBox = {0, 0, 0, 0}; -static const pixman_region16_data_t _pixman_region_emptyData = {0, 0}; -static const pixman_region16_data_t _pixman_brokendata = {0, 0}; - -static pixman_box16_t *pixman_region_emptyBox = (pixman_box16_t *)&_pixman_region_emptyBox; -static pixman_region16_data_t *pixman_region_emptyData = (pixman_region16_data_t *)&_pixman_region_emptyData; -static pixman_region16_data_t *pixman_brokendata = (pixman_region16_data_t *)&_pixman_brokendata; - -/* This function exists only to make it possible to preserve the X ABI - it should - * go away at first opportunity. - * - * The problem is that the X ABI exports the three structs and has used - * them through macros. So the X server calls this function with - * the addresses of those structs which makes the existing code continue to - * work. - */ -void -pixman_region_set_static_pointers (pixman_box16_t *empty_box, - pixman_region16_data_t *empty_data, - pixman_region16_data_t *broken_data) -{ - pixman_region_emptyBox = empty_box; - pixman_region_emptyData = empty_data; - pixman_brokendata = broken_data; -} - -static pixman_bool_t -pixman_break (pixman_region16_t *pReg); - -/* - * The functions in this file implement the Region abstraction used extensively - * throughout the X11 sample server. A Region is simply a set of disjoint - * (non-overlapping) rectangles, plus an "extent" rectangle which is the - * smallest single rectangle that contains all the non-overlapping rectangles. - * - * A Region is implemented as a "y-x-banded" array of rectangles. This array - * imposes two degrees of order. First, all rectangles are sorted by top side - * y coordinate first (y1), and then by left side x coordinate (x1). - * - * Furthermore, the rectangles are grouped into "bands". Each rectangle in a - * band has the same top y coordinate (y1), and each has the same bottom y - * coordinate (y2). Thus all rectangles in a band differ only in their left - * and right side (x1 and x2). Bands are implicit in the array of rectangles: - * there is no separate list of band start pointers. - * - * The y-x band representation does not minimize rectangles. In particular, - * if a rectangle vertically crosses a band (the rectangle has scanlines in - * the y1 to y2 area spanned by the band), then the rectangle may be broken - * down into two or more smaller rectangles stacked one atop the other. - * - * ----------- ----------- - * | | | | band 0 - * | | -------- ----------- -------- - * | | | | in y-x banded | | | | band 1 - * | | | | form is | | | | - * ----------- | | ----------- -------- - * | | | | band 2 - * -------- -------- - * - * An added constraint on the rectangles is that they must cover as much - * horizontal area as possible: no two rectangles within a band are allowed - * to touch. - * - * Whenever possible, bands will be merged together to cover a greater vertical - * distance (and thus reduce the number of rectangles). Two bands can be merged - * only if the bottom of one touches the top of the other and they have - * rectangles in the same places (of the same width, of course). - * - * Adam de Boor wrote most of the original region code. Joel McCormack - * substantially modified or rewrote most of the core arithmetic routines, and - * added pixman_region_validate in order to support several speed improvements to - * pixman_region_validateTree. Bob Scheifler changed the representation to be more - * compact when empty or a single rectangle, and did a bunch of gratuitous - * reformatting. Carl Worth did further gratuitous reformatting while re-merging - * the server and client region code into libpixregion. - */ - -/* true iff two Boxes overlap */ -#define EXTENTCHECK(r1,r2) \ - (!( ((r1)->x2 <= (r2)->x1) || \ - ((r1)->x1 >= (r2)->x2) || \ - ((r1)->y2 <= (r2)->y1) || \ - ((r1)->y1 >= (r2)->y2) ) ) - -/* true iff (x,y) is in Box */ -#define INBOX(r,x,y) \ - ( ((r)->x2 > x) && \ - ((r)->x1 <= x) && \ - ((r)->y2 > y) && \ - ((r)->y1 <= y) ) - -/* true iff Box r1 contains Box r2 */ -#define SUBSUMES(r1,r2) \ - ( ((r1)->x1 <= (r2)->x1) && \ - ((r1)->x2 >= (r2)->x2) && \ - ((r1)->y1 <= (r2)->y1) && \ - ((r1)->y2 >= (r2)->y2) ) - -static size_t -PIXREGION_SZOF(size_t n) -{ - size_t size = n * sizeof(pixman_box16_t); - if (n > UINT32_MAX / sizeof(pixman_box16_t)) - return 0; - - if (sizeof(pixman_region16_data_t) > UINT32_MAX - size) - return 0; - - return size + sizeof(pixman_region16_data_t); -} - -static void * -allocData(size_t n) -{ - size_t sz = PIXREGION_SZOF(n); - if (!sz) - return NULL; - - return malloc(sz); -} - -#define freeData(reg) if ((reg)->data && (reg)->data->size) free((reg)->data) - -#define RECTALLOC_BAIL(pReg,n,bail) \ -if (!(pReg)->data || (((pReg)->data->numRects + (n)) > (pReg)->data->size)) \ - if (!pixman_rect_alloc(pReg, n)) { goto bail; } - -#define RECTALLOC(pReg,n) \ -if (!(pReg)->data || (((pReg)->data->numRects + (n)) > (pReg)->data->size)) \ - if (!pixman_rect_alloc(pReg, n)) { return FALSE; } - -#define ADDRECT(pNextRect,nx1,ny1,nx2,ny2) \ -{ \ - pNextRect->x1 = nx1; \ - pNextRect->y1 = ny1; \ - pNextRect->x2 = nx2; \ - pNextRect->y2 = ny2; \ - pNextRect++; \ -} - -#define NEWRECT(pReg,pNextRect,nx1,ny1,nx2,ny2) \ -{ \ - if (!(pReg)->data || ((pReg)->data->numRects == (pReg)->data->size))\ - { \ - if (!pixman_rect_alloc(pReg, 1)) \ - return FALSE; \ - pNextRect = PIXREGION_TOP(pReg); \ - } \ - ADDRECT(pNextRect,nx1,ny1,nx2,ny2); \ - pReg->data->numRects++; \ - assert(pReg->data->numRects<=pReg->data->size); \ -} - -#define DOWNSIZE(reg,numRects) \ - if (((numRects) < ((reg)->data->size >> 1)) && ((reg)->data->size > 50)) \ - { \ - pixman_region16_data_t * NewData; \ - size_t data_size = PIXREGION_SZOF(numRects); \ - if (!data_size) \ - NewData = NULL; \ - else \ - NewData = (pixman_region16_data_t *)realloc((reg)->data, data_size); \ - if (NewData) \ - { \ - NewData->size = (numRects); \ - (reg)->data = NewData; \ - } \ - } - -pixman_bool_t -pixman_region_equal(reg1, reg2) - pixman_region16_t * reg1; - pixman_region16_t * reg2; -{ - int i; - pixman_box16_t *rects1; - pixman_box16_t *rects2; - - if (reg1->extents.x1 != reg2->extents.x1) return FALSE; - if (reg1->extents.x2 != reg2->extents.x2) return FALSE; - if (reg1->extents.y1 != reg2->extents.y1) return FALSE; - if (reg1->extents.y2 != reg2->extents.y2) return FALSE; - if (PIXREGION_NUM_RECTS(reg1) != PIXREGION_NUM_RECTS(reg2)) return FALSE; - - rects1 = PIXREGION_RECTS(reg1); - rects2 = PIXREGION_RECTS(reg2); - for (i = 0; i != PIXREGION_NUM_RECTS(reg1); i++) { - if (rects1[i].x1 != rects2[i].x1) return FALSE; - if (rects1[i].x2 != rects2[i].x2) return FALSE; - if (rects1[i].y1 != rects2[i].y1) return FALSE; - if (rects1[i].y2 != rects2[i].y2) return FALSE; - } - return TRUE; -} - -int -pixman_region16_print(rgn) - pixman_region16_t * rgn; -{ - int num, size; - int i; - pixman_box16_t * rects; - - num = PIXREGION_NUM_RECTS(rgn); - size = PIXREGION_SIZE(rgn); - rects = PIXREGION_RECTS(rgn); - fprintf(stderr, "num: %d size: %d\n", num, size); - fprintf(stderr, "extents: %d %d %d %d\n", - rgn->extents.x1, rgn->extents.y1, rgn->extents.x2, rgn->extents.y2); - for (i = 0; i < num; i++) - fprintf(stderr, "%d %d %d %d \n", - rects[i].x1, rects[i].y1, rects[i].x2, rects[i].y2); - fprintf(stderr, "\n"); - return(num); -} - - -void -pixman_region_init (pixman_region16_t *region) -{ - region->extents = *pixman_region_emptyBox; - region->data = pixman_region_emptyData; -} - -void -pixman_region_init_rect (pixman_region16_t *region, - int x, int y, unsigned int width, unsigned int height) -{ - region->extents.x1 = x; - region->extents.y1 = y; - region->extents.x2 = x + width; - region->extents.y2 = y + height; - region->data = NULL; -} - -void -pixman_region_init_with_extents (pixman_region16_t *region, pixman_box16_t *extents) -{ - region->extents = *extents; - region->data = NULL; -} - -void -pixman_region_fini (pixman_region16_t *region) -{ - good (region); - freeData (region); -} - -int -pixman_region_n_rects (pixman_region16_t *region) -{ - return PIXREGION_NUM_RECTS (region); -} - -pixman_box16_t * -pixman_region_rects (pixman_region16_t *region) -{ - return PIXREGION_RECTS (region); -} - -pixman_box16_t * -pixman_region_rectangles (pixman_region16_t *region, - int *n_rects) -{ - if (n_rects) - *n_rects = PIXREGION_NUM_RECTS (region); - - return PIXREGION_RECTS (region); -} - -static pixman_bool_t -pixman_break (pixman_region16_t *region) -{ - freeData (region); - region->extents = *pixman_region_emptyBox; - region->data = pixman_brokendata; - return FALSE; -} - -static pixman_bool_t -pixman_rect_alloc (pixman_region16_t * region, int n) -{ - pixman_region16_data_t *data; - - if (!region->data) - { - n++; - region->data = allocData(n); - if (!region->data) - return pixman_break (region); - region->data->numRects = 1; - *PIXREGION_BOXPTR(region) = region->extents; - } - else if (!region->data->size) - { - region->data = allocData(n); - if (!region->data) - return pixman_break (region); - region->data->numRects = 0; - } - else - { - size_t data_size; - if (n == 1) - { - n = region->data->numRects; - if (n > 500) /* XXX pick numbers out of a hat */ - n = 250; - } - n += region->data->numRects; - data_size = PIXREGION_SZOF(n); - if (!data_size) - data = NULL; - else - data = (pixman_region16_data_t *)realloc(region->data, PIXREGION_SZOF(n)); - if (!data) - return pixman_break (region); - region->data = data; - } - region->data->size = n; - return TRUE; -} - -pixman_bool_t -pixman_region_copy (pixman_region16_t *dst, pixman_region16_t *src) -{ - good(dst); - good(src); - if (dst == src) - return TRUE; - dst->extents = src->extents; - if (!src->data || !src->data->size) - { - freeData(dst); - dst->data = src->data; - return TRUE; - } - if (!dst->data || (dst->data->size < src->data->numRects)) - { - freeData(dst); - dst->data = allocData(src->data->numRects); - if (!dst->data) - return pixman_break (dst); - dst->data->size = src->data->numRects; - } - dst->data->numRects = src->data->numRects; - memmove((char *)PIXREGION_BOXPTR(dst),(char *)PIXREGION_BOXPTR(src), - dst->data->numRects * sizeof(pixman_box16_t)); - return TRUE; -} - -/*====================================================================== - * Generic Region Operator - *====================================================================*/ - -/*- - *----------------------------------------------------------------------- - * pixman_coalesce -- - * Attempt to merge the boxes in the current band with those in the - * previous one. We are guaranteed that the current band extends to - * the end of the rects array. Used only by pixman_op. - * - * Results: - * The new index for the previous band. - * - * Side Effects: - * If coalescing takes place: - * - rectangles in the previous band will have their y2 fields - * altered. - * - region->data->numRects will be decreased. - * - *----------------------------------------------------------------------- - */ -static inline int -pixman_coalesce ( - pixman_region16_t * region, /* Region to coalesce */ - int prevStart, /* Index of start of previous band */ - int curStart) /* Index of start of current band */ -{ - pixman_box16_t * pPrevBox; /* Current box in previous band */ - pixman_box16_t * pCurBox; /* Current box in current band */ - int numRects; /* Number rectangles in both bands */ - int y2; /* Bottom of current band */ - /* - * Figure out how many rectangles are in the band. - */ - numRects = curStart - prevStart; - assert(numRects == region->data->numRects - curStart); - - if (!numRects) return curStart; - - /* - * The bands may only be coalesced if the bottom of the previous - * matches the top scanline of the current. - */ - pPrevBox = PIXREGION_BOX(region, prevStart); - pCurBox = PIXREGION_BOX(region, curStart); - if (pPrevBox->y2 != pCurBox->y1) return curStart; - - /* - * Make sure the bands have boxes in the same places. This - * assumes that boxes have been added in such a way that they - * cover the most area possible. I.e. two boxes in a band must - * have some horizontal space between them. - */ - y2 = pCurBox->y2; - - do { - if ((pPrevBox->x1 != pCurBox->x1) || (pPrevBox->x2 != pCurBox->x2)) { - return (curStart); - } - pPrevBox++; - pCurBox++; - numRects--; - } while (numRects); - - /* - * The bands may be merged, so set the bottom y of each box - * in the previous band to the bottom y of the current band. - */ - numRects = curStart - prevStart; - region->data->numRects -= numRects; - do { - pPrevBox--; - pPrevBox->y2 = y2; - numRects--; - } while (numRects); - return prevStart; -} - -/* Quicky macro to avoid trivial reject procedure calls to pixman_coalesce */ - -#define Coalesce(newReg, prevBand, curBand) \ - if (curBand - prevBand == newReg->data->numRects - curBand) { \ - prevBand = pixman_coalesce(newReg, prevBand, curBand); \ - } else { \ - prevBand = curBand; \ - } - -/*- - *----------------------------------------------------------------------- - * pixman_region_appendNonO -- - * Handle a non-overlapping band for the union and subtract operations. - * Just adds the (top/bottom-clipped) rectangles into the region. - * Doesn't have to check for subsumption or anything. - * - * Results: - * None. - * - * Side Effects: - * region->data->numRects is incremented and the rectangles overwritten - * with the rectangles we're passed. - * - *----------------------------------------------------------------------- - */ - -static inline pixman_bool_t -pixman_region_appendNonO ( - pixman_region16_t * region, - pixman_box16_t * r, - pixman_box16_t * rEnd, - int y1, - int y2) -{ - pixman_box16_t * pNextRect; - int newRects; - - newRects = rEnd - r; - - assert(y1 < y2); - assert(newRects != 0); - - /* Make sure we have enough space for all rectangles to be added */ - RECTALLOC(region, newRects); - pNextRect = PIXREGION_TOP(region); - region->data->numRects += newRects; - do { - assert(r->x1 < r->x2); - ADDRECT(pNextRect, r->x1, y1, r->x2, y2); - r++; - } while (r != rEnd); - - return TRUE; -} - -#define FindBand(r, rBandEnd, rEnd, ry1) \ -{ \ - ry1 = r->y1; \ - rBandEnd = r+1; \ - while ((rBandEnd != rEnd) && (rBandEnd->y1 == ry1)) { \ - rBandEnd++; \ - } \ -} - -#define AppendRegions(newReg, r, rEnd) \ -{ \ - int newRects; \ - if ((newRects = rEnd - r)) { \ - RECTALLOC(newReg, newRects); \ - memmove((char *)PIXREGION_TOP(newReg),(char *)r, \ - newRects * sizeof(pixman_box16_t)); \ - newReg->data->numRects += newRects; \ - } \ -} - -/*- - *----------------------------------------------------------------------- - * pixman_op -- - * Apply an operation to two regions. Called by pixman_region_union, pixman_region_inverse, - * pixman_region_subtract, pixman_region_intersect.... Both regions MUST have at least one - * rectangle, and cannot be the same object. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * The new region is overwritten. - * pOverlap set to TRUE if overlapFunc ever returns TRUE. - * - * Notes: - * The idea behind this function is to view the two regions as sets. - * Together they cover a rectangle of area that this function divides - * into horizontal bands where points are covered only by one region - * or by both. For the first case, the nonOverlapFunc is called with - * each the band and the band's upper and lower extents. For the - * second, the overlapFunc is called to process the entire band. It - * is responsible for clipping the rectangles in the band, though - * this function provides the boundaries. - * At the end of each band, the new region is coalesced, if possible, - * to reduce the number of rectangles in the region. - * - *----------------------------------------------------------------------- - */ - -typedef pixman_bool_t (*OverlapProcPtr)( - pixman_region16_t *region, - pixman_box16_t *r1, - pixman_box16_t *r1End, - pixman_box16_t *r2, - pixman_box16_t *r2End, - short y1, - short y2, - int *pOverlap); - -static pixman_bool_t -pixman_op( - pixman_region16_t *newReg, /* Place to store result */ - pixman_region16_t * reg1, /* First region in operation */ - pixman_region16_t * reg2, /* 2d region in operation */ - OverlapProcPtr overlapFunc, /* Function to call for over- - * lapping bands */ - int appendNon1, /* Append non-overlapping bands */ - /* in region 1 ? */ - int appendNon2, /* Append non-overlapping bands */ - /* in region 2 ? */ - int *pOverlap) -{ - pixman_box16_t * r1; /* Pointer into first region */ - pixman_box16_t * r2; /* Pointer into 2d region */ - pixman_box16_t * r1End; /* End of 1st region */ - pixman_box16_t * r2End; /* End of 2d region */ - short ybot; /* Bottom of intersection */ - short ytop; /* Top of intersection */ - pixman_region16_data_t * oldData; /* Old data for newReg */ - int prevBand; /* Index of start of - * previous band in newReg */ - int curBand; /* Index of start of current - * band in newReg */ - pixman_box16_t * r1BandEnd; /* End of current band in r1 */ - pixman_box16_t * r2BandEnd; /* End of current band in r2 */ - short top; /* Top of non-overlapping band */ - short bot; /* Bottom of non-overlapping band*/ - int r1y1; /* Temps for r1->y1 and r2->y1 */ - int r2y1; - int newSize; - int numRects; - - /* - * Break any region computed from a broken region - */ - if (PIXREGION_NAR (reg1) || PIXREGION_NAR(reg2)) - return pixman_break (newReg); - - /* - * Initialization: - * set r1, r2, r1End and r2End appropriately, save the rectangles - * of the destination region until the end in case it's one of - * the two source regions, then mark the "new" region empty, allocating - * another array of rectangles for it to use. - */ - - r1 = PIXREGION_RECTS(reg1); - newSize = PIXREGION_NUM_RECTS(reg1); - r1End = r1 + newSize; - numRects = PIXREGION_NUM_RECTS(reg2); - r2 = PIXREGION_RECTS(reg2); - r2End = r2 + numRects; - assert(r1 != r1End); - assert(r2 != r2End); - - oldData = (pixman_region16_data_t *)NULL; - if (((newReg == reg1) && (newSize > 1)) || - ((newReg == reg2) && (numRects > 1))) - { - oldData = newReg->data; - newReg->data = pixman_region_emptyData; - } - /* guess at new size */ - if (numRects > newSize) - newSize = numRects; - newSize <<= 1; - if (!newReg->data) - newReg->data = pixman_region_emptyData; - else if (newReg->data->size) - newReg->data->numRects = 0; - if (newSize > newReg->data->size) { - if (!pixman_rect_alloc(newReg, newSize)) { - if (oldData) - free (oldData); - return FALSE; - } - } - - /* - * Initialize ybot. - * In the upcoming loop, ybot and ytop serve different functions depending - * on whether the band being handled is an overlapping or non-overlapping - * band. - * In the case of a non-overlapping band (only one of the regions - * has points in the band), ybot is the bottom of the most recent - * intersection and thus clips the top of the rectangles in that band. - * ytop is the top of the next intersection between the two regions and - * serves to clip the bottom of the rectangles in the current band. - * For an overlapping band (where the two regions intersect), ytop clips - * the top of the rectangles of both regions and ybot clips the bottoms. - */ - - ybot = MIN(r1->y1, r2->y1); - - /* - * prevBand serves to mark the start of the previous band so rectangles - * can be coalesced into larger rectangles. qv. pixman_coalesce, above. - * In the beginning, there is no previous band, so prevBand == curBand - * (curBand is set later on, of course, but the first band will always - * start at index 0). prevBand and curBand must be indices because of - * the possible expansion, and resultant moving, of the new region's - * array of rectangles. - */ - prevBand = 0; - - do { - /* - * This algorithm proceeds one source-band (as opposed to a - * destination band, which is determined by where the two regions - * intersect) at a time. r1BandEnd and r2BandEnd serve to mark the - * rectangle after the last one in the current band for their - * respective regions. - */ - assert(r1 != r1End); - assert(r2 != r2End); - - FindBand(r1, r1BandEnd, r1End, r1y1); - FindBand(r2, r2BandEnd, r2End, r2y1); - - /* - * First handle the band that doesn't intersect, if any. - * - * Note that attention is restricted to one band in the - * non-intersecting region at once, so if a region has n - * bands between the current position and the next place it overlaps - * the other, this entire loop will be passed through n times. - */ - if (r1y1 < r2y1) { - if (appendNon1) { - top = MAX(r1y1, ybot); - bot = MIN(r1->y2, r2y1); - if (top != bot) { - curBand = newReg->data->numRects; - pixman_region_appendNonO(newReg, r1, r1BandEnd, top, bot); - Coalesce(newReg, prevBand, curBand); - } - } - ytop = r2y1; - } else if (r2y1 < r1y1) { - if (appendNon2) { - top = MAX(r2y1, ybot); - bot = MIN(r2->y2, r1y1); - if (top != bot) { - curBand = newReg->data->numRects; - pixman_region_appendNonO(newReg, r2, r2BandEnd, top, bot); - Coalesce(newReg, prevBand, curBand); - } - } - ytop = r1y1; - } else { - ytop = r1y1; - } - - /* - * Now see if we've hit an intersecting band. The two bands only - * intersect if ybot > ytop - */ - ybot = MIN(r1->y2, r2->y2); - if (ybot > ytop) { - curBand = newReg->data->numRects; - (* overlapFunc)(newReg, r1, r1BandEnd, r2, r2BandEnd, ytop, ybot, - pOverlap); - Coalesce(newReg, prevBand, curBand); - } - - /* - * If we've finished with a band (y2 == ybot) we skip forward - * in the region to the next band. - */ - if (r1->y2 == ybot) r1 = r1BandEnd; - if (r2->y2 == ybot) r2 = r2BandEnd; - - } while (r1 != r1End && r2 != r2End); - - /* - * Deal with whichever region (if any) still has rectangles left. - * - * We only need to worry about banding and coalescing for the very first - * band left. After that, we can just group all remaining boxes, - * regardless of how many bands, into one final append to the list. - */ - - if ((r1 != r1End) && appendNon1) { - /* Do first nonOverlap1Func call, which may be able to coalesce */ - FindBand(r1, r1BandEnd, r1End, r1y1); - curBand = newReg->data->numRects; - pixman_region_appendNonO(newReg, r1, r1BandEnd, MAX(r1y1, ybot), r1->y2); - Coalesce(newReg, prevBand, curBand); - /* Just append the rest of the boxes */ - AppendRegions(newReg, r1BandEnd, r1End); - - } else if ((r2 != r2End) && appendNon2) { - /* Do first nonOverlap2Func call, which may be able to coalesce */ - FindBand(r2, r2BandEnd, r2End, r2y1); - curBand = newReg->data->numRects; - pixman_region_appendNonO(newReg, r2, r2BandEnd, MAX(r2y1, ybot), r2->y2); - Coalesce(newReg, prevBand, curBand); - /* Append rest of boxes */ - AppendRegions(newReg, r2BandEnd, r2End); - } - - if (oldData) - free(oldData); - - if (!(numRects = newReg->data->numRects)) - { - freeData(newReg); - newReg->data = pixman_region_emptyData; - } - else if (numRects == 1) - { - newReg->extents = *PIXREGION_BOXPTR(newReg); - freeData(newReg); - newReg->data = (pixman_region16_data_t *)NULL; - } - else - { - DOWNSIZE(newReg, numRects); - } - - return TRUE; -} - -/*- - *----------------------------------------------------------------------- - * pixman_set_extents -- - * Reset the extents of a region to what they should be. Called by - * pixman_region_subtract and pixman_region_intersect as they can't figure it out along the - * way or do so easily, as pixman_region_union can. - * - * Results: - * None. - * - * Side Effects: - * The region's 'extents' structure is overwritten. - * - *----------------------------------------------------------------------- - */ -static void -pixman_set_extents (pixman_region16_t *region) -{ - pixman_box16_t *box, *boxEnd; - - if (!region->data) - return; - if (!region->data->size) - { - region->extents.x2 = region->extents.x1; - region->extents.y2 = region->extents.y1; - return; - } - - box = PIXREGION_BOXPTR(region); - boxEnd = PIXREGION_END(region); - - /* - * Since box is the first rectangle in the region, it must have the - * smallest y1 and since boxEnd is the last rectangle in the region, - * it must have the largest y2, because of banding. Initialize x1 and - * x2 from box and boxEnd, resp., as good things to initialize them - * to... - */ - region->extents.x1 = box->x1; - region->extents.y1 = box->y1; - region->extents.x2 = boxEnd->x2; - region->extents.y2 = boxEnd->y2; - - assert(region->extents.y1 < region->extents.y2); - while (box <= boxEnd) { - if (box->x1 < region->extents.x1) - region->extents.x1 = box->x1; - if (box->x2 > region->extents.x2) - region->extents.x2 = box->x2; - box++; - }; - - assert(region->extents.x1 < region->extents.x2); -} - -/*====================================================================== - * Region Intersection - *====================================================================*/ -/*- - *----------------------------------------------------------------------- - * pixman_region_intersectO -- - * Handle an overlapping band for pixman_region_intersect. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * Rectangles may be added to the region. - * - *----------------------------------------------------------------------- - */ -/*ARGSUSED*/ -static pixman_bool_t -pixman_region_intersectO (pixman_region16_t *region, - pixman_box16_t *r1, - pixman_box16_t *r1End, - pixman_box16_t *r2, - pixman_box16_t *r2End, - short y1, - short y2, - int *pOverlap) -{ - int x1; - int x2; - pixman_box16_t * pNextRect; - - pNextRect = PIXREGION_TOP(region); - - assert(y1 < y2); - assert(r1 != r1End && r2 != r2End); - - do { - x1 = MAX(r1->x1, r2->x1); - x2 = MIN(r1->x2, r2->x2); - - /* - * If there's any overlap between the two rectangles, add that - * overlap to the new region. - */ - if (x1 < x2) - NEWRECT(region, pNextRect, x1, y1, x2, y2); - - /* - * Advance the pointer(s) with the leftmost right side, since the next - * rectangle on that list may still overlap the other region's - * current rectangle. - */ - if (r1->x2 == x2) { - r1++; - } - if (r2->x2 == x2) { - r2++; - } - } while ((r1 != r1End) && (r2 != r2End)); - - return TRUE; -} - -pixman_bool_t -pixman_region_intersect (pixman_region16_t * newReg, - pixman_region16_t * reg1, - pixman_region16_t * reg2) -{ - good(reg1); - good(reg2); - good(newReg); - /* check for trivial reject */ - if (PIXREGION_NIL(reg1) || PIXREGION_NIL(reg2) || - !EXTENTCHECK(®1->extents, ®2->extents)) - { - /* Covers about 20% of all cases */ - freeData(newReg); - newReg->extents.x2 = newReg->extents.x1; - newReg->extents.y2 = newReg->extents.y1; - if (PIXREGION_NAR(reg1) || PIXREGION_NAR(reg2)) - { - newReg->data = pixman_brokendata; - return FALSE; - } - else - newReg->data = pixman_region_emptyData; - } - else if (!reg1->data && !reg2->data) - { - /* Covers about 80% of cases that aren't trivially rejected */ - newReg->extents.x1 = MAX(reg1->extents.x1, reg2->extents.x1); - newReg->extents.y1 = MAX(reg1->extents.y1, reg2->extents.y1); - newReg->extents.x2 = MIN(reg1->extents.x2, reg2->extents.x2); - newReg->extents.y2 = MIN(reg1->extents.y2, reg2->extents.y2); - freeData(newReg); - newReg->data = (pixman_region16_data_t *)NULL; - } - else if (!reg2->data && SUBSUMES(®2->extents, ®1->extents)) - { - return pixman_region_copy(newReg, reg1); - } - else if (!reg1->data && SUBSUMES(®1->extents, ®2->extents)) - { - return pixman_region_copy(newReg, reg2); - } - else if (reg1 == reg2) - { - return pixman_region_copy(newReg, reg1); - } - else - { - /* General purpose intersection */ - int overlap; /* result ignored */ - if (!pixman_op(newReg, reg1, reg2, pixman_region_intersectO, FALSE, FALSE, - &overlap)) - return FALSE; - pixman_set_extents(newReg); - } - - good(newReg); - return(TRUE); -} - -#define MERGERECT(r) \ -{ \ - if (r->x1 <= x2) { \ - /* Merge with current rectangle */ \ - if (r->x1 < x2) *pOverlap = TRUE; \ - if (x2 < r->x2) x2 = r->x2; \ - } else { \ - /* Add current rectangle, start new one */ \ - NEWRECT(region, pNextRect, x1, y1, x2, y2); \ - x1 = r->x1; \ - x2 = r->x2; \ - } \ - r++; \ -} - -/*====================================================================== - * Region Union - *====================================================================*/ - -/*- - *----------------------------------------------------------------------- - * pixman_region_unionO -- - * Handle an overlapping band for the union operation. Picks the - * left-most rectangle each time and merges it into the region. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * region is overwritten. - * pOverlap is set to TRUE if any boxes overlap. - * - *----------------------------------------------------------------------- - */ -static pixman_bool_t -pixman_region_unionO ( - pixman_region16_t *region, - pixman_box16_t *r1, - pixman_box16_t *r1End, - pixman_box16_t *r2, - pixman_box16_t *r2End, - short y1, - short y2, - int *pOverlap) -{ - pixman_box16_t * pNextRect; - int x1; /* left and right side of current union */ - int x2; - - assert (y1 < y2); - assert(r1 != r1End && r2 != r2End); - - pNextRect = PIXREGION_TOP(region); - - /* Start off current rectangle */ - if (r1->x1 < r2->x1) - { - x1 = r1->x1; - x2 = r1->x2; - r1++; - } - else - { - x1 = r2->x1; - x2 = r2->x2; - r2++; - } - while (r1 != r1End && r2 != r2End) - { - if (r1->x1 < r2->x1) MERGERECT(r1) else MERGERECT(r2); - } - - /* Finish off whoever (if any) is left */ - if (r1 != r1End) - { - do - { - MERGERECT(r1); - } while (r1 != r1End); - } - else if (r2 != r2End) - { - do - { - MERGERECT(r2); - } while (r2 != r2End); - } - - /* Add current rectangle */ - NEWRECT(region, pNextRect, x1, y1, x2, y2); - - return TRUE; -} - -/* Convenience function for performing union of region with a - * single rectangle - */ -pixman_bool_t -pixman_region_union_rect (pixman_region16_t *dest, - pixman_region16_t *source, - int x, int y, - unsigned int width, unsigned int height) -{ - pixman_region16_t region; - - if (!width || !height) - return pixman_region_copy (dest, source); - region.data = NULL; - region.extents.x1 = x; - region.extents.y1 = y; - region.extents.x2 = x + width; - region.extents.y2 = y + height; - - return pixman_region_union (dest, source, ®ion); -} - -pixman_bool_t -pixman_region_union (pixman_region16_t *newReg, - pixman_region16_t *reg1, - pixman_region16_t *reg2) -{ - int overlap; /* result ignored */ - - /* Return TRUE if some overlap - * between reg1, reg2 - */ - good(reg1); - good(reg2); - good(newReg); - /* checks all the simple cases */ - - /* - * Region 1 and 2 are the same - */ - if (reg1 == reg2) - { - return pixman_region_copy(newReg, reg1); - } - - /* - * Region 1 is empty - */ - if (PIXREGION_NIL(reg1)) - { - if (PIXREGION_NAR(reg1)) - return pixman_break (newReg); - if (newReg != reg2) - return pixman_region_copy(newReg, reg2); - return TRUE; - } - - /* - * Region 2 is empty - */ - if (PIXREGION_NIL(reg2)) - { - if (PIXREGION_NAR(reg2)) - return pixman_break (newReg); - if (newReg != reg1) - return pixman_region_copy(newReg, reg1); - return TRUE; - } - - /* - * Region 1 completely subsumes region 2 - */ - if (!reg1->data && SUBSUMES(®1->extents, ®2->extents)) - { - if (newReg != reg1) - return pixman_region_copy(newReg, reg1); - return TRUE; - } - - /* - * Region 2 completely subsumes region 1 - */ - if (!reg2->data && SUBSUMES(®2->extents, ®1->extents)) - { - if (newReg != reg2) - return pixman_region_copy(newReg, reg2); - return TRUE; - } - - if (!pixman_op(newReg, reg1, reg2, pixman_region_unionO, TRUE, TRUE, &overlap)) - return FALSE; - - newReg->extents.x1 = MIN(reg1->extents.x1, reg2->extents.x1); - newReg->extents.y1 = MIN(reg1->extents.y1, reg2->extents.y1); - newReg->extents.x2 = MAX(reg1->extents.x2, reg2->extents.x2); - newReg->extents.y2 = MAX(reg1->extents.y2, reg2->extents.y2); - good(newReg); - return TRUE; -} - -/*====================================================================== - * Batch Rectangle Union - *====================================================================*/ - -/*- - *----------------------------------------------------------------------- - * pixman_region_append -- - * - * "Append" the rgn rectangles onto the end of dstrgn, maintaining - * knowledge of YX-banding when it's easy. Otherwise, dstrgn just - * becomes a non-y-x-banded random collection of rectangles, and not - * yet a true region. After a sequence of appends, the caller must - * call pixman_region_validate to ensure that a valid region is - * constructed. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * dstrgn is modified if rgn has rectangles. - * - */ -pixman_bool_t -pixman_region_append (pixman_region16_t * dstrgn, - pixman_region16_t * rgn) -{ - int numRects, dnumRects, size; - pixman_box16_t *new, *old; - int prepend; - - if (PIXREGION_NAR(rgn)) - return pixman_break (dstrgn); - - if (!rgn->data && (dstrgn->data == pixman_region_emptyData)) - { - dstrgn->extents = rgn->extents; - dstrgn->data = (pixman_region16_data_t *)NULL; - return TRUE; - } - - numRects = PIXREGION_NUM_RECTS(rgn); - if (!numRects) - return TRUE; - prepend = FALSE; - size = numRects; - dnumRects = PIXREGION_NUM_RECTS(dstrgn); - if (!dnumRects && (size < 200)) - size = 200; /* XXX pick numbers out of a hat */ - RECTALLOC(dstrgn, size); - old = PIXREGION_RECTS(rgn); - if (!dnumRects) - dstrgn->extents = rgn->extents; - else if (dstrgn->extents.x2 > dstrgn->extents.x1) - { - pixman_box16_t *first, *last; - - first = old; - last = PIXREGION_BOXPTR(dstrgn) + (dnumRects - 1); - if ((first->y1 > last->y2) || - ((first->y1 == last->y1) && (first->y2 == last->y2) && - (first->x1 > last->x2))) - { - if (rgn->extents.x1 < dstrgn->extents.x1) - dstrgn->extents.x1 = rgn->extents.x1; - if (rgn->extents.x2 > dstrgn->extents.x2) - dstrgn->extents.x2 = rgn->extents.x2; - dstrgn->extents.y2 = rgn->extents.y2; - } - else - { - first = PIXREGION_BOXPTR(dstrgn); - last = old + (numRects - 1); - if ((first->y1 > last->y2) || - ((first->y1 == last->y1) && (first->y2 == last->y2) && - (first->x1 > last->x2))) - { - prepend = TRUE; - if (rgn->extents.x1 < dstrgn->extents.x1) - dstrgn->extents.x1 = rgn->extents.x1; - if (rgn->extents.x2 > dstrgn->extents.x2) - dstrgn->extents.x2 = rgn->extents.x2; - dstrgn->extents.y1 = rgn->extents.y1; - } - else - dstrgn->extents.x2 = dstrgn->extents.x1; - } - } - if (prepend) - { - new = PIXREGION_BOX(dstrgn, numRects); - if (dnumRects == 1) - *new = *PIXREGION_BOXPTR(dstrgn); - else - memmove((char *)new,(char *)PIXREGION_BOXPTR(dstrgn), - dnumRects * sizeof(pixman_box16_t)); - new = PIXREGION_BOXPTR(dstrgn); - } - else - new = PIXREGION_BOXPTR(dstrgn) + dnumRects; - if (numRects == 1) - *new = *old; - else - memmove((char *)new, (char *)old, numRects * sizeof(pixman_box16_t)); - dstrgn->data->numRects += numRects; - return TRUE; -} - -#define ExchangeRects(a, b) \ -{ \ - pixman_box16_t t; \ - t = rects[a]; \ - rects[a] = rects[b]; \ - rects[b] = t; \ -} - -static void -QuickSortRects( - pixman_box16_t rects[], - int numRects) -{ - int y1; - int x1; - int i, j; - pixman_box16_t *r; - - /* Always called with numRects > 1 */ - - do - { - if (numRects == 2) - { - if (rects[0].y1 > rects[1].y1 || - (rects[0].y1 == rects[1].y1 && rects[0].x1 > rects[1].x1)) - ExchangeRects(0, 1); - return; - } - - /* Choose partition element, stick in location 0 */ - ExchangeRects(0, numRects >> 1); - y1 = rects[0].y1; - x1 = rects[0].x1; - - /* Partition array */ - i = 0; - j = numRects; - do - { - r = &(rects[i]); - do - { - r++; - i++; - } while (i != numRects && - (r->y1 < y1 || (r->y1 == y1 && r->x1 < x1))); - r = &(rects[j]); - do - { - r--; - j--; - } while (y1 < r->y1 || (y1 == r->y1 && x1 < r->x1)); - if (i < j) - ExchangeRects(i, j); - } while (i < j); - - /* Move partition element back to middle */ - ExchangeRects(0, j); - - /* Recurse */ - if (numRects-j-1 > 1) - QuickSortRects(&rects[j+1], numRects-j-1); - numRects = j; - } while (numRects > 1); -} - -/*- - *----------------------------------------------------------------------- - * pixman_region_validate -- - * - * Take a ``region'' which is a non-y-x-banded random collection of - * rectangles, and compute a nice region which is the union of all the - * rectangles. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * The passed-in ``region'' may be modified. - * pOverlap set to TRUE if any retangles overlapped, - * else FALSE; - * - * Strategy: - * Step 1. Sort the rectangles into ascending order with primary key y1 - * and secondary key x1. - * - * Step 2. Split the rectangles into the minimum number of proper y-x - * banded regions. This may require horizontally merging - * rectangles, and vertically coalescing bands. With any luck, - * this step in an identity transformation (ala the Box widget), - * or a coalescing into 1 box (ala Menus). - * - * Step 3. Merge the separate regions down to a single region by calling - * pixman_region_union. Maximize the work each pixman_region_union call does by using - * a binary merge. - * - *----------------------------------------------------------------------- - */ - -pixman_bool_t -pixman_region_validate(pixman_region16_t * badreg, - int *pOverlap) -{ - /* Descriptor for regions under construction in Step 2. */ - typedef struct { - pixman_region16_t reg; - int prevBand; - int curBand; - } RegionInfo; - - int numRects; /* Original numRects for badreg */ - RegionInfo *ri; /* Array of current regions */ - int numRI; /* Number of entries used in ri */ - int sizeRI; /* Number of entries available in ri */ - int i; /* Index into rects */ - int j; /* Index into ri */ - RegionInfo *rit; /* &ri[j] */ - pixman_region16_t * reg; /* ri[j].reg */ - pixman_box16_t * box; /* Current box in rects */ - pixman_box16_t * riBox; /* Last box in ri[j].reg */ - pixman_region16_t * hreg; /* ri[j_half].reg */ - pixman_bool_t ret = TRUE; - - *pOverlap = FALSE; - if (!badreg->data) - { - good(badreg); - return TRUE; - } - numRects = badreg->data->numRects; - if (!numRects) - { - if (PIXREGION_NAR(badreg)) - return FALSE; - good(badreg); - return TRUE; - } - if (badreg->extents.x1 < badreg->extents.x2) - { - if ((numRects) == 1) - { - freeData(badreg); - badreg->data = (pixman_region16_data_t *) NULL; - } - else - { - DOWNSIZE(badreg, numRects); - } - good(badreg); - return TRUE; - } - - /* Step 1: Sort the rects array into ascending (y1, x1) order */ - QuickSortRects(PIXREGION_BOXPTR(badreg), numRects); - - /* Step 2: Scatter the sorted array into the minimum number of regions */ - - /* Set up the first region to be the first rectangle in badreg */ - /* Note that step 2 code will never overflow the ri[0].reg rects array */ - ri = (RegionInfo *) pixman_malloc_ab (4, sizeof(RegionInfo)); - if (!ri) - return pixman_break (badreg); - sizeRI = 4; - numRI = 1; - ri[0].prevBand = 0; - ri[0].curBand = 0; - ri[0].reg = *badreg; - box = PIXREGION_BOXPTR(&ri[0].reg); - ri[0].reg.extents = *box; - ri[0].reg.data->numRects = 1; - badreg->extents = *pixman_region_emptyBox; - badreg->data = pixman_region_emptyData; - - /* Now scatter rectangles into the minimum set of valid regions. If the - next rectangle to be added to a region would force an existing rectangle - in the region to be split up in order to maintain y-x banding, just - forget it. Try the next region. If it doesn't fit cleanly into any - region, make a new one. */ - - for (i = numRects; --i > 0;) - { - box++; - /* Look for a region to append box to */ - for (j = numRI, rit = ri; --j >= 0; rit++) - { - reg = &rit->reg; - riBox = PIXREGION_END(reg); - - if (box->y1 == riBox->y1 && box->y2 == riBox->y2) - { - /* box is in same band as riBox. Merge or append it */ - if (box->x1 <= riBox->x2) - { - /* Merge it with riBox */ - if (box->x1 < riBox->x2) *pOverlap = TRUE; - if (box->x2 > riBox->x2) riBox->x2 = box->x2; - } - else - { - RECTALLOC_BAIL(reg, 1, bail); - *PIXREGION_TOP(reg) = *box; - reg->data->numRects++; - } - goto NextRect; /* So sue me */ - } - else if (box->y1 >= riBox->y2) - { - /* Put box into new band */ - if (reg->extents.x2 < riBox->x2) reg->extents.x2 = riBox->x2; - if (reg->extents.x1 > box->x1) reg->extents.x1 = box->x1; - Coalesce(reg, rit->prevBand, rit->curBand); - rit->curBand = reg->data->numRects; - RECTALLOC_BAIL(reg, 1, bail); - *PIXREGION_TOP(reg) = *box; - reg->data->numRects++; - goto NextRect; - } - /* Well, this region was inappropriate. Try the next one. */ - } /* for j */ - - /* Uh-oh. No regions were appropriate. Create a new one. */ - if (sizeRI == numRI) - { - size_t data_size; - - /* Oops, allocate space for new region information */ - sizeRI <<= 1; - - data_size = sizeRI * sizeof(RegionInfo); - if (data_size / sizeRI != sizeof(RegionInfo)) - goto bail; - rit = (RegionInfo *) realloc(ri, data_size); - if (!rit) - goto bail; - ri = rit; - rit = &ri[numRI]; - } - numRI++; - rit->prevBand = 0; - rit->curBand = 0; - rit->reg.extents = *box; - rit->reg.data = (pixman_region16_data_t *)NULL; - if (!pixman_rect_alloc(&rit->reg, (i+numRI) / numRI)) /* MUST force allocation */ - goto bail; -NextRect: ; - } /* for i */ - - /* Make a final pass over each region in order to Coalesce and set - extents.x2 and extents.y2 */ - - for (j = numRI, rit = ri; --j >= 0; rit++) - { - reg = &rit->reg; - riBox = PIXREGION_END(reg); - reg->extents.y2 = riBox->y2; - if (reg->extents.x2 < riBox->x2) reg->extents.x2 = riBox->x2; - Coalesce(reg, rit->prevBand, rit->curBand); - if (reg->data->numRects == 1) /* keep unions happy below */ - { - freeData(reg); - reg->data = (pixman_region16_data_t *)NULL; - } - } - - /* Step 3: Union all regions into a single region */ - while (numRI > 1) - { - int half = numRI/2; - for (j = numRI & 1; j < (half + (numRI & 1)); j++) - { - reg = &ri[j].reg; - hreg = &ri[j+half].reg; - if (!pixman_op(reg, reg, hreg, pixman_region_unionO, TRUE, TRUE, pOverlap)) - ret = FALSE; - if (hreg->extents.x1 < reg->extents.x1) - reg->extents.x1 = hreg->extents.x1; - if (hreg->extents.y1 < reg->extents.y1) - reg->extents.y1 = hreg->extents.y1; - if (hreg->extents.x2 > reg->extents.x2) - reg->extents.x2 = hreg->extents.x2; - if (hreg->extents.y2 > reg->extents.y2) - reg->extents.y2 = hreg->extents.y2; - freeData(hreg); - } - numRI -= half; - if (!ret) - goto bail; - } - *badreg = ri[0].reg; - free(ri); - good(badreg); - return ret; -bail: - for (i = 0; i < numRI; i++) - freeData(&ri[i].reg); - free (ri); - - return pixman_break (badreg); -} - -/*====================================================================== - * Region Subtraction - *====================================================================*/ - -/*- - *----------------------------------------------------------------------- - * pixman_region_subtractO -- - * Overlapping band subtraction. x1 is the left-most point not yet - * checked. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * region may have rectangles added to it. - * - *----------------------------------------------------------------------- - */ -/*ARGSUSED*/ -static pixman_bool_t -pixman_region_subtractO ( - pixman_region16_t * region, - pixman_box16_t * r1, - pixman_box16_t * r1End, - pixman_box16_t * r2, - pixman_box16_t * r2End, - short y1, - short y2, - int *pOverlap) -{ - pixman_box16_t * pNextRect; - int x1; - - x1 = r1->x1; - - assert(y1x2 <= x1) - { - /* - * Subtrahend entirely to left of minuend: go to next subtrahend. - */ - r2++; - } - else if (r2->x1 <= x1) - { - /* - * Subtrahend preceeds minuend: nuke left edge of minuend. - */ - x1 = r2->x2; - if (x1 >= r1->x2) - { - /* - * Minuend completely covered: advance to next minuend and - * reset left fence to edge of new minuend. - */ - r1++; - if (r1 != r1End) - x1 = r1->x1; - } - else - { - /* - * Subtrahend now used up since it doesn't extend beyond - * minuend - */ - r2++; - } - } - else if (r2->x1 < r1->x2) - { - /* - * Left part of subtrahend covers part of minuend: add uncovered - * part of minuend to region and skip to next subtrahend. - */ - assert(x1x1); - NEWRECT(region, pNextRect, x1, y1, r2->x1, y2); - - x1 = r2->x2; - if (x1 >= r1->x2) - { - /* - * Minuend used up: advance to new... - */ - r1++; - if (r1 != r1End) - x1 = r1->x1; - } - else - { - /* - * Subtrahend used up - */ - r2++; - } - } - else - { - /* - * Minuend used up: add any remaining piece before advancing. - */ - if (r1->x2 > x1) - NEWRECT(region, pNextRect, x1, y1, r1->x2, y2); - r1++; - if (r1 != r1End) - x1 = r1->x1; - } - } while ((r1 != r1End) && (r2 != r2End)); - - /* - * Add remaining minuend rectangles to region. - */ - while (r1 != r1End) - { - assert(x1x2); - NEWRECT(region, pNextRect, x1, y1, r1->x2, y2); - r1++; - if (r1 != r1End) - x1 = r1->x1; - } - return TRUE; -} - -/*- - *----------------------------------------------------------------------- - * pixman_region_subtract -- - * Subtract regS from regM and leave the result in regD. - * S stands for subtrahend, M for minuend and D for difference. - * - * Results: - * TRUE if successful. - * - * Side Effects: - * regD is overwritten. - * - *----------------------------------------------------------------------- - */ -pixman_bool_t -pixman_region_subtract(pixman_region16_t * regD, - pixman_region16_t * regM, - pixman_region16_t * regS) -{ - int overlap; /* result ignored */ - - good(regM); - good(regS); - good(regD); - /* check for trivial rejects */ - if (PIXREGION_NIL(regM) || PIXREGION_NIL(regS) || - !EXTENTCHECK(®M->extents, ®S->extents)) - { - if (PIXREGION_NAR (regS)) - return pixman_break (regD); - return pixman_region_copy(regD, regM); - } - else if (regM == regS) - { - freeData(regD); - regD->extents.x2 = regD->extents.x1; - regD->extents.y2 = regD->extents.y1; - regD->data = pixman_region_emptyData; - return TRUE; - } - - /* Add those rectangles in region 1 that aren't in region 2, - do yucky substraction for overlaps, and - just throw away rectangles in region 2 that aren't in region 1 */ - if (!pixman_op(regD, regM, regS, pixman_region_subtractO, TRUE, FALSE, &overlap)) - return FALSE; - - /* - * Can't alter RegD's extents before we call pixman_op because - * it might be one of the source regions and pixman_op depends - * on the extents of those regions being unaltered. Besides, this - * way there's no checking against rectangles that will be nuked - * due to coalescing, so we have to examine fewer rectangles. - */ - pixman_set_extents(regD); - good(regD); - return TRUE; -} - -/*====================================================================== - * Region Inversion - *====================================================================*/ - -/*- - *----------------------------------------------------------------------- - * pixman_region_inverse -- - * Take a region and a box and return a region that is everything - * in the box but not in the region. The careful reader will note - * that this is the same as subtracting the region from the box... - * - * Results: - * TRUE. - * - * Side Effects: - * newReg is overwritten. - * - *----------------------------------------------------------------------- - */ -pixman_bool_t -pixman_region_inverse(pixman_region16_t * newReg, /* Destination region */ - pixman_region16_t * reg1, /* Region to invert */ - pixman_box16_t * invRect) /* Bounding box for inversion */ -{ - pixman_region16_t invReg; /* Quick and dirty region made from the - * bounding box */ - int overlap; /* result ignored */ - - good(reg1); - good(newReg); - /* check for trivial rejects */ - if (PIXREGION_NIL(reg1) || !EXTENTCHECK(invRect, ®1->extents)) - { - if (PIXREGION_NAR(reg1)) - return pixman_break (newReg); - newReg->extents = *invRect; - freeData(newReg); - newReg->data = (pixman_region16_data_t *)NULL; - return TRUE; - } - - /* Add those rectangles in region 1 that aren't in region 2, - do yucky substraction for overlaps, and - just throw away rectangles in region 2 that aren't in region 1 */ - invReg.extents = *invRect; - invReg.data = (pixman_region16_data_t *)NULL; - if (!pixman_op(newReg, &invReg, reg1, pixman_region_subtractO, TRUE, FALSE, &overlap)) - return FALSE; - - /* - * Can't alter newReg's extents before we call pixman_op because - * it might be one of the source regions and pixman_op depends - * on the extents of those regions being unaltered. Besides, this - * way there's no checking against rectangles that will be nuked - * due to coalescing, so we have to examine fewer rectangles. - */ - pixman_set_extents(newReg); - good(newReg); - return TRUE; -} - -/* - * RectIn(region, rect) - * This routine takes a pointer to a region and a pointer to a box - * and determines if the box is outside/inside/partly inside the region. - * - * The idea is to travel through the list of rectangles trying to cover the - * passed box with them. Anytime a piece of the rectangle isn't covered - * by a band of rectangles, partOut is set TRUE. Any time a rectangle in - * the region covers part of the box, partIn is set TRUE. The process ends - * when either the box has been completely covered (we reached a band that - * doesn't overlap the box, partIn is TRUE and partOut is false), the - * box has been partially covered (partIn == partOut == TRUE -- because of - * the banding, the first time this is true we know the box is only - * partially in the region) or is outside the region (we reached a band - * that doesn't overlap the box at all and partIn is false) - */ - -pixman_region_overlap_t -pixman_region_contains_rectangle(pixman_region16_t * region, - pixman_box16_t * prect) -{ - int x; - int y; - pixman_box16_t * pbox; - pixman_box16_t * pboxEnd; - int partIn, partOut; - int numRects; - - good(region); - numRects = PIXREGION_NUM_RECTS(region); - /* useful optimization */ - if (!numRects || !EXTENTCHECK(®ion->extents, prect)) - return(PIXMAN_REGION_OUT); - - if (numRects == 1) - { - /* We know that it must be PIXMAN_REGION_IN or PIXMAN_REGION_PART */ - if (SUBSUMES(®ion->extents, prect)) - return(PIXMAN_REGION_IN); - else - return(PIXMAN_REGION_PART); - } - - partOut = FALSE; - partIn = FALSE; - - /* (x,y) starts at upper left of rect, moving to the right and down */ - x = prect->x1; - y = prect->y1; - - /* can stop when both partOut and partIn are TRUE, or we reach prect->y2 */ - for (pbox = PIXREGION_BOXPTR(region), pboxEnd = pbox + numRects; - pbox != pboxEnd; - pbox++) - { - - if (pbox->y2 <= y) - continue; /* getting up to speed or skipping remainder of band */ - - if (pbox->y1 > y) - { - partOut = TRUE; /* missed part of rectangle above */ - if (partIn || (pbox->y1 >= prect->y2)) - break; - y = pbox->y1; /* x guaranteed to be == prect->x1 */ - } - - if (pbox->x2 <= x) - continue; /* not far enough over yet */ - - if (pbox->x1 > x) - { - partOut = TRUE; /* missed part of rectangle to left */ - if (partIn) - break; - } - - if (pbox->x1 < prect->x2) - { - partIn = TRUE; /* definitely overlap */ - if (partOut) - break; - } - - if (pbox->x2 >= prect->x2) - { - y = pbox->y2; /* finished with this band */ - if (y >= prect->y2) - break; - x = prect->x1; /* reset x out to left again */ - } - else - { - /* - * Because boxes in a band are maximal width, if the first box - * to overlap the rectangle doesn't completely cover it in that - * band, the rectangle must be partially out, since some of it - * will be uncovered in that band. partIn will have been set true - * by now... - */ - partOut = TRUE; - break; - } - } - - if (partIn) - { - if (y < prect->y2) - return PIXMAN_REGION_PART; - else - return PIXMAN_REGION_IN; - } - else - { - return PIXMAN_REGION_OUT; - } -} - -/* pixman_region_translate (region, x, y) - translates in place -*/ - -void -pixman_region_translate (pixman_region16_t * region, int x, int y) -{ - int x1, x2, y1, y2; - int nbox; - pixman_box16_t * pbox; - - good(region); - region->extents.x1 = x1 = region->extents.x1 + x; - region->extents.y1 = y1 = region->extents.y1 + y; - region->extents.x2 = x2 = region->extents.x2 + x; - region->extents.y2 = y2 = region->extents.y2 + y; - if (((x1 - SHRT_MIN)|(y1 - SHRT_MIN)|(SHRT_MAX - x2)|(SHRT_MAX - y2)) >= 0) - { - if (region->data && (nbox = region->data->numRects)) - { - for (pbox = PIXREGION_BOXPTR(region); nbox--; pbox++) - { - pbox->x1 += x; - pbox->y1 += y; - pbox->x2 += x; - pbox->y2 += y; - } - } - return; - } - if (((x2 - SHRT_MIN)|(y2 - SHRT_MIN)|(SHRT_MAX - x1)|(SHRT_MAX - y1)) <= 0) - { - region->extents.x2 = region->extents.x1; - region->extents.y2 = region->extents.y1; - freeData(region); - region->data = pixman_region_emptyData; - return; - } - if (x1 < SHRT_MIN) - region->extents.x1 = SHRT_MIN; - else if (x2 > SHRT_MAX) - region->extents.x2 = SHRT_MAX; - if (y1 < SHRT_MIN) - region->extents.y1 = SHRT_MIN; - else if (y2 > SHRT_MAX) - region->extents.y2 = SHRT_MAX; - if (region->data && (nbox = region->data->numRects)) - { - pixman_box16_t * pboxout; - - for (pboxout = pbox = PIXREGION_BOXPTR(region); nbox--; pbox++) - { - pboxout->x1 = x1 = pbox->x1 + x; - pboxout->y1 = y1 = pbox->y1 + y; - pboxout->x2 = x2 = pbox->x2 + x; - pboxout->y2 = y2 = pbox->y2 + y; - if (((x2 - SHRT_MIN)|(y2 - SHRT_MIN)| - (SHRT_MAX - x1)|(SHRT_MAX - y1)) <= 0) - { - region->data->numRects--; - continue; - } - if (x1 < SHRT_MIN) - pboxout->x1 = SHRT_MIN; - else if (x2 > SHRT_MAX) - pboxout->x2 = SHRT_MAX; - if (y1 < SHRT_MIN) - pboxout->y1 = SHRT_MIN; - else if (y2 > SHRT_MAX) - pboxout->y2 = SHRT_MAX; - pboxout++; - } - if (pboxout != pbox) - { - if (region->data->numRects == 1) - { - region->extents = *PIXREGION_BOXPTR(region); - freeData(region); - region->data = (pixman_region16_data_t *)NULL; - } - else - pixman_set_extents(region); - } - } -} - -/* XXX: Do we need this? -static pixman_bool_t -pixman_region16_data_copy(pixman_region16_t * dst, pixman_region16_t * src) -{ - good(dst); - good(src); - if (dst->data) - return TRUE; - if (dst == src) - return TRUE; - if (!src->data || !src->data->size) - { - freeData(dst); - dst->data = (pixman_region16_data_t *)NULL; - return TRUE; - } - if (!dst->data || (dst->data->size < src->data->numRects)) - { - freeData(dst); - dst->data = allocData(src->data->numRects); - if (!dst->data) - return pixman_break (dst); - } - dst->data->size = src->data->size; - dst->data->numRects = src->data->numRects; - return TRUE; -} -*/ - -void -pixman_region_reset(pixman_region16_t *region, pixman_box16_t *box) -{ - good(region); - assert(box->x1<=box->x2); - assert(box->y1<=box->y2); - region->extents = *box; - freeData(region); - region->data = (pixman_region16_data_t *)NULL; -} - -/* box is "return" value */ -int -pixman_region_contains_point(pixman_region16_t * region, - int x, int y, - pixman_box16_t * box) -{ - pixman_box16_t *pbox, *pboxEnd; - int numRects; - - good(region); - numRects = PIXREGION_NUM_RECTS(region); - if (!numRects || !INBOX(®ion->extents, x, y)) - return(FALSE); - if (numRects == 1) - { - *box = region->extents; - return(TRUE); - } - for (pbox = PIXREGION_BOXPTR(region), pboxEnd = pbox + numRects; - pbox != pboxEnd; - pbox++) - { - if (y >= pbox->y2) - continue; /* not there yet */ - if ((y < pbox->y1) || (x < pbox->x1)) - break; /* missed it */ - if (x >= pbox->x2) - continue; /* not there yet */ - *box = *pbox; - return(TRUE); - } - return(FALSE); -} - -int -pixman_region_not_empty(pixman_region16_t * region) -{ - good(region); - return(!PIXREGION_NIL(region)); -} - -/* XXX: Do we need this? -static int -pixman_region16_broken(pixman_region16_t * region) -{ - good(region); - return (PIXREGION_NAR(region)); -} -*/ - -void -pixman_region_empty(pixman_region16_t * region) -{ - good(region); - freeData(region); - region->extents.x2 = region->extents.x1; - region->extents.y2 = region->extents.y1; - region->data = pixman_region_emptyData; -} - -pixman_box16_t * -pixman_region_extents(pixman_region16_t * region) -{ - good(region); - return(®ion->extents); -} - -#define ExchangeSpans(a, b) \ -{ \ - pixman_region16_point_t tpt; \ - int tw; \ - \ - tpt = spans[a]; spans[a] = spans[b]; spans[b] = tpt; \ - tw = widths[a]; widths[a] = widths[b]; widths[b] = tw; \ -} - -/* ||| I should apply the merge sort code to rectangle sorting above, and see - if mapping time can be improved. But right now I've been at work 12 hours, - so forget it. -*/ - -static void QuickSortSpans( - pixman_region16_point_t spans[], - int widths[], - int numSpans) -{ - int y; - int i, j, m; - pixman_region16_point_t *r; - - /* Always called with numSpans > 1 */ - /* Sorts only by y, doesn't bother to sort by x */ - - do - { - if (numSpans < 9) - { - /* Do insertion sort */ - int yprev; - - yprev = spans[0].y; - i = 1; - do - { /* while i != numSpans */ - y = spans[i].y; - if (yprev > y) - { - /* spans[i] is out of order. Move into proper location. */ - pixman_region16_point_t tpt; - int tw, k; - - for (j = 0; y >= spans[j].y; j++) {} - tpt = spans[i]; - tw = widths[i]; - for (k = i; k != j; k--) - { - spans[k] = spans[k-1]; - widths[k] = widths[k-1]; - } - spans[j] = tpt; - widths[j] = tw; - y = spans[i].y; - } /* if out of order */ - yprev = y; - i++; - } while (i != numSpans); - return; - } - - /* Choose partition element, stick in location 0 */ - m = numSpans / 2; - if (spans[m].y > spans[0].y) ExchangeSpans(m, 0); - if (spans[m].y > spans[numSpans-1].y) ExchangeSpans(m, numSpans-1); - if (spans[m].y > spans[0].y) ExchangeSpans(m, 0); - y = spans[0].y; - - /* Partition array */ - i = 0; - j = numSpans; - do - { - r = &(spans[i]); - do - { - r++; - i++; - } while (i != numSpans && r->y < y); - r = &(spans[j]); - do - { - r--; - j--; - } while (y < r->y); - if (i < j) - ExchangeSpans(i, j); - } while (i < j); - - /* Move partition element back to middle */ - ExchangeSpans(0, j); - - /* Recurse */ - if (numSpans-j-1 > 1) - QuickSortSpans(&spans[j+1], &widths[j+1], numSpans-j-1); - numSpans = j; - } while (numSpans > 1); -} - -#define NextBand() \ -{ \ - clipy1 = pboxBandStart->y1; \ - clipy2 = pboxBandStart->y2; \ - pboxBandEnd = pboxBandStart + 1; \ - while (pboxBandEnd != pboxLast && pboxBandEnd->y1 == clipy1) { \ - pboxBandEnd++; \ - } \ - for (; ppt != pptLast && ppt->y < clipy1; ppt++, pwidth++) {} \ -} - -/* - Clip a list of scanlines to a region. The caller has allocated the - space. FSorted is non-zero if the scanline origins are in ascending - order. - returns the number of new, clipped scanlines. -*/ - -#ifdef XXX_DO_WE_NEED_THIS -static int -pixman_region16_clip_spans( - pixman_region16_t *prgnDst, - pixman_region16_point_t *ppt, - int *pwidth, - int nspans, - pixman_region16_point_t *pptNew, - int *pwidthNew, - int fSorted) -{ - pixman_region16_point_t *pptLast; - int *pwidthNewStart; /* the vengeance of Xerox! */ - int y, x1, x2; - int numRects; - - good(prgnDst); - pptLast = ppt + nspans; - pwidthNewStart = pwidthNew; - - if (!prgnDst->data) - { - /* Do special fast code with clip boundaries in registers(?) */ - /* It doesn't pay much to make use of fSorted in this case, - so we lump everything together. */ - - int clipx1, clipx2, clipy1, clipy2; - - clipx1 = prgnDst->extents.x1; - clipy1 = prgnDst->extents.y1; - clipx2 = prgnDst->extents.x2; - clipy2 = prgnDst->extents.y2; - - for (; ppt != pptLast; ppt++, pwidth++) - { - y = ppt->y; - x1 = ppt->x; - if (clipy1 <= y && y < clipy2) - { - x2 = x1 + *pwidth; - if (x1 < clipx1) x1 = clipx1; - if (x2 > clipx2) x2 = clipx2; - if (x1 < x2) - { - /* part of span in clip rectangle */ - pptNew->x = x1; - pptNew->y = y; - *pwidthNew = x2 - x1; - pptNew++; - pwidthNew++; - } - } - } /* end for */ - - } - else if ((numRects = prgnDst->data->numRects)) - { - /* Have to clip against many boxes */ - pixman_box16_t *pboxBandStart, *pboxBandEnd; - pixman_box16_t *pbox; - pixman_box16_t *pboxLast; - int clipy1, clipy2; - - /* In this case, taking advantage of sorted spans gains more than - the sorting costs. */ - if ((! fSorted) && (nspans > 1)) - QuickSortSpans(ppt, pwidth, nspans); - - pboxBandStart = PIXREGION_BOXPTR(prgnDst); - pboxLast = pboxBandStart + numRects; - - NextBand(); - - for (; ppt != pptLast; ) - { - y = ppt->y; - if (y < clipy2) - { - /* span is in the current band */ - pbox = pboxBandStart; - x1 = ppt->x; - x2 = x1 + *pwidth; - do - { /* For each box in band */ - int newx1, newx2; - - newx1 = x1; - newx2 = x2; - if (newx1 < pbox->x1) newx1 = pbox->x1; - if (newx2 > pbox->x2) newx2 = pbox->x2; - if (newx1 < newx2) - { - /* Part of span in clip rectangle */ - pptNew->x = newx1; - pptNew->y = y; - *pwidthNew = newx2 - newx1; - pptNew++; - pwidthNew++; - } - pbox++; - } while (pbox != pboxBandEnd); - ppt++; - pwidth++; - } - else - { - /* Move to next band, adjust ppt as needed */ - pboxBandStart = pboxBandEnd; - if (pboxBandStart == pboxLast) - break; /* We're completely done */ - NextBand(); - } - } - } - return (pwidthNew - pwidthNewStart); -} - -/* find the band in a region with the most rectangles */ -static int -pixman_region16_find_max_band(pixman_region16_t * prgn) -{ - int nbox; - pixman_box16_t * pbox; - int nThisBand; - int nMaxBand = 0; - short yThisBand; - - good(prgn); - nbox = PIXREGION_NUM_RECTS(prgn); - pbox = PIXREGION_RECTS(prgn); - - while(nbox > 0) - { - yThisBand = pbox->y1; - nThisBand = 0; - while((nbox > 0) && (pbox->y1 == yThisBand)) - { - nbox--; - pbox++; - nThisBand++; - } - if (nThisBand > nMaxBand) - nMaxBand = nThisBand; - } - return (nMaxBand); -} -#endif /* XXX_DO_WE_NEED_THIS */ - - -pixman_bool_t -pixman_region_selfcheck (reg) - pixman_region16_t * reg; -{ - int i, numRects; - - if ((reg->extents.x1 > reg->extents.x2) || - (reg->extents.y1 > reg->extents.y2)) - return FALSE; - numRects = PIXREGION_NUM_RECTS(reg); - if (!numRects) - return ((reg->extents.x1 == reg->extents.x2) && - (reg->extents.y1 == reg->extents.y2) && - (reg->data->size || (reg->data == pixman_region_emptyData))); - else if (numRects == 1) - return (!reg->data); - else - { - pixman_box16_t * pboxP, * pboxN; - pixman_box16_t box; - - pboxP = PIXREGION_RECTS(reg); - box = *pboxP; - box.y2 = pboxP[numRects-1].y2; - pboxN = pboxP + 1; - for (i = numRects; --i > 0; pboxP++, pboxN++) - { - if ((pboxN->x1 >= pboxN->x2) || - (pboxN->y1 >= pboxN->y2)) - return FALSE; - if (pboxN->x1 < box.x1) - box.x1 = pboxN->x1; - if (pboxN->x2 > box.x2) - box.x2 = pboxN->x2; - if ((pboxN->y1 < pboxP->y1) || - ((pboxN->y1 == pboxP->y1) && - ((pboxN->x1 < pboxP->x2) || (pboxN->y2 != pboxP->y2)))) - return FALSE; - } - return ((box.x1 == reg->extents.x1) && - (box.x2 == reg->extents.x2) && - (box.y1 == reg->extents.y1) && - (box.y2 == reg->extents.y2)); - } -} - -pixman_bool_t -pixman_region_init_rects (pixman_region16_t *region, - pixman_box16_t *boxes, int count) -{ - int overlap; - - /* if it's 1, then we just want to set the extents, so call - * the existing method. */ - if (count == 1) { - pixman_region_init_rect(region, - boxes[0].x1, - boxes[0].y1, - boxes[0].x2 - boxes[0].x1, - boxes[0].y2 - boxes[0].y1); - return TRUE; - } - - pixman_region_init(region); - - /* if it's 0, don't call pixman_rect_alloc -- 0 rectangles is - * a special case, and causing pixman_rect_alloc would cause - * us to leak memory (because the 0-rect case should be the - * static pixman_region_emptyData data). - */ - if (count == 0) - return TRUE; - - if (!pixman_rect_alloc(region, count)) - return FALSE; - - /* Copy in the rects */ - memcpy (PIXREGION_RECTS(region), boxes, sizeof(pixman_box16_t) * count); - region->data->numRects = count; - - /* Validate */ - region->extents.x1 = region->extents.x2 = 0; - return pixman_region_validate (region, &overlap); -} diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-source.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-source.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-source.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-source.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,681 +0,0 @@ -/* - * - * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. - * 2005 Lars Knoll & Zack Rusin, Trolltech - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include "pixman-private.h" - -typedef struct -{ - uint32_t left_ag; - uint32_t left_rb; - uint32_t right_ag; - uint32_t right_rb; - int32_t left_x; - int32_t right_x; - int32_t stepper; - - pixman_gradient_stop_t *stops; - int num_stops; - unsigned int spread; - - int need_reset; -} GradientWalker; - -static void -_gradient_walker_init (GradientWalker *walker, - gradient_t *gradient, - unsigned int spread) -{ - walker->num_stops = gradient->n_stops; - walker->stops = gradient->stops; - walker->left_x = 0; - walker->right_x = 0x10000; - walker->stepper = 0; - walker->left_ag = 0; - walker->left_rb = 0; - walker->right_ag = 0; - walker->right_rb = 0; - walker->spread = spread; - - walker->need_reset = TRUE; -} - -static void -_gradient_walker_reset (GradientWalker *walker, - pixman_fixed_32_32_t pos) -{ - int32_t x, left_x, right_x; - pixman_color_t *left_c, *right_c; - int n, count = walker->num_stops; - pixman_gradient_stop_t * stops = walker->stops; - - static const pixman_color_t transparent_black = { 0, 0, 0, 0 }; - - switch (walker->spread) - { - case PIXMAN_REPEAT_NORMAL: - x = (int32_t)pos & 0xFFFF; - for (n = 0; n < count; n++) - if (x < stops[n].x) - break; - if (n == 0) { - left_x = stops[count-1].x - 0x10000; - left_c = &stops[count-1].color; - } else { - left_x = stops[n-1].x; - left_c = &stops[n-1].color; - } - - if (n == count) { - right_x = stops[0].x + 0x10000; - right_c = &stops[0].color; - } else { - right_x = stops[n].x; - right_c = &stops[n].color; - } - left_x += (pos - x); - right_x += (pos - x); - break; - - case PIXMAN_REPEAT_PAD: - for (n = 0; n < count; n++) - if (pos < stops[n].x) - break; - - if (n == 0) { - left_x = INT32_MIN; - left_c = &stops[0].color; - } else { - left_x = stops[n-1].x; - left_c = &stops[n-1].color; - } - - if (n == count) { - right_x = INT32_MAX; - right_c = &stops[n-1].color; - } else { - right_x = stops[n].x; - right_c = &stops[n].color; - } - break; - - case PIXMAN_REPEAT_REFLECT: - x = (int32_t)pos & 0xFFFF; - if ((int32_t)pos & 0x10000) - x = 0x10000 - x; - for (n = 0; n < count; n++) - if (x < stops[n].x) - break; - - if (n == 0) { - left_x = -stops[0].x; - left_c = &stops[0].color; - } else { - left_x = stops[n-1].x; - left_c = &stops[n-1].color; - } - - if (n == count) { - right_x = 0x20000 - stops[n-1].x; - right_c = &stops[n-1].color; - } else { - right_x = stops[n].x; - right_c = &stops[n].color; - } - - if ((int32_t)pos & 0x10000) { - pixman_color_t *tmp_c; - int32_t tmp_x; - - tmp_x = 0x10000 - right_x; - right_x = 0x10000 - left_x; - left_x = tmp_x; - - tmp_c = right_c; - right_c = left_c; - left_c = tmp_c; - - x = 0x10000 - x; - } - left_x += (pos - x); - right_x += (pos - x); - break; - - default: /* RepeatNone */ - for (n = 0; n < count; n++) - if (pos < stops[n].x) - break; - - if (n == 0) - { - left_x = INT32_MIN; - right_x = stops[0].x; - left_c = right_c = (pixman_color_t*) &transparent_black; - } - else if (n == count) - { - left_x = stops[n-1].x; - right_x = INT32_MAX; - left_c = right_c = (pixman_color_t*) &transparent_black; - } - else - { - left_x = stops[n-1].x; - right_x = stops[n].x; - left_c = &stops[n-1].color; - right_c = &stops[n].color; - } - } - - walker->left_x = left_x; - walker->right_x = right_x; - walker->left_ag = ((left_c->alpha >> 8) << 16) | (left_c->green >> 8); - walker->left_rb = ((left_c->red & 0xff00) << 8) | (left_c->blue >> 8); - walker->right_ag = ((right_c->alpha >> 8) << 16) | (right_c->green >> 8); - walker->right_rb = ((right_c->red & 0xff00) << 8) | (right_c->blue >> 8); - - if ( walker->left_x == walker->right_x || - ( walker->left_ag == walker->right_ag && - walker->left_rb == walker->right_rb ) ) - { - walker->stepper = 0; - } - else - { - int32_t width = right_x - left_x; - walker->stepper = ((1 << 24) + width/2)/width; - } - - walker->need_reset = FALSE; -} - -#define GRADIENT_WALKER_NEED_RESET(w,x) \ - ( (w)->need_reset || (x) < (w)->left_x || (x) >= (w)->right_x) - - -/* the following assumes that GRADIENT_WALKER_NEED_RESET(w,x) is FALSE */ -static uint32_t -_gradient_walker_pixel (GradientWalker *walker, - pixman_fixed_32_32_t x) -{ - int dist, idist; - uint32_t t1, t2, a, color; - - if (GRADIENT_WALKER_NEED_RESET (walker, x)) - _gradient_walker_reset (walker, x); - - dist = ((int)(x - walker->left_x)*walker->stepper) >> 16; - idist = 256 - dist; - - /* combined INTERPOLATE and premultiply */ - t1 = walker->left_rb*idist + walker->right_rb*dist; - t1 = (t1 >> 8) & 0xff00ff; - - t2 = walker->left_ag*idist + walker->right_ag*dist; - t2 &= 0xff00ff00; - - color = t2 & 0xff000000; - a = t2 >> 24; - - t1 = t1*a + 0x800080; - t1 = (t1 + ((t1 >> 8) & 0xff00ff)) >> 8; - - t2 = (t2 >> 8)*a + 0x800080; - t2 = (t2 + ((t2 >> 8) & 0xff00ff)); - - return (color | (t1 & 0xff00ff) | (t2 & 0xff00)); -} - -void pixmanFetchSourcePict(source_image_t * pict, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, uint32_t maskBits) -{ -#if 0 - SourcePictPtr pGradient = pict->pSourcePict; -#endif - GradientWalker walker; - uint32_t *end = buffer + width; - gradient_t *gradient; - - if (pict->common.type == SOLID) - { - register uint32_t color = ((solid_fill_t *)pict)->color; - - while (buffer < end) - *(buffer++) = color; - - return; - } - - gradient = (gradient_t *)pict; - - _gradient_walker_init (&walker, gradient, pict->common.repeat); - - if (pict->common.type == LINEAR) { - pixman_vector_t v, unit; - pixman_fixed_32_32_t l; - pixman_fixed_48_16_t dx, dy, a, b, off; - linear_gradient_t *linear = (linear_gradient_t *)pict; - - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed(x) + pixman_fixed_1/2; - v.vector[1] = pixman_int_to_fixed(y) + pixman_fixed_1/2; - v.vector[2] = pixman_fixed_1; - if (pict->common.transform) { - if (!pixman_transform_point_3d (pict->common.transform, &v)) - return; - unit.vector[0] = pict->common.transform->matrix[0][0]; - unit.vector[1] = pict->common.transform->matrix[1][0]; - unit.vector[2] = pict->common.transform->matrix[2][0]; - } else { - unit.vector[0] = pixman_fixed_1; - unit.vector[1] = 0; - unit.vector[2] = 0; - } - - dx = linear->p2.x - linear->p1.x; - dy = linear->p2.y - linear->p1.y; - l = dx*dx + dy*dy; - if (l != 0) { - a = (dx << 32) / l; - b = (dy << 32) / l; - off = (-a*linear->p1.x - b*linear->p1.y)>>16; - } - if (l == 0 || (unit.vector[2] == 0 && v.vector[2] == pixman_fixed_1)) { - pixman_fixed_48_16_t inc, t; - /* affine transformation only */ - if (l == 0) { - t = 0; - inc = 0; - } else { - t = ((a*v.vector[0] + b*v.vector[1]) >> 16) + off; - inc = (a * unit.vector[0] + b * unit.vector[1]) >> 16; - } - - if (pict->class == SOURCE_IMAGE_CLASS_VERTICAL) - { - register uint32_t color; - - color = _gradient_walker_pixel( &walker, t ); - while (buffer < end) - *(buffer++) = color; - } - else - { - if (!mask) { - while (buffer < end) - { - *(buffer) = _gradient_walker_pixel (&walker, t); - buffer += 1; - t += inc; - } - } else { - while (buffer < end) { - if (*mask++ & maskBits) - { - *(buffer) = _gradient_walker_pixel (&walker, t); - } - buffer += 1; - t += inc; - } - } - } - } - else /* projective transformation */ - { - pixman_fixed_48_16_t t; - - if (pict->class == SOURCE_IMAGE_CLASS_VERTICAL) - { - register uint32_t color; - - if (v.vector[2] == 0) - { - t = 0; - } - else - { - pixman_fixed_48_16_t x, y; - - x = ((pixman_fixed_48_16_t) v.vector[0] << 16) / v.vector[2]; - y = ((pixman_fixed_48_16_t) v.vector[1] << 16) / v.vector[2]; - t = ((a * x + b * y) >> 16) + off; - } - - color = _gradient_walker_pixel( &walker, t ); - while (buffer < end) - *(buffer++) = color; - } - else - { - while (buffer < end) - { - if (!mask || *mask++ & maskBits) - { - if (v.vector[2] == 0) { - t = 0; - } else { - pixman_fixed_48_16_t x, y; - x = ((pixman_fixed_48_16_t)v.vector[0] << 16) / v.vector[2]; - y = ((pixman_fixed_48_16_t)v.vector[1] << 16) / v.vector[2]; - t = ((a*x + b*y) >> 16) + off; - } - *(buffer) = _gradient_walker_pixel (&walker, t); - } - ++buffer; - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } - } - } - } else { - -/* - * In the radial gradient problem we are given two circles (câ‚,râ‚) and - * (câ‚‚,râ‚‚) that define the gradient itself. Then, for any point p, we - * must compute the value(s) of t within [0.0, 1.0] representing the - * circle(s) that would color the point. - * - * There are potentially two values of t since the point p can be - * colored by both sides of the circle, (which happens whenever one - * circle is not entirely contained within the other). - * - * If we solve for a value of t that is outside of [0.0, 1.0] then we - * use the extend mode (NONE, REPEAT, REFLECT, or PAD) to map to a - * value within [0.0, 1.0]. - * - * Here is an illustration of the problem: - * - * pâ‚‚ - * p • - * • ╲ - * · ╲râ‚‚ - * p₠· ╲ - * • θ╲ - * ╲ ╌╌• - * ╲r₠· câ‚‚ - * θ╲ · - * ╌╌• - * câ‚ - * - * Given (câ‚,râ‚), (câ‚‚,râ‚‚) and p, we must find an angle θ such that two - * points pâ‚ and pâ‚‚ on the two circles are collinear with p. Then, the - * desired value of t is the ratio of the length of pâ‚p to the length - * of pâ‚pâ‚‚. - * - * So, we have six unknown values: (pâ‚x, pâ‚y), (pâ‚‚x, pâ‚‚y), θ and t. - * We can also write six equations that constrain the problem: - * - * Point pâ‚ is a distance râ‚ from câ‚ at an angle of θ: - * - * 1. pâ‚x = câ‚x + râ‚·cos θ - * 2. pâ‚y = câ‚y + râ‚·sin θ - * - * Point pâ‚‚ is a distance râ‚‚ from câ‚‚ at an angle of θ: - * - * 3. pâ‚‚x = câ‚‚x + r2·cos θ - * 4. pâ‚‚y = câ‚‚y + r2·sin θ - * - * Point p lies at a fraction t along the line segment pâ‚pâ‚‚: - * - * 5. px = t·pâ‚‚x + (1-t)·pâ‚x - * 6. py = t·pâ‚‚y + (1-t)·pâ‚y - * - * To solve, first subtitute 1-4 into 5 and 6: - * - * px = t·(câ‚‚x + r₂·cos θ) + (1-t)·(câ‚x + râ‚·cos θ) - * py = t·(câ‚‚y + r₂·sin θ) + (1-t)·(câ‚y + râ‚·sin θ) - * - * Then solve each for cos θ and sin θ expressed as a function of t: - * - * cos θ = (-(câ‚‚x - câ‚x)·t + (px - câ‚x)) / ((râ‚‚-râ‚)·t + râ‚) - * sin θ = (-(câ‚‚y - câ‚y)·t + (py - câ‚y)) / ((râ‚‚-râ‚)·t + râ‚) - * - * To simplify this a bit, we define new variables for several of the - * common terms as shown below: - * - * pâ‚‚ - * p • - * • ╲ - * · ┆ ╲râ‚‚ - * p₠· ┆ ╲ - * • pdy┆ ╲ - * ╲ ┆ •câ‚‚ - * ╲r₠┆ · ┆ - * ╲ ·┆ ┆cdy - * •╌╌╌╌┴╌╌╌╌╌╌╌┘ - * câ‚ pdx cdx - * - * cdx = (câ‚‚x - câ‚x) - * cdy = (câ‚‚y - câ‚y) - * dr = râ‚‚-râ‚ - * pdx = px - câ‚x - * pdy = py - câ‚y - * - * Note that cdx, cdy, and dr do not depend on point p at all, so can - * be pre-computed for the entire gradient. The simplifed equations - * are now: - * - * cos θ = (-cdx·t + pdx) / (dr·t + râ‚) - * sin θ = (-cdy·t + pdy) / (dr·t + râ‚) - * - * Finally, to get a single function of t and eliminate the last - * unknown θ, we use the identity sin²θ + cos²θ = 1. First, square - * each equation, (we knew a quadratic was coming since it must be - * possible to obtain two solutions in some cases): - * - * cos²θ = (cdx²t² - 2·cdx·pdx·t + pdx²) / (dr²·t² + 2·râ‚·dr·t + r₲) - * sin²θ = (cdy²t² - 2·cdy·pdy·t + pdy²) / (dr²·t² + 2·râ‚·dr·t + r₲) - * - * Then add both together, set the result equal to 1, and express as a - * standard quadratic equation in t of the form At² + Bt + C = 0 - * - * (cdx² + cdy² - dr²)·t² - 2·(cdx·pdx + cdy·pdy + râ‚·dr)·t + (pdx² + pdy² - r₲) = 0 - * - * In other words: - * - * A = cdx² + cdy² - dr² - * B = -2·(pdx·cdx + pdy·cdy + râ‚·dr) - * C = pdx² + pdy² - r₲ - * - * And again, notice that A does not depend on p, so can be - * precomputed. From here we just use the quadratic formula to solve - * for t: - * - * t = (-2·B ± ⎷(B² - 4·A·C)) / 2·A - */ - /* radial or conical */ - pixman_bool_t affine = TRUE; - double cx = 1.; - double cy = 0.; - double cz = 0.; - double rx = x + 0.5; - double ry = y + 0.5; - double rz = 1.; - - if (pict->common.transform) { - pixman_vector_t v; - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed(x) + pixman_fixed_1/2; - v.vector[1] = pixman_int_to_fixed(y) + pixman_fixed_1/2; - v.vector[2] = pixman_fixed_1; - if (!pixman_transform_point_3d (pict->common.transform, &v)) - return; - - cx = pict->common.transform->matrix[0][0]/65536.; - cy = pict->common.transform->matrix[1][0]/65536.; - cz = pict->common.transform->matrix[2][0]/65536.; - rx = v.vector[0]/65536.; - ry = v.vector[1]/65536.; - rz = v.vector[2]/65536.; - affine = pict->common.transform->matrix[2][0] == 0 && v.vector[2] == pixman_fixed_1; - } - - if (pict->common.type == RADIAL) { - radial_gradient_t *radial = (radial_gradient_t *)pict; - if (affine) { - while (buffer < end) { - if (!mask || *mask++ & maskBits) - { - double pdx, pdy; - double B, C; - double det; - double c1x = radial->c1.x / 65536.0; - double c1y = radial->c1.y / 65536.0; - double r1 = radial->c1.radius / 65536.0; - pixman_fixed_48_16_t t; - - pdx = rx - c1x; - pdy = ry - c1y; - - B = -2 * ( pdx * radial->cdx - + pdy * radial->cdy - + r1 * radial->dr); - C = (pdx * pdx + pdy * pdy - r1 * r1); - - det = (B * B) - (4 * radial->A * C); - if (det < 0.0) - det = 0.0; - - if (radial->A < 0) - t = (pixman_fixed_48_16_t) ((- B - sqrt(det)) / (2.0 * radial->A) * 65536); - else - t = (pixman_fixed_48_16_t) ((- B + sqrt(det)) / (2.0 * radial->A) * 65536); - - *(buffer) = _gradient_walker_pixel (&walker, t); - } - ++buffer; - - rx += cx; - ry += cy; - } - } else { - /* projective */ - while (buffer < end) { - if (!mask || *mask++ & maskBits) - { - double pdx, pdy; - double B, C; - double det; - double c1x = radial->c1.x / 65536.0; - double c1y = radial->c1.y / 65536.0; - double r1 = radial->c1.radius / 65536.0; - pixman_fixed_48_16_t t; - double x, y; - - if (rz != 0) { - x = rx/rz; - y = ry/rz; - } else { - x = y = 0.; - } - - pdx = x - c1x; - pdy = y - c1y; - - B = -2 * ( pdx * radial->cdx - + pdy * radial->cdy - + r1 * radial->dr); - C = (pdx * pdx + pdy * pdy - r1 * r1); - - det = (B * B) - (4 * radial->A * C); - if (det < 0.0) - det = 0.0; - - if (radial->A < 0) - t = (pixman_fixed_48_16_t) ((- B - sqrt(det)) / (2.0 * radial->A) * 65536); - else - t = (pixman_fixed_48_16_t) ((- B + sqrt(det)) / (2.0 * radial->A) * 65536); - - *(buffer) = _gradient_walker_pixel (&walker, t); - } - ++buffer; - - rx += cx; - ry += cy; - rz += cz; - } - } - } else /* SourcePictTypeConical */ { - conical_gradient_t *conical = (conical_gradient_t *)pict; - double a = conical->angle/(180.*65536); - if (affine) { - rx -= conical->center.x/65536.; - ry -= conical->center.y/65536.; - - while (buffer < end) { - double angle; - - if (!mask || *mask++ & maskBits) - { - pixman_fixed_48_16_t t; - - angle = atan2(ry, rx) + a; - t = (pixman_fixed_48_16_t) (angle * (65536. / (2*M_PI))); - - *(buffer) = _gradient_walker_pixel (&walker, t); - } - - ++buffer; - rx += cx; - ry += cy; - } - } else { - while (buffer < end) { - double x, y; - double angle; - - if (!mask || *mask++ & maskBits) - { - pixman_fixed_48_16_t t; - - if (rz != 0) { - x = rx/rz; - y = ry/rz; - } else { - x = y = 0.; - } - x -= conical->center.x/65536.; - y -= conical->center.y/65536.; - angle = atan2(y, x) + a; - t = (pixman_fixed_48_16_t) (angle * (65536. / (2*M_PI))); - - *(buffer) = _gradient_walker_pixel (&walker, t); - } - - ++buffer; - rx += cx; - ry += cy; - rz += cz; - } - } - } - } -} diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-sse.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-sse.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-sse.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-sse.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -/* - * Copyright © 2008 Rodrigo Kumpera - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Rodrigo Kumpera (kumpera@gmail.com) - * - */ -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "pixman-sse.h" - -#ifdef USE_SSE2 - -void -fbComposeSetupSSE(void) -{ - static pixman_bool_t initialized = FALSE; - - if (initialized) - return; - - /* check if we have SSE2 support and initialize accordingly */ - if (pixman_have_sse()) - { - } - - initialized = TRUE; -} - - -#endif /* USE_SSE2 */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-sse.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-sse.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-sse.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-sse.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* - * Copyright © 2008 Rodrigo Kumpera - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Rodrigo Kumpera (kumpera@gmail.com) - * - */ -#ifndef _PIXMAN_SSE_H_ -#define _PIXMAN_SSE_H_ - -#ifdef HAVE_DIX_CONFIG_H -#include -#endif - -#include "pixman-private.h" - -#ifdef USE_SSE2 - -#if !defined(__amd64__) && !defined(__x86_64__) -pixman_bool_t pixman_have_sse(void); -#else -#define pixman_have_sse() TRUE -#endif - -#else -#define pixman_have_sse() FALSE -#endif - -#ifdef USE_SSE2 - -void fbComposeSetupSSE(void); - -#endif /* USE_SSE2 */ - -#endif /* _PIXMAN_SSE_H_ */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-timer.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-timer.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-timer.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-timer.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * Copyright © 2007 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Red Hat not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. Red Hat makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#include "pixman-private.h" - -#ifdef PIXMAN_TIMER - -static PixmanTimer *timers; - -static void -dump_timers (void) -{ - PixmanTimer *timer; - - for (timer = timers; timer != NULL; timer = timer->next) - { - printf ("%s: total: %llu n: %llu avg: %f\n", - timer->name, - timer->total, - timer->n_times, - timer->total / (double)timer->n_times); - } -} - -void -pixman_timer_register (PixmanTimer *timer) -{ - static int initialized; - - int atexit(void (*function)(void)); - - if (!initialized) - { - atexit (dump_timers); - initialized = 1; - } - - timer->next = timers; - timers = timer; -} - -#endif diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-transformed-accessors.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-transformed-accessors.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-transformed-accessors.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-transformed-accessors.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -#define PIXMAN_FB_ACCESSORS - -#include "pixman-transformed.c" diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-transformed.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-transformed.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-transformed.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-transformed.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,726 +0,0 @@ -/* - * - * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. - * 2005 Lars Knoll & Zack Rusin, Trolltech - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include "pixman-private.h" - -#ifdef PIXMAN_FB_ACCESSORS -#define FETCH_PROC_FOR_PICTURE pixman_fetchProcForPicture_accessors -#define FETCH_PIXEL_PROC_FOR_PICTURE pixman_fetchPixelProcForPicture_accessors -#define STORE_PROC_FOR_PICTURE pixman_storeProcForPicture_accessors - -#define FB_FETCH_TRANSFORMED fbFetchTransformed_accessors -#define FB_FETCH_EXTERNAL_ALPHA fbFetchExternalAlpha_accessors -#define FB_STORE_EXTERNAL_ALPHA fbStoreExternalAlpha_accessors - -#else - -#define FETCH_PROC_FOR_PICTURE pixman_fetchProcForPicture -#define FETCH_PIXEL_PROC_FOR_PICTURE pixman_fetchPixelProcForPicture -#define STORE_PROC_FOR_PICTURE pixman_storeProcForPicture - -#define FB_FETCH_TRANSFORMED fbFetchTransformed -#define FB_FETCH_EXTERNAL_ALPHA fbFetchExternalAlpha -#define FB_STORE_EXTERNAL_ALPHA fbStoreExternalAlpha - -#endif - -/* - * Fetch from region strategies - */ -typedef FASTCALL uint32_t (*fetchFromRegionProc)(bits_image_t *pict, int x, int y, uint32_t *buffer, fetchPixelProc fetch, pixman_box16_t *box); - -static inline uint32_t -fbFetchFromNoRegion(bits_image_t *pict, int x, int y, uint32_t *buffer, fetchPixelProc fetch, pixman_box16_t *box) -{ - return fetch (pict, x, y); -} - -static uint32_t -fbFetchFromNRectangles(bits_image_t *pict, int x, int y, uint32_t *buffer, fetchPixelProc fetch, pixman_box16_t *box) -{ - pixman_box16_t box2; - if (pixman_region_contains_point (pict->common.src_clip, x, y, &box2)) - return fbFetchFromNoRegion(pict, x, y, buffer, fetch, box); - else - return 0; -} - -static uint32_t -fbFetchFromOneRectangle(bits_image_t *pict, int x, int y, uint32_t *buffer, fetchPixelProc fetch, pixman_box16_t *box) -{ - pixman_box16_t box2 = *box; - return ((x < box2.x1) | (x >= box2.x2) | (y < box2.y1) | (y >= box2.y2)) ? - 0 : fbFetchFromNoRegion(pict, x, y, buffer, fetch, box); -} - -/* - * Fetching Algorithms - */ -static void -fbFetchTransformed_Nearest_Normal(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t* box = NULL; - fetchPixelProc fetch; - fetchFromRegionProc fetchFromRegion; - int x, y, i; - - /* initialize the two function pointers */ - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - if(pixman_region_n_rects (pict->common.src_clip) == 1) - fetchFromRegion = fbFetchFromNoRegion; - else - fetchFromRegion = fbFetchFromNRectangles; - - for ( i = 0; i < width; ++i) - { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) - { - *(buffer + i) = 0; - } - else - { - if (!affine) - { - y = MOD(DIV(v.vector[1],v.vector[2]), pict->height); - x = MOD(DIV(v.vector[0],v.vector[2]), pict->width); - } - else - { - y = MOD(v.vector[1]>>16, pict->height); - x = MOD(v.vector[0]>>16, pict->width); - } - *(buffer + i) = fetchFromRegion(pict, x, y, buffer, fetch, box); - } - } - - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -fbFetchTransformed_Nearest_Pad(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t *box = NULL; - fetchPixelProc fetch; - fetchFromRegionProc fetchFromRegion; - int x, y, i; - - /* initialize the two function pointers */ - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - if(pixman_region_n_rects (pict->common.src_clip) == 1) - fetchFromRegion = fbFetchFromNoRegion; - else - fetchFromRegion = fbFetchFromNRectangles; - - for (i = 0; i < width; ++i) - { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) - { - *(buffer + i) = 0; - } - else - { - if (!affine) - { - y = CLIP(DIV(v.vector[1], v.vector[2]), 0, pict->height-1); - x = CLIP(DIV(v.vector[0], v.vector[2]), 0, pict->width-1); - } - else - { - y = CLIP(v.vector[1]>>16, 0, pict->height-1); - x = CLIP(v.vector[0]>>16, 0, pict->width-1); - } - - *(buffer + i) = fetchFromRegion(pict, x, y, buffer, fetch, box); - } - } - - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -fbFetchTransformed_Nearest_General(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t *box = NULL; - fetchPixelProc fetch; - fetchFromRegionProc fetchFromRegion; - int x, y, i; - - /* initialize the two function pointers */ - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - if(pixman_region_n_rects (pict->common.src_clip) == 1) - { - box = &(pict->common.src_clip->extents); - fetchFromRegion = fbFetchFromOneRectangle; - } - else - { - fetchFromRegion = fbFetchFromNRectangles; - } - - for (i = 0; i < width; ++i) { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) { - *(buffer + i) = 0; - } else { - if (!affine) { - y = DIV(v.vector[1],v.vector[2]); - x = DIV(v.vector[0],v.vector[2]); - } else { - y = v.vector[1]>>16; - x = v.vector[0]>>16; - } - *(buffer + i) = fetchFromRegion(pict, x, y, buffer, fetch, box); - } - } - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -fbFetchTransformed_Bilinear_Normal(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t *box = NULL; - fetchPixelProc fetch; - fetchFromRegionProc fetchFromRegion; - int i; - - /* initialize the two function pointers */ - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - if(pixman_region_n_rects (pict->common.src_clip) == 1) - fetchFromRegion = fbFetchFromNoRegion; - else - fetchFromRegion = fbFetchFromNRectangles; - - for (i = 0; i < width; ++i) { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) { - *(buffer + i) = 0; - } else { - int x1, x2, y1, y2, distx, idistx, disty, idisty; - uint32_t tl, tr, bl, br, r; - uint32_t ft, fb; - - if (!affine) { - pixman_fixed_48_16_t div; - div = ((pixman_fixed_48_16_t)v.vector[0] << 16)/v.vector[2]; - x1 = div >> 16; - distx = ((pixman_fixed_t)div >> 8) & 0xff; - div = ((pixman_fixed_48_16_t)v.vector[1] << 16)/v.vector[2]; - y1 = div >> 16; - disty = ((pixman_fixed_t)div >> 8) & 0xff; - } else { - x1 = v.vector[0] >> 16; - distx = (v.vector[0] >> 8) & 0xff; - y1 = v.vector[1] >> 16; - disty = (v.vector[1] >> 8) & 0xff; - } - x2 = x1 + 1; - y2 = y1 + 1; - - idistx = 256 - distx; - idisty = 256 - disty; - - x1 = MOD (x1, pict->width); - x2 = MOD (x2, pict->width); - y1 = MOD (y1, pict->height); - y2 = MOD (y2, pict->height); - - tl = fetchFromRegion(pict, x1, y1, buffer, fetch, box); - tr = fetchFromRegion(pict, x2, y1, buffer, fetch, box); - bl = fetchFromRegion(pict, x1, y2, buffer, fetch, box); - br = fetchFromRegion(pict, x2, y2, buffer, fetch, box); - - ft = FbGet8(tl,0) * idistx + FbGet8(tr,0) * distx; - fb = FbGet8(bl,0) * idistx + FbGet8(br,0) * distx; - r = (((ft * idisty + fb * disty) >> 16) & 0xff); - ft = FbGet8(tl,8) * idistx + FbGet8(tr,8) * distx; - fb = FbGet8(bl,8) * idistx + FbGet8(br,8) * distx; - r |= (((ft * idisty + fb * disty) >> 8) & 0xff00); - ft = FbGet8(tl,16) * idistx + FbGet8(tr,16) * distx; - fb = FbGet8(bl,16) * idistx + FbGet8(br,16) * distx; - r |= (((ft * idisty + fb * disty)) & 0xff0000); - ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx; - fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx; - r |= (((ft * idisty + fb * disty) << 8) & 0xff000000); - *(buffer + i) = r; - } - } - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -fbFetchTransformed_Bilinear_Pad(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t *box = NULL; - fetchPixelProc fetch; - fetchFromRegionProc fetchFromRegion; - int i; - - /* initialize the two function pointers */ - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - if(pixman_region_n_rects (pict->common.src_clip) == 1) - fetchFromRegion = fbFetchFromNoRegion; - else - fetchFromRegion = fbFetchFromNRectangles; - - for (i = 0; i < width; ++i) { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) { - *(buffer + i) = 0; - } else { - int x1, x2, y1, y2, distx, idistx, disty, idisty; - uint32_t tl, tr, bl, br, r; - uint32_t ft, fb; - - if (!affine) { - pixman_fixed_48_16_t div; - div = ((pixman_fixed_48_16_t)v.vector[0] << 16)/v.vector[2]; - x1 = div >> 16; - distx = ((pixman_fixed_t)div >> 8) & 0xff; - div = ((pixman_fixed_48_16_t)v.vector[1] << 16)/v.vector[2]; - y1 = div >> 16; - disty = ((pixman_fixed_t)div >> 8) & 0xff; - } else { - x1 = v.vector[0] >> 16; - distx = (v.vector[0] >> 8) & 0xff; - y1 = v.vector[1] >> 16; - disty = (v.vector[1] >> 8) & 0xff; - } - x2 = x1 + 1; - y2 = y1 + 1; - - idistx = 256 - distx; - idisty = 256 - disty; - - x1 = CLIP (x1, 0, pict->width-1); - x2 = CLIP (x2, 0, pict->width-1); - y1 = CLIP (y1, 0, pict->height-1); - y2 = CLIP (y2, 0, pict->height-1); - - tl = fetchFromRegion(pict, x1, y1, buffer, fetch, box); - tr = fetchFromRegion(pict, x2, y1, buffer, fetch, box); - bl = fetchFromRegion(pict, x1, y2, buffer, fetch, box); - br = fetchFromRegion(pict, x2, y2, buffer, fetch, box); - - ft = FbGet8(tl,0) * idistx + FbGet8(tr,0) * distx; - fb = FbGet8(bl,0) * idistx + FbGet8(br,0) * distx; - r = (((ft * idisty + fb * disty) >> 16) & 0xff); - ft = FbGet8(tl,8) * idistx + FbGet8(tr,8) * distx; - fb = FbGet8(bl,8) * idistx + FbGet8(br,8) * distx; - r |= (((ft * idisty + fb * disty) >> 8) & 0xff00); - ft = FbGet8(tl,16) * idistx + FbGet8(tr,16) * distx; - fb = FbGet8(bl,16) * idistx + FbGet8(br,16) * distx; - r |= (((ft * idisty + fb * disty)) & 0xff0000); - ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx; - fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx; - r |= (((ft * idisty + fb * disty) << 8) & 0xff000000); - *(buffer + i) = r; - } - } - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -fbFetchTransformed_Bilinear_General(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t *box = NULL; - fetchPixelProc fetch; - fetchFromRegionProc fetchFromRegion; - int i; - - /* initialize the two function pointers */ - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - if(pixman_region_n_rects (pict->common.src_clip) == 1) - { - box = &(pict->common.src_clip->extents); - fetchFromRegion = fbFetchFromOneRectangle; - } - else - { - fetchFromRegion = fbFetchFromNRectangles; - } - - for (i = 0; i < width; ++i) - { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) { - *(buffer + i) = 0; - } else { - int x1, x2, y1, y2, distx, idistx, disty, idisty; - uint32_t tl, tr, bl, br, r; - uint32_t ft, fb; - - if (!affine) { - pixman_fixed_48_16_t div; - div = ((pixman_fixed_48_16_t)v.vector[0] << 16)/v.vector[2]; - x1 = div >> 16; - distx = ((pixman_fixed_t)div >> 8) & 0xff; - div = ((pixman_fixed_48_16_t)v.vector[1] << 16)/v.vector[2]; - y1 = div >> 16; - disty = ((pixman_fixed_t)div >> 8) & 0xff; - } else { - x1 = v.vector[0] >> 16; - distx = (v.vector[0] >> 8) & 0xff; - y1 = v.vector[1] >> 16; - disty = (v.vector[1] >> 8) & 0xff; - } - x2 = x1 + 1; - y2 = y1 + 1; - - idistx = 256 - distx; - idisty = 256 - disty; - - tl = fetchFromRegion(pict, x1, y1, buffer, fetch, box); - tr = fetchFromRegion(pict, x2, y1, buffer, fetch, box); - bl = fetchFromRegion(pict, x1, y2, buffer, fetch, box); - br = fetchFromRegion(pict, x2, y2, buffer, fetch, box); - - ft = FbGet8(tl,0) * idistx + FbGet8(tr,0) * distx; - fb = FbGet8(bl,0) * idistx + FbGet8(br,0) * distx; - r = (((ft * idisty + fb * disty) >> 16) & 0xff); - ft = FbGet8(tl,8) * idistx + FbGet8(tr,8) * distx; - fb = FbGet8(bl,8) * idistx + FbGet8(br,8) * distx; - r |= (((ft * idisty + fb * disty) >> 8) & 0xff00); - ft = FbGet8(tl,16) * idistx + FbGet8(tr,16) * distx; - fb = FbGet8(bl,16) * idistx + FbGet8(br,16) * distx; - r |= (((ft * idisty + fb * disty)) & 0xff0000); - ft = FbGet8(tl,24) * idistx + FbGet8(tr,24) * distx; - fb = FbGet8(bl,24) * idistx + FbGet8(br,24) * distx; - r |= (((ft * idisty + fb * disty) << 8) & 0xff000000); - *(buffer + i) = r; - } - } - - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -fbFetchTransformed_Convolution(bits_image_t * pict, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits, pixman_bool_t affine, pixman_vector_t v, pixman_vector_t unit) -{ - pixman_box16_t dummy; - fetchPixelProc fetch; - int i; - - pixman_fixed_t *params = pict->common.filter_params; - int32_t cwidth = pixman_fixed_to_int(params[0]); - int32_t cheight = pixman_fixed_to_int(params[1]); - int xoff = (params[0] - pixman_fixed_1) >> 1; - int yoff = (params[1] - pixman_fixed_1) >> 1; - fetch = FETCH_PIXEL_PROC_FOR_PICTURE(pict); - - params += 2; - for (i = 0; i < width; ++i) { - if (!mask || mask[i] & maskBits) - { - if (!v.vector[2]) { - *(buffer + i) = 0; - } else { - int x1, x2, y1, y2, x, y; - int32_t srtot, sgtot, sbtot, satot; - pixman_fixed_t *p = params; - - if (!affine) { - pixman_fixed_48_16_t tmp; - tmp = ((pixman_fixed_48_16_t)v.vector[0] << 16)/v.vector[2] - xoff; - x1 = pixman_fixed_to_int(tmp); - tmp = ((pixman_fixed_48_16_t)v.vector[1] << 16)/v.vector[2] - yoff; - y1 = pixman_fixed_to_int(tmp); - } else { - x1 = pixman_fixed_to_int(v.vector[0] - xoff); - y1 = pixman_fixed_to_int(v.vector[1] - yoff); - } - x2 = x1 + cwidth; - y2 = y1 + cheight; - - srtot = sgtot = sbtot = satot = 0; - - for (y = y1; y < y2; y++) { - int ty; - switch (pict->common.repeat) { - case PIXMAN_REPEAT_NORMAL: - ty = MOD (y, pict->height); - break; - case PIXMAN_REPEAT_PAD: - ty = CLIP (y, 0, pict->height-1); - break; - default: - ty = y; - } - for (x = x1; x < x2; x++) { - if (*p) { - int tx; - switch (pict->common.repeat) { - case PIXMAN_REPEAT_NORMAL: - tx = MOD (x, pict->width); - break; - case PIXMAN_REPEAT_PAD: - tx = CLIP (x, 0, pict->width-1); - break; - default: - tx = x; - } - if (pixman_region_contains_point (pict->common.src_clip, tx, ty, &dummy)) { - uint32_t c = fetch(pict, tx, ty); - - srtot += Red(c) * *p; - sgtot += Green(c) * *p; - sbtot += Blue(c) * *p; - satot += Alpha(c) * *p; - } - } - p++; - } - } - - satot >>= 16; - srtot >>= 16; - sgtot >>= 16; - sbtot >>= 16; - - if (satot < 0) satot = 0; else if (satot > 0xff) satot = 0xff; - if (srtot < 0) srtot = 0; else if (srtot > 0xff) srtot = 0xff; - if (sgtot < 0) sgtot = 0; else if (sgtot > 0xff) sgtot = 0xff; - if (sbtot < 0) sbtot = 0; else if (sbtot > 0xff) sbtot = 0xff; - - *(buffer + i) = ((satot << 24) | - (srtot << 16) | - (sgtot << 8) | - (sbtot )); - } - } - v.vector[0] += unit.vector[0]; - v.vector[1] += unit.vector[1]; - v.vector[2] += unit.vector[2]; - } -} - -static void -adjust (pixman_vector_t *v, pixman_vector_t *u, pixman_fixed_t adjustment) -{ - int delta_v = (adjustment * v->vector[2]) >> 16; - int delta_u = (adjustment * u->vector[2]) >> 16; - - v->vector[0] += delta_v; - v->vector[1] += delta_v; - - u->vector[0] += delta_u; - u->vector[1] += delta_u; -} - -void -FB_FETCH_TRANSFORMED(bits_image_t * pict, int x, int y, int width, uint32_t *buffer, uint32_t *mask, uint32_t maskBits) -{ - uint32_t *bits; - int32_t stride; - pixman_vector_t v; - pixman_vector_t unit; - pixman_bool_t affine = TRUE; - - bits = pict->bits; - stride = pict->rowstride; - - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed(x) + pixman_fixed_1 / 2; - v.vector[1] = pixman_int_to_fixed(y) + pixman_fixed_1 / 2; - v.vector[2] = pixman_fixed_1; - - /* when using convolution filters or PIXMAN_REPEAT_PAD one might get here without a transform */ - if (pict->common.transform) - { - if (!pixman_transform_point_3d (pict->common.transform, &v)) - return; - unit.vector[0] = pict->common.transform->matrix[0][0]; - unit.vector[1] = pict->common.transform->matrix[1][0]; - unit.vector[2] = pict->common.transform->matrix[2][0]; - affine = v.vector[2] == pixman_fixed_1 && unit.vector[2] == 0; - } - else - { - unit.vector[0] = pixman_fixed_1; - unit.vector[1] = 0; - unit.vector[2] = 0; - } - - /* This allows filtering code to pretend that pixels are located at integer coordinates */ - adjust (&v, &unit, -(pixman_fixed_1 / 2)); - - if (pict->common.filter == PIXMAN_FILTER_NEAREST || pict->common.filter == PIXMAN_FILTER_FAST) - { - /* Round down to closest integer, ensuring that 0.5 rounds to 0, not 1 */ - adjust (&v, &unit, pixman_fixed_1 / 2 - pixman_fixed_e); - - if (pict->common.repeat == PIXMAN_REPEAT_NORMAL) - { - fbFetchTransformed_Nearest_Normal(pict, width, buffer, mask, maskBits, affine, v, unit); - - } - else if (pict->common.repeat == PIXMAN_REPEAT_PAD) - { - fbFetchTransformed_Nearest_Pad(pict, width, buffer, mask, maskBits, affine, v, unit); - } - else - { - fbFetchTransformed_Nearest_General(pict, width, buffer, mask, maskBits, affine, v, unit); - } - } else if (pict->common.filter == PIXMAN_FILTER_BILINEAR || - pict->common.filter == PIXMAN_FILTER_GOOD || - pict->common.filter == PIXMAN_FILTER_BEST) - { - if (pict->common.repeat == PIXMAN_REPEAT_NORMAL) - { - fbFetchTransformed_Bilinear_Normal(pict, width, buffer, mask, maskBits, affine, v, unit); - } - else if (pict->common.repeat == PIXMAN_REPEAT_PAD) - { - fbFetchTransformed_Bilinear_Pad(pict, width, buffer, mask, maskBits, affine, v, unit); - } - else - { - fbFetchTransformed_Bilinear_General(pict, width, buffer, mask, maskBits, affine, v, unit); - } - } - else if (pict->common.filter == PIXMAN_FILTER_CONVOLUTION) - { - /* Round to closest integer, ensuring that 0.5 rounds to 0, not 1 */ - adjust (&v, &unit, pixman_fixed_1 / 2 - pixman_fixed_e); - - fbFetchTransformed_Convolution(pict, width, buffer, mask, maskBits, affine, v, unit); - } -} - -#define SCANLINE_BUFFER_LENGTH 2048 - -void -FB_FETCH_EXTERNAL_ALPHA(bits_image_t * pict, int x, int y, int width, - uint32_t *buffer, uint32_t *mask, uint32_t maskBits) -{ - int i; - uint32_t _alpha_buffer[SCANLINE_BUFFER_LENGTH]; - uint32_t *alpha_buffer = _alpha_buffer; - - if (!pict->common.alpha_map) { - FB_FETCH_TRANSFORMED (pict, x, y, width, buffer, mask, maskBits); - return; - } - if (width > SCANLINE_BUFFER_LENGTH) - alpha_buffer = (uint32_t *) pixman_malloc_ab (width, sizeof(uint32_t)); - - FB_FETCH_TRANSFORMED(pict, x, y, width, buffer, mask, maskBits); - FB_FETCH_TRANSFORMED((bits_image_t *)pict->common.alpha_map, x - pict->common.alpha_origin.x, - y - pict->common.alpha_origin.y, width, alpha_buffer, - mask, maskBits); - for (i = 0; i < width; ++i) { - if (!mask || mask[i] & maskBits) - { - int a = alpha_buffer[i]>>24; - *(buffer + i) = (a << 24) - | (div_255(Red(*(buffer + i)) * a) << 16) - | (div_255(Green(*(buffer + i)) * a) << 8) - | (div_255(Blue(*(buffer + i)) * a)); - } - } - - if (alpha_buffer != _alpha_buffer) - free(alpha_buffer); -} - -void -FB_STORE_EXTERNAL_ALPHA(bits_image_t * pict, int x, int y, int width, - uint32_t *buffer) -{ - uint32_t *bits, *alpha_bits; - int32_t stride, astride; - int ax, ay; - storeProc store; - storeProc astore; - const pixman_indexed_t * indexed = pict->indexed; - const pixman_indexed_t * aindexed; - - if (!pict->common.alpha_map) { - // XXX[AGP]: This should never happen! - // fbStore(pict, x, y, width, buffer); - abort(); - return; - } - - store = STORE_PROC_FOR_PICTURE(pict); - astore = STORE_PROC_FOR_PICTURE(pict->common.alpha_map); - aindexed = pict->common.alpha_map->indexed; - - ax = x; - ay = y; - - bits = pict->bits; - stride = pict->rowstride; - - alpha_bits = pict->common.alpha_map->bits; - astride = pict->common.alpha_map->rowstride; - - bits += y*stride; - alpha_bits += (ay - pict->common.alpha_origin.y)*astride; - - - store((pixman_image_t *)pict, bits, buffer, x, width, indexed); - astore((pixman_image_t *)pict->common.alpha_map, - alpha_bits, buffer, ax - pict->common.alpha_origin.x, width, aindexed); -} - diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-trap.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-trap.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-trap.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-trap.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,284 +0,0 @@ -/* - * Copyright © 2004 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include "pixman-private.h" - -typedef uint32_t FbBits; - -void -pixman_add_traps (pixman_image_t * image, - int16_t x_off, - int16_t y_off, - int ntrap, - pixman_trap_t *traps) -{ - int bpp; - int width; - int height; - - pixman_fixed_t x_off_fixed; - pixman_fixed_t y_off_fixed; - pixman_edge_t l, r; - pixman_fixed_t t, b; - - width = image->bits.width; - height = image->bits.height; - bpp = PIXMAN_FORMAT_BPP (image->bits.format); - - x_off_fixed = pixman_int_to_fixed(x_off); - y_off_fixed = pixman_int_to_fixed(y_off); - - while (ntrap--) - { - t = traps->top.y + y_off_fixed; - if (t < 0) - t = 0; - t = pixman_sample_ceil_y (t, bpp); - - b = traps->bot.y + y_off_fixed; - if (pixman_fixed_to_int (b) >= height) - b = pixman_int_to_fixed (height) - 1; - b = pixman_sample_floor_y (b, bpp); - - if (b >= t) - { - /* initialize edge walkers */ - pixman_edge_init (&l, bpp, t, - traps->top.l + x_off_fixed, - traps->top.y + y_off_fixed, - traps->bot.l + x_off_fixed, - traps->bot.y + y_off_fixed); - - pixman_edge_init (&r, bpp, t, - traps->top.r + x_off_fixed, - traps->top.y + y_off_fixed, - traps->bot.r + x_off_fixed, - traps->bot.y + y_off_fixed); - - pixman_rasterize_edges (image, &l, &r, t, b); - } - traps++; - } -} - -static void -dump_image (pixman_image_t *image, - const char *title) -{ - int i, j; - - if (!image->type == BITS) - { - printf ("%s is not a regular image\n", title); - } - - if (!image->bits.format == PIXMAN_a8) - { - printf ("%s is not an alpha mask\n", title); - } - - printf ("\n\n\n%s: \n", title); - - for (i = 0; i < image->bits.height; ++i) - { - uint8_t *line = - (uint8_t *)&(image->bits.bits[i * image->bits.rowstride]); - - for (j = 0; j < image->bits.width; ++j) - printf ("%c", line[j]? '#' : ' '); - - printf ("\n"); - } -} - -void -pixman_add_trapezoids (pixman_image_t *image, - int16_t x_off, - int y_off, - int ntraps, - const pixman_trapezoid_t *traps) -{ - int i; - -#if 0 - dump_image (image, "before"); -#endif - - for (i = 0; i < ntraps; ++i) - { - const pixman_trapezoid_t *trap = &(traps[i]); - - if (!pixman_trapezoid_valid (trap)) - continue; - - pixman_rasterize_trapezoid (image, trap, x_off, y_off); - } - -#if 0 - dump_image (image, "after"); -#endif -} - -void -pixman_rasterize_trapezoid (pixman_image_t * image, - const pixman_trapezoid_t *trap, - int x_off, - int y_off) -{ - int bpp; - int width; - int height; - - pixman_fixed_t x_off_fixed; - pixman_fixed_t y_off_fixed; - pixman_edge_t l, r; - pixman_fixed_t t, b; - - return_if_fail (image->type == BITS); - - if (!pixman_trapezoid_valid (trap)) - return; - - width = image->bits.width; - height = image->bits.height; - bpp = PIXMAN_FORMAT_BPP (image->bits.format); - - x_off_fixed = pixman_int_to_fixed(x_off); - y_off_fixed = pixman_int_to_fixed(y_off); - t = trap->top + y_off_fixed; - if (t < 0) - t = 0; - t = pixman_sample_ceil_y (t, bpp); - - b = trap->bottom + y_off_fixed; - if (pixman_fixed_to_int (b) >= height) - b = pixman_int_to_fixed (height) - 1; - b = pixman_sample_floor_y (b, bpp); - - if (b >= t) - { - /* initialize edge walkers */ - pixman_line_fixed_edge_init (&l, bpp, t, &trap->left, x_off, y_off); - pixman_line_fixed_edge_init (&r, bpp, t, &trap->right, x_off, y_off); - - pixman_rasterize_edges (image, &l, &r, t, b); - } -} - -#if 0 -static int -_GreaterY (pixman_point_fixed_t *a, pixman_point_fixed_t *b) -{ - if (a->y == b->y) - return a->x > b->x; - return a->y > b->y; -} - -/* - * Note that the definition of this function is a bit odd because - * of the X coordinate space (y increasing downwards). - */ -static int -_Clockwise (pixman_point_fixed_t *ref, pixman_point_fixed_t *a, pixman_point_fixed_t *b) -{ - pixman_point_fixed_t ad, bd; - - ad.x = a->x - ref->x; - ad.y = a->y - ref->y; - bd.x = b->x - ref->x; - bd.y = b->y - ref->y; - - return ((pixman_fixed_32_32_t) bd.y * ad.x - (pixman_fixed_32_32_t) ad.y * bd.x) < 0; -} - -/* FIXME -- this could be made more efficient */ -void -fbAddTriangles (pixman_image_t * pPicture, - int16_t x_off, - int16_t y_off, - int ntri, - xTriangle *tris) -{ - pixman_point_fixed_t *top, *left, *right, *tmp; - xTrapezoid trap; - - for (; ntri; ntri--, tris++) - { - top = &tris->p1; - left = &tris->p2; - right = &tris->p3; - if (_GreaterY (top, left)) { - tmp = left; left = top; top = tmp; - } - if (_GreaterY (top, right)) { - tmp = right; right = top; top = tmp; - } - if (_Clockwise (top, right, left)) { - tmp = right; right = left; left = tmp; - } - - /* - * Two cases: - * - * + + - * / \ / \ - * / \ / \ - * / + + \ - * / -- -- \ - * / -- -- \ - * / --- --- \ - * +-- --+ - */ - - trap.top = top->y; - trap.left.p1 = *top; - trap.left.p2 = *left; - trap.right.p1 = *top; - trap.right.p2 = *right; - if (right->y < left->y) - trap.bottom = right->y; - else - trap.bottom = left->y; - fbRasterizeTrapezoid (pPicture, &trap, x_off, y_off); - if (right->y < left->y) - { - trap.top = right->y; - trap.bottom = left->y; - trap.right.p1 = *right; - trap.right.p2 = *left; - } - else - { - trap.top = left->y; - trap.bottom = right->y; - trap.left.p1 = *left; - trap.left.p2 = *right; - } - fbRasterizeTrapezoid (pPicture, &trap, x_off, y_off); - } -} -#endif diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-utils.c libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-utils.c --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-utils.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-utils.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,589 +0,0 @@ -/* - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include "pixman-private.h" -#include "pixman-mmx.h" - -pixman_bool_t -pixman_transform_point_3d (pixman_transform_t *transform, - pixman_vector_t *vector) -{ - pixman_vector_t result; - int i, j; - pixman_fixed_32_32_t partial; - pixman_fixed_48_16_t v; - - for (j = 0; j < 3; j++) - { - v = 0; - for (i = 0; i < 3; i++) - { - partial = ((pixman_fixed_48_16_t) transform->matrix[j][i] * - (pixman_fixed_48_16_t) vector->vector[i]); - v += partial >> 16; - } - - if (v > pixman_max_fixed_48_16 || v < pixman_min_fixed_48_16) - return FALSE; - - result.vector[j] = (pixman_fixed_48_16_t) v; - } - - if (!result.vector[2]) - return FALSE; - - *vector = result; - return TRUE; -} - -pixman_bool_t -pixman_blt (uint32_t *src_bits, - uint32_t *dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, int src_y, - int dst_x, int dst_y, - int width, int height) -{ -#ifdef USE_MMX - if (pixman_have_mmx()) - { - return pixman_blt_mmx (src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, - src_x, src_y, dst_x, dst_y, width, height); - } - else -#endif - return FALSE; -} - -static void -pixman_fill8 (uint32_t *bits, - int stride, - int x, - int y, - int width, - int height, - uint32_t xor) -{ - int byte_stride = stride * (int) sizeof (uint32_t); - uint8_t *dst = (uint8_t *) bits; - uint8_t v = xor & 0xff; - int i; - - dst = dst + y * byte_stride + x; - - while (height--) - { - for (i = 0; i < width; ++i) - dst[i] = v; - - dst += byte_stride; - } -} - -static void -pixman_fill16 (uint32_t *bits, - int stride, - int x, - int y, - int width, - int height, - uint32_t xor) -{ - int short_stride = (stride * (int) sizeof (uint32_t)) / (int) sizeof (uint16_t); - uint16_t *dst = (uint16_t *)bits; - uint16_t v = xor & 0xffff; - int i; - - dst = dst + y * short_stride + x; - - while (height--) - { - for (i = 0; i < width; ++i) - dst[i] = v; - - dst += short_stride; - } -} - -static void -pixman_fill32 (uint32_t *bits, - int stride, - int x, - int y, - int width, - int height, - uint32_t xor) -{ - int i; - - bits = bits + y * stride + x; - - while (height--) - { - for (i = 0; i < width; ++i) - bits[i] = xor; - - bits += stride; - } -} - -pixman_bool_t -pixman_fill (uint32_t *bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t xor) -{ -#if 0 - printf ("filling: %d %d %d %d (stride: %d, bpp: %d) pixel: %x\n", - x, y, width, height, stride, bpp, xor); -#endif - -#ifdef USE_MMX - if (!pixman_have_mmx() || !pixman_fill_mmx (bits, stride, bpp, x, y, width, height, xor)) -#endif - { - switch (bpp) - { - case 8: - pixman_fill8 (bits, stride, x, y, width, height, xor); - break; - - case 16: - pixman_fill16 (bits, stride, x, y, width, height, xor); - break; - - case 32: - pixman_fill32 (bits, stride, x, y, width, height, xor); - break; - - default: - return FALSE; - break; - } - } - - return TRUE; -} - - -/* - * Compute the smallest value no less than y which is on a - * grid row - */ - -pixman_fixed_t -pixman_sample_ceil_y (pixman_fixed_t y, int n) -{ - pixman_fixed_t f = pixman_fixed_frac(y); - pixman_fixed_t i = pixman_fixed_floor(y); - - f = ((f + Y_FRAC_FIRST(n)) / STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n); - if (f > Y_FRAC_LAST(n)) - { - f = Y_FRAC_FIRST(n); - i += pixman_fixed_1; - } - return (i | f); -} - -#define _div(a,b) ((a) >= 0 ? (a) / (b) : -((-(a) + (b) - 1) / (b))) - -/* - * Compute the largest value no greater than y which is on a - * grid row - */ -pixman_fixed_t -pixman_sample_floor_y (pixman_fixed_t y, int n) -{ - pixman_fixed_t f = pixman_fixed_frac(y); - pixman_fixed_t i = pixman_fixed_floor (y); - - f = _div(f - Y_FRAC_FIRST(n), STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n); - if (f < Y_FRAC_FIRST(n)) - { - f = Y_FRAC_LAST(n); - i -= pixman_fixed_1; - } - return (i | f); -} - -/* - * Step an edge by any amount (including negative values) - */ -void -pixman_edge_step (pixman_edge_t *e, int n) -{ - pixman_fixed_48_16_t ne; - - e->x += n * e->stepx; - - ne = e->e + n * (pixman_fixed_48_16_t) e->dx; - - if (n >= 0) - { - if (ne > 0) - { - int nx = (ne + e->dy - 1) / e->dy; - e->e = ne - nx * (pixman_fixed_48_16_t) e->dy; - e->x += nx * e->signdx; - } - } - else - { - if (ne <= -e->dy) - { - int nx = (-ne) / e->dy; - e->e = ne + nx * (pixman_fixed_48_16_t) e->dy; - e->x -= nx * e->signdx; - } - } -} - -/* - * A private routine to initialize the multi-step - * elements of an edge structure - */ -static void -_pixman_edge_tMultiInit (pixman_edge_t *e, int n, pixman_fixed_t *stepx_p, pixman_fixed_t *dx_p) -{ - pixman_fixed_t stepx; - pixman_fixed_48_16_t ne; - - ne = n * (pixman_fixed_48_16_t) e->dx; - stepx = n * e->stepx; - if (ne > 0) - { - int nx = ne / e->dy; - ne -= nx * e->dy; - stepx += nx * e->signdx; - } - *dx_p = ne; - *stepx_p = stepx; -} - -/* - * Initialize one edge structure given the line endpoints and a - * starting y value - */ -void -pixman_edge_init (pixman_edge_t *e, - int n, - pixman_fixed_t y_start, - pixman_fixed_t x_top, - pixman_fixed_t y_top, - pixman_fixed_t x_bot, - pixman_fixed_t y_bot) -{ - pixman_fixed_t dx, dy; - - e->x = x_top; - e->e = 0; - dx = x_bot - x_top; - dy = y_bot - y_top; - e->dy = dy; - e->dx = 0; - if (dy) - { - if (dx >= 0) - { - e->signdx = 1; - e->stepx = dx / dy; - e->dx = dx % dy; - e->e = -dy; - } - else - { - e->signdx = -1; - e->stepx = -(-dx / dy); - e->dx = -dx % dy; - e->e = 0; - } - - _pixman_edge_tMultiInit (e, STEP_Y_SMALL(n), &e->stepx_small, &e->dx_small); - _pixman_edge_tMultiInit (e, STEP_Y_BIG(n), &e->stepx_big, &e->dx_big); - } - pixman_edge_step (e, y_start - y_top); -} - -/* - * Initialize one edge structure given a line, starting y value - * and a pixel offset for the line - */ -void -pixman_line_fixed_edge_init (pixman_edge_t *e, - int n, - pixman_fixed_t y, - const pixman_line_fixed_t *line, - int x_off, - int y_off) -{ - pixman_fixed_t x_off_fixed = pixman_int_to_fixed(x_off); - pixman_fixed_t y_off_fixed = pixman_int_to_fixed(y_off); - const pixman_point_fixed_t *top, *bot; - - if (line->p1.y <= line->p2.y) - { - top = &line->p1; - bot = &line->p2; - } - else - { - top = &line->p2; - bot = &line->p1; - } - pixman_edge_init (e, n, y, - top->x + x_off_fixed, - top->y + y_off_fixed, - bot->x + x_off_fixed, - bot->y + y_off_fixed); -} - -pixman_bool_t -pixman_multiply_overflows_int (unsigned int a, - unsigned int b) -{ - return a >= INT32_MAX / b; -} - -pixman_bool_t -pixman_addition_overflows_int (unsigned int a, - unsigned int b) -{ - return a > INT32_MAX - b; -} - -void * -pixman_malloc_ab(unsigned int a, - unsigned int b) -{ - if (a >= INT32_MAX / b) - return NULL; - - return malloc (a * b); -} - -void * -pixman_malloc_abc (unsigned int a, - unsigned int b, - unsigned int c) -{ - if (a >= INT32_MAX / b) - return NULL; - else if (a * b >= INT32_MAX / c) - return NULL; - else - return malloc (a * b * c); -} - - -/** - * pixman_version: - * - * Returns the version of the pixman library encoded in a single - * integer as per %PIXMAN_VERSION_ENCODE. The encoding ensures that - * later versions compare greater than earlier versions. - * - * A run-time comparison to check that pixman's version is greater than - * or equal to version X.Y.Z could be performed as follows: - * - * - * if (pixman_version() >= PIXMAN_VERSION_ENCODE(X,Y,Z)) {...} - * - * - * See also pixman_version_string() as well as the compile-time - * equivalents %PIXMAN_VERSION and %PIXMAN_VERSION_STRING. - * - * Return value: the encoded version. - **/ -int -pixman_version (void) -{ - return PIXMAN_VERSION; -} - -/** - * pixman_version_string: - * - * Returns the version of the pixman library as a human-readable string - * of the form "X.Y.Z". - * - * See also pixman_version() as well as the compile-time equivalents - * %PIXMAN_VERSION_STRING and %PIXMAN_VERSION. - * - * Return value: a string containing the version. - **/ -const char* -pixman_version_string (void) -{ - return PIXMAN_VERSION_STRING; -} - -/** - * pixman_format_supported_destination: - * @format: A pixman_format_code_t format - * - * Return value: whether the provided format code is a supported - * format for a pixman surface used as a destination in - * rendering. - * - * Currently, all pixman_format_code_t values are supported - * except for the YUV formats. - **/ -pixman_bool_t -pixman_format_supported_destination (pixman_format_code_t format) -{ - switch (format) { - /* 32 bpp formats */ - case PIXMAN_a8r8g8b8: - case PIXMAN_x8r8g8b8: - case PIXMAN_a8b8g8r8: - case PIXMAN_x8b8g8r8: - case PIXMAN_r8g8b8: - case PIXMAN_b8g8r8: - case PIXMAN_r5g6b5: - case PIXMAN_b5g6r5: - /* 16 bpp formats */ - case PIXMAN_a1r5g5b5: - case PIXMAN_x1r5g5b5: - case PIXMAN_a1b5g5r5: - case PIXMAN_x1b5g5r5: - case PIXMAN_a4r4g4b4: - case PIXMAN_x4r4g4b4: - case PIXMAN_a4b4g4r4: - case PIXMAN_x4b4g4r4: - /* 8bpp formats */ - case PIXMAN_a8: - case PIXMAN_r3g3b2: - case PIXMAN_b2g3r3: - case PIXMAN_a2r2g2b2: - case PIXMAN_a2b2g2r2: - case PIXMAN_c8: - case PIXMAN_g8: - case PIXMAN_x4a4: - /* Collides with PIXMAN_c8 - case PIXMAN_x4c4: - */ - /* Collides with PIXMAN_g8 - case PIXMAN_x4g4: - */ - /* 4bpp formats */ - case PIXMAN_a4: - case PIXMAN_r1g2b1: - case PIXMAN_b1g2r1: - case PIXMAN_a1r1g1b1: - case PIXMAN_a1b1g1r1: - case PIXMAN_c4: - case PIXMAN_g4: - /* 1bpp formats */ - case PIXMAN_a1: - case PIXMAN_g1: - return TRUE; - - /* YUV formats */ - case PIXMAN_yuy2: - case PIXMAN_yv12: - default: - return FALSE; - } -} - -/** - * pixman_format_supported_source: - * @format: A pixman_format_code_t format - * - * Return value: whether the provided format code is a supported - * format for a pixman surface used as a source in - * rendering. - * - * Currently, all pixman_format_code_t values are supported. - **/ -pixman_bool_t -pixman_format_supported_source (pixman_format_code_t format) -{ - switch (format) { - /* 32 bpp formats */ - case PIXMAN_a8r8g8b8: - case PIXMAN_x8r8g8b8: - case PIXMAN_a8b8g8r8: - case PIXMAN_x8b8g8r8: - case PIXMAN_r8g8b8: - case PIXMAN_b8g8r8: - case PIXMAN_r5g6b5: - case PIXMAN_b5g6r5: - /* 16 bpp formats */ - case PIXMAN_a1r5g5b5: - case PIXMAN_x1r5g5b5: - case PIXMAN_a1b5g5r5: - case PIXMAN_x1b5g5r5: - case PIXMAN_a4r4g4b4: - case PIXMAN_x4r4g4b4: - case PIXMAN_a4b4g4r4: - case PIXMAN_x4b4g4r4: - /* 8bpp formats */ - case PIXMAN_a8: - case PIXMAN_r3g3b2: - case PIXMAN_b2g3r3: - case PIXMAN_a2r2g2b2: - case PIXMAN_a2b2g2r2: - case PIXMAN_c8: - case PIXMAN_g8: - case PIXMAN_x4a4: - /* Collides with PIXMAN_c8 - case PIXMAN_x4c4: - */ - /* Collides with PIXMAN_g8 - case PIXMAN_x4g4: - */ - /* 4bpp formats */ - case PIXMAN_a4: - case PIXMAN_r1g2b1: - case PIXMAN_b1g2r1: - case PIXMAN_a1r1g1b1: - case PIXMAN_a1b1g1r1: - case PIXMAN_c4: - case PIXMAN_g4: - /* 1bpp formats */ - case PIXMAN_a1: - case PIXMAN_g1: - /* YUV formats */ - case PIXMAN_yuy2: - case PIXMAN_yv12: - return TRUE; - - default: - return FALSE; - } -} diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-version.h libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-version.h --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-version.h 2011-12-02 17:35:33.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-version.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#ifndef PIXMAN_VERSION_H__ -#define PIXMAN_VERSION_H__ - -#ifndef PIXMAN_H__ -# error pixman-version.h should only be included by pixman.h -#endif - -#define PIXMAN_VERSION_MAJOR 0 -#define PIXMAN_VERSION_MINOR 10 -#define PIXMAN_VERSION_MICRO 0 - -#define PIXMAN_VERSION_STRING "0.10.0" - -#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ - ((major) * 10000) \ - + ((minor) * 100) \ - + ((micro) * 1)) - -#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \ - PIXMAN_VERSION_MAJOR, \ - PIXMAN_VERSION_MINOR, \ - PIXMAN_VERSION_MICRO) - -#endif /* PIXMAN_VERSION_H__ */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman/pixman-version.h.in libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-version.h.in --- libgdiplus-4.0-2.10.9/pixman/pixman/pixman-version.h.in 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman/pixman-version.h.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#ifndef PIXMAN_VERSION_H__ -#define PIXMAN_VERSION_H__ - -#ifndef PIXMAN_H__ -# error pixman-version.h should only be included by pixman.h -#endif - -#define PIXMAN_VERSION_MAJOR @PIXMAN_VERSION_MAJOR@ -#define PIXMAN_VERSION_MINOR @PIXMAN_VERSION_MINOR@ -#define PIXMAN_VERSION_MICRO @PIXMAN_VERSION_MICRO@ - -#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@" - -#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ - ((major) * 10000) \ - + ((minor) * 100) \ - + ((micro) * 1)) - -#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \ - PIXMAN_VERSION_MAJOR, \ - PIXMAN_VERSION_MINOR, \ - PIXMAN_VERSION_MICRO) - -#endif /* PIXMAN_VERSION_H__ */ diff -Nru libgdiplus-4.0-2.10.9/pixman/pixman-1.pc.in libgdiplus-4.0-4.2.3+precise1/pixman/pixman-1.pc.in --- libgdiplus-4.0-2.10.9/pixman/pixman-1.pc.in 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/pixman-1.pc.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: Pixman -Description: The pixman library (version 1) -Version: @PACKAGE_VERSION@ -Cflags: -I${includedir}/pixman-1 @DEP_CFLAGS@ -Libs: -L${libdir} -lpixman-1 @DEP_LIBS@ - diff -Nru libgdiplus-4.0-2.10.9/pixman/README libgdiplus-4.0-4.2.3+precise1/pixman/README --- libgdiplus-4.0-2.10.9/pixman/README 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -pixman is a library that provides low-level pixel manipulation -features such as image compositing and trapezoid rasterization. - -Please submit bugs & patches to the libpixman bugzilla: - - https://bugs.freedesktop.org/enter_bug.cgi?product=libpixman - -All questions regarding this software should be directed to either the -Xorg mailing list: - - http://lists.freedesktop.org/mailman/listinfo/xorg - -or the cairo mailing list: - - http://lists.freedesktop.org/mailman/listinfo/cairo - -The master development code repository can be found at: - - git://anongit.freedesktop.org/git/pixman - - http://gitweb.freedesktop.org/?p=pixman;a=summary - -For more information on the git code manager, see: - - http://wiki.x.org/wiki/GitPage - diff -Nru libgdiplus-4.0-2.10.9/pixman/TODO libgdiplus-4.0-4.2.3+precise1/pixman/TODO --- libgdiplus-4.0-2.10.9/pixman/TODO 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/pixman/TODO 1970-01-01 00:00:00.000000000 +0000 @@ -1,196 +0,0 @@ - - Update the RLEASING file - - - Things to keep in mind if breaking ABI: - - - There should be a guard #ifndef I_AM_EITHER_CAIRO_OR_THE_X_SERVER - - - X server will require 16.16 essentially forever. Can we get - the required precision by simply adding offset_x/y to the - relevant rendering API? - - - pixman_image_set_indexed() should copy its argument, and X - should be ported over to use a pixman_image as the - representation of a Picture, rather than creating one on each - operation. - - - We should get rid of pixman_set_static_pointers() - - - We should get rid of the various trapezoid helper functions(). - (They only exist because they are theoretically available to - drivers). - - - Regions should become 32 bit - - - There should only be one trap rasterization API. - - - The PIXMAN_g8/c8/etc formats should use the A channel - to indicate the actual depth. That way PIXMAN_x4c4 and PIXMAN_c8 - won't collide. - - - Make pixman_region_point_in() survive a NULL box, then fix up - pixman-compose.c - - - Test suite - - - Add a general way of dealing with architecture specific - fast-paths. The current idea is to have each operation that can - be optimized is called through a function pointer that is - initially set to an initialization function that is responsible for - setting the function pointer to the appropriate fast-path. - - - Go through things marked FIXME - - - Add calls to prepare and finish access where necessary. grep for - ACCESS_MEM, and make sure they are correctly wrapped in prepare - and finish. - - - restore READ/WRITE in the fbcompose combiners since they sometimes - store directly to destination drawables. - - - It probably makes sense to move the more strange X region API - into pixman as well, but guarded with PIXMAN_XORG_COMPATIBILITY - - - Reinstate the FbBits typedef? At the moment we don't - even have the FbBits type; we just use uint32_t everywhere. - - Keith says in bug 2335: - - The 64-bit code in fb (pixman) is probably broken; it hasn't been - used in quite some time as PCI (and AGP) is 32-bits wide, so - doing things 64-bits at a time is a net loss. To quickly fix - this, I suggest just using 32-bit datatypes by setting - IC_SHIFT to 5 for all machines. - - - Consider whether calling regions region16 is really such a great - idea. Vlad wants 32 bit regions for Cairo. This will break X server - ABI, but should otherwise be mostly harmless, though a - pixman_region_get_boxes16() may be useful. - - - Consider optimizing the 8/16 bit solid fills in pixman-util.c by - storing more than one value at a time. - - - Add an image cache to prevent excessive malloc/free. Note that pixman - needs to be thread safe when used from cairo. - - - Moving to 24.8 coordinates. This is tricky because X is still - defined as 16.16 and will be basically forever. It's possible we - could do this by adding extra offset_x/y parameters to the - trapezoid calls. The X server could then just call the API with - (0, 0). Cairo would have to make sure that the delta *within* a - batch of trapezoids does not exceed 16 bit. - - - Review the pixman_format_code_t enum to make sure it will support - future formats. Some formats we will probably need: - - ARGB/ABGR with 16/32/64 bit integer/floating channels - YUV2, - YV12 - - Also we may need the ability to distinguish between PICT_c8 and - PICT_x4c4. (This could be done by interpreting the A channel as - the depth for TYPE_COLOR and TYPE_GRAY formats). - - A possibility may be to reserve the two top bits and make them - encode "number of places to shift the channel widths given" Since - these bits are 00 at the moment everything will continue to work, - but these additional widths will be allowed: - - All even widths between 18-32 - All multiples of four widths between 33 and 64 - All multiples of eight between 64 and 128 - - This means things like r21g22b21 won't work - is that worth - worrying about? I don't think so. And of course the bpp field - can't handle a depth of over 256, so > 64 bit channels arent' - really all that useful. - - We could reserve one extra bit to indicate floating point, but - we may also just add - - PIXMAN_TYPE_ARGB_FLOAT - PIXMAN_TYPE_BGRA_FLOAT - PIXMAN_TYPE_A_FLOAT - - image types. With five bits we can support up to 32 different - format types, which should be enough for everybody, even if we - decide to support all the various video formats here: - - http://www.fourcc.org/yuv.php - - It may make sense to have a PIXMAN_TYPE_YUV, and then use the - channel bits to specify the exact subtype. - - Another possibility is to add - - PIXMAN_TYPE_ARGB_W - PIXMAN_TYPE_ARGB_WW - - where the channel widths would get 16 and 32 added to them, - respectively. - - What about color spaces such a linear vs. srGB etc.? - -done: - -- Get rid of the switch-of-doom; replace it with a big table - describing the various fast paths. - -- Make source clipping optional. - - done: source clipping happens through an indirection. - still needs to make the indirection settable. (And call it - from X) - -- Run cairo test suite; fix bugs - - one bug in source-scale-clip - - - Remove the warning suppression in the ACCESS_MEM macro and fix the - warnings that are real - - irrelevant now. - -- make the wrapper functions global instead of image specific - - this won't work since pixman is linked to both fb and wfb - -- Add non-mmx solid fill - -- Make sure the endian-ness macros are defined correctly. - -- The rectangles in a region probably shouldn't be returned const as - the X server will be changing them. - -- Right now we _always_ have a clip region, which is empty by default. - Why does this work at all? It probably doesn't. The server - distinguishes two cases, one where nothing is clipped (CT_NONE), and - one where there is a clip region (CT_REGION). - -- Default clip region should be the full image - - - Test if pseudo color still works. It does, but it also shows that - copying a pixman_indexed_t on every composite operation is not - going to fly. So, for now set_indexed() does not copy the - indexed table. - - Also just the malloc() to allocate a pixman image shows up pretty - high. - - Options include - - - Make all the setters not copy their arguments - - - Possibly combined with going back to the stack allocated - approach that we already use for regions. - - - Keep a cached pixman_image_t around for every picture. It would - have to be kept uptodate every time something changes about the - picture. - - - Break the X server ABI and simply have the relevant parameter - stored in the pixman image. This would have the additional benefits - that: - - - We can get rid of the annoying repeat field which is duplicated - elsewhere. - - - We can use pixman_color_t and pixman_gradient_stop_t - etc. instead of the types that are defined in - renderproto.h - diff -Nru libgdiplus-4.0-2.10.9/README libgdiplus-4.0-4.2.3+precise1/README --- libgdiplus-4.0-2.10.9/README 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/README 2016-04-15 08:16:31.000000000 +0000 @@ -6,10 +6,6 @@ This requires the libraries used by the Cairo vector graphics library to build (freetype2, fontconfig, Xft2 and libpng, basically). - See cairo/README. Note that libpixman is included in this package already. - - If the system cairo is newer than the bundled version (1.6.4) provided - by libgdiplus then the newer version will be used To build: @@ -24,8 +20,7 @@ --with-pango - This build libgdiplus using Pango to render (measure and draw) - all of it's text. This can only be enabled if libgdiplus is built - with the *system* cairo and requires Pango version 1.10 (or later). + This builds libgdiplus using Pango to render (measure and draw) + all of it's text. This requires Pango version 1.10 (or later). diff -Nru libgdiplus-4.0-2.10.9/src/bitmap.c libgdiplus-4.0-4.2.3+precise1/src/bitmap.c --- libgdiplus-4.0-2.10.9/src/bitmap.c 2012-01-30 23:37:20.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/bitmap.c 2016-04-15 08:16:31.000000000 +0000 @@ -1700,6 +1700,90 @@ } } +static BOOL /* <-- TRUE if optimisation was possible and copy done, else FALSE */ +gdip_pixel_stream_copy_optimized (StreamingState *dst_state, StreamingState *src_state) +{ + unsigned int ret; + + if (src_state == NULL) return FALSE; + if (dst_state == NULL) return FALSE; + + /* in a first shot we only support copy operations for cases where source and destination storage width is exactly the same */ + if (src_state->pixels_per_byte != dst_state->pixels_per_byte) return FALSE; + + //if (src_state->data->pixel_format == PixelFormat32bppRGB) return FALSE; + + /* if the target is in 32bpp format with only RGB but no alpha then we should forcefully set all alpha bits to 0xff -> optimize this later! */ + if (dst_state->pixels_per_byte == -4) { + if (dst_state->data->pixel_format == PixelFormat32bppRGB) return FALSE; + } + + /* optimisation code differs for different bytes per pixel (== pixels per byte) */ + if (src_state->pixels_per_byte == 1) { + /* A fast path for 8-bit indexed data: pixels are byte-aligned, so no special unpacking is required. */ + return FALSE; /* optimize this later */ + } else if (src_state->pixels_per_byte > 0) { + /* We have an indexed format (the RGB formats can't fit a whole pixel into a single byte). */ + return FALSE; /* optimize this later */ + } else if (src_state->pixels_per_byte == 0) { + return FALSE; /* unknown format - dont know how to handle; this is a sanity check for crash prevention in the following code */ + } else { + /* We have an RGB format. In the current implementation, these are always stored as + * CAIRO_FORMAT_ARGB. This makes this section very easy to implement. If native + * support for 15- and 16-bit pixel formats needs to be added in the future, though, + * then this is where it needs to be done. + * + * In order to simplify advancing the state->scan pointer, the state->pixels_per_byte + * member is set to the number of bytes per pixel, negated. That is, for 24-bit + * formats, it is set to -3, and for 32-bit formats, it is set to -4. + * + * Note that pixel streams do not support 48- and 64-bit data at this time. + */ +#if WORDS_BIGENDIAN + return FALSE; /* optimize this later */ +#else + int bytes_per_pixel = -src_state->pixels_per_byte; + int bytes_per_line = bytes_per_pixel * src_state->region.Width; + int bytes_per_region = bytes_per_line * src_state->region.Height; + + int src_stride = src_state->data->stride; + int dst_stride = dst_state->data->stride; + + /* calculate region base addresses (this might resemble the current ..._state->scan value, but we simply dont care) */ + BYTE* src_region = (BYTE*)(src_state->data->scan0) + src_state->region.Y * src_stride + src_state->region.X * bytes_per_pixel; + BYTE* dst_region = (BYTE*)(dst_state->data->scan0) + dst_state->region.Y * dst_stride + dst_state->region.X * bytes_per_pixel; + + /* check if thze data at both locations is in a perfectly consecutive arrangement */ + if ((src_state->region.Width * bytes_per_pixel == src_stride) + && (dst_state->region.Width * bytes_per_pixel == dst_stride)) { + memcpy (dst_region, src_region, bytes_per_region); + } else { + BYTE *src = src_region; + BYTE *dst = dst_region; + int lines; + + for (lines = src_state->region.Height; lines; lines--) { + memcpy (dst, src, bytes_per_line); + src += src_stride; + dst += dst_stride; + } + } + /* all data got copied */ + + /* adjust the position index and the scan value to the end of the region */ + src_state->x = src_state->region.X + src_state->region.Width; + src_state->y = src_state->region.Y + src_state->region.Height; + src_state->scan += src_state->region.Y * src_stride; + + dst_state->x = dst_state->region.X + dst_state->region.Width; + dst_state->y = dst_state->region.Y + dst_state->region.Height; + dst_state->scan += dst_state->region.Y * dst_stride; +#endif + } + + return TRUE; +} + /** * srcData - input data * srcRect - rectangle of input data to place in destData @@ -1773,8 +1857,10 @@ gdip_pixel_stream_set_next (&destStream, pixel); } } else { - while (gdip_pixel_stream_has_next (&srcStream)) { - gdip_pixel_stream_set_next (&destStream, gdip_pixel_stream_get_next (&srcStream)); + if (!gdip_pixel_stream_copy_optimized (&destStream, &srcStream)) { + while (gdip_pixel_stream_has_next (&srcStream)) { + gdip_pixel_stream_set_next (&destStream, gdip_pixel_stream_get_next (&srcStream)); + } } } diff -Nru libgdiplus-4.0-2.10.9/src/font.c libgdiplus-4.0-4.2.3+precise1/src/font.c --- libgdiplus-4.0-2.10.9/src/font.c 2011-12-14 02:47:19.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/font.c 2016-04-15 08:16:31.000000000 +0000 @@ -24,6 +24,7 @@ * Jeffrey Stedfast */ +#include #include "gdiplus-private.h" #include "font-private.h" #include "fontcollection-private.h" diff -Nru libgdiplus-4.0-2.10.9/src/gdi32.c libgdiplus-4.0-4.2.3+precise1/src/gdi32.c --- libgdiplus-4.0-2.10.9/src/gdi32.c 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/gdi32.c 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,55 @@ +// Authors: +// Francis Fisher (frankie@terrorise.me.uk) +// +// (C) Francis Fisher 2013 +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "graphics-private.h" +#include "graphics-cairo-private.h" + +#include + +#define NO_CAIRO_AA + +#define MAX_GRAPHICS_STATE_STACK 512 + +#define SRCCOPY (DWORD)0x00CC0020 + +BOOL +BitBlt (HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop) +{ + if (dwRop != SRCCOPY) + return FALSE; + GpGraphics *src = (GpGraphics *) hdcSrc; + GpGraphics *dest = (GpGraphics *) hdcDest; + + cairo_t *cr = dest->ct; + cairo_surface_t *src_surface = cairo_get_target(src->ct); + + cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); + cairo_set_source_surface (cr, src_surface, nXDest - nXSrc, nYDest - nYSrc); + cairo_rectangle (cr, nXDest, nYDest, nWidth, nHeight); + cairo_fill (cr); + + return TRUE; +} + diff -Nru libgdiplus-4.0-2.10.9/src/gdi32.h libgdiplus-4.0-4.2.3+precise1/src/gdi32.h --- libgdiplus-4.0-2.10.9/src/gdi32.h 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/gdi32.h 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,33 @@ +// Authors: +// Francis Fisher (frankie@terrorise.me.uk) +// +// (C) Francis Fisher 2013 +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +#include "graphics-private.h" + +#ifndef __GDI32_H__ +#define __GDI32_H__ + +BitBlt (HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop); + +#endif diff -Nru libgdiplus-4.0-2.10.9/src/gdiplus-private.h libgdiplus-4.0-4.2.3+precise1/src/gdiplus-private.h --- libgdiplus-4.0-2.10.9/src/gdiplus-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/gdiplus-private.h 2016-04-15 08:16:31.000000000 +0000 @@ -30,7 +30,8 @@ #include #include #include -#include +#include +#include FT_TRUETYPE_TABLES_H #include #include diff -Nru libgdiplus-4.0-2.10.9/src/general-private.h libgdiplus-4.0-4.2.3+precise1/src/general-private.h --- libgdiplus-4.0-2.10.9/src/general-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/general-private.h 2016-04-15 08:16:31.000000000 +0000 @@ -60,7 +60,7 @@ #define gdip_near_one(value) ((value >= 0.9999f) && (value <= 1.0001f)) /* avoid integer overflows when int/float/int conversion are used (see #79643) */ -#define SAFE_FLOAT_TO_UINT32(value) ((value < 0) ? 0 : (value >= G_MAXINT32) ? G_MAXINT32 : value) +#define SAFE_FLOAT_TO_UINT32(value) ((value < 0) ? 0 : (value >= G_MAXINT32) ? G_MAXINT32 : (((int)value) < 0 ? G_MAXINT32 : (int)value)) /* avoid fp division and multiplication that would return the same number */ #define OPTIMIZE_CONVERSION(g) ((g->type != gtPostScript) && ((g->page_unit == UnitPixel) || (g->page_unit == UnitWorld))) diff -Nru libgdiplus-4.0-2.10.9/src/gifcodec.c libgdiplus-4.0-4.2.3+precise1/src/gifcodec.c --- libgdiplus-4.0-2.10.9/src/gifcodec.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/gifcodec.c 2016-04-15 08:16:31.000000000 +0000 @@ -39,8 +39,6 @@ #include "gifcodec.h" -/* giflib declares this incorrectly as EgifOpen */ -extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc); /* Data structure used for callback */ typedef struct @@ -105,7 +103,7 @@ */ static int -AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[]) +AddExtensionBlockMono(SavedImage *New, int Function, int Len, BYTE ExtData[]) { ExtensionBlock *ep; @@ -121,15 +119,15 @@ ep = &New->ExtensionBlocks[New->ExtensionBlockCount++]; + ep->Function = Function; ep->ByteCount=Len; - ep->Bytes = (char *)GdipAlloc(ep->ByteCount); + ep->Bytes = (GifByteType *)GdipAlloc(ep->ByteCount); if (ep->Bytes == NULL) { return (GIF_ERROR); } if (ExtData) { memcpy(ep->Bytes, ExtData, Len); - ep->Function = New->Function; } return (GIF_OK); @@ -166,6 +164,7 @@ DGifSlurpMono(GifFileType * GifFile, SavedImage *TrailingExtensions) { int ImageSize; + int Function; GifRecordType RecordType; SavedImage *sp; GifByteType *ExtData; @@ -232,20 +231,19 @@ } case EXTENSION_RECORD_TYPE: { - if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) { + if (DGifGetExtension(GifFile, &Function, &ExtData) == GIF_ERROR) { return (GIF_ERROR); } while (ExtData != NULL) { /* Create an extension block with our data */ - if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) { + if (AddExtensionBlockMono(&temp_save, Function, ExtData[0], &ExtData[1]) == GIF_ERROR) { return (GIF_ERROR); } if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) { return (GIF_ERROR); } - temp_save.Function = 0; } break; } @@ -304,9 +302,17 @@ loop_counter = FALSE; if (from_file) { +#if GIFLIB_MAJOR >= 5 + gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL); +#else gif = DGifOpen(stream, &gdip_gif_fileinputfunc); +#endif } else { +#if GIFLIB_MAJOR >= 5 + gif = DGifOpen (stream, &gdip_gif_inputfunc, NULL); +#else gif = DGifOpen (stream, &gdip_gif_inputfunc); +#endif } if (gif == NULL) { @@ -581,8 +587,11 @@ } FreeExtensionMono(&global_extensions); +#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1)) + DGifCloseFile (gif, NULL); +#else DGifCloseFile (gif); - +#endif *image = result; return Ok; @@ -597,7 +606,11 @@ if (gif != NULL) { FreeExtensionMono (&global_extensions); +#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1)) + DGifCloseFile (gif, NULL); +#else DGifCloseFile (gif); +#endif } *image = NULL; @@ -661,9 +674,17 @@ } if (from_file) { +#if GIFLIB_MAJOR >= 5 + fp = EGifOpenFileName (stream, 0, NULL); +#else fp = EGifOpenFileName (stream, 0); +#endif } else { +#if GIFLIB_MAJOR >= 5 + fp = EGifOpen (stream, gdip_gif_outputfunc, NULL); +#else fp = EGifOpen (stream, gdip_gif_outputfunc); +#endif } if (!fp) { @@ -702,8 +723,11 @@ goto error; } +#if GIFLIB_MAJOR >= 5 + cmap = GifMakeMapObject(cmap_size, 0); +#else cmap = MakeMapObject(cmap_size, 0); - +#endif pixbuf = GdipAlloc(pixbuf_size); if (pixbuf == NULL) { goto error; @@ -793,8 +817,11 @@ pixbuf = pixbuf_org; } else { cmap_size = 256; +#if GIFLIB_MAJOR >= 5 + cmap = GifMakeMapObject (cmap_size, 0); +#else cmap = MakeMapObject (cmap_size, 0); - +#endif red = GdipAlloc(pixbuf_size); green = GdipAlloc(pixbuf_size); blue = GdipAlloc(pixbuf_size); @@ -824,13 +851,23 @@ v += 4; } } - if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, + if ( +#if GIFLIB_MAJOR >= 5 + GifQuantizeBuffer( +#else + QuantizeBuffer( +#endif + bitmap_data->width, bitmap_data->height, &cmap_size, red, green, blue, pixbuf, cmap->Colors) == GIF_ERROR) { goto error; } } +#if GIFLIB_MAJOR >= 5 + cmap->BitsPerPixel = GifBitSize (cmap_size); +#else cmap->BitsPerPixel = BitSize (cmap_size); +#endif cmap->ColorCount = 1 << cmap->BitsPerPixel; if ((frame == 0) && (k == 0)) { @@ -848,8 +885,15 @@ Buffer[0] = 1; Buffer[1] = ptr[0]; Buffer[2] = ptr[1]; - EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0"); - EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer); +#if GIFLIB_MAJOR >= 5 + EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE); + EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0"); + EGifPutExtensionBlock(fp, 3, Buffer); + EGifPutExtensionTrailer(fp); +#else + EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0"); + EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer); +#endif } } @@ -901,7 +945,11 @@ pixbuf += bitmap_data->width; } +#if GIFLIB_MAJOR >= 5 + GifFreeMapObject (cmap); +#else FreeMapObject (cmap); +#endif if (red != NULL) { GdipFree (red); } @@ -923,13 +971,21 @@ } } - EGifCloseFile (fp); +#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1)) + EGifCloseFile (fp, NULL); +#else + EGifCloseFile (fp); +#endif return Ok; error: if (cmap != NULL) { +#if GIFLIB_MAJOR >= 5 + GifFreeMapObject (cmap); +#else FreeMapObject (cmap); +#endif } if (red != NULL) { diff -Nru libgdiplus-4.0-2.10.9/src/graphics-cairo-private.h libgdiplus-4.0-4.2.3+precise1/src/graphics-cairo-private.h --- libgdiplus-4.0-2.10.9/src/graphics-cairo-private.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/graphics-cairo-private.h 2016-04-15 08:16:31.000000000 +0000 @@ -41,8 +41,14 @@ /* * Handling of pens with a width greater than 1 is not identical between GDI+ and Cairo + * + * On cairo >= 1.12 pen adjustment is not required or tons of tests senstive to this break. */ +#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 12, 0) +#define gdip_cairo_pen_width_needs_adjustment(pen) (0) +#else #define gdip_cairo_pen_width_needs_adjustment(pen) (((int)(pen->width) & 1) == 0) +#endif cairo_fill_rule_t gdip_convert_fill_mode (FillMode fill_mode) GDIP_INTERNAL; GpStatus gdip_plot_path (GpGraphics *graphics, GpPath *path, BOOL antialiasing) GDIP_INTERNAL; diff -Nru libgdiplus-4.0-2.10.9/src/graphics-path.c libgdiplus-4.0-4.2.3+precise1/src/graphics-path.c --- libgdiplus-4.0-2.10.9/src/graphics-path.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/graphics-path.c 2016-04-15 08:16:31.000000000 +0000 @@ -1272,10 +1272,9 @@ GDIPCONST GpRect *layoutRect, GDIPCONST GpStringFormat *format) { GpRectF *r = NULL; + GpRectF rect; if (layoutRect) { - GpRectF rect; - rect.X = layoutRect->X; rect.Y = layoutRect->Y; rect.Width = layoutRect->Width; diff -Nru libgdiplus-4.0-2.10.9/src/image.c libgdiplus-4.0-4.2.3+precise1/src/image.c --- libgdiplus-4.0-2.10.9/src/image.c 2012-01-30 23:37:20.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/image.c 2016-04-15 08:16:31.000000000 +0000 @@ -381,6 +381,8 @@ BOOL need_scaling = FALSE; double scaled_width, scaled_height; cairo_matrix_t orig_matrix; + BYTE *premul = NULL; + cairo_surface_t *original = NULL; if (!graphics || !image) return InvalidParameter; @@ -430,6 +432,20 @@ /* Create a surface for this bitmap if one doesn't exist */ gdip_bitmap_ensure_surface (image); + + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (image)) { + premul = gdip_bitmap_get_premultiplied_scan0 (image); + if (premul) { + BitmapData *data = image->active_bitmap; + original = cairo_image_surface_create_for_data (premul, CAIRO_FORMAT_ARGB32, + data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!original) + original = image->surface; if (width != image->active_bitmap->width || height != image->active_bitmap->height) { scaled_width = (double) width / image->active_bitmap->width; @@ -437,7 +453,8 @@ need_scaling = TRUE; } - pattern = cairo_pattern_create_for_surface (image->surface); + /* Use the original as a pattern */ + pattern = cairo_pattern_create_for_surface (original); cairo_pattern_set_filter (pattern, gdip_get_cairo_filter (graphics->interpolation)); @@ -459,6 +476,11 @@ cairo_pattern_destroy (org_pattern); cairo_pattern_destroy (pattern); + if (premul) { + cairo_surface_destroy (original); + GdipFree (premul); + } + return Ok; } @@ -472,6 +494,8 @@ cairo_matrix_t orig_matrix; GpRectF tRect; MetafilePlayContext *metacontext = NULL; + BYTE *premul = NULL; + cairo_surface_t *original = NULL; if (!graphics || !image || !dstPoints || (count != 3)) return InvalidParameter; @@ -517,7 +541,21 @@ /* Create a surface for this bitmap if one doesn't exist */ gdip_bitmap_ensure_surface (image); - pattern = cairo_pattern_create_for_surface (image->surface); + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (image)) { + premul = gdip_bitmap_get_premultiplied_scan0 (image); + if (premul) { + BitmapData *data = image->active_bitmap; + original = cairo_image_surface_create_for_data (premul, CAIRO_FORMAT_ARGB32, + data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!original) + original = image->surface; + + pattern = cairo_pattern_create_for_surface (original); cairo_pattern_set_filter (pattern, gdip_get_cairo_filter (graphics->interpolation)); org_pattern = cairo_get_source(graphics->ct); @@ -535,6 +573,11 @@ cairo_pattern_destroy (org_pattern); cairo_pattern_destroy (pattern); + if (premul) { + cairo_surface_destroy (original); + GdipFree (premul); + } + return Ok; } @@ -585,6 +628,8 @@ void *org; int org_format; BOOL allocated = FALSE; + BYTE *premul = NULL; + cairo_surface_t *original = NULL; if (!graphics || !image) return InvalidParameter; @@ -626,14 +671,14 @@ /* see OPTIMIZE_CONVERSION in general.h */ if ((srcUnit != UnitPixel) && (srcUnit != UnitWorld) && ((srcUnit != UnitDisplay) || (graphics->type != gtPostScript))) { - dstx = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_x, dstx); - dsty = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_y, dsty); - dstwidth = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_x, dstwidth); - dstheight = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_y, dstheight); - srcx = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_x, srcx); - srcy = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_y, srcy); - srcwidth = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_x, srcwidth); - srcheight = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->type, graphics->dpi_y, srcheight); + dstx = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_x, graphics->type, dstx); + dsty = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_y, graphics->type, dsty); + dstwidth = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_x, graphics->type, dstwidth); + dstheight = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_y, graphics->type, dstheight); + srcx = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_x, graphics->type, srcx); + srcy = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_y, graphics->type, srcy); + srcwidth = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_x, graphics->type, srcwidth); + srcheight = gdip_unit_conversion (srcUnit, UnitCairoPoint, graphics->dpi_y, graphics->type, srcheight); } org = dest = image->active_bitmap->scan0; @@ -660,14 +705,22 @@ BOOL flipYOn = (imageAttributes->wrapmode == WrapModeTileFlipY); BOOL flipX = FALSE; BOOL flipY = FALSE; - GpBitmap *cur_image; GpBitmap *imgflipX = NULL; GpBitmap *imgflipY = NULL; GpBitmap *imgflipXY = NULL; float img_width = image->active_bitmap->width * (dstwidth / srcwidth); float img_height = image->active_bitmap->height * (dstheight / srcheight); - + BYTE *premul = NULL; + BYTE *premulX = NULL; + BYTE *premulY = NULL; + BYTE *premulXY = NULL; + cairo_surface_t *original = NULL; + cairo_surface_t *originalX = NULL; + cairo_surface_t *originalY = NULL; + cairo_surface_t *originalXY = NULL; + cairo_surface_t *cur_surface; + if (imageAttributes->wrapmode == WrapModeTileFlipXY) { flipXOn = flipYOn = TRUE; } @@ -678,12 +731,38 @@ gdip_bitmap_clone (image, &imgflipX); gdip_flip_x (imgflipX); gdip_bitmap_ensure_surface (imgflipX); + + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (imgflipX)) { + premulX = gdip_bitmap_get_premultiplied_scan0 (imgflipX); + if (premulX) { + BitmapData *data = imgflipX->active_bitmap; + originalX = cairo_image_surface_create_for_data (premulX, CAIRO_FORMAT_ARGB32, data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!originalX) + originalX = imgflipX->surface; } if (flipYOn) { gdip_bitmap_clone (image, &imgflipY); gdip_flip_y (imgflipY); gdip_bitmap_ensure_surface (imgflipY); + + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (imgflipY)) { + premulY = gdip_bitmap_get_premultiplied_scan0 (imgflipY); + if (premulY) { + BitmapData *data = imgflipY->active_bitmap; + originalY = cairo_image_surface_create_for_data (premulY, CAIRO_FORMAT_ARGB32, data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!originalY) + originalY = imgflipY->surface; } if (flipXOn && flipYOn) { @@ -691,22 +770,49 @@ gdip_flip_x (imgflipXY); gdip_flip_y (imgflipXY); gdip_bitmap_ensure_surface (imgflipXY); + + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (imgflipXY)) { + premulXY = gdip_bitmap_get_premultiplied_scan0 (imgflipXY); + if (premulXY) { + BitmapData *data = imgflipXY->active_bitmap; + originalXY = cairo_image_surface_create_for_data (premulXY, CAIRO_FORMAT_ARGB32, data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!originalXY) + originalXY = imgflipXY->surface; } gdip_bitmap_ensure_surface (image); + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (image)) { + premul = gdip_bitmap_get_premultiplied_scan0 (image); + if (premul) { + BitmapData *data = image->active_bitmap; + original = cairo_image_surface_create_for_data (premul, CAIRO_FORMAT_ARGB32, data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!original) + original = image->surface; + + for (posy = 0; posy < dstheight; posy += img_height) { for (posx = 0; posx < dstwidth; posx += img_width) { if (flipX && flipY) { - cur_image = imgflipXY; + cur_surface = originalXY; } else { if (flipX) { - cur_image = imgflipX; + cur_surface = originalX; } else { if (flipY) { - cur_image = imgflipY; + cur_surface = originalY; } else { - cur_image = image; + cur_surface = original; } } } @@ -715,7 +821,7 @@ cairo_matrix_scale (&mat, srcwidth / dstwidth, srcheight / dstheight); cairo_matrix_translate (&mat, - (dstx + posx), - (dsty + posy)); - pattern = cairo_pattern_create_for_surface(cur_image->surface); + pattern = cairo_pattern_create_for_surface(cur_surface); cairo_pattern_set_matrix (pattern, &mat); orig = cairo_get_source(graphics->ct); @@ -746,20 +852,51 @@ if (imgflipX) { GdipDisposeImage ((GpImage *) imgflipX); + if (premulX) { + cairo_surface_destroy (originalX); + GdipFree (premulX); + } } if (imgflipY) { GdipDisposeImage ((GpImage *) imgflipY); + if (premulY) { + cairo_surface_destroy (originalY); + GdipFree (premulY); + } } if (imgflipXY) { GdipDisposeImage ((GpImage *) imgflipXY); + if (premulXY) { + cairo_surface_destroy (originalXY); + GdipFree (premulXY); + } + } + + if (premul) { + cairo_surface_destroy (original); + GdipFree (premul); } } else { cairo_pattern_t *filter; gdip_bitmap_ensure_surface (image); - filter = cairo_pattern_create_for_surface (image->surface); + + if (graphics->type != gtMemoryBitmap && + gdip_bitmap_format_needs_premultiplication (image)) { + premul = gdip_bitmap_get_premultiplied_scan0 (image); + if (premul) { + BitmapData *data = image->active_bitmap; + original = cairo_image_surface_create_for_data (premul, CAIRO_FORMAT_ARGB32, data->width, data->height, data->stride); + } + } + + /* if premul isn't required (or couldn't be computed, e.g. out of memory) */ + if (!original) + original = image->surface; + + filter = cairo_pattern_create_for_surface (original); cairo_pattern_set_filter (filter, gdip_get_cairo_filter (graphics->interpolation)); cairo_matrix_translate (&mat, srcx, srcy); @@ -769,7 +906,7 @@ cairo_matrix_translate (&mat, -dstx, -dsty); - pattern = cairo_pattern_create_for_surface(image->surface); + pattern = cairo_pattern_create_for_surface(original); cairo_pattern_set_matrix (pattern, &mat); orig = cairo_get_source(graphics->ct); @@ -786,6 +923,11 @@ cairo_pattern_set_matrix (pattern, &mat); cairo_pattern_destroy (pattern); cairo_pattern_destroy (filter); + + if (premul) { + cairo_surface_destroy (original); + GdipFree (premul); + } } /* The current surface is no longer valid if we had attributes applied */ diff -Nru libgdiplus-4.0-2.10.9/src/image.h libgdiplus-4.0-4.2.3+precise1/src/image.h --- libgdiplus-4.0-2.10.9/src/image.h 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/image.h 2016-04-15 08:16:31.000000000 +0000 @@ -88,8 +88,9 @@ GpStatus GdipGetPropertyItemSize (GpImage *image, PROPID propID, UINT *size); GpStatus GdipGetPropertyItem (GpImage *image, PROPID propID, UINT size, PropertyItem *buffer); GpStatus GdipGetPropertySize (GpImage *image, UINT *totalBufferSize, UINT *numProperties); -GpStatus GdipRemoveProperyItem (GpImage *image, PROPID propID); -GpStatus GdipSetProperyItem (GpImage *image, GDIPCONST PropertyItem *item); +GpStatus GdipRemovePropertyItem (GpImage *image, PROPID propID); +GpStatus GdipSetPropertyItem (GpImage *image, GDIPCONST PropertyItem *item); +GpStatus GdipGetAllPropertyItems (GpImage *image, UINT totalBufferSize, UINT numProperties, PropertyItem *allItems); GpStatus GdipCloneImage(GpImage *image, GpImage **cloneImage); GpStatus GdipDisposeImage (GpImage *image); diff -Nru libgdiplus-4.0-2.10.9/src/Makefile.am libgdiplus-4.0-4.2.3+precise1/src/Makefile.am --- libgdiplus-4.0-2.10.9/src/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/Makefile.am 2016-04-15 08:16:31.000000000 +0000 @@ -27,6 +27,8 @@ fontcollection-private.h \ fontfamily.h \ fontfamily-private.h \ + gdi32.h \ + gdi32.c \ GdiPlusFlat.h \ gdiplus-private.h \ gdip.h \ diff -Nru libgdiplus-4.0-2.10.9/src/Makefile.in libgdiplus-4.0-4.2.3+precise1/src/Makefile.in --- libgdiplus-4.0-2.10.9/src/Makefile.in 2012-01-31 17:28:26.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,712 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(libdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -am__DEPENDENCIES_1 = -libgdiplus_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_libgdiplus_la_OBJECTS = adjustablearrowcap.lo bitmap.lo brush.lo \ - carbon-private.lo customlinecap.lo dstream.lo font.lo \ - general.lo graphics.lo graphics-cairo.lo graphics-metafile.lo \ - graphics-path.lo graphics-pathiterator.lo hatchbrush.lo \ - icocodec.lo image.lo imageattributes.lo lineargradientbrush.lo \ - matrix.lo metafile.lo pathgradientbrush.lo pen.lo print.lo \ - region.lo region-bitmap.lo region-path-tree.lo solidbrush.lo \ - stringformat.lo text.lo text-cairo.lo text-pango.lo \ - text-metafile.lo texturebrush.lo bmpcodec.lo emfcodec.lo \ - emfplus.lo gifcodec.lo jpegcodec.lo pngcodec.lo tiffcodec.lo \ - wmfcodec.lo -libgdiplus_la_OBJECTS = $(am_libgdiplus_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libgdiplus_la_SOURCES) -DIST_SOURCES = $(libgdiplus_la_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASE_DEPENDENCIES_CFLAGS = @BASE_DEPENDENCIES_CFLAGS@ -BASE_DEPENDENCIES_LIBS = @BASE_DEPENDENCIES_LIBS@ -CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_DIR = @CAIRO_DIR@ -CAIRO_LIBS = @CAIRO_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ -FONTCONFIG_CONFIG = @FONTCONFIG_CONFIG@ -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ -FREETYPE2_LIBS = @FREETYPE2_LIBS@ -FREETYPE_CONFIG = @FREETYPE_CONFIG@ -GDIPLUS_CFLAGS = @GDIPLUS_CFLAGS@ -GDIPLUS_LIBS = @GDIPLUS_LIBS@ -GDIPLUS_PKG_CFLAGS = @GDIPLUS_PKG_CFLAGS@ -GDIPLUS_PKG_LIBS = @GDIPLUS_PKG_LIBS@ -GDIPLUS_PKG_REQ = @GDIPLUS_PKG_REQ@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ -LIBEXIF_LIBS = @LIBEXIF_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PANGO_CFLAGS = @PANGO_CFLAGS@ -PANGO_LIBS = @PANGO_LIBS@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -lib_LTLIBRARIES = libgdiplus.la -libgdiplus_la_SOURCES = \ - adjustablearrowcap.c \ - adjustablearrowcap.h \ - adjustablearrowcap-private.h \ - alpha-premul-table.inc \ - bitmap.c \ - bitmap.h \ - bitmap-private.h \ - brush.c \ - brush.h \ - brush-private.h \ - carbon-private.c \ - carbon-private.h \ - codecs.h \ - codecs-private.h \ - customlinecap.c \ - customlinecap.h \ - customlinecap-private.h \ - dstream.c \ - dstream.h \ - font.c \ - font.h \ - font-private.h \ - fontcollection.h \ - fontcollection-private.h \ - fontfamily.h \ - fontfamily-private.h \ - GdiPlusFlat.h \ - gdiplus-private.h \ - gdip.h \ - gdipenums.h \ - gdipstructs.h \ - general.c \ - general.h \ - general-private.h \ - graphics.c \ - graphics.h \ - graphics-cairo.c \ - graphics-cairo-private.h \ - graphics-metafile.c \ - graphics-metafile-private.h \ - graphics-private.h \ - graphics-path.c \ - graphics-path.h \ - graphics-path-private.h \ - graphics-pathiterator.c \ - graphics-pathiterator.h \ - graphics-pathiterator-private.h \ - hatchbrush.c \ - hatchbrush.h \ - hatchbrush-private.h \ - icocodec.c \ - icocodec.h \ - image.c \ - image.h \ - image-private.h \ - imageattributes.c \ - imageattributes.h \ - imageattributes-private.h \ - lineargradientbrush.c \ - lineargradientbrush.h \ - lineargradientbrush-private.h \ - matrix.c \ - matrix.h \ - matrix-private.h \ - metafile.c \ - metafile.h \ - metafile-private.h \ - pathgradientbrush.c \ - pathgradientbrush.h \ - pathgradientbrush-private.h \ - pen.c \ - pen.h \ - pen-private.h \ - print.c \ - region.c \ - region.h \ - region-private.h \ - region-bitmap.c \ - region-bitmap.h \ - region-path-tree.c \ - region-path-tree.h \ - solidbrush.c \ - solidbrush.h \ - solidbrush-private.h \ - stringformat.c \ - stringformat.h \ - stringformat-private.h \ - text.c \ - text.h \ - text-cairo.c \ - text-cairo-private.h \ - text-pango.c \ - text-pango-private.h \ - text-metafile.c \ - text-metafile-private.h \ - texturebrush.c \ - texturebrush.h \ - texturebrush-private.h \ - win32structs.h \ - bmpcodec.h \ - bmpcodec.c \ - emfcodec.c \ - emfcodec.h \ - emfplus.c \ - emfplus.h \ - gifcodec.h \ - gifcodec.c \ - jpegcodec.h \ - jpegcodec.c \ - pngcodec.h \ - pngcodec.c \ - tiffcodec.h \ - tiffcodec.c \ - wmfcodec.c \ - wmfcodec.h - -libgdiplus_la_LIBADD = $(GDIPLUS_LIBS) -INCLUDES = $(GDIPLUS_CFLAGS) -Wall -Wno-unused -Wno-format -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgdiplus.la: $(libgdiplus_la_OBJECTS) $(libgdiplus_la_DEPENDENCIES) - $(LINK) -rpath $(libdir) $(libgdiplus_la_OBJECTS) $(libgdiplus_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adjustablearrowcap.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitmap.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bmpcodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brush.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/carbon-private.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/customlinecap.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dstream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emfcodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emfplus.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/general.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gifcodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics-cairo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics-metafile.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics-path.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics-pathiterator.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hatchbrush.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icocodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imageattributes.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpegcodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lineargradientbrush.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metafile.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathgradientbrush.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pen.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pngcodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/region-bitmap.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/region-path-tree.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/region.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/solidbrush.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringformat.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-cairo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-metafile.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-pango.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texturebrush.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffcodec.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmfcodec.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-libLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/src/pngcodec.c libgdiplus-4.0-4.2.3+precise1/src/pngcodec.c --- libgdiplus-4.0-2.10.9/src/pngcodec.c 2012-01-30 23:37:20.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/pngcodec.c 2016-04-15 08:16:31.000000000 +0000 @@ -116,10 +116,16 @@ bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr); bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr); #elif defined(PNG_pHYs_SUPPORTED) - if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) { - bitmap_data->image_flags |= ImageFlagsHasRealDPI; - bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254; - bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254; + { + int unit_type; + png_uint_32 res_x; + png_uint_32 res_y; + png_get_pHYs( png_ptr, info_ptr, &res_x, &res_y, &unit_type ); + if (unit_type == PNG_RESOLUTION_METER) { + bitmap_data->image_flags |= ImageFlagsHasRealDPI; + bitmap_data->dpi_horz = res_x * 0.0254; + bitmap_data->dpi_vert = res_y * 0.0254; + } } #endif /* default to screen resolution (if nothing was provided or available) */ @@ -243,6 +249,8 @@ int bit_depth; int channels; BYTE color_type; + int num_palette; + png_colorp png_palette; png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); @@ -276,6 +284,7 @@ bit_depth = png_get_bit_depth (png_ptr, info_ptr); channels = png_get_channels (png_ptr, info_ptr); color_type = png_get_color_type (png_ptr, info_ptr); + png_get_PLTE( png_ptr, info_ptr, &png_palette, &num_palette ); /* 2bpp is a special case (promoted to 32bpp ARGB by MS GDI+) */ if ((bit_depth <= 8) && (bit_depth != 2) && (channels == 1) && @@ -321,8 +330,8 @@ colourspace_flag = ImageFlagsColorSpaceRGB; palette_entries = num_colours; - if (palette_entries > info_ptr->num_palette) { - palette_entries = info_ptr->num_palette; + if (palette_entries > num_palette) { + palette_entries = num_palette; } palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB)); @@ -331,32 +340,40 @@ for (i=0; i < palette_entries; i++) { set_pixel_bgra (&palette->Entries[i], 0, - info_ptr->palette[i].blue, - info_ptr->palette[i].green, - info_ptr->palette[i].red, + png_palette[i].blue, + png_palette[i].green, + png_palette[i].red, 0xFF); /* alpha */ } } - /* Make sure transparency is respected. */ - if (info_ptr->num_trans > 0) { - palette->Flags |= PaletteFlagsHasAlpha; - colourspace_flag |= ImageFlagsHasAlpha; + if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) + { + png_bytep trans_alpha; + int num_trans; + png_color_16p trans_color; + + /* Make sure transparency is respected. */ + png_get_tRNS( png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color ); + if (num_trans > 0) { + palette->Flags |= PaletteFlagsHasAlpha; + colourspace_flag |= ImageFlagsHasAlpha; - if (info_ptr->num_trans > info_ptr->num_palette) { - info_ptr->num_trans = info_ptr->num_palette; - } + if (num_trans > num_palette) { + num_trans = num_palette; + } - for (i=0; i < info_ptr->num_trans; i++) { - set_pixel_bgra(&palette->Entries[i], 0, - info_ptr->palette[i].blue, - info_ptr->palette[i].green, - info_ptr->palette[i].red, + for (i=0; i < num_trans; i++) { + set_pixel_bgra(&palette->Entries[i], 0, + png_palette[i].blue, + png_palette[i].green, + png_palette[i].red, #if PNG_LIBPNG_VER > 10399 - info_ptr->trans_alpha [i]); /* alpha */ + trans_alpha [i]); /* alpha */ #else - info_ptr->trans[i]); /* alpha */ + info_ptr->trans[i]); /* alpha */ #endif + } } } @@ -454,12 +471,6 @@ BYTE g = rowp[1]; BYTE r = rowp[0]; - if (a < 0xff) { - r = pre_multiplied_table [r][a]; - g = pre_multiplied_table [g][a]; - b = pre_multiplied_table [b][a]; - } - set_pixel_bgra (rawptr, 0, b, g, r, a); } rowp += 4; @@ -492,30 +503,30 @@ palette = (pix >> 6) & 0x03; set_pixel_bgra (rawptr, 0, - info_ptr->palette[palette].blue, - info_ptr->palette[palette].green, - info_ptr->palette[palette].red, + png_palette[palette].blue, + png_palette[palette].green, + png_palette[palette].red, 0xFF); /* alpha */ palette = (pix >> 4) & 0x03; set_pixel_bgra (rawptr, 4, - info_ptr->palette[palette].blue, - info_ptr->palette[palette].green, - info_ptr->palette[palette].red, + png_palette[palette].blue, + png_palette[palette].green, + png_palette[palette].red, 0xFF); /* alpha */ palette = (pix >> 2) & 0x03; set_pixel_bgra (rawptr, 8, - info_ptr->palette[palette].blue, - info_ptr->palette[palette].green, - info_ptr->palette[palette].red, + png_palette[palette].blue, + png_palette[palette].green, + png_palette[palette].red, 0xFF); /* alpha */ palette = pix & 0x03; set_pixel_bgra (rawptr, 12, - info_ptr->palette[palette].blue, - info_ptr->palette[palette].green, - info_ptr->palette[palette].red, + png_palette[palette].blue, + png_palette[palette].green, + png_palette[palette].red, 0xFF); /* alpha */ rawptr += 16; } diff -Nru libgdiplus-4.0-2.10.9/src/test.c libgdiplus-4.0-4.2.3+precise1/src/test.c --- libgdiplus-4.0-2.10.9/src/test.c 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/test.c 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,9 @@ +#include +#include +#include + +int main () +{ + void *p = &jpeg_CreateCompress; + return 0; +} diff -Nru libgdiplus-4.0-2.10.9/src/text.notes libgdiplus-4.0-4.2.3+precise1/src/text.notes --- libgdiplus-4.0-2.10.9/src/text.notes 1970-01-01 00:00:00.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/src/text.notes 2016-04-15 08:16:31.000000000 +0000 @@ -0,0 +1,25 @@ +Notes, funny facts and $#&^*@# stuff on text rendering +------------------------------------------------------ + +Since there's not much documentation on every options (and parts of it is +wrong) here's are my little rambling^H notes on the subject... + + +GDI+ + +- It seems that HotkeyPrefixShow is never seen when we use an underline font; + +- StringFormatFlagsMeasureTrailingSpaces not only measure the trailing space, +it also render them (e.g. underline and strikeout) - but that's not true if + - DirectionRightToLeft is specified; or + - DirectionVertical is specified; or + - both DirectionRightToLeft and DirectionVertical are specified; or + - there's more than a single line being rendered + + +- StringFormatFlagsMeasureTrailingSpaces doesn't affect the number of +characters reported by GdipMeasureString *codepointsFitted out parameter. +I.e. all trailing space are "fitted" - even if not measured. + +- HotkeyPrefix[None|Hide|Show] also has no effect on GdipMeasureString +*codepointsFitted out parameter. diff -Nru libgdiplus-4.0-2.10.9/tests/Makefile.am libgdiplus-4.0-4.2.3+precise1/tests/Makefile.am --- libgdiplus-4.0-2.10.9/tests/Makefile.am 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/tests/Makefile.am 2016-04-15 08:16:31.000000000 +0000 @@ -1,5 +1,7 @@ ## Makefile.am for libgdiplus/tests +LIBS = $(GDIPLUS_LIBS) + INCLUDES = \ -I$(top_srcdir) \ -I$(top_builddir)/src \ @@ -11,7 +13,8 @@ LDADDS = \ - $(top_builddir)/src/libgdiplus.la + $(top_builddir)/src/libgdiplus.la \ + -lm noinst_PROGRAMS = \ testgdi testbits testclip testreversepath @@ -45,3 +48,9 @@ $(testbits_SOURCES) \ $(testclip_SOURCES) \ $(testreversepath_SOURCES) + +TESTS = \ + testbits \ + testclip \ + testreversepath \ + $(NULL) diff -Nru libgdiplus-4.0-2.10.9/tests/Makefile.in libgdiplus-4.0-4.2.3+precise1/tests/Makefile.in --- libgdiplus-4.0-2.10.9/tests/Makefile.in 2012-01-31 17:28:26.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/tests/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,553 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -noinst_PROGRAMS = testgdi$(EXEEXT) testbits$(EXEEXT) testclip$(EXEEXT) \ - testreversepath$(EXEEXT) -subdir = tests -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -am_testbits_OBJECTS = testbits.$(OBJEXT) -testbits_OBJECTS = $(am_testbits_OBJECTS) -am_testclip_OBJECTS = testclip.$(OBJEXT) -testclip_OBJECTS = $(am_testclip_OBJECTS) -am_testgdi_OBJECTS = testgdi.$(OBJEXT) -testgdi_OBJECTS = $(am_testgdi_OBJECTS) -am_testreversepath_OBJECTS = testreversepath.$(OBJEXT) -testreversepath_OBJECTS = $(am_testreversepath_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(testbits_SOURCES) $(testclip_SOURCES) $(testgdi_SOURCES) \ - $(testreversepath_SOURCES) -DIST_SOURCES = $(testbits_SOURCES) $(testclip_SOURCES) \ - $(testgdi_SOURCES) $(testreversepath_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASE_DEPENDENCIES_CFLAGS = @BASE_DEPENDENCIES_CFLAGS@ -BASE_DEPENDENCIES_LIBS = @BASE_DEPENDENCIES_LIBS@ -CAIRO_CFLAGS = @CAIRO_CFLAGS@ -CAIRO_DIR = @CAIRO_DIR@ -CAIRO_LIBS = @CAIRO_LIBS@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ -FONTCONFIG_CONFIG = @FONTCONFIG_CONFIG@ -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ -FREETYPE2_LIBS = @FREETYPE2_LIBS@ -FREETYPE_CONFIG = @FREETYPE_CONFIG@ -GDIPLUS_CFLAGS = @GDIPLUS_CFLAGS@ -GDIPLUS_LIBS = @GDIPLUS_LIBS@ -GDIPLUS_PKG_CFLAGS = @GDIPLUS_PKG_CFLAGS@ -GDIPLUS_PKG_LIBS = @GDIPLUS_PKG_LIBS@ -GDIPLUS_PKG_REQ = @GDIPLUS_PKG_REQ@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ -LIBEXIF_LIBS = @LIBEXIF_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PANGO_CFLAGS = @PANGO_CFLAGS@ -PANGO_LIBS = @PANGO_LIBS@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -subdirs = @subdirs@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = \ - -I$(top_srcdir) \ - -I$(top_builddir)/src \ - -I$(top_srcdir)/src \ - $(GDIPLUS_CFLAGS) - -DEPS = \ - $(top_builddir)/src/libgdiplus.la - -LDADDS = \ - $(top_builddir)/src/libgdiplus.la - -testgdi_DEPENDENCIES = $(TEST_DEPS) -testgdi_LDADD = $(LDADDS) -testgdi_SOURCES = \ - testgdi.c - -testbits_DEPENDENCIES = $(TEST_DEPS) -testbits_LDADD = $(LDADDS) -testbits_SOURCES = \ - testbits.c - -testclip_SOURCES = \ - testclip.c - -testclip_DEPENDENCIES = $(TEST_DEPS) -testclip_LDADD = $(LDADDS) -testreversepath_SOURCES = \ - testreversepath.c - -testreversepath_DEPENDENCIES = $(TEST_DEPS) -testreversepath_LDADD = $(LDADDS) -EXTRA_DIST = \ - $(testgdi_SOURCES) \ - $(testbits_SOURCES) \ - $(testclip_SOURCES) \ - $(testreversepath_SOURCES) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -testbits$(EXEEXT): $(testbits_OBJECTS) $(testbits_DEPENDENCIES) - @rm -f testbits$(EXEEXT) - $(LINK) $(testbits_OBJECTS) $(testbits_LDADD) $(LIBS) -testclip$(EXEEXT): $(testclip_OBJECTS) $(testclip_DEPENDENCIES) - @rm -f testclip$(EXEEXT) - $(LINK) $(testclip_OBJECTS) $(testclip_LDADD) $(LIBS) -testgdi$(EXEEXT): $(testgdi_OBJECTS) $(testgdi_DEPENDENCIES) - @rm -f testgdi$(EXEEXT) - $(LINK) $(testgdi_OBJECTS) $(testgdi_LDADD) $(LIBS) -testreversepath$(EXEEXT): $(testreversepath_OBJECTS) $(testreversepath_DEPENDENCIES) - @rm -f testreversepath$(EXEEXT) - $(LINK) $(testreversepath_OBJECTS) $(testreversepath_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testbits.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testclip.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgdi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testreversepath.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru libgdiplus-4.0-2.10.9/tests/testbits.c libgdiplus-4.0-4.2.3+precise1/tests/testbits.c --- libgdiplus-4.0-2.10.9/tests/testbits.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/tests/testbits.c 2016-04-15 08:16:31.000000000 +0000 @@ -9,11 +9,45 @@ #define CHECK_STATUS(x) do { if (status != Ok) { printf ("status[%d] == %d!\n", status_counter++, status); if(x) { exit(-1); } } else { printf ("status[%d] == Ok\n", status_counter++); } } while (0) +/* FIXME: + * libgdiplus version is larger than it should be. The library writes + * to the extended fields, overwriting other data if the non-extended + * version is used. This causes the failure of this test because other + * parts of the stack are unexpectedly overwritten. + */ +typedef union { + BitmapData origBitmapData; + /* This structure is from src/bitmap-private.h */ + struct { + unsigned int width; + unsigned int height; + int stride; + int pixel_format; + BYTE *scan0; + unsigned int reserved; + /* the rest of the structure isn't part of MS GDI+ definition */ + ColorPalette *palette; + int property_count; /* Number of properties */ + PropertyItem *property; /* Properties associated with image */ + + float dpi_horz; /* */ + float dpi_vert; /* */ + ImageFlags image_flags; /* Alpha, ColorSpace, etc. */ + + unsigned int left; /* left display coordinate of frame */ + unsigned int top; /* top display coordinate of frame */ + unsigned int x; /* LockBits: left coordinate of locked rectangle */ + unsigned int y; /* LockBits: top coordinate of locked rectangle */ + + int transparent; /* Index of transparent color (<24bit only) */ + } extendedBitmapData; +} IncompatibleBitmapData; + int main (int argc, char **argv) { GpBitmap *bitmap; - BitmapData d, q; + IncompatibleBitmapData d, q; Rect r; int i, j; unsigned long *lptr; @@ -25,15 +59,15 @@ printf ("Full rectangle, no format conversion, read only\n"); r.X = 0; r.Y = 0; r.Width = 10; r.Height = 10; - status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppARGB, &d); + status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppARGB, &d.origBitmapData); CHECK_STATUS(1); printf ("Attempt to re-lock (should fail)\n"); - status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppARGB, &q); + status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppARGB, &q.origBitmapData); CHECK_STATUS(0); printf ("Unlock\n"); - status = GdipBitmapUnlockBits (bitmap, &d); + status = GdipBitmapUnlockBits (bitmap, &d.origBitmapData); CHECK_STATUS(1); /* lptr = (unsigned long *) bitmap->active_bitmap->scan0; @@ -47,11 +81,11 @@ printf ("\nHalf rectangle, no format conversion, read only\n"); r.X = 5; r.Y = 5; r.Width = 5; r.Height = 5; - status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppARGB, &d); + status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppARGB, &d.origBitmapData); CHECK_STATUS(1); for (j = 0; j < 5; j++) { - lptr = (unsigned long *) d.Scan0 + j * d.Stride; + lptr = (unsigned long *) d.origBitmapData.Scan0 + j * d.origBitmapData.Stride; printf ("%d: ", j); for (i = 0; i < 5; i++) { printf ("%08lx ", *lptr++); @@ -59,9 +93,9 @@ printf ("\n"); } printf ("Modifying (setting to 0xff)\n"); - memset (d.Scan0, 0xff, d.Stride * d.Height); + memset (d.origBitmapData.Scan0, 0xff, d.origBitmapData.Stride * d.origBitmapData.Height); printf ("Unlocking\n"); - status = GdipBitmapUnlockBits (bitmap, &d); + status = GdipBitmapUnlockBits (bitmap, &d.origBitmapData); CHECK_STATUS(1); /* printf ("Original data after unlock (shouldn't be 0xffffffff): 0x%08x\n", ((unsigned long *)(bitmap->active_bitmap->scan0))[55]); @@ -72,10 +106,10 @@ printf ("\nHalf rectangle, 32bpp ARGB -> 32bpp RGB, read only\n"); r.X = 5; r.Y = 5; r.Width = 5; r.Height = 5; - status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppRGB, &d); + status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead, PixelFormat32bppRGB, &d.origBitmapData); CHECK_STATUS(1); - lptr = (unsigned long *) d.Scan0; + lptr = (unsigned long *) d.origBitmapData.Scan0; for (j = 0; j < 5; j++) { printf ("%d: ", j); for (i = 0; i < 5; i++) { @@ -84,18 +118,18 @@ printf ("\n"); } - status = GdipBitmapUnlockBits (bitmap, &d); + status = GdipBitmapUnlockBits (bitmap, &d.origBitmapData); CHECK_STATUS(1); memset (&d, 0x00, sizeof (BitmapData)); printf ("\nHalf rectangle, 32bpp ARGB -> 24bpp RGB, read/write only\n"); r.X = 5; r.Y = 5; r.Width = 5; r.Height = 5; - status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead | ImageLockModeWrite, PixelFormat24bppRGB, &d); + status = GdipBitmapLockBits (bitmap, &r, ImageLockModeRead | ImageLockModeWrite, PixelFormat24bppRGB, &d.origBitmapData); CHECK_STATUS(1); for (j = 0; j < 5; j++) { - cptr = (unsigned char *) (d.Scan0 + (j * d.Stride)); + cptr = (unsigned char *) (d.origBitmapData.Scan0 + (j * d.origBitmapData.Stride)); printf ("%d: ", j); for (i = 0; i < 5; i++) { printf ("%02x%02x%02x ", cptr[0], cptr[1], cptr[2]); @@ -106,7 +140,7 @@ printf ("Modifying (setting to 0xaabbcc)\n"); for (j = 0; j < 5; j++) { - cptr = (unsigned char *) (d.Scan0 + (j * d.Stride)); + cptr = (unsigned char *) (d.origBitmapData.Scan0 + (j * d.origBitmapData.Stride)); for (i = 0; i < 5; i++) { *cptr++ = 0xcc; *cptr++ = 0xbb; @@ -114,7 +148,7 @@ } } - status = GdipBitmapUnlockBits (bitmap, &d); + status = GdipBitmapUnlockBits (bitmap, &d.origBitmapData); CHECK_STATUS(1); /* printf ("Original data after Unlock (should be all 0xffaabbcc):\n"); Binary files /tmp/tmpU4hj7N/Ha51K5fYip/libgdiplus-4.0-2.10.9/tests/test.bmp and /tmp/tmpU4hj7N/Etat_u_gP2/libgdiplus-4.0-4.2.3+precise1/tests/test.bmp differ diff -Nru libgdiplus-4.0-2.10.9/tests/testgdi.c libgdiplus-4.0-4.2.3+precise1/tests/testgdi.c --- libgdiplus-4.0-2.10.9/tests/testgdi.c 2011-12-02 17:23:12.000000000 +0000 +++ libgdiplus-4.0-4.2.3+precise1/tests/testgdi.c 2016-04-15 08:16:31.000000000 +0000 @@ -130,6 +130,10 @@ main(int argc, char *argv[]) { win_t win; + GdiplusStartupInput gdiplusStartupInput; + ULONG_PTR gdiplusToken; + + GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); win.dpy = XOpenDisplay(0); @@ -148,6 +152,7 @@ XCloseDisplay(win.dpy); + GdiplusShutdown(gdiplusToken); return 0; } Binary files /tmp/tmpU4hj7N/Ha51K5fYip/libgdiplus-4.0-2.10.9/tests/test.gif and /tmp/tmpU4hj7N/Etat_u_gP2/libgdiplus-4.0-4.2.3+precise1/tests/test.gif differ Binary files /tmp/tmpU4hj7N/Ha51K5fYip/libgdiplus-4.0-2.10.9/tests/test.jpg and /tmp/tmpU4hj7N/Etat_u_gP2/libgdiplus-4.0-4.2.3+precise1/tests/test.jpg differ Binary files /tmp/tmpU4hj7N/Ha51K5fYip/libgdiplus-4.0-2.10.9/tests/test.png and /tmp/tmpU4hj7N/Etat_u_gP2/libgdiplus-4.0-4.2.3+precise1/tests/test.png differ Binary files /tmp/tmpU4hj7N/Ha51K5fYip/libgdiplus-4.0-2.10.9/tests/test.tif and /tmp/tmpU4hj7N/Etat_u_gP2/libgdiplus-4.0-4.2.3+precise1/tests/test.tif differ